rom_data -> rom_loaded
[libpicofe.git] / common / emu.c
index 71f6716..b7832bb 100644 (file)
@@ -35,7 +35,7 @@
 \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
@@ -193,6 +193,7 @@ int emu_ReloadRom(void)
 {\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
@@ -202,7 +203,7 @@ int emu_ReloadRom(void)
        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
@@ -210,11 +211,11 @@ int emu_ReloadRom(void)
        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
@@ -293,20 +294,17 @@ int emu_ReloadRom(void)
        }\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); // 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
@@ -316,10 +314,9 @@ int emu_ReloadRom(void)
        pm_close(rom);\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
@@ -332,7 +329,7 @@ int emu_ReloadRom(void)
        }\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
@@ -395,9 +392,10 @@ int emu_ReloadRom(void)
        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