[Scummvm-cvs-logs] CVS: scummvm/backends/PalmOS/Src globals.h,1.4,1.5 palm.cpp,1.21,1.22 palm.h,1.15,1.16 palmstart.cpp,1.13,1.14

Chris Apers chrilith at users.sourceforge.net
Mon Aug 18 04:19:01 CEST 2003


Update of /cvsroot/scummvm/scummvm/backends/PalmOS/Src
In directory sc8-pr-cvs1:/tmp/cvs-serv1152

Modified Files:
	globals.h palm.cpp palm.h palmstart.cpp 
Log Message:
Added : UX50 support + fullscreen mode, Fixed : overlay, some memory cards related stuffs,...

Index: globals.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/PalmOS/Src/globals.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- globals.h	7 Jul 2003 08:49:27 -0000	1.4
+++ globals.h	18 Aug 2003 10:47:14 -0000	1.5
@@ -28,22 +28,23 @@
 
 	UInt16 HRrefNum;
 	UInt16 volRefNum;
+	UInt16 slkRefNum;
+	UInt32 slkVersion;
+
 	FileRef	logFile;
 
-	Boolean screenLocked;
+	
 	Boolean vibrator;
-	Boolean stdPalette;
 	Boolean autoReset;
+	Boolean screenLocked;
+	Boolean stdPalette;
+	Coord screenWidth, screenHeight;	// with silkarea
+	Coord screenFullWidth, screenFullHeight;	// without silkarea
 
 	struct {
 		UInt8 on;
 		UInt8 off;
 	} indicator;
-	
-	struct {
-		UInt8 *pageAddr1;
-		UInt8 *pageAddr2;
-	} flipping;
 	
 	struct {
 		Boolean MP3;

Index: palm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/PalmOS/Src/palm.cpp,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- palm.cpp	6 Aug 2003 08:33:38 -0000	1.21
+++ palm.cpp	18 Aug 2003 10:47:14 -0000	1.22
@@ -20,26 +20,28 @@
  *
  */
 
+#include "backends/intern.h"
 #include "scumm.h"
 #include "common/scaler.h"
 
 #include "palm.h"
 #include "vibrate.h"
 
-#define EXITDELAY		(500) // delay to exit : calc button : double tap 1/500 sec
[...1045 lines suppressed...]
+
+	if (MemPtrDataStorage(_tmpScreenP)) {
+		byte *dst = _tmpScreenP;
+		int offset = y * _screenWidth + x;
+		do {
+			DmWrite(dst, offset, buf, w);
+			offset += _screenWidth;
+			buf += pitch;
+		} while (--h);
+	} else {
+		byte *dst = _tmpScreenP + y * _screenWidth + x;
+		do {
+			memcpy(dst, buf, w);
+			dst += _screenWidth;
+			buf += pitch;
+		} while (--h);
+	}
 }
 
 

Index: palm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/PalmOS/Src/palm.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- palm.h	6 Aug 2003 08:33:38 -0000	1.15
+++ palm.h	18 Aug 2003 10:47:14 -0000	1.16
@@ -46,6 +46,7 @@
 	OSystem::SoundProc *proc;
 	void *param;
 	OSystem::SoundFormat format;
+	SndStreamRef sndRefNum;
 } SoundDataType;
 
 //-- 02-12-17 --////////////////////////////////////////////////////////////////
@@ -100,7 +101,7 @@
 	// Returns true if an event was retrieved.	
 	bool poll_event(Event *event);
 	
-	void SimulateArrowKeys(Event *event, Int8 iHoriz, Int8 iVert, Boolean repeat);
+	void SimulateArrowKeys(Event *event, Int8 iHoriz, Int8 iVert);
 
 	/** @name Sound */
 	//@{
@@ -164,13 +165,14 @@
 	// Savefile management
 	SaveFileManager *get_savefile_manager();
 
-	static OSystem *create(UInt16 gfx_mode);
+	static OSystem *create(UInt16 gfx_mode, bool full_screen);
 
 	UInt8 _sndHandle;
 	Boolean _isSndPlaying;
 
 protected:
-	bool _overlay_visible;
+	byte *_tmpScreenP, *_tmpBackupP;
+	bool _overlayVisible;
 
 private:
 	typedef void (OSystem_PALMOS::*RendererProc)();
@@ -185,16 +187,24 @@
 
 	WinHandle _screenH;
 	WinHandle _offScreenH;
-	
+	Boolean _fullscreen;
+	struct {
+		Coord x;
+		Coord y;
+		UInt32 addr;
+	} _screenOffset;
+
 public:
 	byte *_screenP;
+	int _offScreenPitch;
+	int _screenPitch;
+	
 	ThreadEmuType _thread[MAX_THREAD];	// 0: midi native, 1:multi-midi (adlib wrapper)
 	UInt8 _threadCounter;
 	UInt8 _threadID;
 
 private:
 	byte *_offScreenP;
-	byte *_tmpScreenP;
 
 	bool _mouseVisible;
 	bool _mouseDrawn;
@@ -205,7 +215,6 @@
 	};
 
 	int _screenWidth, _screenHeight;
-	bool _overlaySaved;
 
 	struct MousePos {
 		int16 x,y,w,h;
@@ -221,7 +230,6 @@
 	int _current_shake_pos;
 	int _new_shake_pos;
 	
-	UInt16 _decaly, _screeny;
 	Boolean _vibrate;
 	UInt32 _exit_delay;
 	
@@ -270,8 +278,6 @@
 	Boolean _useHRmode;
 
 	eventsEnum _lastEvent;
-
-	UInt16 _wideRefNum;
 
 	OSystem_PALMOS();
 

Index: palmstart.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/PalmOS/Src/palmstart.cpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- palmstart.cpp	6 Aug 2003 08:36:33 -0000	1.13
+++ palmstart.cpp	18 Aug 2003 10:47:14 -0000	1.14
@@ -93,6 +93,7 @@
 	Boolean stdPalette;
 	Boolean autoReset;
 	Boolean demoMode;
+	Boolean fullscreen;
 
 	struct {
 		UInt16 speaker;
@@ -201,25 +202,29 @@
  ***********************************************************************/
 static void GBInitAll() {
 #ifndef DISABLE_SCUMM
-	IMuseDigital_initGlobals();
-	NewGui_initGlobals();
-	Akos_initGlobals();
-	Codec47_initGlobals();
-	Gfx_initGlobals();
-	Dialogs_initGlobals();
-	Charset_initGlobals();
+	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
-	IMuseDigital_releaseGlobals();
-	NewGui_releaseGlobals();
-	Akos_releaseGlobals();
-	Codec47_releaseGlobals();
-	Gfx_releaseGlobals();
-	Dialogs_releaseGlobals();
-	Charset_releaseGlobals();
+	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
 }
 
@@ -477,14 +482,16 @@
 				}
 
 				if (ch) {
+					Coord picth = gVars->screenFullWidth;
 					dst = (UInt8 *)BmpGetBits(WinGetBitmap(WinGetDisplayWindow()));
-					dst+= destX + destY * 320;
+				
+					dst+= destX + destY * picth;
 					bmpData = (UInt8 *)BmpGetBits(bmpTemp);
 					src	= bmpData + cx + cy * bw;
 
 					do {
 						MemMove(dst, src, cw);
-						dst += 320;
+						dst += picth;
 						src += bw;
 					} while (--ch);
 				}
@@ -700,7 +707,7 @@
 		
 		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");
@@ -1726,7 +1733,7 @@
 static void MiscOptionsFormSave() {
 
 	FieldType *fld1P;
-	ControlType *cck1P, *cck2P, *cck3P, *cck4P, *cck5P, *cck6P, *cck7P;	
+	ControlType *cck1P, *cck2P, *cck3P, *cck4P, *cck5P, *cck6P, *cck7P, *cck8P;	
 	FormPtr frmP;
 
 	fld1P = (FieldType *)GetObjectPtr(MiscOptionsDebugLevelField);
@@ -1738,6 +1745,7 @@
 	cck5P = (ControlType *)GetObjectPtr(MiscOptionsWriteIniCheckbox);
 	cck6P = (ControlType *)GetObjectPtr(MiscOptionsAutoResetCheckbox);
 	cck7P = (ControlType *)GetObjectPtr(MiscOptionsDemoCheckbox);
+	cck8P = (ControlType *)GetObjectPtr(MiscOptionsFullscreenCheckbox);
 
 	frmP = FrmGetActiveForm();
 
@@ -1754,6 +1762,7 @@
 	gPrefs->saveConfig = CtlGetValue(cck5P);
 	gPrefs->autoReset = CtlGetValue(cck6P);
 	gPrefs->demoMode = CtlGetValue(cck7P);
+	gPrefs->fullscreen = CtlGetValue(cck8P);
 
 	gPrefs->debugLevel = StrAToI(FldGetTextPtr(fld1P));
 	
@@ -1775,6 +1784,7 @@
 	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);
 
@@ -1818,6 +1828,16 @@
 	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();
@@ -1846,36 +1866,34 @@
 	while (volIterator != vfsIteratorStop) {
 		err = VFSVolumeEnumerate(&volRefNum, &volIterator);
 
-		if (!err)
-		{	Char labelP[expCardInfoStringMaxLen+1];
+		if (!err) {
+			Char labelP[expCardInfoStringMaxLen+1];
 			err = VFSVolumeGetLabel(volRefNum, labelP, expCardInfoStringMaxLen+1);
 
-			if (!err) {
-				if (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 != errNone)	// if err default name
-						StrPrintF(labelP,"Other Card %ld", other++);
+			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 (!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 (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++;
 		}
 	}
 
@@ -1993,10 +2011,10 @@
 			gPrefs->card.volRefNum = cardsInfo[selected].volRefNum;
 		}
 
-		//gPrefs->card.volRefNum = (selected == -1) ?  : cardsInfo[selected].volRefNum;
 		gPrefs->card.moveDB = CtlGetValue(cck1P);
 		gPrefs->card.deleteDB = CtlGetValue(cck2P);
 		gPrefs->card.confirmMoveDB = CtlGetValue(cck3P);
+		CardSlotCreateDirs();
 	}
 
 	FrmReturnToMain(updateCode);
@@ -2541,7 +2559,7 @@
 #define aOutSndKindSp       (0) /* Speaker volume */
 #define aOutSndKindHp       (2) /* HeadPhone volume */
 ////////////////////////////////////////////////////////////
-#define MAX_ARG	20
+#define MAX_ARG	25
 
 static Boolean checkPath(const Char *pathP) {
 	FileRef *tmpRef;
@@ -2608,23 +2626,22 @@
 			AddArg(&argvP[argc], "-q", (lang + (gameInfoP->language - 1) * 3), &argc);
 		}
 
+		// fullscreen ?
+		if (gPrefs->fullscreen) {
+			AddArg(&argvP[argc], "-f", NULL, &argc);
+		}
+
 		// gfx mode
-		gVars->flipping.pageAddr1 = (UInt8 *)(BmpGetBits(WinGetBitmap(WinGetDisplayWindow())));
-		gVars->flipping.pageAddr2 = gVars->flipping.pageAddr1; // default if not flipping mode
 		switch (gameInfoP->gfxMode)
 		{
 			case 1:
 				AddArg(&argvP[argc], "-g", "flipping", &argc);
-				gVars->flipping.pageAddr1 = (UInt8 *)WinScreenLock(winLockErase);
-				WinScreenUnlock();
 				break;
 			case 2:
 				AddArg(&argvP[argc], "-g", "dbuffer", &argc);
 				break;
 			case 3:
 				AddArg(&argvP[argc], "-g", "wide", &argc);
-				gVars->flipping.pageAddr1 = (UInt8 *)WinScreenLock(winLockErase);
-				WinScreenUnlock();
 				break;
 			default:
 				AddArg(&argvP[argc], "-g", "normal", &argc);
@@ -3200,6 +3217,7 @@
 		if (!err) {
 			SysNotifyRegister(cardNo, dbID, sysNotifyVolumeMountedEvent, NULL, sysNotifyNormalPriority, NULL);
 			SysNotifyRegister(cardNo, dbID, sysNotifyVolumeUnmountedEvent, NULL, sysNotifyNormalPriority, NULL);
+			SysNotifyRegister(cardNo, dbID, sonySysNotifyMsaEnforceOpenEvent, NULL, sysNotifyNormalPriority, NULL);
 		}
 	}
 
@@ -3269,6 +3287,67 @@
 	}
 }
 
+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;
@@ -3283,6 +3362,7 @@
 	gVars->indicator.off = 0;
 	gVars->HRrefNum = sysInvalidRefNum;
 	gVars->volRefNum = sysInvalidRefNum;
+	gVars->slkRefNum = sysInvalidRefNum;
 
 	// allocate prefs space
 	dataSize = sizeof(GlobalsPreferenceType);
@@ -3324,14 +3404,10 @@
 
 	error = AppStartCheckHRmode();
 	if (error) return (error);
-
+	
 	error = AppStartLoadSkin();
 	if (error) return (error);
 
-	error = GamOpenDatabase();
-	if (error) return (error);
-	GamImportDatabase(false);
-
 	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);
@@ -3341,7 +3417,12 @@
 	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;
 }
@@ -3374,6 +3455,7 @@
 		if (!err) {
 			SysNotifyUnregister(cardNo, dbID, sysNotifyVolumeUnmountedEvent, sysNotifyNormalPriority);
 			SysNotifyUnregister(cardNo, dbID, sysNotifyVolumeMountedEvent, sysNotifyNormalPriority);
+			// sonySysNotifyMsaEnforceOpenEvent
 		}
 	}
 	
@@ -3394,6 +3476,7 @@
 	SavePrefs();
 
 	// stop all
+	AppStopSilk();
 	AppStopCheckNotify();
 	AppStopMathLib();
 	AppStopHRMode();
@@ -3439,10 +3522,13 @@
 					gPrefs->card.volRefNum = notifyDetailsP->volRefNum;
 
 					if (FrmGetFormPtr(MainForm) == FrmGetActiveForm())
-						if (gPrefs->card.volRefNum != sysInvalidRefNum)
+						if (gPrefs->card.volRefNum != sysInvalidRefNum) {
+							CardSlotCreateDirs();
 							FrmUpdateForm(MainForm, frmRedrawUpdateMSImport);
+						}
 				}
 			}
+			break;
 		
 		case sysNotifyVolumeUnmountedEvent:
 			if (gPrefs) {
@@ -3456,6 +3542,10 @@
 				}
 			}
 			break;
+		
+		case sonySysNotifyMsaEnforceOpenEvent:
+			// what am i supposed to do here ???
+			break;
 	}
 }
 
@@ -3509,4 +3599,4 @@
 UInt32 PilotMain( UInt16 cmd, MemPtr cmdPBP, UInt16 launchFlags)
 {
 	return ScummVMPalmMain(cmd, cmdPBP, launchFlags);
-}
+}
\ No newline at end of file





More information about the Scummvm-git-logs mailing list