mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-14 13:50:13 +00:00
Changed opcodeDraw to be functor-based
svn-id: r41601
This commit is contained in:
parent
3bfca53709
commit
25c92dfdef
@ -67,6 +67,21 @@ Inter::~Inter() {
|
||||
delocateVars();
|
||||
}
|
||||
|
||||
void Inter::NsetupOpcodes() {
|
||||
setupOpcodesDraw();
|
||||
}
|
||||
|
||||
void Inter::executeOpcodeDraw(byte i) {
|
||||
if (_opcodesDraw[i].proc && _opcodesDraw[i].proc->isValid())
|
||||
(*_opcodesDraw[i].proc)();
|
||||
else
|
||||
warning("unimplemented opcodeDraw: %d", i);
|
||||
}
|
||||
|
||||
const char *Inter::getDescOpcodeDraw(byte i) {
|
||||
return _opcodesDraw[i].desc;
|
||||
}
|
||||
|
||||
void Inter::initControlVars(char full) {
|
||||
*_nestLevel = 0;
|
||||
*_breakFromLevel = -1;
|
||||
|
@ -26,11 +26,43 @@
|
||||
#ifndef GOB_INTER_H
|
||||
#define GOB_INTER_H
|
||||
|
||||
#include "common/func.h"
|
||||
|
||||
#include "gob/goblin.h"
|
||||
#include "gob/variables.h"
|
||||
|
||||
namespace Gob {
|
||||
|
||||
// This is to help devices with small memory (PDA, smartphones, ...)
|
||||
// to save abit of memory used by opcode names in the Scumm engine.
|
||||
#ifndef REDUCE_MEMORY_USAGE
|
||||
#define _OPCODEDRAW(ver, x) setProc(new Common::Functor0Mem<void, ver>(this, &ver::x), #x)
|
||||
#else
|
||||
#define _OPCODEDRAW(ver, x) setProc(new Common::Functor0Mem<void, ver>(this, &ver::x), "")
|
||||
#endif
|
||||
|
||||
#define CLEAROPCODEDRAW(i) _opcodesDraw[i].setProc(0, 0);
|
||||
|
||||
typedef Common::Functor0<void> OpcodeDraw;
|
||||
|
||||
struct OpcodeDrawEntry : Common::NonCopyable {
|
||||
OpcodeDraw *proc;
|
||||
const char *desc;
|
||||
|
||||
OpcodeDrawEntry() : proc(0), desc(0) {}
|
||||
~OpcodeDrawEntry() {
|
||||
setProc(0, 0);
|
||||
}
|
||||
|
||||
void setProc(OpcodeDraw *p, const char *d) {
|
||||
if (proc != p) {
|
||||
delete proc;
|
||||
proc = p;
|
||||
}
|
||||
desc = d;
|
||||
}
|
||||
};
|
||||
|
||||
// This is to help devices with small memory (PDA, smartphones, ...)
|
||||
// to save abit of memory used by opcode names in the Scumm engine.
|
||||
#ifndef REDUCE_MEMORY_USAGE
|
||||
@ -85,6 +117,8 @@ protected:
|
||||
Goblin::Gob_Object *objDesc;
|
||||
};
|
||||
|
||||
OpcodeDrawEntry _opcodesDraw[256];
|
||||
|
||||
bool _break;
|
||||
|
||||
int16 _animPalLowIndex[8];
|
||||
@ -99,11 +133,16 @@ protected:
|
||||
|
||||
GobEngine *_vm;
|
||||
|
||||
void NsetupOpcodes();
|
||||
void executeOpcodeDraw(byte i);
|
||||
|
||||
const char *getDescOpcodeDraw(byte i);
|
||||
|
||||
virtual void setupOpcodesDraw() = 0;
|
||||
|
||||
virtual void setupOpcodes() = 0;
|
||||
virtual void executeDrawOpcode(byte i) = 0;
|
||||
virtual bool executeFuncOpcode(byte i, byte j, OpFuncParams ¶ms) = 0;
|
||||
virtual void executeGoblinOpcode(int i, OpGobParams ¶ms) = 0;
|
||||
virtual const char *getOpcodeDrawDesc(byte i) = 0;
|
||||
virtual const char *getOpcodeFuncDesc(byte i, byte j) = 0;
|
||||
virtual const char *getOpcodeGoblinDesc(int i) = 0;
|
||||
|
||||
@ -123,13 +162,8 @@ public:
|
||||
virtual void animPalette();
|
||||
|
||||
protected:
|
||||
typedef void (Inter_v1::*OpcodeDrawProcV1)();
|
||||
typedef bool (Inter_v1::*OpcodeFuncProcV1)(OpFuncParams &);
|
||||
typedef void (Inter_v1::*OpcodeGoblinProcV1)(OpGobParams &);
|
||||
struct OpcodeDrawEntryV1 {
|
||||
OpcodeDrawProcV1 proc;
|
||||
const char *desc;
|
||||
};
|
||||
struct OpcodeFuncEntryV1 {
|
||||
OpcodeFuncProcV1 proc;
|
||||
const char *desc;
|
||||
@ -138,16 +172,15 @@ protected:
|
||||
OpcodeGoblinProcV1 proc;
|
||||
const char *desc;
|
||||
};
|
||||
const OpcodeDrawEntryV1 *_opcodesDrawV1;
|
||||
const OpcodeFuncEntryV1 *_opcodesFuncV1;
|
||||
const OpcodeGoblinEntryV1 *_opcodesGoblinV1;
|
||||
static const int _goblinFuncLookUp[][2];
|
||||
|
||||
virtual void setupOpcodesDraw();
|
||||
|
||||
virtual void setupOpcodes();
|
||||
virtual void executeDrawOpcode(byte i);
|
||||
virtual bool executeFuncOpcode(byte i, byte j, OpFuncParams ¶ms);
|
||||
virtual void executeGoblinOpcode(int i, OpGobParams ¶ms);
|
||||
virtual const char *getOpcodeDrawDesc(byte i);
|
||||
virtual const char *getOpcodeFuncDesc(byte i, byte j);
|
||||
virtual const char *getOpcodeGoblinDesc(int i);
|
||||
|
||||
@ -318,13 +351,8 @@ public:
|
||||
virtual void animPalette();
|
||||
|
||||
protected:
|
||||
typedef void (Inter_v2::*OpcodeDrawProcV2)();
|
||||
typedef bool (Inter_v2::*OpcodeFuncProcV2)(OpFuncParams &);
|
||||
typedef void (Inter_v2::*OpcodeGoblinProcV2)(OpGobParams &);
|
||||
struct OpcodeDrawEntryV2 {
|
||||
OpcodeDrawProcV2 proc;
|
||||
const char *desc;
|
||||
};
|
||||
struct OpcodeFuncEntryV2 {
|
||||
OpcodeFuncProcV2 proc;
|
||||
const char *desc;
|
||||
@ -333,16 +361,15 @@ protected:
|
||||
OpcodeGoblinProcV2 proc;
|
||||
const char *desc;
|
||||
};
|
||||
const OpcodeDrawEntryV2 *_opcodesDrawV2;
|
||||
const OpcodeFuncEntryV2 *_opcodesFuncV2;
|
||||
const OpcodeGoblinEntryV2 *_opcodesGoblinV2;
|
||||
static const int _goblinFuncLookUp[][2];
|
||||
|
||||
virtual void setupOpcodesDraw();
|
||||
|
||||
virtual void setupOpcodes();
|
||||
virtual void executeDrawOpcode(byte i);
|
||||
virtual bool executeFuncOpcode(byte i, byte j, OpFuncParams ¶ms);
|
||||
virtual void executeGoblinOpcode(int i, OpGobParams ¶ms);
|
||||
virtual const char *getOpcodeDrawDesc(byte i);
|
||||
virtual const char *getOpcodeFuncDesc(byte i, byte j);
|
||||
virtual const char *getOpcodeGoblinDesc(int i);
|
||||
|
||||
@ -410,13 +437,8 @@ public:
|
||||
virtual ~Inter_Bargon() {}
|
||||
|
||||
protected:
|
||||
typedef void (Inter_Bargon::*OpcodeDrawProcBargon)();
|
||||
typedef bool (Inter_Bargon::*OpcodeFuncProcBargon)(OpFuncParams &);
|
||||
typedef void (Inter_Bargon::*OpcodeGoblinProcBargon)(OpGobParams &);
|
||||
struct OpcodeDrawEntryBargon {
|
||||
OpcodeDrawProcBargon proc;
|
||||
const char *desc;
|
||||
};
|
||||
struct OpcodeFuncEntryBargon {
|
||||
OpcodeFuncProcBargon proc;
|
||||
const char *desc;
|
||||
@ -425,16 +447,15 @@ protected:
|
||||
OpcodeGoblinProcBargon proc;
|
||||
const char *desc;
|
||||
};
|
||||
const OpcodeDrawEntryBargon *_opcodesDrawBargon;
|
||||
const OpcodeFuncEntryBargon *_opcodesFuncBargon;
|
||||
const OpcodeGoblinEntryBargon *_opcodesGoblinBargon;
|
||||
static const int _goblinFuncLookUp[][2];
|
||||
|
||||
virtual void setupOpcodesDraw();
|
||||
|
||||
virtual void setupOpcodes();
|
||||
virtual void executeDrawOpcode(byte i);
|
||||
virtual bool executeFuncOpcode(byte i, byte j, OpFuncParams ¶ms);
|
||||
virtual void executeGoblinOpcode(int i, OpGobParams ¶ms);
|
||||
virtual const char *getOpcodeDrawDesc(byte i);
|
||||
virtual const char *getOpcodeFuncDesc(byte i, byte j);
|
||||
virtual const char *getOpcodeGoblinDesc(int i);
|
||||
|
||||
@ -456,13 +477,8 @@ public:
|
||||
virtual ~Inter_Fascination() {}
|
||||
|
||||
protected:
|
||||
typedef void (Inter_Fascination::*OpcodeDrawProcFascination)();
|
||||
typedef bool (Inter_Fascination::*OpcodeFuncProcFascination)(OpFuncParams &);
|
||||
typedef void (Inter_Fascination::*OpcodeGoblinProcFascination)(OpGobParams &);
|
||||
struct OpcodeDrawEntryFascination {
|
||||
OpcodeDrawProcFascination proc;
|
||||
const char *desc;
|
||||
};
|
||||
struct OpcodeFuncEntryFascination {
|
||||
OpcodeFuncProcFascination proc;
|
||||
const char *desc;
|
||||
@ -471,16 +487,15 @@ protected:
|
||||
OpcodeGoblinProcFascination proc;
|
||||
const char *desc;
|
||||
};
|
||||
const OpcodeDrawEntryFascination *_opcodesDrawFascination;
|
||||
const OpcodeFuncEntryFascination *_opcodesFuncFascination;
|
||||
const OpcodeGoblinEntryFascination *_opcodesGoblinFascination;
|
||||
static const int _goblinFuncLookUp[][2];
|
||||
|
||||
virtual void setupOpcodesDraw();
|
||||
|
||||
virtual void setupOpcodes();
|
||||
virtual void executeDrawOpcode(byte i);
|
||||
virtual bool executeFuncOpcode(byte i, byte j, OpFuncParams ¶ms);
|
||||
virtual void executeGoblinOpcode(int i, OpGobParams ¶ms);
|
||||
virtual const char *getOpcodeDrawDesc(byte i);
|
||||
virtual const char *getOpcodeFuncDesc(byte i, byte j);
|
||||
virtual const char *getOpcodeGoblinDesc(int i);
|
||||
|
||||
@ -517,13 +532,8 @@ public:
|
||||
virtual ~Inter_v3() {}
|
||||
|
||||
protected:
|
||||
typedef void (Inter_v3::*OpcodeDrawProcV3)();
|
||||
typedef bool (Inter_v3::*OpcodeFuncProcV3)(OpFuncParams &);
|
||||
typedef void (Inter_v3::*OpcodeGoblinProcV3)(OpGobParams &);
|
||||
struct OpcodeDrawEntryV3 {
|
||||
OpcodeDrawProcV3 proc;
|
||||
const char *desc;
|
||||
};
|
||||
struct OpcodeFuncEntryV3 {
|
||||
OpcodeFuncProcV3 proc;
|
||||
const char *desc;
|
||||
@ -532,16 +542,15 @@ protected:
|
||||
OpcodeGoblinProcV3 proc;
|
||||
const char *desc;
|
||||
};
|
||||
const OpcodeDrawEntryV3 *_opcodesDrawV3;
|
||||
const OpcodeFuncEntryV3 *_opcodesFuncV3;
|
||||
const OpcodeGoblinEntryV3 *_opcodesGoblinV3;
|
||||
static const int _goblinFuncLookUp[][2];
|
||||
|
||||
virtual void setupOpcodesDraw();
|
||||
|
||||
virtual void setupOpcodes();
|
||||
virtual void executeDrawOpcode(byte i);
|
||||
virtual bool executeFuncOpcode(byte i, byte j, OpFuncParams ¶ms);
|
||||
virtual void executeGoblinOpcode(int i, OpGobParams ¶ms);
|
||||
virtual const char *getOpcodeDrawDesc(byte i);
|
||||
virtual const char *getOpcodeFuncDesc(byte i, byte j);
|
||||
virtual const char *getOpcodeGoblinDesc(int i);
|
||||
|
||||
@ -560,13 +569,8 @@ public:
|
||||
virtual ~Inter_v4() {}
|
||||
|
||||
protected:
|
||||
typedef void (Inter_v4::*OpcodeDrawProcV4)();
|
||||
typedef bool (Inter_v4::*OpcodeFuncProcV4)(OpFuncParams &);
|
||||
typedef void (Inter_v4::*OpcodeGoblinProcV4)(OpGobParams &);
|
||||
struct OpcodeDrawEntryV4 {
|
||||
OpcodeDrawProcV4 proc;
|
||||
const char *desc;
|
||||
};
|
||||
struct OpcodeFuncEntryV4 {
|
||||
OpcodeFuncProcV4 proc;
|
||||
const char *desc;
|
||||
@ -575,16 +579,15 @@ protected:
|
||||
OpcodeGoblinProcV4 proc;
|
||||
const char *desc;
|
||||
};
|
||||
const OpcodeDrawEntryV4 *_opcodesDrawV4;
|
||||
const OpcodeFuncEntryV4 *_opcodesFuncV4;
|
||||
const OpcodeGoblinEntryV4 *_opcodesGoblinV4;
|
||||
static const int _goblinFuncLookUp[][2];
|
||||
|
||||
virtual void setupOpcodesDraw();
|
||||
|
||||
virtual void setupOpcodes();
|
||||
virtual void executeDrawOpcode(byte i);
|
||||
virtual bool executeFuncOpcode(byte i, byte j, OpFuncParams ¶ms);
|
||||
virtual void executeGoblinOpcode(int i, OpGobParams ¶ms);
|
||||
virtual const char *getOpcodeDrawDesc(byte i);
|
||||
virtual const char *getOpcodeFuncDesc(byte i, byte j);
|
||||
virtual const char *getOpcodeGoblinDesc(int i);
|
||||
|
||||
@ -598,13 +601,8 @@ public:
|
||||
virtual ~Inter_v5() {}
|
||||
|
||||
protected:
|
||||
typedef void (Inter_v5::*OpcodeDrawProcV5)();
|
||||
typedef bool (Inter_v5::*OpcodeFuncProcV5)(OpFuncParams &);
|
||||
typedef void (Inter_v5::*OpcodeGoblinProcV5)(OpGobParams &);
|
||||
struct OpcodeDrawEntryV5 {
|
||||
OpcodeDrawProcV5 proc;
|
||||
const char *desc;
|
||||
};
|
||||
struct OpcodeFuncEntryV5 {
|
||||
OpcodeFuncProcV5 proc;
|
||||
const char *desc;
|
||||
@ -613,16 +611,15 @@ protected:
|
||||
OpcodeGoblinProcV5 proc;
|
||||
const char *desc;
|
||||
};
|
||||
const OpcodeDrawEntryV5 *_opcodesDrawV5;
|
||||
const OpcodeFuncEntryV5 *_opcodesFuncV5;
|
||||
const OpcodeGoblinEntryV5 *_opcodesGoblinV5;
|
||||
static const int _goblinFuncLookUp[][2];
|
||||
|
||||
virtual void setupOpcodesDraw();
|
||||
|
||||
virtual void setupOpcodes();
|
||||
virtual void executeDrawOpcode(byte i);
|
||||
virtual bool executeFuncOpcode(byte i, byte j, OpFuncParams ¶ms);
|
||||
virtual void executeGoblinOpcode(int i, OpGobParams ¶ms);
|
||||
virtual const char *getOpcodeDrawDesc(byte i);
|
||||
virtual const char *getOpcodeFuncDesc(byte i, byte j);
|
||||
virtual const char *getOpcodeGoblinDesc(int i);
|
||||
|
||||
@ -657,13 +654,8 @@ public:
|
||||
virtual ~Inter_v6() {}
|
||||
|
||||
protected:
|
||||
typedef void (Inter_v6::*OpcodeDrawProcV6)();
|
||||
typedef bool (Inter_v6::*OpcodeFuncProcV6)(OpFuncParams &);
|
||||
typedef void (Inter_v6::*OpcodeGoblinProcV6)(OpGobParams &);
|
||||
struct OpcodeDrawEntryV6 {
|
||||
OpcodeDrawProcV6 proc;
|
||||
const char *desc;
|
||||
};
|
||||
struct OpcodeFuncEntryV6 {
|
||||
OpcodeFuncProcV6 proc;
|
||||
const char *desc;
|
||||
@ -672,18 +664,17 @@ protected:
|
||||
OpcodeGoblinProcV6 proc;
|
||||
const char *desc;
|
||||
};
|
||||
const OpcodeDrawEntryV6 *_opcodesDrawV6;
|
||||
const OpcodeFuncEntryV6 *_opcodesFuncV6;
|
||||
const OpcodeGoblinEntryV6 *_opcodesGoblinV6;
|
||||
static const int _goblinFuncLookUp[][2];
|
||||
|
||||
virtual void setupOpcodesDraw();
|
||||
|
||||
bool _gotFirstPalette;
|
||||
|
||||
virtual void setupOpcodes();
|
||||
virtual void executeDrawOpcode(byte i);
|
||||
virtual bool executeFuncOpcode(byte i, byte j, OpFuncParams ¶ms);
|
||||
virtual void executeGoblinOpcode(int i, OpGobParams ¶ms);
|
||||
virtual const char *getOpcodeDrawDesc(byte i);
|
||||
virtual const char *getOpcodeFuncDesc(byte i, byte j);
|
||||
virtual const char *getOpcodeGoblinDesc(int i);
|
||||
|
||||
|
@ -40,6 +40,7 @@
|
||||
namespace Gob {
|
||||
|
||||
#define OPCODE(x) _OPCODE(Inter_Bargon, x)
|
||||
#define OPCODEDRAW(i, x) _opcodesDraw[i]._OPCODEDRAW(Inter_Bargon, x)
|
||||
|
||||
const int Inter_Bargon::_goblinFuncLookUp[][2] = {
|
||||
{1, 0},
|
||||
@ -117,332 +118,14 @@ const int Inter_Bargon::_goblinFuncLookUp[][2] = {
|
||||
|
||||
Inter_Bargon::Inter_Bargon(GobEngine *vm) : Inter_v2(vm) {
|
||||
setupOpcodes();
|
||||
NsetupOpcodes();
|
||||
}
|
||||
|
||||
void Inter_Bargon::setupOpcodesDraw() {
|
||||
Inter_v2::setupOpcodesDraw();
|
||||
}
|
||||
|
||||
void Inter_Bargon::setupOpcodes() {
|
||||
static const OpcodeDrawEntryBargon opcodesDraw[256] = {
|
||||
/* 00 */
|
||||
OPCODE(o1_loadMult),
|
||||
OPCODE(o2_playMult),
|
||||
OPCODE(o1_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, ""},
|
||||
{0, ""},
|
||||
{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(o2_initScreen),
|
||||
OPCODE(o2_scroll),
|
||||
OPCODE(o2_setScrollOffset),
|
||||
OPCODE(o2_playImd),
|
||||
/* 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 OpcodeFuncEntryBargon opcodesFunc[80] = {
|
||||
/* 00 */
|
||||
OPCODE(o1_callSub),
|
||||
@ -638,23 +321,10 @@ void Inter_Bargon::setupOpcodes() {
|
||||
{0, ""},
|
||||
};
|
||||
|
||||
_opcodesDrawBargon = opcodesDraw;
|
||||
_opcodesFuncBargon = opcodesFunc;
|
||||
_opcodesGoblinBargon = opcodesGoblin;
|
||||
}
|
||||
|
||||
void Inter_Bargon::executeDrawOpcode(byte i) {
|
||||
debugC(1, kDebugDrawOp, "opcodeDraw %d [0x%X] (%s)",
|
||||
i, i, getOpcodeDrawDesc(i));
|
||||
|
||||
OpcodeDrawProcBargon op = _opcodesDrawBargon[i].proc;
|
||||
|
||||
if (op == 0)
|
||||
warning("unimplemented opcodeDraw: %d", i);
|
||||
else
|
||||
(this->*op) ();
|
||||
}
|
||||
|
||||
bool Inter_Bargon::executeFuncOpcode(byte i, byte j, OpFuncParams ¶ms) {
|
||||
debugC(1, kDebugFuncOp, "opcodeFunc %d.%d [0x%X.0x%X] (%s)",
|
||||
i, j, i, j, getOpcodeFuncDesc(i, j));
|
||||
@ -697,10 +367,6 @@ void Inter_Bargon::executeGoblinOpcode(int i, OpGobParams ¶ms) {
|
||||
(this->*op) (params);
|
||||
}
|
||||
|
||||
const char *Inter_Bargon::getOpcodeDrawDesc(byte i) {
|
||||
return _opcodesDrawBargon[i].desc;
|
||||
}
|
||||
|
||||
const char *Inter_Bargon::getOpcodeFuncDesc(byte i, byte j) {
|
||||
if ((i > 4) || (j > 15))
|
||||
return "";
|
||||
|
@ -41,6 +41,7 @@
|
||||
namespace Gob {
|
||||
|
||||
#define OPCODE(x) _OPCODE(Inter_Fascination, x)
|
||||
#define OPCODEDRAW(i, x) _opcodesDraw[i]._OPCODEDRAW(Inter_Fascination, x)
|
||||
|
||||
const int Inter_Fascination::_goblinFuncLookUp[][2] = {
|
||||
{1, 0},
|
||||
@ -62,332 +63,44 @@ const int Inter_Fascination::_goblinFuncLookUp[][2] = {
|
||||
|
||||
Inter_Fascination::Inter_Fascination(GobEngine *vm) : Inter_v2(vm) {
|
||||
setupOpcodes();
|
||||
NsetupOpcodes();
|
||||
}
|
||||
|
||||
void Inter_Fascination::setupOpcodesDraw() {
|
||||
Inter_v2::setupOpcodesDraw();
|
||||
|
||||
OPCODEDRAW(0x03, oFascin_cdUnknown3);
|
||||
|
||||
OPCODEDRAW(0x04, oFascin_cdUnknown4);
|
||||
OPCODEDRAW(0x05, oFascin_cdUnknown5);
|
||||
OPCODEDRAW(0x06, oFascin_cdUnknown6);
|
||||
|
||||
OPCODEDRAW(0x0A, oFascin_setRenderFlags);
|
||||
OPCODEDRAW(0x0B, oFascin_cdUnknown11);
|
||||
|
||||
CLEAROPCODEDRAW(0x50);
|
||||
CLEAROPCODEDRAW(0x51);
|
||||
CLEAROPCODEDRAW(0x52);
|
||||
CLEAROPCODEDRAW(0x53);
|
||||
|
||||
CLEAROPCODEDRAW(0x54);
|
||||
CLEAROPCODEDRAW(0x55);
|
||||
CLEAROPCODEDRAW(0x56);
|
||||
|
||||
CLEAROPCODEDRAW(0x80);
|
||||
CLEAROPCODEDRAW(0x81);
|
||||
CLEAROPCODEDRAW(0x82);
|
||||
CLEAROPCODEDRAW(0x83);
|
||||
|
||||
CLEAROPCODEDRAW(0x84);
|
||||
CLEAROPCODEDRAW(0x85);
|
||||
CLEAROPCODEDRAW(0x86);
|
||||
CLEAROPCODEDRAW(0x87);
|
||||
|
||||
CLEAROPCODEDRAW(0x88);
|
||||
}
|
||||
|
||||
void Inter_Fascination::setupOpcodes() {
|
||||
static const OpcodeDrawEntryFascination opcodesDraw[256] = {
|
||||
/* 00 */
|
||||
OPCODE(o1_loadMult),
|
||||
OPCODE(o2_playMult),
|
||||
OPCODE(o1_freeMultKeys),
|
||||
OPCODE(oFascin_cdUnknown3),
|
||||
/* 04 */
|
||||
OPCODE(oFascin_cdUnknown4),
|
||||
OPCODE(oFascin_cdUnknown5),
|
||||
OPCODE(oFascin_cdUnknown6),
|
||||
OPCODE(o1_initCursor),
|
||||
/* 08 */
|
||||
OPCODE(o1_initCursorAnim),
|
||||
OPCODE(o1_clearCursorAnim),
|
||||
OPCODE(oFascin_setRenderFlags),
|
||||
OPCODE(oFascin_cdUnknown11),
|
||||
/* 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 */
|
||||
{0, ""},//OPCODE(o2_loadMapObjects),
|
||||
{0, ""},//OPCODE(o2_freeGoblins),
|
||||
{0, ""},//OPCODE(o2_moveGoblin),
|
||||
{0, ""},//OPCODE(o2_writeGoblinPos),
|
||||
/* 54 */
|
||||
{0, ""},//OPCODE(o2_stopGoblin),
|
||||
{0, ""},//OPCODE(o2_setGoblinState),
|
||||
{0, ""},//OPCODE(o2_placeGoblin),
|
||||
{0, ""},
|
||||
/* 58 */
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
/* 5C */
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
/* 60 */
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{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 */
|
||||
{0, ""},//OPCODE(o2_initScreen),
|
||||
{0, ""},//OPCODE(o2_scroll),
|
||||
{0, ""},//OPCODE(o2_setScrollOffset),
|
||||
{0, ""},//OPCODE(o2_playImd),
|
||||
/* 84 */
|
||||
{0, ""},//OPCODE(o2_getImdInfo),
|
||||
{0, ""},//OPCODE(o2_openItk),
|
||||
{0, ""},//OPCODE(o2_closeItk),
|
||||
{0, ""},//OPCODE(o2_setImdFrontSurf),
|
||||
/* 88 */
|
||||
{0, ""},//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 OpcodeFuncEntryFascination opcodesFunc[80] = {
|
||||
/* 00 */
|
||||
OPCODE(o1_callSub),
|
||||
@ -513,23 +226,10 @@ void Inter_Fascination::setupOpcodes() {
|
||||
OPCODE(oFascin_geUnknown1002), //to be replaced by o2_stopProtracker when protrackerPlay is fixed
|
||||
};
|
||||
|
||||
_opcodesDrawFascination = opcodesDraw;
|
||||
_opcodesFuncFascination = opcodesFunc;
|
||||
_opcodesGoblinFascination = opcodesGoblin;
|
||||
}
|
||||
|
||||
void Inter_Fascination::executeDrawOpcode(byte i) {
|
||||
debugC(1, kDebugDrawOp, "opcodeDraw %d [0x%X] (%s)",
|
||||
i, i, getOpcodeDrawDesc(i));
|
||||
|
||||
OpcodeDrawProcFascination op = _opcodesDrawFascination[i].proc;
|
||||
|
||||
if (op == 0)
|
||||
warning("Not yet implemented Fascination opcodeDraw: %d", i);
|
||||
else
|
||||
(this->*op) ();
|
||||
}
|
||||
|
||||
void Inter_Fascination::oFascin_geUnknown0(OpGobParams ¶ms) {
|
||||
warning("Fascination Unknown GE Function 0");
|
||||
warning("funcPlayImd with parameter : 'tirb.imd'");
|
||||
@ -717,10 +417,6 @@ void Inter_Fascination::executeGoblinOpcode(int i, OpGobParams ¶ms) {
|
||||
(this->*op) (params);
|
||||
}
|
||||
|
||||
const char *Inter_Fascination::getOpcodeDrawDesc(byte i) {
|
||||
return _opcodesDrawFascination[i].desc;
|
||||
}
|
||||
|
||||
const char *Inter_Fascination::getOpcodeFuncDesc(byte i, byte j) {
|
||||
if ((i > 4) || (j > 15))
|
||||
return "";
|
||||
|
@ -47,6 +47,7 @@
|
||||
namespace Gob {
|
||||
|
||||
#define OPCODE(x) _OPCODE(Inter_v1, x)
|
||||
#define OPCODEDRAW(i, x) _opcodesDraw[i]._OPCODEDRAW(Inter_v1, x)
|
||||
|
||||
const int Inter_v1::_goblinFuncLookUp[][2] = {
|
||||
{1, 0},
|
||||
@ -124,332 +125,46 @@ const int Inter_v1::_goblinFuncLookUp[][2] = {
|
||||
|
||||
Inter_v1::Inter_v1(GobEngine *vm) : Inter(vm) {
|
||||
setupOpcodes();
|
||||
NsetupOpcodes();
|
||||
}
|
||||
|
||||
void Inter_v1::setupOpcodesDraw() {
|
||||
OPCODEDRAW(0x00, o1_loadMult);
|
||||
OPCODEDRAW(0x01, o1_playMult);
|
||||
OPCODEDRAW(0x02, o1_freeMultKeys);
|
||||
|
||||
OPCODEDRAW(0x07, o1_initCursor);
|
||||
|
||||
OPCODEDRAW(0x08, o1_initCursorAnim);
|
||||
OPCODEDRAW(0x09, o1_clearCursorAnim);
|
||||
OPCODEDRAW(0x0A, o1_setRenderFlags);
|
||||
|
||||
OPCODEDRAW(0x10, o1_loadAnim);
|
||||
OPCODEDRAW(0x11, o1_freeAnim);
|
||||
OPCODEDRAW(0x12, o1_updateAnim);
|
||||
|
||||
OPCODEDRAW(0x14, o1_initMult);
|
||||
OPCODEDRAW(0x15, o1_freeMult);
|
||||
OPCODEDRAW(0x16, o1_animate);
|
||||
OPCODEDRAW(0x17, o1_loadMultObject);
|
||||
|
||||
OPCODEDRAW(0x18, o1_getAnimLayerInfo);
|
||||
OPCODEDRAW(0x19, o1_getObjAnimSize);
|
||||
OPCODEDRAW(0x1A, o1_loadStatic);
|
||||
OPCODEDRAW(0x1B, o1_freeStatic);
|
||||
|
||||
OPCODEDRAW(0x1C, o1_renderStatic);
|
||||
OPCODEDRAW(0x1D, o1_loadCurLayer);
|
||||
|
||||
OPCODEDRAW(0x20, o1_playCDTrack);
|
||||
OPCODEDRAW(0x21, o1_getCDTrackPos);
|
||||
OPCODEDRAW(0x22, o1_stopCD);
|
||||
|
||||
OPCODEDRAW(0x30, o1_loadFontToSprite);
|
||||
OPCODEDRAW(0x31, o1_freeFontToSprite);
|
||||
}
|
||||
|
||||
void Inter_v1::setupOpcodes() {
|
||||
static const OpcodeDrawEntryV1 opcodesDraw[256] = {
|
||||
/* 00 */
|
||||
OPCODE(o1_loadMult),
|
||||
OPCODE(o1_playMult),
|
||||
OPCODE(o1_freeMultKeys),
|
||||
{0, ""},
|
||||
/* 04 */
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
OPCODE(o1_initCursor),
|
||||
/* 08 */
|
||||
OPCODE(o1_initCursorAnim),
|
||||
OPCODE(o1_clearCursorAnim),
|
||||
OPCODE(o1_setRenderFlags),
|
||||
{0, ""},
|
||||
/* 0C */
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
/* 10 */
|
||||
OPCODE(o1_loadAnim),
|
||||
OPCODE(o1_freeAnim),
|
||||
OPCODE(o1_updateAnim),
|
||||
{0, ""},
|
||||
/* 14 */
|
||||
OPCODE(o1_initMult),
|
||||
OPCODE(o1_freeMult),
|
||||
OPCODE(o1_animate),
|
||||
OPCODE(o1_loadMultObject),
|
||||
/* 18 */
|
||||
OPCODE(o1_getAnimLayerInfo),
|
||||
OPCODE(o1_getObjAnimSize),
|
||||
OPCODE(o1_loadStatic),
|
||||
OPCODE(o1_freeStatic),
|
||||
/* 1C */
|
||||
OPCODE(o1_renderStatic),
|
||||
OPCODE(o1_loadCurLayer),
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
/* 20 */
|
||||
OPCODE(o1_playCDTrack),
|
||||
OPCODE(o1_getCDTrackPos),
|
||||
OPCODE(o1_stopCD),
|
||||
{0, ""},
|
||||
/* 24 */
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
/* 28 */
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
/* 2C */
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
/* 30 */
|
||||
OPCODE(o1_loadFontToSprite),
|
||||
OPCODE(o1_freeFontToSprite),
|
||||
{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, ""},
|
||||
{0, ""},
|
||||
/* 48 */
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
/* 4C */
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
/* 50 */
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
/* 54 */
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
/* 58 */
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
/* 5C */
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
/* 60 */
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{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 */
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
/* 84 */
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
{0, ""},
|
||||
/* 88 */
|
||||
{0, ""},
|
||||
{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 OpcodeFuncEntryV1 opcodesFunc[80] = {
|
||||
/* 00 */
|
||||
OPCODE(o1_callSub),
|
||||
@ -645,23 +360,10 @@ void Inter_v1::setupOpcodes() {
|
||||
OPCODE(o1_initGoblin)
|
||||
};
|
||||
|
||||
_opcodesDrawV1 = opcodesDraw;
|
||||
_opcodesFuncV1 = opcodesFunc;
|
||||
_opcodesGoblinV1 = opcodesGoblin;
|
||||
}
|
||||
|
||||
void Inter_v1::executeDrawOpcode(byte i) {
|
||||
debugC(1, kDebugDrawOp, "opcodeDraw %d [0x%X] (%s)",
|
||||
i, i, getOpcodeDrawDesc(i));
|
||||
|
||||
OpcodeDrawProcV1 op = _opcodesDrawV1[i].proc;
|
||||
|
||||
if (op == 0)
|
||||
warning("unimplemented opcodeDraw: %d", i);
|
||||
else
|
||||
(this->*op) ();
|
||||
}
|
||||
|
||||
bool Inter_v1::executeFuncOpcode(byte i, byte j, OpFuncParams ¶ms) {
|
||||
debugC(1, kDebugFuncOp, "opcodeFunc %d.%d [0x%X.0x%X] (%s)",
|
||||
i, j, i, j, getOpcodeFuncDesc(i, j));
|
||||
@ -701,10 +403,6 @@ void Inter_v1::executeGoblinOpcode(int i, OpGobParams ¶ms) {
|
||||
(this->*op) (params);
|
||||
}
|
||||
|
||||
const char *Inter_v1::getOpcodeDrawDesc(byte i) {
|
||||
return _opcodesDrawV1[i].desc;
|
||||
}
|
||||
|
||||
const char *Inter_v1::getOpcodeFuncDesc(byte i, byte j) {
|
||||
if ((i > 4) || (j > 15))
|
||||
return "";
|
||||
@ -1720,7 +1418,7 @@ bool Inter_v1::o1_drawOperations(OpFuncParams ¶ms) {
|
||||
|
||||
cmd = *_vm->_global->_inter_execPtr++;
|
||||
|
||||
executeDrawOpcode(cmd);
|
||||
executeOpcodeDraw(cmd);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@ -49,6 +49,7 @@
|
||||
namespace Gob {
|
||||
|
||||
#define OPCODE(x) _OPCODE(Inter_v2, x)
|
||||
#define OPCODEDRAW(i, x) _opcodesDraw[i]._OPCODEDRAW(Inter_v2, x)
|
||||
|
||||
const int Inter_v2::_goblinFuncLookUp[][2] = {
|
||||
{0, 0},
|
||||
@ -97,332 +98,64 @@ const int Inter_v2::_goblinFuncLookUp[][2] = {
|
||||
|
||||
Inter_v2::Inter_v2(GobEngine *vm) : Inter_v1(vm) {
|
||||
setupOpcodes();
|
||||
NsetupOpcodes();
|
||||
}
|
||||
|
||||
void Inter_v2::setupOpcodesDraw() {
|
||||
Inter_v1::setupOpcodesDraw();
|
||||
|
||||
OPCODEDRAW(0x01, o2_playMult);
|
||||
OPCODEDRAW(0x02, o2_freeMultKeys);
|
||||
|
||||
OPCODEDRAW(0x0A, o2_setRenderFlags);
|
||||
|
||||
OPCODEDRAW(0x13, o2_multSub);
|
||||
|
||||
OPCODEDRAW(0x14, o2_initMult);
|
||||
|
||||
OPCODEDRAW(0x17, o2_loadMultObject);
|
||||
|
||||
OPCODEDRAW(0x1C, o2_renderStatic);
|
||||
OPCODEDRAW(0x1D, o2_loadCurLayer);
|
||||
|
||||
OPCODEDRAW(0x20, o2_playCDTrack);
|
||||
OPCODEDRAW(0x21, o2_waitCDTrackEnd);
|
||||
OPCODEDRAW(0x22, o2_stopCD);
|
||||
OPCODEDRAW(0x23, o2_readLIC);
|
||||
|
||||
OPCODEDRAW(0x24, o2_freeLIC);
|
||||
OPCODEDRAW(0x25, o2_getCDTrackPos);
|
||||
|
||||
OPCODEDRAW(0x30, o2_loadFontToSprite);
|
||||
|
||||
OPCODEDRAW(0x40, o2_totSub);
|
||||
OPCODEDRAW(0x41, o2_switchTotSub);
|
||||
OPCODEDRAW(0x42, o2_pushVars);
|
||||
OPCODEDRAW(0x43, o2_popVars);
|
||||
|
||||
OPCODEDRAW(0x50, o2_loadMapObjects);
|
||||
OPCODEDRAW(0x51, o2_freeGoblins);
|
||||
OPCODEDRAW(0x52, o2_moveGoblin);
|
||||
OPCODEDRAW(0x53, o2_writeGoblinPos);
|
||||
|
||||
OPCODEDRAW(0x54, o2_stopGoblin);
|
||||
OPCODEDRAW(0x55, o2_setGoblinState);
|
||||
OPCODEDRAW(0x56, o2_placeGoblin);
|
||||
|
||||
OPCODEDRAW(0x80, o2_initScreen);
|
||||
OPCODEDRAW(0x81, o2_scroll);
|
||||
OPCODEDRAW(0x82, o2_setScrollOffset);
|
||||
OPCODEDRAW(0x83, o2_playImd);
|
||||
|
||||
OPCODEDRAW(0x84, o2_getImdInfo);
|
||||
OPCODEDRAW(0x85, o2_openItk);
|
||||
OPCODEDRAW(0x86, o2_closeItk);
|
||||
OPCODEDRAW(0x87, o2_setImdFrontSurf);
|
||||
|
||||
OPCODEDRAW(0x88, o2_resetImdFrontSurf);
|
||||
}
|
||||
|
||||
void Inter_v2::setupOpcodes() {
|
||||
static const OpcodeDrawEntryV2 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, ""},
|
||||
{0, ""},
|
||||
{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(o2_initScreen),
|
||||
OPCODE(o2_scroll),
|
||||
OPCODE(o2_setScrollOffset),
|
||||
OPCODE(o2_playImd),
|
||||
/* 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 OpcodeFuncEntryV2 opcodesFunc[80] = {
|
||||
/* 00 */
|
||||
OPCODE(o1_callSub),
|
||||
@ -618,23 +351,10 @@ void Inter_v2::setupOpcodes() {
|
||||
{0, ""},
|
||||
};
|
||||
|
||||
_opcodesDrawV2 = opcodesDraw;
|
||||
_opcodesFuncV2 = opcodesFunc;
|
||||
_opcodesGoblinV2 = opcodesGoblin;
|
||||
}
|
||||
|
||||
void Inter_v2::executeDrawOpcode(byte i) {
|
||||
debugC(1, kDebugDrawOp, "opcodeDraw %d [0x%X] (%s)",
|
||||
i, i, getOpcodeDrawDesc(i));
|
||||
|
||||
OpcodeDrawProcV2 op = _opcodesDrawV2[i].proc;
|
||||
|
||||
if (op == 0)
|
||||
warning("unimplemented opcodeDraw: %d", i);
|
||||
else
|
||||
(this->*op) ();
|
||||
}
|
||||
|
||||
bool Inter_v2::executeFuncOpcode(byte i, byte j, OpFuncParams ¶ms) {
|
||||
debugC(1, kDebugFuncOp, "opcodeFunc %d.%d [0x%X.0x%X] (%s)",
|
||||
i, j, i, j, getOpcodeFuncDesc(i, j));
|
||||
@ -676,10 +396,6 @@ void Inter_v2::executeGoblinOpcode(int i, OpGobParams ¶ms) {
|
||||
(this->*op) (params);
|
||||
}
|
||||
|
||||
const char *Inter_v2::getOpcodeDrawDesc(byte i) {
|
||||
return _opcodesDrawV2[i].desc;
|
||||
}
|
||||
|
||||
const char *Inter_v2::getOpcodeFuncDesc(byte i, byte j) {
|
||||
if ((i > 4) || (j > 15))
|
||||
return "";
|
||||
|
@ -37,6 +37,7 @@
|
||||
namespace Gob {
|
||||
|
||||
#define OPCODE(x) _OPCODE(Inter_v3, x)
|
||||
#define OPCODEDRAW(i, x) _opcodesDraw[i]._OPCODEDRAW(Inter_v3, x)
|
||||
|
||||
const int Inter_v3::_goblinFuncLookUp[][2] = {
|
||||
{0, 0},
|
||||
@ -114,332 +115,14 @@ const int Inter_v3::_goblinFuncLookUp[][2] = {
|
||||
|
||||
Inter_v3::Inter_v3(GobEngine *vm) : Inter_v2(vm) {
|
||||
setupOpcodes();
|
||||
NsetupOpcodes();
|
||||
}
|
||||
|
||||
void Inter_v3::setupOpcodesDraw() {
|
||||
Inter_v2::setupOpcodesDraw();
|
||||
}
|
||||
|
||||
void Inter_v3::setupOpcodes() {
|
||||
static const OpcodeDrawEntryV3 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, ""},
|
||||
{0, ""},
|
||||
{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(o2_initScreen),
|
||||
OPCODE(o2_scroll),
|
||||
OPCODE(o2_setScrollOffset),
|
||||
OPCODE(o2_playImd),
|
||||
/* 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 OpcodeFuncEntryV3 opcodesFunc[80] = {
|
||||
/* 00 */
|
||||
OPCODE(o1_callSub),
|
||||
@ -635,23 +318,10 @@ void Inter_v3::setupOpcodes() {
|
||||
{0, ""},
|
||||
};
|
||||
|
||||
_opcodesDrawV3 = opcodesDraw;
|
||||
_opcodesFuncV3 = opcodesFunc;
|
||||
_opcodesGoblinV3 = opcodesGoblin;
|
||||
}
|
||||
|
||||
void Inter_v3::executeDrawOpcode(byte i) {
|
||||
debugC(1, kDebugDrawOp, "opcodeDraw %d [0x%X] (%s)",
|
||||
i, i, getOpcodeDrawDesc(i));
|
||||
|
||||
OpcodeDrawProcV3 op = _opcodesDrawV3[i].proc;
|
||||
|
||||
if (op == 0)
|
||||
warning("unimplemented opcodeDraw: %d", i);
|
||||
else
|
||||
(this->*op) ();
|
||||
}
|
||||
|
||||
bool Inter_v3::executeFuncOpcode(byte i, byte j, OpFuncParams ¶ms) {
|
||||
debugC(1, kDebugFuncOp, "opcodeFunc %d.%d [0x%X.0x%X] (%s)",
|
||||
i, j, i, j, getOpcodeFuncDesc(i, j));
|
||||
@ -693,10 +363,6 @@ void Inter_v3::executeGoblinOpcode(int i, OpGobParams ¶ms) {
|
||||
(this->*op) (params);
|
||||
}
|
||||
|
||||
const char *Inter_v3::getOpcodeDrawDesc(byte i) {
|
||||
return _opcodesDrawV3[i].desc;
|
||||
}
|
||||
|
||||
const char *Inter_v3::getOpcodeFuncDesc(byte i, byte j) {
|
||||
if ((i > 4) || (j > 15))
|
||||
return "";
|
||||
|
@ -39,6 +39,7 @@
|
||||
namespace Gob {
|
||||
|
||||
#define OPCODE(x) _OPCODE(Inter_v4, x)
|
||||
#define OPCODEDRAW(i, x) _opcodesDraw[i]._OPCODEDRAW(Inter_v4, x)
|
||||
|
||||
const int Inter_v4::_goblinFuncLookUp[][2] = {
|
||||
{0, 0},
|
||||
@ -116,332 +117,17 @@ const int Inter_v4::_goblinFuncLookUp[][2] = {
|
||||
|
||||
Inter_v4::Inter_v4(GobEngine *vm) : Inter_v3(vm) {
|
||||
setupOpcodes();
|
||||
NsetupOpcodes();
|
||||
}
|
||||
|
||||
void Inter_v4::setupOpcodesDraw() {
|
||||
Inter_v3::setupOpcodesDraw();
|
||||
|
||||
OPCODEDRAW(0x80, o4_initScreen);
|
||||
OPCODEDRAW(0x83, o4_playVmdOrMusic);
|
||||
}
|
||||
|
||||
void Inter_v4::setupOpcodes() {
|
||||
static const OpcodeDrawEntryV4 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, ""},
|
||||
{0, ""},
|
||||
{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(o4_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 OpcodeFuncEntryV4 opcodesFunc[80] = {
|
||||
/* 00 */
|
||||
OPCODE(o1_callSub),
|
||||
@ -637,23 +323,10 @@ void Inter_v4::setupOpcodes() {
|
||||
{0, ""},
|
||||
};
|
||||
|
||||
_opcodesDrawV4 = opcodesDraw;
|
||||
_opcodesFuncV4 = opcodesFunc;
|
||||
_opcodesGoblinV4 = opcodesGoblin;
|
||||
}
|
||||
|
||||
void Inter_v4::executeDrawOpcode(byte i) {
|
||||
debugC(1, kDebugDrawOp, "opcodeDraw %d [0x%X] (%s)",
|
||||
i, i, getOpcodeDrawDesc(i));
|
||||
|
||||
OpcodeDrawProcV4 op = _opcodesDrawV4[i].proc;
|
||||
|
||||
if (op == 0)
|
||||
warning("unimplemented opcodeDraw: %d", i);
|
||||
else
|
||||
(this->*op) ();
|
||||
}
|
||||
|
||||
bool Inter_v4::executeFuncOpcode(byte i, byte j, OpFuncParams ¶ms) {
|
||||
debugC(1, kDebugFuncOp, "opcodeFunc %d.%d [0x%X.0x%X] (%s) - %s, %d, %d",
|
||||
i, j, i, j, getOpcodeFuncDesc(i, j), _vm->_game->_curTotFile,
|
||||
@ -699,10 +372,6 @@ void Inter_v4::executeGoblinOpcode(int i, OpGobParams ¶ms) {
|
||||
(this->*op) (params);
|
||||
}
|
||||
|
||||
const char *Inter_v4::getOpcodeDrawDesc(byte i) {
|
||||
return _opcodesDrawV4[i].desc;
|
||||
}
|
||||
|
||||
const char *Inter_v4::getOpcodeFuncDesc(byte i, byte j) {
|
||||
if ((i > 4) || (j > 15))
|
||||
return "";
|
||||
|
@ -36,6 +36,7 @@
|
||||
namespace Gob {
|
||||
|
||||
#define OPCODE(x) _OPCODE(Inter_v5, x)
|
||||
#define OPCODEDRAW(i, x) _opcodesDraw[i]._OPCODEDRAW(Inter_v5, x)
|
||||
|
||||
const int Inter_v5::_goblinFuncLookUp[][2] = {
|
||||
{0, 0},
|
||||
@ -69,332 +70,17 @@ const int Inter_v5::_goblinFuncLookUp[][2] = {
|
||||
|
||||
Inter_v5::Inter_v5(GobEngine *vm) : Inter_v4(vm) {
|
||||
setupOpcodes();
|
||||
NsetupOpcodes();
|
||||
}
|
||||
|
||||
void Inter_v5::setupOpcodesDraw() {
|
||||
Inter_v4::setupOpcodesDraw();
|
||||
|
||||
OPCODEDRAW(0x61, o5_deleteFile);
|
||||
OPCODEDRAW(0x80, o5_initScreen);
|
||||
}
|
||||
|
||||
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),
|
||||
@ -590,23 +276,10 @@ void Inter_v5::setupOpcodes() {
|
||||
{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;
|
||||
|
||||
if (op == 0)
|
||||
warning("unimplemented opcodeDraw: %d", i);
|
||||
else
|
||||
(this->*op) ();
|
||||
}
|
||||
|
||||
bool Inter_v5::executeFuncOpcode(byte i, byte j, OpFuncParams ¶ms) {
|
||||
debugC(1, kDebugFuncOp, "opcodeFunc %d.%d [0x%X.0x%X] (%s) - %s, %d, %d",
|
||||
i, j, i, j, getOpcodeFuncDesc(i, j), _vm->_game->_curTotFile,
|
||||
@ -654,10 +327,6 @@ void Inter_v5::executeGoblinOpcode(int i, OpGobParams ¶ms) {
|
||||
}
|
||||
}
|
||||
|
||||
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 "";
|
||||
|
@ -40,6 +40,7 @@
|
||||
namespace Gob {
|
||||
|
||||
#define OPCODE(x) _OPCODE(Inter_v6, x)
|
||||
#define OPCODEDRAW(i, x) _opcodesDraw[i]._OPCODEDRAW(Inter_v6, x)
|
||||
|
||||
const int Inter_v6::_goblinFuncLookUp[][2] = {
|
||||
{0, 0},
|
||||
@ -49,332 +50,18 @@ Inter_v6::Inter_v6(GobEngine *vm) : Inter_v5(vm) {
|
||||
_gotFirstPalette = false;
|
||||
|
||||
setupOpcodes();
|
||||
NsetupOpcodes();
|
||||
}
|
||||
|
||||
void Inter_v6::setupOpcodesDraw() {
|
||||
Inter_v5::setupOpcodesDraw();
|
||||
|
||||
OPCODEDRAW(0x40, o6_totSub);
|
||||
OPCODEDRAW(0x83, o6_playVmdOrMusic);
|
||||
OPCODEDRAW(0x85, o6_openItk);
|
||||
}
|
||||
|
||||
void Inter_v6::setupOpcodes() {
|
||||
static const OpcodeDrawEntryV6 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(o6_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(o6_playVmdOrMusic),
|
||||
/* 84 */
|
||||
OPCODE(o2_getImdInfo),
|
||||
OPCODE(o6_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 OpcodeFuncEntryV6 opcodesFunc[80] = {
|
||||
/* 00 */
|
||||
OPCODE(o1_callSub),
|
||||
@ -570,23 +257,10 @@ void Inter_v6::setupOpcodes() {
|
||||
{0, ""},
|
||||
};
|
||||
|
||||
_opcodesDrawV6 = opcodesDraw;
|
||||
_opcodesFuncV6 = opcodesFunc;
|
||||
_opcodesGoblinV6 = opcodesGoblin;
|
||||
}
|
||||
|
||||
void Inter_v6::executeDrawOpcode(byte i) {
|
||||
debugC(1, kDebugDrawOp, "opcodeDraw %d [0x%X] (%s)",
|
||||
i, i, getOpcodeDrawDesc(i));
|
||||
|
||||
OpcodeDrawProcV6 op = _opcodesDrawV6[i].proc;
|
||||
|
||||
if (op == 0)
|
||||
warning("unimplemented opcodeDraw: %d", i);
|
||||
else
|
||||
(this->*op) ();
|
||||
}
|
||||
|
||||
bool Inter_v6::executeFuncOpcode(byte i, byte j, OpFuncParams ¶ms) {
|
||||
_vm->_video->_palLUT->buildNext();
|
||||
|
||||
@ -636,10 +310,6 @@ void Inter_v6::executeGoblinOpcode(int i, OpGobParams ¶ms) {
|
||||
}
|
||||
}
|
||||
|
||||
const char *Inter_v6::getOpcodeDrawDesc(byte i) {
|
||||
return _opcodesDrawV6[i].desc;
|
||||
}
|
||||
|
||||
const char *Inter_v6::getOpcodeFuncDesc(byte i, byte j) {
|
||||
if ((i > 4) || (j > 15))
|
||||
return "";
|
||||
|
Loading…
Reference in New Issue
Block a user