diff options
author | Joost Peters | 2005-04-10 17:13:17 +0000 |
---|---|---|
committer | Joost Peters | 2005-04-10 17:13:17 +0000 |
commit | f35ac50111739a87aa6c639e21b55632af79796a (patch) | |
tree | b444a43fe4173903a7af6717dddc91a516b8dfe6 | |
parent | c9455a88069dff7d2b01366c54446d79256192d6 (diff) | |
download | scummvm-rg350-f35ac50111739a87aa6c639e21b55632af79796a.tar.gz scummvm-rg350-f35ac50111739a87aa6c639e21b55632af79796a.tar.bz2 scummvm-rg350-f35ac50111739a87aa6c639e21b55632af79796a.zip |
Some inter_variables cleanup.
Now it should store all variables in the native endianness, instead of storing half in LE and the other half in the native endianness.
Addresses and assignments can be tracked by modifying the macros if necessary.
Also, meaningful constants can now be assigned to script variable numbers (if one were so inclined)
svn-id: r17523
-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 |