X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=platform%2Fpsp%2Fmain.c;h=989ce5c738c1bfb300256b7e53f21ba59de0db14;hb=ee3c39efd2cf51cd654b6240f6fb595673f10f45;hp=4f515169c32574fd0b67f49e18e20744323d5458;hpb=4b167c12c7ebb23223c347793a2b4d5e9712e384;p=picodrive.git diff --git a/platform/psp/main.c b/platform/psp/main.c index 4f51516..989ce5c 100644 --- a/platform/psp/main.c +++ b/platform/psp/main.c @@ -1,23 +1,49 @@ +/* + * PicoDrive + * (C) notaz, 2007,2008 + * + * This work is licensed under the terms of MAME license. + * See COPYING file in the top-level directory. + */ + +#include #include "psp.h" #include "emu.h" #include "menu.h" #include "mp3.h" #include "../common/menu.h" #include "../common/emu.h" +#include "../common/config.h" #include "../common/lprintf.h" -#include "version.h" -int main() +#ifdef GPROF +#include +#endif + +#ifdef GCOV +#include +#include + +void dummy(void) { - int mp3_ret; + engineState = atoi(rom_fname_reload); + setbuf(NULL, NULL); + getenv(NULL); +} +#endif - lprintf("\nPicoDrive v" VERSION " " __DATE__ " " __TIME__ "\n"); +int pico_main(void) +{ psp_init(); + emu_prepareDefaultConfig(); emu_ReadConfig(0, 0); + config_readlrom(PicoConfigFile); + emu_Init(); menu_init(); - mp3_ret = mp3_init(); + // moved to emu_Loop(), after CPU clock change.. + //mp3_init(); engineState = PGS_Menu; @@ -26,11 +52,16 @@ int main() switch (engineState) { case PGS_Menu: +#ifndef GPROF menu_loop(); +#else + 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 @@ -40,11 +71,32 @@ int main() } break; + case PGS_Suspending: + 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 break; case PGS_Quit: @@ -58,9 +110,14 @@ int main() endloop: - if (mp3_ret == 0) mp3_deinit(); + mp3_deinit(); emu_Deinit(); +#ifdef GPROF + gprof_cleanup(); +#endif +#ifndef GCOV psp_finish(); +#endif return 0; }