recognize the MED ssf2 header
[picodrive.git] / platform / psp / main.c
index dbe20b7..989ce5c 100644 (file)
@@ -1,7 +1,10 @@
-// (c) Copyright 2007 notaz, All rights reserved.
-// Free for non-commercial use.
-
-// For commercial use, separate licencing terms must be obtained.
+/*
+ * PicoDrive
+ * (C) notaz, 2007,2008
+ *
+ * This work is licensed under the terms of MAME license.
+ * See COPYING file in the top-level directory.
+ */
 
 #include <string.h>
 #include "psp.h"
@@ -10,8 +13,8 @@
 #include "mp3.h"
 #include "../common/menu.h"
 #include "../common/emu.h"
+#include "../common/config.h"
 #include "../common/lprintf.h"
-#include "version.h"
 
 #ifdef GPROF
 #include <pspprof.h>
@@ -23,7 +26,7 @@
 
 void dummy(void)
 {
-       engineState = atoi(romFileName);
+       engineState = atoi(rom_fname_reload);
        setbuf(NULL, NULL);
        getenv(NULL);
 }
@@ -31,9 +34,12 @@ void dummy(void)
 
 int pico_main(void)
 {
-       lprintf("\nPicoDrive v" VERSION " " __DATE__ " " __TIME__ "\n");
        psp_init();
+
+       emu_prepareDefaultConfig();
        emu_ReadConfig(0, 0);
+       config_readlrom(PicoConfigFile);
+
        emu_Init();
        menu_init();
        // moved to emu_Loop(), after CPU clock change..
@@ -49,13 +55,13 @@ int pico_main(void)
 #ifndef GPROF
                                menu_loop();
 #else
-                               strcpy(romFileName, currentConfig.lastRomFile);
+                               strcpy(rom_fname_reload, rom_fname_loaded);
                                engineState = PGS_ReloadRom;
 #endif
                                break;
 
                        case PGS_ReloadRom:
-                               if (emu_ReloadRom()) {
+                               if (emu_reload_rom(rom_fname_reload)) {
                                        engineState = PGS_Running;
                                        if (mp3_last_error != 0)
                                                engineState = PGS_Menu; // send to menu to display mp3 error
@@ -66,14 +72,28 @@ int pico_main(void)
                                break;
 
                        case PGS_Suspending:
-                               psp_wait_suspend();
+                               while (engineState == PGS_Suspending)
+                                       psp_wait_suspend();
+                               break;
+
+                       case PGS_SuspendWake:
+                               psp_unhandled_suspend = 0;
+                               psp_resume_suspend();
+                               emu_HandleResume();
+                               engineState = engineStateSuspend;
                                break;
 
                        case PGS_RestartRun:
                                engineState = PGS_Running;
 
                        case PGS_Running:
-                               emu_Loop();
+                               if (psp_unhandled_suspend) {
+                                       psp_unhandled_suspend = 0;
+                                       psp_resume_suspend();
+                                       emu_HandleResume();
+                                       break;
+                               }
+                               pemu_loop();
 #ifdef GPROF
                                goto endloop;
 #endif