[Scummvm-git-logs] scummvm master -> 2f468045f0e6549c6bee56f31087332c196d6b6e

sev- noreply at scummvm.org
Sun Apr 26 21:39:21 UTC 2026


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

Summary:
6ab8b9c013 JANITORIAL: Remove trailing spaces
e7f7f417dd CHAMBER: Allowed video renderer selection in the GUI
39bf085060 CHAMBER: Support Amber Hercules rendering
2f468045f0 CHAMBER: Remove pointless global references


Commit: 6ab8b9c013f51c92abd74324c0f4a71378e235e6
    https://github.com/scummvm/scummvm/commit/6ab8b9c013f51c92abd74324c0f4a71378e235e6
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2026-04-26T23:39:02+02:00

Commit Message:
JANITORIAL: Remove trailing spaces

Changed paths:
    engines/chamber/cga.cpp


diff --git a/engines/chamber/cga.cpp b/engines/chamber/cga.cpp
index 85978fd58bb..703a9e30a5b 100644
--- a/engines/chamber/cga.cpp
+++ b/engines/chamber/cga.cpp
@@ -196,7 +196,7 @@ void CGARenderer::blitToScreen(int16 dx, int16 dy, int16 w, int16 h) {
 				for (int16 c = 0; c < 4; c++) {
 					byte color = (colors & 0xC0) >> 6;
 					colors <<= 2;
-					*dst++ = color;	
+					*dst++ = color;
 				}
 			}
         }
@@ -204,7 +204,7 @@ void CGARenderer::blitToScreen(int16 dx, int16 dy, int16 w, int16 h) {
 		g_system->copyRectToScreen((const byte *)mainSurface->getBasePtr(dx, dy), mainSurface->pitch, dx, dy, w * (0x8 / g_vm->_screenBits), h);
 		g_system->updateScreen();
 		return;
-	} 
+	}
 	dx = 0;
 	dy = 0;
 	w = 320;
@@ -213,46 +213,46 @@ void CGARenderer::blitToScreen(int16 dx, int16 dy, int16 w, int16 h) {
 	if (mainSurface->w != 720) {
 		mainSurface->free();
 		mainSurface->create(720, 348, Graphics::PixelFormat::createFormatCLUT8());
-		memset(mainSurface->getPixels(), 0, 720 * 348); 
+		memset(mainSurface->getPixels(), 0, 720 * 348);
 	}
 
 	int16 startY = dy;
 	int16 endY = dy + h;
 
-	if (endY > 200) 
+	if (endY > 200)
 		endY = 200;
 
-	int16 startX_bytes = dx / 4; 
-	int16 endX_bytes = (dx + w + 3) / 4; 
-		
-	if (endX_bytes > 80) 
+	int16 startX_bytes = dx / 4;
+	int16 endX_bytes = (dx + w + 3) / 4;
+
+	if (endX_bytes > 80)
 		endX_bytes = 80;
 
 	for (int y = startY; y < endY; y++) {
 		uint16 bank = (y % 2) * 8192;
 		uint16 line = (y / 2) * 80;
-		
-		int destY = y + 74; 
+
+		int destY = y + 74;
 		int destX = 40 + (startX_bytes * 8);
-		
-		byte *dst = (byte *)mainSurface->getBasePtr(destX, destY); 
-		
+
+		byte *dst = (byte *)mainSurface->getBasePtr(destX, destY);
+
 		for (int x_bytes = startX_bytes; x_bytes < endX_bytes; x_bytes++) {
 			byte cga_byte = SCREENBUFFER[bank + line + x_bytes];
 			for (int p = 0; p < 4; p++) {
 				byte color = (cga_byte >> (6 - p * 2)) & 3;
 				byte finalColor = (color == 0) ? 0 : 1;
 				*dst++ = finalColor;
-				*dst++ = finalColor; 
+				*dst++ = finalColor;
 			}
 		}
 	}
-		
+
 	int renderX = 40 + (startX_bytes * 8);
 	int renderY = startY + 74;
 	int renderW = (endX_bytes - startX_bytes) * 8;
 	int renderH = endY - startY;
-	
+
 	g_system->copyRectToScreen((const byte *)mainSurface->getBasePtr(renderX, renderY), mainSurface->pitch, renderX, renderY, renderW, renderH);
 	g_system->updateScreen();
 	return;
@@ -615,7 +615,7 @@ void CGARenderer::printChar(byte c, byte *target) {
 
 	} else if (g_vm->_videoMode == Common::RenderMode::kRenderHercG) {
 		const int16 START_X = char_draw_coords_x++;
-		const int16 START_Y = char_draw_coords_y;           
+		const int16 START_Y = char_draw_coords_y;
 		for (i = 0; i < g_vm->_fontHeight; i++) {
 			uint16 ofs = HGA_CalcXY_p(START_X, START_Y + i);
 			c = *font++;


Commit: e7f7f417dd1c7c3199fd383937014835b1b1c051
    https://github.com/scummvm/scummvm/commit/e7f7f417dd1c7c3199fd383937014835b1b1c051
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2026-04-26T23:39:02+02:00

Commit Message:
CHAMBER: Allowed video renderer selection in the GUI

Changed paths:
    engines/chamber/detection.cpp


diff --git a/engines/chamber/detection.cpp b/engines/chamber/detection.cpp
index 54bd3c1de5b..4253ea5f706 100644
--- a/engines/chamber/detection.cpp
+++ b/engines/chamber/detection.cpp
@@ -37,7 +37,7 @@ static const ADGameDescription gameDescriptions[] = {
 		Common::UNK_LANG, // EN/FR/DE
 		Common::kPlatformDOS,
 		ADGF_UNSTABLE,
-		GUIO0()
+		GUIO3(GUIO_RENDERHERCGREEN, GUIO_RENDERHERCAMBER, GUIO_RENDERCGA)
 	},
 
 	{
@@ -47,7 +47,7 @@ static const ADGameDescription gameDescriptions[] = {
 		Common::EN_USA,
 		Common::kPlatformDOS,
 		ADGF_UNSTABLE,
-		GUIO0()
+		GUIO3(GUIO_RENDERHERCGREEN, GUIO_RENDERHERCAMBER, GUIO_RENDERCGA)
 	},
 
 	AD_TABLE_END_MARKER


Commit: 39bf085060abf00bb236aeba40d283d483fe7d6f
    https://github.com/scummvm/scummvm/commit/39bf085060abf00bb236aeba40d283d483fe7d6f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2026-04-26T23:39:02+02:00

Commit Message:
CHAMBER: Support Amber Hercules rendering

Changed paths:
    engines/chamber/cga.cpp
    engines/chamber/chamber.cpp
    engines/chamber/chamber.h
    engines/chamber/kult.cpp


diff --git a/engines/chamber/cga.cpp b/engines/chamber/cga.cpp
index 703a9e30a5b..f31ee2f971d 100644
--- a/engines/chamber/cga.cpp
+++ b/engines/chamber/cga.cpp
@@ -123,8 +123,10 @@ static const uint8 PALETTE_CGA2[4 * 3] = {
   Switch to CGA 320x200x2bpp mode
 */
 void CGARenderer::switchToGraphicsMode() {
-	if (g_system->getWidth() == 720) {
+	if (g_vm->_renderMode == Common::kRenderHercG) {
 		g_system->getPaletteManager()->setPalette(Graphics::HGC_G_PALETTE, 0, 2);
+	} else if (g_vm->_renderMode == Common::kRenderHercA) {
+		g_system->getPaletteManager()->setPalette(Graphics::HGC_A_PALETTE, 0, 2);
 	} else {
 		g_system->getPaletteManager()->setPalette(PALETTE_CGA, 0, 4);
 	}
@@ -146,9 +148,12 @@ void waitVBlank(void) {
 }
 
 void CGARenderer::colorSelect(byte csel) {
-	if (g_system->getWidth() == 720) {
+	if (g_vm->_renderMode == Common::kRenderHercG) {
 		g_system->getPaletteManager()->setPalette(Graphics::HGC_G_PALETTE, 0, 2);
 		g_system->setCursorPalette(Graphics::HGC_G_PALETTE, 0, 2);
+	} else if (g_vm->_renderMode == Common::kRenderHercA) {
+		g_system->getPaletteManager()->setPalette(Graphics::HGC_A_PALETTE, 0, 2);
+		g_system->setCursorPalette(Graphics::HGC_A_PALETTE, 0, 2);
 	} else {
 		const byte *pal;
 		if (csel & 0x10)
@@ -165,7 +170,7 @@ void CGARenderer::blitToScreen(int16 dx, int16 dy, int16 w, int16 h) {
 	if (!mainSurface) {
 		mainSurface = new Graphics::Surface();
 	}
-	if (g_system->getWidth() != 720) {
+	if (g_vm->_renderMode == Common::kRenderCGA) {
 		if (mainSurface->w != g_vm->_screenW) {
 			mainSurface->free();
 			mainSurface->create(g_vm->_screenW, g_vm->_screenH, Graphics::PixelFormat::createFormatCLUT8());
diff --git a/engines/chamber/chamber.cpp b/engines/chamber/chamber.cpp
index dcc8e0b8726..611df714263 100644
--- a/engines/chamber/chamber.cpp
+++ b/engines/chamber/chamber.cpp
@@ -55,12 +55,15 @@ ChamberEngine::ChamberEngine(OSystem *syst, const ADGameDescription *desc)
 	_prioritycommand_2 = false;
 	_pxiData = NULL;
 
-	Common::RenderMode renderMode = Common::parseRenderMode(ConfMan.get("render_mode"));
-	if (renderMode == Common::kRenderEGA || renderMode == Common::kRenderHercG || renderMode == Common::kRenderHercA)
-		_videoMode = renderMode;
+	_renderMode = Common::parseRenderMode(ConfMan.get("render_mode"));
+	if (_renderMode == Common::kRenderEGA || _renderMode == Common::kRenderHercG || _renderMode == Common::kRenderHercA)
+		_videoMode = _renderMode;
 	else
 		_videoMode = Common::kRenderCGA;
 
+	if (_renderMode == Common::kRenderHercA)
+		_videoMode = Common::kRenderHercG;
+
 	_screenH = _screenW = _screenBits = _screenBPL = _screenPPB = 0;
 	_line_offset = _line_offset2 = _fontHeight = _fontWidth = 0;
 
@@ -105,7 +108,7 @@ void ChamberEngine::syncGameStream(Common::Serializer &s) {
 }
 
 int ChamberEngine::getX(int original_x) {
-	return original_x; 
+	return original_x;
 }
 
 int ChamberEngine::getY(int original_y) {
diff --git a/engines/chamber/chamber.h b/engines/chamber/chamber.h
index 3eeaffb05af..ebd1ecf9e4b 100644
--- a/engines/chamber/chamber.h
+++ b/engines/chamber/chamber.h
@@ -83,6 +83,7 @@ public:
 	bool _prioritycommand_2;
 
 	Common::RenderMode _videoMode;
+	Common::RenderMode _renderMode;
 
 	byte *_pxiData;
 
diff --git a/engines/chamber/kult.cpp b/engines/chamber/kult.cpp
index eef6b1ed4f4..d99687d68a3 100644
--- a/engines/chamber/kult.cpp
+++ b/engines/chamber/kult.cpp
@@ -308,8 +308,11 @@ Common::Error ChamberEngine::init() {
 			g_vm->_renderer->colorSelect(0x30);
 			g_vm->_renderer->backBufferToRealFull();
 		} else {
-			/* Set authentic Hercules Green phosphor palette */
-			g_system->getPaletteManager()->setPalette(Graphics::HGC_G_PALETTE, 0, 2);
+			if (_renderMode == Common::kRenderHercG)
+				g_system->getPaletteManager()->setPalette(Graphics::HGC_G_PALETTE, 0, 2);
+			else
+				g_system->getPaletteManager()->setPalette(Graphics::HGC_A_PALETTE, 0, 2);
+
 			g_vm->_renderer->backBufferToRealFull();
 		}
 	}


Commit: 2f468045f0e6549c6bee56f31087332c196d6b6e
    https://github.com/scummvm/scummvm/commit/2f468045f0e6549c6bee56f31087332c196d6b6e
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2026-04-26T23:39:03+02:00

Commit Message:
CHAMBER: Remove pointless global references

Changed paths:
    engines/chamber/cga.cpp


diff --git a/engines/chamber/cga.cpp b/engines/chamber/cga.cpp
index f31ee2f971d..04fbedbe978 100644
--- a/engines/chamber/cga.cpp
+++ b/engines/chamber/cga.cpp
@@ -268,7 +268,7 @@ void CGARenderer::blitToScreen(int16 ofs, int16 w, int16 h) {
 	int16 dy = ofs / byte_per_line;
 	int16 dx = (ofs % byte_per_line) * (0x8 / g_vm->_screenBits);
 
-	g_vm->_renderer->blitToScreen(dx, dy, w, h);
+	blitToScreen(dx, dy, w, h);
 }
 
 void CGARenderer::backBufferToRealFull() {
@@ -303,7 +303,7 @@ void CGARenderer::backBufferToRealFull() {
 			srcPtr += CGA_BYTES_PER_LINE;
 		}
 	}
-	g_vm->_renderer->blitToScreen(0, 0, g_vm->_screenW, g_vm->_screenH);
+	blitToScreen(0, 0, g_vm->_screenW, g_vm->_screenH);
 }
 
 void CGARenderer::realBufferToBackFull() {
@@ -323,7 +323,7 @@ void CGARenderer::copyScreenBlock(byte *source, uint16 w, uint16 h, byte *target
 	}
 
 	if (target == SCREENBUFFER)
-		g_vm->_renderer->blitToScreen(oofs, w * (0x8 / g_vm->_screenBits), oh);
+		blitToScreen(oofs, w * (0x8 / g_vm->_screenBits), oh);
 }
 
 /*
@@ -341,7 +341,7 @@ void CGARenderer::swapRealBackBuffer() {
 		*d++ = t;
 	}
 
-	g_vm->_renderer->blitToScreen(0, 0, g_vm->_screenW, g_vm->_screenH);
+	blitToScreen(0, 0, g_vm->_screenW, g_vm->_screenH);
 }
 
 
@@ -364,7 +364,7 @@ void CGARenderer::swapScreenRect(byte *pixels, uint16 w, uint16 h, byte *screen,
 	}
 
 	if (screen == SCREENBUFFER)
-		g_vm->_renderer->blitToScreen(oofs, w * (0x8 / g_vm->_screenBits), oh);
+		blitToScreen(oofs, w * (0x8 / g_vm->_screenBits), oh);
 }
 
 /*
@@ -433,7 +433,7 @@ void CGARenderer::blit(byte *pixels, uint16 pw, uint16 w, uint16 h, byte *screen
 	}
 
 	if (screen == SCREENBUFFER)
-		g_vm->_renderer->blitToScreen(oofs, w * (0x8 / g_vm->_screenBits), h);
+		blitToScreen(oofs, w * (0x8 / g_vm->_screenBits), h);
 }
 
 /*
@@ -455,7 +455,7 @@ void CGARenderer::fill(byte pixel, uint16 w, uint16 h, byte *screen, uint16 ofs)
 	}
 
 	if (screen == SCREENBUFFER)
-		g_vm->_renderer->blitToScreen(oofs, w * (0x8 / g_vm->_screenBits), h);
+		blitToScreen(oofs, w * (0x8 / g_vm->_screenBits), h);
 }
 
 void CGARenderer::fillAndWait(byte pixel, uint16 w, uint16 h, byte *screen, uint16 ofs) {
@@ -523,7 +523,7 @@ void CGARenderer::drawVLine(uint16 x, uint16 y, uint16 l, byte color, byte *targ
 	mask >>= (x % g_vm->_screenPPB) * g_vm->_screenPPB;
 	pixel >>= (x % g_vm->_screenPPB) * g_vm->_screenPPB;
 
-	ofs = g_vm->_renderer->calcXY_p(x / g_vm->_screenPPB, y);
+	ofs = calcXY_p(x / g_vm->_screenPPB, y);
 
 	uint16 ol = l;
 	while (l--) {
@@ -534,7 +534,7 @@ void CGARenderer::drawVLine(uint16 x, uint16 y, uint16 l, byte color, byte *targ
 	}
 
 	if (target == SCREENBUFFER)
-		g_vm->_renderer->blitToScreen(x, y, 1, ol);
+		blitToScreen(x, y, 1, ol);
 }
 
 /*
@@ -556,7 +556,7 @@ void CGARenderer::drawHLine(uint16 x, uint16 y, uint16 l, byte color, byte *targ
 	mask >>= (x % g_vm->_screenPPB) * g_vm->_screenPPB;
 	pixel >>= (x % g_vm->_screenPPB) * g_vm->_screenPPB;
 
-	ofs = g_vm->_renderer->calcXY_p(x / g_vm->_screenPPB, y);
+	ofs = calcXY_p(x / g_vm->_screenPPB, y);
 
 	uint16 ol = l;
 	while (l--) {
@@ -574,7 +574,7 @@ void CGARenderer::drawHLine(uint16 x, uint16 y, uint16 l, byte color, byte *targ
 		}
 	}
 	if (target == SCREENBUFFER)
-		g_vm->_renderer->blitToScreen(x, y, ol, 1);
+		blitToScreen(x, y, ol, 1);
 }
 
 /*
@@ -592,7 +592,7 @@ uint16 CGARenderer::drawHLineWithEnds(uint16 bmask, uint16 bpix, byte color, uin
 		ofs += g_vm->_screenBPL;
 
 	if (target == SCREENBUFFER)
-		g_vm->_renderer->blitToScreen(oofs, l * 4 + 2, 1);
+		blitToScreen(oofs, l * 4 + 2, 1);
 
 	return ofs;
 }
@@ -616,7 +616,7 @@ void CGARenderer::printChar(byte c, byte *target) {
 		}
 
 		if (target == SCREENBUFFER)
-			g_vm->_renderer->blitToScreen((char_draw_coords_x - 1) * g_vm->_fontWidth, char_draw_coords_y,  g_vm->_fontWidth, g_vm->_fontHeight);
+			blitToScreen((char_draw_coords_x - 1) * g_vm->_fontWidth, char_draw_coords_y,  g_vm->_fontWidth, g_vm->_fontHeight);
 
 	} else if (g_vm->_videoMode == Common::RenderMode::kRenderHercG) {
 		const int16 START_X = char_draw_coords_x++;
@@ -629,7 +629,7 @@ void CGARenderer::printChar(byte c, byte *target) {
 		}
 
 		if (target == SCREENBUFFER)
-			g_vm->_renderer->blitToScreen(START_X, START_Y, g_vm->_fontWidth, g_vm->_fontHeight);
+			blitToScreen(START_X, START_Y, g_vm->_fontWidth, g_vm->_fontHeight);
 	}
 }
 
@@ -654,7 +654,7 @@ void CGARenderer::blitScratchBackSprite(uint16 sprofs, uint16 w, uint16 h, byte
 	}
 
 	if (screen == SCREENBUFFER)
-		g_vm->_renderer->blitToScreen(oofs, w * (0x8 / g_vm->_screenBits), oh);
+		blitToScreen(oofs, w * (0x8 / g_vm->_screenBits), oh);
 }
 
 void CGARenderer::blitFromBackBuffer(byte w, byte h, byte *screen, uint16 ofs) {
@@ -679,7 +679,7 @@ void CGARenderer::blitSprite(byte *pixels, int16 pw, uint16 w, uint16 h, byte *s
 	}
 
 	if (screen == SCREENBUFFER)
-		g_vm->_renderer->blitToScreen(oofs, w * (0x8 / g_vm->_screenBits), oh);
+		blitToScreen(oofs, w * (0x8 / g_vm->_screenBits), oh);
 }
 
 /*
@@ -700,7 +700,7 @@ void CGARenderer::blitSpriteFlip(byte *pixels, int16 pw, uint16 w, uint16 h, byt
 	}
 
 	if (screen == SCREENBUFFER)
-		g_vm->_renderer->blitToScreen(oofs, w * (0x8 / g_vm->_screenBits), oh);
+		blitToScreen(oofs, w * (0x8 / g_vm->_screenBits), oh);
 }
 
 /*
@@ -727,7 +727,7 @@ void CGARenderer::blitSpriteBak(byte *pixels, int16 pw, uint16 w, uint16 h, byte
 	}
 
 	if (screen == SCREENBUFFER)
-		g_vm->_renderer->blitToScreen(oofs, w * (0x8 / g_vm->_screenBits), oh);
+		blitToScreen(oofs, w * (0x8 / g_vm->_screenBits), oh);
 }
 
 
@@ -974,7 +974,7 @@ void CGARenderer::hideScreenBlockLiftToDown(uint16 n, byte *screen, byte *source
 		memcpy(target + tofs, source + tofs, w);
 
 		if (screen == SCREENBUFFER) {
-			g_vm->_renderer->blitToScreen(0, 0, g_vm->_screenW, g_vm->_screenW);
+			blitToScreen(0, 0, g_vm->_screenW, g_vm->_screenW);
 		}
 
 		waitVBlank();
@@ -1019,7 +1019,7 @@ void CGARenderer::hideScreenBlockLiftToUp(uint16 n, byte *screen, byte *source,
 		memcpy(target + tofs, source + tofs, w);
 
 		if (screen == SCREENBUFFER) {
-			g_vm->_renderer->blitToScreen(0, 0, g_vm->_screenW, g_vm->_screenH);
+			blitToScreen(0, 0, g_vm->_screenW, g_vm->_screenH);
 		}
 
 		waitVBlank();
@@ -1058,7 +1058,7 @@ void CGARenderer::hideScreenBlockLiftToLeft(uint16 n, byte *screen, byte *source
 		}
 
 		if (screen == SCREENBUFFER) {
-			g_vm->_renderer->blitToScreen(0, 0, g_vm->_screenW, g_vm->_screenH);
+			blitToScreen(0, 0, g_vm->_screenW, g_vm->_screenH);
 		}
 
 		waitVBlank();
@@ -1095,7 +1095,7 @@ void CGARenderer::hideScreenBlockLiftToRight(uint16 n, byte *screen, byte *sourc
 		}
 
 		if (screen == SCREENBUFFER) {
-			g_vm->_renderer->blitToScreen(0, 0, g_vm->_screenW, g_vm->_screenH);
+			blitToScreen(0, 0, g_vm->_screenW, g_vm->_screenH);
 		}
 
 		waitVBlank();
@@ -1278,15 +1278,15 @@ void CGARenderer::traceLine(uint16 sx, uint16 ex, uint16 sy, uint16 ey, byte *so
 	dy = h * 2;
 
 	if (g_vm->_videoMode == Common::RenderMode::kRenderCGA) {
-		ofs = g_vm->_renderer->calcXY_p(sx / 4, sy);
+		ofs = calcXY_p(sx / 4, sy);
 		mask = 0xC0 >> ((sx % 4) * 2);
 	} else {
-		ofs = g_vm->_renderer->calcXY_p(sx / 8, sy);
+		ofs = calcXY_p(sx / 8, sy);
 		mask = 0x80 >> (sx % 8); // TODO: check this
 	}
 
 	/*
-	ofs = g_vm->_renderer->calcXY_p(sx / 4, sy);
+	ofs = calcXY_p(sx / 4, sy);
 	mask = 0xC0 >> ((sx % 4) * 2);
 	*/
 
@@ -1330,7 +1330,7 @@ void CGARenderer::traceLine(uint16 sx, uint16 ex, uint16 sy, uint16 ey, byte *so
 	}
 
 	if (target == SCREENBUFFER)
-		g_vm->_renderer->blitToScreen(0, 0, g_vm->_screenW, g_vm->_screenH);
+		blitToScreen(0, 0, g_vm->_screenW, g_vm->_screenH);
 }
 
 /*TODO: get rid of this structure and pass everything relevant as arguments?*/
@@ -1695,7 +1695,7 @@ void CGARenderer::zoomInplaceXY(byte *pixels, byte w, byte h, byte nw, byte nh,
 	zoom.eh = h - 1;
 	zoom.xbase = x % 4;
 
-	cga_ZoomInplace(&zoom, nw, nh, target, target, g_vm->_renderer->calcXY_p(x, y));
+	cga_ZoomInplace(&zoom, nw, nh, target, target, calcXY_p(x, y));
 }
 
 } // End of namespace Chamber




More information about the Scummvm-git-logs mailing list