diff options
-rw-r--r-- | gob/draw.cpp | 10 | ||||
-rw-r--r-- | gob/game.cpp | 66 | ||||
-rw-r--r-- | gob/gob.h | 7 | ||||
-rw-r--r-- | gob/goblin.cpp | 142 | ||||
-rw-r--r-- | gob/inter.cpp | 50 | ||||
-rw-r--r-- | gob/mult.cpp | 16 | ||||
-rw-r--r-- | gob/parse.cpp | 12 | ||||
-rw-r--r-- | gob/scenery.cpp | 8 |
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); @@ -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 |