mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 07:17:45 -04:00
bugfixes related to mmap usage for ROM
git-svn-id: file:///home/notaz/opt/svn/PicoDrive@867 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
parent
1f1ff763e6
commit
a736af3ecf
6 changed files with 38 additions and 24 deletions
11
pico/cart.c
11
pico/cart.c
|
@ -592,6 +592,17 @@ int PicoCartInsert(unsigned char *rom, unsigned int romsize, const char *carthw_
|
|||
return 0;
|
||||
}
|
||||
|
||||
int PicoCartResize(int newsize)
|
||||
{
|
||||
void *tmp = plat_mremap(Pico.rom, rom_alloc_size, newsize);
|
||||
if (tmp == NULL)
|
||||
return -1;
|
||||
|
||||
Pico.rom = tmp;
|
||||
rom_alloc_size = newsize;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void PicoCartUnload(void)
|
||||
{
|
||||
if (PicoCartUnloadHook != NULL) {
|
||||
|
|
|
@ -203,20 +203,17 @@ static void carthw_realtec_reset(void)
|
|||
|
||||
void carthw_realtec_startup(void)
|
||||
{
|
||||
void *tmp;
|
||||
int i;
|
||||
|
||||
elprintf(EL_STATUS, "Realtec mapper startup");
|
||||
|
||||
// allocate additional bank for boot code
|
||||
// (we know those ROMs have aligned size)
|
||||
tmp = realloc(Pico.rom, Pico.romsize + M68K_BANK_SIZE);
|
||||
if (tmp == NULL)
|
||||
{
|
||||
i = PicoCartResize(Pico.romsize + M68K_BANK_SIZE);
|
||||
if (i != 0) {
|
||||
elprintf(EL_STATUS, "OOM");
|
||||
return;
|
||||
}
|
||||
Pico.rom = tmp;
|
||||
|
||||
// create bank for boot code
|
||||
for (i = 0; i < M68K_BANK_SIZE; i += 0x2000)
|
||||
|
@ -487,18 +484,16 @@ static void carthw_prot_lk3_mem_setup(void)
|
|||
|
||||
void carthw_prot_lk3_startup(void)
|
||||
{
|
||||
void *tmp;
|
||||
int ret;
|
||||
|
||||
elprintf(EL_STATUS, "lk3 prot emu startup");
|
||||
|
||||
// allocate space for bank0 backup
|
||||
tmp = realloc(Pico.rom, Pico.romsize + 0x8000);
|
||||
if (tmp == NULL)
|
||||
{
|
||||
ret = PicoCartResize(Pico.romsize + 0x8000);
|
||||
if (ret != 0) {
|
||||
elprintf(EL_STATUS, "OOM");
|
||||
return;
|
||||
}
|
||||
Pico.rom = tmp;
|
||||
memcpy(Pico.rom + Pico.romsize, Pico.rom, 0x8000);
|
||||
|
||||
PicoCartMemSetup = carthw_prot_lk3_mem_setup;
|
||||
|
|
|
@ -115,20 +115,17 @@ static void PicoSVPExit(void)
|
|||
|
||||
void PicoSVPStartup(void)
|
||||
{
|
||||
void *tmp;
|
||||
int ret;
|
||||
|
||||
elprintf(EL_STATUS, "SVP startup");
|
||||
|
||||
tmp = realloc(Pico.rom, 0x200000 + sizeof(*svp));
|
||||
if (tmp == NULL)
|
||||
{
|
||||
ret = PicoCartResize(Pico.romsize + sizeof(*svp));
|
||||
if (ret != 0) {
|
||||
elprintf(EL_STATUS|EL_SVP, "OOM for SVP data");
|
||||
return;
|
||||
}
|
||||
|
||||
//PicoOpt &= ~0x20000;
|
||||
Pico.rom = tmp;
|
||||
svp = (void *) ((char *)tmp + 0x200000);
|
||||
svp = (void *) ((char *)Pico.rom + Pico.romsize);
|
||||
memset(svp, 0, sizeof(*svp));
|
||||
|
||||
// init SVP compiler
|
||||
|
@ -156,4 +153,3 @@ void PicoSVPStartup(void)
|
|||
PicoAHW |= PAHW_SVP;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -52,10 +52,7 @@ static void SekResetAckS68k(void)
|
|||
|
||||
static int SekUnrecognizedOpcodeS68k(void)
|
||||
{
|
||||
unsigned int pc, op;
|
||||
pc = SekPcS68k;
|
||||
op = PicoCpuCS68k.read16(pc);
|
||||
elprintf(EL_ANOMALY, "Unrecognized Opcode %04x @ %06x", op, pc);
|
||||
elprintf(EL_ANOMALY, "Unrecognized Opcode @ %06x", SekPcS68k);
|
||||
//exit(1);
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue