mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 15:27:46 -04:00
sms, improve gg detection (zip, rom header)
This commit is contained in:
parent
466fa07953
commit
14cd01be51
3 changed files with 14 additions and 2 deletions
|
@ -243,6 +243,7 @@ zip_failed:
|
||||||
file->param = cso;
|
file->param = cso;
|
||||||
file->size = cso->header.total_bytes;
|
file->size = cso->header.total_bytes;
|
||||||
file->type = PMT_CSO;
|
file->type = PMT_CSO;
|
||||||
|
strncpy(file->ext, ext, sizeof(file->ext) - 1);
|
||||||
return file;
|
return file;
|
||||||
|
|
||||||
cso_failed:
|
cso_failed:
|
||||||
|
|
|
@ -259,7 +259,6 @@ enum media_type_e PicoLoadMedia(const char *filename,
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = PicoCartLoad(rom, &rom_data, &rom_size, (PicoIn.AHW & PAHW_SMS) ? 1 : 0);
|
ret = PicoCartLoad(rom, &rom_data, &rom_size, (PicoIn.AHW & PAHW_SMS) ? 1 : 0);
|
||||||
pm_close(rom);
|
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
if (ret == 2) lprintf("Out of memory\n");
|
if (ret == 2) lprintf("Out of memory\n");
|
||||||
else if (ret == 3) lprintf("Read failed\n");
|
else if (ret == 3) lprintf("Read failed\n");
|
||||||
|
@ -299,7 +298,7 @@ enum media_type_e PicoLoadMedia(const char *filename,
|
||||||
|
|
||||||
// simple test for GG. Do this here since m.hardware is nulled in Insert
|
// simple test for GG. Do this here since m.hardware is nulled in Insert
|
||||||
if (PicoIn.AHW & PAHW_SMS) {
|
if (PicoIn.AHW & PAHW_SMS) {
|
||||||
if (strstr(filename,".gg")) {
|
if (!strcmp(rom->ext,"gg")) {
|
||||||
Pico.m.hardware |= 0x1;
|
Pico.m.hardware |= 0x1;
|
||||||
lprintf("detected GG ROM\n");
|
lprintf("detected GG ROM\n");
|
||||||
} else
|
} else
|
||||||
|
@ -322,6 +321,8 @@ enum media_type_e PicoLoadMedia(const char *filename,
|
||||||
PicoSetInputDevice(0, PICO_INPUT_PAD_6BTN);
|
PicoSetInputDevice(0, PICO_INPUT_PAD_6BTN);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
|
if (rom)
|
||||||
|
pm_close(rom);
|
||||||
if (rom_data)
|
if (rom_data)
|
||||||
free(rom_data);
|
free(rom_data);
|
||||||
return media_type;
|
return media_type;
|
||||||
|
|
10
pico/sms.c
10
pico/sms.c
|
@ -323,6 +323,7 @@ void PicoResetMS(void)
|
||||||
void PicoPowerMS(void)
|
void PicoPowerMS(void)
|
||||||
{
|
{
|
||||||
int s, tmp;
|
int s, tmp;
|
||||||
|
unsigned tmr;
|
||||||
|
|
||||||
memset(&PicoMem,0,sizeof(PicoMem));
|
memset(&PicoMem,0,sizeof(PicoMem));
|
||||||
memset(&Pico.video,0,sizeof(Pico.video));
|
memset(&Pico.video,0,sizeof(Pico.video));
|
||||||
|
@ -339,6 +340,15 @@ void PicoPowerMS(void)
|
||||||
tmp = 1 << s;
|
tmp = 1 << s;
|
||||||
bank_mask = (tmp - 1) >> 14;
|
bank_mask = (tmp - 1) >> 14;
|
||||||
|
|
||||||
|
// check if the ROM header contains more system information to detect GG
|
||||||
|
for (tmr = 0x2000; tmr < 0xbfff && tmr <= Pico.romsize; tmr *= 2) {
|
||||||
|
if (!memcmp(Pico.rom + tmr-16, "TMR SEGA", 8)) {
|
||||||
|
if (Pico.rom[tmr-1] >= 0x50 && Pico.rom[tmr-1] < 0x80)
|
||||||
|
Pico.m.hardware |= 0x1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PicoReset();
|
PicoReset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue