aboutsummaryrefslogtreecommitdiff
path: root/engines/gob/inter_v5.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/gob/inter_v5.cpp')
-rw-r--r--engines/gob/inter_v5.cpp785
1 files changed, 88 insertions, 697 deletions
diff --git a/engines/gob/inter_v5.cpp b/engines/gob/inter_v5.cpp
index cb5b28cb67..1c20851c8d 100644
--- a/engines/gob/inter_v5.cpp
+++ b/engines/gob/inter_v5.cpp
@@ -30,652 +30,73 @@
#include "gob/inter.h"
#include "gob/global.h"
#include "gob/game.h"
-#include "gob/parse.h"
+#include "gob/script.h"
#include "gob/draw.h"
namespace Gob {
-#define OPCODE(x) _OPCODE(Inter_v5, x)
-
-const int Inter_v5::_goblinFuncLookUp[][2] = {
- {0, 0},
- {1, 0},
- {3, 0},
- {2, 0},
- {33, 0},
- {80, 1},
- {81, 2},
- {82, 3},
- {83, 4},
- {84, 5},
- {85, 6},
- {86, 7},
- {87, 0},
- {88, 0},
- {89, 0},
- {90, 0},
- {91, 0},
- {92, 8},
- {93, 0},
- {94, 0},
- {95, 9},
- {96, 10},
- {97, 11},
- {98, 12},
- {99, 0},
- {100, 13},
- {200, 14}
-};
+#define OPCODEVER Inter_v5
+#define OPCODEDRAW(i, x) _opcodesDraw[i]._OPCODEDRAW(OPCODEVER, x)
+#define OPCODEFUNC(i, x) _opcodesFunc[i]._OPCODEFUNC(OPCODEVER, x)
+#define OPCODEGOB(i, x) _opcodesGob[i]._OPCODEGOB(OPCODEVER, x)
Inter_v5::Inter_v5(GobEngine *vm) : Inter_v4(vm) {
- setupOpcodes();
}
-void Inter_v5::setupOpcodes() {
- static const OpcodeDrawEntryV5 opcodesDraw[256] = {
- /* 00 */
- OPCODE(o1_loadMult),
- OPCODE(o2_playMult),
- OPCODE(o2_freeMultKeys),
- {0, ""},
- /* 04 */
- {0, ""},
- {0, ""},
- {0, ""},
- OPCODE(o1_initCursor),
- /* 08 */
- OPCODE(o1_initCursorAnim),
- OPCODE(o1_clearCursorAnim),
- OPCODE(o2_setRenderFlags),
- {0, ""},
- /* 0C */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 10 */
- OPCODE(o1_loadAnim),
- OPCODE(o1_freeAnim),
- OPCODE(o1_updateAnim),
- OPCODE(o2_multSub),
- /* 14 */
- OPCODE(o2_initMult),
- OPCODE(o1_freeMult),
- OPCODE(o1_animate),
- OPCODE(o2_loadMultObject),
- /* 18 */
- OPCODE(o1_getAnimLayerInfo),
- OPCODE(o1_getObjAnimSize),
- OPCODE(o1_loadStatic),
- OPCODE(o1_freeStatic),
- /* 1C */
- OPCODE(o2_renderStatic),
- OPCODE(o2_loadCurLayer),
- {0, ""},
- {0, ""},
- /* 20 */
- OPCODE(o2_playCDTrack),
- OPCODE(o2_waitCDTrackEnd),
- OPCODE(o2_stopCD),
- OPCODE(o2_readLIC),
- /* 24 */
- OPCODE(o2_freeLIC),
- OPCODE(o2_getCDTrackPos),
- {0, ""},
- {0, ""},
- /* 28 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 2C */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 30 */
- OPCODE(o2_loadFontToSprite),
- OPCODE(o1_freeFontToSprite),
- {0, ""},
- {0, ""},
- /* 34 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 38 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 3C */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 40 */
- OPCODE(o2_totSub),
- OPCODE(o2_switchTotSub),
- OPCODE(o2_pushVars),
- OPCODE(o2_popVars),
- /* 44 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 48 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 4C */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 50 */
- OPCODE(o2_loadMapObjects),
- OPCODE(o2_freeGoblins),
- OPCODE(o2_moveGoblin),
- OPCODE(o2_writeGoblinPos),
- /* 54 */
- OPCODE(o2_stopGoblin),
- OPCODE(o2_setGoblinState),
- OPCODE(o2_placeGoblin),
- {0, ""},
- /* 58 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 5C */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 60 */
- {0, ""},
- OPCODE(o5_deleteFile),
- {0, ""},
- {0, ""},
- /* 64 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 68 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 6C */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 70 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 74 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 78 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 7C */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 80 */
- OPCODE(o5_initScreen),
- OPCODE(o2_scroll),
- OPCODE(o2_setScrollOffset),
- OPCODE(o4_playVmdOrMusic),
- /* 84 */
- OPCODE(o2_getImdInfo),
- OPCODE(o2_openItk),
- OPCODE(o2_closeItk),
- OPCODE(o2_setImdFrontSurf),
- /* 88 */
- OPCODE(o2_resetImdFrontSurf),
- {0, ""},
- {0, ""},
- {0, ""},
- /* 8C */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 90 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 94 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 98 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 9C */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* A0 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* A4 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* A8 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* AC */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* B0 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* B4 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* B8 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* BC */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* C0 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* C4 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* C8 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* CC */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* D0 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* D4 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* D8 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* DC */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* E0 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* E4 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* E8 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* EC */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* F0 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* F4 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* F8 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* FC */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""}
- };
-
- static const OpcodeFuncEntryV5 opcodesFunc[80] = {
- /* 00 */
- OPCODE(o1_callSub),
- OPCODE(o1_callSub),
- OPCODE(o1_printTotText),
- OPCODE(o1_loadCursor),
- /* 04 */
- {0, ""},
- OPCODE(o1_switch),
- OPCODE(o1_repeatUntil),
- OPCODE(o1_whileDo),
- /* 08 */
- OPCODE(o1_if),
- OPCODE(o2_assign),
- OPCODE(o1_loadSpriteToPos),
- {0, ""},
- /* 0C */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 10 */
- {0, ""},
- OPCODE(o2_printText),
- OPCODE(o1_loadTot),
- OPCODE(o1_palLoad),
- /* 14 */
- OPCODE(o1_keyFunc),
- OPCODE(o1_capturePush),
- OPCODE(o1_capturePop),
- OPCODE(o2_animPalInit),
- /* 18 */
- OPCODE(o2_addCollision),
- OPCODE(o2_freeCollision),
- OPCODE(o3_getTotTextItemPart),
- {0, ""},
- /* 1C */
- {0, ""},
- {0, ""},
- OPCODE(o1_drawOperations),
- OPCODE(o1_setcmdCount),
- /* 20 */
- OPCODE(o1_return),
- OPCODE(o1_renewTimeInVars),
- OPCODE(o1_speakerOn),
- OPCODE(o1_speakerOff),
- /* 24 */
- OPCODE(o1_putPixel),
- OPCODE(o2_goblinFunc),
- OPCODE(o1_createSprite),
- OPCODE(o1_freeSprite),
- /* 28 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 2C */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 30 */
- OPCODE(o1_returnTo),
- OPCODE(o1_loadSpriteContent),
- OPCODE(o1_copySprite),
- OPCODE(o1_fillRect),
- /* 34 */
- OPCODE(o1_drawLine),
- OPCODE(o1_strToLong),
- OPCODE(o1_invalidate),
- OPCODE(o1_setBackDelta),
- /* 38 */
- OPCODE(o1_playSound),
- OPCODE(o2_stopSound),
- OPCODE(o2_loadSound),
- OPCODE(o1_freeSoundSlot),
- /* 3C */
- OPCODE(o1_waitEndPlay),
- OPCODE(o1_playComposition),
- OPCODE(o2_getFreeMem),
- OPCODE(o2_checkData),
- /* 40 */
- {0, ""},
- OPCODE(o1_prepareStr),
- OPCODE(o1_insertStr),
- OPCODE(o1_cutStr),
- /* 44 */
- OPCODE(o1_strstr),
- OPCODE(o5_istrlen),
- OPCODE(o1_setMousePos),
- OPCODE(o1_setFrameRate),
- /* 48 */
- OPCODE(o1_animatePalette),
- OPCODE(o1_animateCursor),
- OPCODE(o1_blitCursor),
- OPCODE(o1_loadFont),
- /* 4C */
- OPCODE(o1_freeFont),
- OPCODE(o2_readData),
- OPCODE(o2_writeData),
- OPCODE(o1_manageDataFile),
- };
-
- static const OpcodeGoblinEntryV5 opcodesGoblin[71] = {
- /* 00 */
- OPCODE(o5_spaceShooter),
- OPCODE(o5_getSystemCDSpeed),
- OPCODE(o5_getSystemRAM),
- OPCODE(o5_getSystemCPUSpeed),
- /* 04 */
- OPCODE(o5_getSystemDrawSpeed),
- OPCODE(o5_totalSystemSpecs),
- OPCODE(o5_saveSystemSpecs),
- OPCODE(o5_loadSystemSpecs),
- /* 08 */
- OPCODE(o5_gob92),
- OPCODE(o5_gob95),
- OPCODE(o5_gob96),
- OPCODE(o5_gob97),
- /* 0C */
- OPCODE(o5_gob98),
- OPCODE(o5_gob100),
- OPCODE(o5_gob200),
- {0, ""},
- /* 10 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 14 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 18 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 1C */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 20 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 24 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 28 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 2C */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 30 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 34 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 38 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 3C */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 40 */
- {0, ""},
- {0, ""},
- {0, ""},
- {0, ""},
- /* 44 */
- {0, ""},
- {0, ""},
- {0, ""},
- };
-
- _opcodesDrawV5 = opcodesDraw;
- _opcodesFuncV5 = opcodesFunc;
- _opcodesGoblinV5 = opcodesGoblin;
-}
-
-void Inter_v5::executeDrawOpcode(byte i) {
- debugC(1, kDebugDrawOp, "opcodeDraw %d [0x%X] (%s)",
- i, i, getOpcodeDrawDesc(i));
-
- OpcodeDrawProcV5 op = _opcodesDrawV5[i].proc;
+void Inter_v5::setupOpcodesDraw() {
+ Inter_v4::setupOpcodesDraw();
- if (op == 0)
- warning("unimplemented opcodeDraw: %d", i);
- else
- (this->*op) ();
+ OPCODEDRAW(0x61, o5_deleteFile);
+ OPCODEDRAW(0x80, o5_initScreen);
}
-bool Inter_v5::executeFuncOpcode(byte i, byte j, OpFuncParams &params) {
- debugC(1, kDebugFuncOp, "opcodeFunc %d.%d [0x%X.0x%X] (%s) - %s, %d, %d",
- i, j, i, j, getOpcodeFuncDesc(i, j), _vm->_game->_curTotFile,
- (uint) (_vm->_global->_inter_execPtr - _vm->_game->_totFileData),
- (uint) (_vm->_global->_inter_execPtr - _vm->_game->_totFileData - params.counter - 4));
-
- if ((i > 4) || (j > 15)) {
- warning("unimplemented opcodeFunc: %d.%d", i, j);
- return false;
- }
+void Inter_v5::setupOpcodesFunc() {
+ Inter_v4::setupOpcodesFunc();
- OpcodeFuncProcV5 op = _opcodesFuncV5[i*16 + j].proc;
-
- if (op == 0)
- warning("unimplemented opcodeFunc: %d.%d", i, j);
- else
- return (this->*op) (params);
-
- return false;
-}
-
-void Inter_v5::executeGoblinOpcode(int i, OpGobParams &params) {
- debugC(1, kDebugGobOp, "opcodeGoblin %d [0x%X] (%s)",
- i, i, getOpcodeGoblinDesc(i));
-
- OpcodeGoblinProcV5 op = 0;
-
- for (int j = 0; j < ARRAYSIZE(_goblinFuncLookUp); j++)
- if (_goblinFuncLookUp[j][0] == i) {
- op = _opcodesGoblinV5[_goblinFuncLookUp[j][1]].proc;
- break;
- }
-
- _vm->_global->_inter_execPtr -= 2;
-
- if (op == 0) {
- warning("unimplemented opcodeGoblin: %d", i);
-
- int16 paramCount = load16();
- _vm->_global->_inter_execPtr += paramCount * 2;
- } else {
- params.extraData = i;
-
- (this->*op) (params);
- }
+ OPCODEFUNC(0x45, o5_istrlen);
}
-const char *Inter_v5::getOpcodeDrawDesc(byte i) {
- return _opcodesDrawV5[i].desc;
-}
-
-const char *Inter_v5::getOpcodeFuncDesc(byte i, byte j) {
- if ((i > 4) || (j > 15))
- return "";
-
- return _opcodesFuncV5[i*16 + j].desc;
-}
-
-const char *Inter_v5::getOpcodeGoblinDesc(int i) {
- for (int j = 0; j < ARRAYSIZE(_goblinFuncLookUp); j++)
- if (_goblinFuncLookUp[j][0] == i)
- return _opcodesGoblinV5[_goblinFuncLookUp[j][1]].desc;
- return "";
+void Inter_v5::setupOpcodesGob() {
+ OPCODEGOB( 0, o5_spaceShooter);
+ OPCODEGOB( 1, o5_spaceShooter);
+ OPCODEGOB( 2, o5_spaceShooter);
+ OPCODEGOB( 3, o5_spaceShooter);
+
+ OPCODEGOB( 33, o5_spaceShooter);
+
+ OPCODEGOB( 80, o5_getSystemCDSpeed);
+ OPCODEGOB( 81, o5_getSystemRAM);
+ OPCODEGOB( 82, o5_getSystemCPUSpeed);
+ OPCODEGOB( 83, o5_getSystemDrawSpeed);
+ OPCODEGOB( 84, o5_totalSystemSpecs);
+
+ OPCODEGOB( 85, o5_saveSystemSpecs);
+ OPCODEGOB( 86, o5_loadSystemSpecs);
+
+ OPCODEGOB( 87, o5_spaceShooter);
+ OPCODEGOB( 88, o5_spaceShooter);
+ OPCODEGOB( 89, o5_spaceShooter);
+ OPCODEGOB( 90, o5_spaceShooter);
+
+ OPCODEGOB( 91, o5_spaceShooter);
+ OPCODEGOB( 92, o5_gob92);
+ OPCODEGOB( 93, o5_spaceShooter);
+ OPCODEGOB( 94, o5_spaceShooter);
+
+ OPCODEGOB( 95, o5_gob95);
+ OPCODEGOB( 96, o5_gob96);
+ OPCODEGOB( 97, o5_gob97);
+ OPCODEGOB( 98, o5_gob98);
+
+ OPCODEGOB( 99, o5_spaceShooter);
+ OPCODEGOB(100, o5_gob100);
+ OPCODEGOB(200, o5_gob200);
}
void Inter_v5::o5_deleteFile() {
- evalExpr(0);
+ _vm->_game->_script->evalExpr(0);
- warning("Dynasty Stub: deleteFile \"%s\"", _vm->_global->_inter_resStr);
+ warning("Dynasty Stub: deleteFile \"%s\"", _vm->_game->_script->getResultStr());
}
void Inter_v5::o5_initScreen() {
@@ -683,13 +104,13 @@ void Inter_v5::o5_initScreen() {
int16 videoMode;
int16 width, height;
- offY = load16();
+ offY = _vm->_game->_script->readInt16();
videoMode = offY & 0xFF;
offY = (offY >> 8) & 0xFF;
- width = _vm->_parse->parseValExpr();
- height = _vm->_parse->parseValExpr();
+ width = _vm->_game->_script->readValExpr();
+ height = _vm->_game->_script->readValExpr();
warning("initScreen: %d, %d, %d, %d", width, height, offY, videoMode);
@@ -784,18 +205,18 @@ bool Inter_v5::o5_istrlen(OpFuncParams &params) {
int16 len;
uint16 type;
- if (*_vm->_global->_inter_execPtr == 0x80) {
- _vm->_global->_inter_execPtr++;
+ if (_vm->_game->_script->peekByte() == 0x80) {
+ _vm->_game->_script->skip(1);
- strVar1 = _vm->_parse->parseVarIndex();
- strVar2 = _vm->_parse->parseVarIndex(0, &type);
+ strVar1 = _vm->_game->_script->readVarIndex();
+ strVar2 = _vm->_game->_script->readVarIndex(0, &type);
len = _vm->_draw->stringLength(GET_VARO_STR(strVar1), READ_VARO_UINT16(strVar2));
} else {
- strVar1 = _vm->_parse->parseVarIndex();
- strVar2 = _vm->_parse->parseVarIndex(0, &type);
+ strVar1 = _vm->_game->_script->readVarIndex();
+ strVar2 = _vm->_game->_script->readVarIndex(0, &type);
if (_vm->_global->_language == 10) {
// Extra handling for Japanese strings
@@ -814,40 +235,36 @@ bool Inter_v5::o5_istrlen(OpFuncParams &params) {
}
void Inter_v5::o5_spaceShooter(OpGobParams &params) {
- int16 paramCount = load16();
-
warning("Dynasty Stub: Space shooter: %d, %d, %s",
- params.extraData, paramCount, _vm->_game->_curTotFile);
+ params.extraData, params.paramCount, _vm->_game->_curTotFile);
- if (paramCount < 4) {
+ if (params.paramCount < 4) {
warning("Space shooter variable counter < 4");
- _vm->_global->_inter_execPtr += paramCount * 2;
+ _vm->_game->_script->skip(params.paramCount * 2);
return;
}
- uint32 var1 = load16() * 4;
- uint32 var2 = load16() * 4;
+ uint32 var1 = _vm->_game->_script->readInt16() * 4;
+ uint32 var2 = _vm->_game->_script->readInt16() * 4;
- load16();
- load16();
+ _vm->_game->_script->readInt16();
+ _vm->_game->_script->readInt16();
if (params.extraData != 0) {
WRITE_VARO_UINT32(var1, 2);
WRITE_VARO_UINT32(var2, 0);
} else {
- if (paramCount < 5) {
+ if (params.paramCount < 5) {
warning("Space shooter variable counter < 5");
return;
}
- _vm->_global->_inter_execPtr += (paramCount - 4) * 2;
+ _vm->_game->_script->skip((params.paramCount - 4) * 2);
}
}
void Inter_v5::o5_getSystemCDSpeed(OpGobParams &params) {
- _vm->_global->_inter_execPtr += 2;
-
- WRITE_VAR_UINT32(load16(), 100); // Fudging 100%
+ WRITE_VAR_UINT32(_vm->_game->_script->readInt16(), 100); // Fudging 100%
Video::FontDesc *font;
if ((font = _vm->_util->loadFont("SPEED.LET"))) {
@@ -859,9 +276,7 @@ void Inter_v5::o5_getSystemCDSpeed(OpGobParams &params) {
}
void Inter_v5::o5_getSystemRAM(OpGobParams &params) {
- _vm->_global->_inter_execPtr += 2;
-
- WRITE_VAR_UINT32(load16(), 100); // Fudging 100%
+ WRITE_VAR_UINT32(_vm->_game->_script->readInt16(), 100); // Fudging 100%
Video::FontDesc *font;
if ((font = _vm->_util->loadFont("SPEED.LET"))) {
@@ -873,9 +288,7 @@ void Inter_v5::o5_getSystemRAM(OpGobParams &params) {
}
void Inter_v5::o5_getSystemCPUSpeed(OpGobParams &params) {
- _vm->_global->_inter_execPtr += 2;
-
- WRITE_VAR_UINT32(load16(), 100); // Fudging 100%
+ WRITE_VAR_UINT32(_vm->_game->_script->readInt16(), 100); // Fudging 100%
Video::FontDesc *font;
if ((font = _vm->_util->loadFont("SPEED.LET"))) {
@@ -887,9 +300,7 @@ void Inter_v5::o5_getSystemCPUSpeed(OpGobParams &params) {
}
void Inter_v5::o5_getSystemDrawSpeed(OpGobParams &params) {
- _vm->_global->_inter_execPtr += 2;
-
- WRITE_VAR_UINT32(load16(), 100); // Fudging 100%
+ WRITE_VAR_UINT32(_vm->_game->_script->readInt16(), 100); // Fudging 100%
Video::FontDesc *font;
if ((font = _vm->_util->loadFont("SPEED.LET"))) {
@@ -901,9 +312,7 @@ void Inter_v5::o5_getSystemDrawSpeed(OpGobParams &params) {
}
void Inter_v5::o5_totalSystemSpecs(OpGobParams &params) {
- _vm->_global->_inter_execPtr += 2;
-
- WRITE_VAR_UINT32(load16(), 100); // Fudging 100%
+ WRITE_VAR_UINT32(_vm->_game->_script->readInt16(), 100); // Fudging 100%
Video::FontDesc *font;
if ((font = _vm->_util->loadFont("SPEED.LET"))) {
@@ -917,8 +326,6 @@ void Inter_v5::o5_totalSystemSpecs(OpGobParams &params) {
void Inter_v5::o5_saveSystemSpecs(OpGobParams &params) {
warning("Dynasty Stub: Saving system specifications");
- _vm->_global->_inter_execPtr += 2;
-
/*
FILE *f = fopen("SAVE\\SPEED.INF", w);
fwrite(&_cdSpeed, sizeof(_cdSpeed), 1, f);
@@ -933,8 +340,6 @@ void Inter_v5::o5_saveSystemSpecs(OpGobParams &params) {
void Inter_v5::o5_loadSystemSpecs(OpGobParams &params) {
warning("Dynasty Stub: Loading system specifications");
- _vm->_global->_inter_execPtr += 2;
-
/*
FILE *f = fopen("SAVE\\SPEED.INF", r);
fread(&_cdSpeed, sizeof(_cdSpeed), 1, f);
@@ -971,32 +376,26 @@ void Inter_v5::o5_loadSystemSpecs(OpGobParams &params) {
void Inter_v5::o5_gob92(OpGobParams &params) {
warning("Dynasty Stub: GobFunc 92");
- _vm->_global->_inter_execPtr += 2;
-
- WRITE_VAR_UINT32(load16(), 0 /* (uint32) ((int32) ((int8) _gob92_1)) */);
+ WRITE_VAR_UINT32(_vm->_game->_script->readInt16(), 0 /* (uint32) ((int32) ((int8) _gob92_1)) */);
}
void Inter_v5::o5_gob95(OpGobParams &params) {
warning("Dynasty Stub: GobFunc 95");
- _vm->_global->_inter_execPtr += 2;
-
- WRITE_VAR_UINT32(load16(), 0 /* (uint32) ((int32) ((int16) speedThrottle4)) */);
- WRITE_VAR_UINT32(load16(), 0 /* (uint32) ((int32) ((int8) speedThrottle3)) */);
- WRITE_VAR_UINT32(load16(), 0 /* (uint32) ((int32) ((int8) speedThrottle2)) */);
- WRITE_VAR_UINT32(load16(), 0 /* (uint32) ((int32) ((int16) speedThrottle1)) */);
+ WRITE_VAR_UINT32(_vm->_game->_script->readInt16(), 0 /* (uint32) ((int32) ((int16) speedThrottle4)) */);
+ WRITE_VAR_UINT32(_vm->_game->_script->readInt16(), 0 /* (uint32) ((int32) ((int8) speedThrottle3)) */);
+ WRITE_VAR_UINT32(_vm->_game->_script->readInt16(), 0 /* (uint32) ((int32) ((int8) speedThrottle2)) */);
+ WRITE_VAR_UINT32(_vm->_game->_script->readInt16(), 0 /* (uint32) ((int32) ((int16) speedThrottle1)) */);
}
void Inter_v5::o5_gob96(OpGobParams &params) {
int16 speedThrottle4, speedThrottle1;
byte speedThrottle3, speedThrottle2;
- _vm->_global->_inter_execPtr += 2;
-
- speedThrottle4 = READ_VAR_UINT16(load16());
- speedThrottle3 = READ_VAR_UINT8(load16());
- speedThrottle2 = READ_VAR_UINT8(load16());
- speedThrottle1 = READ_VAR_UINT16(load16());
+ speedThrottle4 = READ_VAR_UINT16(_vm->_game->_script->readInt16());
+ speedThrottle3 = READ_VAR_UINT8(_vm->_game->_script->readInt16());
+ speedThrottle2 = READ_VAR_UINT8(_vm->_game->_script->readInt16());
+ speedThrottle1 = READ_VAR_UINT16(_vm->_game->_script->readInt16());
warning("Dynasty Stub: GobFunc 96: %d, %d, %d, %d",
speedThrottle4, speedThrottle3, speedThrottle2, speedThrottle1);
@@ -1006,23 +405,17 @@ void Inter_v5::o5_gob96(OpGobParams &params) {
void Inter_v5::o5_gob97(OpGobParams &params) {
_gob_97_98_val = 1;
-
- _vm->_global->_inter_execPtr += 2;
}
void Inter_v5::o5_gob98(OpGobParams &params) {
_gob_97_98_val = 0;
-
- _vm->_global->_inter_execPtr += 2;
}
void Inter_v5::o5_gob100(OpGobParams &params) {
- _vm->_global->_inter_execPtr += 2;
-
- uint16 var1 = READ_VAR_UINT16(load16());
- uint16 var2 = READ_VAR_UINT16(load16());
- uint16 var3 = READ_VAR_UINT16(load16());
- uint16 var4 = READ_VAR_UINT16(load16());
+ uint16 var1 = READ_VAR_UINT16(_vm->_game->_script->readInt16());
+ uint16 var2 = READ_VAR_UINT16(_vm->_game->_script->readInt16());
+ uint16 var3 = READ_VAR_UINT16(_vm->_game->_script->readInt16());
+ uint16 var4 = READ_VAR_UINT16(_vm->_game->_script->readInt16());
warning("Dynasty Stub: GobFunc 100: %d, %d, %d, %d", var1, var2, var3, var4);
@@ -1031,11 +424,9 @@ void Inter_v5::o5_gob100(OpGobParams &params) {
}
void Inter_v5::o5_gob200(OpGobParams &params) {
- _vm->_global->_inter_execPtr += 2;
-
- uint16 var1 = load16(); // index into the spritesArray
- uint16 var2 = load16();
- uint16 var3 = load16();
+ uint16 var1 = _vm->_game->_script->readUint16(); // index into the spritesArray
+ uint16 var2 = _vm->_game->_script->readUint16();
+ uint16 var3 = _vm->_game->_script->readUint16();
warning("Dynasty Stub: GobFunc 200: %d, %d, %d", var1, var2, var3);
}