notaz.gp2x.de
/
picodrive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added PicoGetStat() for win32
[picodrive.git]
/
Pico
/
Cart.c
diff --git
a/Pico/Cart.c
b/Pico/Cart.c
index
a19dcc8
..
f82c325
100644
(file)
--- a/
Pico/Cart.c
+++ b/
Pico/Cart.c
@@
-481,7
+481,7
@@
int PicoCartLoad(pm_file *f,unsigned char **prom,unsigned int *psize)
return 0;
\r
}
\r
\r
return 0;
\r
}
\r
\r
-// Insert
/remove
a cartridge:
\r
+// Insert a cartridge:
\r
int PicoCartInsert(unsigned char *rom,unsigned int romsize)
\r
{
\r
// notaz: add a 68k "jump one op back" opcode to the end of ROM.
\r
int PicoCartInsert(unsigned char *rom,unsigned int romsize)
\r
{
\r
// notaz: add a 68k "jump one op back" opcode to the end of ROM.
\r
@@
-493,15
+493,23
@@
int PicoCartInsert(unsigned char *rom,unsigned int romsize)
Pico.rom=rom;
\r
Pico.romsize=romsize;
\r
\r
Pico.rom=rom;
\r
Pico.romsize=romsize;
\r
\r
+ PicoMemResetHooks();
\r
+ PicoDmaHook = NULL;
\r
+ PicoResetHook = NULL;
\r
+ PicoLineHook = NULL;
\r
+
\r
+ PicoMemReset();
\r
+
\r
+ if (!(PicoMCD & 1))
\r
+ PicoCartDetect();
\r
+
\r
// setup correct memory map for loaded ROM
\r
// setup correct memory map for loaded ROM
\r
+ // call PicoMemReset again due to possible memmap change
\r
if (PicoMCD & 1)
\r
PicoMemSetupCD();
\r
else PicoMemSetup();
\r
PicoMemReset();
\r
\r
if (PicoMCD & 1)
\r
PicoMemSetupCD();
\r
else PicoMemSetup();
\r
PicoMemReset();
\r
\r
- if (!(PicoMCD & 1))
\r
- PicoCartDetect();
\r
-
\r
return PicoReset(1);
\r
}
\r
\r
return PicoReset(1);
\r
}
\r
\r
@@
-546,10
+554,12
@@
void PicoCartDetect(void)
Pico.m.sram_reg |= 4;
\r
} else {
\r
// normal SRAM
\r
Pico.m.sram_reg |= 4;
\r
} else {
\r
// normal SRAM
\r
- SRam.start = PicoRead32(0x1B4) &
0xFFFF00
;
\r
+ SRam.start = PicoRead32(0x1B4) &
~0xff
;
\r
SRam.end = PicoRead32(0x1B8) | 1;
\r
sram_size = SRam.end - SRam.start + 1;
\r
}
\r
SRam.end = PicoRead32(0x1B8) | 1;
\r
sram_size = SRam.end - SRam.start + 1;
\r
}
\r
+ SRam.start &= ~0xff000000;
\r
+ SRam.end &= ~0xff000000;
\r
Pico.m.sram_reg |= 0x10; // SRAM was detected
\r
}
\r
if (sram_size <= 0)
\r
Pico.m.sram_reg |= 0x10; // SRAM was detected
\r
}
\r
if (sram_size <= 0)
\r
@@
-630,5
+640,12
@@
void PicoCartDetect(void)
// Unusual region 'code'
\r
if (rom_strcmp(0x1f0, "EUROPE") == 0)
\r
*(int *) (Pico.rom+0x1f0) = 0x20204520;
\r
// Unusual region 'code'
\r
if (rom_strcmp(0x1f0, "EUROPE") == 0)
\r
*(int *) (Pico.rom+0x1f0) = 0x20204520;
\r
+
\r
+ // SVP detection
\r
+ if (name_cmp("Virtua Racing") == 0 ||
\r
+ name_cmp("VIRTUA RACING") == 0)
\r
+ {
\r
+ PicoSVPInit();
\r
+ }
\r
}
\r
\r
}
\r
\r