notaz.gp2x.de
/
picodrive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
svp compiler: wip EXT reg stuff
[picodrive.git]
/
platform
/
common
/
emu.c
diff --git
a/platform/common/emu.c
b/platform/common/emu.c
index
71f6716
..
b7832bb
100644
(file)
--- a/
platform/common/emu.c
+++ b/
platform/common/emu.c
@@
-35,7
+35,7
@@
\r
char *PicoConfigFile = "picoconfig.bin";
\r
currentConfig_t currentConfig;
\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
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
{
\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
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
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
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
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
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
// 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
}
\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
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
\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
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
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
((*(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
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
}
\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
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
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
emu_SaveLoadGame(1, 1);
\r
\r
+ rom_loaded = 1;
\r
return 1;
\r
}
\r
\r
return 1;
\r
}
\r
\r