diff options
| author | Chris Apers | 2003-09-23 15:58:51 +0000 | 
|---|---|---|
| committer | Chris Apers | 2003-09-23 15:58:51 +0000 | 
| commit | d0de9fff86c9e44e9c10b181028d759ebf770f29 (patch) | |
| tree | 1aeb25818e40472412628302f25e572078d46f0e /backends | |
| parent | 60259a052d76b6ed710b46beb3851dd5d356ec4d (diff) | |
| download | scummvm-rg350-d0de9fff86c9e44e9c10b181028d759ebf770f29.tar.gz scummvm-rg350-d0de9fff86c9e44e9c10b181028d759ebf770f29.tar.bz2 scummvm-rg350-d0de9fff86c9e44e9c10b181028d759ebf770f29.zip  | |
Split palmstart.cpp into mutiple files
svn-id: r10375
Diffstat (limited to 'backends')
| -rw-r--r-- | backends/PalmOS/Src/palmstart.cpp | 3602 | ||||
| -rw-r--r-- | backends/PalmOS/Src/scumm_globals.h | 74 | ||||
| -rw-r--r-- | backends/PalmOS/Src/skin.h | 50 | 
3 files changed, 94 insertions, 3632 deletions
diff --git a/backends/PalmOS/Src/palmstart.cpp b/backends/PalmOS/Src/palmstart.cpp deleted file mode 100644 index 8d3a021d88..0000000000 --- a/backends/PalmOS/Src/palmstart.cpp +++ /dev/null @@ -1,3602 +0,0 @@ -/* ScummVM - Scumm Interpreter - * Copyright (C) 2001  Ludvig Strigeus - * Copyright (C) 2001-2003 The ScummVM project - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. - * - * $Header$ - * - */ - -#include <PalmOS.h> -#include <PalmOSGlue.h> -#include <SonyClie.h> - -#include "StarterRsc.h" -#include "skin.h" -#include "globals.h" -#include "pa1lib.h" -#include "scumm_globals.h" -#include "extend.h"	// for disable state -#include "stdio.h" // used in checkPath -#include "engine.h" // scumm version strings - -#include "mathlib.h" -#include "vibrate.h" - -/*********************************************************************** - * - *	Internal Structures - * - ***********************************************************************/ -typedef struct { -	Char nameP[32]; -	UInt16 cardNo; -	LocalID dbID; -} SkinInfoType; - -typedef struct { -	UInt32	version; -	UInt16	icnID;			// icon to display on the list -	Boolean	selected; - -	Char 	nameP[50];		// game name to display in list -	Char 	pathP[150];		// path to the game files -	Char 	gameP[10];		// scumm name of the game -	UInt16	gfxMode; - -	Boolean autoLoad; -	UInt16 loadSlot; -	Boolean autoRoom; -	UInt16 roomNum; -	Boolean amiga; -	Boolean subtitles; -	Boolean talkSpeed; -	UInt16 talkValue; -	UInt8 language; - -} GameInfoType; - -typedef	struct { - -	//skin params -	SkinInfoType skin;	//	card where is located the skin -	Boolean soundClick;	 -	// -	Boolean vibrator; -	Boolean autoOff; - -	UInt16 listPosition; - -	struct { -		UInt16 volRefNum; -		Boolean moveDB; -		Boolean deleteDB; -		Boolean confirmMoveDB; -	} card; - -	Boolean debug; -	UInt16 debugLevel; -	Boolean saveConfig; -	Boolean stdPalette; -	Boolean autoReset; -	Boolean demoMode; -	Boolean fullscreen; - -	struct { -		UInt16 speaker; -		UInt16 headphone; -		 -		UInt16 master; -		UInt16 music; -		UInt16 sfx; -	} volume; -	 -	struct { -		// midi -		Boolean multiMidi; -		Boolean music; -		UInt8 driver; -		UInt8 tempo; -		// CD audio -		Boolean MP3; -		Boolean setDefaultTrackLength; -		UInt16 defaultTrackLength; -		UInt16 firstTrack; -		// sound FX -		Boolean sfx; -	} sound; - -} GlobalsPreferenceType, *GlobalsPreferencePtr; - -typedef struct { -	UInt16 volRefNum; -	Char nameP[expCardInfoStringMaxLen+1]; - -} CardInfoType; - -/*********************************************************************** - * - *	Global variables - * - ***********************************************************************/ -static GlobalsPreferencePtr gPrefs; -static DmOpenRef _dbP = NULL; -static UInt16 _lstIndex = 0;	// last index -static UInt8 __editMode__; -static UInt16 sknLastOn = skinButtonNone; -static Boolean bStartScumm = false; - -GlobalsDataPtr gVars; - -// form list draw -#define	ITEM_TYPE_UNKNOWN	'U' -#define ITEM_TYPE_CARD		'C' -#define ITEM_TYPE_SKIN		'S' - -#define frmRedrawUpdateMS		(frmRedrawUpdateCode+1) -#define frmRedrawUpdateMSImport	(frmRedrawUpdateCode+2) - -static Char **itemsText = NULL; -static void  *itemsList = NULL; -static Char   itemsType = ITEM_TYPE_UNKNOWN; -/*********************************************************************** - * - *	Internal Constants - * - ***********************************************************************/ -#define appVersionNum			0x01 -#define appPrefID				0x00 -#define appPrefVersionNum		0x01 - -// Define the minimum OS version we support (3.5 for now). -#define kOurMinVersion	sysMakeROMVersion(3,5,0,sysROMStageRelease,0) -#define kPalmOS10Version	sysMakeROMVersion(1,0,0,sysROMStageRelease,0) -#define kOS5Version		sysMakeROMVersion(5,0,0,sysROMStageRelease,0) - -// edit game mode -#define edtModeAdd			0 -#define edtModeEdit			1 -#define edtModeParams		2 - -// skin  -#define	sknInfoState		0 -#define	sknInfoPosX			1 -#define	sknInfoPosY			2 - -#define	sknInfoMaxWOrH		3 -#define	sknInfoDrawMode		4 -#define	sknInfoKeepXOrY1	5 -#define	sknInfoKeepXOrY2	7 - -#define sknInfoListWidth	sknInfoMaxWOrH -#define sknInfoListHeight	sknInfoDrawMode -#define sknInfoListSize		sknInfoListHeight -#define sknInfoListItemSize	12 - -#define	sknPosRsc			'sPos' -#define	sknColorsRsc		'sCol' - -#define sknStateNormal		0 -#define sknStateSelected	10 -#define sknStateDisabled	20 - -#define sknSelectedState(bmp)	(bmp + sknStateSelected) -#define sknDisabledState(bmp)	(bmp + sknStateDisabled) -/*********************************************************************** - * - *	Internal Functions - * - ***********************************************************************/ -static void GBInitAll() { -#ifndef DISABLE_SCUMM -	CALL_INIT(IMuseDigital) -	CALL_INIT(NewGui) -	CALL_INIT(Akos) -	CALL_INIT(Bundle) -	CALL_INIT(Codec47) -	CALL_INIT(Gfx) -	CALL_INIT(Dialogs) -	CALL_INIT(Charset) -	CALL_INIT(Costume) -#endif -} - -static void GBReleaseAll() { -#ifndef DISABLE_SCUMM -	CALL_RELEASE(IMuseDigital) -	CALL_RELEASE(NewGui) -	CALL_RELEASE(Akos) -	CALL_RELEASE(Bundle) -	CALL_RELEASE(Codec47) -	CALL_RELEASE(Gfx) -	CALL_RELEASE(Dialogs) -	CALL_RELEASE(Charset) -	CALL_RELEASE(Costume) -#endif -} - -static void FrmReturnToMain(UInt16 updateCode = frmRedrawUpdateMS) { -	// if there is a form loaded, prevent crash on OS5 -	if (FrmGetFirstForm()) { -		FrmUpdateForm(MainForm, updateCode); -		FrmReturnToForm(MainForm); -	} -} - -//TODO : use Boolean instead of void to check err -static DmOpenRef GBOpenInternal(const Char *nameP) { -	LocalID dbID = DmFindDatabase(0, nameP); -	if (dbID) { -		UInt32 dbType, dbCreator; -		Err e = DmDatabaseInfo(0, dbID, 0, 0, 0, 0, 0, 0, 0, 0, 0, &dbType, &dbCreator); -		 -		if (!e && dbType == 'GLBS' && dbCreator == appFileCreator) -			return DmOpenDatabase(0, dbID, dmModeReadOnly); -	} -	return NULL; -} - -static void GBOpen() { -	gVars->globals[GBVARS_SCUMM] = GBOpenInternal("Scumm-Globals"); -	gVars->globals[GBVARS_SIMON] = GBOpenInternal("Simon-Globals"); -	gVars->globals[GBVARS_SKY] = GBOpenInternal("Sky-Globals"); -} - -static void GBClose() { -	if (gVars->globals[GBVARS_SCUMM]) -		DmCloseDatabase(gVars->globals[GBVARS_SCUMM]); -	if (gVars->globals[GBVARS_SIMON]) -		DmCloseDatabase(gVars->globals[GBVARS_SIMON]); -	if (gVars->globals[GBVARS_SKY]) -		DmCloseDatabase(gVars->globals[GBVARS_SKY]); -} - -void *GBGetRecord(UInt16 index, UInt16 id) { -	if (gVars->globals[id]) { -		MemHandle recordH = DmQueryRecord(gVars->globals[id], index); -		if (recordH) -			return MemHandleLock(recordH); -	} -	return NULL; -} - -void GBReleaseRecord(UInt16 index, UInt16 id) { -	if (gVars->globals[id]) { -		MemHandle recordH = DmQueryRecord(gVars->globals[id], index); -		if (recordH) -			MemHandleUnlock(recordH); -	} -} - ///////////////////////////////////////////////////////////////////////// -static DmOpenRef SknOpenSkin() { -	return DmOpenDatabase(gPrefs->skin.cardNo, gPrefs->skin.dbID, dmModeReadOnly); -} - -static void SknCloseSkin(DmOpenRef skinDBP) { -	if (skinDBP) -		DmCloseDatabase(skinDBP); -} -/* -static void SknSetPalette() { - -	UInt16 palIndex; -	ColorTableType *palTemp; -	MemHandle palH; - -	DmOpenRef skinDBP = SknOpenSkin(); - -	if (skinDBP) { -		palIndex = DmFindResource (skinDBP, colorTableRsc, skinPalette, NULL); - -		if (palIndex != 0xFFFF) { -			palH = DmGetResourceIndex(skinDBP, palIndex); -			 -			if (palH) { -				palTemp = (ColorTableType *)MemHandleLock(palH); -				WinPalette(winPaletteSet, 0, 256, ColorTableEntries(palTemp)); -				MemPtrUnlock(palTemp);					 -				DmReleaseResource(palH); -			} -		} -	} -	 -	SknCloseSkin(skinDBP); - -} -*/ -static void SknGetListColors(DmOpenRef skinDBP, DmResID resID, UInt8 *text, UInt8 *selected, UInt8 *background) { -	UInt16 colIndex; -	MemHandle colH; -	UInt8 *colTemp; - -	// default -	*text = UIColorGetTableEntryIndex (UIMenuForeground); -	*selected = UIColorGetTableEntryIndex (UIMenuSelectedForeground); -	*background = UIColorGetTableEntryIndex (UIMenuSelectedFill); - -	if (skinDBP) { -		colIndex = DmFindResource (skinDBP, sknColorsRsc, resID, NULL); -		 -		if (colIndex != (UInt16)-1) { -			colH = DmGetResourceIndex(skinDBP, colIndex); -			 -			if (colH) { -				colTemp = (UInt8 *)MemHandleLock(colH); -				 -				*text = colTemp[0]; -				*selected = colTemp[1]; -				*background = colTemp[2]; - -				MemPtrUnlock(colTemp);					 -				DmReleaseResource(colH); -			} -		} -	} -} - -static void SknGetObjectBounds(DmOpenRef skinDBP, DmResID resID, RectangleType *rP) { - -	UInt16 bmpIndex, strIndex; -	MemHandle hBmp, hStr; -	BitmapType *bmpTemp; -	UInt8 *strTemp; - -	RctSetRectangle(rP, 0, 0, 0, 0); -	 -	if (skinDBP) { -		bmpIndex = DmFindResource (skinDBP, bitmapRsc, resID, NULL); -		 -		if (bmpIndex != (UInt16)-1) {						// if bmp exists -			strIndex = DmFindResource (skinDBP, sknPosRsc, resID, NULL); -			 -			if (strIndex != (UInt16)-1) {					// if params exist -				hBmp = DmGetResourceIndex(skinDBP,bmpIndex); - -				if (hBmp) { -					hStr = DmGetResourceIndex(skinDBP,strIndex); -					 -					if (hStr) { -					//	buttons : state|x|y|w/h slider|draw mode|x1/y1 keep|x2/y2 keep slider -					//	list (160mode) : state|x|y|w|h| -						bmpTemp = (BitmapType *)MemHandleLock(hBmp); -						strTemp = (UInt8 *)MemHandleLock(hStr); -						 -						BmpGlueGetDimensions(bmpTemp, &(rP->extent.x), &(rP->extent.y), 0); -						rP->topLeft.x = strTemp[sknInfoPosX] * 2; -						rP->topLeft.y = strTemp[sknInfoPosY] * 2; -						 -						MemPtrUnlock(strTemp);					 -						DmReleaseResource(hStr); -					} - -					MemPtrUnlock(bmpTemp); -					DmReleaseResource(hBmp); -				} -			} -		} -	} -} - -static UInt8 SknGetState(DmOpenRef skinDBP, DmResID resID) { - -	UInt16 index; -	MemHandle hStr; -	UInt8 *strTemp; -	UInt8 oldState = sknStateDisabled; - -	if (skinDBP) { -		index = DmFindResource (skinDBP, sknPosRsc, resID, NULL); -		 -		if (index != (UInt16)-1) { -			hStr = DmGetResourceIndex(skinDBP, index); -			 -			if (hStr) { -				strTemp = (UInt8 *)MemHandleLock(hStr); -				oldState = strTemp[sknInfoState];				 -				MemPtrUnlock(strTemp);					 -				DmReleaseResource(hStr);				 -			} -		} -	} - -	return oldState; -} - -static UInt8 SknSetState(DmOpenRef skinDBP, DmResID resID, UInt8 newState) { - -	UInt16 index; -	MemHandle hStr; -	UInt8 *strTemp; -	UInt8 oldState = 0; - -	if (skinDBP) { -		index = DmFindResource (skinDBP, sknPosRsc, resID, NULL); -		 -		if (index != (UInt16)-1) { -			hStr = DmGetResourceIndex(skinDBP, index); -			 -			if (hStr) { -				strTemp = (UInt8 *)MemHandleLock(hStr); -				oldState = strTemp[sknInfoState]; -				 -				if (oldState != newState) { -					DmWrite(strTemp, 0, &newState, 1); -				} -				 -				MemPtrUnlock(strTemp);					 -				DmReleaseResource(hStr);				 -			} -		} -	} - -	return oldState; -} - -static void SknCopyBits(DmOpenRef skinDBP, DmResID bitmapID, const RectangleType *srcRect, Coord destX, Coord destY, Boolean standard) { -	MemHandle hTemp; -	BitmapPtr bmpTemp; -	UInt16 index; -	UInt8 *bmpData; -//	Err e; - -	Coord cx, cy, cw, ch, bw, bh; -	UInt8 *dst, *src; - -	if (skinDBP) { -		// find the bitmap -		index = DmFindResource (skinDBP, bitmapRsc, bitmapID, NULL); - -		if (index != (UInt16)-1) { -			hTemp = DmGetResourceIndex(skinDBP,index); -			 -			if (hTemp) { -				bmpTemp = (BitmapType *)MemHandleLock(hTemp); -				BmpGlueGetDimensions(bmpTemp, &bw, &bh, 0); - -				if (!srcRect) -				{ -					cx = 0; -					cy = 0; -					cw = bw; -					ch = bh; -				} -				else -				{ -					cx = srcRect->topLeft.x; -					cy = srcRect->topLeft.y; -					cw = srcRect->extent.x; -					ch = srcRect->extent.y; -				} - -				if (ch) { -					Coord picth = gVars->screenFullWidth; -					dst = (UInt8 *)BmpGetBits(WinGetBitmap(WinGetDisplayWindow())); -				 -					dst+= destX + destY * picth; -					bmpData = (UInt8 *)BmpGetBits(bmpTemp); -					src	= bmpData + cx + cy * bw; - -					do { -						MemMove(dst, src, cw); -						dst += picth; -						src += bw; -					} while (--ch); -				} - -				MemPtrUnlock(bmpTemp); -				DmReleaseResource(hTemp); -			} -		} -	} -} - -static void SknShowObject(DmOpenRef skinDBP, DmResID resID) { - -	RectangleType r; -	UInt8 state = SknGetState(skinDBP, resID); -	SknGetObjectBounds(skinDBP, resID, &r); -	SknCopyBits(skinDBP, resID + state, NULL, r.topLeft.x, r.topLeft.y, 0); -} - -static UInt16 SknCheckClick(DmOpenRef skinDBP, Coord mx, Coord my) -{ -	UInt16 resID; -	RectangleType r; - -	mx *= 2; -	my *= 2; - -	if (skinDBP) { -		for (resID = 1100; resID <= 7000; resID += 100) { -			if (SknGetState(skinDBP, resID) != sknStateDisabled) { -				SknGetObjectBounds(skinDBP, resID, &r); -				if (RctPtInRectangle(mx, my, &r)) { -					return resID; -				} -			} -		} -		 -	} -	 -	return 0; -} - - -// Callback for ExgDBWrite to send data with Exchange Manager -static Err WriteDBData(const void* dataP, UInt32* sizeP, void* userDataP) -{ -	Err err; -	*sizeP = ExgSend((ExgSocketPtr)userDataP, (void*)dataP, *sizeP, &err); -	return err; -} - -static Err SendDatabase (UInt16 cardNo, LocalID dbID, Char *nameP, Char *descriptionP) -{ -	ExgSocketType exgSocket; -	Err err; - -	// Create exgSocket structure -	MemSet(&exgSocket, sizeof(exgSocket), 0); -	exgSocket.description = descriptionP; -	exgSocket.name = nameP; - -	// Start an exchange put operation -	err = ExgPut(&exgSocket); -	if (!err) { -		err = ExgDBWrite(WriteDBData, &exgSocket, NULL, dbID, cardNo); -		err = ExgDisconnect(&exgSocket, err); -	} - -	return err; -} - -static Err BeamMe() { - -	UInt16 cardNo; -	LocalID dbID; -	Err err; - -	err = SysCurAppDatabase(&cardNo, &dbID); -	if (dbID) -		err = SendDatabase(0, dbID, "ScummVM.prc", "\nPlay your favorite LucasArts games"); -	else -		err = DmGetLastErr(); -	 -	return err; -} - -/*********************************************************************** - * - * FUNCTION:    RomVersionCompatible - * - * DESCRIPTION: This routine checks that a ROM version is meet your - *              minimum requirement. - * - * PARAMETERS:  requiredVersion - minimum rom version required - *                                (see sysFtrNumROMVersion in SystemMgr.h  - *                                for format) - *              launchFlags     - flags that indicate if the application  - *                                UI is initialized. - * - * RETURNED:    error code or zero if rom is compatible - * - * REVISION HISTORY: - * - * - ***********************************************************************/ -static Err RomVersionCompatible(UInt32 requiredVersion, UInt16 launchFlags) -{ -	UInt32 romVersion; - -	// See if we're on in minimum required version of the ROM or later. -	FtrGet(sysFtrCreator, sysFtrNumROMVersion, &romVersion); -	if (romVersion < requiredVersion) -		{ -		if ((launchFlags & (sysAppLaunchFlagNewGlobals | sysAppLaunchFlagUIApp)) == -			(sysAppLaunchFlagNewGlobals | sysAppLaunchFlagUIApp)) -			{ -			FrmAlert (RomIncompatibleAlert); -		 -			// Palm OS 1.0 will continuously relaunch this app unless we switch to  -			// another safe one. -			if (romVersion <= kPalmOS10Version) -				{ -				AppLaunchWithCommand(sysFileCDefaultApp, sysAppLaunchCmdNormalLaunch, NULL); -				} -			} -		return sysErrRomIncompatible; -		} - -	return errNone; -} - - -/*********************************************************************** - * - * FUNCTION:    GetObjectPtr - * - * DESCRIPTION: This routine returns a pointer to an object in the current - *              form. - * - * PARAMETERS:  formId - id of the form to display - * - * RETURNED:    void * - * - * REVISION HISTORY: - * - * - ***********************************************************************/ -static void * GetObjectPtr(UInt16 objectID) -{ -	FormPtr frmP; - -	frmP = FrmGetActiveForm(); -	return FrmGetObjectPtr(frmP, FrmGetObjectIndex(frmP, objectID)); -} - -static void FrmList(EventPtr eventP, UInt16 objectID) -{ -	ListType *listP; -	UInt16 listItem; - -	listP = (ListType *)GetObjectPtr(objectID); -	listItem = LstPopupList(listP); -	CtlSetLabel(eventP->data.ctlSelect.pControl, LstGetSelectionText(listP, LstGetSelection(listP))); -} - -//############################################################################# -//############################################################################# - -enum { -	IcnNone = 255, -	IcnInfo = 0, -	IcnEdit = 1, -	IcnDelt = 2, -	IcnVibr = 3, -	IcnAOff = 4, -	IcnPlay = 5 -}; - -enum { -	ArwNone = 255, -	ArwUp   = 0, -	ArwFUp  = 1, -	ArwFDwn = 2, -	ArwDown = 3 -}; - -//############################################################################# -//############################################################################# -static Err GamOpenDatabase() { -	Err err = errNone; - -	_dbP = DmOpenDatabaseByTypeCreator( 'DATA', appFileCreator, dmModeReadWrite); - -	if (!_dbP) { -		err = DmCreateDatabase(0, "ScummVM-Data", appFileCreator, 'DATA', false); -		if (!err) { -			_dbP = DmOpenDatabaseByTypeCreator( 'DATA', appFileCreator, dmModeReadWrite); -			 -			if (!_dbP) -				err = DmGetLastErr(); -		} -	} - -	if (err) -		FrmCustomAlert(FrmErrorAlert,"Cannot open/create games list DB !",0,0); -	return err; -} - -static void GamCloseDatabase(Boolean ignoreCardParams) { -	if (_dbP) { -		LocalID dbID; -		UInt16 cardNo; -		 -		DmOpenDatabaseInfo(_dbP, &dbID, 0, 0, &cardNo, 0); -		DmCloseDatabase(_dbP); - -		if (!ignoreCardParams) { -			if (gPrefs->card.moveDB && gPrefs->card.volRefNum != sysInvalidRefNum) { -				VFSFileRename(gPrefs->card.volRefNum, "/Palm/Programs/ScummVM/listdata.pdb", "listdata-old.pdb"); -				Err e = VFSExportDatabaseToFile(gPrefs->card.volRefNum, "/Palm/Programs/ScummVM/listdata.pdb", cardNo, dbID); -				if (!e) { -					VFSFileDelete(gPrefs->card.volRefNum, "/Palm/Programs/ScummVM/listdata-old.pdb"); -					if (gPrefs->card.deleteDB) -						DmDeleteDatabase(cardNo, dbID); -				} else { -					VFSFileRename(gPrefs->card.volRefNum, "/Palm/Programs/ScummVM/listdata-old.pdb", "listdata.pdb"); -				} -			} -		} -	} -	_dbP = NULL; -} - -static Int16 GamCompare(GameInfoType *a, GameInfoType *b, SortRecordInfoPtr, SortRecordInfoPtr, MemHandle) { -	return StrCompare(a->nameP, b->nameP); -} -static Err GamSortList() { -	return DmQuickSort (_dbP, (DmComparF *)GamCompare, 0); -} - - -static UInt16 GamGetSelected() -{ -	MemHandle record; -	GameInfoType *game; -	Boolean selected; -	UInt16 index = DmNumRecords(_dbP)-1; -	 -	while (index != (UInt16)-1) { -		record = DmQueryRecord(_dbP, index); -		game = (GameInfoType *)MemHandleLock(record); -		selected = game->selected; -		MemHandleUnlock(record); - -		if (selected) -			return index; - -		index--; -	} - -	return dmMaxRecordIndex; -} -static void GamUnselect() { -	GameInfoType modGame; -	GameInfoType *game; - -	MemHandle recordH; -	UInt16 index; - -	index = GamGetSelected(); -	 -	if (index != dmMaxRecordIndex) { -		recordH = DmGetRecord(_dbP, index); -		game = (GameInfoType *)MemHandleLock(recordH); - -		MemMove(&modGame, game, sizeof(GameInfoType));	 -		modGame.selected = !modGame.selected; -		DmWrite(game, 0, &modGame, sizeof(GameInfoType)); - -		MemHandleUnlock(recordH); -		DmReleaseRecord (_dbP, index, 0); -	} -} - -static void IcnRedrawTools(DmOpenRef skinDBP) -{ -	if (GamGetSelected() == dmMaxRecordIndex) { -		if (SknGetState(skinDBP, skinButtonGameDelete) == sknStateNormal) { -			SknSetState(skinDBP, skinButtonGameDelete,sknStateDisabled); -			SknShowObject(skinDBP, skinButtonGameDelete); -		} -		if (SknGetState(skinDBP, skinButtonGameEdit) == sknStateNormal) { -			SknSetState(skinDBP, skinButtonGameEdit,sknStateDisabled); -			SknShowObject(skinDBP, skinButtonGameEdit); -		} - -	} else { -		if (SknGetState(skinDBP, skinButtonGameDelete) == sknStateDisabled) { -			SknSetState(skinDBP, skinButtonGameDelete,sknStateNormal); -			SknShowObject(skinDBP, skinButtonGameDelete); -		} -		if (SknGetState(skinDBP, skinButtonGameEdit) == sknStateDisabled) { -			SknSetState(skinDBP, skinButtonGameEdit,sknStateNormal); -			SknShowObject(skinDBP, skinButtonGameEdit); -		} -	} -} - -static void ArwRedrawSlider(DmOpenRef skinDBP, UInt16 index, UInt16 maxIndex, UInt16 perPage) -{ -	if (maxIndex <= perPage) { -		if (SknGetState(skinDBP,skinSliderUpArrow) != sknStateDisabled) { -			SknSetState(skinDBP,skinSliderUpArrow,sknStateDisabled); -			SknShowObject(skinDBP,skinSliderUpArrow); -		} -		if (SknGetState(skinDBP,skinSliderDownArrow) != sknStateDisabled) { -			SknSetState(skinDBP,skinSliderDownArrow,sknStateDisabled); -			SknShowObject(skinDBP,skinSliderDownArrow); -		} - -	} else { -		if (SknGetState(skinDBP,skinSliderUpArrow) == sknStateDisabled) { -			SknSetState(skinDBP,skinSliderUpArrow,sknStateNormal); -			SknShowObject(skinDBP,skinSliderUpArrow); -		} -		if (SknGetState(skinDBP,skinSliderDownArrow) == sknStateDisabled) { -			SknSetState(skinDBP,skinSliderDownArrow,sknStateNormal); -			SknShowObject(skinDBP,skinSliderDownArrow); -		} -	} -} - -static void GamGetListBounds(RectangleType *rAreaP, RectangleType *rArea2xP) { -	DmOpenRef skinDBP; -	UInt16 strIndex; -	MemHandle hStr; -	UInt8 *strTemp; -	UInt16 x,y,w,h; - -	skinDBP = DmOpenDatabase(gPrefs->skin.cardNo, gPrefs->skin.dbID, dmModeReadOnly); -	if (skinDBP) { -		strIndex = DmFindResource (skinDBP, sknPosRsc, skinList, NULL); -		 -		if (strIndex != (UInt16)-1) {					// if params exist -			hStr = DmGetResourceIndex(skinDBP,strIndex); -			if (hStr) { -				strTemp = (UInt8 *)MemHandleLock(hStr); - -				x = strTemp[sknInfoPosX]; -				y = strTemp[sknInfoPosY]; -				w = strTemp[sknInfoListWidth]; -				h = strTemp[sknInfoListSize] * sknInfoListItemSize; -				 -				if (rAreaP) -					RctSetRectangle(rAreaP ,x, y, w, h); -				if (rArea2xP) -					RctSetRectangle(rArea2xP, x+x, y+y, w+w, h+h); - -				MemHandleUnlock(hStr); -				DmReleaseResource(hStr); -				 -			} -		} - -		DmCloseDatabase(skinDBP); -	} -} - -static void GamUpdateList() { -	MemHandle record; -	UInt16 index, maxIndex, maxView; -	GameInfoType *game; -	RectangleType rArea, rField, rCopy, rArea2x; -	DmOpenRef skinDBP; - -	UInt8 txtColor, norColor, selColor, bkgColor; -	UInt16 x,y; - -	WinScreenLock(winLockCopy); -	GamGetListBounds(&rArea, &rArea2x); -	skinDBP = SknOpenSkin(); -	// set default bg -	WinSetForeColor(UIColorGetTableEntryIndex (UIFormFill)); -	WinDrawRectangle(&rArea,0); -	// copy top bg -	SknGetObjectBounds(skinDBP, skinBackgroundImageTop, &rField); -	RctGetIntersection(&rArea2x, &rField, &rCopy); -	x = rCopy.topLeft.x; -	y = rCopy.topLeft.y; -	rCopy.topLeft.x	-= rField.topLeft.x; -	rCopy.topLeft.y	-= rField.topLeft.y;	 -	SknCopyBits(skinDBP, skinBackgroundImageTop, &rCopy, x, y, 0); -	// copy bottom bg -	SknGetObjectBounds(skinDBP, skinBackgroundImageBottom, &rField); -	RctGetIntersection(&rArea2x, &rField, &rCopy); -	x = rCopy.topLeft.x; -	y = rCopy.topLeft.y; -	rCopy.topLeft.x	-= rField.topLeft.x; -	rCopy.topLeft.y	-= rField.topLeft.y;	 -	SknCopyBits(skinDBP, skinBackgroundImageBottom, &rCopy, x, y, 0); - -	FntSetFont(stdFont); - -	index = gPrefs->listPosition; -	maxIndex = DmNumRecords(_dbP); -	maxView = rArea.extent.y / sknInfoListItemSize; - -	if (index > 0 && (index+maxView) > maxIndex) { -		index -= (index+maxView) - maxIndex; -		 gPrefs->listPosition = index; -	}	 -	ArwRedrawSlider(skinDBP, index, maxIndex, maxView); -	IcnRedrawTools(skinDBP); -	SknGetListColors(skinDBP, skinColors, &norColor, &selColor, &bkgColor); - -	SknCloseSkin(skinDBP); - -	while (index < (gPrefs->listPosition + maxView) && index < maxIndex) { -		record = DmQueryRecord(_dbP, index); -		game = (GameInfoType *)MemHandleLock(record); - -		// text box -		RctSetRectangle(&rField, rArea.topLeft.x, (rArea.topLeft.y + sknInfoListItemSize * (index - gPrefs->listPosition)), rArea.extent.x, sknInfoListItemSize); -		WinSetClip(&rField); - -		if (game->selected) { -			WinSetDrawMode(winPaint); -			WinSetForeColor(bkgColor); -			WinDrawRectangle(&rField,0); -			txtColor = selColor; -		} -		else -			txtColor = norColor; - -		// clipping -		rField.topLeft.x += 2; -		rField.extent.x -= 4; -		WinSetClip(&rField); -		// draw text mask -		WinSetTextColor(255); -		WinSetDrawMode(winMask); -		WinPaintChars(game->nameP, StrLen(game->nameP), rField.topLeft.x, rField.topLeft.y); -		// draw text -		if (txtColor) { -			WinSetTextColor(txtColor); -			WinSetDrawMode(winOverlay); -			WinPaintChars(game->nameP, StrLen(game->nameP), rField.topLeft.x, rField.topLeft.y); -		} -		MemHandleUnlock(record); -		index++; -	} - -	RctSetRectangle(&rArea,0,0,160,160); -	WinSetClip(&rArea); -	WinScreenUnlock(); -} - -static void GamImportDatabase(Boolean updateList) { -	if (gPrefs->card.volRefNum != sysInvalidRefNum && gPrefs->card.moveDB) { -		FileRef file; -		Err e; -		 -		e = VFSFileOpen(gPrefs->card.volRefNum, "/Palm/Programs/ScummVM/listdata.pdb", vfsModeRead, &file); -		if (!e) { -			UInt16 oCardNo, nCardNo; -			LocalID oDbID, nDbID; -			UInt32 type = 'ODAT';	// change the type to avoid the old db to be loaded in case of crash - -			VFSFileClose(file); -			if (gPrefs->card.confirmMoveDB) -				if (FrmCustomAlert(FrmConfirmAlert, "Do you want to import games database from memory card ?", 0, 0) == FrmConfirmNo) { -					// prevent to replace the file on memory card -					gPrefs->card.moveDB = false; -					return; -				} - 			 - 			// get current db info and rename it - 			DmOpenDatabaseInfo(_dbP, &oDbID, 0, 0, &oCardNo, 0); -			GamCloseDatabase(true); -			DmSetDatabaseInfo(oCardNo, oDbID, "ScummVM-Data-old.pdb", 0, 0, 0, 0, 0, 0, 0, 0, &type, 0); -	 -			e = VFSImportDatabaseFromFile(gPrefs->card.volRefNum, "/Palm/Programs/ScummVM/listdata.pdb", &nCardNo, &nDbID); -			if (e) { -				type = 'DATA'; -				FrmCustomAlert(FrmErrorAlert, "Failed to import games database from memory card.", 0, 0); -				DmSetDatabaseInfo(oCardNo, oDbID, "ScummVM-Data.pdb", 0, 0, 0, 0, 0, 0, 0, 0, &type, 0); -			} else { -				// in OS5 the localID may change ... ? (cause Free Handle error) -				oDbID = DmFindDatabase (oCardNo, "ScummVM-Data-old.pdb"); -				DmDeleteDatabase(oCardNo, oDbID); -			} -			GamOpenDatabase(); -			if (updateList) -				GamUpdateList(); -		} -	} -} - -static Boolean ArwProcessAction(UInt16 button) -{ -	Boolean handled = false; - -	switch (button) { -		case skinSliderUpArrow: -			if (gPrefs->listPosition > 0) { -				gPrefs->listPosition--; -				GamUpdateList(); -			} -			handled = true; -			break; - -		case skinSliderDownArrow: -			RectangleType rArea; -			UInt16 maxView; - -			GamGetListBounds(&rArea, 0); -			maxView = rArea.extent.y / sknInfoListItemSize; - -			if (gPrefs->listPosition < DmNumRecords(_dbP)-maxView) { -				gPrefs->listPosition++; -				GamUpdateList(); -			} -			handled = true; -			break; -	} - -	return handled; -} - -static void GamSelect(Coord x, Coord y) { -	RectangleType rArea; -	UInt16 x1,y1,x2,y2; - -	GamGetListBounds(&rArea,0); -	x1 = rArea.topLeft.x; -	x2 = rArea.topLeft.x + rArea.extent.x - 1; -	y1 = rArea.topLeft.y; -	y2 = rArea.topLeft.y + rArea.extent.y - 1; - -	if (y >= y1 && y <= y2 && x >= x1 && x <= x2) { -		UInt16 index; -		MemHandle record; -		GameInfoType *game; -		UInt16 oldIndex; - -		index = (y - y1) / sknInfoListItemSize + gPrefs->listPosition; - -		if (index == _lstIndex) -			return; - -		if (index < DmNumRecords(_dbP)) -		{ -			GameInfoType modGame; - -			oldIndex = GamGetSelected(); -			record = DmGetRecord(_dbP, index); -			game = (GameInfoType *)MemHandleLock(record); - -			MemMove(&modGame, game, sizeof(GameInfoType));	 -			modGame.selected = !modGame.selected; -			DmWrite(game, 0, &modGame, sizeof(GameInfoType)); - -			MemHandleUnlock(record); -			DmReleaseRecord (_dbP, index, 0); - -			if (oldIndex != index && oldIndex != dmMaxRecordIndex)	{ -				record = DmGetRecord(_dbP, oldIndex); -				game = (GameInfoType *)MemHandleLock(record); - -				MemMove(&modGame, game, sizeof(GameInfoType));	 -				modGame.selected = false; -				DmWrite(game, 0, &modGame, sizeof(GameInfoType)); - -				MemHandleUnlock(record); -				DmReleaseRecord (_dbP, oldIndex, 0); -			} -			 -			_lstIndex = index; -			GamUpdateList(); -		} -	} -} - -static void EditGameFormDelete(Boolean direct) { -	UInt16 index = GamGetSelected(); - -	if (index == dmMaxRecordIndex) { -		FrmCustomAlert(FrmWarnAlert, "Select an entry first.",0,0); -		return; - -	} else if (FrmCustomAlert(FrmConfirmAlert, "Do you really want to delete this entry ?", 0, 0) == FrmConfirmYes) { -		DmRemoveRecord(_dbP, index); -		if (!direct) -			FrmReturnToMain(); -		GamSortList(); -		GamUpdateList(); -	} -} - -static void FldTrimText(FieldType * fldP) { -	MemHandle tmpH; -	Char *tmpP; - -	tmpH = FldGetTextHandle(fldP); -	FldSetTextHandle(fldP, NULL); -	tmpP = (Char *)MemHandleLock(tmpH); -	TxtGlueStripSpaces(tmpP, true, true); -	MemHandleUnlock(tmpH); -	FldSetTextHandle(fldP, tmpH); -} - - -/*********************************************************************** - * - * FUNCTION:    EditGameFormSave - * FUNCTION:    EditGameFormInit - * FUNCTION:    EditGameFormHandleEvent - * - * DESCRIPTION:  - * - * REVISION HISTORY: - * - * - ***********************************************************************/ - -static void EditGameFormSave(UInt16 index) { - -	FieldType *fld1P, *fld2P, *fld3P, *fld4P, *fld5P, *fld6P;	// need to change this with good names -	ControlType *cck1P, *cck2P, *cck3P, *cck4P, *cck5P;	 -	ListType *list1P, *list2P; -	FormPtr frmP; - -	MemHandle recordH; -	GameInfoType *gameInfo, newGameInfo; -//	UInt16 index; - -	list1P = (ListType *)GetObjectPtr(EditGameGfxListList); -	list2P = (ListType *)GetObjectPtr(EditGameLanguageList); -	fld1P = (FieldType *)GetObjectPtr(EditGameEntryNameField); -	fld2P = (FieldType *)GetObjectPtr(EditGamePathField); -	fld3P = (FieldType *)GetObjectPtr(EditGameGameField); -	fld4P = (FieldType *)GetObjectPtr(EditGameLoadSlotField); -	fld5P = (FieldType *)GetObjectPtr(EditGameStartRoomField); -	fld6P = (FieldType *)GetObjectPtr(EditGameTalkSpeedField); -	 -	cck1P = (ControlType *)GetObjectPtr(EditGameLoadSlotCheckbox); -	cck2P = (ControlType *)GetObjectPtr(EditGameStartRoomCheckbox); -	cck3P = (ControlType *)GetObjectPtr(EditGameAmigaCheckbox); -	cck4P = (ControlType *)GetObjectPtr(EditGameSubtitlesCheckbox); -	cck5P = (ControlType *)GetObjectPtr(EditGameTalkSpeedCheckbox); - -	frmP = FrmGetActiveForm(); - -	FldTrimText(fld1P); -	FldTrimText(fld2P); -	FldTrimText(fld3P); - -	if (FldGetTextLength(fld1P) == 0) { -		FrmCustomAlert(FrmWarnAlert,"You must specified an entry name.",0,0); -		FrmSetFocus(frmP, FrmGetObjectIndex(frmP, EditGameEntryNameField)); -		return; -	} else if (FldGetTextLength(fld2P) == 0) { -		FrmCustomAlert(FrmWarnAlert,"You must specified a path.",0,0); -		FrmSetFocus(frmP, FrmGetObjectIndex(frmP, EditGamePathField)); -		return; -	} else if (FldGetTextLength(fld3P) == 0) { -		FrmCustomAlert(FrmWarnAlert,"You must specified a game.",0,0); -		FrmSetFocus(frmP, FrmGetObjectIndex(frmP, EditGameGameField)); -		return; -	} else if (FldGetTextLength(fld5P) == 0 && CtlGetValue(cck2P) == 1) { -		FrmCustomAlert(FrmWarnAlert,"You must specified a room number.",0,0); -		FrmSetFocus(frmP, FrmGetObjectIndex(frmP, EditGameStartRoomField)); -		return; -	} else if (FldGetTextLength(fld6P) == 0 && CtlGetValue(cck5P) == 1) { -		FrmCustomAlert(FrmWarnAlert,"You must specified a talk speed.",0,0); -		FrmSetFocus(frmP, FrmGetObjectIndex(frmP, EditGameTalkSpeedField)); -		return; -	} - -	if (FldGetTextPtr(fld2P)[FldGetTextLength(fld2P)-1] != '/') { -		FldGetTextPtr(fld2P)[FldGetTextLength(fld2P)+0] = '/'; -		FldGetTextPtr(fld2P)[FldGetTextLength(fld2P)+1] = 0; -	} - -//	index = GamGetSelected(); - -	if (index != dmMaxRecordIndex) { -		recordH = DmGetRecord(_dbP, index); -	} else { -		index = dmMaxRecordIndex; -		GamUnselect(); -		recordH = DmNewRecord(_dbP, &index, sizeof(GameInfoType)); -	} - -	gameInfo = (GameInfoType *)MemHandleLock(recordH); - -	StrCopy(newGameInfo.nameP, FldGetTextPtr(fld1P)); -	StrCopy(newGameInfo.pathP, FldGetTextPtr(fld2P)); -	StrCopy(newGameInfo.gameP, FldGetTextPtr(fld3P)); -	newGameInfo.gfxMode = LstGetSelection(list1P); -	newGameInfo.language = LstGetSelection(list2P); -	newGameInfo.selected = true; -	newGameInfo.autoLoad = CtlGetValue(cck1P); -	newGameInfo.loadSlot = StrAToI(FldGetTextPtr(fld4P)); -	newGameInfo.autoRoom = CtlGetValue(cck2P); -	newGameInfo.roomNum = StrAToI(FldGetTextPtr(fld5P)); -	newGameInfo.amiga = CtlGetValue(cck3P); -	newGameInfo.subtitles = !(CtlGetValue(cck4P)); -	newGameInfo.talkValue = StrAToI(FldGetTextPtr(fld6P)); -	newGameInfo.talkSpeed = CtlGetValue(cck5P); - -	DmWrite(gameInfo, 0, &newGameInfo, sizeof(GameInfoType)); - -	MemHandleUnlock(recordH); -	DmReleaseRecord (_dbP, index, 0); -	GamSortList(); -	// update list position -	{ -		RectangleType rArea; -		UInt16 posIndex, maxIndex, maxView; -		 -		// get the sorted index -		index = GamGetSelected(); -		// if new item is out of the list bounds, change current list pos -		GamGetListBounds(&rArea, NULL); -		maxView = rArea.extent.y / sknInfoListItemSize; -		posIndex = gPrefs->listPosition; -		maxIndex = DmNumRecords(_dbP); -		 -		if (index == 0 && posIndex > 0) { -			gPrefs->listPosition = 0; -		} else if ((maxView + posIndex) <= index) { -			posIndex = index - (maxView - posIndex) + 1; -			gPrefs->listPosition = posIndex; -		} -	} - -	FrmReturnToMain(); -	GamUpdateList(); -} - -static void EditGameFormInit(UInt16 index) { - -	FieldType *fld1P, *fld2P, *fld3P, *fld4P, *fld5P, *fld6P; -	FormPtr frmP; -	ListType *list1P, *list2P; - -	Char *nameP, *pathP, *gameP, *loadP, *roomP, *talkP; -	MemHandle nameH, pathH, gameH, loadH, roomH, talkH; - -	MemHandle recordH = NULL; -	GameInfoType *game; - -	list1P = (ListType *)GetObjectPtr(EditGameGfxListList); -	list2P = (ListType *)GetObjectPtr(EditGameLanguageList); -	fld1P = (FieldType *)GetObjectPtr(EditGameEntryNameField); -	fld2P = (FieldType *)GetObjectPtr(EditGamePathField); -	fld3P = (FieldType *)GetObjectPtr(EditGameGameField); -	fld4P = (FieldType *)GetObjectPtr(EditGameLoadSlotField); -	fld5P = (FieldType *)GetObjectPtr(EditGameStartRoomField); -	fld6P = (FieldType *)GetObjectPtr(EditGameTalkSpeedField); - -	nameH = MemHandleNew(FldGetMaxChars(fld1P)); -	pathH = MemHandleNew(FldGetMaxChars(fld2P)); -	gameH = MemHandleNew(FldGetMaxChars(fld3P)); -	loadH = MemHandleNew(FldGetMaxChars(fld4P)); -	roomH = MemHandleNew(FldGetMaxChars(fld5P)); -	talkH = MemHandleNew(FldGetMaxChars(fld6P)); - -	nameP = (Char *)MemHandleLock(nameH); -	pathP = (Char *)MemHandleLock(pathH); -	gameP = (Char *)MemHandleLock(gameH); -	loadP = (Char *)MemHandleLock(loadH); -	roomP = (Char *)MemHandleLock(roomH); -	talkP = (Char *)MemHandleLock(talkH); - -//	index = GamGetSelected(); - -	if (index != dmMaxRecordIndex) { -		recordH = DmQueryRecord(_dbP, index); -		game = (GameInfoType *)MemHandleLock(recordH); -		StrCopy(nameP, game->nameP); -		StrCopy(pathP, game->pathP); -		StrCopy(gameP, game->gameP); - -		LstSetSelection(list1P, game->gfxMode); -		LstSetSelection(list2P, game->language); -		 -		StrIToA(loadP, game->loadSlot); -		StrIToA(roomP, game->roomNum); -		StrIToA(talkP, game->talkValue); - -		CtlSetValue((ControlType *)GetObjectPtr(EditGameLoadSlotCheckbox), game->autoLoad); -		CtlSetValue((ControlType *)GetObjectPtr(EditGameStartRoomCheckbox), game->autoRoom); -		CtlSetValue((ControlType *)GetObjectPtr(EditGameAmigaCheckbox), game->amiga); -		CtlSetValue((ControlType *)GetObjectPtr(EditGameSubtitlesCheckbox), !game->subtitles); -		CtlSetValue((ControlType *)GetObjectPtr(EditGameTalkSpeedCheckbox), game->talkSpeed); -		 -		MemHandleUnlock(recordH); -		CtlSetUsable((ControlType *)GetObjectPtr(EditGameDeleteButton),true); -	} -	else { -		MemSet(nameP,MemHandleSize(nameH),0); -		MemSet(pathP,MemHandleSize(pathH),0); -		MemSet(gameP,MemHandleSize(gameH),0); - -		StrIToA(loadP, 0); -		StrIToA(roomP, 0); -		StrIToA(talkP, 60); - -		CtlSetValue((ControlType *)GetObjectPtr(EditGameLoadSlotCheckbox), 0); -		CtlSetValue((ControlType *)GetObjectPtr(EditGameStartRoomCheckbox), 0); -		CtlSetValue((ControlType *)GetObjectPtr(EditGameAmigaCheckbox), 0); -		CtlSetValue((ControlType *)GetObjectPtr(EditGameSubtitlesCheckbox), 0); -		CtlSetValue((ControlType *)GetObjectPtr(EditGameTalkSpeedCheckbox), 0); - -		LstSetSelection(list1P, 1); -		LstSetSelection(list2P, 0); -		CtlSetUsable((ControlType *)GetObjectPtr(EditGameDeleteButton),false); -	} - -	MemHandleUnlock(nameH); -	MemHandleUnlock(pathH); -	MemHandleUnlock(gameH); -	MemHandleUnlock(loadH); -	MemHandleUnlock(roomH); -	MemHandleUnlock(talkH); - -	FldSetTextHandle(fld1P, nameH); -	FldSetTextHandle(fld2P, pathH); -	FldSetTextHandle(fld3P, gameH); -	FldSetTextHandle(fld4P, loadH); -	FldSetTextHandle(fld5P, roomH); -	FldSetTextHandle(fld6P, talkH); - -	CtlSetLabel((ControlType *)GetObjectPtr(EditGameGfxPopupPopTrigger), LstGetSelectionText(list1P, LstGetSelection(list1P))); -	CtlSetLabel((ControlType *)GetObjectPtr(EditGameLanguagePopTrigger), LstGetSelectionText(list2P, LstGetSelection(list2P))); - -	frmP = FrmGetActiveForm(); -	FrmDrawForm(frmP); -} - -static Boolean EditGameFormHandleEvent(EventPtr eventP) -{ -	Boolean handled = false; - -	switch (eventP->eType) { -		case frmOpenEvent: -			switch (__editMode__) { -				case edtModeAdd: -					EditGameFormInit(dmMaxRecordIndex); -					break; -				case edtModeEdit: -				case edtModeParams: -				default : -					EditGameFormInit(GamGetSelected()); -					break; -			} -			handled = true; -			break; - -		case ctlSelectEvent: -			switch (eventP->data.ctlSelect.controlID) -			{ -				case EditGameOKButton: -					switch (__editMode__) { -						case edtModeAdd: -							EditGameFormSave(dmMaxRecordIndex); -							break; -						case edtModeEdit: -						case edtModeParams: -						default : -							EditGameFormSave(GamGetSelected()); -							break; -					} -					break; - -				case EditGameCancelButton: -					FrmReturnToMain(); -					break; -				 -				case EditGameDeleteButton: -					EditGameFormDelete(false); -					break; - -				case EditGameGfxPopupPopTrigger: -					FrmList(eventP, EditGameGfxListList); -					break; - -				case EditGameLanguagePopTrigger: -					FrmList(eventP, EditGameLanguageList); -					break; -			} -			handled = true; -			break; - -		default: -			break; -	} -	 -	return handled; -} - -/*********************************************************************** - * - * FUNCTION:    SystemInfoFormInit - * FUNCTION:     SystemInfoFormHandleEvent - * - * DESCRIPTION:  - * - * REVISION HISTORY: - * - * - ***********************************************************************/ -static void GetMemory(UInt32* storageMemoryP, UInt32* dynamicMemoryP, UInt32 *storageFreeP, UInt32 *dynamicFreeP) { -	UInt32		free, max; - -	Int16		i; -	Int16		nCards; -	UInt16		cardNo; -	UInt16		heapID; - -	UInt32		storageMemory = 0; -	UInt32		dynamicMemory = 0; -	UInt32		storageFree = 0; -	UInt32		dynamicFree = 0; - -	// Iterate through each card to support devices with multiple cards. -	nCards = MemNumCards();		 - -	for (cardNo = 0; cardNo < nCards; cardNo++) { -		// Iterate through the RAM heaps on a card (excludes ROM). -		for (i=0; i< MemNumRAMHeaps(cardNo); i++) { -			// Obtain the ID of the heap. -			heapID = MemHeapID(cardNo, i); -			// Calculate the total memory and free memory of the heap. -			MemHeapFreeBytes(heapID, &free, &max); -			 -			// If the heap is dynamic, increment the dynamic memory total. -			if (MemHeapDynamic(heapID)) { -				dynamicMemory += MemHeapSize(heapID); -				dynamicFree += free; - -			// The heap is nondynamic (storage ?). -			} else { -				storageMemory += MemHeapSize(heapID); -				storageFree += free; -			} -		} -	} -	// Reduce the stats to KB.  Round the results. -	dynamicMemory = dynamicMemory / 1024L; -	storageMemory = storageMemory / 1024L; - -	dynamicFree = dynamicFree / 1024L; -	storageFree = storageFree / 1024L; - -	if (dynamicMemoryP) *dynamicMemoryP = dynamicMemory; -	if (storageMemoryP) *storageMemoryP = storageMemory; -	if (dynamicFreeP) *dynamicFreeP = dynamicFree; -	if (storageFreeP) *storageFreeP = storageFree; -} - -static void SystemInfoFormInit() { -	FormPtr frmP; -	Coord x; -	UInt32 dm, sm, df, sf; -	Char num[10]; - -	GetMemory(&sm, &dm, &sf, &df); -	frmP = FrmGetActiveForm(); -	FrmDrawForm(frmP); - -	WinSetTextColor(255); -	FntSetFont(stdFont); -	 -	StrIToA(num, dm); -	x = 149 - FntCharsWidth(num, StrLen(num)); -	WinDrawChars(num, StrLen(num), x, 30); - -	StrIToA(num, sm); -	x = 149 - FntCharsWidth(num, StrLen(num)); -	WinDrawChars(num, StrLen(num), x, 42); - -	StrIToA(num, df); -	x = 109 - FntCharsWidth(num, StrLen(num)); -	WinDrawChars(num, StrLen(num), x, 30); - -	StrIToA(num, sf); -	x = 109 - FntCharsWidth(num, StrLen(num)); -	WinDrawChars(num, StrLen(num), x, 42); -} - -static Boolean SystemInfoFormHandleEvent(EventPtr eventP) { -	Boolean handled = false; - -	switch (eventP->eType) { -		case frmOpenEvent: -			SystemInfoFormInit(); -			handled = true; -			break; - -		case ctlSelectEvent: -			// OK button only -			FrmReturnToMain(); -			handled = true; -			break; - -		default: -			break; -	} -	 -	return handled; -} -/*********************************************************************** - * - * FUNCTION:    VolumeFormSave - * FUNCTION:    VolumeFormInit - * FUNCTION:    VolumeFormHandleEvent - * - * DESCRIPTION:  - * - * REVISION HISTORY: - * - * - ***********************************************************************/ - -static void VolumeFormSave() { -	SliderControlType *slid1P, *slid2P, *slid3P, *slid4P, *slid5P; -	 -	slid1P = (SliderControlType *)GetObjectPtr(VolumeSpeakerSliderControl); -	slid2P = (SliderControlType *)GetObjectPtr(VolumeHeadphoneSliderControl); - -	slid3P = (SliderControlType *)GetObjectPtr(VolumeMasterSliderControl); -	slid4P = (SliderControlType *)GetObjectPtr(VolumeMusicSliderControl); -	slid5P = (SliderControlType *)GetObjectPtr(VolumeSfxSliderControl); -	 -	CtlGetSliderValues ((ControlType *)slid1P, 0, 0, 0, &gPrefs->volume.speaker) ; -	CtlGetSliderValues ((ControlType *)slid2P, 0, 0, 0, &gPrefs->volume.headphone) ; - -	CtlGetSliderValues ((ControlType *)slid3P, 0, 0, 0, &gPrefs->volume.master); -	CtlGetSliderValues ((ControlType *)slid4P, 0, 0, 0, &gPrefs->volume.music); -	CtlGetSliderValues ((ControlType *)slid5P, 0, 0, 0, &gPrefs->volume.sfx); -	 -	FrmReturnToMain(); -} - -static void VolumeFormInit() { -	SliderControlType *slid1P, *slid2P, *slid3P, *slid4P, *slid5P; -	FormPtr frmP; -	UInt16 value; -	 -	slid1P = (SliderControlType *)GetObjectPtr(VolumeSpeakerSliderControl); -	slid2P = (SliderControlType *)GetObjectPtr(VolumeHeadphoneSliderControl); - -	slid3P = (SliderControlType *)GetObjectPtr(VolumeMasterSliderControl); -	slid4P = (SliderControlType *)GetObjectPtr(VolumeMusicSliderControl); -	slid5P = (SliderControlType *)GetObjectPtr(VolumeSfxSliderControl); - -	value = gPrefs->volume.speaker; -	CtlSetSliderValues ((ControlType *)slid1P, 0, 0, 0, &value); -	value = gPrefs->volume.headphone; -	CtlSetSliderValues ((ControlType *)slid2P, 0, 0, 0, &value); - -	value = gPrefs->volume.master; -	CtlSetSliderValues ((ControlType *)slid3P, 0, 0, 0, &value); -	value = gPrefs->volume.music; -	CtlSetSliderValues ((ControlType *)slid4P, 0, 0, 0, &value); -	value = gPrefs->volume.sfx; -	CtlSetSliderValues ((ControlType *)slid5P, 0, 0, 0, &value); - -	frmP = FrmGetActiveForm(); -	FrmDrawForm(frmP); -} - -static Boolean VolumeFormHandleEvent(EventPtr eventP) { -	Boolean handled = false; - -	switch (eventP->eType) { -		case frmOpenEvent: -			VolumeFormInit(); -			handled = true; -			break; - -		case ctlSelectEvent: -			switch (eventP->data.ctlSelect.controlID) -			{ -				case VolumeOKButton: -					VolumeFormSave(); -					break; - -				case VolumeCancelButton: -					FrmReturnToMain(); -					break; -			} -			handled = true; -			break; - -		default: -			break; -	} -	 -	return handled; -} - -static void SoundFormSave() { -	ControlType *cck1P, *cck2P, *cck3P, *cck4P; -	ListType *list1P; -	FieldType *fld1P, *fld2P, *fld3P; -	UInt8 tempo; -	UInt16 firstTrack; - -	cck1P = (ControlType *)GetObjectPtr(SoundMusicCheckbox); -	cck2P = (ControlType *)GetObjectPtr(SoundMultiMidiCheckbox); -	cck3P = (ControlType *)GetObjectPtr(SoundMP3Checkbox); -	cck4P = (ControlType *)GetObjectPtr(SoundTrackLengthCheckbox); -	list1P = (ListType *)GetObjectPtr(SoundDriverList); -	fld1P = (FieldType *)GetObjectPtr(SoundTempoField); -	fld2P = (FieldType *)GetObjectPtr(SoundLengthSecsField); -	fld3P = (FieldType *)GetObjectPtr(SoundFirstTrackField); - -	tempo = StrAToI(FldGetTextPtr(fld1P)); -	if (tempo < 50 || tempo > 200) { -		FrmCustomAlert(FrmErrorAlert, "Invalid tempo value (50...200)", 0, 0); -		return; -	} - -	firstTrack = StrAToI(FldGetTextPtr(fld3P)); -	if (firstTrack < 1 || firstTrack > 999) { -		FrmCustomAlert(FrmErrorAlert, "Invalid track value (1...999)", 0, 0); -		return; -	} - -	gPrefs->sound.music = CtlGetValue(cck1P); -	gPrefs->sound.multiMidi = CtlGetValue(cck2P); -	gPrefs->sound.MP3 = CtlGetValue(cck3P); -	gPrefs->sound.setDefaultTrackLength = CtlGetValue(cck4P); - -	gPrefs->sound.driver = LstGetSelection(list1P); -	gPrefs->sound.tempo = tempo; -	gPrefs->sound.defaultTrackLength = StrAToI(FldGetTextPtr(fld2P)); -	gPrefs->sound.firstTrack = firstTrack; -	FrmReturnToMain(); -} - -static void SoundFormInit() { -	ControlType *cck1P, *cck2P, *cck3P, *cck4P; -	ListType *list1P; -	FieldType *fld1P, *fld2P, *fld3P; -	FormPtr frmP; -	MemHandle tempoH, lengthH, firstTrackH; -	Char *tempoP, *lengthP, *firstTrackP; - -	cck1P = (ControlType *)GetObjectPtr(SoundMusicCheckbox); -	cck2P = (ControlType *)GetObjectPtr(SoundMultiMidiCheckbox); -	cck3P = (ControlType *)GetObjectPtr(SoundMP3Checkbox); -	cck4P = (ControlType *)GetObjectPtr(SoundTrackLengthCheckbox); -	list1P = (ListType *)GetObjectPtr(SoundDriverList); -	fld1P = (FieldType *)GetObjectPtr(SoundTempoField); -	fld2P = (FieldType *)GetObjectPtr(SoundLengthSecsField); -	fld3P = (FieldType *)GetObjectPtr(SoundFirstTrackField); - -	CtlSetValue(cck1P, gPrefs->sound.music); -	CtlSetValue(cck2P, gPrefs->sound.multiMidi); -	CtlSetValue(cck3P, gPrefs->sound.MP3); -	CtlSetValue(cck4P, gPrefs->sound.setDefaultTrackLength); - -	LstSetSelection(list1P, gPrefs->sound.driver); -	CtlSetLabel((ControlType *)GetObjectPtr(SoundDriverPopTrigger), LstGetSelectionText(list1P, LstGetSelection(list1P))); - -	tempoH = MemHandleNew(FldGetMaxChars(fld1P)); -	tempoP = (Char *)MemHandleLock(tempoH); -	StrIToA(tempoP, gPrefs->sound.tempo); -	MemHandleUnlock(tempoH); -	FldSetTextHandle(fld1P, tempoH); - -	lengthH = MemHandleNew(FldGetMaxChars(fld2P)); -	lengthP = (Char *)MemHandleLock(lengthH); -	StrIToA(lengthP, gPrefs->sound.defaultTrackLength); -	MemHandleUnlock(lengthH); -	FldSetTextHandle(fld2P, lengthH); - -	firstTrackH = MemHandleNew(FldGetMaxChars(fld3P)); -	firstTrackP = (Char *)MemHandleLock(firstTrackH); -	StrIToA(firstTrackP, gPrefs->sound.firstTrack); -	MemHandleUnlock(firstTrackH); -	FldSetTextHandle(fld3P, firstTrackH); - -	frmP = FrmGetActiveForm(); -	FrmDrawForm(frmP); -} - -static Boolean SoundFormHandleEvent(EventPtr eventP) { -	Boolean handled = false; - -	switch (eventP->eType) { -		case frmOpenEvent: -			SoundFormInit(); -			handled = true; -			break; - -		case ctlSelectEvent: -			switch (eventP->data.ctlSelect.controlID) -			{ -				case SoundOKButton: -					SoundFormSave(); -					break; - -				case SoundCancelButton: -					FrmReturnToMain(); -					break; - -				case SoundDriverPopTrigger: -					FrmList(eventP, SoundDriverList); -					break; -			} -			handled = true; -			break; - -		default: -			break; -	} -	 -	return handled; -} -/*********************************************************************** - * - * FUNCTION:    MiscOptionsFormSave - * FUNCTION:    MiscOptionsFormInit - * FUNCTION:    MiscOptionsFormHandleEvent - * - * DESCRIPTION: Misc. Options form functions - * - * REVISION HISTORY: - * - * - ***********************************************************************/ - -static void MiscOptionsFormSave() { - -	FieldType *fld1P; -	ControlType *cck1P, *cck2P, *cck3P, *cck4P, *cck5P, *cck6P, *cck7P, *cck8P;	 -	FormPtr frmP; - -	fld1P = (FieldType *)GetObjectPtr(MiscOptionsDebugLevelField); -	 -	cck1P = (ControlType *)GetObjectPtr(MiscOptionsVibratorCheckbox); -	cck2P = (ControlType *)GetObjectPtr(MiscOptionsNoAutoOffCheckbox); -	cck3P = (ControlType *)GetObjectPtr(MiscOptionsStdPaletteCheckbox); -	cck4P = (ControlType *)GetObjectPtr(MiscOptionsDebugCheckbox); -	cck5P = (ControlType *)GetObjectPtr(MiscOptionsWriteIniCheckbox); -	cck6P = (ControlType *)GetObjectPtr(MiscOptionsAutoResetCheckbox); -	cck7P = (ControlType *)GetObjectPtr(MiscOptionsDemoCheckbox); -	cck8P = (ControlType *)GetObjectPtr(MiscOptionsFullscreenCheckbox); - -	frmP = FrmGetActiveForm(); - -	if (FldGetTextLength(fld1P) == 0 && CtlGetValue(cck4P) == 1) { -		FrmCustomAlert(FrmWarnAlert,"You must specified a debug level.",0,0); -		FrmSetFocus(frmP, FrmGetObjectIndex(frmP, MiscOptionsDebugLevelField)); -		return; -	} - -	gPrefs->vibrator = CtlGetValue(cck1P); -	gPrefs->autoOff = !CtlGetValue(cck2P); -	gPrefs->stdPalette = CtlGetValue(cck3P); -	gPrefs->debug = CtlGetValue(cck4P); -	gPrefs->saveConfig = CtlGetValue(cck5P); -	gPrefs->autoReset = CtlGetValue(cck6P); -	gPrefs->demoMode = CtlGetValue(cck7P); -	gPrefs->fullscreen = CtlGetValue(cck8P); - -	gPrefs->debugLevel = StrAToI(FldGetTextPtr(fld1P)); -	 -	FrmReturnToMain(); -} - -static void MiscOptionsFormInit() { - -	FieldType *fld1P; -	FormPtr frmP; - -	Char *levelP; -	MemHandle levelH; - -	CtlSetValue((ControlType *)GetObjectPtr(MiscOptionsVibratorCheckbox), gPrefs->vibrator); -	CtlSetValue((ControlType *)GetObjectPtr(MiscOptionsNoAutoOffCheckbox), !gPrefs->autoOff); -	CtlSetValue((ControlType *)GetObjectPtr(MiscOptionsStdPaletteCheckbox), gPrefs->stdPalette); -	CtlSetValue((ControlType *)GetObjectPtr(MiscOptionsAutoResetCheckbox), gPrefs->autoReset); -	CtlSetValue((ControlType *)GetObjectPtr(MiscOptionsDebugCheckbox), gPrefs->debug); -	CtlSetValue((ControlType *)GetObjectPtr(MiscOptionsWriteIniCheckbox), gPrefs->saveConfig); -	CtlSetValue((ControlType *)GetObjectPtr(MiscOptionsDemoCheckbox), gPrefs->demoMode); -	CtlSetValue((ControlType *)GetObjectPtr(MiscOptionsFullscreenCheckbox), gPrefs->fullscreen); - -	fld1P = (FieldType *)GetObjectPtr(MiscOptionsDebugLevelField); - -	levelH = MemHandleNew(FldGetMaxChars(fld1P)); -	levelP = (Char *)MemHandleLock(levelH); -	StrIToA(levelP, gPrefs->debugLevel); -	MemHandleUnlock(levelH); - -	FldSetTextHandle(fld1P, levelH); -	frmP = FrmGetActiveForm(); -	FrmDrawForm(frmP); -} - -static Boolean MiscOptionsFormHandleEvent(EventPtr eventP) { -	Boolean handled = false; - -	switch (eventP->eType) { -		case frmOpenEvent: -			MiscOptionsFormInit(); -			handled = true; -			break; - -		case ctlSelectEvent: -			switch (eventP->data.ctlSelect.controlID) -			{ -				case MiscOptionsOKButton: -					MiscOptionsFormSave(); -					break; - -				case MiscOptionsCancelButton: -					FrmReturnToMain(); -					break; -			} -			handled = true; -			break; - -		default: -			break; -	} -	 -	return handled; -} -/////////////////////////////////////////////////////////////////////// -static void CardSlotCreateDirs() { -	if (gPrefs->card.volRefNum != sysInvalidRefNum) { -		VFSDirCreate(gPrefs->card.volRefNum, "/PALM"); -		VFSDirCreate(gPrefs->card.volRefNum, "/PALM/Programs"); -		VFSDirCreate(gPrefs->card.volRefNum, "/PALM/Programs/ScummVM"); -		VFSDirCreate(gPrefs->card.volRefNum, "/PALM/Programs/ScummVM/Games"); -		VFSDirCreate(gPrefs->card.volRefNum, "/PALM/Programs/ScummVM/Saved"); -	} -} - -static void CardSlotFromShowHideOptions() { -	ControlType *cck1P; -	FormPtr frmP = FrmGetActiveForm(); - -	cck1P = (ControlType *)GetObjectPtr(CardSlotMoveCheckbox); - -	if (CtlGetValue(cck1P)) { -		FrmShowObject(frmP, FrmGetObjectIndex (frmP, CardSlotDeleteCheckbox)); -		FrmShowObject(frmP, FrmGetObjectIndex (frmP, CardSlotConfirmCheckbox)); -	} else { -		FrmHideObject(frmP, FrmGetObjectIndex (frmP, CardSlotDeleteCheckbox)); -		FrmHideObject(frmP, FrmGetObjectIndex (frmP, CardSlotConfirmCheckbox)); -	} -} - -static UInt16 CardSlotFormInit(Boolean display, Boolean bDraw) { -	Err err; -	UInt16 volRefNum; -	UInt32 volIterator = vfsIteratorStart; -	UInt8 counter = 0; -	UInt32 other = 1; - -	MemHandle cards = NULL; -	CardInfoType *cardsInfo; - -	while (volIterator != vfsIteratorStop) { -		err = VFSVolumeEnumerate(&volRefNum, &volIterator); - -		if (!err) { -			Char labelP[expCardInfoStringMaxLen+1]; -			err = VFSVolumeGetLabel(volRefNum, labelP, expCardInfoStringMaxLen+1); - -			if (err || StrLen(labelP) == 0) {	// if no label try to retreive card type -				VolumeInfoType volInfo; -				err = VFSVolumeInfo(volRefNum, &volInfo); -				 -				if (!err) { -					ExpCardInfoType info; -					err = ExpCardInfo(volInfo.slotRefNum, &info); -					StrCopy(labelP, info.deviceClassStr); -				} -				 -				if (err)	// if err default name -					StrPrintF(labelP,"Other Card %ld", other++); -			} - -			if (!cards) -				cards = MemHandleNew(sizeof(CardInfoType)); -			else -				MemHandleResize(cards, MemHandleSize(cards) + sizeof(CardInfoType)); -				 -			cardsInfo = (CardInfoType *)MemHandleLock(cards); -			cardsInfo[counter].volRefNum = volRefNum; -			StrCopy(cardsInfo[counter].nameP, labelP); -			MemHandleUnlock(cards); -			counter++; -		} -	} - -	if (display) { -		FormPtr frmP; -		ListPtr listP; -		ControlType *cck1P, *cck2P, *cck3P; -		UInt16 index; -		Int16 selected = -1; -		 -		CardInfoType *cardsInfo; -		MemHandle items = NULL; - -		listP = (ListType *)GetObjectPtr(CardSlotSlotList); -		cck1P = (ControlType *)GetObjectPtr(CardSlotMoveCheckbox); -		cck2P = (ControlType *)GetObjectPtr(CardSlotDeleteCheckbox); -		cck3P = (ControlType *)GetObjectPtr(CardSlotConfirmCheckbox); - -		if (counter > 0) { -			cardsInfo = (CardInfoType *)MemHandleLock(cards); - -			for (index = 0; index < counter; index++) { -				if (!items) -					items = MemHandleNew(sizeof(Char *)); -				else -					MemHandleResize(items, MemHandleSize(items) + sizeof(Char *)); - -				itemsText = (Char **)MemHandleLock(items); -				itemsText[index] = cardsInfo[index].nameP; -				MemHandleUnlock(items); -				 -				if (cardsInfo[index].volRefNum == gPrefs->card.volRefNum) -					selected = index; -			} - -			itemsText = (Char **)MemHandleLock(items); -			LstSetListChoices (listP, itemsText, counter); -			LstSetSelection(listP, selected); -			// save globals and set list -			itemsText = (Char **)MemHandleLock(items); -			itemsList = (void *)cardsInfo; -			itemsType = ITEM_TYPE_CARD; - -		} else { -			LstSetListChoices(listP, NULL, 0); -			// save globals and set list -			itemsText = NULL; -			itemsList = NULL; -			itemsType = ITEM_TYPE_CARD; -		} - -		// bDraw = true -> draw whole from -		// bDraw = false -> redraw list -		if (bDraw) { -			CtlSetValue(cck1P, gPrefs->card.moveDB); -			CtlSetValue(cck2P, gPrefs->card.deleteDB); -			CtlSetValue(cck3P, gPrefs->card.confirmMoveDB); -			CardSlotFromShowHideOptions(); -			frmP = FrmGetActiveForm(); -			FrmDrawForm(frmP); - -		} else { -			WinScreenLock(winLockCopy); -			LstDrawList(listP); -			WinScreenUnlock(); -		} -	} else {	// if !display, we just want to retreive an avaliable card -		if (counter > 0) { -			UInt16 volRefNum; -			cardsInfo = (CardInfoType *)MemHandleLock(cards); -			volRefNum =  cardsInfo[0].volRefNum;	// return the first volref -			MemHandleUnlock(cards); -			MemHandleFree(cards); -			return volRefNum; -		} -	} - -	return sysInvalidRefNum; // default -} - -static void CardSlotFormExit(Boolean bSave) { -	MemHandle cards; -	MemHandle items; -	CardInfoType *cardsInfo; -	UInt16 updateCode = frmRedrawUpdateMS; - -	if (itemsText && itemsList) { -		cardsInfo = (CardInfoType *)itemsList; -		cards = MemPtrRecoverHandle(cardsInfo); -		items = MemPtrRecoverHandle(itemsText); -	 -		itemsText = NULL; -		itemsList = NULL; -	} else { -		cards = NULL; -		items = NULL; -	} -	itemsType = ITEM_TYPE_UNKNOWN; - -	if (bSave) { -		ListType *listP; -		ControlType *cck1P, *cck2P, *cck3P; -		Int16 selected; - -		listP = (ListType *)GetObjectPtr(CardSlotSlotList); -		cck1P = (ControlType *)GetObjectPtr(CardSlotMoveCheckbox); -		cck2P = (ControlType *)GetObjectPtr(CardSlotDeleteCheckbox); -		cck3P = (ControlType *)GetObjectPtr(CardSlotConfirmCheckbox); -		selected = LstGetSelection(listP); - -		if (selected == -1) { -			gPrefs->card.volRefNum = sysInvalidRefNum; -		} else if (gPrefs->card.volRefNum != cardsInfo[selected].volRefNum) { -			updateCode = frmRedrawUpdateMSImport; -			gPrefs->card.volRefNum = cardsInfo[selected].volRefNum; -		} - -		gPrefs->card.moveDB = CtlGetValue(cck1P); -		gPrefs->card.deleteDB = CtlGetValue(cck2P); -		gPrefs->card.confirmMoveDB = CtlGetValue(cck3P); -		CardSlotCreateDirs(); -	} - -	FrmReturnToMain(updateCode); - -	if (items && cards) { -		MemHandleUnlock(items); -		MemHandleUnlock(cards); -		MemHandleFree(items); -		MemHandleFree(cards); -	} -} - -static void CardSlotFormUpdate() { -	if (itemsType == ITEM_TYPE_CARD) { -		if (itemsText && itemsList) { -			MemHandle cards; -			MemHandle items; -			ListType *listP; - -			listP = (ListType *)GetObjectPtr(CardSlotSlotList); -			cards = MemPtrRecoverHandle(itemsList); -			items = MemPtrRecoverHandle(itemsText); - -			itemsText = NULL; -			itemsList = NULL; -			itemsType = ITEM_TYPE_UNKNOWN; - -			MemHandleUnlock(items); -			MemHandleUnlock(cards); -			MemHandleFree(items); -			MemHandleFree(cards); -		} -		CardSlotFormInit(true, false); -	} -} - -static Boolean CardSlotFormHandleEvent(EventPtr eventP) { -	Boolean handled = false; - -	switch (eventP->eType) { -	 -		case frmOpenEvent: -			CardSlotFormInit(true, true); -			handled = true; -			break; - -		case frmCloseEvent: -			CardSlotFormExit(false); -			handled = true; -			break; - -		case ctlSelectEvent: -			switch (eventP->data.ctlSelect.controlID) -			{ -				case CardSlotOkButton: -					CardSlotFormExit(true); -					break; - -				case CardSlotCancelButton: -					CardSlotFormExit(false); -					break; -				 -				case CardSlotMoveCheckbox: -					CardSlotFromShowHideOptions(); -					break; -			} -			handled = true; -			break; - -		default: -			break; -	} -	 -	return handled; -} - -static UInt16 parseCards() { -	UInt16 volRefNum = CardSlotFormInit(false, false); -	CardSlotFormExit(false); -	 -	return volRefNum; -} - -//############################################################################# -//############################################################################# -// Skin manager -//############################################################################# - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -static void SknApplySkin() -{ -	DmOpenRef skinDBP; -	RectangleType r; -	FormPtr frmP = FrmGetActiveForm(); - -	WinScreenLock(winLockErase); -	//SknSetPalette(); -	FrmDrawForm(frmP); - -	if (gPrefs->card.volRefNum != sysInvalidRefNum) -		FrmShowObject(frmP, FrmGetObjectIndex (frmP, MainMSBitMap)); -	else -		FrmShowObject(frmP, FrmGetObjectIndex (frmP, MainMSNoneBitMap)); - -	WinSetForeColor(255); -	WinSetDrawMode(winPaint); -	WinDrawLine (0, 14, 159, 14); -	WinDrawLine (0, 13, 159, 13); - -	skinDBP = SknOpenSkin(); -	SknGetObjectBounds(skinDBP, skinBackgroundImageTop, &r); -	SknCopyBits(skinDBP, skinBackgroundImageTop, 0, r.topLeft.x, r.topLeft.y, 0); -	SknGetObjectBounds(skinDBP, skinBackgroundImageBottom, &r); -	SknCopyBits(skinDBP, skinBackgroundImageBottom, 0, r.topLeft.x, r.topLeft.y, 0); - -	for (UInt16 resID = 1100; resID <= 7000; resID += 100) { -		SknSetState(skinDBP, resID, sknStateNormal); -		SknShowObject(skinDBP, resID); -	} - -	SknCloseSkin(skinDBP); -	WinScreenUnlock(); -	GamUpdateList(); -} - -//############################################################################# -//############################################################################# - -/*********************************************************************** - * - * FUNCTION:    MainFormInit - * - * DESCRIPTION: This routine initializes the MainForm form. - * - * PARAMETERS:  frm - pointer to the MainForm form. - * - * RETURNED:    nothing - * - * REVISION HISTORY: - * - * - ***********************************************************************/ -static void MainFormInit() -{ -	SknApplySkin(); -} - -/*********************************************************************** - * - * FUNCTION:    MainFormDoCommand - * - * DESCRIPTION: This routine performs the menu command specified. - * - * PARAMETERS:  command  - menu item id - * - * RETURNED:    nothing - * - * REVISION HISTORY: - * - * - ***********************************************************************/ - - -static Int16 SkinsFormCompare(SkinInfoType *a, SkinInfoType *b, SortRecordInfoPtr, SortRecordInfoPtr, MemHandle) { -	return StrCompare(a->nameP, b->nameP); -} - -static void SkinsFormInit(Boolean bDraw) { -	MemHandle skins = NULL; -	SkinInfoType *skinsInfo; -	UInt16 numSkins = 0; - -	FormPtr frmP; -	ListType *listP; -	MemHandle items = NULL; -	ControlType *cck1P; -	DmSearchStateType stateInfo; -	UInt16 cardNo; -	LocalID dbID; - -	Err errInfo; -	Char nameP[32]; - -	itemsText = NULL; -	 -	// parse and save skins -	Err err = DmGetNextDatabaseByTypeCreator(true, &stateInfo, 'skin', appFileCreator, false, &cardNo, &dbID); -	while (!err && dbID) { -		errInfo = DmDatabaseInfo (cardNo, dbID, nameP, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); -		if (!errInfo) -		{ -			if (!skins) -				skins = MemHandleNew(sizeof(SkinInfoType)); -			else -				MemHandleResize(skins, MemHandleSize(skins) + sizeof(SkinInfoType)); -			 -			skinsInfo = (SkinInfoType *)MemHandleLock(skins); -			StrCopy(skinsInfo[numSkins].nameP, nameP); -			skinsInfo[numSkins].cardNo = cardNo; -			skinsInfo[numSkins].dbID = dbID; -			MemHandleUnlock(skins); -			numSkins++; -		}		 -		err = DmGetNextDatabaseByTypeCreator(false, &stateInfo, 'skin', appFileCreator, false, &cardNo, &dbID); -	} - -	Int16 selected = -1; - -	cck1P = (ControlType *)GetObjectPtr(SkinsSoundClickCheckbox); -	CtlSetValue(cck1P, gPrefs->soundClick); - -	listP = (ListType *)GetObjectPtr(SkinsSkinList); -	skinsInfo = (SkinInfoType *)MemHandleLock(skins); -	SysQSort(skinsInfo, numSkins, sizeof(SkinInfoType), (CmpFuncPtr)SkinsFormCompare, 0); - -	// create itemsText (TODO: create a custom draw function) -	for (UInt16 index=0; index < numSkins; index++) -	{ -		if (!items) -			items = MemHandleNew(sizeof(Char *)); -		else -			MemHandleResize(items, MemHandleSize(items) + sizeof(Char *)); - -		itemsText = (Char **)MemHandleLock(items); -		itemsText[index] = skinsInfo[index].nameP; -		MemHandleUnlock(items); -		 -		if (	gPrefs->skin.cardNo == skinsInfo[index].cardNo && -				gPrefs->skin.dbID == skinsInfo[index].dbID && -				StrCompare(gPrefs->skin.nameP, skinsInfo[index].nameP) == 0) -			selected = index; -	} -	// save globals and set list -	itemsText = (Char **)MemHandleLock(items); -	itemsList = (void *)skinsInfo; -	itemsType = ITEM_TYPE_SKIN; - -	LstSetListChoices (listP, itemsText, numSkins); -	LstSetSelection(listP, selected); - -	// bDraw = true -> draw whole from -	// bDraw = false -> redraw list -	if (bDraw) { -		frmP = FrmGetActiveForm(); -		FrmDrawForm(frmP); -	} else { -		WinScreenLock(winLockCopy); -		LstDrawList(listP); -		WinScreenUnlock(); -//		LstSetSelection(listP, 0); -	} -} - -static void SkinsFormExit(Boolean bSave) { -	MemHandle skins; -	MemHandle items; -	SkinInfoType *skinsInfo; - -	ListType *listP; -	Int16 selected; - -	listP = (ListType *)GetObjectPtr(SkinsSkinList); -	selected = LstGetSelection(listP); -	 -	if (bSave && selected == -1)	{	// may never occured... -		FrmCustomAlert(FrmWarnAlert, "You didn't select a skin.", 0, 0); -		return; -	} - -	skinsInfo = (SkinInfoType *)itemsList; -	skins = MemPtrRecoverHandle(skinsInfo); -	items = MemPtrRecoverHandle(itemsText); -	 -	itemsText = NULL; -	itemsList = NULL; -	itemsType = ITEM_TYPE_UNKNOWN; - -	if (bSave) { -		ControlType *cck1P; - -		StrCopy(gPrefs->skin.nameP, skinsInfo[selected].nameP); -		gPrefs->skin.cardNo = skinsInfo[selected].cardNo; -		gPrefs->skin.dbID =  skinsInfo[selected].dbID; - -		cck1P = (ControlType *)GetObjectPtr(SkinsSoundClickCheckbox); -		gPrefs->soundClick = CtlGetValue(cck1P); -	} - -	FrmReturnToMain(); - -	MemHandleUnlock(items); -	MemHandleUnlock(skins); -	MemHandleFree(items); -	MemHandleFree(skins); - -	if (bSave) -		SknApplySkin(); -} - -static void SkinsFormBeam() { -	SkinInfoType *skinsInfo; - -	ListType *listP; -	Int16 selected; -	Err err; - -	listP = (ListType *)GetObjectPtr(SkinsSkinList); -	selected = LstGetSelection(listP); - -	if (selected == -1)	{	// may never occured... -		FrmCustomAlert(FrmWarnAlert, "You didn't select a skin.", 0, 0); -		return; -	} - -	skinsInfo = (SkinInfoType *)itemsList; -	err = SendDatabase(0, skinsInfo[selected].dbID, "skin.pdb", "\nScummVM Skin"); - -//	if (err) -//		FrmCustomAlert(FrmErrorAlert, "Unable to beam this skin.",0,0); -} - -static void SkinsFormDelete() { -	MemHandle skins; -	MemHandle items; -	SkinInfoType *skinsInfo; - -	ListType *listP; -	Int16 selected; - -	listP = (ListType *)GetObjectPtr(SkinsSkinList); -	selected = LstGetSelection(listP); - -	if (selected == -1)	{	// may never occured... -		FrmCustomAlert(FrmInfoAlert, "You didn't select a skin.", 0, 0); -		return; -	} - -	skinsInfo = (SkinInfoType *)itemsList; -	skins = MemPtrRecoverHandle(skinsInfo); -	items = MemPtrRecoverHandle(itemsText); - -	if (	gPrefs->skin.cardNo == skinsInfo[selected].cardNo && -			gPrefs->skin.dbID == skinsInfo[selected].dbID && -			StrCompare(gPrefs->skin.nameP, skinsInfo[selected].nameP) == 0) { -			FrmCustomAlert(FrmInfoAlert, "You cannot delete the active skin.",0,0); -			return; - -	} else { -		Err err = DmDeleteDatabase(0, skinsInfo[selected].dbID); -		if (!err) { - -			itemsText = NULL; -			itemsList = NULL; -			itemsType = ITEM_TYPE_UNKNOWN; - -			MemHandleUnlock(items); -			MemHandleUnlock(skins); -			MemHandleFree(items); -			MemHandleFree(skins); - -			SkinsFormInit(false); -		} else { -			FrmCustomAlert(FrmErrorAlert, "Skin deletion failed.",0,0); -		} -	} - -} -static Boolean SkinsFormHandleEvent(EventPtr eventP) { -	Boolean handled = false; - -	switch (eventP->eType) { -	 -		case frmOpenEvent: -			SkinsFormInit(true); -			handled = true; -			break; - -		case frmCloseEvent: -			SkinsFormExit(false); -			handled = true; -			break; - -		case ctlSelectEvent: -			switch (eventP->data.ctlSelect.controlID) -			{ -				case SkinsOKButton: -					SkinsFormExit(true); -					break; - -				case SkinsCancelButton: -					SkinsFormExit(false); -					break; -					 -				case SkinsBeamButton: -					SkinsFormBeam(); -					break; -				 -				case SkinsDeleteButton: -					SkinsFormDelete(); -					break; -			} -			handled = true; -			break; - -		default: -			break; -	} -	 -	return handled; -} - - -static void MainFormAbout() { -	FormPtr frmP; -	FormLabelType *versionP; - -	frmP = FrmInitForm(AboutForm); -	versionP = FrmNewLabel(&frmP, 1111, gScummVMVersion, 4, 142, stdFont); -	FrmDoDialog (frmP);					// Display the About Box. -	FrmDeleteForm (frmP); -} - -static Boolean MainFormDoCommand(UInt16 command) -{ -	Boolean handled = false; - -	switch (command) { -		case MainGamesCard: -			FrmPopupForm(CardSlotForm); -			handled = true; -			break; - -		case MainGamesMemory: -			FrmPopupForm(SystemInfoForm); -			handled = true; -			break; - -		case MainGamesNewEdit: -			__editMode__ = edtModeParams; -			FrmPopupForm(EditGameForm); -			handled = true; -			break; - -		case MainGamesBeamScummVM: -			BeamMe(); -			//if (BeamMe()) -				//FrmCustomAlert(FrmErrorAlert,"Unable to beam ScummVM for PalmOS.",0,0); -			handled = true; -			break; - -		case MainOptionsAbout: - 			MainFormAbout(); - 			handled = true; -			break; -		 -		case MainOptionsVolumeControl: -			FrmPopupForm(VolumeForm); -			handled = true; -			break; - -		case MainOptionsMusic: -			FrmPopupForm(SoundForm); -			handled = true; -			break; -		 -		case MainOptionsSkins: -			FrmPopupForm(SkinsForm); -			handled = true; -			break; - -		case MainOptionsMisc: -			FrmPopupForm(MiscOptionsForm); -			handled = true; -			break; -		} - -	MenuEraseStatus(0); -	return handled; -} - - -static void SavePrefs() { -	if (gPrefs) { -		PrefSetAppPreferences(appFileCreator, appPrefID, appPrefVersionNum, gPrefs, sizeof (GlobalsPreferenceType), true); -		MemPtrFree(gPrefs); -		gPrefs = NULL; -	} -} - -static Boolean CheckVibratorExists() { -	UInt32 romVersion; -	Err err; -	Boolean exists = false; - -	err = FtrGet(sysFtrCreator, sysFtrNumROMVersion, &romVersion); -	if (!err) { -		if (romVersion >= sysMakeROMVersion(4,0,0,sysROMStageRelease,0)) { -			Boolean active = false; -			err = HwrVibrateAttributes(0, kHwrVibrateActive, &active); -			exists = (!err) ? true : exists; -		} -	} - -	return exists; -} - -static void AddArg(Char **argvP, const Char *argP, const Char *parmP, UInt8 *countArgP) -{ -	if (argP) -	{ -		UInt16 len2 = 0; -		UInt16 len1 = StrLen(argP); - -		if (len1 > 0) -		{	 -			if (parmP) -				len2 = StrLen(parmP); - -			(*countArgP)++; -			*argvP = (Char *)MemPtrNew(len1 + len2 + 1); -			StrCopy(*argvP, argP); -			 -			if (parmP) -				StrCat(*argvP, parmP); -		} -	} -} - -// need to move this on a .h file -#define sonySysFileCSystem      'SsYs'  /* Sony overall System */ -#define sonySysFtrCreatorSystem     sonySysFileCSystem - -#define sonySysFtrNumSystemBase         10000 -#define sonySysFtrNumSystemAOutSndStateOnHandlerP   (sonySysFtrNumSystemBase + 4) -#define sonySysFtrNumSystemAOutSndStateOffHandlerP  (sonySysFtrNumSystemBase + 5) - -typedef void (*sndStateOnType)(UInt8 /* kind */, UInt8 /* L volume 0-31 */, UInt8 /* R volume 0-31 */); -typedef void (*sndStateOffType)(UInt8 /* kind */); - -/* kind */ -#define aOutSndKindSp       (0) /* Speaker volume */ -#define aOutSndKindHp       (2) /* HeadPhone volume */ -//////////////////////////////////////////////////////////// -#define MAX_ARG	25 - -static Boolean checkPath(const Char *pathP) { -	FileRef *tmpRef; - -	if (!(tmpRef = fopen(pathP, "r"))) { -		return false; -	} else { -		fclose(tmpRef); -		return true; -	} -} - -static void StartScummVM() { -	Char *argvP[MAX_ARG]; -	UInt8 argc	= 0; -	UInt8 count; - -	Boolean autoOff; -	UInt16 autoOffDelay; -	Boolean debug; -	UInt16 musicDriver = sysInvalidRefNum; // for launch call - -	bStartScumm = false;	// -	UInt16 index = GamGetSelected(); - -	for(count = 0; count < MAX_ARG; count++) -		argvP[count] = NULL; - -	if (index != dmMaxRecordIndex) { -		Char pathP[256]; -		Char num[4]; -		MemHandle recordH; -		GameInfoType *gameInfoP; - -		recordH = DmQueryRecord(_dbP,index); -		gameInfoP = (GameInfoType *)MemHandleLock(recordH); - -		// build path -		StrCopy(pathP,"/Palm/Programs/ScummVM/Games/"); -		if (gameInfoP->pathP[0] == '/') -			StrCopy(pathP,gameInfoP->pathP); -		else -			StrCat(pathP,gameInfoP->pathP); -		 -		// path exists ? -		if (!checkPath(pathP)) { -			MemHandleUnlock(recordH); -			FrmCustomAlert(FrmErrorAlert,"The specified path was not found !",0,0); -			return; -		} - -		AddArg(&argvP[argc], "ScummVM", NULL, &argc); - -		// save scummvm.ini ? -		if (gPrefs->saveConfig) -			AddArg(&argvP[argc], "-w", NULL, &argc); - -		// path -		AddArg(&argvP[argc], "-p", pathP, &argc); - -		// language -		if (gameInfoP->language > 0) { -			const Char *lang = "en\0de\0fr\0it\0p\0es\0jp\0z\0kr\0hb\0"; -			AddArg(&argvP[argc], "-q", (lang + (gameInfoP->language - 1) * 3), &argc); -		} - -		// fullscreen ? -		if (gPrefs->fullscreen) { -			AddArg(&argvP[argc], "-f", NULL, &argc); -		} - -		// gfx mode -		switch (gameInfoP->gfxMode) -		{ -			case 1: -				AddArg(&argvP[argc], "-g", "flipping", &argc); -				break; -			case 2: -				AddArg(&argvP[argc], "-g", "dbuffer", &argc); -				break; -			case 3: -				AddArg(&argvP[argc], "-g", "wide", &argc); -				break; -			default: -				AddArg(&argvP[argc], "-g", "normal", &argc); -				break; -		} - -		// load state -		if (gameInfoP->autoLoad) { -			StrIToA(num, gameInfoP->loadSlot); -			AddArg(&argvP[argc], "-x", num, &argc); -		} -		// start in room -		if (gameInfoP->autoRoom) { -			StrIToA(num, gameInfoP->roomNum); -			AddArg(&argvP[argc], "-b", num, &argc); -		} -		// amiga version -		if (gameInfoP->amiga) { -			AddArg(&argvP[argc], "-a", NULL, &argc); -		} -		// subtitles -		if (!gameInfoP->subtitles) { -			AddArg(&argvP[argc], "-n", NULL, &argc); -		} -		// talk speed -		if (gameInfoP->talkSpeed) { -			StrIToA(num, gameInfoP->talkValue); -			AddArg(&argvP[argc], "-y", num, &argc); -		} -		// debug level -		debug = gPrefs->debug; -		if (gPrefs->debug) { -			StrIToA(num, gPrefs->debugLevel); -			AddArg(&argvP[argc], "-d", num, &argc); -		} -		// demo mode ? -		if (gPrefs->demoMode) -			AddArg(&argvP[argc], "--demo-mode", NULL, &argc); - -		// multi midi ? -		if (gPrefs->sound.multiMidi) -			AddArg(&argvP[argc], "--multi-midi", NULL, &argc); - -		// music driver -		musicDriver = gPrefs->sound.music; -		if (musicDriver) { -			switch (gPrefs->sound.driver) { -				case 0:	// NULL -					AddArg(&argvP[argc], "-e", "null", &argc); -					break; -				case 1:	// yamaha Pa1 -					AddArg(&argvP[argc], "-e", "ypa1", &argc); -					break; -			}		 -		} -		else	// NULL as default -			AddArg(&argvP[argc], "-e", "null", &argc); - -		// music tempo -		StrIToA(num, gPrefs->sound.tempo); -		AddArg(&argvP[argc], "-t", num, &argc); - -		// volume control -		StrIToA(num, gPrefs->volume.master); -		AddArg(&argvP[argc], "-o", num, &argc); -		StrIToA(num, gPrefs->volume.sfx); -		AddArg(&argvP[argc], "-s", num, &argc); -		StrIToA(num, gPrefs->volume.music); -		AddArg(&argvP[argc], "-m", num, &argc); - -		// game name -		AddArg(&argvP[argc], gameInfoP->gameP, NULL, &argc); - -		MemHandleUnlock(recordH); -	} - -	GamCloseDatabase(false); -	FrmCloseAllForms(); - -	autoOff = gPrefs->autoOff; -	if (!autoOff) { -		autoOffDelay = SysSetAutoOffTime(0); -		EvtResetAutoOffTimer(); -	} - -	// gVars values -	//gVars->HRrefNum defined in checkHRmode on Clié OS4 -	//gVars->logFile defined bellow, must be defined only if debug option is checked -	gVars->screenLocked = false; -	gVars->volRefNum = gPrefs->card.volRefNum; -	gVars->vibrator = gPrefs->vibrator; -	gVars->stdPalette = gPrefs->stdPalette; -	gVars->autoReset = gPrefs->autoReset; -	gVars->music.MP3 = gPrefs->sound.MP3; -	gVars->music.setDefaultTrackLength = gPrefs->sound.setDefaultTrackLength; -	gVars->music.defaultTrackLength = gPrefs->sound.defaultTrackLength; -	gVars->music.firstTrack = gPrefs->sound.firstTrack; - -	if (gVars->vibrator) -	{ -		if (CheckVibratorExists()) { -			UInt16 cycle	= (SysTicksPerSecond())/2; -			UInt32 pattern	= 0xFF000000; -			UInt16 delay	= 1; -			UInt16 repeat	= 1; - -			HwrVibrateAttributes(1, kHwrVibrateRate, &cycle); -			HwrVibrateAttributes(1, kHwrVibratePattern, &pattern); -			HwrVibrateAttributes(1, kHwrVibrateDelay, &delay); -			HwrVibrateAttributes(1, kHwrVibrateRepeatCount, &repeat); - -		} else { -			gVars->vibrator = false; -		} -	} - -	if (debug) { -		VFSFileDelete(gVars->volRefNum,"PALM/Programs/ScummVM/scumm.log"); -		VFSFileCreate(gVars->volRefNum,"PALM/Programs/ScummVM/scumm.log"); -		VFSFileOpen(gVars->volRefNum,"PALM/Programs/ScummVM/scumm.log",vfsModeWrite, &gVars->logFile); -	} - -	void *sndStateOnFuncP = NULL, -		 *sndStateOffFuncP = NULL; - -	if (musicDriver == 1 || musicDriver == sysInvalidRefNum) { - -		Pa1Lib_Open(); - -		FtrGet(sonySysFtrCreatorSystem, sonySysFtrNumSystemAOutSndStateOnHandlerP, (UInt32*) &sndStateOnFuncP); -		FtrGet(sonySysFtrCreatorSystem, sonySysFtrNumSystemAOutSndStateOffHandlerP, (UInt32*) &sndStateOffFuncP); - -		Pa1Lib_devHpVolume(gPrefs->volume.headphone, gPrefs->volume.headphone); -		Pa1Lib_devSpVolume(gPrefs->volume.speaker); - -		if (sndStateOnFuncP && sndStateOffFuncP) { -			((sndStateOnType)(sndStateOnFuncP))(aOutSndKindSp, gPrefs->volume.headphone, gPrefs->volume.headphone); -			((sndStateOnType)(sndStateOnFuncP))(aOutSndKindHp, gPrefs->volume.speaker, gPrefs->volume.speaker); - -		} -	} - -	SavePrefs();	// free globals pref memory -	GBOpen(); -	GBInitAll(); -	main(argc, argvP); -	GBReleaseAll(); -	GBClose(); - -	if (musicDriver == 1 || musicDriver == sysInvalidRefNum) { -		Pa1Lib_Close(); - -		if (sndStateOnFuncP && sndStateOffFuncP) { -			((sndStateOffType)(sndStateOffFuncP))(aOutSndKindSp); -			((sndStateOffType)(sndStateOffFuncP))(aOutSndKindHp); -		} -	} - -	if (debug) -		VFSFileClose(gVars->logFile); - -	for(count = 0; count < MAX_ARG; count++) -		if (argvP[count]) -			MemPtrFree(argvP[count]); -	 -	if (gVars->vibrator) { -		Boolean active = false; -		HwrVibrateAttributes(1, kHwrVibrateActive, &active); -	} - -	if (!autoOff) { -		SysSetAutoOffTime(autoOffDelay);SystemPreferencesChoice -		EvtResetAutoOffTimer(); -	} -} - -void PalmFatalError(const Char *err) -{ -	WinPalette(winPaletteSetToDefault,0,0,0); - -	if (gVars->screenLocked) -		WinScreenUnlock(); - -//	MemExtCleanup(); -	WinEraseWindow(); -	FrmCustomAlert(FrmFatalErrorAlert, err, 0,0); -	SysReset(); -} - -/*********************************************************************** - * - * FUNCTION:    MainFormHandleEvent - * - * DESCRIPTION: This routine is the event handler for the  - *              "MainForm" of this application. - * - * PARAMETERS:  eventP  - a pointer to an EventType structure - * - * RETURNED:    true if the event has handle and should not be passed - *              to a higher level handler. - * - * REVISION HISTORY: - * - * - ***********************************************************************/ - -static Boolean penDownRepeat() { -	Coord x,y; -	Boolean penDown, handled = false; -	EvtGetPen(&x, &y, &penDown); - -	if (penDown && sknLastOn) { -		RectangleType r; -		DmOpenRef skinDBP; -	 -		skinDBP = SknOpenSkin(); -		SknGetObjectBounds(skinDBP, sknLastOn, &r); - -		if (RctPtInRectangle(x*2, y*2, &r)) { -			if (SknGetState(skinDBP, sknLastOn) != sknStateSelected) { -				SknSetState(skinDBP, sknLastOn, sknStateSelected); -				SknShowObject(skinDBP, sknLastOn); -			} -			 -			switch (sknLastOn) { -				case skinSliderUpArrow: -				case skinSliderDownArrow: -					handled = ArwProcessAction(sknLastOn); -					break; -			} -			 -		} else { -			if (SknGetState(skinDBP, sknLastOn) != sknStateNormal) { -				SknSetState(skinDBP, sknLastOn, sknStateNormal); -				SknShowObject(skinDBP, sknLastOn); -			} -		} - -		SknCloseSkin(skinDBP); -	} -	 -	return handled; -} - - -static Boolean MainFormHandleEvent(EventPtr eventP) -{ -	Boolean handled = false; -	FormPtr frmP; -	Coord x,y; -	DmOpenRef skinDBP; -	 -	switch (eventP->eType) { -		case frmUpdateEvent: -		frmP = FrmGetFormPtr(MainForm); -			if (gPrefs->card.volRefNum != sysInvalidRefNum) -				FrmShowObject(frmP, FrmGetObjectIndex (frmP, MainMSBitMap)); -			else -				FrmShowObject(frmP, FrmGetObjectIndex (frmP, MainMSNoneBitMap)); -			if (eventP->data.frmUpdate.updateCode == frmRedrawUpdateMSImport) -				GamImportDatabase(true); -			handled = true; -			break; - -		case menuEvent: -			handled = MainFormDoCommand(eventP->data.menu.itemID); -			break; - -		case frmOpenEvent: -			MainFormInit(); -			handled = true; -			break; - -		case ctlSelectEvent: -			switch (eventP->data.ctlSelect.controlID) -			{ -				case MainCardsButton: -					//gPrefs->card.volRefNum = parseCards(true); -					FrmPopupForm(CardSlotForm); -					break; -			 -				case MainAboutButton: -					MainFormAbout(); -					break; -				 -//				case MainListTypeSelTrigger: -//					FrmList(eventP, MainListTypeList); -//					break; -			} -			handled = true; -			break; - -		case penUpEvent: -			x = eventP->screenX; -			y = eventP->screenY; - -			_lstIndex = dmMaxRecordIndex; -			 -			if (sknLastOn != skinButtonNone) { -				RectangleType r; -				skinDBP = SknOpenSkin(); -				SknGetObjectBounds(skinDBP, sknLastOn, &r); -				SknSetState(skinDBP, sknLastOn, sknStateNormal); -				SknShowObject(skinDBP, sknLastOn); -				SknCloseSkin(skinDBP); -				 -				if (RctPtInRectangle(x*2, y*2, &r)) { -					switch (sknLastOn) { -						case skinButtonGameAdd: -							__editMode__ = edtModeAdd; -							FrmPopupForm(EditGameForm); -							handled = true; -							break; - -						case skinButtonGameEdit: -						case skinButtonGameParams: -							__editMode__ = edtModeParams; -							FrmPopupForm(EditGameForm); -							handled = true; -							break; - -						case skinButtonGameStart: -							if (gPrefs->card.volRefNum == sysInvalidRefNum) -								FrmCustomAlert(FrmWarnAlert,"Please select/insert a memory card.", 0, 0); -							else -								bStartScumm = true; -							handled = true; -							break; - -						case skinButtonGameDelete: -							EditGameFormDelete(true); -							break; -					} -				} -				sknLastOn = skinButtonNone; -			} -			break; - -		case penDownEvent: -		case penMoveEvent: -			if (sknLastOn == skinButtonNone) { -				x = eventP->screenX; -				y = eventP->screenY; -				skinDBP = SknOpenSkin(); - -				switch (sknLastOn = SknCheckClick(skinDBP, x,y)) { -					case skinButtonNone: -						break; -					case skinSliderUpArrow: -					case skinSliderDownArrow: -					case skinButtonGameAdd: -					case skinButtonGameEdit: -					case skinButtonGameParams: -					case skinButtonGameStart: -					case skinButtonGameDelete: -						SknSetState(skinDBP, sknLastOn, sknStateSelected); -						SknShowObject(skinDBP, sknLastOn);				 -						if (gPrefs->soundClick) -							SndPlaySystemSound(sndClick); -						handled = true; -						break; -					default: -						FrmCustomAlert(FrmWarnAlert,"Unknown button !",0,0); -				} -				SknCloseSkin(skinDBP); -				GamSelect(x, y); -			} -			break; -		 -		default: -			handled = penDownRepeat(); -	} - -	return handled; -} - -/*********************************************************************** - * - * FUNCTION:    AppHandleEvent - * - * DESCRIPTION: This routine loads form resources and set the event - *              handler for the form loaded. - * - * PARAMETERS:  event  - a pointer to an EventType structure - * - * RETURNED:    true if the event has handle and should not be passed - *              to a higher level handler. - * - * REVISION HISTORY: - * - * - ***********************************************************************/ -static Boolean AppHandleEvent(EventPtr eventP) -{ -	UInt16 formId; -	FormPtr frmP; - -	if (eventP->eType == frmLoadEvent) -		{ -		// Load the form resource. -		formId = eventP->data.frmLoad.formID; -		frmP = FrmInitForm(formId); -		FrmSetActiveForm(frmP); - -		// Set the event handler for the form.  The handler of the currently -		// active form is called by FrmHandleEvent each time is receives an -		// event. -		switch (formId) -			{ -			case MainForm: -				FrmSetEventHandler(frmP, MainFormHandleEvent); -				break; - -			case SkinsForm: -				FrmSetEventHandler(frmP, SkinsFormHandleEvent); -				break; - -			case EditGameForm: -				FrmSetEventHandler(frmP, EditGameFormHandleEvent); -				break; - -			case MiscOptionsForm: -				FrmSetEventHandler(frmP, MiscOptionsFormHandleEvent); -				break; - -			case VolumeForm: -				FrmSetEventHandler(frmP, VolumeFormHandleEvent); -				break; -			 -			case SoundForm: -				FrmSetEventHandler(frmP, SoundFormHandleEvent); -				break; - -			case SystemInfoForm: -				FrmSetEventHandler(frmP, SystemInfoFormHandleEvent); -				break; - -			case CardSlotForm: -				FrmSetEventHandler(frmP,CardSlotFormHandleEvent); -				break; - -			default: -//				ErrFatalDisplay("Invalid Form Load Event"); -				break; - -			} -		return true; -		} -	 -	return false; -} - - -/*********************************************************************** - * - * FUNCTION:    AppEventLoop - * - * DESCRIPTION: This routine is the event loop for the application.   - * - * PARAMETERS:  nothing - * - * RETURNED:    nothing - * - * REVISION HISTORY: - * - * - ***********************************************************************/ -static void AppEventLoop(void) -{ -	UInt16 error; -	EventType event; - -	do { -		EvtGetEvent(&event, evtNoWait); - -		if(bStartScumm) -			StartScummVM(); - -		if (! SysHandleEvent(&event)) -			if (! MenuHandleEvent(0, &event, &error)) -				if (! AppHandleEvent(&event)) -					FrmDispatchEvent(&event); - -	} while (event.eType != appStopEvent); -} - - -/*********************************************************************** - * - * FUNCTION:     AppStart - * - * DESCRIPTION:  Get the current application's preferences. - * - * PARAMETERS:   nothing - * - * RETURNED:     Err value 0 if nothing went wrong - * - * REVISION HISTORY: - * - * - ***********************************************************************/ -static Err AppStartCheckHRmode() -{ -	SonySysFtrSysInfoP sonySysFtrSysInfoP; -	UInt32 version; -	Err error = errNone; - -	// test if sonyHR is present -	if (!(error = FtrGet(sonySysFtrCreator, sonySysFtrNumSysInfoP, (UInt32*)&sonySysFtrSysInfoP))) -	{ -		if (sonySysFtrSysInfoP->libr & sonySysFtrSysInfoLibrHR) {		/* HR available */ - -			if ((error = SysLibFind(sonySysLibNameHR, &gVars->HRrefNum))) { -				if (error == sysErrLibNotFound)							/* couldn't find lib */ -					error = SysLibLoad( 'libr', sonySysFileCHRLib, &gVars->HRrefNum ); -			} - -			if (!error ) -			{	/* Now we can use HR lib. Executes Open library. */ -				error = HROpen(gVars->HRrefNum); -			} -		} -	} -	// if not Hi-Density ? -	if (error && !(error = FtrGet(sysFtrCreator, sysFtrNumWinVersion, &version))) -	{ -		gVars->HRrefNum = sysInvalidRefNum;	// Not sony HR -		if (version<4) -			error = 1; -	} - -	if (!error) { /* Not error processing */ -		UInt32 width, height, depth; -		Boolean color; - -		width = hrWidth; -		height= hrHeight; -		depth = 8; -		color = true; - -		if (gVars->HRrefNum != sysInvalidRefNum) -			error = HRWinScreenMode ( gVars->HRrefNum, winScreenModeSet, &width, &height, &depth, &color ); -		else -			error = WinScreenMode ( winScreenModeSet, &width, &height, &depth, &color ); - -		/* high-resolution mode entered from here if no error */ -		if (error != errNone) -			FrmCustomAlert(FrmErrorAlert,"Your device doesn't seems to support 256 colors mode.",0,0); -	} -	else -		FrmCustomAlert(FrmErrorAlert,"This device doesn't seems to support\nHi-Res mode.",0,0); - -	return error; -} - -static void AppStopHRMode() { -	if (gVars->HRrefNum != sysInvalidRefNum) { -			HRClose(gVars->HRrefNum); -			//SysLibRemove(gVars->HRrefNum);	// never call this !! -	} -} - -static Err AppStartCheckNotify() { -	UInt32 romVersion; -	Err err; - -	err = FtrGet(sysFtrCreator, sysFtrNumNotifyMgrVersion, &romVersion);  -	if (!err) { -		UInt16 cardNo; -		LocalID dbID; - -		err = SysCurAppDatabase(&cardNo, &dbID); -		if (!err) { -			SysNotifyRegister(cardNo, dbID, sysNotifyVolumeMountedEvent, NULL, sysNotifyNormalPriority, NULL); -			SysNotifyRegister(cardNo, dbID, sysNotifyVolumeUnmountedEvent, NULL, sysNotifyNormalPriority, NULL); -			SysNotifyRegister(cardNo, dbID, sonySysNotifyMsaEnforceOpenEvent, NULL, sysNotifyNormalPriority, NULL); -		} -	} - -	return err; -} - -static Err AppStartLoadSkin() { -	Err err = errNone; - -	// if skin defined, check if the db still exists -	if (gPrefs->skin.dbID) { -		UInt32 type, creator; - -		// remember to check version for next revision of the skin -		err = DmDatabaseInfo (gPrefs->skin.cardNo, gPrefs->skin.dbID, gPrefs->skin.nameP, 0, 0, 0, 0, 0, 0, 0,0, &type, &creator); -		if (!err) -			if (type != 'skin' || creator != appFileCreator) -				err = dmErrInvalidParam; - -		if (err) -			MemSet(&(gPrefs->skin),sizeof(SkinInfoType),0); -	} - -	// No skin ? try to get the first one -	if (!gPrefs->skin.dbID) { -		DmSearchStateType stateInfo; - -		err = DmGetNextDatabaseByTypeCreator(true, &stateInfo, 'skin', appFileCreator, false, &gPrefs->skin.cardNo, &gPrefs->skin.dbID); -		if (!err) -			err = DmDatabaseInfo (gPrefs->skin.cardNo, gPrefs->skin.dbID, gPrefs->skin.nameP, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); -	} - -	if (err) -		FrmCustomAlert(FrmErrorAlert,"No skin found.\nPlease install a skin and restart ScummVM.",0,0); -	 -	return err; -} - -static Err AppStartCheckMathLib() -{ -	Err error = errNone; - -	if ((error = SysLibFind(MathLibName, &MathLibRef))) -		if (error == sysErrLibNotFound)									// couldn't find lib -			error = SysLibLoad( LibType, MathLibCreator, &MathLibRef); - -	if (!error) {// Now we can use lib. Executes Open library. -		error = MathLibOpen(MathLibRef, MathLibVersion); -		if (error) -			FrmCustomAlert(FrmErrorAlert,"Can't open MathLib !",0,0); - -	} else { -		FrmCustomAlert(FrmErrorAlert,"Can't find MathLib.\nPlease install it first.",0,0); -	} - -	return error; -} - -static void AppStopMathLib() { -	UInt16 useCount; - -	if (MathLibRef != sysInvalidRefNum) { -		MathLibClose(MathLibRef, &useCount); -		 -		if (!useCount) -			SysLibRemove(MathLibRef); -	} -} - -static Err AppStartCheckScreenSize() { -	SonySysFtrSysInfoP sonySysFtrSysInfoP; -	Err error = errNone; - -//	WinGetDisplayExtent(&gVars->screenWidth, &gVars->screenHeight); -	 -//	gVars->screenWidth <<= 1; -//	gVars->screenHeight <<= 1; -	gVars->screenWidth = 320; -	gVars->screenHeight = 320; - -	gVars->screenFullWidth = gVars->screenWidth; -	gVars->screenFullHeight = gVars->screenHeight; - -	if (!(error = FtrGet(sonySysFtrCreator, sonySysFtrNumSysInfoP, (UInt32*)&sonySysFtrSysInfoP))) { -		if (sonySysFtrSysInfoP->libr & sonySysFtrSysInfoLibrSilk) { - -			if ((error = SysLibFind(sonySysLibNameSilk, &gVars->slkRefNum))) -				if (error == sysErrLibNotFound)	 -					error = SysLibLoad( sonySysFileTSilkLib, sonySysFileCSilkLib, &gVars->slkRefNum); - -			if (!error) { -				error = FtrGet(sonySysFtrCreator, sonySysFtrNumVskVersion, &gVars->slkVersion); -				// Get screen size -				if (error) { -					// v1 = NR -				 	error = SilkLibOpen(gVars->slkRefNum); -					if(!error) { -						gVars->slkVersion = vskVersionNum1; -						SilkLibEnableResize(gVars->slkRefNum); -						SilkLibResizeDispWin(gVars->slkRefNum, silkResizeMax); -						HRWinGetWindowExtent(gVars->HRrefNum, &gVars->screenFullWidth, &gVars->screenFullHeight); -						SilkLibResizeDispWin(gVars->slkRefNum, silkResizeNormal); -						SilkLibDisableResize(gVars->slkRefNum); -					} -				} else { -					// v2 = NX/NZ -					// v3 = UX -				 	error = VskOpen(gVars->slkRefNum); -					if(!error) { -						VskSetState(gVars->slkRefNum, vskStateEnable, (gVars->slkVersion == vskVersionNum2 ? vskResizeVertically : vskResizeHorizontally)); -						VskSetState(gVars->slkRefNum, vskStateResize, vskResizeNone); -						HRWinGetWindowExtent(gVars->HRrefNum, &gVars->screenFullWidth, &gVars->screenFullHeight); -						VskSetState(gVars->slkRefNum, vskStateResize, vskResizeMax); -						VskSetState(gVars->slkRefNum, vskStateEnable, vskResizeDisable); -					} -				} -			} -		} -	} - -	if (error) -		gVars->slkRefNum = sysInvalidRefNum; -	 -	return error; -} - -static void AppStopSilk() { -	if (gVars->slkRefNum != sysInvalidRefNum) -		SilkLibClose(gVars->slkRefNum); -} - -static Err AppStart(void) { -	UInt16 dataSize, checkSize = 0; -	Err error; - -	// allocate global variables space -	dataSize = sizeof(GlobalsDataType); -	gVars = (GlobalsDataType *)MemPtrNew(dataSize); -	MemSet(gVars, dataSize, 0); -	 -	gVars->indicator.on	= 255; -	gVars->indicator.off = 0; -	gVars->HRrefNum = sysInvalidRefNum; -	gVars->volRefNum = sysInvalidRefNum; -	gVars->slkRefNum = sysInvalidRefNum; - -	// allocate prefs space -	dataSize = sizeof(GlobalsPreferenceType); -	gPrefs	= (GlobalsPreferenceType *)MemPtrNew(dataSize); -	MemSet(gPrefs, dataSize, 0); - -	// Read the saved preferences / saved-state information. -	if (PrefGetAppPreferences(appFileCreator, appPrefID, NULL, &checkSize, true) == noPreferenceFound || checkSize != dataSize) { -		UInt32 romVersion; -		// reset all elements -		MemSet(gPrefs, dataSize, 0); - -		gPrefs->card.volRefNum = sysInvalidRefNum; - -		gPrefs->autoOff = true; -		gPrefs->vibrator = CheckVibratorExists(); -		gPrefs->debug = false; - -		FtrGet(sysFtrCreator, sysFtrNumROMVersion, &romVersion); -		gPrefs->stdPalette = (romVersion >= kOS5Version); -		 -		gPrefs->volume.speaker = 16; -		gPrefs->volume.headphone = 16; -		 -		gPrefs->volume.master = 192; -		gPrefs->volume.music = 192; -		gPrefs->volume.sfx = 192; -		 -		gPrefs->sound.tempo = 100; -		gPrefs->sound.defaultTrackLength = 10; -		gPrefs->sound.firstTrack = 1; -		 -	} else { -		PrefGetAppPreferences(appFileCreator, appPrefID, gPrefs, &dataSize, true); -	} - -	error = AppStartCheckMathLib(); -	if (error) return (error); - -	error = AppStartCheckHRmode(); -	if (error) return (error); -	 -	error = AppStartLoadSkin(); -	if (error) return (error); - -	if (gPrefs->card.volRefNum != sysInvalidRefNum) {	// if volref previously defined, check if it's a valid one -		VolumeInfoType volInfo; -		Err err = VFSVolumeInfo(gPrefs->card.volRefNum, &volInfo); -		if (err) -			gPrefs->card.volRefNum = sysInvalidRefNum; -	} -	else -		gPrefs->card.volRefNum = parseCards(); //parseCards(0);	// get first volref - -	error = GamOpenDatabase(); -	if (error) return (error); -	GamImportDatabase(false); - -	AppStartCheckNotify(); // not fatal error if not avalaible -	AppStartCheckScreenSize(); - -	return error; -} - -/*********************************************************************** - * - * FUNCTION:    AppStop - * - * DESCRIPTION: Save the current state of the application. - * - * PARAMETERS:  nothing - * - * RETURNED:    nothing - * - * REVISION HISTORY: - * - * - ***********************************************************************/ -static Err AppStopCheckNotify() -{ -	UInt32 romVersion; -	Err err; -	 -	err = FtrGet(sysFtrCreator, sysFtrNumNotifyMgrVersion, &romVersion);  -	if (!err) { -		UInt16 cardNo; -		LocalID dbID; - -		err = SysCurAppDatabase(&cardNo, &dbID); -		if (!err) { -			SysNotifyUnregister(cardNo, dbID, sysNotifyVolumeUnmountedEvent, sysNotifyNormalPriority); -			SysNotifyUnregister(cardNo, dbID, sysNotifyVolumeMountedEvent, sysNotifyNormalPriority); -			// sonySysNotifyMsaEnforceOpenEvent -		} -	} -	 -	return err; -} - -static void AppStop(void) { -	// Close all the open forms. -	FrmCloseAllForms(); -	WinEraseWindow(); -	WinPalette(winPaletteSetToDefault, 0, 256, NULL); - -	// Close and move Game list database -	GamCloseDatabase(false); - -	// Write the saved preferences / saved-state information.  This data  -	// will saved during a HotSync backup. -	SavePrefs(); - -	// stop all -	AppStopSilk(); -	AppStopCheckNotify(); -	AppStopMathLib(); -	AppStopHRMode(); - -	// reset if needed -	if (gVars) { -		Boolean autoReset = gVars->autoReset; -		MemPtrFree(gVars); -		if (autoReset) -			SysReset(); -	} -} - - -/*********************************************************************** - * - * FUNCTION:    ScummVMPalmMain - * - * DESCRIPTION: This is the main entry point for the application. - * - * PARAMETERS:  cmd - word value specifying the launch code.  - *              cmdPB - pointer to a structure that is associated with the launch code.  - *              launchFlags -  word value providing extra information about the launch. - * - * RETURNED:    Result of launch - * - * REVISION HISTORY: - * - * - ***********************************************************************/ -static void AppLaunchCmdNotify(UInt16 LaunchFlags, SysNotifyParamType * pData) -{ -	switch (pData->notifyType) -	{ -		case sysNotifyVolumeMountedEvent: -			pData->handled = true;	// don't switch - -			if (gPrefs) {	// gPrefs exists ? so we are in the palm selector -				CardSlotFormUpdate(); // redraw card list if needed - -				if (gPrefs->card.volRefNum == sysInvalidRefNum) { -					VFSAnyMountParamType *notifyDetailsP = (VFSAnyMountParamType *)pData->notifyDetailsP; -					gPrefs->card.volRefNum = notifyDetailsP->volRefNum; - -					if (FrmGetFormPtr(MainForm) == FrmGetActiveForm()) -						if (gPrefs->card.volRefNum != sysInvalidRefNum) { -							CardSlotCreateDirs(); -							FrmUpdateForm(MainForm, frmRedrawUpdateMSImport); -						} -				} -			} -			break; -		 -		case sysNotifyVolumeUnmountedEvent: -			if (gPrefs) { -				CardSlotFormUpdate(); - -				if (gPrefs->card.volRefNum == (UInt16)pData->notifyDetailsP) { -					gPrefs->card.volRefNum = sysInvalidRefNum; - -					if (FrmGetFormPtr(MainForm) == FrmGetActiveForm()) -						FrmUpdateForm(MainForm, frmRedrawUpdateMS); -				} -			} -			break; -		 -		case sonySysNotifyMsaEnforceOpenEvent: -			// what am i supposed to do here ??? -			break; -	} -} - -static UInt32 ScummVMPalmMain(UInt16 cmd, MemPtr cmdPBP, UInt16 launchFlags) -{ -	Err error; - -	error = RomVersionCompatible (kOurMinVersion, launchFlags); -	if (error) return (error); - -	switch (cmd) -		{ -		case sysAppLaunchCmdNotify: -			AppLaunchCmdNotify(launchFlags, (SysNotifyParamType *) cmdPBP); -			break; - -		case sysAppLaunchCmdNormalLaunch: -			error = AppStart(); -			if (error)  -				goto end; -				 -			FrmGotoForm(MainForm); -			AppEventLoop(); -end: -			AppStop(); -			break; - -		default: -			break; - -		} - -	return error; -} -/*********************************************************************** - * - * FUNCTION:    PilotMain - * - * DESCRIPTION: This is the main entry point for the application. - * - * PARAMETERS:  cmd - word value specifying the launch code.  - *              cmdPB - pointer to a structure that is associated with the launch code.  - *              launchFlags -  word value providing extra information about the launch. - * RETURNED:    Result of launch - * - * REVISION HISTORY: - * - * - ***********************************************************************/ - -UInt32 PilotMain( UInt16 cmd, MemPtr cmdPBP, UInt16 launchFlags) -{ -	return ScummVMPalmMain(cmd, cmdPBP, launchFlags); -}
\ No newline at end of file diff --git a/backends/PalmOS/Src/scumm_globals.h b/backends/PalmOS/Src/scumm_globals.h index 3dd5f08715..e19eea6077 100644 --- a/backends/PalmOS/Src/scumm_globals.h +++ b/backends/PalmOS/Src/scumm_globals.h @@ -19,28 +19,46 @@   * $Header$   *   */ -  -#define GBVARS_DIGSTATEMUSICMAP_INDEX		0 -#define GBVARS_DIGSTATEMUSICTABLE_INDEX		1 -#define GBVARS_COMISTATEMUSICTABLE_INDEX	2 -#define GBVARS_COMISEQMUSICTABLE_INDEX		3 -#define GBVARS_DIGSEQMUSICTABLE_INDEX		4 -#define GBVARS_FTSTATEMUSICTABLE_INDEX		5 -#define GBVARS_FTSEQMUSICTABLE_INDEX		6 -#define GBVARS_GUIFONT_INDEX				7 -#define GBVARS_DEFAULTSCALETABLE_INDEX 		8 -#define GBVARS_IMCTABLE_INDEX				9 -#define GBVARS_CODEC47TABLE_INDEX			10 -#define GBVARS_TRANSITIONEFFECTS_INDEX		11 -#define GBVARS_STRINGMAPTABLEV7_INDEX		12 -#define GBVARS_STRINGMAPTABLEV6_INDEX		13 -#define GBVARS_STRINGMAPTABLEV5_INDEX		14 -#define GBVARS_GERMANCHARSETDATAV2_INDEX	15 -#define GBVARS_FRENCHCHARSETDATAV2_INDEX	16 -#define GBVARS_ENGLISHCHARSETDATAV2_INDEX	17 -#define GBVARS_ITALIANCHARSETDATAV2_INDEX	18 -#define GBVARS_SPANISHCHARSETDATAV2_INDEX	19 -#define GBVARS_COSTSCALETABLE_INDEX			20 + +#ifndef __SCUMM_GLOBALS_H__ +#define __SCUMM_GLOBALS_H__ + +enum { +	GBVARS_DIGSTATEMUSICMAP_INDEX = 0, +	GBVARS_DIGSTATEMUSICTABLE_INDEX, +	GBVARS_COMISTATEMUSICTABLE_INDEX, +	GBVARS_COMISEQMUSICTABLE_INDEX, +	GBVARS_DIGSEQMUSICTABLE_INDEX, +	GBVARS_FTSTATEMUSICTABLE_INDEX, +	GBVARS_FTSEQMUSICTABLE_INDEX, +	GBVARS_GUIFONT_INDEX, +	GBVARS_DEFAULTSCALETABLE_INDEX, +	GBVARS_IMCTABLE_INDEX, +	GBVARS_CODEC47TABLE_INDEX, +	GBVARS_TRANSITIONEFFECTS_INDEX, +	GBVARS_STRINGMAPTABLEV7_INDEX, +	GBVARS_STRINGMAPTABLEV6_INDEX, +	GBVARS_STRINGMAPTABLEV5_INDEX, +	GBVARS_GERMANCHARSETDATAV2_INDEX, +	GBVARS_FRENCHCHARSETDATAV2_INDEX, +	GBVARS_ENGLISHCHARSETDATAV2_INDEX, +	GBVARS_ITALIANCHARSETDATAV2_INDEX, +	GBVARS_SPANISHCHARSETDATAV2_INDEX, +	GBVARS_COSTSCALETABLE_INDEX, +	GBVARS_NOTELENGTHS_INDEX, +	GBVARS_HULLOFFSETS_INDEX, +	GBVARS_HULLS_INDEX, +	GBVARS_FREQMODLENGTHS_INDEX, +	GBVARS_FREQMODOFFSETS_INDEX, +	GBVARS_FREQMODTABLE_INDEX, +	GBVARS_SPKFREQTABLE_INDEX, +	GBVARS_PCJRFREQTABLE_INDEX +}; + +void *GlbGetRecord(UInt16 index, UInt16 id); +void GlbReleaseRecord(UInt16 index, UInt16 id); +void GlbOpen(); +void GlbClose();  #define GBVARS_SCUMM	0  #define GBVARS_SIMON	1 @@ -54,11 +72,8 @@  #define CALL_INIT(x) initGlobals_##x();  #define CALL_RELEASE(x)	releaseGlobals_##x(); -#define _GSETPTR(var,index,format,id)	var = (format *)GBGetRecord(index,id); -#define _GRELEASEPTR(index,id)			GBReleaseRecord(index,id); - -void *GBGetRecord(UInt16 index, UInt16 id); -void GBReleaseRecord(UInt16 index, UInt16 id); +#define _GSETPTR(var,index,format,id)	var = (format *)GlbGetRecord(index,id); +#define _GRELEASEPTR(index,id)			GlbReleaseRecord(index,id);  #define PROTO_GLOBALS(x)		void CALL_INIT(x);\  								void CALL_RELEASE(x); @@ -72,5 +87,8 @@ PROTO_GLOBALS(Gfx)  PROTO_GLOBALS(Dialogs)  PROTO_GLOBALS(Charset)  PROTO_GLOBALS(Costume) +PROTO_GLOBALS(PlayerV2) + +#undef PROTO_GLOBALS -#undef PROTO_GLOBALS
\ No newline at end of file +#endif
\ No newline at end of file diff --git a/backends/PalmOS/Src/skin.h b/backends/PalmOS/Src/skin.h index e6ff5e62ee..56a8378e3a 100644 --- a/backends/PalmOS/Src/skin.h +++ b/backends/PalmOS/Src/skin.h @@ -19,10 +19,38 @@   * $Header$   *   */ +#ifndef __SKIN_H__ +#define __SKIN_H__ +// skin  +#define	sknInfoState		0 +#define	sknInfoPosX			1 +#define	sknInfoPosY			2 + +#define	sknInfoMaxWOrH		3 +#define	sknInfoDrawMode		4 +#define	sknInfoKeepXOrY1	5 +#define	sknInfoKeepXOrY2	7 + +#define sknInfoListWidth	sknInfoMaxWOrH +#define sknInfoListHeight	sknInfoDrawMode +#define sknInfoListSize		sknInfoListHeight +#define sknInfoListItemSize	12 + +#define	sknPosRsc			'sPos' +#define	sknColorsRsc		'sCol' + +#define sknStateNormal		0 +#define sknStateSelected	10 +#define sknStateDisabled	20 + +#define sknSelectedState(bmp)	(bmp + sknStateSelected) +#define sknDisabledState(bmp)	(bmp + sknStateDisabled) + +// skin elements  #define skinList					500  #define	skinColors	600 -//#define skinPalette					510 +#define skinPalette					610  #define skinButtonNone				0  #define skinSliderUpArrow			2000 @@ -74,4 +102,22 @@  #define skinButtonPlayNormal		7000  #define skinButtonPlayOver			7010 -#define skinButtonPlayDisabled		7040
\ No newline at end of file +#define skinButtonPlayDisabled		7040 + +// protos +void SknApplySkin(); +void SknGetObjectBounds(DmOpenRef skinDBP, DmResID resID, RectangleType *rP); +DmOpenRef SknOpenSkin(); +void SknCloseSkin(DmOpenRef skinDBP); +UInt8 SknSetState(DmOpenRef skinDBP, DmResID resID, UInt8 newState); +void SknShowObject(DmOpenRef skinDBP, DmResID resID); +UInt8 SknGetState(DmOpenRef skinDBP, DmResID resID); +void SknUpdateList(); +void SknGetListBounds(RectangleType *rAreaP, RectangleType *rArea2xP); +UInt16 SknCheckClick(DmOpenRef skinDBP, Coord mx, Coord my); +void SknSelect(Coord x, Coord y); +Boolean SknProcessArrowAction(UInt16 button); + +extern UInt16 lastIndex; + +#endif
\ No newline at end of file  | 
