From eacee137eed2f00111e03544f6b1e43d20a7403b Mon Sep 17 00:00:00 2001 From: notaz Date: Fri, 7 Mar 2008 19:03:06 +0000 Subject: [PATCH] rom_data -> rom_loaded git-svn-id: file:///home/notaz/opt/svn/PicoDrive@372 be3aeb3a-fb24-0410-a615-afba39da0efa --- platform/common/emu.c | 28 ++++++++++++------------- platform/common/emu.h | 2 +- platform/gizmondo/menu.c | 30 +++++++++++++-------------- platform/gp2x/menu.c | 30 +++++++++++++-------------- platform/psp/menu.c | 34 +++++++++++++++---------------- platform/win32/GenaDrive/Main.cpp | 8 ++++---- 6 files changed, 65 insertions(+), 67 deletions(-) diff --git a/platform/common/emu.c b/platform/common/emu.c index 71f6716a..b7832bbb 100644 --- a/platform/common/emu.c +++ b/platform/common/emu.c @@ -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; } diff --git a/platform/common/emu.h b/platform/common/emu.h index 2d2aa49e..dd114cad 100644 --- a/platform/common/emu.h +++ b/platform/common/emu.h @@ -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; diff --git a/platform/gizmondo/menu.c b/platform/gizmondo/menu.c index 5da9c23b..b1d3b141 100644 --- a/platform/gizmondo/menu.c +++ b/platform/gizmondo/menu.c @@ -124,7 +124,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 == NULL) + if (!rom_loaded) memset(menu_screen, 0, 321*240*2); menu_draw_begin(1); @@ -179,7 +179,7 @@ static void draw_dirlist(char *curdir, struct my_dirent **namelist, int n, int s menu_draw_begin(1); - if (rom_data == NULL) { + if (!rom_loaded) { menu_darken_bg(menu_screen, menu_screen, 321*240, 0); } @@ -826,7 +826,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; } } @@ -1232,7 +1232,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; @@ -1422,10 +1422,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; @@ -1444,7 +1444,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_HOME|BTN_STOP)) { - if (rom_data) { + if (rom_loaded) { while (Framework_PollGetButtons() & (BTN_HOME|BTN_STOP)) Sleep(50); // wait until released engineState = PGS_Running; break; @@ -1454,14 +1454,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 (Framework_PollGetButtons() & BTN_PLAY) Sleep(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; @@ -1469,7 +1469,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; @@ -1477,7 +1477,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; @@ -1520,7 +1520,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"); @@ -1586,7 +1586,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); menu_draw_begin(1); menu_draw_end(); diff --git a/platform/gp2x/menu.c b/platform/gp2x/menu.c index ef54ed63..5ff8ac0a 100644 --- a/platform/gp2x/menu.c +++ b/platform/gp2x/menu.c @@ -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); diff --git a/platform/psp/menu.c b/platform/psp/menu.c index bc7c8757..c2df05f6 100644 --- a/platform/psp/menu.c +++ b/platform/psp/menu.c @@ -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(); diff --git a/platform/win32/GenaDrive/Main.cpp b/platform/win32/GenaDrive/Main.cpp index 87c2be9b..93db3cd9 100644 --- a/platform/win32/GenaDrive/Main.cpp +++ b/platform/win32/GenaDrive/Main.cpp @@ -11,7 +11,7 @@ int lock_to_1_1 = 1; int MainWidth=720,MainHeight=480; static HMENU mdisplay = 0; -static unsigned char *rom_data = NULL; +static int rom_loaded = 0; static void UpdateRect() { @@ -63,10 +63,10 @@ static void LoadROM(const char *cmdpath) LoopWait=1; for (i = 0; LoopWaiting == 0 && i < 10; i++) Sleep(100); + PicoUnloadCart(); PicoCartInsert(rom_data_new, rom_size); - if (rom_data) free(rom_data); - rom_data = rom_data_new; + rom_loaded = 1; romname = rompath; LoopWait=0; } @@ -106,7 +106,7 @@ static LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam) lock_to_1_1=0; CheckMenuItem(mdisplay, 1104, MF_UNCHECKED); } - if (rom_data != NULL) LoopWait=0; + if (rom_loaded) LoopWait=0; return 0; case 1104: lock_to_1_1=!lock_to_1_1; -- 2.39.5