aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Apers2005-11-05 19:42:50 +0000
committerChris Apers2005-11-05 19:42:50 +0000
commitc36eddd91a9c33b95329e1de12f6c8948f9b2c09 (patch)
tree481934f5dba5f67a112f2c7316a334919b73dc8a
parentb87ca6a5680a0649162855a42924aaefdcdb7ed0 (diff)
downloadscummvm-rg350-c36eddd91a9c33b95329e1de12f6c8948f9b2c09.tar.gz
scummvm-rg350-c36eddd91a9c33b95329e1de12f6c8948f9b2c09.tar.bz2
scummvm-rg350-c36eddd91a9c33b95329e1de12f6c8948f9b2c09.zip
- Move opcode table to a method so that it is correctly initialized with PalmOS ARM
svn-id: r19477
-rw-r--r--sword1/logic.cpp210
-rw-r--r--sword1/logic.h3
2 files changed, 110 insertions, 103 deletions
diff --git a/sword1/logic.cpp b/sword1/logic.cpp
index 886bc59448..3125496101 100644
--- a/sword1/logic.cpp
+++ b/sword1/logic.cpp
@@ -62,6 +62,8 @@ Logic::Logic(ObjectMan *pObjMan, ResMan *resMan, Screen *pScreen, Mouse *pMouse,
_eventMan = NULL;
_system = system;
_mixer = mixer;
+
+ setupMcodeTable();
}
Logic::~Logic(void) {
@@ -681,108 +683,112 @@ int Logic::interpretScript(Object *compact, int id, Header *scriptModule, int sc
}
}
-BSMcodeTable Logic::_mcodeTable[100] = {
- &Logic::fnBackground,
- &Logic::fnForeground,
- &Logic::fnSort,
- &Logic::fnNoSprite,
- &Logic::fnMegaSet,
- &Logic::fnAnim,
- &Logic::fnSetFrame,
- &Logic::fnFullAnim,
- &Logic::fnFullSetFrame,
- &Logic::fnFadeDown,
- &Logic::fnFadeUp,
- &Logic::fnCheckFade,
- &Logic::fnSetSpritePalette,
- &Logic::fnSetWholePalette,
- &Logic::fnSetFadeTargetPalette,
- &Logic::fnSetPaletteToFade,
- &Logic::fnSetPaletteToCut,
- &Logic::fnPlaySequence,
- &Logic::fnIdle,
- &Logic::fnPause,
- &Logic::fnPauseSeconds,
- &Logic::fnQuit,
- &Logic::fnKillId,
- &Logic::fnSuicide,
- &Logic::fnNewScript,
- &Logic::fnSubScript,
- &Logic::fnRestartScript,
- &Logic::fnSetBookmark,
- &Logic::fnGotoBookmark,
- &Logic::fnSendSync,
- &Logic::fnWaitSync,
- &Logic::cfnClickInteract,
- &Logic::cfnSetScript,
- &Logic::cfnPresetScript,
- &Logic::fnInteract,
- &Logic::fnIssueEvent,
- &Logic::fnCheckForEvent,
- &Logic::fnWipeHands,
- &Logic::fnISpeak,
- &Logic::fnTheyDo,
- &Logic::fnTheyDoWeWait,
- &Logic::fnWeWait,
- &Logic::fnChangeSpeechText,
- &Logic::fnTalkError,
- &Logic::fnStartTalk,
- &Logic::fnCheckForTextLine,
- &Logic::fnAddTalkWaitStatusBit,
- &Logic::fnRemoveTalkWaitStatusBit,
- &Logic::fnNoHuman,
- &Logic::fnAddHuman,
- &Logic::fnBlankMouse,
- &Logic::fnNormalMouse,
- &Logic::fnLockMouse,
- &Logic::fnUnlockMouse,
- &Logic::fnSetMousePointer,
- &Logic::fnSetMouseLuggage,
- &Logic::fnMouseOn,
- &Logic::fnMouseOff,
- &Logic::fnChooser,
- &Logic::fnEndChooser,
- &Logic::fnStartMenu,
- &Logic::fnEndMenu,
- &Logic::cfnReleaseMenu,
- &Logic::fnAddSubject,
- &Logic::fnAddObject,
- &Logic::fnRemoveObject,
- &Logic::fnEnterSection,
- &Logic::fnLeaveSection,
- &Logic::fnChangeFloor,
- &Logic::fnWalk,
- &Logic::fnTurn,
- &Logic::fnStand,
- &Logic::fnStandAt,
- &Logic::fnFace,
- &Logic::fnFaceXy,
- &Logic::fnIsFacing,
- &Logic::fnGetTo,
- &Logic::fnGetToError,
- &Logic::fnGetPos,
- &Logic::fnGetGamepadXy,
- &Logic::fnPlayFx,
- &Logic::fnStopFx,
- &Logic::fnPlayMusic,
- &Logic::fnStopMusic,
- &Logic::fnInnerSpace,
- &Logic::fnRandom,
- &Logic::fnSetScreen,
- &Logic::fnPreload,
- &Logic::fnCheckCD,
- &Logic::fnRestartGame,
- &Logic::fnQuitGame,
- &Logic::fnDeathScreen,
- &Logic::fnSetParallax,
- &Logic::fnTdebug,
- &Logic::fnRedFlash,
- &Logic::fnBlueFlash,
- &Logic::fnYellow,
- &Logic::fnGreen,
- &Logic::fnPurple,
- &Logic::fnBlack
-};
+void Logic::setupMcodeTable() {
+ static const BSMcodeTable mcodeTable[100] = {
+ &Logic::fnBackground,
+ &Logic::fnForeground,
+ &Logic::fnSort,
+ &Logic::fnNoSprite,
+ &Logic::fnMegaSet,
+ &Logic::fnAnim,
+ &Logic::fnSetFrame,
+ &Logic::fnFullAnim,
+ &Logic::fnFullSetFrame,
+ &Logic::fnFadeDown,
+ &Logic::fnFadeUp,
+ &Logic::fnCheckFade,
+ &Logic::fnSetSpritePalette,
+ &Logic::fnSetWholePalette,
+ &Logic::fnSetFadeTargetPalette,
+ &Logic::fnSetPaletteToFade,
+ &Logic::fnSetPaletteToCut,
+ &Logic::fnPlaySequence,
+ &Logic::fnIdle,
+ &Logic::fnPause,
+ &Logic::fnPauseSeconds,
+ &Logic::fnQuit,
+ &Logic::fnKillId,
+ &Logic::fnSuicide,
+ &Logic::fnNewScript,
+ &Logic::fnSubScript,
+ &Logic::fnRestartScript,
+ &Logic::fnSetBookmark,
+ &Logic::fnGotoBookmark,
+ &Logic::fnSendSync,
+ &Logic::fnWaitSync,
+ &Logic::cfnClickInteract,
+ &Logic::cfnSetScript,
+ &Logic::cfnPresetScript,
+ &Logic::fnInteract,
+ &Logic::fnIssueEvent,
+ &Logic::fnCheckForEvent,
+ &Logic::fnWipeHands,
+ &Logic::fnISpeak,
+ &Logic::fnTheyDo,
+ &Logic::fnTheyDoWeWait,
+ &Logic::fnWeWait,
+ &Logic::fnChangeSpeechText,
+ &Logic::fnTalkError,
+ &Logic::fnStartTalk,
+ &Logic::fnCheckForTextLine,
+ &Logic::fnAddTalkWaitStatusBit,
+ &Logic::fnRemoveTalkWaitStatusBit,
+ &Logic::fnNoHuman,
+ &Logic::fnAddHuman,
+ &Logic::fnBlankMouse,
+ &Logic::fnNormalMouse,
+ &Logic::fnLockMouse,
+ &Logic::fnUnlockMouse,
+ &Logic::fnSetMousePointer,
+ &Logic::fnSetMouseLuggage,
+ &Logic::fnMouseOn,
+ &Logic::fnMouseOff,
+ &Logic::fnChooser,
+ &Logic::fnEndChooser,
+ &Logic::fnStartMenu,
+ &Logic::fnEndMenu,
+ &Logic::cfnReleaseMenu,
+ &Logic::fnAddSubject,
+ &Logic::fnAddObject,
+ &Logic::fnRemoveObject,
+ &Logic::fnEnterSection,
+ &Logic::fnLeaveSection,
+ &Logic::fnChangeFloor,
+ &Logic::fnWalk,
+ &Logic::fnTurn,
+ &Logic::fnStand,
+ &Logic::fnStandAt,
+ &Logic::fnFace,
+ &Logic::fnFaceXy,
+ &Logic::fnIsFacing,
+ &Logic::fnGetTo,
+ &Logic::fnGetToError,
+ &Logic::fnGetPos,
+ &Logic::fnGetGamepadXy,
+ &Logic::fnPlayFx,
+ &Logic::fnStopFx,
+ &Logic::fnPlayMusic,
+ &Logic::fnStopMusic,
+ &Logic::fnInnerSpace,
+ &Logic::fnRandom,
+ &Logic::fnSetScreen,
+ &Logic::fnPreload,
+ &Logic::fnCheckCD,
+ &Logic::fnRestartGame,
+ &Logic::fnQuitGame,
+ &Logic::fnDeathScreen,
+ &Logic::fnSetParallax,
+ &Logic::fnTdebug,
+ &Logic::fnRedFlash,
+ &Logic::fnBlueFlash,
+ &Logic::fnYellow,
+ &Logic::fnGreen,
+ &Logic::fnPurple,
+ &Logic::fnBlack
+ };
+
+ _mcodeTable = mcodeTable;
+}
int Logic::fnBackground(Object *cpt, int32 id, int32 c, int32 d, int32 e, int32 f, int32 z, int32 x) {
diff --git a/sword1/logic.h b/sword1/logic.h
index 29bda2c270..c5844c8dd0 100644
--- a/sword1/logic.h
+++ b/sword1/logic.h
@@ -88,7 +88,8 @@ private:
int fullAnimDriver(Object *compact);
int animDriver(Object *compact);
- static BSMcodeTable _mcodeTable[100];
+ void setupMcodeTable();
+ const BSMcodeTable *_mcodeTable;
uint16 inRange(uint16 a, uint16 b, uint16 c);