[Scummvm-cvs-logs] SF.net SVN: scummvm: [20636] scummvm/trunk/backends/PalmOS/Src/modules.cpp
chrilith at users.sourceforge.net
chrilith at users.sourceforge.net
Sun Feb 12 10:38:01 CET 2006
Revision: 20636
Author: chrilith
Date: 2006-02-12 10:36:57 -0800 (Sun, 12 Feb 2006)
ViewCVS: http://svn.sourceforge.net/scummvm?rev=20636&view=rev
Log Message:
-----------
- Added ARM module launcher
- Updated 68k launcher with lastest changes to gVars
+ GoLCD API support
+ Fix for invisible DIA using Stuffs*VG functions
+ New communication process between frontend and module to know if the module needs extra files
+ Get free memory at startup
Modified Paths:
--------------
scummvm/trunk/backends/PalmOS/Src/modules.cpp
Modified: scummvm/trunk/backends/PalmOS/Src/modules.cpp
===================================================================
--- scummvm/trunk/backends/PalmOS/Src/modules.cpp 2006-02-12 18:30:15 UTC (rev 20635)
+++ scummvm/trunk/backends/PalmOS/Src/modules.cpp 2006-02-12 18:36:57 UTC (rev 20636)
@@ -13,9 +13,10 @@
#include "rumble.h"
#include "init_mathlib.h"
#include "init_pa1lib.h"
-#include "init_arm.h"
#include "init_palmos.h"
+#include "init_stuffs.h"
#include "init_sony.h"
+#include "init_golcd.h"
#ifndef DISABLE_LIGHTSPEED
#include "lightspeed_public.h"
@@ -23,28 +24,100 @@
GlobalsDataPtr gVars;
+#ifdef PALMOS_NATIVE
+
+#include "endianutils.h"
+#include <PNOLoader.h>
+
+#ifdef COMPILE_ZODIAC
+# include <tapwave.h>
+# include <TwRuntime.h>
+#else
+# include <TwDefs.h>
+#endif
+
void run(int argc, char *argv[]) {
+ // init args
+ ArgsExportInit(argv, argc, true);
+ // init system
+ PalmHRInit(16);
+ PalmInit(HWR_GET());
+ void *__ptr = StuffsForceVG();
+
+ gVars->screenPitch = StuffsGetPitch(gVars->screenFullWidth);
+
+ // export global struct to ARM
+ VARS_EXPORT();
+ DO_VARS(_4B, 32, 0);
+ DO_VARS(_2B, 16, (gVars->_4B * sizeof(UInt32)));
+ FtrSet(appFileCreator, ftrVars , (UInt32)gVars);
+
+ // run the module
+#ifdef COMPILE_ZODIAC
+ NativeFuncType *entry;
+ TwLoadModule(0, 0, 0, 1, twLoadFlagTNA|twLoadFlagQuickRun, &entry);
+#else
+ UInt32 glue;
+ FtrGet(twFtrCreator, twFtrAPIGlue, &glue);
+
+ PnoDescriptor pno;
+ PnoLoadFromResources(&pno, 'ARMC', 1, appFileCreator, 1);
+ PnoCall(&pno, (void*)glue);
+ PnoUnload(&pno);
+#endif
+
+ // reset globals
+ DO_VARS(_4B, 32, 0);
+ DO_VARS(_2B, 16, (gVars->_4B * sizeof(UInt32)));
+
+ // release
+ StuffsReleaseVG(__ptr);
+ PalmRelease(HWR_GET());
+ PalmHRRelease();
+
+ // free args
+ ArgsExportRelease(true);
+ ArgsFree(argv);
+
+ // release global struct
+ FtrUnregister(appFileCreator, ftrVars);
+ FtrUnregister(appFileCreator, ftrStack);
+ MemPtrFree(gVars);
+
+ // reset the palette if needed
+ WinPalette(winPaletteSetToDefault, 0, 256, NULL);
+}
+
+#else
+
+void run(int argc, char *argv[]) {
+
MathlibInit();
gVars->HRrefNum = SonyHRInit(8);
if (gVars->HRrefNum == sysInvalidRefNum)
PalmHRInit(8);
gVars->slkRefNum= SilkInit(&(gVars->slkVersion));
+ gVars->screenPitch = StuffsGetPitch(gVars->screenFullWidth);
// create file for printf, warnings, etc...
- StdioInit(gVars->volRefNum, "/PALM/Programs/ScummVM/scumm.log", DrawStatus);
+ StdioInit(gVars->VFS.volRefNum, "/PALM/Programs/ScummVM/scumm.log");
+ if (gVars->indicator.showLED) StdioSetLedProc(DrawStatus);
+ StdioSetCacheSize(gVars->VFS.cacheSize);
gUnistdCWD = SCUMMVM_SAVEPATH;
-
+
// init hardware
- if (HWR_INIT(INIT_PA1LIB)) Pa1libInit();
+ if (HWR_INIT(INIT_GOLCD)) GoLCDInit(&gGoLcdH);
+ if (HWR_INIT(INIT_PA1LIB)) Pa1libInit(gVars->palmVolume);
if (HWR_INIT(INIT_VIBRATOR)) gVars->vibrator = RumbleInit();
- if (HWR_INIT(INIT_ARM)) ARMInit();
PalmInit(HWR_GET());
if (!gVars->vibrator)
HWR_RST(INIT_VIBRATOR);
GlbOpen();
+ // be sure to have a VG
+ void *__ptr = StuffsForceVG();
DO_EXIT( main(argc, argv); )
@@ -53,12 +126,13 @@
FREE_FTR(ftrBufferBackup)
FREE_FTR(ftrBufferHotSwap)
+ StuffsReleaseVG(__ptr);
GlbClose();
PalmRelease(HWR_GET());
- if (HWR_INIT(INIT_ARM)) ARMRelease();
if (HWR_INIT(INIT_VIBRATOR)) RumbleRelease();
if (HWR_INIT(INIT_PA1LIB)) Pa1libRelease();
+ if (HWR_INIT(INIT_GOLCD)) GoLCDRelease(gGoLcdH);
// close log file
StdioRelease();
@@ -72,23 +146,42 @@
WinPalette(winPaletteSetToDefault, 0, 256, NULL);
// ArgsFree(argvP); // called in main(...)
}
+#endif
static UInt32 ModulesPalmMain(UInt16 cmd, MemPtr cmdPBP, UInt16 launchFlags)
{
- switch (cmd)
- {
- case sysAppLaunchCmdNormalLaunch:
- {
+ UInt32 result = 0;
+
+ switch (cmd) {
+ case sysAppLaunchCustomEngineGetInfo: {
+#ifdef PALMOS_NATIVE
+ result = GET_MODEARM;
+#else
+# if !defined(DISABLE_SCUMM) || \
+ !defined(DISABLE_SIMON) || \
+ !defined(DISABLE_SWORD1)
+ result = GET_DATACOMMON|GET_DATAENGINE|GET_MODE68K;
+# else
+ result = GET_DATACOMMON|GET_MODE68K;
+# endif
+#endif
+ break;
+ }
+
+ case sysAppLaunchCmdNormalLaunch: {
if (cmdPBP) {
Char **argvP;
UInt16 cardNo;
LocalID dbID;
LaunchParamType *lp = (LaunchParamType *)cmdPBP;
-
+
gVars = lp->gVars;
argvP = lp->args.argv;
+ // get the free memory on the dynamic heap
+ PalmGetMemory(0,0,0, &(gVars->startupMemory));
+
#ifndef DISABLE_LIGHTSPEED
switch (lp->lightspeed) {
case 0:
@@ -105,14 +198,14 @@
// MemPtrSetOwner(gVars, ownerID);
// ArgsSetOwner(argvP, ownerID); // will be freed by main(...)
// MemPtrFree(lp); // will be freed by the system on exit
-
+
run(lp->args.argc, argvP);
cardNo = 0;
dbID = DmFindDatabase(0, "ScummVM");
if (dbID) {
if (lp->exitLauncher)
- SysUIAppSwitch(cardNo, dbID, sysAppLaunchCustomDeleteEngine,0);
+ SysUIAppSwitch(cardNo, dbID, sysAppLaunchCustomEngineDelete,0);
else
SysUIAppSwitch(cardNo, dbID, sysAppLaunchCmdNormalLaunch,0);
}
@@ -125,10 +218,9 @@
}
- return 0;
+ return result;
}
-UInt32 PilotMain( UInt16 cmd, MemPtr cmdPBP, UInt16 launchFlags)
-{
+UInt32 PilotMain( UInt16 cmd, MemPtr cmdPBP, UInt16 launchFlags) {
return ModulesPalmMain(cmd, cmdPBP, launchFlags);
}
More information about the Scummvm-git-logs
mailing list