[Scummvm-cvs-logs] SF.net SVN: scummvm: [23847] scummvm/branches/branch-0-9-0/engines

chrilith at users.sourceforge.net chrilith at users.sourceforge.net
Sat Sep 9 16:36:35 CEST 2006


Revision: 23847
          http://svn.sourceforge.net/scummvm/?rev=23847&view=rev
Author:   chrilith
Date:     2006-09-09 07:36:20 -0700 (Sat, 09 Sep 2006)

Log Message:
-----------
backport lastest PalmOS related fixes

Modified Paths:
--------------
    scummvm/branches/branch-0-9-0/engines/gob/scenery_v1.cpp
    scummvm/branches/branch-0-9-0/engines/sword1/control.cpp
    scummvm/branches/branch-0-9-0/engines/sword1/logic.cpp
    scummvm/branches/branch-0-9-0/engines/sword1/logic.h
    scummvm/branches/branch-0-9-0/engines/sword1/memman.h
    scummvm/branches/branch-0-9-0/engines/sword2/interpreter.cpp
    scummvm/branches/branch-0-9-0/engines/sword2/logic.cpp
    scummvm/branches/branch-0-9-0/engines/sword2/logic.h
    scummvm/branches/branch-0-9-0/engines/sword2/resman.h

Modified: scummvm/branches/branch-0-9-0/engines/gob/scenery_v1.cpp
===================================================================
--- scummvm/branches/branch-0-9-0/engines/gob/scenery_v1.cpp	2006-09-09 14:19:33 UTC (rev 23846)
+++ scummvm/branches/branch-0-9-0/engines/gob/scenery_v1.cpp	2006-09-09 14:36:20 UTC (rev 23847)
@@ -146,10 +146,10 @@
 
 		pictIndex = (pictIndex & 15) - 1;
 
-		left = FROM_LE_16(pictPtr[pictIndex][pieceIndex].left);
-		right = FROM_LE_16(pictPtr[pictIndex][pieceIndex].right);
-		top = FROM_LE_16(pictPtr[pictIndex][pieceIndex].top);
-		bottom = FROM_LE_16(pictPtr[pictIndex][pieceIndex].bottom);
+		left = READ_LE_UINT16(&pictPtr[pictIndex][pieceIndex].left);
+		right = READ_LE_UINT16(&pictPtr[pictIndex][pieceIndex].right);
+		top = READ_LE_UINT16(&pictPtr[pictIndex][pieceIndex].top);
+		bottom = READ_LE_UINT16(&pictPtr[pictIndex][pieceIndex].bottom);
 
 		if (flags & 2) {
 			if (destX < _vm->_anim->_areaLeft) {

Modified: scummvm/branches/branch-0-9-0/engines/sword1/control.cpp
===================================================================
--- scummvm/branches/branch-0-9-0/engines/sword1/control.cpp	2006-09-09 14:19:33 UTC (rev 23846)
+++ scummvm/branches/branch-0-9-0/engines/sword1/control.cpp	2006-09-09 14:36:20 UTC (rev 23847)
@@ -140,12 +140,12 @@
 	FrameHeader *fHead = _resMan->fetchFrame(_resMan->fetchRes(_resId), _frameIdx);
 	uint8 *src = (uint8*)fHead + sizeof(FrameHeader);
 	uint8 *dst = _dstBuf;
-	for (uint16 cnt = 0; cnt < FROM_LE_16(fHead->height); cnt++) {
-		for (uint16 cntx = 0; cntx < FROM_LE_16(fHead->width); cntx++)
+	for (uint16 cnt = 0; cnt < READ_LE_UINT16(&fHead->height); cnt++) {
+		for (uint16 cntx = 0; cntx < READ_LE_UINT16(&fHead->width); cntx++)
 			if (src[cntx])
 				dst[cntx] = src[cntx];
 		dst += SCREEN_WIDTH;
-		src += FROM_LE_16(fHead->width);
+		src += READ_LE_UINT16(&fHead->width);
 	}
 	_system->copyRectToScreen(_dstBuf, SCREEN_WIDTH, _x, _y, _width, _height);
 }

Modified: scummvm/branches/branch-0-9-0/engines/sword1/logic.cpp
===================================================================
--- scummvm/branches/branch-0-9-0/engines/sword1/logic.cpp	2006-09-09 14:19:33 UTC (rev 23846)
+++ scummvm/branches/branch-0-9-0/engines/sword1/logic.cpp	2006-09-09 14:36:20 UTC (rev 23847)
@@ -64,6 +64,8 @@
 	_eventMan = NULL;
 	_system = system;
 	_mixer = mixer;
+	
+	setupMcodeTable();
 }
 
 Logic::~Logic(void) {
@@ -682,109 +684,113 @@
 	}
 }
 
-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) {
 
 	cpt->o_status &= ~(STAT_FORE | STAT_SORT);

Modified: scummvm/branches/branch-0-9-0/engines/sword1/logic.h
===================================================================
--- scummvm/branches/branch-0-9-0/engines/sword1/logic.h	2006-09-09 14:19:33 UTC (rev 23846)
+++ scummvm/branches/branch-0-9-0/engines/sword1/logic.h	2006-09-09 14:36:20 UTC (rev 23847)
@@ -89,7 +89,8 @@
 	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);
 

Modified: scummvm/branches/branch-0-9-0/engines/sword1/memman.h
===================================================================
--- scummvm/branches/branch-0-9-0/engines/sword1/memman.h	2006-09-09 14:19:33 UTC (rev 23846)
+++ scummvm/branches/branch-0-9-0/engines/sword1/memman.h	2006-09-09 14:36:20 UTC (rev 23847)
@@ -39,7 +39,11 @@
 #define MEM_CAN_FREE	1
 #define MEM_DONT_FREE	2
 
+#ifdef PALMOS_MODE
+#define MAX_ALLOC (3*1024*1024) // max amount of mem we want to alloc().
+#else
 #define MAX_ALLOC (6*1024*1024) // max amount of mem we want to alloc().
+#endif
 
 class MemMan {
 public:

Modified: scummvm/branches/branch-0-9-0/engines/sword2/interpreter.cpp
===================================================================
--- scummvm/branches/branch-0-9-0/engines/sword2/interpreter.cpp	2006-09-09 14:19:33 UTC (rev 23846)
+++ scummvm/branches/branch-0-9-0/engines/sword2/interpreter.cpp	2006-09-09 14:36:20 UTC (rev 23847)
@@ -42,162 +42,161 @@
 #	define OPCODE(x)	{ &Logic::x, "" }
 #endif
 
-typedef int32 (Logic::*OpcodeProc)(int32 *);
-struct OpcodeEntry {
-	OpcodeProc proc;
-	const char *desc;
-};
+void Logic::setupOpcodes() {
+	static const OpcodeEntry opcodes[] = {
+		/* 00 */
+		OPCODE(fnTestFunction),
+		OPCODE(fnTestFlags),
+		OPCODE(fnRegisterStartPoint),
+		OPCODE(fnInitBackground),
+		/* 04 */
+		OPCODE(fnSetSession),
+		OPCODE(fnBackSprite),
+		OPCODE(fnSortSprite),
+		OPCODE(fnForeSprite),
+		/* 08 */
+		OPCODE(fnRegisterMouse),
+		OPCODE(fnAnim),
+		OPCODE(fnRandom),
+		OPCODE(fnPreLoad),
+		/* 0C */
+		OPCODE(fnAddSubject),
+		OPCODE(fnInteract),
+		OPCODE(fnChoose),
+		OPCODE(fnWalk),
+		/* 10 */
+		OPCODE(fnWalkToAnim),
+		OPCODE(fnTurn),
+		OPCODE(fnStandAt),
+		OPCODE(fnStand),
+		/* 14 */
+		OPCODE(fnStandAfterAnim),
+		OPCODE(fnPause),
+		OPCODE(fnMegaTableAnim),
+		OPCODE(fnAddMenuObject),
+		/* 18 */
+		OPCODE(fnStartConversation),
+		OPCODE(fnEndConversation),
+		OPCODE(fnSetFrame),
+		OPCODE(fnRandomPause),
+		/* 1C */
+		OPCODE(fnRegisterFrame),
+		OPCODE(fnNoSprite),
+		OPCODE(fnSendSync),
+		OPCODE(fnUpdatePlayerStats),
+		/* 20 */
+		OPCODE(fnPassGraph),
+		OPCODE(fnInitFloorMouse),
+		OPCODE(fnPassMega),
+		OPCODE(fnFaceXY),
+		/* 24 */
+		OPCODE(fnEndSession),
+		OPCODE(fnNoHuman),
+		OPCODE(fnAddHuman),
+		OPCODE(fnWeWait),
+		/* 28 */
+		OPCODE(fnTheyDoWeWait),
+		OPCODE(fnTheyDo),
+		OPCODE(fnWalkToTalkToMega),
+		OPCODE(fnFadeDown),
+		/* 2C */
+		OPCODE(fnISpeak),
+		OPCODE(fnTotalRestart),
+		OPCODE(fnSetWalkGrid),
+		OPCODE(fnSpeechProcess),
+		/* 30 */
+		OPCODE(fnSetScaling),
+		OPCODE(fnStartEvent),
+		OPCODE(fnCheckEventWaiting),
+		OPCODE(fnRequestSpeech),
+		/* 34 */
+		OPCODE(fnGosub),
+		OPCODE(fnTimedWait),
+		OPCODE(fnPlayFx),
+		OPCODE(fnStopFx),
+		/* 38 */
+		OPCODE(fnPlayMusic),
+		OPCODE(fnStopMusic),
+		OPCODE(fnSetValue),
+		OPCODE(fnNewScript),
+		/* 3C */
+		OPCODE(fnGetSync),
+		OPCODE(fnWaitSync),
+		OPCODE(fnRegisterWalkGrid),
+		OPCODE(fnReverseMegaTableAnim),
+		/* 40 */
+		OPCODE(fnReverseAnim),
+		OPCODE(fnAddToKillList),
+		OPCODE(fnSetStandbyCoords),
+		OPCODE(fnBackPar0Sprite),
+		/* 44 */
+		OPCODE(fnBackPar1Sprite),
+		OPCODE(fnForePar0Sprite),
+		OPCODE(fnForePar1Sprite),
+		OPCODE(fnSetPlayerActionEvent),
+		/* 48 */
+		OPCODE(fnSetScrollCoordinate),
+		OPCODE(fnStandAtAnim),
+		OPCODE(fnSetScrollLeftMouse),
+		OPCODE(fnSetScrollRightMouse),
+		/* 4C */
+		OPCODE(fnColour),
+		OPCODE(fnFlash),
+		OPCODE(fnPreFetch),
+		OPCODE(fnGetPlayerSaveData),
+		/* 50 */
+		OPCODE(fnPassPlayerSaveData),
+		OPCODE(fnSendEvent),
+		OPCODE(fnAddWalkGrid),
+		OPCODE(fnRemoveWalkGrid),
+		/* 54 */
+		OPCODE(fnCheckForEvent),
+		OPCODE(fnPauseForEvent),
+		OPCODE(fnClearEvent),
+		OPCODE(fnFaceMega),
+		/* 58 */
+		OPCODE(fnPlaySequence),
+		OPCODE(fnShadedSprite),
+		OPCODE(fnUnshadedSprite),
+		OPCODE(fnFadeUp),
+		/* 5C */
+		OPCODE(fnDisplayMsg),
+		OPCODE(fnSetObjectHeld),
+		OPCODE(fnAddSequenceText),
+		OPCODE(fnResetGlobals),
+		/* 60 */
+		OPCODE(fnSetPalette),
+		OPCODE(fnRegisterPointerText),
+		OPCODE(fnFetchWait),
+		OPCODE(fnRelease),
+		/* 64 */
+		OPCODE(fnPrepareMusic),
+		OPCODE(fnSoundFetch),
+		OPCODE(fnPrepareMusic),	// Again, apparently
+		OPCODE(fnSmackerLeadIn),
+		/* 68 */
+		OPCODE(fnSmackerLeadOut),
+		OPCODE(fnStopAllFx),
+		OPCODE(fnCheckPlayerActivity),
+		OPCODE(fnResetPlayerActivityDelay),
+		/* 6C */
+		OPCODE(fnCheckMusicPlaying),
+		OPCODE(fnPlayCredits),
+		OPCODE(fnSetScrollSpeedNormal),
+		OPCODE(fnSetScrollSpeedSlow),
+		/* 70 */
+		OPCODE(fnRemoveChooser),
+		OPCODE(fnSetFxVolAndPan),
+		OPCODE(fnSetFxVol),
+		OPCODE(fnRestoreGame),
+		/* 74 */
+		OPCODE(fnRefreshInventory),
+		OPCODE(fnChangeShadows)
+	};
 
-static const OpcodeEntry opcodes[] = {
-	/* 00 */
-	OPCODE(fnTestFunction),
-	OPCODE(fnTestFlags),
-	OPCODE(fnRegisterStartPoint),
-	OPCODE(fnInitBackground),
-	/* 04 */
-	OPCODE(fnSetSession),
-	OPCODE(fnBackSprite),
-	OPCODE(fnSortSprite),
-	OPCODE(fnForeSprite),
-	/* 08 */
-	OPCODE(fnRegisterMouse),
-	OPCODE(fnAnim),
-	OPCODE(fnRandom),
-	OPCODE(fnPreLoad),
-	/* 0C */
-	OPCODE(fnAddSubject),
-	OPCODE(fnInteract),
-	OPCODE(fnChoose),
-	OPCODE(fnWalk),
-	/* 10 */
-	OPCODE(fnWalkToAnim),
-	OPCODE(fnTurn),
-	OPCODE(fnStandAt),
-	OPCODE(fnStand),
-	/* 14 */
-	OPCODE(fnStandAfterAnim),
-	OPCODE(fnPause),
-	OPCODE(fnMegaTableAnim),
-	OPCODE(fnAddMenuObject),
-	/* 18 */
-	OPCODE(fnStartConversation),
-	OPCODE(fnEndConversation),
-	OPCODE(fnSetFrame),
-	OPCODE(fnRandomPause),
-	/* 1C */
-	OPCODE(fnRegisterFrame),
-	OPCODE(fnNoSprite),
-	OPCODE(fnSendSync),
-	OPCODE(fnUpdatePlayerStats),
-	/* 20 */
-	OPCODE(fnPassGraph),
-	OPCODE(fnInitFloorMouse),
-	OPCODE(fnPassMega),
-	OPCODE(fnFaceXY),
-	/* 24 */
-	OPCODE(fnEndSession),
-	OPCODE(fnNoHuman),
-	OPCODE(fnAddHuman),
-	OPCODE(fnWeWait),
-	/* 28 */
-	OPCODE(fnTheyDoWeWait),
-	OPCODE(fnTheyDo),
-	OPCODE(fnWalkToTalkToMega),
-	OPCODE(fnFadeDown),
-	/* 2C */
-	OPCODE(fnISpeak),
-	OPCODE(fnTotalRestart),
-	OPCODE(fnSetWalkGrid),
-	OPCODE(fnSpeechProcess),
-	/* 30 */
-	OPCODE(fnSetScaling),
-	OPCODE(fnStartEvent),
-	OPCODE(fnCheckEventWaiting),
-	OPCODE(fnRequestSpeech),
-	/* 34 */
-	OPCODE(fnGosub),
-	OPCODE(fnTimedWait),
-	OPCODE(fnPlayFx),
-	OPCODE(fnStopFx),
-	/* 38 */
-	OPCODE(fnPlayMusic),
-	OPCODE(fnStopMusic),
-	OPCODE(fnSetValue),
-	OPCODE(fnNewScript),
-	/* 3C */
-	OPCODE(fnGetSync),
-	OPCODE(fnWaitSync),
-	OPCODE(fnRegisterWalkGrid),
-	OPCODE(fnReverseMegaTableAnim),
-	/* 40 */
-	OPCODE(fnReverseAnim),
-	OPCODE(fnAddToKillList),
-	OPCODE(fnSetStandbyCoords),
-	OPCODE(fnBackPar0Sprite),
-	/* 44 */
-	OPCODE(fnBackPar1Sprite),
-	OPCODE(fnForePar0Sprite),
-	OPCODE(fnForePar1Sprite),
-	OPCODE(fnSetPlayerActionEvent),
-	/* 48 */
-	OPCODE(fnSetScrollCoordinate),
-	OPCODE(fnStandAtAnim),
-	OPCODE(fnSetScrollLeftMouse),
-	OPCODE(fnSetScrollRightMouse),
-	/* 4C */
-	OPCODE(fnColour),
-	OPCODE(fnFlash),
-	OPCODE(fnPreFetch),
-	OPCODE(fnGetPlayerSaveData),
-	/* 50 */
-	OPCODE(fnPassPlayerSaveData),
-	OPCODE(fnSendEvent),
-	OPCODE(fnAddWalkGrid),
-	OPCODE(fnRemoveWalkGrid),
-	/* 54 */
-	OPCODE(fnCheckForEvent),
-	OPCODE(fnPauseForEvent),
-	OPCODE(fnClearEvent),
-	OPCODE(fnFaceMega),
-	/* 58 */
-	OPCODE(fnPlaySequence),
-	OPCODE(fnShadedSprite),
-	OPCODE(fnUnshadedSprite),
-	OPCODE(fnFadeUp),
-	/* 5C */
-	OPCODE(fnDisplayMsg),
-	OPCODE(fnSetObjectHeld),
-	OPCODE(fnAddSequenceText),
-	OPCODE(fnResetGlobals),
-	/* 60 */
-	OPCODE(fnSetPalette),
-	OPCODE(fnRegisterPointerText),
-	OPCODE(fnFetchWait),
-	OPCODE(fnRelease),
-	/* 64 */
-	OPCODE(fnPrepareMusic),
-	OPCODE(fnSoundFetch),
-	OPCODE(fnPrepareMusic),	// Again, apparently
-	OPCODE(fnSmackerLeadIn),
-	/* 68 */
-	OPCODE(fnSmackerLeadOut),
-	OPCODE(fnStopAllFx),
-	OPCODE(fnCheckPlayerActivity),
-	OPCODE(fnResetPlayerActivityDelay),
-	/* 6C */
-	OPCODE(fnCheckMusicPlaying),
-	OPCODE(fnPlayCredits),
-	OPCODE(fnSetScrollSpeedNormal),
-	OPCODE(fnSetScrollSpeedSlow),
-	/* 70 */
-	OPCODE(fnRemoveChooser),
-	OPCODE(fnSetFxVolAndPan),
-	OPCODE(fnSetFxVol),
-	OPCODE(fnRestoreGame),
-	/* 74 */
-	OPCODE(fnRefreshInventory),
-	OPCODE(fnChangeShadows)
-};
+	_numOpcodes = ARRAYSIZE(opcodes);
+	_opcodes = opcodes;
+}
 
 #define push(value) \
 do { \
@@ -611,13 +610,13 @@
 		case CP_CALL_MCODE:
 			// Call an mcode routine
 			Read16ip(parameter);
-			assert(parameter < ARRAYSIZE(opcodes));
+			assert(parameter < _numOpcodes);
 			// amount to adjust stack by (no of parameters)
 			Read8ip(value);
-			debug(9, "CP_CALL_MCODE: '%s', %d", opcodes[parameter].desc, value);
+			debug(9, "CP_CALL_MCODE: '%s', %d", _opcodes[parameter].desc, value);
 			stackPtr -= value;
 			assert(stackPtr >= 0);
-			retVal = (this->*opcodes[parameter].proc)(&stack[stackPtr]);
+			retVal = (this->*_opcodes[parameter].proc)(&stack[stackPtr]);
 
 			switch (retVal & 7) {
 			case IR_STOP:
@@ -640,7 +639,7 @@
 				WRITE_LE_UINT32(offsetPtr, ip);
 				return 2;
 			default:
-				error("Bad return code (%d) from '%s'", retVal & 7, opcodes[parameter].desc);
+				error("Bad return code (%d) from '%s'", retVal & 7, _opcodes[parameter].desc);
 			}
 			parameterReturnedFromMcodeFunction = retVal >> 3;
 			break;

Modified: scummvm/branches/branch-0-9-0/engines/sword2/logic.cpp
===================================================================
--- scummvm/branches/branch-0-9-0/engines/sword2/logic.cpp	2006-09-09 14:19:33 UTC (rev 23846)
+++ scummvm/branches/branch-0-9-0/engines/sword2/logic.cpp	2006-09-09 14:36:20 UTC (rev 23847)
@@ -41,6 +41,8 @@
 	memset(_eventList, 0, sizeof(_eventList));
 	memset(_syncList, 0, sizeof(_syncList));
 	_router = new Router(_vm);
+
+	setupOpcodes();
 }
 
 Logic::~Logic() {

Modified: scummvm/branches/branch-0-9-0/engines/sword2/logic.h
===================================================================
--- scummvm/branches/branch-0-9-0/engines/sword2/logic.h	2006-09-09 14:19:33 UTC (rev 23846)
+++ scummvm/branches/branch-0-9-0/engines/sword2/logic.h	2006-09-09 14:36:20 UTC (rev 23847)
@@ -178,6 +178,15 @@
 
 	Router *_router;
 
+	typedef int32 (Logic::*OpcodeProc)(int32 *);
+	struct OpcodeEntry {
+		OpcodeProc proc;
+		const char *desc;
+	};
+	const OpcodeEntry *_opcodes;
+	int _numOpcodes;
+	void setupOpcodes();
+
 	int32 fnTestFunction(int32 *params);
 	int32 fnTestFlags(int32 *params);
 	int32 fnRegisterStartPoint(int32 *params);

Modified: scummvm/branches/branch-0-9-0/engines/sword2/resman.h
===================================================================
--- scummvm/branches/branch-0-9-0/engines/sword2/resman.h	2006-09-09 14:19:33 UTC (rev 23846)
+++ scummvm/branches/branch-0-9-0/engines/sword2/resman.h	2006-09-09 14:36:20 UTC (rev 23847)
@@ -26,7 +26,11 @@
 	class File;
 }
 
+#ifdef PALMOS_MODE
+#define MAX_MEM_CACHE (4 * 1024 * 1024) // 4 seems to be enough, 8 = out of memory
+#else
 #define MAX_MEM_CACHE (8 * 1024 * 1024) // we keep up to 8 megs of resource data files in memory
+#endif
 #define	MAX_res_files 20
 
 namespace Sword2 {


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list