[Scummvm-git-logs] scummvm master -> 646022678f8fa9b4a17625e49ad870966c73547f

moralrecordings noreply at scummvm.org
Sun Oct 25 12:55:33 UTC 2026


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

Summary:
1aa4605119 FOOL: Use struct for standard grid information
646022678f FOOL: Deglobalise common temp vars


Commit: 1aa460511909977cfd99f9d53d6d969800ca17ce
    https://github.com/scummvm/scummvm/commit/1aa460511909977cfd99f9d53d6d969800ca17ce
Author: Scott Percival (code at moral.net.au)
Date: 2026-10-25T20:54:01+08:00

Commit Message:
FOOL: Use struct for standard grid information

Changed paths:
    engines/fool/fool_game.cpp
    engines/fool/fool_game.h
    engines/fool/fool_jigsaw.cpp
    engines/fool/fool_jumble.cpp
    engines/fool/fool_maze.cpp
    engines/fool/fool_metapuzzle.cpp
    engines/fool/fool_polyomino.cpp
    engines/fool/fool_straightpath.cpp
    engines/fool/fool_sun.cpp
    engines/fool/fool_thoth.cpp
    engines/fool/fool_wordsearch.cpp


diff --git a/engines/fool/fool_game.cpp b/engines/fool/fool_game.cpp
index 5de97f4ec11..d13631fea7c 100644
--- a/engines/fool/fool_game.cpp
+++ b/engines/fool/fool_game.cpp
@@ -472,9 +472,9 @@ void FoolGame::sub_128_1e4(const Common::String &osType) {
 void FoolGame::getGridFromMouse(int16 &gridX, int16 &gridY) {
 	// 128:02be
 	// convert mouse coordinates to grid coordinates
-	gridX = (_event.where.x - arr_i16_1eb8[4]) / (arr_i16_1eb8[6]);
+	gridX = (_event.where.x - _gridInfo.xOrigin) / (_gridInfo.xOuterSpan);
 
-	gridY = (_event.where.y - arr_i16_1eb8[5]) / (arr_i16_1eb8[7]);
+	gridY = (_event.where.y - _gridInfo.yOrigin) / (_gridInfo.yOuterSpan);
 }
 
 void FoolGame::sub_128_342(int16 unk2, int16 unk1) {
@@ -485,14 +485,14 @@ void FoolGame::sub_128_342(int16 unk2, int16 unk1) {
 		var_i16_68a = 1;
 	}
 	// 128:035c
-	if (var_i16_68a > arr_i16_1eb8[0]) {
-		var_i16_68a = arr_i16_1eb8[0];
+	if (var_i16_68a > _gridInfo.xCount) {
+		var_i16_68a = _gridInfo.xCount;
 	}
 	if (var_i16_68c < 1) {
 		var_i16_68c = 1;
 	}
-	if (var_i16_68c > arr_i16_1eb8[1]) {
-		var_i16_68c = arr_i16_1eb8[1];
+	if (var_i16_68c > _gridInfo.yCount) {
+		var_i16_68c = _gridInfo.yCount;
 	}
 }
 
@@ -549,6 +549,27 @@ Common::String FoolGame::puzzlesReadString() {
 	return result;
 }
 
+GridInfo FoolGame::puzzlesReadGridInfo() {
+	GridInfo info;
+	info.xCount = puzzlesReadShort();
+	info.yCount = puzzlesReadShort();
+	info.xInnerOffset = puzzlesReadShort();
+	info.yInnerOffset = puzzlesReadShort();
+	info.xOrigin = puzzlesReadShort();
+	info.yOrigin = puzzlesReadShort();
+	info.xOuterSpan = puzzlesReadShort();
+	info.yOuterSpan = puzzlesReadShort();
+	info.yStartPos = puzzlesReadShort();
+	info.yEndPos = puzzlesReadShort();
+	info.xStartPos = puzzlesReadShort();
+	info.xEndPos = puzzlesReadShort();
+	info.yInnerSpan = puzzlesReadShort();
+	info.xInnerSpan = puzzlesReadShort();
+	info.fontSize = puzzlesReadShort();
+
+	return info;
+}
+
 void FoolGame::toggleMouseCursor(bool visible) {
 	// toggle the mouse cursor off or on
 	// 128:04da
@@ -1034,9 +1055,9 @@ void FoolGame::showBehold(int16 unk2, int16 unk1, const Common::U32String &messa
 	_toolbox->PenMode(Graphics::MacToolbox::kPatXor);
 	_toolbox->FrameRect(rect);
 	_toolbox->PenMode(Graphics::MacToolbox::kPatCopy);
-	var_i16_484 = _toolbox->StringWidth(message);
+	int16 msgWidth = _toolbox->StringWidth(message);
 	// 128:19ec
-	_toolbox->MoveTo(0x105 - (var_i16_484/2), 0x12e);
+	_toolbox->MoveTo(0x105 - (msgWidth/2), 0x12e);
 	_toolbox->DrawString(message);
 	// loop count was 0x4d
 	for (int i = 0; i <= 0x24; i++) {
@@ -1311,8 +1332,9 @@ void FoolGame::menuClickMessage() {
 	_toolbox->SetPort(var_i32_0);
 }
 
-void FoolGame::sub_128_26f6() {
+void FoolGame::clearGridInfo() {
 	// 128:26f6
+	_gridInfo = GridInfo();
 	for (int i = 0; i <= 0x28; i++) {
 		arr_i16_1eb8[i] = 0;
 	}
@@ -1320,18 +1342,16 @@ void FoolGame::sub_128_26f6() {
 
 void FoolGame::fetchPuzzleData() {
 	int position = _puzzleDataOffsets[_activePuzzle] - 1;
-	// record index
-	var_i16_484 = (int16)(position / 1000);
-	// offset at record
-	var_i16_7e4 = (int16)(position % 1000);
-	_zbasic->record(1, var_i16_484, var_i16_7e4);
+	int16 recordIndex = (int16)(position / 1000);
+	int16 recordOffset = (int16)(position % 1000);
+	_zbasic->record(1, recordIndex, recordOffset);
 	_puzzleDataPtr = 0;
 	int length = _puzzleDataOffsets[_activePuzzle + 1] - _puzzleDataOffsets[_activePuzzle];
 	debugC(8, kDebugLoading, "fetchPuzzleData: seek puzzles to puzzle %d at position %x (rec: %d, offset: %d), length %x",
 			_activePuzzle,
 			position,
-			var_i16_484,
-			var_i16_7e4,
+			recordIndex,
+			recordOffset,
 			length
 	);
 	arr_bytes_109dc = _zbasic->readFile(1, length);
@@ -1525,9 +1545,9 @@ void FoolGame::newGame() {
 	// 128:2cf6
 	// shuffle around the pieces of the sun's map
 	for (int i = 1; i <= 0x64; i++) {
-		var_i16_484 = _zbasic->rndInt(0x51);
-		var_i16_7e4 = _zbasic->rndInt(0x51);
-		_zbasic->swapInt(_sunMapTileID[var_i16_484], _sunMapTileID[var_i16_7e4]);
+		int16 tile1 = _zbasic->rndInt(0x51);
+		int16 tile2 = _zbasic->rndInt(0x51);
+		_zbasic->swapInt(_sunMapTileID[tile1], _sunMapTileID[tile2]);
 		_puzzleCompletionStatus[i] = 0;
 		_puzzleFlags[i] = kFlagMenuDisabled;
 	}
@@ -1891,7 +1911,7 @@ void FoolGame::puzzleRun() {
 	}
 	// 128:3a12
 	puzzleSetupMenu();
-	sub_128_26f6();
+	clearGridInfo();
 	sub_128_61ec();
 	puzzleLoadContext();
 	// 128:3a22
@@ -2667,11 +2687,11 @@ void FoolGame::thothHidePlayfield() {
 void FoolGame::thothShowPlayfield() {
 	// 128:5f16
 	if (_stateFlags == kStateSaveGame) {
-		if (arr_i16_1eb8[0] < 1) {
-			arr_i16_1eb8[0] = 1;
+		if (_gridInfo.xCount < 1) {
+			_gridInfo.xCount = 1;
 		}
 		// 128:5f4c
-		_activePuzzleBuffer = _zbasic->encodeInt(arr_i16_1eb8[0]);
+		_activePuzzleBuffer = _zbasic->encodeInt(_gridInfo.xCount);
 		saveGame();
 	}
 	// 128:5f70
diff --git a/engines/fool/fool_game.h b/engines/fool/fool_game.h
index 8c9468f1398..0af5d775253 100644
--- a/engines/fool/fool_game.h
+++ b/engines/fool/fool_game.h
@@ -106,6 +106,25 @@ enum FoolFontID : uint16 {
 	kFontChicago = 255,
 };
 
+struct GridInfo { // arr_i16_1eb8
+	int16 xCount = 0; // 0
+	int16 yCount = 0; // 1
+	int16 xInnerOffset = 0; // 2
+	int16 yInnerOffset = 0; // 3
+	int16 xOrigin = 0; // 4
+	int16 yOrigin = 0; // 5
+	int16 xOuterSpan = 0; // 6
+	int16 yOuterSpan = 0; // 7
+	int16 yStartPos = 0; // 8
+	int16 yEndPos = 0; // 9
+	int16 xStartPos = 0; // 10
+	int16 xEndPos = 0; // 11
+	int16 yInnerSpan = 0; // 12
+	int16 xInnerSpan = 0; // 13
+	int16 fontSize = 8; // 14
+};
+
+
 class FoolGame {
 public:
 	FoolGame(FoolVersion version, const Common::String &saveFileName): _version(version), _startSaveFileName(saveFileName) {}
@@ -124,6 +143,9 @@ public:
 	int16 puzzlesReadByte(); // sub_128_428
 	int16 puzzlesReadShort(); // sub_128_446
 	int32 puzzlesReadLong(); // sub_128_462
+
+	GridInfo puzzlesReadGridInfo();
+
 	Common::String puzzlesReadString(); // sub_128_49a
 	void toggleMouseCursor(bool visible); // sub_128_4da
 	void playTone(int16 freq, int16 duration, bool wait);
@@ -153,7 +175,7 @@ public:
 	void sub_128_21c8();
 	void storyRenderPage(); // sub_128_2202
 	void menuClickMessage(); // sub_128_2664
-	void sub_128_26f6();
+	void clearGridInfo(); // sub_128_26f6
 	void fetchPuzzleData(); // sub_128_271a
 	void menuNewGame(); // sub_128_27d6
 	void writeSaveFile(); // sub_128_2808
@@ -483,6 +505,7 @@ private:
 	ZBasic *_zbasic;
 	Common::String _startSaveFileName;
 	bool _quit = false;
+	GridInfo _gridInfo;
 
 	GrafPtr var_i32_0;
 	GrafPtr var_i32_4;
@@ -775,6 +798,9 @@ private:
 	uint16 _puzzleFlags[101]; // arr_i16_1d24
 	int16 _pageLines[202]; // arr_i16_1dee
 	int16 arr_i16_1eb8[0x29];
+
+	int16 _straightPathSteps; // arr_i16_1eb8[15]
+
 	// used just for death?
 	Common::Rect _deathBlackEye; // arr_rect_1eb8
 	Common::Rect _screenGrid[0x200]; // arr_rect_1f38
diff --git a/engines/fool/fool_jigsaw.cpp b/engines/fool/fool_jigsaw.cpp
index 86d474193d0..26a5481c8e1 100644
--- a/engines/fool/fool_jigsaw.cpp
+++ b/engines/fool/fool_jigsaw.cpp
@@ -37,12 +37,10 @@ void FoolGame::jigsawRun() {
 	var_i16_c00 = 1;
 	fetchPuzzleData();
 	int16 picID = puzzlesReadShort();
-	for (int i = 0; i <= 0xe; i++) {
-		arr_i16_1eb8[i] = puzzlesReadShort();
-	}
+	_gridInfo = puzzlesReadGridInfo();
 	// 132:0044
 	// puzzle dimensions
-	_jigsawPieceCount = arr_i16_1eb8[0] * arr_i16_1eb8[1];
+	_jigsawPieceCount = _gridInfo.xCount * _gridInfo.yCount;
 	for (int i = 1; i <= _jigsawPieceCount; i++) {
 		arr_i16_3738[i] = puzzlesReadByte();
 	}
@@ -50,49 +48,50 @@ void FoolGame::jigsawRun() {
 	arr_i32_192c0[0] = _toolbox->GetPicture(picID);
 	_zbasic->picture(0, 0x14, arr_i32_192c0[0]);
 	_toolbox->ReleaseResource(arr_i32_192c0[0]);
-	var_i16_1aa0 = 4 + ((arr_i16_1eb8[12] + 1)*2) * ((arr_i16_1eb8[13]+0x10)/0x10);
+	var_i16_1aa0 = 4 + ((_gridInfo.xInnerSpan + 1)*2) * ((_gridInfo.yInnerSpan+0x10)/0x10);
 	// 132:0136
 	var_i16_1aa0 = (var_i16_1aa0 / 2) + 1;
-	var_i16_484 = 0;
-	var_i16_68c = arr_i16_1eb8[8];
+	int16 gridIndex = 0;
+	int16 gridX = 0;
+	int16 gridY = 0;
+	gridY = _gridInfo.yStartPos;
 	do {
-		var_i16_68a = arr_i16_1eb8[10];
+		gridX = _gridInfo.xStartPos;
 		do {
-			var_i16_484++;
+			gridIndex++;
 			_toolbox->SetRect(
-				_screenGrid[var_i16_484],
-				var_i16_68a + 1,
-				var_i16_68c + 1,
-				var_i16_68a + arr_i16_1eb8[13],
-				var_i16_68c + arr_i16_1eb8[12]
+				_screenGrid[gridIndex],
+				gridX + 1,
+				gridY + 1,
+				gridX + _gridInfo.xInnerSpan,
+				gridY + _gridInfo.yInnerSpan
 			);
-			//var_i16_1aa2 = 0x2af8 + var_i16_1aa0*(arr_i16_3738[var_i16_484] - 1);
 			// 132:0216
-			_jigsawPieces[arr_i16_3738[var_i16_484]] = BitMap(new Graphics::ManagedSurface());
+			_jigsawPieces[arr_i16_3738[gridIndex]] = BitMap(new Graphics::ManagedSurface());
 			_zbasic->get(
-				_screenGrid[var_i16_484].left,
-				_screenGrid[var_i16_484].top,
-				_screenGrid[var_i16_484].right,
-				_screenGrid[var_i16_484].bottom,
-				_jigsawPieces[arr_i16_3738[var_i16_484]]
+				_screenGrid[gridIndex].left,
+				_screenGrid[gridIndex].top,
+				_screenGrid[gridIndex].right,
+				_screenGrid[gridIndex].bottom,
+				_jigsawPieces[arr_i16_3738[gridIndex]]
 			);
 		} while (_zbasic->incrAndCheck(
-			var_i16_68a,
-			arr_i16_1eb8[11],
-			arr_i16_1eb8[6]
+			gridX,
+			_gridInfo.xEndPos,
+			_gridInfo.xOuterSpan
 		));
 	// 132:02dc
 	} while (_zbasic->incrAndCheck(
-		var_i16_68c,
-		arr_i16_1eb8[9],
-		arr_i16_1eb8[7]
+		gridY,
+		_gridInfo.yEndPos,
+		_gridInfo.yOuterSpan
 	));
 	// 132:030c
-	var_i16_484 = 0;
-	for (int j = 1; j <= arr_i16_1eb8[1]; j++) {
-		for (int i = 1; i <= arr_i16_1eb8[0]; i++) {
-			var_i16_484++;
-			arr_i16_2f38[i*32 + j] = var_i16_484;
+	gridIndex = 0;
+	for (int j = 1; j <= _gridInfo.yCount; j++) {
+		for (int i = 1; i <= _gridInfo.xCount; i++) {
+			gridIndex++;
+			arr_i16_2f38[i*32 + j] = gridIndex;
 		}
 	}
 	// 132:0376
@@ -150,7 +149,7 @@ void FoolGame::jigsawRun() {
 void FoolGame::jigsawOnClick() {
 	// 132:0518
 	getGridFromMouse(var_i16_68a, var_i16_68c);
-	if ((var_i16_68a < 1) || ((var_i16_68a - (arr_i16_1eb8[0])) > 0) || (var_i16_68c < 1) || ((var_i16_68c - (arr_i16_1eb8[1])) > 0)) {
+	if ((var_i16_68a < 1) || ((var_i16_68a - (_gridInfo.xCount)) > 0) || (var_i16_68c < 1) || ((var_i16_68c - (_gridInfo.yCount)) > 0)) {
 		return;
 	}
 	// 132:059c
@@ -258,14 +257,14 @@ void FoolGame::jigsawMoveSelected() {
 			arr_i16_4758[9] = 1 + ABS(arr_i16_4758[1]);
 		}
 		// 132:0b74
-		if ((arr_i16_4758[5] - arr_i16_1eb8[0]) > 0) {
-			arr_i16_4758[4] = arr_i16_1eb8[0] - ABS(arr_i16_4758[0]);
-			arr_i16_4758[5] = arr_i16_1eb8[0];
+		if ((arr_i16_4758[5] - _gridInfo.xCount) > 0) {
+			arr_i16_4758[4] = _gridInfo.xCount - ABS(arr_i16_4758[0]);
+			arr_i16_4758[5] = _gridInfo.xCount;
 		}
 		// 132:0c02
-		if ((arr_i16_4758[9] - arr_i16_1eb8[1]) > 0) {
-			arr_i16_4758[8] = arr_i16_1eb8[1] - ABS(arr_i16_4758[1]);
-			arr_i16_4758[9] = arr_i16_1eb8[1];
+		if ((arr_i16_4758[9] - _gridInfo.yCount) > 0) {
+			arr_i16_4758[8] = _gridInfo.yCount - ABS(arr_i16_4758[1]);
+			arr_i16_4758[9] = _gridInfo.yCount;
 		}
 		// 132:0c90
 		arr_rect_4776.top = _screenGrid[arr_i16_2f38[arr_i16_4758[4]*32 + arr_i16_4758[8]]].top;
diff --git a/engines/fool/fool_jumble.cpp b/engines/fool/fool_jumble.cpp
index 2d8876db90b..f9bd1d70452 100644
--- a/engines/fool/fool_jumble.cpp
+++ b/engines/fool/fool_jumble.cpp
@@ -39,44 +39,27 @@ void FoolGame::jumbleRun() {
 	for (_jumbleCurrentSubPuzzle = 1; _jumbleCurrentSubPuzzle <= _jumbleSubPuzzleCount; _jumbleCurrentSubPuzzle++) {
 		var_i16_105a = puzzlesReadShort();
 		debugC(5, kDebugLoading, "FoolGame::jumbleRun: subpuzzle %d", _jumbleCurrentSubPuzzle);
-		// load grid information block
-		// 0x0: grid width (squares)
-		// 0x1: grid height (squares)
-		// 0x2:
-		// 0x3:
-		// 0x4:
-		// 0x5:
-		// 0x6: grid square outer width (px)
-		// 0x7: grid square outer height (px)
-		// 0x8: grid top bound (px)
-		// 0x9: grid bottom bound (px)
-		// 0xa: grid left bound (px)
-		// 0xb: grid right bound (px)
-		// 0xc: grid square inner height (px)
-		// 0xd: grid square inner width (px)
 		if ((var_i16_105a & 0x1) == 1) {
-			for (int i = 0; i <= 0xe; i++) {
-				arr_i16_1eb8[i] = puzzlesReadShort();
-			}
+			_gridInfo = puzzlesReadGridInfo();
 		}
 		// 130:0066
 		var_i16_484 = 0;
-		int16 gridY = arr_i16_1eb8[8];
+		int16 gridY = _gridInfo.yStartPos;
 		do {
-			int16 gridX = arr_i16_1eb8[10];
+			int16 gridX = _gridInfo.xStartPos;
 			do {
 				var_i16_484++;
 				_toolbox->SetRect(
 					_screenGrid[var_i16_484],
 					gridX,
 					gridY,
-					gridX + arr_i16_1eb8[13],
-					gridY + arr_i16_1eb8[12]
+					gridX + _gridInfo.xInnerSpan,
+					gridY + _gridInfo.yInnerSpan
 				);
 				// 130:00f6
-			} while (_zbasic->incrAndCheck(gridX, arr_i16_1eb8[11], arr_i16_1eb8[6]));
+			} while (_zbasic->incrAndCheck(gridX, _gridInfo.xEndPos, _gridInfo.xOuterSpan));
 		// 130:0126
-		} while (_zbasic->incrAndCheck(gridY, arr_i16_1eb8[9], arr_i16_1eb8[7]));
+		} while (_zbasic->incrAndCheck(gridY, _gridInfo.yEndPos, _gridInfo.yOuterSpan));
 		// 130:0156
 		if ((var_i16_105a & 0x2) == 2) {
 			var_i16_105c = puzzlesReadShort();
@@ -94,16 +77,16 @@ void FoolGame::jumbleRun() {
 		// 130:01f0
 		_jumbleGameType = puzzlesReadShort();
 		if (_jumbleGameType == 6) {
-			for (int j = 1; j <= arr_i16_1eb8[1]; j++) {
-				for (int i = 1; i <= arr_i16_1eb8[0]; i++) {
+			for (int j = 1; j <= _gridInfo.yCount; j++) {
+				for (int i = 1; i <= _gridInfo.xCount; i++) {
 					arr_i16_2f38[i*32 + j] = puzzlesReadByte();
 					arr_i16_3b38[i*32 + j] = 0;
 				}
 			}
 		} else {
 		// 130:028a
-			for (int j = 1; j <= arr_i16_1eb8[1]; j++) {
-				for (int i = 1; i <= arr_i16_1eb8[0]; i++) {
+			for (int j = 1; j <= _gridInfo.yCount; j++) {
+				for (int i = 1; i <= _gridInfo.xCount; i++) {
 					arr_i16_2f38[i*32 + j] = 0;
 					arr_i16_3b38[i*32 + j] = 0;
 				}
@@ -571,7 +554,7 @@ void FoolGame::jumbleRunHiddenMessage() {
 		if (_event.what == Graphics::MacToolbox::kMouseDown) {
 			jumbleOnClick();
 		}
-		if ((_jumbleGridPos.x < 1) || (_jumbleGridPos.x > arr_i16_1eb8[0]) || (_jumbleGridPos.y < 1) || (_jumbleGridPos.y > arr_i16_1eb8[1])) {
+		if ((_jumbleGridPos.x < 1) || (_jumbleGridPos.x > _gridInfo.xCount) || (_jumbleGridPos.y < 1) || (_jumbleGridPos.y > _gridInfo.yCount)) {
 			var_i16_187c = 0;
 		} else {
 			var_i16_187c = arr_i16_2f38[_jumbleGridPos.x*32 + _jumbleGridPos.y];
@@ -613,7 +596,7 @@ void FoolGame::sub_130_1426() {
 void FoolGame::jumbleOnClick() {
 	// 130:1476
 	getGridFromMouse(_jumbleGridPos.x, _jumbleGridPos.y);
-	if ((_jumbleGridPos.x < 1) || (_jumbleGridPos.x > arr_i16_1eb8[0]) || (_jumbleGridPos.y < 1) || (_jumbleGridPos.y > arr_i16_1eb8[1])) {
+	if ((_jumbleGridPos.x < 1) || (_jumbleGridPos.x > _gridInfo.xCount) || (_jumbleGridPos.y < 1) || (_jumbleGridPos.y > _gridInfo.yCount)) {
 		// 130:14fa
 		if (_event.where.x > 0x14) {
 			playTone(0xf, 0x42, 0x1);
@@ -857,10 +840,10 @@ void FoolGame::sub_130_1c6c() {
 
 void FoolGame::jumbleDrawLetter() {
 	// 130:1dcc
-	_zbasic->text(kFontPuzzle, arr_i16_1eb8[0xe], 0, var_i16_106c);
+	_zbasic->text(kFontPuzzle, _gridInfo.fontSize, 0, var_i16_106c);
 	_toolbox->MoveTo(
-		_screenGrid[_jumbleSelected].left + arr_i16_1eb8[2],
-		_screenGrid[_jumbleSelected].top + arr_i16_1eb8[3]
+		_screenGrid[_jumbleSelected].left + _gridInfo.xInnerOffset,
+		_screenGrid[_jumbleSelected].top + _gridInfo.yInnerOffset
 	);
 	_toolbox->DrawString(var_str_d12);
 }
@@ -886,11 +869,11 @@ void FoolGame::sub_130_1e76() {
 	temp.bottom = arr_i16_4758[2];
 	temp.right = arr_i16_4758[3];
 	_toolbox->FillRect(temp, _patterns[var_i16_105e]);
-	_zbasic->text(kFontPuzzle, arr_i16_1eb8[0xe], 0, var_i16_106c);
+	_zbasic->text(kFontPuzzle, _gridInfo.fontSize, 0, var_i16_106c);
 	// 130:1f70
 	_toolbox->MoveTo(
-		_screenGrid[_jumbleSelected].left + arr_i16_1eb8[2],
-		_screenGrid[_jumbleSelected].top + arr_i16_1eb8[3]
+		_screenGrid[_jumbleSelected].left + _gridInfo.xInnerOffset,
+		_screenGrid[_jumbleSelected].top + _gridInfo.yInnerOffset
 	);
 	_toolbox->DrawString(var_str_d12);
 	if (arr_i16_3738[_jumblePosition] < 0)
@@ -956,8 +939,8 @@ Common::Point FoolGame::jumbleGetGridPos() {
 	// 130:20fe
 	int16 index = ABS(arr_i16_3738[_jumblePosition]) - 1;
 	Common::Point result;
-	result.x = (index % arr_i16_1eb8[0]) + 1;
-	result.y = (index / arr_i16_1eb8[0]) + 1;
+	result.x = (index % _gridInfo.xCount) + 1;
+	result.y = (index / _gridInfo.xCount) + 1;
 	return result;
 }
 
diff --git a/engines/fool/fool_maze.cpp b/engines/fool/fool_maze.cpp
index dc59cf2cf49..4b1e1aabb17 100644
--- a/engines/fool/fool_maze.cpp
+++ b/engines/fool/fool_maze.cpp
@@ -34,25 +34,27 @@ void FoolGame::mazeRun() {
 	// 136:0004
 	fetchPuzzleData();
 	toggleMouseCursor(false);
-	for (int16 i = 0; i <= 0x17; i++) {
+	_gridInfo = puzzlesReadGridInfo();
+	for (int16 i = 0xf; i <= 0x17; i++) {
 		arr_i16_1eb8[i] = puzzlesReadShort();
 	}
-	var_i16_484 = 0;
-	var_i16_68c = arr_i16_1eb8[8];
+	int16 gridIndex = 0;
+	int16 gridX = 0;
+	int16 gridY = _gridInfo.yStartPos;
 	do {
-		var_i16_68a = arr_i16_1eb8[10];
+		gridX = _gridInfo.xStartPos;
 		do {
-			var_i16_484++;
+			gridIndex++;
 			_toolbox->SetRect(
-				_screenGrid[var_i16_484],
-				var_i16_68a,
-				var_i16_68c,
-				var_i16_68a + arr_i16_1eb8[13],
-				var_i16_68c + arr_i16_1eb8[12]
+				_screenGrid[gridIndex],
+				gridX,
+				gridY,
+				gridX + _gridInfo.xInnerSpan,
+				gridY + _gridInfo.yInnerSpan
 			);
 			// 136:00ca
-		} while (_zbasic->incrAndCheck(var_i16_68a, arr_i16_1eb8[11], arr_i16_1eb8[6]));
-	} while (_zbasic->incrAndCheck(var_i16_68c, arr_i16_1eb8[9], arr_i16_1eb8[7]));
+		} while (_zbasic->incrAndCheck(gridX, _gridInfo.xEndPos, _gridInfo.xOuterSpan));
+	} while (_zbasic->incrAndCheck(gridY, _gridInfo.yEndPos, _gridInfo.yOuterSpan));
 	if (arr_i16_1eb8[20] != 0) {
 		var_i32_1ac0 = _toolbox->GetPicture(arr_i16_1eb8[20]);
 		_zbasic->picture(arr_i16_1eb8[18], arr_i16_1eb8[19], var_i32_1ac0);
@@ -63,18 +65,18 @@ void FoolGame::mazeRun() {
 		_mazeInvItemCount[i] = 0;
 	}
 	// 136:01d2
-	var_i16_484 = 0;
-	for (int16 j = 1; j <= arr_i16_1eb8[1]; j++) {
-		for (int16 i = 1; i <= arr_i16_1eb8[0]; i++) {
-			var_i16_484++;
-			arr_i16_3738[var_i16_484] = puzzlesReadByte();
-			arr_i16_2f38[i*32 + j] = var_i16_484;
-			arr_i16_4338[var_i16_484] = 0;
+	gridIndex = 0;
+	for (int16 j = 1; j <= _gridInfo.yCount; j++) {
+		for (int16 i = 1; i <= _gridInfo.xCount; i++) {
+			gridIndex++;
+			arr_i16_3738[gridIndex] = puzzlesReadByte();
+			arr_i16_2f38[i*32 + j] = gridIndex;
+			arr_i16_4338[gridIndex] = 0;
 		}
 	}
 	// 136:026a
-	for (int16 j = 1; j <= arr_i16_1eb8[1]; j++) {
-		for (int16 i = 1; i <= arr_i16_1eb8[0]; i++) {
+	for (int16 j = 1; j <= _gridInfo.yCount; j++) {
+		for (int16 i = 1; i <= _gridInfo.xCount; i++) {
 			arr_i16_3b38[i*32 + j] = puzzlesReadByte();
 		}
 	}
@@ -84,8 +86,8 @@ void FoolGame::mazeRun() {
 	Common::Rect playArea;
 	playArea.top = _screenGrid[1].top + 3;
 	playArea.left = _screenGrid[1].left + 3;
-	playArea.bottom = _screenGrid[arr_i16_1eb8[0] * arr_i16_1eb8[1] - 1].bottom - 3;
-	playArea.right = _screenGrid[arr_i16_1eb8[0] * arr_i16_1eb8[1] - 1].right - 3;
+	playArea.bottom = _screenGrid[_gridInfo.xCount * _gridInfo.yCount - 1].bottom - 3;
+	playArea.right = _screenGrid[_gridInfo.xCount * _gridInfo.yCount - 1].right - 3;
 	_toolbox->FillRect(playArea, _patterns[2]);
 	_toolbox->PenNormal();
 	_toolbox->PenSize(5, 5);
@@ -94,8 +96,8 @@ void FoolGame::mazeRun() {
 	var_i16_1ac4 = arr_i16_1eb8[17];
 	var_i16_1574 = 0;
 	var_i16_68c = 1;
-	for (int16 j = 1; j <= arr_i16_1eb8[1]; j++) {
-		for (int16 i = 1; i <= arr_i16_1eb8[0]; i++) {
+	for (int16 j = 1; j <= _gridInfo.yCount; j++) {
+		for (int16 i = 1; i <= _gridInfo.xCount; i++) {
 			var_i16_1574++;
 			if ((arr_i16_3738[var_i16_1574] & 0x10) != 0) {
 				mazeAddWallLeft();
@@ -565,8 +567,8 @@ void FoolGame::mazeWanderingWinds() {
 	var_i16_1dec = 2;
 	mazeMovementTrail();
 	// 136:1108
-	_mazePlayerX = ((var_i16_1de8 - 1) % arr_i16_1eb8[0]) + 1;
-	_mazePlayerY = ((var_i16_1de8 - 1) / arr_i16_1eb8[0]) + 1;
+	_mazePlayerX = ((var_i16_1de8 - 1) % _gridInfo.xCount) + 1;
+	_mazePlayerY = ((var_i16_1de8 - 1) / _gridInfo.xCount) + 1;
 	mazeDrawPlayer();
 }
 
@@ -614,8 +616,8 @@ void FoolGame::mazeDrawLetter() {
 	// 136:12e4
 	_zbasic->text(kFontPuzzle, 0xc, 0, var_src_1dee);
 	_toolbox->MoveTo(
-		_screenGrid[var_i16_1dea].left + arr_i16_1eb8[2],
-		_screenGrid[var_i16_1dea].top + arr_i16_1eb8[3]
+		_screenGrid[var_i16_1dea].left + _gridInfo.xInnerOffset,
+		_screenGrid[var_i16_1dea].top + _gridInfo.yInnerOffset
 	);
 	var_str_384 = _zbasic->chr(var_i16_106e);
 	_toolbox->DrawString(var_str_384);
@@ -1267,8 +1269,8 @@ void FoolGame::mazeStoreState() {
 	var_i16_484 = 0;
 	Common::String buffer;
 	var_i16_1de6 = 0;
-	for (int16 j = 1; j <= arr_i16_1eb8[1]; j++) {
-		for (int16 i = 1; i <= arr_i16_1eb8[0]; i++) {
+	for (int16 j = 1; j <= _gridInfo.yCount; j++) {
+		for (int16 i = 1; i <= _gridInfo.xCount; i++) {
 			var_i16_484++;
 			if (arr_i16_4338[var_i16_484] > 0) {
 				var_i16_1de6++;
@@ -1283,8 +1285,8 @@ void FoolGame::mazeStoreState() {
 	var_i16_484 = 0;
 	var_i16_1de6 = 0;
 	var_i16_1f08 = 0;
-	for (int16 j = 1; j <= arr_i16_1eb8[1]; j++) {
-		for (int16 i = 1; i <= arr_i16_1eb8[0]; i++) {
+	for (int16 j = 1; j <= _gridInfo.yCount; j++) {
+		for (int16 i = 1; i <= _gridInfo.xCount; i++) {
 			var_i16_484++;
 			if (arr_i16_1eb8[21] != 0) {
 				// 136:3188
@@ -1422,8 +1424,8 @@ void FoolGame::mazeLoadState() {
 			var_i16_1f0a += 2;
 			// 136:366e
 			_toolbox->MoveTo(
-				_screenGrid[var_i16_1dea].left + arr_i16_1eb8[2],
-				_screenGrid[var_i16_1dea].top + arr_i16_1eb8[3]
+				_screenGrid[var_i16_1dea].left + _gridInfo.xInnerOffset,
+				_screenGrid[var_i16_1dea].top + _gridInfo.yInnerOffset
 			);
 			_zbasic->unk_8();
 			// the one place that used ZBasic's print API,
@@ -1445,8 +1447,8 @@ void FoolGame::mazeLoadState() {
 	// 136:3766
 	debugC(5, kDebugLoading, "mazeLoadState: mask[%d] %04x", var_i16_1f0a, var_i16_1f08);
 	var_i16_1f0a += 2;
-	for (int16 j = 1; j <= arr_i16_1eb8[1]; j++) {
-		for (int16 i = 1; i <= arr_i16_1eb8[0]; i++) {
+	for (int16 j = 1; j <= _gridInfo.yCount; j++) {
+		for (int16 i = 1; i <= _gridInfo.xCount; i++) {
 			var_i16_1574++;
 			if (arr_i16_1eb8[21] != 0) {
 				if (((arr_i16_3738[var_i16_1574] & 1) == 1) && ((arr_i16_3738[var_i16_1574] & 0x10) == 0)) {
diff --git a/engines/fool/fool_metapuzzle.cpp b/engines/fool/fool_metapuzzle.cpp
index bf43ce34608..9b6a2d7f40a 100644
--- a/engines/fool/fool_metapuzzle.cpp
+++ b/engines/fool/fool_metapuzzle.cpp
@@ -139,7 +139,7 @@ void FoolGame::sub_138_21e() {
 	_toolbox->InvertRect(temp);
 	puzzleLoadContext();
 	puzzleSetupMenu();
-	sub_128_26f6();
+	clearGridInfo();
 	sub_128_61ec();
 	if (_activePuzzle == 0x55) {
 		fillRect(0x14, 0, SCREEN_HEIGHT, SCREEN_WIDTH, 0x47);
diff --git a/engines/fool/fool_polyomino.cpp b/engines/fool/fool_polyomino.cpp
index 95cc1eeb99d..3ea815816be 100644
--- a/engines/fool/fool_polyomino.cpp
+++ b/engines/fool/fool_polyomino.cpp
@@ -35,7 +35,8 @@ void FoolGame::polyominoRun() {
 	// 133:0004
 	fetchPuzzleData();
 	var_i16_c00 = 1;
-	for (int i = 0; i <= 0x11; i++) {
+	_gridInfo = puzzlesReadGridInfo();
+	for (int i = 0xf; i <= 0x11; i++) {
 		arr_i16_1eb8[i] = puzzlesReadShort();
 	}
 	// 133:003c
@@ -44,10 +45,11 @@ void FoolGame::polyominoRun() {
 	hint = _zbasic->str(OFF(0)) + hint + _zbasic->str(OFF(1));
 	_zbasic->menu(8, 0xf, 1, hint);
 	int16 gridIndex = 0;
-	int16 gridY = arr_i16_1eb8[8];
+	int16 gridX = 0;
+	int16 gridY = _gridInfo.yStartPos;
 	do {
 		// 133:009e
-		int16 gridX = arr_i16_1eb8[10];
+		gridX = _gridInfo.xStartPos;
 		do {
 			// 133:00b2
 			gridIndex++;
@@ -55,31 +57,31 @@ void FoolGame::polyominoRun() {
 				_screenGrid[gridIndex],
 				gridX,
 				gridY,
-				gridX + arr_i16_1eb8[13],
-				gridY + arr_i16_1eb8[12]
+				gridX + _gridInfo.xInnerSpan,
+				gridY + _gridInfo.yInnerSpan
 			);
 			// 133:0112
 		} while (_zbasic->incrAndCheck(
 			gridX,
-			arr_i16_1eb8[11],
-			arr_i16_1eb8[6]
+			_gridInfo.xEndPos,
+			_gridInfo.xOuterSpan
 		));
 		// 133:0142
 	} while (_zbasic->incrAndCheck(
 		gridY,
-		arr_i16_1eb8[9],
-		arr_i16_1eb8[7]
+		_gridInfo.yEndPos,
+		_gridInfo.yOuterSpan
 	));
 	// 133:0172
-	var_i16_484 = 0;
-	for (int j = 1; j <= arr_i16_1eb8[1]; j++) {
-		for (int i = 1; i <= arr_i16_1eb8[0]; i++) {
+	gridIndex = 0;
+	for (int j = 1; j <= _gridInfo.yCount; j++) {
+		for (int i = 1; i <= _gridInfo.xCount; i++) {
 			// 133:0184
-			var_i16_484++;
+			gridIndex++;
 			// collision map: 2D grid where element is occupying polyomino ID
 			arr_i16_2f38[i*32 + j] = 0;
 
-			arr_i16_3b38[i*32 + j] = var_i16_484;
+			arr_i16_3b38[i*32 + j] = gridIndex;
 		}
 	}
 	// 133:01fa
@@ -268,7 +270,7 @@ void FoolGame::polyominoOnClick() {
 	// 133:087c
 	getGridFromMouse(var_i16_68a, var_i16_68c);
 	debug(5, "FoolGame::polyominoOnClick: grid pos: (%d, %d)", var_i16_68a, var_i16_68c);
-	if ((var_i16_68a < 1) || (var_i16_68a > arr_i16_1eb8[0]) || (var_i16_68c < 1) || (var_i16_68c > arr_i16_1eb8[1])) {
+	if ((var_i16_68a < 1) || (var_i16_68a > _gridInfo.xCount) || (var_i16_68c < 1) || (var_i16_68c > _gridInfo.yCount)) {
 		waitForMouseUp();
 		return;
 	}
@@ -326,8 +328,8 @@ void FoolGame::polyominoOnClick() {
 			// 133:0b62
 			getNextEvent(4);
 
-			var_i16_68a = var_i16_1ab2 + ((_event.where.x - arr_i16_1eb8[4]) / arr_i16_1eb8[6]);
-			var_i16_68c = var_i16_1ab4 + ((_event.where.y - arr_i16_1eb8[5]) / arr_i16_1eb8[7]);
+			var_i16_68a = var_i16_1ab2 + ((_event.where.x - _gridInfo.xOrigin) / _gridInfo.xOuterSpan);
+			var_i16_68c = var_i16_1ab4 + ((_event.where.y - _gridInfo.yOrigin) / _gridInfo.yOuterSpan);
 
 			if (var_i16_68a < 1) {
 				var_i16_68a = 1;
@@ -455,8 +457,8 @@ void FoolGame::polyominoOnClickFixed() {
 void FoolGame::polyominoReset() {
 	// 133:11cc
 	// zero out collision grid
-	for (int j = 1; j <= arr_i16_1eb8[1] + 1; j++) {
-		for (int i = 1; i <= arr_i16_1eb8[0] + 1; i++) {
+	for (int j = 1; j <= _gridInfo.yCount + 1; j++) {
+		for (int i = 1; i <= _gridInfo.xCount + 1; i++) {
 			arr_i16_2f38[i*32 + j] = 0;
 		}
 	}
diff --git a/engines/fool/fool_straightpath.cpp b/engines/fool/fool_straightpath.cpp
index 07890e8674f..49d882da54e 100644
--- a/engines/fool/fool_straightpath.cpp
+++ b/engines/fool/fool_straightpath.cpp
@@ -31,64 +31,62 @@ namespace Fool {
 void FoolGame::straightPathRun() {
 	// 143:0004
 	fetchPuzzleData();
-	for (int16 i = 0; i <= 0xe; i++) {
-		arr_i16_1eb8[i] = puzzlesReadShort();
-	}
+	_gridInfo = puzzlesReadGridInfo();
 	int16 gridIndex = 0;
-	int16 gridX = arr_i16_1eb8[10];
-	int16 gridY = arr_i16_1eb8[8];
+	int16 gridX = _gridInfo.xStartPos;
+	int16 gridY = _gridInfo.yStartPos;
 	do {
-		gridX = arr_i16_1eb8[10];
+		gridX = _gridInfo.xStartPos;
 		do {
 			gridIndex++;
 			_toolbox->SetRect(
 				_screenGrid[gridIndex],
 				gridX,
 				gridY,
-				gridX + arr_i16_1eb8[13] - 1,
-				gridY + arr_i16_1eb8[12] - 1
+				gridX + _gridInfo.xInnerSpan - 1,
+				gridY + _gridInfo.yInnerSpan - 1
 			);
-		} while (_zbasic->incrAndCheck(gridX, arr_i16_1eb8[11], arr_i16_1eb8[6]));
-	} while (_zbasic->incrAndCheck(gridY, arr_i16_1eb8[9], arr_i16_1eb8[7]));
+		} while (_zbasic->incrAndCheck(gridX, _gridInfo.xEndPos, _gridInfo.xOuterSpan));
+	} while (_zbasic->incrAndCheck(gridY, _gridInfo.yEndPos, _gridInfo.yOuterSpan));
 	// 143:0128
-	for (int16 j = 1; j <= arr_i16_1eb8[1]; j++) {
-		for (int16 i = 1; i <= arr_i16_1eb8[0]; i++) {
+	for (int16 j = 1; j <= _gridInfo.yCount; j++) {
+		for (int16 i = 1; i <= _gridInfo.xCount; i++) {
 			arr_i16_2f38[i*32 + j] = 0;
 			arr_i16_3b38[i*32 + j] = 0;
 		}
 	}
 	// 143:01a4
 	_straightPathGoal.clear(); // was: str(366)
-	arr_i16_1eb8[15] = puzzlesReadShort();
-	for (int16 i = 1; i <= arr_i16_1eb8[15]; i++) {
+	_straightPathSteps = puzzlesReadShort();
+	for (int16 i = 1; i <= _straightPathSteps; i++) {
 		gridX = puzzlesReadByte();
 		gridY = puzzlesReadByte();
 		_zbasic->indexRawSet(puzzlesReadString(), 1, i);
-		arr_i16_2f38[gridX*32 + gridX] = i;
+		arr_i16_2f38[gridX*32 + gridY] = i;
 		arr_i16_3b38[gridX*32 + gridY] = _zbasic->asc(_zbasic->leftStr(_zbasic->index(1, i), 1));
 		_straightPathGoal += _zbasic->indexRaw(1, i);
 		// 143:0276
 	}
-	_zbasic->text(kFontPuzzle, arr_i16_1eb8[14], 0, Graphics::MacToolbox::kSrcOr);
+	_zbasic->text(kFontPuzzle, _gridInfo.fontSize, 0, Graphics::MacToolbox::kSrcOr);
 	_zbasic->unk_20();
 	// 143:02b6
-	for (int16 j = 0; j <= arr_i16_1eb8[1]; j++) {
+	for (int16 j = 0; j <= _gridInfo.yCount; j++) {
 		Common::Rect temp;
-		temp.top = arr_i16_1eb8[8] + arr_i16_1eb8[7] * (j - 1);
+		temp.top = _gridInfo.yStartPos + _gridInfo.yOuterSpan * (j - 1);
 		temp.left = 0;
-		temp.bottom = temp.top + arr_i16_1eb8[7] + 2;
+		temp.bottom = temp.top + _gridInfo.yOuterSpan + 2;
 		temp.right = SCREEN_WIDTH;
 		_toolbox->FillRect(temp, _patterns[0]);
-		for (int16 i = 1; i <= arr_i16_1eb8[0]; i++) {
-			gridIndex = (j - 1)*arr_i16_1eb8[0] + i;
+		for (int16 i = 1; i <= _gridInfo.xCount; i++) {
+			gridIndex = (j - 1)*_gridInfo.xCount + i;
 			if (arr_i16_3b38[i*32 + j] == 0) {
 				// 143:03c4
 				arr_i16_3b38[i*32 + j] = _zbasic->rndInt(0x1a) + 0x40;
 			}
 			// 143:03f0
 			_toolbox->MoveTo(
-				_screenGrid[gridIndex].left + arr_i16_1eb8[2] - 1,
-				_screenGrid[gridIndex].top + arr_i16_1eb8[3]
+				_screenGrid[gridIndex].left + _gridInfo.xInnerOffset - 1,
+				_screenGrid[gridIndex].top + _gridInfo.yInnerOffset
 			);
 			_toolbox->DrawString(_zbasic->chr(arr_i16_3b38[i*32 + j]));
 		}
@@ -135,7 +133,7 @@ void FoolGame::straightPathOnClick() {
 		_straightPathSelected = 0;
 	}
 	// 143:05fc
-	if ((gridX < 1) || (gridX > arr_i16_1eb8[0]) || (gridY < 1) || (gridY > arr_i16_1eb8[1]))
+	if ((gridX < 1) || (gridX > _gridInfo.xCount) || (gridY < 1) || (gridY > _gridInfo.yCount))
 		return;
 	// 143:066c
 	_activePuzzleStatus++;
@@ -147,8 +145,8 @@ void FoolGame::straightPathOnClick() {
 	}
 	// 143:06fa
 	straightPathDrawText();
-	if (_activePuzzleStatus < arr_i16_1eb8[15]) {
-		_straightPathSelected = (gridY - 1)*arr_i16_1eb8[0] + gridX;
+	if (_activePuzzleStatus < _straightPathSteps) {
+		_straightPathSelected = (gridY - 1)*_gridInfo.xCount + gridX;
 		_toolbox->InvertRect(_screenGrid[_straightPathSelected]);
 	} else {
 		// 143:0766
@@ -167,7 +165,7 @@ void FoolGame::straightPathReset() {
 	}
 	// 143:07a4
 	for (int16 i = 0; i <= 0x14; i++) {
-		int16 gridIndex = _zbasic->rndInt(arr_i16_1eb8[0] * arr_i16_1eb8[1]);
+		int16 gridIndex = _zbasic->rndInt(_gridInfo.xCount * _gridInfo.yCount);
 		_toolbox->InvertRect(_screenGrid[gridIndex]);
 		_toolbox->Delay(0);
 		playTone(_zbasic->rndInt(0x2328) + 0xf, 0x28, true);
@@ -197,10 +195,10 @@ void FoolGame::straightPathSuccess() {
 	// 143:08b0
 	_toolbox->PenMode(Graphics::MacToolbox::kPatBic);
 	_toolbox->PenPat(_patterns[1]);
-	for (int16 j = 1; j <= arr_i16_1eb8[1]; j++) {
-		for (int16 i = 1; i <= arr_i16_1eb8[0]; i++) {
+	for (int16 j = 1; j <= _gridInfo.yCount; j++) {
+		for (int16 i = 1; i <= _gridInfo.xCount; i++) {
 			if (arr_i16_2f38[i*32 + j] == 0) {
-				int16 gridIndex = (j - 1)*arr_i16_1eb8[0] + i;
+				int16 gridIndex = (j - 1)*_gridInfo.xCount + i;
 				_toolbox->PaintRect(_screenGrid[gridIndex]);
 			}
 			// 143:0936
diff --git a/engines/fool/fool_sun.cpp b/engines/fool/fool_sun.cpp
index 3e2fd2fca17..c4796aae6a8 100644
--- a/engines/fool/fool_sun.cpp
+++ b/engines/fool/fool_sun.cpp
@@ -33,39 +33,39 @@ void FoolGame::sunMapRun() {
 	// 137:0004
 	var_i16_c00 = 1;
 	fillRect(1, Graphics::MacToolbox::kPatOr, 0x14, 0, SCREEN_HEIGHT, SCREEN_WIDTH);
-	arr_i16_1eb8[0] = 9;
-	arr_i16_1eb8[1] = 9;
-	arr_i16_1eb8[4] = 0x4b;
-	arr_i16_1eb8[5] = -9;
-	arr_i16_1eb8[6] = 0x23;
-	arr_i16_1eb8[7] = 0x23;
-	var_i16_484 = 0;
+	_gridInfo.xCount = 9;
+	_gridInfo.yCount = 9;
+	_gridInfo.xOrigin = 0x4b;
+	_gridInfo.yOrigin = -9;
+	_gridInfo.xOuterSpan = 0x23;
+	_gridInfo.yOuterSpan = 0x23;
+	int16 gridIndex = 0;
 	for (int16 j = 0x1a; j <= 0x132; j += 0x23) {
 		for (int16 i = 0x6e; i <= 0x186; i += 0x23) {
-			var_i16_484++;
-			_toolbox->SetRect(_screenGrid[var_i16_484], i, j, i+0x24, j+0x24);
+			gridIndex++;
+			_toolbox->SetRect(_screenGrid[gridIndex], i, j, i+0x24, j+0x24);
 		}
 	}
 	// 137:00fa
-	var_i16_484 = 0;
+	gridIndex = 0;
 	for (int16 j = 1; j <= 9; j++) {
 		for (int16 i = 1; i <= 9; i++) {
-			var_i16_484++;
-			arr_i16_2f38[i*32 + j] = var_i16_484;
+			gridIndex++;
+			arr_i16_2f38[i*32 + j] = gridIndex;
 		}
 	}
 	// 137:0148
 	for (int i = 1; i <= 0x51; i++) {
-		var_i16_484 = arr_i16_4c7c[i];
-		if ((_puzzleFlags[var_i16_484] & (kFlagMenuDiamond | kFlagMenuEnabled)) != 0) {
+		int16 puzzleIndex = arr_i16_4c7c[i];
+		if ((_puzzleFlags[puzzleIndex] & (kFlagMenuDiamond | kFlagMenuEnabled)) != 0) {
 			arr_i32_192c0[i] = _sunMapTilePic[i];
 		} else {
 			// 137:01b2
 			arr_i32_192c0[i] = _sunMapTilePic[0x52];
 		}
 		// 137:01d8
-		if ((_puzzleFlags[var_i16_484] & 4) != 0) {
-			_puzzleFlags[var_i16_484] ^= 4;
+		if ((_puzzleFlags[puzzleIndex] & 4) != 0) {
+			_puzzleFlags[puzzleIndex] ^= 4;
 			_puzzleFlags[i] |= kFlagMapTile;
 		}
 		// 137:0252
@@ -128,8 +128,8 @@ void FoolGame::sunMapRun() {
 void FoolGame::sunMapOnClick() {
 	// 137:03e2
 	getGridFromMouse(var_i16_68a, var_i16_68c);
-	if ((var_i16_68a < 1) || (var_i16_68a > arr_i16_1eb8[0]) ||
-		(var_i16_68c < 1) || (var_i16_68c > arr_i16_1eb8[1])) {
+	if ((var_i16_68a < 1) || (var_i16_68a > _gridInfo.xCount) ||
+		(var_i16_68c < 1) || (var_i16_68c > _gridInfo.yCount)) {
 		return;
 	}
 	// 137:0466
@@ -229,14 +229,14 @@ void FoolGame::sunMapMoveSelected() {
 			arr_i16_4758[9] = 1 + ABS(arr_i16_4758[1]);
 		}
 		// 137:0a92
-		if (arr_i16_4758[5] > arr_i16_1eb8[0]) {
-			arr_i16_4758[4] = arr_i16_1eb8[0] - ABS(arr_i16_4758[0]);
-			arr_i16_4758[5] = arr_i16_1eb8[0];
+		if (arr_i16_4758[5] > _gridInfo.xCount) {
+			arr_i16_4758[4] = _gridInfo.xCount - ABS(arr_i16_4758[0]);
+			arr_i16_4758[5] = _gridInfo.xCount;
 		}
 		// 137:0b20
-		if (arr_i16_4758[9] > arr_i16_1eb8[1]) {
-			arr_i16_4758[8] = arr_i16_1eb8[1] - ABS(arr_i16_4758[1]);
-			arr_i16_4758[9] = arr_i16_1eb8[1];
+		if (arr_i16_4758[9] > _gridInfo.yCount) {
+			arr_i16_4758[8] = _gridInfo.yCount - ABS(arr_i16_4758[1]);
+			arr_i16_4758[9] = _gridInfo.yCount;
 		}
 		// 137:0bae
 		arr_rect_4776.top = _screenGrid[arr_i16_2f38[arr_i16_4758[4]*32 + arr_i16_4758[8]]].top;
diff --git a/engines/fool/fool_thoth.cpp b/engines/fool/fool_thoth.cpp
index 3bf052a8906..91f313745fd 100644
--- a/engines/fool/fool_thoth.cpp
+++ b/engines/fool/fool_thoth.cpp
@@ -1117,16 +1117,16 @@ void FoolGame::thothKeyLastSetup() {
 	// 140:2998
 	if (_hermitPathStage != 6) {
 		fetchPuzzleData();
-		arr_i16_1eb8[4] = 0x37;
-		arr_i16_1eb8[5] = 0x29;
-		arr_i16_1eb8[6] = 0x14;
-		arr_i16_1eb8[7] = 0x14;
-		arr_i16_1eb8[8] = 0x29;
-		arr_i16_1eb8[9] = 0x12d;
-		arr_i16_1eb8[10] = 0x37;
-		arr_i16_1eb8[11] = 0x1bd;
-		arr_i16_1eb8[12] = 0x15;
-		arr_i16_1eb8[13] = 0x15;
+		_gridInfo.xOrigin = 0x37;
+		_gridInfo.yOrigin = 0x29;
+		_gridInfo.xOuterSpan = 0x14;
+		_gridInfo.yOuterSpan = 0x14;
+		_gridInfo.yStartPos = 0x29;
+		_gridInfo.yEndPos = 0x12d;
+		_gridInfo.xStartPos = 0x37;
+		_gridInfo.xEndPos = 0x1bd;
+		_gridInfo.yInnerSpan = 0x15;
+		_gridInfo.xInnerSpan = 0x15;
 		for (int16 i = 0; i <= 0x13; i++) {
 			arr_i16_5bbc[i] = puzzlesReadShort();
 		}
@@ -1157,9 +1157,7 @@ void FoolGame::thothKeyLastSetup() {
 		// 140:2b70: MOVE.L - D0,var_i32_696
 		_puzzleDataBuffer = var_bytes_232a;
 		_puzzleDataPtr = var_ptr_232a + 0x1e4;
-		for (int16 i = 0; i <= 0xe; i++) {
-			arr_i16_1eb8[i] = puzzlesReadShort();
-		}
+		_gridInfo = puzzlesReadGridInfo();
 		for (int16 i = 0; i <= 0x13; i++) {
 			arr_i16_5bbc[i] = puzzlesReadShort();
 		}
@@ -1174,29 +1172,30 @@ void FoolGame::thothKeyLastSetup() {
 		arr_i16_3b38[6+0x20] = 0xcd;
 	}
 	// 140:2c58
-	var_i16_484 = 0;
-	var_i16_68c = arr_i16_1eb8[8];
+	int16 gridIndex = 0;
+	int16 gridX = 0;
+	int16 gridY = _gridInfo.yStartPos;
 	do {
-		var_i16_68a = arr_i16_1eb8[0xa];
+		gridX = _gridInfo.xStartPos;
 		do {
-			var_i16_484++;
+			gridIndex++;
 			_toolbox->SetRect(
-				_screenGrid[var_i16_484],
-				var_i16_68a,
-				var_i16_68c,
-				var_i16_68a + arr_i16_1eb8[0xd],
-				var_i16_68c + arr_i16_1eb8[0xc]
+				_screenGrid[gridIndex],
+				gridX,
+				gridY,
+				gridX + _gridInfo.xInnerSpan,
+				gridY + _gridInfo.yInnerSpan
 			);
 			// 140:2ce4
-		} while (_zbasic->incrAndCheck(var_i16_68a, arr_i16_1eb8[0xb], arr_i16_1eb8[6]));
-	} while (_zbasic->incrAndCheck(var_i16_68c, arr_i16_1eb8[9], arr_i16_1eb8[7]));
+		} while (_zbasic->incrAndCheck(gridX, _gridInfo.xEndPos, _gridInfo.xOuterSpan));
+	} while (_zbasic->incrAndCheck(gridY, _gridInfo.yEndPos, _gridInfo.yOuterSpan));
 	// 140:2d46
 
-	var_i16_484 = 0;
+	gridIndex = 0;
 	for (int16 j = 0; j <= 0xd; j++) {
 		for (int16 i = 0; i <= 0x13; i++) {
-			var_i16_484++;
-			arr_i16_2f38[i*32 + j] = var_i16_484;
+			gridIndex++;
+			arr_i16_2f38[i*32 + j] = gridIndex;
 		}
 	}
 	// 140:2d94
diff --git a/engines/fool/fool_wordsearch.cpp b/engines/fool/fool_wordsearch.cpp
index 5ca92f72f97..5bdfc6a33c8 100644
--- a/engines/fool/fool_wordsearch.cpp
+++ b/engines/fool/fool_wordsearch.cpp
@@ -35,31 +35,30 @@ void FoolGame::wordSearchRun() {
 	// 131:0004
 	fetchPuzzleData();
 	var_str_188e = puzzlesReadString().decode(Common::kMacRoman);
-	for (int i = 0; i <= 0xe; i++) {
-		arr_i16_1eb8[i] = puzzlesReadShort();
-	}
+	_gridInfo = puzzlesReadGridInfo();
 	// 131:0042
-	var_i16_484 = 0;
-	var_i16_68c = arr_i16_1eb8[8];
+	int16 gridIndex = 0;
+	int16 gridX = 0;
+	int16 gridY = _gridInfo.yStartPos;
 	do {
-		var_i16_68a = arr_i16_1eb8[0xa];
+		gridX = _gridInfo.xStartPos;
 		do {
-			var_i16_484++;
+			gridIndex++;
 			_toolbox->SetRect(
-				_screenGrid[var_i16_484],
-				var_i16_68a,
-				var_i16_68c,
-				var_i16_68a + arr_i16_1eb8[0xd] - 1,
-				var_i16_68c + arr_i16_1eb8[0xc] - 1
+				_screenGrid[gridIndex],
+				gridX,
+				gridY,
+				gridX + _gridInfo.xInnerSpan - 1,
+				gridY + _gridInfo.yInnerSpan - 1
 			);
 		// 131:00d4
-		} while (_zbasic->incrAndCheck(var_i16_68a, arr_i16_1eb8[0xb], arr_i16_1eb8[6]));
-	} while (_zbasic->incrAndCheck(var_i16_68c, arr_i16_1eb8[9], arr_i16_1eb8[7]));
+		} while (_zbasic->incrAndCheck(gridX, _gridInfo.xEndPos, _gridInfo.xOuterSpan));
+	} while (_zbasic->incrAndCheck(gridY, _gridInfo.yEndPos, _gridInfo.yOuterSpan));
 	// 131:0134
 	var_i16_484 = 0;
 
-	for (int j = 1; j <= arr_i16_1eb8[1]; j++) {
-		for (int i = 1; i <= arr_i16_1eb8[0]; i++) {
+	for (int j = 1; j <= _gridInfo.yCount; j++) {
+		for (int i = 1; i <= _gridInfo.xCount; i++) {
 			arr_i16_2f38[i*32 + j] = 0;
 			arr_i16_3b38[i*32 + j] = 0;
 		}
@@ -83,10 +82,9 @@ void FoolGame::wordSearchRun() {
 		// 131:0282
 		var_i16_484 = 0;
 		var_i16_106a = 1;
-		var_i16_68c = 1;
 
-		for (int j = 1; j <= arr_i16_1eb8[1]; j++) {
-			for (int i = 1; i <= arr_i16_1eb8[0]; i++) {
+		for (int j = 1; j <= _gridInfo.yCount; j++) {
+			for (int i = 1; i <= _gridInfo.xCount; i++) {
 				// 131:029a
 				if ((arr_i16_4758[var_i16_106a] & _bitLUT[var_i16_484]) != 0) {
 					arr_i16_2f38[i*32 + j] = 1;
@@ -105,7 +103,6 @@ void FoolGame::wordSearchRun() {
 	}
 	// 131:0336
 	var_i16_1990 = 0;
-	var_i16_68a = 1;
 	for (int i = 1; i <= var_i16_198e; i++) {
 		arr_i16_3738[i] = _zbasic->castInt(_zbasic->midStr(_activePuzzleBuffer, i, 1));
 		if (arr_i16_3738[i] != 0) {
@@ -141,14 +138,14 @@ void FoolGame::wordSearchRun() {
 	_toolbox->PenNormal();
 	var_str_384 = var_str_188e;
 	wordSearchDrawFooter();
-	_zbasic->text(kFontPuzzle, arr_i16_1eb8[0xe], Graphics::kMacFontRegular, Graphics::MacToolbox::kSrcOr);
+	_zbasic->text(kFontPuzzle, _gridInfo.fontSize, Graphics::kMacFontRegular, Graphics::MacToolbox::kSrcOr);
 	_toolbox->PenPat(_patterns[1]);
 	_toolbox->PenMode(Graphics::MacToolbox::kPatBic);
 	_zbasic->unk_20();
 	// 131:04e0
-	for (int j = 1; j <= arr_i16_1eb8[1]; j++) {
+	for (int j = 1; j <= _gridInfo.yCount; j++) {
 		var_str_1994 = puzzlesReadString().decode(Common::kMacRoman);
-		var_i16_1574 = 1 + (j - 1) * arr_i16_1eb8[0];
+		var_i16_1574 = 1 + (j - 1) * _gridInfo.xCount;
 		// 131:051e
 		Common::Rect temp; // arr_rect_5b7c
 		temp.top = _screenGrid[var_i16_1574].top - 1;
@@ -157,14 +154,14 @@ void FoolGame::wordSearchRun() {
 		temp.right = SCREEN_WIDTH;
 		_toolbox->FillRect(temp, _patterns[0]);
 		// 131:05b0
-		for (int i = 1; i <= arr_i16_1eb8[0]; i++) {
-			var_i16_1574 = i + (j - 1) * arr_i16_1eb8[0];
+		for (int i = 1; i <= _gridInfo.xCount; i++) {
+			var_i16_1574 = i + (j - 1) * _gridInfo.xCount;
 			var_str_384 = _zbasic->midStr(var_str_1994, i, 1);
 			arr_i16_3b38[i*32 + j] = _zbasic->asc(var_str_384);
 
 			_toolbox->MoveTo(
-				_screenGrid[var_i16_1574].left + arr_i16_1eb8[2] - 1,
-				_screenGrid[var_i16_1574].top + arr_i16_1eb8[3]
+				_screenGrid[var_i16_1574].left + _gridInfo.xInnerOffset - 1,
+				_screenGrid[var_i16_1574].top + _gridInfo.yInnerOffset
 			);
 			_toolbox->DrawString(var_str_384);
 			// 131:069e
@@ -231,7 +228,7 @@ void FoolGame::wordSearchOnClick() {
 		sub_128_342(var_i16_68a, var_i16_68c);
 		if (!((var_i16_68a == var_i16_1a96) && (var_i16_68c == var_i16_1a98))) {
 			// 131:0934
-			var_i16_1574 = var_i16_68a + (var_i16_68c - 1)*arr_i16_1eb8[0];
+			var_i16_1574 = var_i16_68a + (var_i16_68c - 1)*_gridInfo.xCount;
 			var_i16_1a96 = var_i16_68a;
 			var_i16_1a98 = var_i16_68c;
 			var_str_1070 += _zbasic->chr(arr_i16_3b38[var_i16_68a*32 + var_i16_68c]);
@@ -290,9 +287,9 @@ void FoolGame::wordSearchOnClick() {
 		_toolbox->InvertRect(_screenGrid[arr_i16_4338[i]]);
 		// paint the square with white checkerboard
 		_toolbox->PaintRect(_screenGrid[arr_i16_4338[i]]);
-		var_i16_484 = ((arr_i16_4338[i] - 1) % arr_i16_1eb8[0]) + 1;
+		var_i16_484 = ((arr_i16_4338[i] - 1) % _gridInfo.xCount) + 1;
 		// 131:0bce
-		var_i16_7e4 = ((arr_i16_4338[i] - 1) / arr_i16_1eb8[0]) + 1;
+		var_i16_7e4 = ((arr_i16_4338[i] - 1) / _gridInfo.xCount) + 1;
 		// add the square to the selected list
 		arr_i16_2f38[var_i16_484*32 + var_i16_7e4] = 1;
 	}
@@ -344,8 +341,8 @@ void FoolGame::wordSearchStoreState() {
 	var_i16_106a = 1;
 	arr_i16_4758[0] = 1;
 	arr_i16_4758[1] = 0;
-	for (int j = 1; j <= arr_i16_1eb8[1]; j++) {
-		for (int i = 1; i <= arr_i16_1eb8[0]; i++) {
+	for (int j = 1; j <= _gridInfo.yCount; j++) {
+		for (int i = 1; i <= _gridInfo.xCount; i++) {
 			if (arr_i16_2f38[i*32 + j] != 0) {
 				arr_i16_4758[var_i16_106a] |= _bitLUT[var_i16_484];
 			}
@@ -375,16 +372,16 @@ void FoolGame::wordSearchSuccess() {
 	}
 	// 131:0f52
 	fillRect(1, Graphics::MacToolbox::kPatOr, 0x14, 0, SCREEN_HEIGHT, SCREEN_WIDTH);
-	_zbasic->text(kFontPuzzle, arr_i16_1eb8[0xe], 0, Graphics::MacToolbox::kSrcOr);
-	for (int j = 1; j <= arr_i16_1eb8[1]; j++) {
-		for (int i = 1; i <= arr_i16_1eb8[0]; i++) {
+	_zbasic->text(kFontPuzzle, _gridInfo.fontSize, 0, Graphics::MacToolbox::kSrcOr);
+	for (int j = 1; j <= _gridInfo.yCount; j++) {
+		for (int i = 1; i <= _gridInfo.xCount; i++) {
 			if (arr_i16_2f38[i*32 + j] != 0) {
 				// 131:0fc8
-				var_i16_1574 = i + (j - 1)* arr_i16_1eb8[0];
+				var_i16_1574 = i + (j - 1)* _gridInfo.xCount;
 				_toolbox->EraseRect(_screenGrid[var_i16_1574]);
 				_toolbox->MoveTo(
-					_screenGrid[var_i16_1574].left + arr_i16_1eb8[2] - 1,
-					_screenGrid[var_i16_1574].top + arr_i16_1eb8[3]
+					_screenGrid[var_i16_1574].left + _gridInfo.xInnerOffset - 1,
+					_screenGrid[var_i16_1574].top + _gridInfo.yInnerOffset
 				);
 				// 131:107a
 				var_str_384 = _zbasic->chr(arr_i16_3b38[i*32 + j]);


Commit: 646022678f8fa9b4a17625e49ad870966c73547f
    https://github.com/scummvm/scummvm/commit/646022678f8fa9b4a17625e49ad870966c73547f
Author: Scott Percival (code at moral.net.au)
Date: 2026-10-25T20:54:01+08:00

Commit Message:
FOOL: Deglobalise common temp vars

Changed paths:
    engines/fool/fool_cards.cpp
    engines/fool/fool_death.cpp
    engines/fool/fool_game.cpp
    engines/fool/fool_game.h
    engines/fool/fool_jigsaw.cpp
    engines/fool/fool_maze.cpp
    engines/fool/fool_metapuzzle.cpp
    engines/fool/fool_polyomino.cpp
    engines/fool/fool_prologue.cpp
    engines/fool/fool_reveal.cpp
    engines/fool/fool_sun.cpp
    engines/fool/fool_thoth.cpp
    engines/fool/fool_threeships.cpp
    engines/fool/fool_wordsearch.cpp


diff --git a/engines/fool/fool_cards.cpp b/engines/fool/fool_cards.cpp
index 16a3c8b182e..0df003a956a 100644
--- a/engines/fool/fool_cards.cpp
+++ b/engines/fool/fool_cards.cpp
@@ -518,14 +518,14 @@ void FoolGame::cardsRevealHands() {
 	drawTextCenter(_zbasic->str(OFF(16)), 0x78); // beats
 	drawTextCenter(var_str_2222, 0x8c);
 	if (arr_i16_1eb8[1] != 0) {
-		var_i16_68a = arr_i16_1eb8[1];
-		if (var_i16_68a > 8) {
-			var_i16_68a -= 8;
+		int16 index = arr_i16_1eb8[1];
+		if (index > 8) {
+			index -= 8;
 		}
 		// 139:1420
 		if (_zbasic->instr(
 			1,
-			_zbasic->index(1, 0x15 + var_i16_68a),
+			_zbasic->index(1, 0x15 + index),
 			_zbasic->midStr(_zbasic->index(1, 0x26), 1, 1)
 		) == 0) {
 			drawTarotCard(5, 0, 2);
@@ -533,7 +533,7 @@ void FoolGame::cardsRevealHands() {
 		// 139:1470
 		if (_zbasic->instr(
 				1,
-				_zbasic->index(1, 0x15 + var_i16_68a),
+				_zbasic->index(1, 0x15 + index),
 				_zbasic->midStr(_zbasic->index(1, 0x26), 2, 1)
 			) == 0) {
 			drawTarotCard(7, 0, 2);
@@ -541,7 +541,7 @@ void FoolGame::cardsRevealHands() {
 		// 139:14c0
 		if (_zbasic->instr(
 				1,
-				_zbasic->index(1, 0x15 + var_i16_68a),
+				_zbasic->index(1, 0x15 + index),
 				_zbasic->midStr(_zbasic->index(1, 0x26), 3, 1)
 			) == 0) {
 			drawTarotCard(9, 0, 2);
@@ -562,19 +562,19 @@ void FoolGame::cardsRevealHands() {
 	}
 	// 139:15f2
 	if (arr_i16_1eb8[2] != 0) {
-		var_i16_68a = arr_i16_1eb8[2];
-		if (var_i16_68a > 8) {
-			var_i16_68a -= 8;
+		int16 index = arr_i16_1eb8[2];
+		if (index > 8) {
+			index -= 8;
 		}
-		if (_zbasic->instr(1, _zbasic->index(1, 0x15 + var_i16_68a), _zbasic->midStr(_zbasic->index(1, 0x27), 1, 1)) == 0) {
+		if (_zbasic->instr(1, _zbasic->index(1, 0x15 + index), _zbasic->midStr(_zbasic->index(1, 0x27), 1, 1)) == 0) {
 			drawTarotCard(4, 0, 2);
 		}
 		// 139:1678
-		if (_zbasic->instr(1, _zbasic->index(1, 0x15 + var_i16_68a), _zbasic->midStr(_zbasic->index(1, 0x27), 2, 1)) == 0) {
+		if (_zbasic->instr(1, _zbasic->index(1, 0x15 + index), _zbasic->midStr(_zbasic->index(1, 0x27), 2, 1)) == 0) {
 			drawTarotCard(6, 0, 2);
 		}
 		// 139:16c8
-		if (_zbasic->instr(1, _zbasic->index(1, 0x15 + var_i16_68a), _zbasic->midStr(_zbasic->index(1, 0x27), 3, 1)) == 0) {
+		if (_zbasic->instr(1, _zbasic->index(1, 0x15 + index), _zbasic->midStr(_zbasic->index(1, 0x27), 3, 1)) == 0) {
 			drawTarotCard(8, 0, 2);
 		}
 	} else {
diff --git a/engines/fool/fool_death.cpp b/engines/fool/fool_death.cpp
index debcadffecd..4da8a0eb9cb 100644
--- a/engines/fool/fool_death.cpp
+++ b/engines/fool/fool_death.cpp
@@ -135,28 +135,28 @@ void FoolGame::deathRun() {
 void FoolGame::deathMoveBlackEye() {
 	// 141:03ca
 	_zbasic->put(_deathBlackEye.left, _deathBlackEye.top, arr_bmp_b3ec, Graphics::MacToolbox::kSrcCopy);
-	var_i16_68a = _event.where.x - 0xc - _deathBlackEye.left;
-	var_i16_68c = _event.where.y - 8 - _deathBlackEye.top;
+	int16 posX = _event.where.x - 0xc - _deathBlackEye.left;
+	int16 posY = _event.where.y - 8 - _deathBlackEye.top;
 	// 141:0452
-	if (var_i16_68c < -4) {
-		var_i16_68c = -4;
+	if (posY < -4) {
+		posY = -4;
 	}
-	if (var_i16_68c > 4) {
-		var_i16_68c = 4;
+	if (posY > 4) {
+		posY = 4;
 	}
-	if (var_i16_68a < -6) {
-		var_i16_68a = -6;
+	if (posX < -6) {
+		posX = -6;
 	}
-	if (var_i16_68a > 6) {
-		var_i16_68a = 6;
+	if (posX > 6) {
+		posX = 6;
 	}
 	_zbasic->put(_deathBlackEye.left, _deathBlackEye.top, arr_bmp_b3ec, Graphics::MacToolbox::kSrcCopy);
 	// 141:04ce
 	Common::Rect newPos; // arr_rect_1ec0
-	newPos.top = _deathBlackEye.top + var_i16_68c;
-	newPos.left = _deathBlackEye.left + var_i16_68a;
-	newPos.bottom = _deathBlackEye.bottom + var_i16_68c;
-	newPos.right = _deathBlackEye.right + var_i16_68a;
+	newPos.top = _deathBlackEye.top + posY;
+	newPos.left = _deathBlackEye.left + posX;
+	newPos.bottom = _deathBlackEye.bottom + posY;
+	newPos.right = _deathBlackEye.right + posX;
 
 	_zbasic->put(_deathBlackEye.left, _deathBlackEye.top, arr_bmp_b3ec, Graphics::MacToolbox::kSrcCopy);
 	// 141:05a2
diff --git a/engines/fool/fool_game.cpp b/engines/fool/fool_game.cpp
index d13631fea7c..b7471595b0f 100644
--- a/engines/fool/fool_game.cpp
+++ b/engines/fool/fool_game.cpp
@@ -477,22 +477,20 @@ void FoolGame::getGridFromMouse(int16 &gridX, int16 &gridY) {
 	gridY = (_event.where.y - _gridInfo.yOrigin) / (_gridInfo.yOuterSpan);
 }
 
-void FoolGame::sub_128_342(int16 unk2, int16 unk1) {
+void FoolGame::clampToGrid(int16 &gridX, int16 &gridY) {
 	// 128:0342
-	var_i16_68c = unk1;
-	var_i16_68a = unk2;
-	if (var_i16_68a < 1) {
-		var_i16_68a = 1;
+	if (gridX < 1) {
+		gridX = 1;
 	}
 	// 128:035c
-	if (var_i16_68a > _gridInfo.xCount) {
-		var_i16_68a = _gridInfo.xCount;
+	if (gridX > _gridInfo.xCount) {
+		gridX = _gridInfo.xCount;
 	}
-	if (var_i16_68c < 1) {
-		var_i16_68c = 1;
+	if (gridY < 1) {
+		gridY = 1;
 	}
-	if (var_i16_68c > _gridInfo.yCount) {
-		var_i16_68c = _gridInfo.yCount;
+	if (gridY > _gridInfo.yCount) {
+		gridY = _gridInfo.yCount;
 	}
 }
 
@@ -1647,7 +1645,6 @@ void FoolGame::menuSetup() {
 	_storyCurrentChapter = 0;
 	_stateFlags = kStateNull;
 	var_i16_484 = 0;
-	var_i16_68c = 3;
 	// render chapter menu headings
 	for (int j = 3; j <= 7; j++) {
 		var_str_384 = Common::U32String("-") + _zbasic->chr(0x7d+j) + Common::U32String("-"); // was: str(37)
@@ -3052,14 +3049,8 @@ void FoolGame::sub_129_068() {
 	menuLoadingMessage(40);
 
 	// load sun's map tiles
-	//byte fakePal[768];
-	//Common::fill(fakePal, fakePal+3, 0xff);
-	//Common::fill(fakePal+3, fakePal+768, 0x00);
-
 	for (int i = 1; i <= 0x53; i++) {
 		_sunMapTilePic[i] = _toolbox->GetPicture(i);
-		//_sunMapTilePic[i]->getSurface()->debugPrint(0, 0, 0, 0, 0, -1, 160, fakePal);
-
 		_toolbox->DetachResource(_sunMapTilePic[i]);
 	}
 	// 129:097c
@@ -3169,7 +3160,6 @@ void FoolGame::sub_129_068() {
 	// 129:0d3c
 	// story text
 	var_i16_103c = puzzlesReadShort();
-	var_i16_68a = 1;
 	Common::fill(_pageLineFace, _pageLineFace + 1301, 0);
 	Common::fill(_pageLineBreak, _pageLineBreak + 1301, 0);
 	for (int i = 1; i <= var_i16_103c; i++) {
@@ -3407,19 +3397,8 @@ void FoolGame::metapuzzleComplete() {
 	_modalText[6] = Common::U32String("Okay");
 	showChoiceModal(kFontFool, 5, 1, false, true);
 
-	//if (!_screenOversized) {
-	//	_toolbox->ClearMenuBar();
-	//	_toolbox->DrawMenuBar();
-	//}
-	//sub_128_1f1e();
-	//toggleMouseCursor(true);
-
 	// 144:03e2
 	// write the finale file to the disk. we don't need to do this
-	//if (_saveFileName.empty()) {
-	//	sub_144_5ca();
-	//}
-	//sub_144_406();
 
 	// kick back to the start of the story
 	clearStateBits(kStateMetapuzzleComplete);
diff --git a/engines/fool/fool_game.h b/engines/fool/fool_game.h
index 0af5d775253..9fd5df90c44 100644
--- a/engines/fool/fool_game.h
+++ b/engines/fool/fool_game.h
@@ -137,7 +137,7 @@ public:
 	void openSaveFileDialog(const Common::U32String &title, const Common::U32String &filename); // sub_128_11c
 	void sub_128_1e4(const Common::String &osType);
 	void getGridFromMouse(int16 &gridX, int16 &gridY); // sub_128_2be
-	void sub_128_342(int16 unk2, int16 unk1);
+	void clampToGrid(int16 &gridX, int16 &gridY); // sub_128_342
 	void delay(int16 numTicks); // sub_128_3da
 	void delayFromMarker(int16 numTicks); // sub_128_406
 	int16 puzzlesReadByte(); // sub_128_428
@@ -287,8 +287,8 @@ public:
 	// fool_jigsaw.cpp
 	void jigsawRun(); // sub_132_004
 	void jigsawOnClick(); // sub_132_518
-	void jigsawDragSelect(); // sub_132_67a
-	void jigsawMoveSelected(); // sub_132_962
+	void jigsawDragSelect(int16 &gridX, int16 &gridY); // sub_132_67a
+	void jigsawMoveSelected(int16 &gridX, int16 &gridY); // sub_132_962
 	void jigsawCancelSelect(); // sub_132_e5a
 	void jigsawDropSelected(); // sub_132_ed8
 	void jigsawStoreState(); // sub_132_1384
@@ -383,12 +383,12 @@ public:
 	// fool_sun.cpp
 	void sunMapRun(); // sub_137_004
 	void sunMapOnClick(); // sub_137_3e2
-	void sunMapDragSelect(); // sub_137_598
-	void sunMapMoveSelected(); // sub_137_880
+	void sunMapDragSelect(int16 &gridX, int16 &gridY); // sub_137_598
+	void sunMapMoveSelected(int16 &gridX, int16 &gridY); // sub_137_880
 	void sunMapUndoMove(); // sub_137_d60
 	void sunMapDropSelected(); // sub_137_dde
 	void sunMapCheckIfSolved(); // sub_137_124e
-	void sunMapRevealPiece(); // sub_137_131a
+	void sunMapRevealPiece(int16 &gridX, int16 &gridY); // sub_137_131a
 
 	// fool_metapuzzle.cpp
 	void metapuzzleRun(); // sub_138_004
@@ -538,8 +538,7 @@ private:
 	Common::U32String var_str_588;
 	int16 var_i16_688;
 	Common::Point _jumbleGridPos; // var_i16_68a
-	int16 var_i16_68a;
-	int16 var_i16_68c;
+
 	uint32 var_i32_692;
 	// this is normally a raw pointer to some memory,
 	// instead we track it as a handle + offset
diff --git a/engines/fool/fool_jigsaw.cpp b/engines/fool/fool_jigsaw.cpp
index 26a5481c8e1..31ea5aec7e2 100644
--- a/engines/fool/fool_jigsaw.cpp
+++ b/engines/fool/fool_jigsaw.cpp
@@ -148,8 +148,10 @@ void FoolGame::jigsawRun() {
 
 void FoolGame::jigsawOnClick() {
 	// 132:0518
-	getGridFromMouse(var_i16_68a, var_i16_68c);
-	if ((var_i16_68a < 1) || ((var_i16_68a - (_gridInfo.xCount)) > 0) || (var_i16_68c < 1) || ((var_i16_68c - (_gridInfo.yCount)) > 0)) {
+	int16 gridX = 0;
+	int16 gridY = 0;
+	getGridFromMouse(gridX, gridY);
+	if ((gridX < 1) || ((gridX - (_gridInfo.xCount)) > 0) || (gridY < 1) || ((gridY - (_gridInfo.yCount)) > 0)) {
 		return;
 	}
 	// 132:059c
@@ -159,20 +161,20 @@ void FoolGame::jigsawOnClick() {
 	_toolbox->PenSize(3, 3);
 	_toolbox->PenMode(Graphics::MacToolbox::kPatXor);
 	// 132:05c4
-	arr_i16_4758[0] = var_i16_68a;
-	arr_i16_4758[1] = var_i16_68c;
+	arr_i16_4758[0] = gridX;
+	arr_i16_4758[1] = gridY;
 
 	// change select area while mouse button held down
-	jigsawDragSelect();
+	jigsawDragSelect(gridX, gridY);
 	// leave an XOR outline on the page for the selected block
 	Common::Rect temp(arr_i16_4758[12], arr_i16_4758[11], arr_i16_4758[14], arr_i16_4758[13]);
 	_toolbox->FrameRect(temp);
-	arr_i16_4758[0] -= var_i16_68a;
-	arr_i16_4758[1] -= var_i16_68c;
+	arr_i16_4758[0] -= gridX;
+	arr_i16_4758[1] -= gridY;
 
 	// 132:0642
 	// move select area to new target
-	jigsawMoveSelected();
+	jigsawMoveSelected(gridX, gridY);
 	// remove XOR outline
 	temp = Common::Rect(arr_i16_4758[12], arr_i16_4758[11], arr_i16_4758[14], arr_i16_4758[13]);
 	_toolbox->FrameRect(temp);
@@ -184,27 +186,27 @@ void FoolGame::jigsawOnClick() {
 	_menuDisabled = false;
 }
 
-void FoolGame::jigsawDragSelect() {
+void FoolGame::jigsawDragSelect(int16 &gridX, int16 &gridY) {
 	// 132:067a
 	// change select area while mouse button held down
 	do {
 		getNextEvent(4);
-		getGridFromMouse(var_i16_68a, var_i16_68c);
-		sub_128_342(var_i16_68a, var_i16_68c);
-		if (var_i16_68a >= arr_i16_4758[0]) {
+		getGridFromMouse(gridX, gridY);
+		clampToGrid(gridX, gridY);
+		if (gridX >= arr_i16_4758[0]) {
 			arr_i16_4758[2] = arr_i16_4758[0];
-			arr_i16_4758[3] = var_i16_68a;
+			arr_i16_4758[3] = gridX;
 		} else {
 			// 132:06fc
-			arr_i16_4758[2] = var_i16_68a;
+			arr_i16_4758[2] = gridX;
 			arr_i16_4758[3] = arr_i16_4758[0];
 		}
 		// 132:072c
-		if (var_i16_68c >= arr_i16_4758[1]) {
+		if (gridY >= arr_i16_4758[1]) {
 			arr_i16_4758[6] = arr_i16_4758[1];
-			arr_i16_4758[7] = var_i16_68c;
+			arr_i16_4758[7] = gridY;
 		} else {
-			arr_i16_4758[6] = var_i16_68c;
+			arr_i16_4758[6] = gridY;
 			arr_i16_4758[7] = arr_i16_4758[1];
 		}
 		// 132:07b0
@@ -222,29 +224,29 @@ void FoolGame::jigsawDragSelect() {
 	} while (_event.what != Graphics::MacToolbox::kMouseUp);
 }
 
-void FoolGame::jigsawMoveSelected() {
+void FoolGame::jigsawMoveSelected(int16 &gridX, int16 &gridY) {
 	// 132:0962
 	// move select area to new target
 	do {
 		getNextEvent(2);
-		getGridFromMouse(var_i16_68a, var_i16_68c);
-		sub_128_342(var_i16_68a, var_i16_68c);
+		getGridFromMouse(gridX, gridY);
+		clampToGrid(gridX, gridY);
 		if (arr_i16_4758[0] >= 0) {
-			arr_i16_4758[4] = var_i16_68a;
-			arr_i16_4758[5] = var_i16_68a + arr_i16_4758[0];
+			arr_i16_4758[4] = gridX;
+			arr_i16_4758[5] = gridX + arr_i16_4758[0];
 		} else {
 		// 132:09e2
-			arr_i16_4758[4] = var_i16_68a + arr_i16_4758[0];
-			arr_i16_4758[5] = var_i16_68a;
+			arr_i16_4758[4] = gridX + arr_i16_4758[0];
+			arr_i16_4758[5] = gridX;
 		}
 		// 132:0a1e
 		if (arr_i16_4758[1] >= 0) {
-			arr_i16_4758[8] = var_i16_68c;
-			arr_i16_4758[9] = var_i16_68c + arr_i16_4758[1];
+			arr_i16_4758[8] = gridY;
+			arr_i16_4758[9] = gridY + arr_i16_4758[1];
 		} else {
 			// 132:0a70
-			arr_i16_4758[8] = var_i16_68c + arr_i16_4758[1];
-			arr_i16_4758[9] = var_i16_68c;
+			arr_i16_4758[8] = gridY + arr_i16_4758[1];
+			arr_i16_4758[9] = gridY;
 		}
 		// 132:0aac
 		if (arr_i16_4758[4] < 1) {
diff --git a/engines/fool/fool_maze.cpp b/engines/fool/fool_maze.cpp
index 4b1e1aabb17..ecbe3e39bd6 100644
--- a/engines/fool/fool_maze.cpp
+++ b/engines/fool/fool_maze.cpp
@@ -95,7 +95,6 @@ void FoolGame::mazeRun() {
 	// 136:042c
 	var_i16_1ac4 = arr_i16_1eb8[17];
 	var_i16_1574 = 0;
-	var_i16_68c = 1;
 	for (int16 j = 1; j <= _gridInfo.yCount; j++) {
 		for (int16 i = 1; i <= _gridInfo.xCount; i++) {
 			var_i16_1574++;
@@ -185,21 +184,23 @@ void FoolGame::mazeRun() {
 
 void FoolGame::mazeOnClick() {
 	// 136:079e
-	getGridFromMouse(var_i16_68a, var_i16_68c);
-	if ((var_i16_68a == _mazePlayerX) && (var_i16_68c == _mazePlayerY)) {
+	int16 gridX = 0;
+	int16 gridY = 0;
+	getGridFromMouse(gridX, gridY);
+	if ((gridX == _mazePlayerX) && (gridY == _mazePlayerY)) {
 		return;
 	}
 	// 136:07e2
-	if (_mazePlayerY > var_i16_68c) {
+	if (_mazePlayerY > gridY) {
 		_mazePlayerDirection = 2;
 	}
-	if (_mazePlayerX > var_i16_68a) {
+	if (_mazePlayerX > gridX) {
 		_mazePlayerDirection = 1;
 	}
-	if (_mazePlayerY < var_i16_68c) {
+	if (_mazePlayerY < gridY) {
 		_mazePlayerDirection = 4;
 	}
-	if (_mazePlayerX < var_i16_68a) {
+	if (_mazePlayerX < gridX) {
 		_mazePlayerDirection = 3;
 	}
 	if (var_i16_1bd4 != _mazePlayerDirection) {
@@ -546,14 +547,14 @@ void FoolGame::mazeWanderingWinds() {
 	}
 	// 136:0ffc
 	if (_zbasic->leftStr(var_str_1ce2, 1) == _zbasic->strRaw(OFF(9))) { // A
-		var_i16_68a = _zbasic->decodeInt(_zbasic->midStr(var_str_1ce2, 2, 2));
-		var_i16_68c = _zbasic->decodeInt(_zbasic->midStr(var_str_1ce2, 4, 2));
+		int16 gridX = _zbasic->decodeInt(_zbasic->midStr(var_str_1ce2, 2, 2));
+		int16 gridY = _zbasic->decodeInt(_zbasic->midStr(var_str_1ce2, 4, 2));
 		var_i16_1a96 = _zbasic->decodeInt(_zbasic->midStr(var_str_1ce2, 6, 2));
 		var_i16_1a98 = _zbasic->decodeInt(_zbasic->midStr(var_str_1ce2, 8, 2));
-		var_i16_68a += _zbasic->rndInt(var_i16_1a96 + 1) - 1;
-		var_i16_68c += _zbasic->rndInt(var_i16_1a98 + 1) - 1;
+		gridX += _zbasic->rndInt(var_i16_1a96 + 1) - 1;
+		gridY += _zbasic->rndInt(var_i16_1a98 + 1) - 1;
 		// 136:10bc
-		var_i16_1de8 = arr_i16_2f38[var_i16_68a*32 + var_i16_68c];
+		var_i16_1de8 = arr_i16_2f38[gridX*32 + gridY];
 		mazeLoadTone(0xa);
 	}
 	// 136:10ea
diff --git a/engines/fool/fool_metapuzzle.cpp b/engines/fool/fool_metapuzzle.cpp
index 9b6a2d7f40a..371c152b6f2 100644
--- a/engines/fool/fool_metapuzzle.cpp
+++ b/engines/fool/fool_metapuzzle.cpp
@@ -43,11 +43,11 @@ void FoolGame::metapuzzleRun() {
 		fillRect(0x127, 0x69, 0x138, 0x190, 0);
 		fillRect(1, Graphics::MacToolbox::kPatOr, 0x14, 0, SCREEN_HEIGHT, SCREEN_WIDTH);
 		fillRect(0x14, 0x67, SCREEN_HEIGHT, 0x1b1, 2);
-		var_i16_484 = 0;
+		int16 picIndex = 0;
 		for (int16 j = 0x1a; j <= 0x132; j += 0x23) {
 			for (int16 i = 0x6e; i <= 0x186; i += 0x23) {
-				var_i16_484++;
-				_zbasic->picture(i, j, _sunMapTilePic[var_i16_484]);
+				picIndex++;
+				_zbasic->picture(i, j, _sunMapTilePic[picIndex]);
 			}
 		}
 	}
@@ -186,11 +186,11 @@ void FoolGame::metapuzzleSetupMenu() {
 	_zbasic->menu(8, 0, 1, _zbasic->str(OFF(0))); // the sun's map
 	_zbasic->menu(8, 1, 1, _zbasic->str(OFF(1))); // return to scroll
 	_zbasic->menu(8, 2, 0, _zbasic->str(OFF(2))); // -
-	var_i16_484 = 2;
+	int16 menuIndex = 2;
 	for (int16 i = _puzzleMenuInstructions[0x30]; i <= _puzzleMenuInstructions[0x30+1]; i++) {
-		var_i16_484++;
+		menuIndex++;
 		var_str_384 = _zbasic->index(0, i) + _zbasic->str(OFF(3)); // '  '
-		_zbasic->menu(8, var_i16_484, 1, var_str_384);
+		_zbasic->menu(8, menuIndex, 1, var_str_384);
 	}
 }
 
@@ -208,8 +208,8 @@ void FoolGame::metapuzzleSecretCode() {
 	// 138:0550
 	var_i16_c00 = 1;
 	for (int16 i = 1; i <= 2; i++) {
-		var_i16_68c = _activePuzzle - 0x50;
-		zoomRect(arr_i16_4d20[var_i16_68c*4], arr_i16_4d20[var_i16_68c*4+1], arr_i16_4d20[var_i16_68c*4+2], arr_i16_4d20[var_i16_68c*4+3], 0x122, 0, SCREEN_HEIGHT, SCREEN_WIDTH, 1, Graphics::MacToolbox::kPatXor, 0x1a);
+		int16 index = _activePuzzle - 0x50;
+		zoomRect(arr_i16_4d20[index*4], arr_i16_4d20[index*4+1], arr_i16_4d20[index*4+2], arr_i16_4d20[index*4+3], 0x122, 0, SCREEN_HEIGHT, SCREEN_WIDTH, 1, Graphics::MacToolbox::kPatXor, 0x1a);
 	}
 	if (_activePuzzle == 0x58) {
 		_metapuzzleSecretGoal = _zbasic->str(OFF(4)); // treasure name
@@ -251,7 +251,6 @@ void FoolGame::metapuzzleSecretCode() {
 		// 138:0778
 		_metapuzzleSecretBuffer = _activePuzzleBuffer.decode(Common::kMacRoman);
 		_metapuzzleSecretCodeCount = 0;
-		var_i16_68a = 1;
 		for (int16 i = 1; i <= (int16)_metapuzzleSecretBuffer.size(); i++) {
 			if (_zbasic->midStr(_metapuzzleSecretBuffer, i, 1) != _zbasic->str(OFF(12))) { // ' '
 				_metapuzzleSecretCodeCount++;
@@ -389,9 +388,9 @@ void FoolGame::metapuzzleOnShift() {
 		getNextEvent(-1); // was: 0
 		if ((_event.where.x >= 0x6e) && (_event.where.y >= 0x1a) && (_event.where.x <= 0x1a8) && (_event.where.y <= SCREEN_HEIGHT)) {
 			// 138:0c04
-			var_i16_68a = (_event.where.x - 0x6e)/0x23;
-			var_i16_68c = (_event.where.y - 0x1a)/0x23;
-			var_i16_1888 = var_i16_68c * 9 + var_i16_68a + 1;
+			int16 gridX = MIN(MAX((_event.where.x - 0x6e)/0x23, 0), 8);
+			int16 gridY = MIN(MAX((_event.where.y - 0x1a)/0x23, 0), 8);
+			var_i16_1888 = gridY * 9 + gridX + 1;
 			_selectedMenuChapter = arr_i16_4c7c[var_i16_1888];
 			if (var_i16_200e != _selectedMenuChapter) {
 				if (var_i16_200e > 0) {
@@ -403,10 +402,10 @@ void FoolGame::metapuzzleOnShift() {
 					_toolbox->InvertRect(temp);
 				}
 				// 138:0c8c
-				arr_i16_1eb8[0] = 0x1a + var_i16_68c * 0x23;
-				arr_i16_1eb8[1] = 0x6e + var_i16_68a * 0x23;
-				arr_i16_1eb8[2] = 0x3d + var_i16_68c * 0x23;
-				arr_i16_1eb8[3] = 0x91 + var_i16_68a * 0x23;
+				arr_i16_1eb8[0] = 0x1a + gridY * 0x23;
+				arr_i16_1eb8[1] = 0x6e + gridX * 0x23;
+				arr_i16_1eb8[2] = 0x3d + gridY * 0x23;
+				arr_i16_1eb8[3] = 0x91 + gridX * 0x23;
 				Common::Rect temp;
 				temp.top = arr_i16_1eb8[0];
 				temp.left = arr_i16_1eb8[1];
diff --git a/engines/fool/fool_polyomino.cpp b/engines/fool/fool_polyomino.cpp
index 3ea815816be..f2594bf1810 100644
--- a/engines/fool/fool_polyomino.cpp
+++ b/engines/fool/fool_polyomino.cpp
@@ -214,11 +214,11 @@ void FoolGame::polyominoRun() {
 	}
 	// 133:06b4
 	_toolbox->SetPort(var_i32_0);
-	var_i16_484 = 0;
+	int16 index = 0;
 	for (int j = arr_i16_1eb8[0x16]; j <= arr_i16_1eb8[0x17]; j++) {
 		for (int i = arr_i16_1eb8[0x18]; i <= arr_i16_1eb8[0x19]; i++) {
-			var_i16_484++;
-			arr_i16_4338[var_i16_484] = puzzlesReadByte();
+			index++;
+			arr_i16_4338[index] = puzzlesReadByte();
 		}
 	}
 	// 133:073c
@@ -268,24 +268,26 @@ void FoolGame::polyominoRun() {
 
 void FoolGame::polyominoOnClick() {
 	// 133:087c
-	getGridFromMouse(var_i16_68a, var_i16_68c);
-	debug(5, "FoolGame::polyominoOnClick: grid pos: (%d, %d)", var_i16_68a, var_i16_68c);
-	if ((var_i16_68a < 1) || (var_i16_68a > _gridInfo.xCount) || (var_i16_68c < 1) || (var_i16_68c > _gridInfo.yCount)) {
+	int16 gridX = 0;
+	int16 gridY = 0;
+	getGridFromMouse(gridX, gridY);
+	debug(5, "FoolGame::polyominoOnClick: grid pos: (%d, %d)", gridX, gridY);
+	if ((gridX < 1) || (gridX > _gridInfo.xCount) || (gridY < 1) || (gridY > _gridInfo.yCount)) {
 		waitForMouseUp();
 		return;
 	}
 	// 133:0904
 	// get polyomino from collision map
-	var_i16_7cc = arr_i16_2f38[var_i16_68a*32 + var_i16_68c];
+	var_i16_7cc = arr_i16_2f38[gridX*32 + gridY];
 	debug(5, "FoolGame::polyominoOnClick: selected polyomino: %d", var_i16_7cc);
 	// if no polyomino, ignore
-	if (arr_i16_2f38[var_i16_68a*32 + var_i16_68c] == 0) {
+	if (arr_i16_2f38[gridX*32 + gridY] == 0) {
 		waitForMouseUp();
 		return;
 	}
 	// 133:0950
 	// if polyomino is part of the fixed list, act as if it were an invalid move
-	if (arr_i16_2f38[var_i16_68a*32 + var_i16_68c] <= arr_i16_1eb8[0x11]) {
+	if (arr_i16_2f38[gridX*32 + gridY] <= arr_i16_1eb8[0x11]) {
 		polyominoOnClickFixed();
 		return;
 	}
@@ -307,8 +309,8 @@ void FoolGame::polyominoOnClick() {
 		}
 	}
 	// 133:0a60
-	var_i16_1ab2 = polyGridPosX - var_i16_68a;
-	var_i16_1ab4 = polyGridPosY - var_i16_68c;
+	var_i16_1ab2 = polyGridPosX - gridX;
+	var_i16_1ab4 = polyGridPosY - gridY;
 	_polyominoPosX = _screenGrid[arr_i16_3b38[polyGridPosX*32 + polyGridPosY]].left;
 	_polyominoPosY = _screenGrid[arr_i16_3b38[polyGridPosX*32 + polyGridPosY]].top;
 	debug(5, "FoolGame::polyominoOnClick: Unblit solid and blit ghost (%d, %d)", _polyominoPosX, _polyominoPosY);
@@ -328,28 +330,28 @@ void FoolGame::polyominoOnClick() {
 			// 133:0b62
 			getNextEvent(4);
 
-			var_i16_68a = var_i16_1ab2 + ((_event.where.x - _gridInfo.xOrigin) / _gridInfo.xOuterSpan);
-			var_i16_68c = var_i16_1ab4 + ((_event.where.y - _gridInfo.yOrigin) / _gridInfo.yOuterSpan);
+			gridX = var_i16_1ab2 + ((_event.where.x - _gridInfo.xOrigin) / _gridInfo.xOuterSpan);
+			gridY = var_i16_1ab4 + ((_event.where.y - _gridInfo.yOrigin) / _gridInfo.yOuterSpan);
 
-			if (var_i16_68a < 1) {
-				var_i16_68a = 1;
+			if (gridX < 1) {
+				gridX = 1;
 			}
 			// 133:0bf8
-			if (var_i16_68a > (0x12 - arr_i16_47d8[var_i16_7cc*8 + 1])) {
-				var_i16_68a = 0x12 - arr_i16_47d8[var_i16_7cc*8 + 1];
+			if (gridX > (0x12 - arr_i16_47d8[var_i16_7cc*8 + 1])) {
+				gridX = 0x12 - arr_i16_47d8[var_i16_7cc*8 + 1];
 			}
 			// 133:0c58
-			if (var_i16_68c < 1) {
-				var_i16_68c = 1;
+			if (gridY < 1) {
+				gridY = 1;
 			}
 			// 133:0c68
-			if (var_i16_68c > (0xb - arr_i16_47d8[var_i16_7cc*8 + 2])) {
-				var_i16_68c = 0xb - arr_i16_47d8[var_i16_7cc*8 + 2];
+			if (gridY > (0xb - arr_i16_47d8[var_i16_7cc*8 + 2])) {
+				gridY = 0xb - arr_i16_47d8[var_i16_7cc*8 + 2];
 			}
 			// 133:0cc8
-			var_i16_1ab6 = _screenGrid[arr_i16_3b38[var_i16_68a*32 + var_i16_68c]].left;
-			var_i16_1ab8 = _screenGrid[arr_i16_3b38[var_i16_68a*32 + var_i16_68c]].top;
-			//debug(5, "FoolGame::polyominoOnClick: Move to (%d, %d) -> (%d, %d)", var_i16_68a, var_i16_68c, var_i16_1ab6, var_i16_1ab8);
+			var_i16_1ab6 = _screenGrid[arr_i16_3b38[gridX*32 + gridY]].left;
+			var_i16_1ab8 = _screenGrid[arr_i16_3b38[gridX*32 + gridY]].top;
+			//debug(5, "FoolGame::polyominoOnClick: Move to (%d, %d) -> (%d, %d)", gridX, gridY, var_i16_1ab6, var_i16_1ab8);
 
 		}
 		// 133:0d78
@@ -371,8 +373,8 @@ void FoolGame::polyominoOnClick() {
 	var_i16_106a = 0;
 	var_i16_1a9c = 0;
 	// store polyomino as bitfield.
-	for (int j = var_i16_68c; j <= var_i16_68c + 3; j++) {
-		for (int i = var_i16_68a; i <= var_i16_68a + 3; i++) {
+	for (int j = gridY; j <= gridY + 3; j++) {
+		for (int i = gridX; i <= gridX + 3; i++) {
 			if (arr_i16_2f38[i*32 + j] > 0) {
 				var_i16_1a9c |= _bitLUT[var_i16_106a];
 			}
@@ -385,7 +387,7 @@ void FoolGame::polyominoOnClick() {
 	if ((var_i16_1a9c & arr_i16_47d8[var_i16_7cc*8]) != 0) {
 		polyominoCancelMove();
 	} else {
-		polyominoMove(var_i16_68a, var_i16_68c);
+		polyominoMove(gridX, gridY);
 	}
 	// 133:0ea2
 	polyominoDrawFrame();
diff --git a/engines/fool/fool_prologue.cpp b/engines/fool/fool_prologue.cpp
index de71fb279cd..3ab214715a2 100644
--- a/engines/fool/fool_prologue.cpp
+++ b/engines/fool/fool_prologue.cpp
@@ -94,7 +94,6 @@ void FoolPrologue::setup(bool finale, const BitMap &prevWindow) {
 		_cardSlices[i]->create(SCREEN_WIDTH, SCREEN_HEIGHT, Graphics::PixelFormat::createFormatCLUT8());
 	}
 	for (int i = 0; i < 12; i++) {
-		//_screenPages[i] = &arr_i32_b54[SCREEN_PAGE_SIZE*i];
 		_screenPages[i] = BitMap(new Graphics::ManagedSurface());
 		_screenPages[i]->create(SCREEN_WIDTH, SCREEN_HEIGHT, Graphics::PixelFormat::createFormatCLUT8());
 	}
@@ -115,9 +114,6 @@ void FoolPrologue::setup(bool finale, const BitMap &prevWindow) {
 	_patterns[4] = { { 0x88, 0x00, 0x22, 0x00, 0x88, 0x00, 0x22, 0x00 } };
 
 	// 128:017a
-	//var_str_76 = _zbasic->str(0);
-	//var_str_76 = _zbasic->str(1);
-	//var_str_76 = _zbasic->str(2);
 
 	// fill graphics pages with white
 	for (int16 i = 0; i < 12; i++) {
@@ -502,29 +498,6 @@ void FoolPrologue::onDiskEvent() {
 	//_zbasic->unk11(var_i16_1be);
 }
 
-
-// Sources:
-// QuickDraw types, Inside Macintosh I-201
-// QuickDraw global list, Inside Macintosh I-162
-// Memory organization: Inside Macintosh II-19
-
-// QuickDraw globals; offset below the A5 address.
-// GrafPtr thePort = 0x00
-// Pattern white = 0x04
-// Pattern black = 0x0c
-// Pattern gray = 0x14
-// Pattern ltGray = 0x1c
-// Pattern dkGray = 0x24
-// Arrow cursor = 0x2c
-// - Bits16 cursor.data = 0x2c
-// - Bits16 cursor.mask = 0x4c
-// - Point cursor.hotSpot = 0x6c
-// BitMap screenBits = 0x70
-// - Ptr screenBits.baseAddr = 0x70
-// - INTEGER screenBits.rowBytes = 0x74
-// - Rect screenBits.bounds = 0x76
-// LONGINT randSeed = 0x7e
-
 void FoolPrologue::setupWindow() {
 	// 129:0004
 	// get the screen width and height from QuickDraw
@@ -625,53 +598,15 @@ void FoolPrologue::setupWindow() {
 
 	} else {
 		// 129:04a0
-		// this next blob of code is for determining whether to
+		// originally there was code for determining whether to
 		// open the prologue or the finale.
 		// both are in the same EXE, however the finale is accessed
 		// by opening a file with the right associated application code
 		// that contains the words "And now it's time to show the finale of the Fool's Errand" and a sequence of numbers.
+
 		// we don't need to worry about files as we add a start trigger
 		// in the game's menu.
-		/*
-		//var_i16_180 = 1;
-		_mode = 1;
-		// 180 == number, possibly file number
-		// 1c4 == string
-		// 2c4 == unused
-		// 2c8 == volume number?
-		var_i16_176 = _zbasic->finderInfo(var_i16_180, var_i16_1c4, _tickMarkerc4, var_i16_2c8);
-		if (Common::U32String("") != var_i16_1c4) {
-			// 129:04de
-			// "and now it is time to show the finale" message
-			var_str_76 = _zbasic->str(12);
-
-			for (int i = 1; i <= 0xa; i++) {
-				var_str_76 += _zbasic->chr(i);
-			}
 
-			// 129:0522
-			var_i16_2ca = var_str_76.size();
-			var_i16_2cc = 0;
-			// 129:0534
-			// what is this???
-			// 0x0534: LEA - [0x0764],A0
-			// 0x0538: MOVE.L - A0,-0x8ee(A5)
-			// 0x053c: SF - 0x8,D0
-			_zbasic->openR(1, var_i16_1c4, 0x400, var_i16_2c8);
-
-			Handle payload = _zbasic->readFile(1, var_i16_2ca);
-			var_i16_2ce = Common::U32String((char *)payload->data(), var_i16_2ca, Common::kMacRoman);
-			_zbasic->close(1);
-			// 0x0570: CLR.L - -0x8ee(A5)
-			// 129:0582
-			if ((var_i16_2ce == var_str_76) &&
-				var_i16_2cc == 0) {
-				_mode = 2;
-			} else {
-				_mode = 0;
-			}
-		}
-		*/
 		// 129:05a6
 		if (testColour.red + testColour.blue + testColour.green != 0) {
 			_toolbox->InitCursor();
@@ -717,7 +652,6 @@ void FoolPrologue::prologueRun() {
 	_prologueLoading = 5;
 	_prologuePicIndex = 0;
 	prologueDrawLoadingMsg();
-	//var_i16_18e = SCREEN_HEIGHT;
 	// fill a buffer with random screen y-positions, to use for the scanline transition
 	shuffleScanlines();
 
@@ -1132,9 +1066,6 @@ void FoolPrologue::prologueRun() {
 
 	zoomClose(1, Graphics::MacToolbox::kPatCopy);
 	// 130:0ce6
-	// JMP 1002
-	// _zbasic->pushOldCodeResource(0x82);
-	//finaleRun();
 }
 
 void FoolPrologue::prologueBufferNextPicture() {
diff --git a/engines/fool/fool_reveal.cpp b/engines/fool/fool_reveal.cpp
index 66cd2f6ba66..233a42de496 100644
--- a/engines/fool/fool_reveal.cpp
+++ b/engines/fool/fool_reveal.cpp
@@ -55,12 +55,12 @@ void FoolGame::revealRun() {
 		_revealPoly[i] = _toolbox->OpenPoly();
 		// 134:010e
 		for (int j = 5; j <= var_i16_103a - 1; j += 2) {
-			var_i16_484 = puzzlesReadShort();
-			var_i16_7e4 = puzzlesReadShort();
+			int16 posY  = puzzlesReadShort();
+			int16 posX = puzzlesReadShort();
 			if (j == 5) {
-				_toolbox->MoveTo(var_i16_7e4, var_i16_484 + 0xf);
+				_toolbox->MoveTo(posX, posY + 0xf);
 			} else {
-				_toolbox->LineTo(var_i16_7e4, var_i16_484 + 0xf);
+				_toolbox->LineTo(posX, posY + 0xf);
 			}
 			// 134:015c
 		}
diff --git a/engines/fool/fool_sun.cpp b/engines/fool/fool_sun.cpp
index c4796aae6a8..db2f8722be8 100644
--- a/engines/fool/fool_sun.cpp
+++ b/engines/fool/fool_sun.cpp
@@ -104,7 +104,6 @@ void FoolGame::sunMapRun() {
 		return;
 	}
 	// JMP 0x1618
-	var_i16_68c = 0;
 	for (int j = 0; j <= 5; j++) {
 		for (int i = 1; i <= 0x51; i++) {
 			_toolbox->InvertRect(_screenGrid[i]);
@@ -127,9 +126,11 @@ void FoolGame::sunMapRun() {
 
 void FoolGame::sunMapOnClick() {
 	// 137:03e2
-	getGridFromMouse(var_i16_68a, var_i16_68c);
-	if ((var_i16_68a < 1) || (var_i16_68a > _gridInfo.xCount) ||
-		(var_i16_68c < 1) || (var_i16_68c > _gridInfo.yCount)) {
+	int16 gridX = 0;
+	int16 gridY = 0;
+	getGridFromMouse(gridX, gridY);
+	if ((gridX < 1) || (gridX > _gridInfo.xCount) ||
+		(gridY < 1) || (gridY > _gridInfo.yCount)) {
 		return;
 	}
 	// 137:0466
@@ -138,18 +139,18 @@ void FoolGame::sunMapOnClick() {
 	_toolbox->PenNormal();
 	_toolbox->PenSize(3, 3);
 	_toolbox->PenMode(Graphics::MacToolbox::kPatXor);
-	arr_i16_4758[0] = var_i16_68a;
-	arr_i16_4758[1] = var_i16_68c;
-	if (_puzzleFlags[_sunMapTileID[arr_i16_2f38[var_i16_68a*32 + var_i16_68c]]] & kFlagMapTile) {
-		sunMapRevealPiece();
+	arr_i16_4758[0] = gridX;
+	arr_i16_4758[1] = gridY;
+	if (_puzzleFlags[_sunMapTileID[arr_i16_2f38[gridX*32 + gridY]]] & kFlagMapTile) {
+		sunMapRevealPiece(gridX, gridY);
 		return;
 	}
-	sunMapDragSelect();
+	sunMapDragSelect(gridX, gridY);
 	// 137:0506
 	_toolbox->FrameRect(Common::Rect(arr_i16_4758[12], arr_i16_4758[11], arr_i16_4758[14], arr_i16_4758[13]));
-	arr_i16_4758[0] -= var_i16_68a;
-	arr_i16_4758[1] -= var_i16_68c;
-	sunMapMoveSelected();
+	arr_i16_4758[0] -= gridX;
+	arr_i16_4758[1] -= gridY;
+	sunMapMoveSelected(gridX, gridY);
 	_toolbox->FrameRect(Common::Rect(arr_i16_4758[12], arr_i16_4758[11], arr_i16_4758[14], arr_i16_4758[13]));
 	sunMapDropSelected();
 	sunMapCheckIfSolved();
@@ -158,27 +159,27 @@ void FoolGame::sunMapOnClick() {
 	_menuDisabled = false;
 }
 
-void FoolGame::sunMapDragSelect() {
+void FoolGame::sunMapDragSelect(int16 &gridX, int16 &gridY) {
 	// 137:0598
 	do {
 		getNextEvent(4);
-		getGridFromMouse(var_i16_68a, var_i16_68c);
-		sub_128_342(var_i16_68a, var_i16_68c);
-		if (var_i16_68a >= arr_i16_4758[0]) {
+		getGridFromMouse(gridX, gridY);
+		clampToGrid(gridX, gridY);
+		if (gridX >= arr_i16_4758[0]) {
 			arr_i16_4758[2] = arr_i16_4758[0];
-			arr_i16_4758[3] = var_i16_68a;
+			arr_i16_4758[3] = gridX;
 		} else {
 		// 137:061a
-			arr_i16_4758[2] = var_i16_68a;
+			arr_i16_4758[2] = gridX;
 			arr_i16_4758[3] = arr_i16_4758[0];
 		}
 		// 137:064a
-		if (var_i16_68c >= arr_i16_4758[1]) {
+		if (gridY >= arr_i16_4758[1]) {
 			arr_i16_4758[6] = arr_i16_4758[1];
-			arr_i16_4758[7] = var_i16_68c;
+			arr_i16_4758[7] = gridY;
 		} else {
 			// 137:069e
-			arr_i16_4758[6] = var_i16_68c;
+			arr_i16_4758[6] = gridY;
 			arr_i16_4758[7] = arr_i16_4758[1];
 		}
 		// 137:06ce
@@ -195,28 +196,28 @@ void FoolGame::sunMapDragSelect() {
 	// 137:087e
 }
 
-void FoolGame::sunMapMoveSelected() {
+void FoolGame::sunMapMoveSelected(int16 &gridX, int16 &gridY) {
 	// 137:0880
 	do {
 		getNextEvent(2);
-		getGridFromMouse(var_i16_68a, var_i16_68c);
-		sub_128_342(var_i16_68a, var_i16_68c);
+		getGridFromMouse(gridX, gridY);
+		clampToGrid(gridX, gridY);
 		if (arr_i16_4758[0] >= 0) {
-			arr_i16_4758[4] = var_i16_68a;
-			arr_i16_4758[5] = var_i16_68a + arr_i16_4758[0];
+			arr_i16_4758[4] = gridX;
+			arr_i16_4758[5] = gridX + arr_i16_4758[0];
 		} else {
 			// 137:0900
-			arr_i16_4758[4] = var_i16_68a + arr_i16_4758[0];
-			arr_i16_4758[5] = var_i16_68a;
+			arr_i16_4758[4] = gridX + arr_i16_4758[0];
+			arr_i16_4758[5] = gridX;
 		}
 		// 137:093c
 		if (arr_i16_4758[1] >= 0) {
-			arr_i16_4758[8] = var_i16_68c;
-			arr_i16_4758[9] = var_i16_68c + arr_i16_4758[1];
+			arr_i16_4758[8] = gridY;
+			arr_i16_4758[9] = gridY + arr_i16_4758[1];
 		} else {
 			// 137:098e
-			arr_i16_4758[8] = var_i16_68c + arr_i16_4758[1];
-			arr_i16_4758[9] = var_i16_68c;
+			arr_i16_4758[8] = gridY + arr_i16_4758[1];
+			arr_i16_4758[9] = gridY;
 		}
 		// 137:09ca
 		if (arr_i16_4758[4] < 1) {
@@ -337,16 +338,16 @@ void FoolGame::sunMapCheckIfSolved() {
 	}
 }
 
-void FoolGame::sunMapRevealPiece() {
+void FoolGame::sunMapRevealPiece(int16 &gridX, int16 &gridY) {
 	// 137:131a
-	_puzzleFlags[_sunMapTileID[arr_i16_2f38[var_i16_68a*32 + var_i16_68c]]] ^= kFlagMapTile;
-	arr_i32_192c0[_sunMapTileID[arr_i16_2f38[var_i16_68a*32 + var_i16_68c]]] = _sunMapTilePic[_sunMapTileID[arr_i16_2f38[var_i16_68a*32 + var_i16_68c]]];
+	_puzzleFlags[_sunMapTileID[arr_i16_2f38[gridX*32 + gridY]]] ^= kFlagMapTile;
+	arr_i32_192c0[_sunMapTileID[arr_i16_2f38[gridX*32 + gridY]]] = _sunMapTilePic[_sunMapTileID[arr_i16_2f38[gridX*32 + gridY]]];
 	// 137:142c
 	// unrolled loop
-	arr_i16_4758[0] = _screenGrid[arr_i16_2f38[var_i16_68a*32 + var_i16_68c]].top;
-	arr_i16_4758[1] = _screenGrid[arr_i16_2f38[var_i16_68a*32 + var_i16_68c]].left;
-	arr_i16_4758[2] = _screenGrid[arr_i16_2f38[var_i16_68a*32 + var_i16_68c]].bottom;
-	arr_i16_4758[3] = _screenGrid[arr_i16_2f38[var_i16_68a*32 + var_i16_68c]].right;
+	arr_i16_4758[0] = _screenGrid[arr_i16_2f38[gridX*32 + gridY]].top;
+	arr_i16_4758[1] = _screenGrid[arr_i16_2f38[gridX*32 + gridY]].left;
+	arr_i16_4758[2] = _screenGrid[arr_i16_2f38[gridX*32 + gridY]].bottom;
+	arr_i16_4758[3] = _screenGrid[arr_i16_2f38[gridX*32 + gridY]].right;
 	// 137:1490
 	for (int16 i = 0; i <= 0xf; i++) {
 		arr_i16_4758[0] += i;
@@ -363,9 +364,9 @@ void FoolGame::sunMapRevealPiece() {
 	}
 	// 137:1550
 	_zbasic->picture(
-		_screenGrid[arr_i16_2f38[var_i16_68a*32 + var_i16_68c]].left,
-		_screenGrid[arr_i16_2f38[var_i16_68a*32 + var_i16_68c]].top,
-		arr_i32_192c0[_sunMapTileID[arr_i16_2f38[var_i16_68a*32+var_i16_68c]]]
+		_screenGrid[arr_i16_2f38[gridX*32 + gridY]].left,
+		_screenGrid[arr_i16_2f38[gridX*32 + gridY]].top,
+		arr_i32_192c0[_sunMapTileID[arr_i16_2f38[gridX*32+gridY]]]
 	);
 	waitForMouseUp();
 	sunMapCheckIfSolved();
diff --git a/engines/fool/fool_thoth.cpp b/engines/fool/fool_thoth.cpp
index 91f313745fd..a65bdd7df12 100644
--- a/engines/fool/fool_thoth.cpp
+++ b/engines/fool/fool_thoth.cpp
@@ -130,7 +130,6 @@ void FoolGame::highPriestessRun() {
 		sub_128_1ef8();
 	}
 	// 140:02b4
-	var_i16_68a = 1;
 	for (int16 i = 1; i <= 0x155; i++) {
 		_zbasic->get(1, i, SCREEN_WIDTH, i + 1, arr_bmp_fa3c);
 		_zbasic->put(_zbasic->rndInt(0x14) - 0xa, i, arr_bmp_fa3c, Graphics::MacToolbox::kSrcCopy);
@@ -149,17 +148,17 @@ void FoolGame::highPriestessRun() {
 			delayFromMarker(1);
 		}
 		// 140:037e
-		var_i16_484 = 0x96;
+		int16 shifter = 0x96;
 
 		for (int16 i = 0x37; i <= 0x122; i++) {
 			if (i < 0x69) {
-				var_i16_484 -= 3;
+				shifter -= 3;
 			}
 			if (i > 0xf0) {
-				var_i16_484 += 3;
+				shifter += 3;
 			}
-			_toolbox->MoveTo(var_i16_484 + 0x5f - _zbasic->rndInt(0x32), i);
-			_toolbox->LineTo(0x1a1 - var_i16_484 + _zbasic->rndInt(0x32), i);
+			_toolbox->MoveTo(shifter + 0x5f - _zbasic->rndInt(0x32), i);
+			_toolbox->LineTo(0x1a1 - shifter + _zbasic->rndInt(0x32), i);
 			if (i % 2 == 0) {
 				_toolbox->Delay(0);
 			}
@@ -355,13 +354,13 @@ void FoolGame::sub_140_c4c() {
 			_activePuzzleSolved = true;
 			return;
 		}
-		var_i16_484 = arr_i16_1eb8[0] + 1;
-		_toolbox->FillRoundRect(_screenGrid[var_i16_484], 0x14, 0x14, _patterns[2]);
+		int16 gridIndex = arr_i16_1eb8[0] + 1;
+		_toolbox->FillRoundRect(_screenGrid[gridIndex], 0x14, 0x14, _patterns[2]);
 		zoomRect(
-			_screenGrid[var_i16_484].top,
-			_screenGrid[var_i16_484].left,
-			_screenGrid[var_i16_484].bottom,
-			_screenGrid[var_i16_484].right,
+			_screenGrid[gridIndex].top,
+			_screenGrid[gridIndex].left,
+			_screenGrid[gridIndex].bottom,
+			_screenGrid[gridIndex].right,
 			0x14, 0, SCREEN_HEIGHT, SCREEN_WIDTH, 2, Graphics::MacToolbox::kPatXor, 0xd
 		);
 		arr_i16_1eb8[1] = 0;
@@ -897,6 +896,7 @@ void FoolGame::thothKeyLast() {
 	arr_i16_1eb8[1] = -1;
 	var_i16_1de6 = arr_i16_3b38[_hermitPathStage];
 	debugC(5, kDebugLoading, "thothKeyLast: 1de6: %d, target: %d", var_i16_1de6, (arr_i16_3b38[0x20 + _hermitPathStage] + 1));
+
 	// JMP 0x228c
 	while (((_stateFlags & kStateReturn) == 0) && !_activePuzzleSolved) {
 		// 140:20c2
@@ -908,14 +908,6 @@ void FoolGame::thothKeyLast() {
 					getNextEvent(-1);
 					_toolbox->FillRect(_screenGrid[arr_i16_3738[hermitPathStartIndex]], _patterns[var_i16_2338]);
 					hermitPathStartIndex++;
-					// we're updating the screen in the event handler, this has no effect
-					/*if (_hermitPathStage == 5) {
-						if (hermitPathStartIndex % 4 == 0)
-							_toolbox->Delay(0);
-					} else {
-						if (hermitPathStartIndex % 8 == 0)
-							_toolbox->Delay(0);
-					}*/
 				// 140:2168
 				} while (!((_event.what == 1) || (hermitPathStartIndex > hermitPathEndIndex) || ((_stateFlags & kStateReturn) != 0)));
 				// 140:219e
@@ -930,11 +922,11 @@ void FoolGame::thothKeyLast() {
 				copyScreen(1, arr_bmp_b3ec);
 			} else { // we're in the high priestess, show nothing but random filled squares
 				// 140:21fe
-				var_i16_484 = _zbasic->rndInt(0x4e) + 2;
-				var_i16_68a = _zbasic->rndInt(0x14) - 1;
-				var_i16_68c = _zbasic->rndInt(0xe) - 1;
+				int16 patternID = _zbasic->rndInt(0x4e) + 2;
+				int16 gridX = _zbasic->rndInt(0x14) - 1;
+				int16 gridY = _zbasic->rndInt(0xe) - 1;
 				// 140:2222
-				_toolbox->FillRect(_screenGrid[arr_i16_2f38[var_i16_68a*32 + var_i16_68c]], _patterns[var_i16_484]);
+				_toolbox->FillRect(_screenGrid[arr_i16_2f38[gridX*32 + gridY]], _patterns[patternID]);
 				getNextEvent(-1);
 			}
 			if (_event.what == 1) {
@@ -950,13 +942,15 @@ void FoolGame::thothKeyLast() {
 
 void FoolGame::thothKeyLastOnClick() {
 	// 140:22b8
+	int16 gridX = 0;
+	int16 gridY = 0;
 	while (((_event.modifiers & Graphics::MacToolbox::kModMouseButtonUp) == 0) && (var_i16_1de6 != (arr_i16_3b38[0x20 + _hermitPathStage] + 1))) {
 		// 140:22bc
 		getNextEvent(-1); // was: 0
-		getGridFromMouse(var_i16_68a, var_i16_68c);
-		if ((var_i16_68a >= 0) && (var_i16_68c >= 0) && (var_i16_68a <= 0x13) && (var_i16_68c <= 0xd)) {
+		getGridFromMouse(gridX, gridY);
+		if ((gridX >= 0) && (gridY >= 0) && (gridX <= 0x13) && (gridY <= 0xd)) {
 			// 140:2316
-			arr_i16_1eb8[0] = arr_i16_2f38[var_i16_68a*32 + var_i16_68c];
+			arr_i16_1eb8[0] = arr_i16_2f38[gridX*32 + gridY];
 			if (arr_i16_1eb8[0] != arr_i16_1eb8[1]) {
 				// 140:2372
 				if (arr_i16_1eb8[0] != arr_i16_3738[var_i16_1de6]) {
@@ -984,19 +978,20 @@ void FoolGame::thothKeyLastOnClick() {
 void FoolGame::thothBadSelect() {
 	// 140:24ae
 	playTone(0x14, 0x64, 0x0);
+	int16 patternID = 0;
 	while ((_event.modifiers & Graphics::MacToolbox::kModMouseButtonUp) == 0) {
 		// 140:24c4
 		getNextEvent(-1);
-		var_i16_484 = _zbasic->rndInt(0x50);
-		_toolbox->FillRect(_screenGrid[arr_i16_1eb8[0]], _patterns[var_i16_484]);
+		patternID = _zbasic->rndInt(0x50);
+		_toolbox->FillRect(_screenGrid[arr_i16_1eb8[0]], _patterns[patternID]);
 	}
 	// 140:2520
 	if (_activePuzzle != 0x34) {
 		copyScreen(1, arr_bmp_b3ec);
 	} else {
 		for (int16 i = var_i16_1de6; i >= arr_i16_3b38[_hermitPathStage]; i--) {
-			var_i16_484 = _zbasic->rndInt(0x4e) + 2;
-			_toolbox->FillRect(_screenGrid[arr_i16_3738[i]], _patterns[var_i16_484]);
+			patternID = _zbasic->rndInt(0x4e) + 2;
+			_toolbox->FillRect(_screenGrid[arr_i16_3738[i]], _patterns[patternID]);
 		}
 	}
 	// 140:25b4
@@ -1212,19 +1207,19 @@ void FoolGame::thothKeyLastSetup() {
 	} else {
 		// 140:2e7a
 		for (int16 k = 0; k <= 0x13; k++) {
-			var_i16_68a = k;
+			int16 index = k;
 			for (int16 j = 0; j <= 0xd; j++) {
 				// 140:2e8c
-				var_i16_484 = _zbasic->rndInt(0x4e) + 2;
+				int16 patternID = _zbasic->rndInt(0x4e) + 2;
 				_toolbox->FillRect(
-					_screenGrid[arr_i16_2f38[arr_i16_5bbc[var_i16_68a]*32 + arr_i16_5cbc[j]]],
-					_patterns[var_i16_484]
+					_screenGrid[arr_i16_2f38[arr_i16_5bbc[index]*32 + arr_i16_5cbc[j]]],
+					_patterns[patternID]
 				);
 				if (((j + k*0xd) % 6) == 0)
 					_toolbox->Delay(0);
-				var_i16_68a++;
-				if (var_i16_68a > 0x13) {
-					var_i16_68a = 0;
+				index++;
+				if (index > 0x13) {
+					index = 0;
 				}
 				// 140:2f12
 			}
@@ -1320,9 +1315,9 @@ void FoolGame::sub_140_32ac() {
 void FoolGame::thothAdjustPuzzleData() {
 	// 140:3372
 	// change puzzle data pointer to use high priestess data
-	var_i16_484 = (_puzzleDataOffsets[0x34] - 1) / 1000;
-	var_i16_7e4 = (_puzzleDataOffsets[0x34] - 1) % 1000;
-	_zbasic->record(1, var_i16_484, var_i16_7e4);
+	int16 recordIndex = (_puzzleDataOffsets[0x34] - 1) / 1000;
+	int16 recordOffset = (_puzzleDataOffsets[0x34] - 1) % 1000;
+	_zbasic->record(1, recordIndex, recordOffset);
 	//_puzzleDataBuffer = arr_bytes_109dc;
 	_puzzleDataBuffer = _zbasic->readFile(1, _puzzleDataOffsets[0x35] - _puzzleDataOffsets[0x34]);
 	_puzzleDataPtr = 0;
diff --git a/engines/fool/fool_threeships.cpp b/engines/fool/fool_threeships.cpp
index 98566585e42..eb8c56c026a 100644
--- a/engines/fool/fool_threeships.cpp
+++ b/engines/fool/fool_threeships.cpp
@@ -160,7 +160,7 @@ void FoolGame::sub_128_55ac() {
 		var_i16_d08 = -0xa;
 	}
 	// 128:56a0
-	for (var_i16_68a = 0; var_i16_68a <= 0x5; var_i16_68a++) {
+	for (int16 i = 0; i <= 5; i++) {
 		_zbasic->put(arr_rect_1910c.left, arr_rect_1910c.top, arr_bmp_bbbc, Graphics::MacToolbox::kSrcCopy);
 		_toolbox->OffsetRect(arr_rect_1910c, var_i16_d08, var_i16_d0a);
 		sub_128_5a6c();
diff --git a/engines/fool/fool_wordsearch.cpp b/engines/fool/fool_wordsearch.cpp
index 5bdfc6a33c8..11400a87c98 100644
--- a/engines/fool/fool_wordsearch.cpp
+++ b/engines/fool/fool_wordsearch.cpp
@@ -224,14 +224,16 @@ void FoolGame::wordSearchOnClick() {
 	while ((_event.modifiers & 0x80) == 0) {
 		// 131:08d4
 		getNextEvent(0);
-		getGridFromMouse(var_i16_68a, var_i16_68c);
-		sub_128_342(var_i16_68a, var_i16_68c);
-		if (!((var_i16_68a == var_i16_1a96) && (var_i16_68c == var_i16_1a98))) {
+		int16 gridX = 0;
+		int16 gridY = 0;
+		getGridFromMouse(gridX, gridY);
+		clampToGrid(gridX, gridY);
+		if (!((gridX == var_i16_1a96) && (gridY == var_i16_1a98))) {
 			// 131:0934
-			var_i16_1574 = var_i16_68a + (var_i16_68c - 1)*_gridInfo.xCount;
-			var_i16_1a96 = var_i16_68a;
-			var_i16_1a98 = var_i16_68c;
-			var_str_1070 += _zbasic->chr(arr_i16_3b38[var_i16_68a*32 + var_i16_68c]);
+			var_i16_1574 = gridX + (gridY - 1)*_gridInfo.xCount;
+			var_i16_1a96 = gridX;
+			var_i16_1a98 = gridY;
+			var_str_1070 += _zbasic->chr(arr_i16_3b38[gridX*32 + gridY]);
 			_toolbox->InvertRect(_screenGrid[var_i16_1574]);
 			var_i16_1a94++;
 			// 131:09c4
@@ -248,9 +250,8 @@ void FoolGame::wordSearchOnClick() {
 	// 131:09fc
 	var_i16_1a9a = 0;
 	var_i16_1a9c = arr_i16_4338[2] - arr_i16_4338[1];
-	var_i16_68a = 1;
 	for (int i = 1; i <= var_i16_1a94 - 1; i++) {
-		if (arr_i16_4338[var_i16_68a + 1] - arr_i16_4338[var_i16_68a] != var_i16_1a9c) {
+		if (arr_i16_4338[i + 1] - arr_i16_4338[i] != var_i16_1a9c) {
 			var_i16_1a9a = 0x29a;
 		}
 	// 131:0a78




More information about the Scummvm-git-logs mailing list