rom_data -> rom_loaded

git-svn-id: file:///home/notaz/opt/svn/PicoDrive/platform@372 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
notaz 2008-03-07 19:03:06 +00:00
parent bcf6c34976
commit 144a28a068
4 changed files with 46 additions and 48 deletions

View file

@ -35,7 +35,7 @@
char *PicoConfigFile = "picoconfig.bin";
currentConfig_t currentConfig;
unsigned char *rom_data = NULL;
int rom_loaded = 0;
char noticeMsg[64];
int state_slot = 0;
int config_slot = 0, config_slot_current = 0;
@ -193,6 +193,7 @@ int emu_ReloadRom(void)
{
unsigned int rom_size = 0;
char *used_rom_name = romFileName;
unsigned char *rom_data = NULL;
char ext[5];
pm_file *rom;
int ret, cd_state, cd_region, cfg_loaded = 0;
@ -202,7 +203,7 @@ int emu_ReloadRom(void)
get_ext(romFileName, ext);
// detect wrong extensions
if(!strcmp(ext, ".srm") || !strcmp(ext, "s.gz") || !strcmp(ext, ".mds")) { // s.gz ~ .mds.gz
if (!strcmp(ext, ".srm") || !strcmp(ext, "s.gz") || !strcmp(ext, ".mds")) { // s.gz ~ .mds.gz
sprintf(menuErrorMsg, "Not a ROM selected.");
return 0;
}
@ -210,11 +211,11 @@ int emu_ReloadRom(void)
PicoPatchUnload();
// check for movie file
if(movie_data) {
if (movie_data) {
free(movie_data);
movie_data = 0;
}
if(!strcmp(ext, ".gmv")) {
if (!strcmp(ext, ".gmv")) {
// check for both gmv and rom
int dummy;
FILE *movie_file = fopen(romFileName, "rb");
@ -293,20 +294,17 @@ int emu_ReloadRom(void)
}
rom = pm_open(used_rom_name);
if(!rom) {
if (!rom) {
sprintf(menuErrorMsg, "Failed to open rom.");
return 0;
}
menu_romload_prepare(used_rom_name); // also CD load
if(rom_data) {
free(rom_data);
rom_data = 0;
rom_size = 0;
}
PicoCartUnload();
rom_loaded = 0;
if( (ret = PicoCartLoad(rom, &rom_data, &rom_size)) ) {
if ( (ret = PicoCartLoad(rom, &rom_data, &rom_size)) ) {
sprintf(menuErrorMsg, "PicoCartLoad() failed.");
lprintf("%s\n", menuErrorMsg);
pm_close(rom);
@ -316,10 +314,9 @@ int emu_ReloadRom(void)
pm_close(rom);
// detect wrong files (Pico crashes on very small files), also see if ROM EP is good
if(rom_size <= 0x200 || strncmp((char *)rom_data, "Pico", 4) == 0 ||
if (rom_size <= 0x200 || strncmp((char *)rom_data, "Pico", 4) == 0 ||
((*(unsigned char *)(rom_data+4)<<16)|(*(unsigned short *)(rom_data+6))) >= (int)rom_size) {
if (rom_data) free(rom_data);
rom_data = 0;
sprintf(menuErrorMsg, "Not a ROM selected.");
menu_romload_end();
return 0;
@ -332,7 +329,7 @@ int emu_ReloadRom(void)
}
lprintf("PicoCartInsert(%p, %d);\n", rom_data, rom_size);
if(PicoCartInsert(rom_data, rom_size)) {
if (PicoCartInsert(rom_data, rom_size)) {
sprintf(menuErrorMsg, "Failed to load ROM.");
menu_romload_end();
return 0;
@ -395,9 +392,10 @@ int emu_ReloadRom(void)
emu_noticeMsgUpdated();
// load SRAM for this ROM
if(currentConfig.EmuOpt & 1)
if (currentConfig.EmuOpt & 1)
emu_SaveLoadGame(1, 1);
rom_loaded = 1;
return 1;
}

View file

@ -29,7 +29,7 @@ typedef struct {
extern currentConfig_t currentConfig;
extern char *PicoConfigFile;
extern unsigned char *rom_data;
extern int rom_loaded;
extern char noticeMsg[64];
extern int state_slot;
extern int config_slot, config_slot_current;

View file

@ -169,7 +169,7 @@ void menu_romload_prepare(const char *rom_name)
const char *p = rom_name + strlen(rom_name);
while (p > rom_name && *p != '/') p--;
if (rom_data) gp2x_pd_clone_buffer2();
if (rom_loaded) gp2x_pd_clone_buffer2();
else memset(gp2x_screen, 0, 320*240*2);
smalltext_out16(1, 1, "Loading", 0xffff);
@ -215,7 +215,7 @@ static void draw_dirlist(char *curdir, struct dirent **namelist, int n, int sel)
gp2x_pd_clone_buffer2();
if (rom_data == NULL) {
if (!rom_loaded) {
menu_darken_bg(gp2x_screen, 320*240, 0);
}
@ -860,7 +860,7 @@ static void kc_sel_loop(void)
case 1: key_config_loop(ctrl_actions, is_6button ? 12 : 8, 1); return;
case 2: key_config_loop(emuctrl_actions,
sizeof(emuctrl_actions)/sizeof(emuctrl_actions[0]), -1); return;
case 3: if (rom_data == NULL) emu_WriteConfig(0); return;
case 3: if (!rom_loaded) emu_WriteConfig(0); return;
default: return;
}
}
@ -1294,7 +1294,7 @@ static int menu_loop_options(void)
currentConfig.PsndRate = PsndRate;
currentConfig.PicoRegion = PicoRegionOverride;
me_enable(opt_entries, OPT_ENTRY_COUNT, MA_OPT_SAVECFG_GAME, rom_data != NULL);
me_enable(opt_entries, OPT_ENTRY_COUNT, MA_OPT_SAVECFG_GAME, rom_loaded);
me_enable(opt_entries, OPT_ENTRY_COUNT, MA_OPT_LOADCFG, config_slot != config_slot_current);
menu_sel_max = me_count_enabled(opt_entries, OPT_ENTRY_COUNT) - 1;
if (menu_sel > menu_sel_max) menu_sel = menu_sel_max;
@ -1485,10 +1485,10 @@ static void menu_loop_root(void)
int ret, menu_sel_max;
unsigned long inp = 0;
me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_RESUME_GAME, rom_data != NULL);
me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_SAVE_STATE, rom_data != NULL);
me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_LOAD_STATE, rom_data != NULL);
me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_RESET_GAME, rom_data != NULL);
me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_RESUME_GAME, rom_loaded);
me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_SAVE_STATE, rom_loaded);
me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_LOAD_STATE, rom_loaded);
me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_RESET_GAME, rom_loaded);
me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_PATCHES, PicoPatches != NULL);
menu_sel_max = me_count_enabled(main_entries, MAIN_ENTRY_COUNT) - 1;
@ -1506,7 +1506,7 @@ static void menu_loop_root(void)
if(inp & GP2X_DOWN) { menu_sel++; if (menu_sel > menu_sel_max) menu_sel = 0; }
if((inp & (GP2X_L|GP2X_R)) == (GP2X_L|GP2X_R)) debug_menu_loop();
if(inp &(GP2X_SELECT|GP2X_X)){
if (rom_data) {
if (rom_loaded) {
while (gp2x_joystick_read(1) & (GP2X_SELECT|GP2X_X)) usleep(50*1000); // wait until select is released
engineState = PGS_Running;
break;
@ -1516,14 +1516,14 @@ static void menu_loop_root(void)
switch (me_index2id(main_entries, MAIN_ENTRY_COUNT, menu_sel))
{
case MA_MAIN_RESUME_GAME:
if (rom_data) {
if (rom_loaded) {
while (gp2x_joystick_read(1) & GP2X_B) usleep(50*1000);
engineState = PGS_Running;
return;
}
break;
case MA_MAIN_SAVE_STATE:
if (rom_data) {
if (rom_loaded) {
if(savestate_menu_loop(0))
continue;
engineState = PGS_Running;
@ -1531,7 +1531,7 @@ static void menu_loop_root(void)
}
break;
case MA_MAIN_LOAD_STATE:
if (rom_data) {
if (rom_loaded) {
if(savestate_menu_loop(1))
continue;
engineState = PGS_Running;
@ -1539,7 +1539,7 @@ static void menu_loop_root(void)
}
break;
case MA_MAIN_RESET_GAME:
if (rom_data) {
if (rom_loaded) {
emu_ResetGame();
engineState = PGS_Running;
return;
@ -1582,7 +1582,7 @@ static void menu_loop_root(void)
engineState = PGS_Quit;
return;
case MA_MAIN_PATCHES:
if (rom_data && PicoPatches) {
if (rom_loaded && PicoPatches) {
patches_menu_loop();
PicoPatchApply();
strcpy(menuErrorMsg, "Patches applied");
@ -1641,7 +1641,7 @@ static void menu_prepare_bg(int use_game_bg)
static void menu_gfx_prepare(void)
{
menu_prepare_bg(rom_data != NULL);
menu_prepare_bg(rom_loaded);
// switch to 16bpp
gp2x_video_changemode2(16);

View file

@ -153,7 +153,7 @@ void menu_romload_prepare(const char *rom_name)
while (p > rom_name && *p != '/') p--;
psp_video_switch_to_single();
if (rom_data) menu_draw_begin();
if (rom_loaded) menu_draw_begin();
else memset32_uncached(psp_screen, 0, 512*272*2/4);
smalltext_out16(1, 1, "Loading", 0xffff);
@ -206,7 +206,7 @@ static void draw_dirlist(char *curdir, struct my_dirent **namelist, int n, int s
menu_draw_begin();
if (rom_data == NULL) {
if (!rom_loaded) {
// menu_darken_bg(menu_screen, menu_screen, 321*240, 0);
}
@ -836,7 +836,7 @@ static void kc_sel_loop(void)
case 1: key_config_loop(ctrl_actions, is_6button ? 12 : 8, 1); return;
case 2: key_config_loop(emuctrl_actions,
sizeof(emuctrl_actions)/sizeof(emuctrl_actions[0]), -1); return;
case 3: if (rom_data == NULL) emu_WriteConfig(0); return;
case 3: if (!rom_loaded) emu_WriteConfig(0); return;
default: return;
}
}
@ -1051,7 +1051,7 @@ static void menu_opt3_preview(int is_32col)
{
void *oldstate = NULL;
if (rom_data == NULL || ((Pico.video.reg[12]&1)^1) != is_32col)
if (!rom_loaded || ((Pico.video.reg[12]&1)^1) != is_32col)
{
extern char bgdatac32_start[], bgdatac40_start[];
extern int bgdatac32_size, bgdatac40_size;
@ -1061,7 +1061,7 @@ static void menu_opt3_preview(int is_32col)
ret = uncompress((Bytef *)bg_buffer, &outsize, bgdata, insize);
if (ret == 0)
{
if (rom_data != NULL) oldstate = get_oldstate_for_preview();
if (rom_loaded) oldstate = get_oldstate_for_preview();
memcpy(Pico.vram, bg_buffer, sizeof(Pico.vram));
memcpy(Pico.cram, (char *)bg_buffer + 0x10000, 0x40*2);
memcpy(Pico.vsram, (char *)bg_buffer + 0x10080, 0x40*2);
@ -1415,7 +1415,7 @@ static int menu_loop_options(void)
currentConfig.PsndRate = PsndRate;
currentConfig.PicoRegion = PicoRegionOverride;
me_enable(opt_entries, OPT_ENTRY_COUNT, MA_OPT_SAVECFG_GAME, rom_data != NULL);
me_enable(opt_entries, OPT_ENTRY_COUNT, MA_OPT_SAVECFG_GAME, rom_loaded);
me_enable(opt_entries, OPT_ENTRY_COUNT, MA_OPT_LOADCFG, config_slot != config_slot_current);
menu_sel_max = me_count_enabled(opt_entries, OPT_ENTRY_COUNT) - 1;
if (menu_sel > menu_sel_max) menu_sel = menu_sel_max;
@ -1602,10 +1602,10 @@ static void menu_loop_root(void)
int ret, menu_sel_max;
unsigned long inp = 0;
me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_RESUME_GAME, rom_data != NULL);
me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_SAVE_STATE, rom_data != NULL);
me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_LOAD_STATE, rom_data != NULL);
me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_RESET_GAME, rom_data != NULL);
me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_RESUME_GAME, rom_loaded);
me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_SAVE_STATE, rom_loaded);
me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_LOAD_STATE, rom_loaded);
me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_RESET_GAME, rom_loaded);
me_enable(main_entries, MAIN_ENTRY_COUNT, MA_MAIN_PATCHES, PicoPatches != NULL);
menu_sel_max = me_count_enabled(main_entries, MAIN_ENTRY_COUNT) - 1;
@ -1632,7 +1632,7 @@ static void menu_loop_root(void)
if(inp & BTN_DOWN) { menu_sel++; if (menu_sel > menu_sel_max) menu_sel = 0; }
if((inp & (BTN_L|BTN_R)) == (BTN_L|BTN_R)) debug_menu_loop();
if( inp & (BTN_SELECT|BTN_X)) {
if (rom_data) {
if (rom_loaded) {
while (psp_pad_read(1) & (BTN_SELECT|BTN_X)) psp_msleep(50); // wait until released
engineState = PGS_Running;
break;
@ -1643,14 +1643,14 @@ static void menu_loop_root(void)
switch (me_index2id(main_entries, MAIN_ENTRY_COUNT, menu_sel))
{
case MA_MAIN_RESUME_GAME:
if (rom_data) {
if (rom_loaded) {
while (psp_pad_read(1) & BTN_CIRCLE) psp_msleep(50);
engineState = PGS_Running;
return;
}
break;
case MA_MAIN_SAVE_STATE:
if (rom_data) {
if (rom_loaded) {
if(savestate_menu_loop(0))
continue;
engineState = PGS_Running;
@ -1658,7 +1658,7 @@ static void menu_loop_root(void)
}
break;
case MA_MAIN_LOAD_STATE:
if (rom_data) {
if (rom_loaded) {
if(savestate_menu_loop(1))
continue;
engineState = PGS_Running;
@ -1666,7 +1666,7 @@ static void menu_loop_root(void)
}
break;
case MA_MAIN_RESET_GAME:
if (rom_data) {
if (rom_loaded) {
emu_ResetGame();
engineState = PGS_Running;
return;
@ -1711,7 +1711,7 @@ static void menu_loop_root(void)
engineState = PGS_Quit;
return;
case MA_MAIN_PATCHES:
if (rom_data && PicoPatches) {
if (rom_loaded && PicoPatches) {
patches_menu_loop();
PicoPatchApply();
strcpy(menuErrorMsg, "Patches applied");
@ -1773,7 +1773,7 @@ static void menu_prepare_bg(int use_game_bg, int use_fg)
static void menu_gfx_prepare(void)
{
menu_prepare_bg(rom_data != NULL, 1);
menu_prepare_bg(rom_loaded, 1);
menu_draw_begin();
menu_draw_end();