[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