[Scummvm-git-logs] scummvm master -> 3acc19d8a7f5ef1c5f0d8a7e5fa1c057465a5855

sev- noreply at scummvm.org
Fri Mar 21 16:43:01 UTC 2025


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .

Summary:
3acc19d8a7 CHAMBER: Fix cga_Blit to support HGA screen rendering


Commit: 3acc19d8a7f5ef1c5f0d8a7e5fa1c057465a5855
    https://github.com/scummvm/scummvm/commit/3acc19d8a7f5ef1c5f0d8a7e5fa1c057465a5855
Author: Muhammad Nasir Bilal (naasrbilal at gmail.com)
Date: 2025-03-22T00:42:57+08:00

Commit Message:
CHAMBER: Fix cga_Blit to support HGA screen rendering

Changed paths:
    engines/chamber/cga.cpp


diff --git a/engines/chamber/cga.cpp b/engines/chamber/cga.cpp
index 8c034100f12..047793521d8 100644
--- a/engines/chamber/cga.cpp
+++ b/engines/chamber/cga.cpp
@@ -197,8 +197,37 @@ void cga_blitToScreen(int16 ofs, int16 w, int16 h) {
 }
 
 void cga_BackBufferToRealFull(void) {
-	memcpy(CGA_SCREENBUFFER, backbuffer, sizeof(backbuffer));
+	if (g_vm->_videoMode == Common::RenderMode::kRenderCGA) {
+		memcpy(CGA_SCREENBUFFER, backbuffer, sizeof(backbuffer));
+
+	} else if (g_vm->_videoMode == Common::RenderMode::kRenderHercG) {
+		byte tempBackbuffer[0x4000];
+		byte *even = tempBackbuffer;
+		byte *odd = tempBackbuffer + CGA_BYTES_PER_LINE;
+
+		byte *page0 = backbuffer;
+		byte *page1 = backbuffer + CGA_ODD_LINES_OFS;
+
+		for (int i = 0; i < CGA_HEIGHT / 2; i++) {
+			memcpy(odd, page1, CGA_BYTES_PER_LINE);
+			memcpy(even, page0, CGA_BYTES_PER_LINE);
 
+			page0 += CGA_BYTES_PER_LINE;
+			page1 += CGA_BYTES_PER_LINE;
+			even += 2 * CGA_BYTES_PER_LINE;
+			odd += 2 * CGA_BYTES_PER_LINE;
+		}
+
+		const int16 START_X_PIXELS = (HGA_WIDTH - (2 * CGA_WIDTH)) / 4;
+		const int16 START_Y = (HGA_HEIGHT - CGA_HEIGHT) / 2;
+
+		byte *srcPtr = tempBackbuffer;
+		for (int16 row = 0; row < CGA_HEIGHT; row++) {
+			byte *destPtr = CGA_SCREENBUFFER + HGA_CalcXY(START_X_PIXELS, START_Y + row);
+			memmove(destPtr, srcPtr, CGA_BYTES_PER_LINE);
+			srcPtr += CGA_BYTES_PER_LINE;
+		}
+	}
 	cga_blitToScreen(0, 0, g_vm->_screenW, g_vm->_screenH);
 }
 




More information about the Scummvm-git-logs mailing list