aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gob/draw.cpp10
-rw-r--r--gob/game.cpp66
-rw-r--r--gob/gob.h7
-rw-r--r--gob/goblin.cpp142
-rw-r--r--gob/inter.cpp50
-rw-r--r--gob/mult.cpp16
-rw-r--r--gob/parse.cpp12
-rw-r--r--gob/scenery.cpp8
8 files changed, 157 insertions, 154 deletions
diff --git a/gob/draw.cpp b/gob/draw.cpp
index 01565245fe..4cc7de1966 100644
--- a/gob/draw.cpp
+++ b/gob/draw.cpp
@@ -628,10 +628,8 @@ void draw_animateCursor(int16 cursor) {
newX = inter_mouseX;
newY = inter_mouseY;
if (draw_cursorXDeltaVar != -1) {
- newX -= READ_LE_UINT16(inter_variables + draw_cursorIndex * 4 +
- (draw_cursorXDeltaVar / 4) * 4);
- newY -= READ_LE_UINT16(inter_variables + draw_cursorIndex * 4 +
- (draw_cursorYDeltaVar / 4) * 4);
+ newX -= (uint16)VAR_OFFSET(draw_cursorIndex * 4 + (draw_cursorXDeltaVar / 4) * 4);
+ newY -= (uint16)VAR_OFFSET(draw_cursorIndex * 4 + (draw_cursorYDeltaVar / 4) * 4);
}
minX = MIN(newX, draw_cursorX);
@@ -850,7 +848,7 @@ void draw_printText(void) {
cmd = ptr2[17] & 0x7f;
if (cmd == 0) {
val = READ_LE_UINT16(ptr2 + 18) * 4;
- sprintf(buf, "%d", READ_LE_UINT32(inter_variables + val));
+ sprintf(buf, "%d", VAR_OFFSET(val));
} else if (cmd == 1) {
val = READ_LE_UINT16(ptr2 + 18) * 4;
@@ -858,7 +856,7 @@ void draw_printText(void) {
} else {
val = READ_LE_UINT16(ptr2 + 18) * 4;
- sprintf(buf, "%d", READ_LE_UINT32(inter_variables + val));
+ sprintf(buf, "%d", VAR_OFFSET(val));
if (buf[0] == '-') {
while (strlen(buf) - 1 < (uint32)ptr2[17]) {
util_insertStr("0", buf, 1);
diff --git a/gob/game.cpp b/gob/game.cpp
index 4efac9c9d9..1b6a09f40c 100644
--- a/gob/game.cpp
+++ b/gob/game.cpp
@@ -440,14 +440,13 @@ void game_freeSoundSlot(int16 slot) {
int16 game_checkKeys(int16 *pMouseX, int16 *pMouseY, int16 *pButtons, char handleMouse) {
util_processInput();
- if (READ_LE_UINT32(inter_variables + 0xe8) != 0) {
- if (mult_frameStart != (int)READ_LE_UINT32(inter_variables + 0xe8) - 1)
+ if (VAR(58) != 0) {
+ if (mult_frameStart != (int)VAR(58) - 1)
mult_frameStart++;
else
mult_frameStart = 0;
- mult_playMult(mult_frameStart + READ_LE_UINT32(inter_variables + 0xe4),
- mult_frameStart + READ_LE_UINT32(inter_variables + 0xe4), 1,
+ mult_playMult(mult_frameStart + VAR(57), mult_frameStart + VAR(57), 1,
handleMouse);
}
@@ -950,7 +949,7 @@ int16 game_multiEdit(int16 time, int16 index, int16 *pCurPos, Game_InputDesc * i
}
for (i = 0; i < 40; i++) {
- WRITE_LE_UINT32(inter_variables + i * 4 + 0x44, 0);
+ WRITE_VAR_OFFSET(i * 4 + 0x44, 0);
}
while (1) {
@@ -1128,7 +1127,7 @@ void game_collisionsBlock(void) {
inter_execPtr += 6;
startIP = inter_execPtr;
- WRITE_LE_UINT32(inter_variables + 0x40, 0);
+ WRITE_VAR(16, 0);
var_22 = 0;
index = 0;
curEditIndex = 0;
@@ -1371,7 +1370,7 @@ void game_collisionsBlock(void) {
}
} else {
- if (deltaTime != 0 && READ_LE_UINT32(inter_variables + 0x40) == 0) {
+ if (deltaTime != 0 && VAR(16) == 0) {
if (stackPos2 != 0) {
collStackPos = 0;
collPtr = game_collisionAreas;
@@ -1386,10 +1385,10 @@ void game_collisionsBlock(void) {
game_activeCollResId = collPtr->id;
game_activeCollIndex = i;
- WRITE_LE_UINT32(inter_variables + 0x08, inter_mouseX);
- WRITE_LE_UINT32(inter_variables + 0x0c, inter_mouseY);
- WRITE_LE_UINT32(inter_variables + 0x10, game_mouseButtons);
- WRITE_LE_UINT32(inter_variables + 0x40, array[(uint16)game_activeCollResId & ~0x8000]);
+ WRITE_VAR(2, inter_mouseX);
+ WRITE_VAR(3, inter_mouseY);
+ WRITE_VAR(4, game_mouseButtons);
+ WRITE_VAR(16, array[(uint16)game_activeCollResId & ~0x8000]);
if (collPtr->funcLeave != 0) {
timeKey = util_getTimeKey();
@@ -1410,7 +1409,7 @@ void game_collisionsBlock(void) {
deltaTime = 2;
}
- if (READ_LE_UINT32(inter_variables + 0x40) == 0)
+ if (VAR(16) == 0)
game_activeCollResId = 0;
break;
}
@@ -1475,10 +1474,10 @@ void game_collisionsBlock(void) {
if (game_collisionAreas[game_activeCollIndex].funcLeave != 0)
continue;
- WRITE_LE_UINT32(inter_variables + 0x08, inter_mouseX);
- WRITE_LE_UINT32(inter_variables + 0x0c, inter_mouseY);
- WRITE_LE_UINT32(inter_variables + 0x10, game_mouseButtons);
- WRITE_LE_UINT32(inter_variables + 0x40, array[(uint16)game_activeCollResId & ~0x8000]);
+ WRITE_VAR(2, inter_mouseX);
+ WRITE_VAR(3, inter_mouseY);
+ WRITE_VAR(4, game_mouseButtons);
+ WRITE_VAR(16, array[(uint16)game_activeCollResId & ~0x8000]);
if (game_collisionAreas[game_activeCollIndex].funcEnter != 0) {
savedIP = inter_execPtr;
@@ -1496,7 +1495,7 @@ void game_collisionsBlock(void) {
inter_execPtr = savedIP;
}
- WRITE_LE_UINT32(inter_variables + 0x40, 0);
+ WRITE_VAR(16, 0);
game_activeCollResId = 0;
}
while (game_activeCollResId == 0 && inter_terminate == 0);
@@ -1549,24 +1548,23 @@ void game_collisionsBlock(void) {
util_prepareStr(game_collStr);
if (strcmp(game_tempStr, game_collStr) == 0) {
- WRITE_LE_UINT32(inter_variables + 0x44,
- READ_LE_UINT32(inter_variables + 0x44) + 1);
- WRITE_LE_UINT32(inter_variables + 0x44 + var_26 * 4, 1);
+ VAR(17)++;
+ WRITE_VAR(17 + var_26, 1);
break;
}
} while (READ_LE_UINT16(descArray[var_24].ptr - 2) > pos);
collStackPos++;
} else {
- WRITE_LE_UINT32(inter_variables + 0x44 + var_26 * 4, 2);
+ VAR(17 + var_26) = 2;
}
var_24++;
var_26++;
}
- if (collStackPos != READ_LE_UINT16(inter_variables + 0x44))
- WRITE_LE_UINT32(inter_variables + 0x44, 0);
+ if (collStackPos != (int16)VAR(17))
+ WRITE_VAR(17, 0);
else
- WRITE_LE_UINT32(inter_variables + 0x44, 1);
+ WRITE_VAR(17, 1);
}
savedIP = 0;
@@ -1574,12 +1572,12 @@ void game_collisionsBlock(void) {
savedIP = (char *)game_totFileData +
game_collisionAreas[game_activeCollIndex].funcLeave;
- WRITE_LE_UINT32(inter_variables + 0x08, inter_mouseX);
- WRITE_LE_UINT32(inter_variables + 0x0c, inter_mouseY);
- WRITE_LE_UINT32(inter_variables + 0x10, game_mouseButtons);
+ WRITE_VAR(2, inter_mouseX);
+ WRITE_VAR(3, inter_mouseY);
+ WRITE_VAR(4, game_mouseButtons);
- if (READ_LE_UINT32(inter_variables + 0x40) == 0) {
- WRITE_LE_UINT32(inter_variables + 0x40, array[(uint16)game_activeCollResId & ~0x8000]);
+ if (VAR(16) == 0) {
+ WRITE_VAR(16, array[(uint16)game_activeCollResId & ~0x8000]);
}
}
@@ -1813,7 +1811,7 @@ void game_playTot(int16 skipPlay) {
variablesCount = READ_LE_UINT32((char *)game_totFileData + 0x2c);
inter_variables = (char *)malloc(variablesCount * 4);
for (i = 0; i < variablesCount; i++)
- WRITE_LE_UINT32(inter_variables + i * 4, 0);
+ WRITE_VAR(i, 0);
}
inter_execPtr = (char *)game_totFileData;
@@ -1831,10 +1829,10 @@ void game_playTot(int16 skipPlay) {
inter_renewTimeInVars();
- WRITE_LE_UINT32(inter_variables + 0x34, useMouse);
- WRITE_LE_UINT32(inter_variables + 0x38, soundFlags);
- WRITE_LE_UINT32(inter_variables + 0x3c,videoMode);
- WRITE_LE_UINT32(inter_variables + 0x40, language);
+ WRITE_VAR(13, useMouse);
+ WRITE_VAR(14, soundFlags);
+ WRITE_VAR(15, videoMode);
+ WRITE_VAR(16, language);
inter_callSub(2);
diff --git a/gob/gob.h b/gob/gob.h
index cfa38384c6..48dc95517d 100644
--- a/gob/gob.h
+++ b/gob/gob.h
@@ -29,6 +29,13 @@
#include "base/engine.h"
+#define VAR_OFFSET(offs) (*(uint32 *)(inter_variables + (offs)))
+#define VAR(var) VAR_OFFSET((var << 2))
+#define VAR_ADDRESS(var) (&VAR(var))
+
+#define WRITE_VAR_OFFSET(offs, val) (VAR_OFFSET(offs) = val)
+#define WRITE_VAR(var, val) WRITE_VAR_OFFSET((var << 2), val)
+
namespace Gob {
class GobEngine : public Engine {
diff --git a/gob/goblin.cpp b/gob/goblin.cpp
index a56f23f2a5..0827490b68 100644
--- a/gob/goblin.cpp
+++ b/gob/goblin.cpp
@@ -636,8 +636,7 @@ void gob_showBoredom(int16 gobIndex) {
}
}
gobDesc->nextState = 21;
- } else if (state >= 18 && state <= 21
- && READ_LE_UINT32(inter_variables + 0xec) == 0) {
+ } else if (state >= 18 && state <= 21 && VAR(59) == 0) {
if (state == 30 || state == 31) // ???
return;
@@ -655,7 +654,7 @@ void gob_switchGoblin(int16 index) {
int16 tmp;
debug(0, "gob_switchGoblin");
- if (READ_LE_UINT32(inter_variables + 0xec) != 0)
+ if (VAR(59) != 0)
return;
if (gob_goblins[gob_currentGoblin]->state <= 39 &&
@@ -1124,7 +1123,7 @@ void gob_moveInitStep(int16 framesCount, int16 action, int16 cont,
int16 posY;
if (cont != 0 && gob_goesAtTarget == 0 &&
- gob_readyToAct == 0 && READ_LE_UINT32(inter_variables + 0xec) == 0 &&
+ gob_readyToAct == 0 && VAR(59) == 0 &&
gobDesc->type != 1 &&
gobDesc->state != 10 && gobDesc->state != 11) {
if (gobDesc->state >= 40) {
@@ -1809,7 +1808,7 @@ int16 gob_doMove(Gob_Object *gobDesc, int16 cont, int16 action) {
framesCount =
scen_animations[gobDesc->animation].layers[layer]->framesCount;
- if (READ_LE_UINT32(inter_variables + 0xec) == 0 &&
+ if (VAR(59) == 0 &&
gobDesc->state != 30 && gobDesc->state != 31) {
gobDesc->order = (gobDesc->bottom) / 24 + 3;
}
@@ -2011,58 +2010,56 @@ void gob_saveGobDataToVars(int16 xPos, int16 yPos, int16 someVal) {
}
void gob_initVarPointers(void) {
- // FIXME: All this is not endian-safe
- gob_curGobStateVarPtr = (int32 *)(inter_variables + 0xf0);
- gob_curGobNoTickVarPtr = (int32 *)(inter_variables + 0x120);
- gob_curGobNextStateVarPtr = (int32 *)(inter_variables + 0xfc);
- gob_curGobMultStateVarPtr = (int32 *)(inter_variables + 0xf8);
- gob_curGobLookDirVarPtr = (int32 *)(inter_variables + 0x134);
- gob_curGobPickableVarPtr = (int32 *)(inter_variables + 0x140);
- gob_curGobRelaxVarPtr = (int32 *)(inter_variables + 0x144);
- gob_curGobTypeVarPtr = (int32 *)(inter_variables + 0x124);
- gob_curGobMaxFrameVarPtr = (int32 *)(inter_variables + 0x1b8);
- gob_curGobTickVarPtr = (int32 *)(inter_variables + 0x12c);
- gob_curGobFrameVarPtr = (int32 *)(inter_variables + 0xf4);
- gob_curGobOrderVarPtr = (int32 *)(inter_variables + 0x11c);
- gob_curGobMaxTickVarPtr = (int32 *)(inter_variables + 0x128);
- gob_curGobActStartStateVarPtr = (int32 *)(inter_variables + 0x130);
- gob_curGobDoAnimVarPtr = (int32 *)(inter_variables + 0x118);
- gob_curGobLeftVarPtr = (int32 *)(inter_variables + 0x108);
- gob_curGobRightVarPtr = (int32 *)(inter_variables + 0x110);
- gob_curGobScrXVarPtr = (int32 *)(inter_variables + 0x100);
- gob_curGobTopVarPtr = (int32 *)(inter_variables + 0x10c);
- gob_curGobBottomVarPtr = (int32 *)(inter_variables + 0x114);
- gob_curGobScrYVarPtr = (int32 *)(inter_variables + 0x104);
-
- gob_destItemStateVarPtr = (int32 *)(inter_variables + 0x148);
- gob_destItemNoTickVarPtr = (int32 *)(inter_variables + 0x178);
- gob_destItemNextStateVarPtr = (int32 *)(inter_variables + 0x154);
- gob_destItemMultStateVarPtr = (int32 *)(inter_variables + 0x150);
- gob_destItemLookDirVarPtr = (int32 *)(inter_variables + 0x18c);
- gob_destItemPickableVarPtr = (int32 *)(inter_variables + 0x198);
- gob_destItemRelaxVarPtr = (int32 *)(inter_variables + 0x19c);
- gob_destItemTypeVarPtr = (int32 *)(inter_variables + 0x17c);
- gob_destItemMaxFrameVarPtr = (int32 *)(inter_variables + 0x1a4);
- gob_destItemTickVarPtr = (int32 *)(inter_variables + 0x184);
- gob_destItemFrameVarPtr = (int32 *)(inter_variables + 0x14c);
- gob_destItemOrderVarPtr = (int32 *)(inter_variables + 0x174);
- gob_destItemMaxTickVarPtr = (int32 *)(inter_variables + 0x180);
- gob_destItemActStartStVarPtr = (int32 *)(inter_variables + 0x188);
- gob_destItemDoAnimVarPtr = (int32 *)(inter_variables + 0x170);
- gob_destItemLeftVarPtr = (int32 *)(inter_variables + 0x160);
- gob_destItemRightVarPtr = (int32 *)(inter_variables + 0x168);
- gob_destItemScrXVarPtr = (int32 *)(inter_variables + 0x158);
- gob_destItemTopVarPtr = (int32 *)(inter_variables + 0x164);
- gob_destItemBottomVarPtr = (int32 *)(inter_variables + 0x16c);
- gob_destItemScrYVarPtr = (int32 *)(inter_variables + 0x15c);
-
- gob_some0ValPtr = (int32 *)(inter_variables + 0x1ac);
- gob_curGobXPosVarPtr = (int32 *)(inter_variables + 0x1b0);
- gob_curGobYPosVarPtr = (int32 *)(inter_variables + 0x1b4);
- gob_itemInPocketVarPtr = (int32 *)(inter_variables + 0x1c8);
- gob_gobRetVarPtr = (int32 *)(inter_variables + 0xec);
- gob_curGobVarPtr = (int32 *)(inter_variables + 0x1a8);
-
+ gob_gobRetVarPtr = (int32 *)VAR_ADDRESS(59);
+ gob_curGobStateVarPtr = (int32 *)VAR_ADDRESS(60);
+ gob_curGobFrameVarPtr = (int32 *)VAR_ADDRESS(61);
+ gob_curGobMultStateVarPtr = (int32 *)VAR_ADDRESS(62);
+ gob_curGobNextStateVarPtr = (int32 *)VAR_ADDRESS(63);
+ gob_curGobScrXVarPtr = (int32 *)VAR_ADDRESS(64);
+ gob_curGobScrYVarPtr = (int32 *)VAR_ADDRESS(65);
+ gob_curGobLeftVarPtr = (int32 *)VAR_ADDRESS(66);
+ gob_curGobTopVarPtr = (int32 *)VAR_ADDRESS(67);
+ gob_curGobRightVarPtr = (int32 *)VAR_ADDRESS(68);
+ gob_curGobBottomVarPtr = (int32 *)VAR_ADDRESS(69);
+ gob_curGobDoAnimVarPtr = (int32 *)VAR_ADDRESS(70);
+ gob_curGobOrderVarPtr = (int32 *)VAR_ADDRESS(71);
+ gob_curGobNoTickVarPtr = (int32 *)VAR_ADDRESS(72);
+ gob_curGobTypeVarPtr = (int32 *)VAR_ADDRESS(73);
+ gob_curGobMaxTickVarPtr = (int32 *)VAR_ADDRESS(74);
+ gob_curGobTickVarPtr = (int32 *)VAR_ADDRESS(75);
+ gob_curGobActStartStateVarPtr = (int32 *)VAR_ADDRESS(76);
+ gob_curGobLookDirVarPtr = (int32 *)VAR_ADDRESS(77);
+ gob_curGobPickableVarPtr = (int32 *)VAR_ADDRESS(80);
+ gob_curGobRelaxVarPtr = (int32 *)VAR_ADDRESS(81);
+ gob_destItemStateVarPtr = (int32 *)VAR_ADDRESS(82);
+ gob_destItemFrameVarPtr = (int32 *)VAR_ADDRESS(83);
+ gob_destItemMultStateVarPtr = (int32 *)VAR_ADDRESS(84);
+ gob_destItemNextStateVarPtr = (int32 *)VAR_ADDRESS(85);
+ gob_destItemScrXVarPtr = (int32 *)VAR_ADDRESS(86);
+ gob_destItemScrYVarPtr = (int32 *)VAR_ADDRESS(87);
+ gob_destItemLeftVarPtr = (int32 *)VAR_ADDRESS(88);
+ gob_destItemTopVarPtr = (int32 *)VAR_ADDRESS(89);
+ gob_destItemRightVarPtr = (int32 *)VAR_ADDRESS(90);
+ gob_destItemBottomVarPtr = (int32 *)VAR_ADDRESS(91);
+ gob_destItemDoAnimVarPtr = (int32 *)VAR_ADDRESS(92);
+ gob_destItemOrderVarPtr = (int32 *)VAR_ADDRESS(93);
+ gob_destItemNoTickVarPtr = (int32 *)VAR_ADDRESS(94);
+ gob_destItemTypeVarPtr = (int32 *)VAR_ADDRESS(95);
+ gob_destItemMaxTickVarPtr = (int32 *)VAR_ADDRESS(96);
+ gob_destItemTickVarPtr = (int32 *)VAR_ADDRESS(97);
+ gob_destItemActStartStVarPtr = (int32 *)VAR_ADDRESS(98);
+ gob_destItemLookDirVarPtr = (int32 *)VAR_ADDRESS(99);
+ gob_destItemPickableVarPtr = (int32 *)VAR_ADDRESS(102);
+ gob_destItemRelaxVarPtr = (int32 *)VAR_ADDRESS(103);
+ gob_destItemMaxFrameVarPtr = (int32 *)VAR_ADDRESS(105);
+ gob_curGobVarPtr = (int32 *)VAR_ADDRESS(106);
+ gob_some0ValPtr = (int32 *)VAR_ADDRESS(107);
+ gob_curGobXPosVarPtr = (int32 *)VAR_ADDRESS(108);
+ gob_curGobYPosVarPtr = (int32 *)VAR_ADDRESS(109);
+ gob_curGobMaxFrameVarPtr = (int32 *)VAR_ADDRESS(110);
+
+ gob_itemInPocketVarPtr = (int32 *)VAR_ADDRESS(114);
+
*gob_itemInPocketVarPtr = -2;
}
@@ -2477,7 +2474,7 @@ void gob_interFunc(void) {
int16 state;
int32 *retVarPtr;
- retVarPtr = (int32 *)(inter_variables + 0xec);
+ retVarPtr = (int32 *)VAR_ADDRESS(59);
cmd = inter_load16();
inter_execPtr += 2;
@@ -2673,9 +2670,9 @@ void gob_interFunc(void) {
item = inter_load16();
if (cmd == 42) {
- xPos = READ_LE_UINT32(inter_variables + xPos * 4);
- yPos = READ_LE_UINT32(inter_variables + yPos * 4);
- item = READ_LE_UINT32(inter_variables + item * 4);
+ xPos = VAR(xPos);
+ yPos = VAR(yPos);
+ item = VAR(item);
}
for (y = 0; y < 28; y++) {
@@ -2824,8 +2821,8 @@ void gob_interFunc(void) {
yPos = inter_load16();
if (cmd == 43) {
- xPos = READ_LE_UINT32(inter_variables + xPos * 4);
- yPos = READ_LE_UINT32(inter_variables + yPos * 4);
+ xPos = VAR(xPos);
+ yPos = VAR(yPos);
}
if ((map_itemsMap[yPos][xPos] & 0xff00) != 0) {
@@ -3149,7 +3146,7 @@ void gob_interFunc(void) {
if (game_extHandle >= 0)
data_closeData(game_extHandle);
- gob_loadObjects(inter_variables + extraData * 4);
+ gob_loadObjects((char *)VAR_ADDRESS(extraData));
game_extHandle = data_openData(game_curExtFile);
break;
@@ -3173,10 +3170,10 @@ void gob_interFunc(void) {
extraData = inter_load16();
xPos = inter_load16();
- if (READ_LE_UINT16(inter_variables + xPos * 4) == 0) {
+ if ((uint16)VAR(xPos) == 0) {
item =
gob_doMove(gob_goblins[gob_currentGoblin], 1,
- READ_LE_UINT16(inter_variables + extraData * 4));
+ (uint16)VAR(extraData));
} else {
item =
gob_doMove(gob_goblins[gob_currentGoblin], 1, 3);
@@ -3199,13 +3196,12 @@ void gob_interFunc(void) {
cmd = inter_load16();
xPos = inter_load16();
- if (READ_LE_UINT16(inter_variables + xPos * 4) == 0) {
- WRITE_LE_UINT32(inter_variables + cmd * 4,
- gob_treatItem(READ_LE_UINT16(inter_variables + extraData * 4)));
+ if ((uint16)VAR(xPos) == 0) {
+ WRITE_VAR(cmd, gob_treatItem((uint16)VAR(extraData)));
break;
}
- WRITE_LE_UINT32(inter_variables + cmd * 4, gob_treatItem(3));
+ WRITE_VAR(cmd, gob_treatItem(3));
break;
case 1010:
@@ -3214,7 +3210,7 @@ void gob_interFunc(void) {
case 1011:
extraData = inter_load16();
- if (READ_LE_UINT32(inter_variables + extraData * 4) != 0)
+ if (VAR(extraData) != 0)
gob_goesAtTarget = 1;
else
gob_goesAtTarget = 0;
@@ -3222,11 +3218,11 @@ void gob_interFunc(void) {
case 1015:
extraData = inter_load16();
- extraData = READ_LE_UINT32(inter_variables + extraData * 4);
+ extraData = VAR(extraData);
gob_objects[10]->xPos = extraData;
extraData = inter_load16();
- extraData = READ_LE_UINT32(inter_variables + extraData * 4);
+ extraData = VAR(extraData);
gob_objects[10]->yPos = extraData;
break;
diff --git a/gob/inter.cpp b/gob/inter.cpp
index 424b1312e5..54a41e01fc 100644
--- a/gob/inter.cpp
+++ b/gob/inter.cpp
@@ -106,7 +106,7 @@ void inter_evaluateStore(void) {
switch (savedPos[0]) {
case 23:
case 26:
- WRITE_LE_UINT32(inter_variables + varOff, inter_resVal);
+ WRITE_VAR_OFFSET(varOff, inter_resVal);
break;
case 25:
@@ -173,7 +173,7 @@ void inter_printText(void) {
switch (*inter_execPtr) {
case 23:
case 26:
- sprintf(buf + i, "%d", READ_LE_UINT32(inter_variables + parse_parseVarIndex()));
+ sprintf(buf + i, "%d", VAR_OFFSET(parse_parseVarIndex()));
break;
case 25:
@@ -235,7 +235,7 @@ void inter_playMult(void) {
int16 checkEscape;
checkEscape = inter_load16();
- mult_playMult(READ_LE_UINT32(inter_variables + 0xe4), -1, checkEscape, 0);
+ mult_playMult(VAR(57), -1, checkEscape, 0);
}
void inter_freeMult(void) {
@@ -433,8 +433,8 @@ void inter_getFreeMem(void) {
maxFreeVar = parse_parseVarIndex();
// HACK
- WRITE_LE_UINT32(inter_variables + freeVar, 1000000);
- WRITE_LE_UINT32(inter_variables + maxFreeVar, 1000000);
+ WRITE_VAR_OFFSET(freeVar, 1000000);
+ WRITE_VAR_OFFSET(maxFreeVar, 1000000);
}
void inter_manageDataFile(void) {
@@ -459,7 +459,7 @@ void inter_writeData(void) {
size = parse_parseValExpr();
offset = parse_parseValExpr();
- WRITE_LE_UINT32(inter_variables + 4, 1);
+ WRITE_VAR(1, 1);
handle = data_openData(inter_resStr, File::kFileWriteMode);
if (handle < 0)
@@ -474,7 +474,7 @@ void inter_writeData(void) {
retSize = file_getHandle(handle)->write(inter_variables + dataVar, size);
if (retSize == size)
- WRITE_LE_UINT32(inter_variables + 4, 0);
+ WRITE_VAR(1, 0);
data_closeData(handle);
}
@@ -488,7 +488,7 @@ void inter_checkData(void) {
varOff = parse_parseVarIndex();
handle = data_openData(inter_resStr);
- WRITE_LE_UINT32(inter_variables + varOff, handle);
+ WRITE_VAR_OFFSET(varOff, handle);
if (handle >= 0)
data_closeData(handle);
}
@@ -509,7 +509,7 @@ void inter_readData(void) {
if (game_extHandle >= 0)
data_closeData(game_extHandle);
- WRITE_LE_UINT32(inter_variables + 4, 1);
+ WRITE_VAR(1, 1);
handle = data_openData(inter_resStr);
if (handle >= 0) {
draw_animateCursor(4);
@@ -522,7 +522,7 @@ void inter_readData(void) {
data_closeData(handle);
if (retSize == size)
- WRITE_LE_UINT32(inter_variables + 4, 0);
+ WRITE_VAR(1, 0);
}
if (game_extHandle >= 0)
@@ -597,7 +597,7 @@ void inter_strstr(void) {
resVar = parse_parseVarIndex();
pos = util_strstr(inter_resStr, inter_variables + strVar);
- WRITE_LE_UINT32(inter_variables + resVar, pos - 1);
+ WRITE_VAR_OFFSET(resVar, pos - 1);
}
void inter_setFrameRate(void) {
@@ -612,7 +612,7 @@ void inter_strlen(void) {
len = strlen(inter_variables + var);
var = parse_parseVarIndex();
- WRITE_LE_UINT32(inter_variables + var, len);
+ WRITE_VAR_OFFSET(var, len);
}
void inter_strToLong(void) {
@@ -626,7 +626,7 @@ void inter_strToLong(void) {
res = atol(str);
destVar = parse_parseVarIndex();
- WRITE_LE_UINT32(inter_variables + destVar, res);
+ WRITE_VAR_OFFSET(destVar, res);
}
void inter_invalidate(void) {
@@ -733,15 +733,15 @@ void inter_renewTimeInVars(void) {
time /= 1000; // convert to seconds
// hours
- WRITE_LE_UINT32(inter_variables + 0x24, time / 3600);
+ WRITE_VAR(9, time / 3600);
time %= 3600;
// minutes
- WRITE_LE_UINT32(inter_variables + 0x28, time / 60);
+ WRITE_VAR(10, time / 60);
time %= 60;
// seconds
- WRITE_LE_UINT32(inter_variables + 0x2c, time);
+ WRITE_VAR(11, time);
}
void inter_playComposition(void) {
@@ -753,7 +753,7 @@ void inter_playComposition(void) {
dataVar = parse_parseVarIndex();
freqVal = parse_parseValExpr();
for (i = 0; i < 50; i++)
- inter_composition[i] = READ_LE_UINT32(inter_variables + dataVar + i * 4);
+ inter_composition[i] = (int16)VAR_OFFSET(dataVar + i * 4);
snd_playComposition(game_soundSamples, inter_composition, freqVal);
}
@@ -874,12 +874,12 @@ void inter_loadTot(void) {
}
void inter_storeKey(int16 key) {
- WRITE_LE_UINT32(inter_variables + 0x30, util_getTimeKey() - game_startTimeKey);
+ WRITE_VAR(12, util_getTimeKey() - game_startTimeKey);
- WRITE_LE_UINT32(inter_variables + 0x08, inter_mouseX);
- WRITE_LE_UINT32(inter_variables + 0x0c, inter_mouseX);
- WRITE_LE_UINT32(inter_variables + 0x10, game_mouseButtons);
- WRITE_LE_UINT32(inter_variables + 0x04, snd_playingSound);
+ WRITE_VAR(2, inter_mouseX);
+ WRITE_VAR(3, inter_mouseY);
+ WRITE_VAR(4, game_mouseButtons);
+ WRITE_VAR(1, snd_playingSound);
if (key == 0x4800)
key = 0x0b;
@@ -894,7 +894,7 @@ void inter_storeKey(int16 key) {
else if ((key & 0xff) != 0)
key &= 0xff;
- WRITE_LE_UINT32(inter_variables, key);
+ WRITE_VAR(0, key);
if (key != 0)
util_waitKey();
@@ -964,7 +964,7 @@ void inter_keyFunc(void) {
if (pressedKeys[0x3e])
key |= 0x4000;
- WRITE_LE_UINT32(inter_variables, key);
+ WRITE_VAR(0, key);
util_waitKey();
return;
}
@@ -995,7 +995,7 @@ void inter_checkSwitchTable(char **ppExec) {
notFound = 1;
*ppExec = 0;
value = parse_parseVarIndex();
- value = READ_LE_UINT32(inter_variables + value);
+ value = VAR_OFFSET(value);
do {
len = *inter_execPtr++;
diff --git a/gob/mult.cpp b/gob/mult.cpp
index f7d17fb72b..3869a9223f 100644
--- a/gob/mult.cpp
+++ b/gob/mult.cpp
@@ -396,10 +396,10 @@ void mult_interGetObjAnimSize(void) {
pAnimData->animation, 0, *(mult_objects[objIndex].pPosX),
*(mult_objects[objIndex].pPosY), 0);
}
- WRITE_LE_UINT32(inter_variables + parse_parseVarIndex(), scen_toRedrawLeft);
- WRITE_LE_UINT32(inter_variables + parse_parseVarIndex(), scen_toRedrawTop);
- WRITE_LE_UINT32(inter_variables + parse_parseVarIndex(), scen_toRedrawRight);
- WRITE_LE_UINT32(inter_variables + parse_parseVarIndex(), scen_toRedrawBottom);
+ WRITE_VAR_OFFSET(parse_parseVarIndex(), scen_toRedrawLeft);
+ WRITE_VAR_OFFSET(parse_parseVarIndex(), scen_toRedrawTop);
+ WRITE_VAR_OFFSET(parse_parseVarIndex(), scen_toRedrawRight);
+ WRITE_VAR_OFFSET(parse_parseVarIndex(), scen_toRedrawBottom);
}
void mult_interInitMult(void) {
@@ -896,7 +896,7 @@ void mult_playMult(int16 startFrame, int16 endFrame, char checkEscape,
do {
stop = 1;
- if (READ_LE_UINT32(inter_variables + 0xe8) == 0) {
+ if (VAR(58) == 0) {
stop = mult_drawStatics(stop);
mult_drawAnims();
}
@@ -908,7 +908,7 @@ void mult_playMult(int16 startFrame, int16 endFrame, char checkEscape,
draw_blitInvalidated();
}
- if (READ_LE_UINT32(inter_variables + 0xe8) == 0) {
+ if (VAR(58) == 0) {
mult_drawText(&stop, &stopNoClear);
}
@@ -964,9 +964,9 @@ void mult_playMult(int16 startFrame, int16 endFrame, char checkEscape,
if (snd_playingSound != 0)
snd_stopSound(10);
- WRITE_LE_UINT32(inter_variables + 0xe4, (uint32)-1);
+ WRITE_VAR(57, (uint32)-1);
} else {
- WRITE_LE_UINT32(inter_variables + 0xe4, mult_frame - 1 - mult_frameStart);
+ WRITE_VAR(57, mult_frame - 1 - mult_frameStart);
}
}
diff --git a/gob/parse.cpp b/gob/parse.cpp
index 7e3b054a7c..704daa7554 100644
--- a/gob/parse.cpp
+++ b/gob/parse.cpp
@@ -77,7 +77,7 @@ int16 parse_parseExpr(char arg_0, byte *arg_2) {
case 23:
*operPtr = 20;
- *valPtr = READ_LE_UINT32(inter_variables + inter_load16() * 4);
+ *valPtr = VAR(inter_load16());
break;
case 25:
@@ -88,6 +88,7 @@ int16 parse_parseExpr(char arg_0, byte *arg_2) {
inter_execPtr++;
temp += parse_parseValExpr();
*operPtr = 20;
+ //XXX: Checkme
*valPtr = *(inter_variables + temp);
}
break;
@@ -107,7 +108,7 @@ int16 parse_parseExpr(char arg_0, byte *arg_2) {
}
if (operation == 26) {
- *valPtr = READ_LE_UINT32(inter_variables + temp * 4 + offset * 4);
+ *valPtr = VAR(temp + offset);
break;
}
*valPtr = (int32)(inter_variables + temp * 4 + offset * inter_animDataSize * 4);
@@ -115,6 +116,7 @@ int16 parse_parseExpr(char arg_0, byte *arg_2) {
inter_execPtr++;
temp2 = parse_parseValExpr();
*operPtr = 20;
+ //XXX: Checkme
*valPtr = *(inter_variables + temp * 4 + offset * 4 * inter_animDataSize + temp2);
}
break;
@@ -720,13 +722,14 @@ int16 parse_parseValExpr() {
break;
case 23:
- *valPtr = READ_LE_UINT16(inter_variables + inter_load16() * 4);
+ *valPtr = (uint16)VAR(inter_load16());
break;
case 25:
temp = inter_load16() * 4;
inter_execPtr++;
temp += parse_parseValExpr();
+ //XXX: Checkme
*valPtr = *(inter_variables + temp);
break;
@@ -742,10 +745,11 @@ int16 parse_parseValExpr() {
offset = arrDesc[dim] * offset + temp2;
}
if (operation == 26) {
- *valPtr = READ_LE_UINT16(inter_variables + temp * 4 + offset * 4);
+ *valPtr = (uint16)VAR(temp + offset);
} else {
inter_execPtr++;
temp2 = parse_parseValExpr();
+ //XXX: Checkme
*valPtr = *(inter_variables + temp * 4 + offset * 4 * inter_animDataSize + temp2);
}
break;
diff --git a/gob/scenery.cpp b/gob/scenery.cpp
index 101c4bfd30..4b19e8e9a9 100644
--- a/gob/scenery.cpp
+++ b/gob/scenery.cpp
@@ -735,16 +735,16 @@ void scen_interStoreParams(void) {
layerPtr = scen_animations[animation].layers[layer];
var = parse_parseVarIndex();
- WRITE_LE_UINT32(inter_variables + var, layerPtr->animDeltaX);
+ WRITE_VAR_OFFSET(var, layerPtr->animDeltaX);
var = parse_parseVarIndex();
- WRITE_LE_UINT32(inter_variables + var, layerPtr->animDeltaY);
+ WRITE_VAR_OFFSET(var, layerPtr->animDeltaY);
var = parse_parseVarIndex();
- WRITE_LE_UINT32(inter_variables + var, layerPtr->unknown0);
+ WRITE_VAR_OFFSET(var, layerPtr->unknown0);
var = parse_parseVarIndex();
- WRITE_LE_UINT32(inter_variables + var, layerPtr->framesCount);
+ WRITE_VAR_OFFSET(var, layerPtr->framesCount);
}
} // End of namespace Gob