[Scummvm-cvs-logs] CVS: scummvm/sky logic.cpp,1.157,1.158 logic.h,1.45,1.46

Chris Apers chrilith at users.sourceforge.net
Sat Nov 5 11:06:23 CET 2005


Update of /cvsroot/scummvm/scummvm/sky
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27831

Modified Files:
	logic.cpp logic.h 
Log Message:
- Move opcode tables to methods so that they are correctly initialized with PalmOS ARM

Index: logic.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/logic.cpp,v
retrieving revision 1.157
retrieving revision 1.158
diff -u -d -r1.157 -r1.158
--- logic.cpp	18 Oct 2005 01:30:23 -0000	1.157
+++ logic.cpp	5 Nov 2005 19:06:00 -0000	1.158
@@ -39,25 +39,29 @@
 
 uint32 Logic::_scriptVariables[NUM_SKY_SCRIPTVARS];
 
-const LogicTable Logic::_logicTable[] = {
-	&Logic::nop,
-	&Logic::logicScript,	 // 1  script processor
-	&Logic::autoRoute,	 // 2  Make a route
-	&Logic::arAnim,	 // 3  Follow a route
-	&Logic::arTurn,	 // 4  Mega turns araound
-	&Logic::alt,		 // 5  Set up new get-to script
-	&Logic::anim,	 // 6  Follow a sequence
-	&Logic::turn,	 // 7  Mega turning
-	&Logic::cursor,	 // 8  id tracks the pointer
-	&Logic::talk,	 // 9  count down and animate
-	&Logic::listen,	 // 10 player waits for talking id
-	&Logic::stopped,	 // 11 wait for id to move
-	&Logic::choose,	 // 12 wait for player to click
-	&Logic::frames,	 // 13 animate just frames
-	&Logic::pause,	 // 14 Count down to 0 and go
-	&Logic::waitSync,	 // 15 Set to l_script when sync!=0
-	&Logic::simpleAnim,	 // 16 Module anim without x,y's
-};
+void Logic::setupLogicTable() {
+	static const LogicTable logicTable[] = {
+		&Logic::nop,
+		&Logic::logicScript,	 // 1  script processor
+		&Logic::autoRoute,	 // 2  Make a route
+		&Logic::arAnim,	 // 3  Follow a route
+		&Logic::arTurn,	 // 4  Mega turns araound
+		&Logic::alt,		 // 5  Set up new get-to script
+		&Logic::anim,	 // 6  Follow a sequence
+		&Logic::turn,	 // 7  Mega turning
+		&Logic::cursor,	 // 8  id tracks the pointer
+		&Logic::talk,	 // 9  count down and animate
+		&Logic::listen,	 // 10 player waits for talking id
+		&Logic::stopped,	 // 11 wait for id to move
+		&Logic::choose,	 // 12 wait for player to click
+		&Logic::frames,	 // 13 animate just frames
+		&Logic::pause,	 // 14 Count down to 0 and go
+		&Logic::waitSync,	 // 15 Set to l_script when sync!=0
+		&Logic::simpleAnim,	 // 16 Module anim without x,y's
+	};
+	
+	_logicTable = logicTable;
+}
 
 Logic::Logic(SkyCompact *skyCompact, Screen *skyScreen, Disk *skyDisk, Text *skyText, MusicBase *skyMusic, Mouse *skyMouse, Sound *skySound) {
 	_skyCompact = skyCompact;
@@ -70,6 +74,9 @@
 	_skyGrid = new Grid(_skyDisk, _skyCompact);
 	_skyAutoRoute = new AutoRoute(_skyGrid, _skyCompact);
 
+	setupLogicTable();
+	setupMcodeTable();
+
 	memset(_objectList, 0, 30 * sizeof(uint32));
 
 	for (int i = 0; i < ARRAYSIZE(_moduleList); i++)
@@ -820,123 +827,127 @@
 	return _stack[--_stackPtr];
 }
 
-const McodeTable Logic::_mcodeTable[] = {
-	&Logic::fnCacheChip,
-	&Logic::fnCacheFast,
-	&Logic::fnDrawScreen,
-	&Logic::fnAr,
-	&Logic::fnArAnimate,
-	&Logic::fnIdle,
-	&Logic::fnInteract,
-	&Logic::fnStartSub,
-	&Logic::fnTheyStartSub,
-	&Logic::fnAssignBase,
-	&Logic::fnDiskMouse,
-	&Logic::fnNormalMouse,
-	&Logic::fnBlankMouse,
-	&Logic::fnCrossMouse,
-	&Logic::fnCursorRight,
-	&Logic::fnCursorLeft,
-	&Logic::fnCursorDown,
-	&Logic::fnOpenHand,
-	&Logic::fnCloseHand,
-	&Logic::fnGetTo,
-	&Logic::fnSetToStand,
-	&Logic::fnTurnTo,
-	&Logic::fnArrived,
-	&Logic::fnLeaving,
-	&Logic::fnSetAlternate,
-	&Logic::fnAltSetAlternate,
-	&Logic::fnKillId,
-	&Logic::fnNoHuman,
-	&Logic::fnAddHuman,
-	&Logic::fnAddButtons,
-	&Logic::fnNoButtons,
-	&Logic::fnSetStop,
-	&Logic::fnClearStop,
-	&Logic::fnPointerText,
-	&Logic::fnQuit,
-	&Logic::fnSpeakMe,
-	&Logic::fnSpeakMeDir,
-	&Logic::fnSpeakWait,
-	&Logic::fnSpeakWaitDir,
-	&Logic::fnChooser,
-	&Logic::fnHighlight,
-	&Logic::fnTextKill,
-	&Logic::fnStopMode,
-	&Logic::fnWeWait,
-	&Logic::fnSendSync,
-	&Logic::fnSendFastSync,
-	&Logic::fnSendRequest,
-	&Logic::fnClearRequest,
-	&Logic::fnCheckRequest,
-	&Logic::fnStartMenu,
-	&Logic::fnUnhighlight,
-	&Logic::fnFaceId,
-	&Logic::fnForeground,
-	&Logic::fnBackground,
-	&Logic::fnNewBackground,
-	&Logic::fnSort,
-	&Logic::fnNoSpriteEngine,
-	&Logic::fnNoSpritesA6,
-	&Logic::fnResetId,
-	&Logic::fnToggleGrid,
-	&Logic::fnPause,
-	&Logic::fnRunAnimMod,
-	&Logic::fnSimpleMod,
-	&Logic::fnRunFrames,
-	&Logic::fnAwaitSync,
-	&Logic::fnIncMegaSet,
-	&Logic::fnDecMegaSet,
-	&Logic::fnSetMegaSet,
-	&Logic::fnMoveItems,
-	&Logic::fnNewList,
-	&Logic::fnAskThis,
-	&Logic::fnRandom,
-	&Logic::fnPersonHere,
-	&Logic::fnToggleMouse,
-	&Logic::fnMouseOn,
-	&Logic::fnMouseOff,
-	&Logic::fnFetchX,
-	&Logic::fnFetchY,
-	&Logic::fnTestList,
-	&Logic::fnFetchPlace,
-	&Logic::fnCustomJoey,
-	&Logic::fnSetPalette,
-	&Logic::fnTextModule,
-	&Logic::fnChangeName,
-	&Logic::fnMiniLoad,
-	&Logic::fnFlushBuffers,
-	&Logic::fnFlushChip,
-	&Logic::fnSaveCoods,
-	&Logic::fnPlotGrid,
-	&Logic::fnRemoveGrid,
-	&Logic::fnEyeball,
-	&Logic::fnCursorUp,
-	&Logic::fnLeaveSection,
-	&Logic::fnEnterSection,
-	&Logic::fnRestoreGame,
-	&Logic::fnRestartGame,
-	&Logic::fnNewSwingSeq,
-	&Logic::fnWaitSwingEnd,
-	&Logic::fnSkipIntroCode,
-	&Logic::fnBlankScreen,
-	&Logic::fnPrintCredit,
-	&Logic::fnLookAt,
-	&Logic::fnLincTextModule,
-	&Logic::fnTextKill2,
-	&Logic::fnSetFont,
-	&Logic::fnStartFx,
-	&Logic::fnStopFx,
-	&Logic::fnStartMusic,
-	&Logic::fnStopMusic,
-	&Logic::fnFadeDown,
-	&Logic::fnFadeUp,
-	&Logic::fnQuitToDos,
-	&Logic::fnPauseFx,
-	&Logic::fnUnPauseFx,
-	&Logic::fnPrintf
-};
+void Logic::setupMcodeTable() {
+	static const McodeTable mcodeTable[] = {
+		&Logic::fnCacheChip,
+		&Logic::fnCacheFast,
+		&Logic::fnDrawScreen,
+		&Logic::fnAr,
+		&Logic::fnArAnimate,
+		&Logic::fnIdle,
+		&Logic::fnInteract,
+		&Logic::fnStartSub,
+		&Logic::fnTheyStartSub,
+		&Logic::fnAssignBase,
+		&Logic::fnDiskMouse,
+		&Logic::fnNormalMouse,
+		&Logic::fnBlankMouse,
+		&Logic::fnCrossMouse,
+		&Logic::fnCursorRight,
+		&Logic::fnCursorLeft,
+		&Logic::fnCursorDown,
+		&Logic::fnOpenHand,
+		&Logic::fnCloseHand,
+		&Logic::fnGetTo,
+		&Logic::fnSetToStand,
+		&Logic::fnTurnTo,
+		&Logic::fnArrived,
+		&Logic::fnLeaving,
+		&Logic::fnSetAlternate,
+		&Logic::fnAltSetAlternate,
+		&Logic::fnKillId,
+		&Logic::fnNoHuman,
+		&Logic::fnAddHuman,
+		&Logic::fnAddButtons,
+		&Logic::fnNoButtons,
+		&Logic::fnSetStop,
+		&Logic::fnClearStop,
+		&Logic::fnPointerText,
+		&Logic::fnQuit,
+		&Logic::fnSpeakMe,
+		&Logic::fnSpeakMeDir,
+		&Logic::fnSpeakWait,
+		&Logic::fnSpeakWaitDir,
+		&Logic::fnChooser,
+		&Logic::fnHighlight,
+		&Logic::fnTextKill,
+		&Logic::fnStopMode,
+		&Logic::fnWeWait,
+		&Logic::fnSendSync,
+		&Logic::fnSendFastSync,
+		&Logic::fnSendRequest,
+		&Logic::fnClearRequest,
+		&Logic::fnCheckRequest,
+		&Logic::fnStartMenu,
+		&Logic::fnUnhighlight,
+		&Logic::fnFaceId,
+		&Logic::fnForeground,
+		&Logic::fnBackground,
+		&Logic::fnNewBackground,
+		&Logic::fnSort,
+		&Logic::fnNoSpriteEngine,
+		&Logic::fnNoSpritesA6,
+		&Logic::fnResetId,
+		&Logic::fnToggleGrid,
+		&Logic::fnPause,
+		&Logic::fnRunAnimMod,
+		&Logic::fnSimpleMod,
+		&Logic::fnRunFrames,
+		&Logic::fnAwaitSync,
+		&Logic::fnIncMegaSet,
+		&Logic::fnDecMegaSet,
+		&Logic::fnSetMegaSet,
+		&Logic::fnMoveItems,
+		&Logic::fnNewList,
+		&Logic::fnAskThis,
+		&Logic::fnRandom,
+		&Logic::fnPersonHere,
+		&Logic::fnToggleMouse,
+		&Logic::fnMouseOn,
+		&Logic::fnMouseOff,
+		&Logic::fnFetchX,
+		&Logic::fnFetchY,
+		&Logic::fnTestList,
+		&Logic::fnFetchPlace,
+		&Logic::fnCustomJoey,
+		&Logic::fnSetPalette,
+		&Logic::fnTextModule,
+		&Logic::fnChangeName,
+		&Logic::fnMiniLoad,
+		&Logic::fnFlushBuffers,
+		&Logic::fnFlushChip,
+		&Logic::fnSaveCoods,
+		&Logic::fnPlotGrid,
+		&Logic::fnRemoveGrid,
+		&Logic::fnEyeball,
+		&Logic::fnCursorUp,
+		&Logic::fnLeaveSection,
+		&Logic::fnEnterSection,
+		&Logic::fnRestoreGame,
+		&Logic::fnRestartGame,
+		&Logic::fnNewSwingSeq,
+		&Logic::fnWaitSwingEnd,
+		&Logic::fnSkipIntroCode,
+		&Logic::fnBlankScreen,
+		&Logic::fnPrintCredit,
+		&Logic::fnLookAt,
+		&Logic::fnLincTextModule,
+		&Logic::fnTextKill2,
+		&Logic::fnSetFont,
+		&Logic::fnStartFx,
+		&Logic::fnStopFx,
+		&Logic::fnStartMusic,
+		&Logic::fnStopMusic,
+		&Logic::fnFadeDown,
+		&Logic::fnFadeUp,
+		&Logic::fnQuitToDos,
+		&Logic::fnPauseFx,
+		&Logic::fnUnPauseFx,
+		&Logic::fnPrintf
+	};
+	
+	_mcodeTable = mcodeTable;
+}
 
 static const uint32 forwardList1b[] = {
 	JOBS_SPEECH,

Index: logic.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/logic.h,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -d -r1.45 -r1.46
--- logic.h	18 Oct 2005 01:30:23 -0000	1.45
+++ logic.h	5 Nov 2005 19:06:01 -0000	1.46
@@ -152,6 +152,12 @@
 	void initScreen0(void);
 	void parseSaveData(uint32 *data);
 
+private:
+	void setupLogicTable();
+	void setupMcodeTable();
+	const LogicTable *_logicTable;
+	const McodeTable *_mcodeTable;
+	
 protected:
 	void push(uint32);
 	uint32 pop();
@@ -163,7 +169,6 @@
 	void stopAndWait();
 	bool checkProtection(void);
 
-	static const LogicTable _logicTable[];
 	void nop();
 	void logicScript();
 	void autoRoute();
@@ -182,7 +187,6 @@
 	void waitSync();
 	void simpleAnim();
 
-	static const McodeTable _mcodeTable[];
 	bool fnCacheChip(uint32 a, uint32 b, uint32 c);
 	bool fnCacheFast(uint32 a, uint32 b, uint32 c);
 	bool fnDrawScreen(uint32 a, uint32 b, uint32 c);





More information about the Scummvm-git-logs mailing list