123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- /*
- * 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"
- #include "emu.h"
- #include "menu.h"
- #include "mp3.h"
- #include "../common/menu.h"
- #include "../common/emu.h"
- #include "../common/config.h"
- #include "../libpicofe/lprintf.h"
- #ifdef GPROF
- #include <pspprof.h>
- #endif
- #ifdef GCOV
- #include <stdio.h>
- #include <stdlib.h>
- void dummy(void)
- {
- engineState = atoi(rom_fname_reload);
- setbuf(NULL, NULL);
- getenv(NULL);
- }
- #endif
- int pico_main(void)
- {
- psp_init();
- emu_prepareDefaultConfig();
- emu_ReadConfig(0, 0);
- config_readlrom(PicoConfigFile);
- emu_Init();
- menu_init();
- // moved to emu_Loop(), after CPU clock change..
- //mp3_init();
- engineState = PGS_Menu;
- for (;;)
- {
- 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_reload_rom(rom_fname_reload)) {
- engineState = PGS_Running;
- if (mp3_last_error != 0)
- engineState = PGS_Menu; // send to menu to display mp3 error
- } else {
- lprintf("PGS_ReloadRom == 0\n");
- engineState = PGS_Menu;
- }
- 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:
- 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:
- goto endloop;
- default:
- lprintf("engine got into unknown state (%i), exitting\n", engineState);
- goto endloop;
- }
- }
- endloop:
- mp3_deinit();
- emu_Deinit();
- #ifdef GPROF
- gprof_cleanup();
- #endif
- #ifndef GCOV
- psp_finish();
- #endif
- return 0;
- }
|