diff options
author | Chris Apers | 2004-11-09 10:45:47 +0000 |
---|---|---|
committer | Chris Apers | 2004-11-09 10:45:47 +0000 |
commit | 618971dd2fbee8b075b7c888f3abdff8aba47897 (patch) | |
tree | 50350983581f5ba727b372d6dca7b611dcef3994 /backends/PalmOS/Src/init_sony.cpp | |
parent | 463544099832fd8af37b813afc7c3fffc96e78aa (diff) | |
download | scummvm-rg350-618971dd2fbee8b075b7c888f3abdff8aba47897.tar.gz scummvm-rg350-618971dd2fbee8b075b7c888f3abdff8aba47897.tar.bz2 scummvm-rg350-618971dd2fbee8b075b7c888f3abdff8aba47897.zip |
Gathered common functions into new source files
svn-id: r15743
Diffstat (limited to 'backends/PalmOS/Src/init_sony.cpp')
-rw-r--r-- | backends/PalmOS/Src/init_sony.cpp | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/backends/PalmOS/Src/init_sony.cpp b/backends/PalmOS/Src/init_sony.cpp new file mode 100644 index 0000000000..bdf83e2cf1 --- /dev/null +++ b/backends/PalmOS/Src/init_sony.cpp @@ -0,0 +1,91 @@ +#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 !! + } +} |