[Scummvm-cvs-logs] CVS: scummvm/backends/PalmOS/Src args.cpp,NONE,1.1 args.h,NONE,1.1 init_arm.cpp,NONE,1.1 init_arm.h,NONE,1.1 init_mathlib.cpp,NONE,1.1 init_mathlib.h,NONE,1.1 init_pa1lib.cpp,NONE,1.1 init_pa1lib.h,NONE,1.1 init_palmos.cpp,NONE,1.1 init_palmos.h,NONE,1.1 init_sony.cpp,NONE,1.1 init_sony.h,NONE,1.1
Chris Apers
chrilith at users.sourceforge.net
Tue Nov 9 02:46:04 CET 2004
Update of /cvsroot/scummvm/scummvm/backends/PalmOS/Src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2003
Added Files:
args.cpp args.h init_arm.cpp init_arm.h init_mathlib.cpp
init_mathlib.h init_pa1lib.cpp init_pa1lib.h init_palmos.cpp
init_palmos.h init_sony.cpp init_sony.h
Log Message:
Gathered common functions into new source files
--- NEW FILE: args.cpp ---
#include <PalmOS.h>
#include "args.h"
Char **ArgsInit() {
MemHandle argvH = MemHandleNew(MAX_ARG * sizeof(Char *));
Char **argvP = (Char **)MemHandleLock(argvH);
for(UInt8 count = 0; count < MAX_ARG; count++)
argvP[count] = NULL;
return argvP;
}
void ArgsAdd(Char **argvP, const Char *argP, const Char *parmP, UInt8 *countArgP) {
if (argP) {
MemHandle newArg;
UInt16 len2 = 0;
UInt16 len1 = StrLen(argP);
if (len1 > 0) {
if (parmP)
len2 = StrLen(parmP);
(*countArgP)++;
newArg = MemHandleNew(len1 + len2 + 1); // +1 = NULL CHAR
*argvP = (Char *)MemHandleLock(newArg);
StrCopy(*argvP, argP);
if (parmP)
StrCat(*argvP, parmP);
}
}
}
void ArgsFree(Char **argvP) {
if (!argvP)
return;
MemHandle oldH;
for(UInt8 count = 0; count < MAX_ARG; count++)
if (argvP[count]) {
oldH = MemPtrRecoverHandle(argvP[count]);
MemHandleUnlock(oldH);
MemHandleFree(oldH);
}
oldH = MemPtrRecoverHandle(argvP);
MemHandleUnlock(oldH);
MemHandleFree(oldH);
}
void ArgsSetOwner(Char **argvP, UInt16 owner) {
if (!argvP)
return;
MemHandle oldH;
for(UInt8 count = 0; count < MAX_ARG; count++)
if (argvP[count]) {
oldH = MemPtrRecoverHandle(argvP[count]);
MemHandleSetOwner(oldH, owner);
// MemPtrSetOwner(argvP[count], 0);
}
oldH = MemPtrRecoverHandle(argvP);
MemHandleSetOwner(oldH, owner);
// MemPtrSetOwner(argvP, 0);
}
--- NEW FILE: args.h ---
#ifndef ARGS_H
#define ARGS_H
#define MAX_ARG 25
Char **ArgsInit();
void ArgsAdd(Char **argvP, const Char *argP, const Char *parmP, UInt8 *countArgP);
void ArgsFree(Char **argvP);
void ArgsSetOwner(Char **argvP, UInt16 owner);
#endif
--- NEW FILE: init_arm.cpp ---
#include <PalmOS.h>
#include "globals.h"
#include "init_arm.h"
void ARMInit() {
// init global ARM only
MemSet(gVars->arm, sizeof(gVars->arm), 0);
ARM(PNO_COPYRECT ).pnoPtr = _PnoInit(RSC_COPYRECT, &ARM(PNO_COPYRECT).pnoDesc);
ARM(PNO_COSTUMEPROC3).pnoPtr = _PceInit(RSC_COSTUMEPROC3);
ARM(PNO_DRAWSTRIP ).pnoPtr = _PceInit(RSC_DRAWSTRIP);
ARM(PNO_BLIT ).pnoPtr = _PnoInit(RSC_BLIT, &ARM(PNO_BLIT).pnoDesc);
}
void ARMRelease() {
_PnoFree(&ARM(PNO_BLIT ).pnoDesc, ARM(PNO_BLIT).pnoPtr);
_PceFree(ARM(PNO_DRAWSTRIP ).pnoPtr);
_PceFree(ARM(PNO_COSTUMEPROC3 ).pnoPtr);
_PnoFree(&ARM(PNO_COPYRECT ).pnoDesc, ARM(PNO_COPYRECT).pnoPtr);
}
MemPtr _PceInit(DmResID resID) {
MemHandle armH = DmGetResource('ARMC', resID);
NativeFuncType *armP = (NativeFuncType *)MemHandleLock(armH);
return armP;
}
UInt32 _PceCall(void *armP, void *userDataP) {
return PceNativeCall((NativeFuncType *)armP, userDataP);
}
void _PceFree(void *armP) {
MemHandle armH = MemPtrRecoverHandle(armP);
MemPtrUnlock(armP);
DmReleaseResource(armH);
}
MemPtr _PnoInit(DmResID resID, PnoDescriptor *pnoP) {
MemHandle armH = DmGetResource('ARMC', resID);
MemPtr armP = MemHandleLock(armH);
PnoLoad(pnoP, armP);
return armP;
}
UInt32 _PnoCall(PnoDescriptor *pnoP, void *userDataP) {
return PnoCall(pnoP, userDataP);
}
void _PnoFree(PnoDescriptor *pnoP, MemPtr armP) {
MemHandle armH = MemPtrRecoverHandle(armP);
PnoUnload(pnoP);
MemPtrUnlock(armP);
DmReleaseResource(armH);
}
--- NEW FILE: init_arm.h ---
#ifndef INIT_ARM_H
#define INIT_ARM_H
void ARMInit();
void ARMRelease();
// calls
MemPtr _PceInit(DmResID resID);
UInt32 _PceCall(void *armP, void *userDataP);
void _PceFree(void *armP);
MemPtr _PnoInit(DmResID resID, PnoDescriptor *pnoP);
UInt32 _PnoCall(PnoDescriptor *pnoP, void *userDataP);
void _PnoFree(PnoDescriptor *pnoP, MemPtr armP);
#endif
--- NEW FILE: init_mathlib.cpp ---
#include <PalmOS.h>
#include "enginersc.h"
#include "globals.h"
#include "init_mathlib.h"
#include "mathlib.h"
Err MathlibInit() {
Err e;
if ((e = SysLibFind(MathLibName, &MathLibRef)))
if (e == sysErrLibNotFound) // couldn't find lib
e = SysLibLoad(LibType, MathLibCreator, &MathLibRef);
if (e) return sysErrLibNotFound;
e = MathLibOpen(MathLibRef, MathLibVersion);
return e;
}
void MathlibRelease() {
UInt16 useCount;
if (MathLibRef != sysInvalidRefNum) {
MathLibClose(MathLibRef, &useCount);
if (!useCount)
SysLibRemove(MathLibRef);
}
}
--- NEW FILE: init_mathlib.h ---
#ifndef INIT_MATHLIB_H
#define INIT_MATHLIB_H
Err MathlibInit();
void MathlibRelease();
#endif
--- NEW FILE: init_pa1lib.cpp ---
#include <PalmOS.h>
#include <Sonyclie.h>
#include "pa1lib.h"
#include "init_pa1lib.h"
void *sndStateOnFuncP = NULL;
void *sndStateOffFuncP = NULL;
#define SndStateOn(a,b,c) if (sndStateOnFuncP)((sndStateOnType)(sndStateOnFuncP))(a, b, c);
#define SndStateOff(a) if (sndStateOffFuncP)((sndStateOffType)(sndStateOffFuncP))(a);
void Pa1libInit() {
Pa1Lib_Open();
// Doesn't work on T4xx and T6xx series ?
FtrGet(sonySysFtrCreatorSystem, sonySysFtrNumSystemAOutSndStateOnHandlerP, (UInt32*) &sndStateOnFuncP);
FtrGet(sonySysFtrCreatorSystem, sonySysFtrNumSystemAOutSndStateOffHandlerP, (UInt32*) &sndStateOffFuncP);
SndStateOn(aOutSndKindSp, 31, 31);
SndStateOn(aOutSndKindHp, 31, 31);
Pa1Lib_devHpVolume(31, 31);
Pa1Lib_devSpVolume(31);
}
void Pa1libRelease() {
SndStateOff(aOutSndKindSp);
SndStateOff(aOutSndKindHp);
Pa1Lib_Close();
}
--- NEW FILE: init_pa1lib.h ---
#ifndef INIT_PA1LIB_H
#define INIT_PA1LIB_H
// 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 */
void Pa1libInit();
void Pa1libRelease();
#endif
--- NEW FILE: init_palmos.cpp ---
#include <PalmOS.h>
#include "globals.h"
#include "init_palmos.h"
static UInt16 autoOffDelay;
void PalmInit(UInt8 init) {
// set screen depth
UInt32 depth = 8;
WinScreenMode(winScreenModeSet, NULL, NULL, &depth, NULL);
if (init & INIT_AUTOOFF) {
autoOffDelay = SysSetAutoOffTime(0);
EvtResetAutoOffTimer();
}
}
void PalmRelease(UInt8 init) {
SysSetAutoOffTime(autoOffDelay);
EvtResetAutoOffTimer();
}
Err PalmHRInit(UInt32 depth) {
Err e;
UInt32 width = 320;
UInt32 height = 320;
Boolean color = true;
e = WinScreenMode (winScreenModeSet, &width, &height, &depth, &color);
if (!e) {
UInt32 attr;
WinScreenGetAttribute(winScreenDensity, &attr);
e = (attr != kDensityDouble);
}
return e;
}
void PalmHRRelease() {
// should i do something here ?
}
--- NEW FILE: init_palmos.h ---
#ifndef INIT_PALMOS_H
#define INIT_PALMOS_H
void PalmInit(UInt8 init);
void PalmRelease(UInt8 init);
Err PalmHRInit(UInt32 depth);
void PalmHRRelease();
#endif
--- NEW FILE: init_sony.cpp ---
#include <PalmOS.h>
#include <SonyClie.h>
#include "init_sony.h"
UInt16 SilkInit(UInt32 *retVersion) {
SonySysFtrSysInfoP sonySysFtrSysInfoP;
UInt32 version;
UInt16 slkRefNum;
Err e;
// Sony HiRes+
if (!(e = FtrGet(sonySysFtrCreator, sonySysFtrNumSysInfoP, (UInt32*)&sonySysFtrSysInfoP))) {
if (sonySysFtrSysInfoP->libr & sonySysFtrSysInfoLibrSilk) {
if ((e = SysLibFind(sonySysLibNameSilk, &slkRefNum)))
if (e == sysErrLibNotFound)
e = SysLibLoad(sonySysFileTSilkLib, sonySysFileCSilkLib, &slkRefNum);
if (!e) {
e = FtrGet(sonySysFtrCreator, sonySysFtrNumVskVersion, &version);
if (e) {
// v1 = NR
e = SilkLibOpen(slkRefNum);
if(!e) version = vskVersionNum1;
} else {
// v2 = NX/NZ
// v3 = UX...
e = VskOpen(slkRefNum);
}
}
} else
e = sysErrLibNotFound;
}
if (e) {
version = 0;
slkRefNum = sysInvalidRefNum;
}
*retVersion = version;
return slkRefNum;
}
void SilkRelease(UInt16 slkRefNum) {
if (slkRefNum != sysInvalidRefNum)
SilkLibClose(slkRefNum);
}
UInt16 SonyHRInit(UInt32 depth) {
SonySysFtrSysInfoP sonySysFtrSysInfoP;
Err e;
UInt16 HRrefNum;
// test if sonyHR is present
if (!(e = FtrGet(sonySysFtrCreator, sonySysFtrNumSysInfoP, (UInt32*)&sonySysFtrSysInfoP))) {
if (sonySysFtrSysInfoP->libr & sonySysFtrSysInfoLibrHR) { // HR available
if ((e = SysLibFind(sonySysLibNameHR, &HRrefNum)))
if (e == sysErrLibNotFound) // can't find lib
e = SysLibLoad( 'libr', sonySysFileCHRLib, &HRrefNum);
// Now we can use HR lib. Executes Open library.
if (!e) e = HROpen(HRrefNum);
}
}
if (e) HRrefNum = sysInvalidRefNum;
if (HRrefNum != sysInvalidRefNum) {
UInt32 width = hrWidth;
UInt32 height = hrHeight;
Boolean color = true;
e = HRWinScreenMode(HRrefNum, winScreenModeSet, &width, &height, &depth, &color);
// error ? release and return an invalid reference number
if (e) {
SonyHRRelease(HRrefNum);
HRrefNum = sysInvalidRefNum;
}
}
return HRrefNum;
}
void SonyHRRelease(UInt16 HRrefNum) {
if (HRrefNum != sysInvalidRefNum) {
HRClose(HRrefNum);
//SysLibRemove(gVars->HRrefNum); // never call this !!
}
}
--- NEW FILE: init_sony.h ---
#ifndef INIT_SONY_H
#define INIT_SONY_H
UInt16 SilkInit(UInt32 *retVersion);
void SilkRelease(UInt16 slkRefNum);
UInt16 SonyHRInit(UInt32 depth);
void SonyHRRelease(UInt16 HRrefNum);
#endif
More information about the Scummvm-git-logs
mailing list