diff options
-rw-r--r-- | backends/ps2/systemps2.cpp | 151 | ||||
-rw-r--r-- | backends/ps2/systemps2.h | 1 | ||||
-rw-r--r-- | common/config-manager.cpp | 6 |
3 files changed, 46 insertions, 112 deletions
diff --git a/backends/ps2/systemps2.cpp b/backends/ps2/systemps2.cpp index 5437e5b324..df16990032 100644 --- a/backends/ps2/systemps2.cpp +++ b/backends/ps2/systemps2.cpp @@ -471,76 +471,6 @@ void OSystem_PS2::soundThread(void) { ExitThread(); } -/*const char *irxModules[] = { - "rom0:SIO2MAN", - "rom0:MCMAN", - "rom0:MCSERV", - "rom0:PADMAN", - "rom0:LIBSD", -#ifndef USE_PS2LINK - IRX_PREFIX "IOMANX.IRX" IRX_SUFFIX, -#endif - IRX_PREFIX "FILEXIO.IRX" IRX_SUFFIX, - IRX_PREFIX "CODYVDFS.IRX" IRX_SUFFIX, - IRX_PREFIX "SJPCM.IRX" IRX_SUFFIX, -};*/ - -void OSystem_PS2::loadModules(void) { - - //_usbMassConnected = _usbMassLoaded = _useMouse = _useKbd = _useHdd = false; - //static char hddarg[] = "-o" "\0" "4" "\0" "-n" "\0" "20"; - //static char pfsarg[] = "-m" "\0" "2" "\0" "-o" "\0" "16" "\0" "-n" "\0" "40" /*"\0" "-debug"*/; -#if 0 - int res; - for (int i = 0; i < ARRAYSIZE(irxModules); i++) { - if ((res = SifLoadModule(irxModules[i], 0, NULL)) < 0) { - msgPrintf(FOREVER, "Unable to load module %s, Error %d", irxModules[i], res); - _screen->wantAnim(false); - updateScreen(); - SleepThread(); - } - } - - // now try to load optional IRXs - if ((res = SifLoadModule(IRX_PREFIX "USBD.IRX" IRX_SUFFIX, 0, NULL)) >= 0) { - if ((res = SifLoadModule(IRX_PREFIX "PS2MOUSE.IRX" IRX_SUFFIX, 0, NULL)) < 0) - sioprintf("Cannot load module: PS2MOUSE.IRX (%d)", res); - else - _useMouse = true; - if ((res = SifLoadModule(IRX_PREFIX "RPCKBD.IRX" IRX_SUFFIX, 0, NULL)) < 0) - sioprintf("Cannot load module: RPCKBD.IRX (%d)", res); - else - _useKbd = true; - if ((res = SifLoadModule(IRX_PREFIX "USB_MASS.IRX" IRX_SUFFIX, 0, NULL)) < 0) - sioprintf("Cannot load module: USB_MASS.IRX (%d)", res); - else - _usbMassLoaded = true; - } - - if ((res = fileXioInit()) < 0) { - msgPrintf(FOREVER, "FXIO Init failed: %d", res); - quit(); - } - - if ((res = SifLoadModule(IRX_PREFIX "PS2DEV9.IRX" IRX_SUFFIX, 0, NULL)) < 0) - sioprintf("Cannot load module: PS2DEV9.IRX (%d)", res); - else if ((res = SifLoadModule(IRX_PREFIX "PS2ATAD.IRX" IRX_SUFFIX, 0, NULL)) < 0) - sioprintf("Cannot load module: PS2ATAD.IRX (%d)", res); - else if ((res = SifLoadModule(IRX_PREFIX "PS2HDD.IRX" IRX_SUFFIX, sizeof(hddarg), hddarg)) < 0) - sioprintf("Cannot load module: PS2HDD.IRX (%d)", res); - else if ((res = SifLoadModule(IRX_PREFIX "PS2FS.IRX" IRX_SUFFIX, sizeof(pfsarg), pfsarg)) < 0) - sioprintf("Cannot load module: PS2FS.IRX (%d)", res); - else { - if ((res = SifLoadModule(IRX_PREFIX "POWEROFF.IRX" IRX_SUFFIX, 0, NULL)) < 0) - sioprintf("Cannot load module: POWEROFF.IRX (%d)", res); - if ((hddCheckPresent() >= 0) && (hddCheckFormatted() >= 0)) - _useHdd = true; - } - - sioprintf("Modules: UsbMouse %sloaded, UsbKbd %sloaded, UsbMass %sloaded, HDD %sloaded.", _useMouse ? "" : "not ", _useKbd ? "" : "not ", _usbMassLoaded ? "" : "not ", _useHdd ? "" : "not "); -#endif -} - bool OSystem_PS2::hddPresent(void) { return _useHdd; } @@ -807,47 +737,48 @@ void OSystem_PS2::powerOffCallback(void) { } void OSystem_PS2::quit(void) { -#ifdef USE_PS2LINK - printf("OSystem_PS2::quit\n"); - SleepThread(); -#endif - sioprintf("OSystem_PS2::quit"); - if (_useHdd) { - driveStandby(); - fio.umount("pfs0:"); + if (_bootDevice == HOST) { + printf("OSystem_PS2::quit\n"); + SleepThread(); + } else { + sioprintf("OSystem_PS2::quit"); + if (_useHdd) { + driveStandby(); + fio.umount("pfs0:"); + } + clearSoundCallback(); + setTimerCallback(NULL, 0); + _screen->wantAnim(false); + _systemQuit = true; + ee_thread_t statSound, statTimer; + do { // wait until both threads called ExitThread() + ReferThreadStatus(_timerTid, &statTimer); + ReferThreadStatus(_soundTid, &statSound); + } while ((statSound.status != 0x10) || (statTimer.status != 0x10)); + DeleteThread(_timerTid); + DeleteThread(_soundTid); + free(_timerStack); + free(_soundStack); + DisableIntc(INT_TIMER0); + RemoveIntcHandler(INT_TIMER0, _intrId); + + _saveManager->quit(); + _screen->quit(); + + padEnd(); // stop pad library + cdvdInit(CDVD_EXIT); + sioprintf("resetting iop"); + SifIopReset(NULL, 0); + SifExitRpc(); + while (!SifIopSync()); + SifInitRpc(0); + cdvdExit(); + SifExitRpc(); + FlushCache(0); + SifLoadFileExit(); + sioprintf("Restarting ScummVM"); + LoadExecPS2("cdrom0:\\SCUMMVM.ELF", 0, NULL); // resets the console and executes the ELF } - clearSoundCallback(); - setTimerCallback(NULL, 0); - _screen->wantAnim(false); - _systemQuit = true; - ee_thread_t statSound, statTimer; - do { // wait until both threads called ExitThread() - ReferThreadStatus(_timerTid, &statTimer); - ReferThreadStatus(_soundTid, &statSound); - } while ((statSound.status != 0x10) || (statTimer.status != 0x10)); - DeleteThread(_timerTid); - DeleteThread(_soundTid); - free(_timerStack); - free(_soundStack); - DisableIntc(INT_TIMER0); - RemoveIntcHandler(INT_TIMER0, _intrId); - - _saveManager->quit(); - _screen->quit(); - - padEnd(); // stop pad library - cdvdInit(CDVD_EXIT); - sioprintf("resetting iop"); - SifIopReset(NULL, 0); - SifExitRpc(); - while (!SifIopSync()); - SifInitRpc(0); - cdvdExit(); - SifExitRpc(); - FlushCache(0); - SifLoadFileExit(); - sioprintf("Restarting ScummVM"); - LoadExecPS2("cdrom0:\\SCUMMVM.ELF", 0, NULL); // resets the console and executes the ELF } void OSystem_PS2::makeConfigPath(char *dest) { diff --git a/backends/ps2/systemps2.h b/backends/ps2/systemps2.h index acfefa3483..4c51e78c66 100644 --- a/backends/ps2/systemps2.h +++ b/backends/ps2/systemps2.h @@ -121,7 +121,6 @@ private: void initTimer(void); void readRtcTime(void); - void loadModules(void); bool _mouseVisible; bool _useMouse, _useKbd, _useHdd, _usbMassLoaded, _usbMassConnected; diff --git a/common/config-manager.cpp b/common/config-manager.cpp index 2b620f53e5..82c805b663 100644 --- a/common/config-manager.cpp +++ b/common/config-manager.cpp @@ -29,6 +29,10 @@ DECLARE_SINGLETON(Common::ConfigManager); +#ifdef __PLAYSTATION2__ +#include "backends/ps2/systemps2.h" +#endif + #if defined(UNIX) #ifdef MACOSX #define DEFAULT_CONFIG_FILE "Library/Preferences/ScummVM Preferences" @@ -98,7 +102,7 @@ void ConfigManager::loadDefaultConfigFile() { #elif defined(PALMOS_MODE) strcpy(configFile,"/PALM/Programs/ScummVM/" DEFAULT_CONFIG_FILE); #elif defined(__PLAYSTATION2__) - strcpy(configFile, "mc0:ScummVM/" DEFAULT_CONFIG_FILE); + ((OSystem_PS2*)g_system)->makeConfigPath(configFile); #elif defined(__PSP__) strcpy(configFile, "ms0:/" DEFAULT_CONFIG_FILE); #elif defined (__SYMBIAN32__) |