X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=Pico%2FCart.c;h=fc7eec36171593cc2ac99574c273c04d1b39bf56;hb=81fda4e8d854c96e70dc2e6b7cd2f48a51f55d86;hp=cf335804d7e76524231bf65ddee4173704b76762;hpb=1dceadaee482ad3ca6f5ccbef57ea93893f45e82;p=picodrive.git diff --git a/Pico/Cart.c b/Pico/Cart.c index cf33580..fc7eec3 100644 --- a/Pico/Cart.c +++ b/Pico/Cart.c @@ -16,6 +16,7 @@ static char *rom_exts[] = { "bin", "gen", "smd", "iso" }; void (*PicoCartLoadProgressCB)(int percent) = NULL; +void (*PicoCDLoadProgressCB)(int percent) = NULL; // handled in Pico/cd/cd_file.c pm_file *pm_open(const char *path) @@ -48,7 +49,7 @@ pm_file *pm_open(const char *path) ext = zipentry->name+strlen(zipentry->name)-3; for (i = 0; i < sizeof(rom_exts)/sizeof(rom_exts[0]); i++) - if (!strcasecmp(ext, rom_exts[i]) == 0) goto found_rom_zip; + if (strcasecmp(ext, rom_exts[i]) == 0) goto found_rom_zip; } /* zipfile given, but nothing found suitable for us inside */ @@ -331,16 +332,21 @@ int PicoUnloadCart(unsigned char* romdata) return 0; } -static int name_cmp(const char *name) +static int rom_strcmp(int rom_offset, const char *s1) { - int i, len = strlen(name); - const char *name_rom = (const char *)Pico.rom+0x150; + int i, len = strlen(s1); + const char *s_rom = (const char *)Pico.rom + rom_offset; for (i = 0; i < len; i++) - if (name[i] != name_rom[i^1]) + if (s1[i] != s_rom[i^1]) return 1; return 0; } +static int name_cmp(const char *name) +{ + return rom_strcmp(0x150, name); +} + /* various cart-specific things, which can't be handled by generic code */ void PicoCartDetect(void) { @@ -441,5 +447,9 @@ void PicoCartDetect(void) if (name_cmp("DINO DINI'S SOCCER") == 0 || name_cmp("MICRO MACHINES II") == 0) memset(SRam.data, 0xff, sram_size); + + // Unusual region 'code' + if (rom_strcmp(0x1f0, "EUROPE") == 0) + *(int *) (Pico.rom+0x1f0) = 0x20204520; }