[Scummvm-git-logs] scummvm master -> d2e156e9595cb5b4366291586db34265558d5a2a

athrxx noreply at scummvm.org
Tue Sep 1 13:56:41 UTC 2026


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

Summary:
b9868d360b KYRA: (EOB) - fix minor glitch
bcbc63ed5e KYRA: (EOB automap feature) - improve drawing
d2e156e959 KYRA: (EOBII/PC98) - fix dialog overdraw glitch


Commit: b9868d360b89a2299902cfefb9690a8b444303d4
    https://github.com/scummvm/scummvm/commit/b9868d360b89a2299902cfefb9690a8b444303d4
Author: athrxx (athrxx at scummvm.org)
Date: 2026-09-01T15:53:57+02:00

Commit Message:
KYRA: (EOB) - fix minor glitch

(unneeded gfx refresh on copy protection screen)

Changed paths:
    engines/kyra/script/script_eob.cpp


diff --git a/engines/kyra/script/script_eob.cpp b/engines/kyra/script/script_eob.cpp
index df8a641cd04..c36f8d05c94 100644
--- a/engines/kyra/script/script_eob.cpp
+++ b/engines/kyra/script/script_eob.cpp
@@ -1494,12 +1494,12 @@ int EoBInfProcessor::oeob_identifyItems(int8 *data) {
 
 int EoBInfProcessor::oeob_sequence(int8 *data) {
 	int8 *pos = data;
+	int cmd = *pos++;
 	_vm->_npcSequenceSub = -1;
 	_vm->txt()->setWaitButtonMode(0);
 	_vm->gui_updateControls();
-	_vm->drawScene(1);
+	_vm->drawScene(cmd != -1 ? 1 : 0);
 
-	int cmd = *pos++;
 
 	if (_vm->game() == GI_EOB1) {
 		if (cmd == 10)


Commit: bcbc63ed5e3cb8cbfd590401085777e70491a978
    https://github.com/scummvm/scummvm/commit/bcbc63ed5e3cb8cbfd590401085777e70491a978
Author: athrxx (athrxx at scummvm.org)
Date: 2026-09-01T15:54:03+02:00

Commit Message:
KYRA: (EOB automap feature) - improve drawing

- add exit key to legend
- fix wall of force drawing

Changed paths:
    engines/kyra/gui/automap_eob.cpp
    engines/kyra/gui/automap_eob.h


diff --git a/engines/kyra/gui/automap_eob.cpp b/engines/kyra/gui/automap_eob.cpp
index e06101beb5b..b8a10cfd1c2 100644
--- a/engines/kyra/gui/automap_eob.cpp
+++ b/engines/kyra/gui/automap_eob.cpp
@@ -173,9 +173,9 @@ const Automap_EoB::TranslateableStrings Automap_EoB::_stringTable[] = {
 		},
 
 		{
-			"- KEYS -",
-			"Select Level",
-			"Exit"
+			"- KEYS -",		"",
+			"Up/Down",		"Select Level",
+			"Esc/Tab",		"Exit"
 		},
 
 		// Area names for the plaque. The games have no level names in their data and the file
@@ -274,7 +274,7 @@ Automap_EoB::Automap_EoB(OSystem *system, LevelBlockProperty **blockData, const
 	const uint8 stairsDown = 24;
 	const uint8 types[] = { teleporter, illusion1, illusion2, stairsUp, stairsDown, pit, plate1, plate2 };
 	static const uint8 eob1PortalParams[] = { 2, 4, 46, 5, 43, 6, 45, 7, 40, 7, 41, 7, 43, 7, 44, 7, 46, 9, 43, 10, 39, 11, 37, 11, 36, 12, 37 };
-	static const uint8 eob2PortalParams[] = { 7, 3, 54, 6, 54 };
+	static const uint8 eob2PortalParams[] = { 7, 3, 54, 6, 54, 14, 69 };
 
 	uint8 *specialBlockIDs = new uint8[ARRAYSIZE(types)]();
 	memcpy(specialBlockIDs, types, sizeof(types));
@@ -327,12 +327,12 @@ void Automap_EoB::markSeen(uint16 block, int8 dir) {
 			bool breakableFromHere = ((breakAbleObject == kBreakableBlockObject && (_specialWallTypes[wn] == 8 || _specialWallTypes[wn] == 9)) ||
 				(!(d & 1) && breakAbleObject == kBreakableBarrierNS) || ((d & 1) && breakAbleObject == kBreakableBarrierEW));
 
-			if ((!(_wllWallFlags[wn] & 9) && breakAbleObject == kNoBreakableObject) || _blockData[b].flags & 7)
+			if ((!(_wllWallFlags[wn] & 9) && breakAbleObject == kNoBreakableObject && wn != _wallOfForceID) || _blockData[b].flags & 7)
 				break;
 			b = nb;
 			if (reveal)
 				_blockData[b].direction |= 1;
-			if ((_wllWallFlags[wn] & 9) == 8 || breakableFromHere)
+			if ((_wllWallFlags[wn] & 9) == 8 || breakableFromHere || wn == _wallOfForceID)
 				break;
 		}
 	}
@@ -897,12 +897,20 @@ void Automap_EoB::drawLegend(const AutomapLayout &l, uint flags) {
 	bg.hLine(lx, cyy + 1, lx + colW - 1, _colors[kColorStoneEdge]);
 	cyy += MAX(6, sc * 4);
 	const int chipPad = MAX(2, sc * 2);
-	const int chipW = (bigFont ? bigFont->getStringWidth("Up/Down") * sc : 6 * sc) + chipPad * 2; // TODO: Use actual up/down arrow symbols. Our font doesn't have these.
 	const int chipH = fh * sc + chipPad;
-	bg.fillRect(Common::Rect(lx, cyy, lx + chipW, cyy + chipH), _colors[kColorPlaqueEd]);
-	bg.fillRect(Common::Rect(lx + 1, cyy + 1, lx + chipW - 1, cyy + chipH - 1), _colors[kColorPlaqueBg]);
-	automapDrawBigString(bg, bigFont, "Up/Down", lx, cyy + chipPad / 2, chipW, _colors[kColorGold], sc); // TODO: see above
-	automapDrawBigString(bg, bigFont, _controlStrings[1], lx + chipW + MAX(4, sc * 3), cyy + (chipH - fh * sc) / 2, colW - chipW - MAX(4, sc * 3), _colors[kColorPanelTxt], sc, Graphics::kTextAlignLeft);
+
+	int maxW = 0;
+	for (int i = 2; i < ARRAYSIZE(_stringTable[0].controlStrings); i += 2)
+		maxW = MAX<int>(maxW, (bigFont ? bigFont->getStringWidth(_controlStrings[i]) * sc : 6 * sc) + chipPad * 2);
+
+	for (int i = 2; i < ARRAYSIZE(_stringTable[0].controlStrings); i += 2) {
+		int chipW = (bigFont ? bigFont->getStringWidth(_controlStrings[i]) * sc : 6 * sc) + chipPad * 2;
+		bg.fillRect(Common::Rect(lx, cyy, lx + chipW, cyy + chipH), _colors[kColorPlaqueEd]);
+		bg.fillRect(Common::Rect(lx + 1, cyy + 1, lx + chipW - 1, cyy + chipH - 1), _colors[kColorPlaqueBg]);
+		automapDrawBigString(bg, bigFont, _controlStrings[i], lx, cyy + chipPad / 2, chipW, _colors[kColorGold], sc);
+		automapDrawBigString(bg, bigFont, _controlStrings[i + 1], lx + maxW + MAX(4, sc * 3), cyy + (chipH - fh * sc) / 2, colW - maxW - MAX(4, sc * 3), _colors[kColorPanelTxt], sc, Graphics::kTextAlignLeft);
+		cyy += fh * sc + MAX(4, sc * 3);
+	}
 }
 
 uint16 Automap_EoB::calcNewBlockPosition(uint16 block, int8 dir) const {
diff --git a/engines/kyra/gui/automap_eob.h b/engines/kyra/gui/automap_eob.h
index 7b095396a15..30283d39dcb 100644
--- a/engines/kyra/gui/automap_eob.h
+++ b/engines/kyra/gui/automap_eob.h
@@ -66,7 +66,7 @@ private:
 
 	struct TranslateableStrings {
 		const char *const legendStrings[15];
-		const char *const controlStrings[3];
+		const char *const controlStrings[6];
 		const char *const levelNames[2][16];
 	};
 


Commit: d2e156e9595cb5b4366291586db34265558d5a2a
    https://github.com/scummvm/scummvm/commit/d2e156e9595cb5b4366291586db34265558d5a2a
Author: athrxx (athrxx at scummvm.org)
Date: 2026-09-01T15:54:05+02:00

Commit Message:
KYRA: (EOBII/PC98) - fix dialog overdraw glitch

Changed paths:
    engines/kyra/text/text_rpg.cpp


diff --git a/engines/kyra/text/text_rpg.cpp b/engines/kyra/text/text_rpg.cpp
index 317236966c4..e97ec3b8776 100644
--- a/engines/kyra/text/text_rpg.cpp
+++ b/engines/kyra/text/text_rpg.cpp
@@ -811,6 +811,9 @@ void TextDisplayer_rpg::displayWaitButton() {
 
 	_screen->set16bitShadingLevel(4);
 	_screen->fillRect(_vm->_dialogueButtonPosX[0], _vm->_dialogueButtonPosY[0], _vm->_dialogueButtonPosX[0] + _vm->_dialogueButtonWidth - 1, _vm->_dialogueButtonPosY[0] + _vm->guiSettings()->buttons.height - 1, _vm->guiSettings()->colors.fill);
+	// Fix border overdraw glitch
+	if (_vm->game() == GI_EOB2 && (_isChinese || _vm->gameFlags().platform == Common::kPlatformPC98) && _vm->_dialogueButtonPosY[0] + _vm->guiSettings()->buttons.height == 200)
+		_screen->drawClippedLine(_vm->_dialogueButtonPosX[0], 199, _vm->_dialogueButtonPosX[0] + _vm->_dialogueButtonWidth - 1, 199, _vm->guiSettings()->colors.frame1);
 	clearCurDim();
 	_screen->set16bitShadingLevel(0);
 	_screen->updateScreen();




More information about the Scummvm-git-logs mailing list