#elif defined(__GIZ__)\r
#include "../gizmondo/giz.h"\r
#define SCREEN_WIDTH 321\r
- #define SCREEN_BUFFER giz_screen // ?\r
+ #define SCREEN_BUFFER giz_screen\r
+#elif defined(PSP)\r
+ #include "../psp/psp.h"\r
+ #define SCREEN_WIDTH 512\r
+ #define SCREEN_BUFFER psp_screen\r
#endif\r
\r
char *PicoConfigFile = "picoconfig.bin";\r
currentConfig_t currentConfig;\r
-unsigned char *rom_data = NULL;\r
+int rom_loaded = 0;\r
char noticeMsg[64];\r
int state_slot = 0;\r
int config_slot = 0, config_slot_current = 0;\r
}\r
}\r
\r
+/* check if the name begins with BIOS name */\r
+static int emu_isBios(const char *name)\r
+{\r
+ int i;\r
+ for (i = 0; i < sizeof(biosfiles_us)/sizeof(biosfiles_us[0]); i++)\r
+ if (strstr(name, biosfiles_us[i]) != NULL) return 1;\r
+ for (i = 0; i < sizeof(biosfiles_eu)/sizeof(biosfiles_eu[0]); i++)\r
+ if (strstr(name, biosfiles_eu[i]) != NULL) return 1;\r
+ for (i = 0; i < sizeof(biosfiles_jp)/sizeof(biosfiles_jp[0]); i++)\r
+ if (strstr(name, biosfiles_jp[i]) != NULL) return 1;\r
+ return 0;\r
+}\r
+\r
/* checks if romFileName points to valid MegaCD image\r
* if so, checks for suitable BIOS */\r
int emu_cdCheck(int *pregion)\r
{\r
unsigned int rom_size = 0;\r
char *used_rom_name = romFileName;\r
+ unsigned char *rom_data = NULL;\r
char ext[5];\r
pm_file *rom;\r
int ret, cd_state, cd_region, cfg_loaded = 0;\r
get_ext(romFileName, ext);\r
\r
// detect wrong extensions\r
- if(!strcmp(ext, ".srm") || !strcmp(ext, "s.gz") || !strcmp(ext, ".mds")) { // s.gz ~ .mds.gz\r
+ if (!strcmp(ext, ".srm") || !strcmp(ext, "s.gz") || !strcmp(ext, ".mds")) { // s.gz ~ .mds.gz\r
sprintf(menuErrorMsg, "Not a ROM selected.");\r
return 0;\r
}\r
PicoPatchUnload();\r
\r
// check for movie file\r
- if(movie_data) {\r
+ if (movie_data) {\r
free(movie_data);\r
movie_data = 0;\r
}\r
- if(!strcmp(ext, ".gmv")) {\r
+ if (!strcmp(ext, ".gmv")) {\r
// check for both gmv and rom\r
int dummy;\r
FILE *movie_file = fopen(romFileName, "rb");\r
}\r
\r
rom = pm_open(used_rom_name);\r
- if(!rom) {\r
+ if (!rom) {\r
sprintf(menuErrorMsg, "Failed to open rom.");\r
return 0;\r
}\r
\r
- menu_romload_prepare(used_rom_name);\r
+ menu_romload_prepare(used_rom_name); // also CD load\r
\r
- if(rom_data) {\r
- free(rom_data);\r
- rom_data = 0;\r
- rom_size = 0;\r
- }\r
+ PicoCartUnload();\r
+ rom_loaded = 0;\r
\r
- if( (ret = PicoCartLoad(rom, &rom_data, &rom_size)) ) {\r
+ if ( (ret = PicoCartLoad(rom, &rom_data, &rom_size)) ) {\r
sprintf(menuErrorMsg, "PicoCartLoad() failed.");\r
lprintf("%s\n", menuErrorMsg);\r
pm_close(rom);\r
return 0;\r
}\r
pm_close(rom);\r
- menu_romload_end();\r
\r
// detect wrong files (Pico crashes on very small files), also see if ROM EP is good\r
- if(rom_size <= 0x200 || strncmp((char *)rom_data, "Pico", 4) == 0 ||\r
+ if (rom_size <= 0x200 || strncmp((char *)rom_data, "Pico", 4) == 0 ||\r
((*(unsigned char *)(rom_data+4)<<16)|(*(unsigned short *)(rom_data+6))) >= (int)rom_size) {\r
if (rom_data) free(rom_data);\r
- rom_data = 0;\r
sprintf(menuErrorMsg, "Not a ROM selected.");\r
+ menu_romload_end();\r
return 0;\r
}\r
\r
}\r
\r
lprintf("PicoCartInsert(%p, %d);\n", rom_data, rom_size);\r
- if(PicoCartInsert(rom_data, rom_size)) {\r
+ if (PicoCartInsert(rom_data, rom_size)) {\r
sprintf(menuErrorMsg, "Failed to load ROM.");\r
+ menu_romload_end();\r
return 0;\r
}\r
\r
if (ret != 0) {\r
sprintf(menuErrorMsg, "Insert_CD() failed, invalid CD image?");\r
lprintf("%s\n", menuErrorMsg);\r
+ menu_romload_end();\r
return 0;\r
}\r
}\r
\r
- // emu_ReadConfig() might have messed currentConfig.lastRomFile\r
- strncpy(currentConfig.lastRomFile, romFileName, sizeof(currentConfig.lastRomFile)-1);\r
- currentConfig.lastRomFile[sizeof(currentConfig.lastRomFile)-1] = 0;\r
+ menu_romload_end();\r
+\r
+ if (!emu_isBios(romFileName))\r
+ {\r
+ // emu_ReadConfig() might have messed currentConfig.lastRomFile\r
+ strncpy(currentConfig.lastRomFile, romFileName, sizeof(currentConfig.lastRomFile)-1);\r
+ currentConfig.lastRomFile[sizeof(currentConfig.lastRomFile)-1] = 0;\r
+ }\r
\r
if (PicoPatches) {\r
PicoPatchPrepare();\r
emu_noticeMsgUpdated();\r
\r
// load SRAM for this ROM\r
- if(currentConfig.EmuOpt & 1)\r
+ if (currentConfig.EmuOpt & 1)\r
emu_SaveLoadGame(1, 1);\r
\r
+ rom_loaded = 1;\r
return 1;\r
}\r
\r
//scaling_update();\r
// some sanity checks\r
if (currentConfig.CPUclock < 10 || currentConfig.CPUclock > 4096) currentConfig.CPUclock = 200;\r
+#ifdef PSP\r
+ if (currentConfig.gamma < -4 || currentConfig.gamma > 16) currentConfig.gamma = 0;\r
+#else\r
if (currentConfig.gamma < 10 || currentConfig.gamma > 300) currentConfig.gamma = 100;\r
+#endif\r
if (currentConfig.volume < 0 || currentConfig.volume > 99) currentConfig.volume = 50;\r
#ifdef __GP2X__\r
// if volume keys are unbound, bind them to volume control\r
\r
lprintf("saveLoad (%i, %i): %s\n", load, sram, saveFname);\r
\r
- if(sram) {\r
+ if (sram)\r
+ {\r
FILE *sramFile;\r
int sram_size;\r
unsigned char *sram_data;\r
else\r
{\r
void *PmovFile = NULL;\r
- if (strcmp(saveFname + strlen(saveFname) - 3, ".gz") == 0) {\r
+ if (strcmp(saveFname + strlen(saveFname) - 3, ".gz") == 0)\r
+ {\r
if( (PmovFile = gzopen(saveFname, load ? "rb" : "wb")) ) {\r
emu_setSaveStateCbs(1);\r
- if(!load) gzsetparams(PmovFile, 9, Z_DEFAULT_STRATEGY);\r
+ if (!load) gzsetparams(PmovFile, 9, Z_DEFAULT_STRATEGY);\r
}\r
}\r
else\r