[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