mirror of
				https://github.com/RaySollium99/picodrive.git
				synced 2025-10-28 05:48:52 +01:00 
			
		
		
		
	 ca482e5de8
			
		
	
	
		ca482e5de8
		
	
	
	
	
		
			
			git-svn-id: file:///home/notaz/opt/svn/PicoDrive@569 be3aeb3a-fb24-0410-a615-afba39da0efa
		
			
				
	
	
		
			121 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| // (c) Copyright 2007 notaz, All rights reserved.
 | |
| // Free for non-commercial use.
 | |
| 
 | |
| // For commercial use, separate licencing terms must be obtained.
 | |
| 
 | |
| #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 "../common/lprintf.h"
 | |
| 
 | |
| #ifdef GPROF
 | |
| #include <pspprof.h>
 | |
| #endif
 | |
| 
 | |
| #ifdef GCOV
 | |
| #include <stdio.h>
 | |
| #include <stdlib.h>
 | |
| 
 | |
| void dummy(void)
 | |
| {
 | |
| 	engineState = atoi(romFileName);
 | |
| 	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(romFileName, loadedRomFName);
 | |
| 				engineState = PGS_ReloadRom;
 | |
| #endif
 | |
| 				break;
 | |
| 
 | |
| 			case PGS_ReloadRom:
 | |
| 				if (emu_ReloadRom(romFileName)) {
 | |
| 					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;
 | |
| 				}
 | |
| 				emu_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;
 | |
| }
 | |
| 
 |