#include #include #include #include #include "palmdefs.h" #include "args.h" #include "globals.h" #include "modules.h" #include "extend.h" #include "features.h" #include "rumble.h" #include "init_mathlib.h" #include "init_pa1lib.h" #include "init_arm.h" #include "init_palmos.h" #include "init_sony.h" #ifndef DISABLE_LIGHTSPEED #include "lightspeed_public.h" #endif GlobalsDataPtr gVars; void run(int argc, char *argv[]) { MathlibInit(); gVars->HRrefNum = SonyHRInit(8); if (gVars->HRrefNum == sysInvalidRefNum) PalmHRInit(8); gVars->slkRefNum= SilkInit(&(gVars->slkVersion)); // create file for printf, warnings, etc... StdioInit(gVars->volRefNum, "/PALM/Programs/ScummVM/scumm.log", DrawStatus); gUnistdCWD = SCUMMVM_SAVEPATH; // init hardware if (HWR_INIT(INIT_PA1LIB)) Pa1libInit(); 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(); DO_EXIT( main(argc, argv); ) // be sure to release features memory FREE_FTR(ftrBufferOverlay) FREE_FTR(ftrBufferBackup) FREE_FTR(ftrBufferHotSwap) GlbClose(); PalmRelease(HWR_GET()); if (HWR_INIT(INIT_ARM)) ARMRelease(); if (HWR_INIT(INIT_VIBRATOR)) RumbleRelease(); if (HWR_INIT(INIT_PA1LIB)) Pa1libRelease(); // close log file StdioRelease(); PalmHRRelease(); SonyHRRelease(gVars->HRrefNum); SilkRelease(gVars->slkRefNum); MathlibRelease(); MemPtrFree(gVars); WinPalette(winPaletteSetToDefault, 0, 256, NULL); // ArgsFree(argvP); // called in main(...) } static UInt32 ModulesPalmMain(UInt16 cmd, MemPtr cmdPBP, UInt16 launchFlags) { switch (cmd) { case sysAppLaunchCmdNormalLaunch: { if (cmdPBP) { Char **argvP; UInt16 cardNo; LocalID dbID; LaunchParamType *lp = (LaunchParamType *)cmdPBP; gVars = lp->gVars; argvP = lp->args.argv; #ifndef DISABLE_LIGHTSPEED switch (lp->lightspeed) { case 0: LS_SetCPUSpeedHigh(); break; case 1: LS_SetCPUSpeedNormal(); break; case 2: LS_SetCPUSpeedLow(); break; } #endif // 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); else SysUIAppSwitch(cardNo, dbID, sysAppLaunchCmdNormalLaunch,0); } } break; } default: break; } return 0; } UInt32 PilotMain( UInt16 cmd, MemPtr cmdPBP, UInt16 launchFlags) { return ModulesPalmMain(cmd, cmdPBP, launchFlags); }