fixed bus conflict emulation, no kage no densetsu bug anymore
This commit is contained in:
parent
790af32e1b
commit
4197dc1957
|
@ -20,8 +20,7 @@
|
|||
|
||||
#include "mapinc.h"
|
||||
|
||||
static uint8 bus_conflict = 0;
|
||||
static uint8 latche, latcheinit;
|
||||
static uint8 latche, latcheinit, bus_conflict;
|
||||
static uint16 addrreg0, addrreg1;
|
||||
static uint8 *WRAM=NULL;
|
||||
static uint32 WRAMSIZE;
|
||||
|
@ -58,8 +57,9 @@ static void StateRestore(int version)
|
|||
WSync();
|
||||
}
|
||||
|
||||
static void Latch_Init(CartInfo *info, void (*proc)(void), uint8 init, uint16 adr0, uint16 adr1, uint8 wram)
|
||||
static void Latch_Init(CartInfo *info, void (*proc)(void), uint8 init, uint16 adr0, uint16 adr1, uint8 wram, uint8 busc)
|
||||
{
|
||||
bus_conflict = busc;
|
||||
latcheinit=init;
|
||||
addrreg0=adr0;
|
||||
addrreg1=adr1;
|
||||
|
@ -80,7 +80,6 @@ static void Latch_Init(CartInfo *info, void (*proc)(void), uint8 init, uint16 ad
|
|||
AddExState(WRAM, WRAMSIZE, 0, "WRAM");
|
||||
}
|
||||
AddExState(&latche, 1, 0, "LATC");
|
||||
AddExState(&bus_conflict, 1, 0, "BUSC");
|
||||
}
|
||||
|
||||
//------------------ CPROM ---------------------------
|
||||
|
@ -95,7 +94,7 @@ static void CPROMSync(void)
|
|||
|
||||
void CPROM_Init(CartInfo *info)
|
||||
{
|
||||
Latch_Init(info, CPROMSync, 0, 0x8000, 0xFFFF, 0);
|
||||
Latch_Init(info, CPROMSync, 0, 0x8000, 0xFFFF, 0, 0);
|
||||
}
|
||||
|
||||
//------------------ Map 184 ---------------------------
|
||||
|
@ -110,7 +109,7 @@ static void M184Sync(void)
|
|||
|
||||
void Mapper184_Init(CartInfo *info)
|
||||
{
|
||||
Latch_Init(info, M184Sync, 0, 0x6000, 0x7FFF, 0);
|
||||
Latch_Init(info, M184Sync, 0, 0x6000, 0x7FFF, 0, 0);
|
||||
}
|
||||
|
||||
//------------------ CNROM ---------------------------
|
||||
|
@ -127,8 +126,7 @@ static void CNROMSync(void)
|
|||
|
||||
void CNROM_Init(CartInfo *info)
|
||||
{
|
||||
bus_conflict = 1;
|
||||
Latch_Init(info, CNROMSync, 0, 0x8000, 0xFFFF, 1);
|
||||
Latch_Init(info, CNROMSync, 0, 0x8000, 0xFFFF, 1, 1);
|
||||
}
|
||||
|
||||
//------------------ ANROM ---------------------------
|
||||
|
@ -142,7 +140,7 @@ static void ANROMSync()
|
|||
|
||||
void ANROM_Init(CartInfo *info)
|
||||
{
|
||||
Latch_Init(info, ANROMSync, 0, 0x8000, 0xFFFF, 0);
|
||||
Latch_Init(info, ANROMSync, 0, 0x8000, 0xFFFF, 0, 0);
|
||||
}
|
||||
|
||||
//------------------ Map 70 ---------------------------
|
||||
|
@ -156,7 +154,7 @@ static void M70Sync()
|
|||
|
||||
void Mapper70_Init(CartInfo *info)
|
||||
{
|
||||
Latch_Init(info, M70Sync, 0, 0x8000, 0xFFFF, 0);
|
||||
Latch_Init(info, M70Sync, 0, 0x8000, 0xFFFF, 0, 0);
|
||||
}
|
||||
|
||||
//------------------ Map 152 ---------------------------
|
||||
|
@ -171,7 +169,7 @@ static void M152Sync()
|
|||
|
||||
void Mapper152_Init(CartInfo *info)
|
||||
{
|
||||
Latch_Init(info, M152Sync, 0, 0x8000, 0xFFFF, 0);
|
||||
Latch_Init(info, M152Sync, 0, 0x8000, 0xFFFF, 0, 0);
|
||||
}
|
||||
|
||||
//------------------ Map 78 ---------------------------
|
||||
|
@ -186,7 +184,7 @@ static void M78Sync()
|
|||
|
||||
void Mapper78_Init(CartInfo *info)
|
||||
{
|
||||
Latch_Init(info, M78Sync, 0, 0x8000, 0xFFFF, 0);
|
||||
Latch_Init(info, M78Sync, 0, 0x8000, 0xFFFF, 0, 0);
|
||||
}
|
||||
|
||||
//------------------ MHROM ---------------------------
|
||||
|
@ -199,17 +197,17 @@ static void MHROMSync(void)
|
|||
|
||||
void MHROM_Init(CartInfo *info)
|
||||
{
|
||||
Latch_Init(info, MHROMSync, 0, 0x8000, 0xFFFF, 0);
|
||||
Latch_Init(info, MHROMSync, 0, 0x8000, 0xFFFF, 0, 0);
|
||||
}
|
||||
|
||||
void Mapper140_Init(CartInfo *info)
|
||||
{
|
||||
Latch_Init(info, MHROMSync, 0, 0x6000, 0x7FFF, 0);
|
||||
Latch_Init(info, MHROMSync, 0, 0x6000, 0x7FFF, 0, 0);
|
||||
}
|
||||
|
||||
void Mapper240_Init(CartInfo *info)
|
||||
{
|
||||
Latch_Init(info, MHROMSync, 0, 0x4020, 0x5FFF, 0);
|
||||
Latch_Init(info, MHROMSync, 0, 0x4020, 0x5FFF, 0, 0);
|
||||
// need SRAM.
|
||||
}
|
||||
|
||||
|
@ -225,7 +223,7 @@ static void M87Sync(void)
|
|||
|
||||
void Mapper87_Init(CartInfo *info)
|
||||
{
|
||||
Latch_Init(info, M87Sync, ~0, 0x6000, 0xFFFF, 0);
|
||||
Latch_Init(info, M87Sync, ~0, 0x6000, 0xFFFF, 0, 0);
|
||||
}
|
||||
|
||||
//------------------ Map 101 ---------------------------
|
||||
|
@ -239,7 +237,7 @@ static void M101Sync(void)
|
|||
|
||||
void Mapper101_Init(CartInfo *info)
|
||||
{
|
||||
Latch_Init(info, M101Sync, ~0, 0x6000, 0x7FFF, 0);
|
||||
Latch_Init(info, M101Sync, ~0, 0x6000, 0x7FFF, 0, 0);
|
||||
}
|
||||
|
||||
//------------------ Map 11 ---------------------------
|
||||
|
@ -252,12 +250,12 @@ static void M11Sync(void)
|
|||
|
||||
void Mapper11_Init(CartInfo *info)
|
||||
{
|
||||
Latch_Init(info, M11Sync, 0, 0x8000, 0xFFFF, 0);
|
||||
Latch_Init(info, M11Sync, 0, 0x8000, 0xFFFF, 0, 0);
|
||||
}
|
||||
|
||||
void Mapper144_Init(CartInfo *info)
|
||||
{
|
||||
Latch_Init(info, M11Sync, 0, 0x8001, 0xFFFF, 0);
|
||||
Latch_Init(info, M11Sync, 0, 0x8001, 0xFFFF, 0, 0);
|
||||
}
|
||||
|
||||
//------------------ Map 38 ---------------------------
|
||||
|
@ -270,7 +268,7 @@ static void M38Sync(void)
|
|||
|
||||
void Mapper38_Init(CartInfo *info)
|
||||
{
|
||||
Latch_Init(info, M38Sync, 0, 0x7000, 0x7FFF, 0);
|
||||
Latch_Init(info, M38Sync, 0, 0x7000, 0x7FFF, 0, 0);
|
||||
}
|
||||
|
||||
//------------------ Map 36 ---------------------------
|
||||
|
@ -283,7 +281,7 @@ static void M36Sync(void)
|
|||
|
||||
void Mapper36_Init(CartInfo *info)
|
||||
{
|
||||
Latch_Init(info, M36Sync, 0, 0x8400, 0xfffe, 0);
|
||||
Latch_Init(info, M36Sync, 0, 0x8400, 0xfffe, 0, 0);
|
||||
}
|
||||
//------------------ UNROM ---------------------------
|
||||
|
||||
|
@ -296,8 +294,7 @@ static void UNROMSync(void)
|
|||
|
||||
void UNROM_Init(CartInfo *info)
|
||||
{
|
||||
bus_conflict = 1;
|
||||
Latch_Init(info, UNROMSync, 0, 0x8000, 0xFFFF, 0);
|
||||
Latch_Init(info, UNROMSync, 0, 0x8000, 0xFFFF, 0, 1);
|
||||
}
|
||||
|
||||
//------------------ Map 93 ---------------------------
|
||||
|
@ -311,7 +308,7 @@ static void SSUNROMSync(void)
|
|||
|
||||
void SUNSOFT_UNROM_Init(CartInfo *info)
|
||||
{
|
||||
Latch_Init(info, SSUNROMSync, 0, 0x8000, 0xFFFF, 0);
|
||||
Latch_Init(info, SSUNROMSync, 0, 0x8000, 0xFFFF, 0, 0);
|
||||
}
|
||||
|
||||
//------------------ Map 94 ---------------------------
|
||||
|
@ -325,7 +322,7 @@ static void M94Sync(void)
|
|||
|
||||
void Mapper94_Init(CartInfo *info)
|
||||
{
|
||||
Latch_Init(info, M94Sync, 0, 0x8000, 0xFFFF, 0);
|
||||
Latch_Init(info, M94Sync, 0, 0x8000, 0xFFFF, 0, 0);
|
||||
}
|
||||
|
||||
//------------------ Map 180 ---------------------------
|
||||
|
@ -339,7 +336,7 @@ static void M180Sync(void)
|
|||
|
||||
void Mapper180_Init(CartInfo *info)
|
||||
{
|
||||
Latch_Init(info, M180Sync, 0, 0x8000, 0xFFFF, 0);
|
||||
Latch_Init(info, M180Sync, 0, 0x8000, 0xFFFF, 0, 0);
|
||||
}
|
||||
|
||||
//------------------ Map 107 ---------------------------
|
||||
|
@ -352,7 +349,7 @@ static void M107Sync(void)
|
|||
|
||||
void Mapper107_Init(CartInfo *info)
|
||||
{
|
||||
Latch_Init(info, M107Sync, ~0, 0x8000, 0xFFFF, 0);
|
||||
Latch_Init(info, M107Sync, ~0, 0x8000, 0xFFFF, 0, 0);
|
||||
}
|
||||
|
||||
//------------------ Map 113 ---------------------------
|
||||
|
@ -366,7 +363,7 @@ static void M113Sync(void)
|
|||
|
||||
void Mapper113_Init(CartInfo *info)
|
||||
{
|
||||
Latch_Init(info, M113Sync, 0, 0x4100, 0x7FFF, 0);
|
||||
Latch_Init(info, M113Sync, 0, 0x4100, 0x7FFF, 0, 0);
|
||||
}
|
||||
|
||||
//------------------ A65AS ---------------------------
|
||||
|
@ -394,7 +391,7 @@ static void BMCA65ASSync(void)
|
|||
|
||||
void BMCA65AS_Init(CartInfo *info)
|
||||
{
|
||||
Latch_Init(info, BMCA65ASSync, 0, 0x8000, 0xFFFF, 0);
|
||||
Latch_Init(info, BMCA65ASSync, 0, 0x8000, 0xFFFF, 0, 0);
|
||||
}
|
||||
|
||||
//------------------ NROM ---------------------------
|
||||
|
@ -414,8 +411,8 @@ static void NROMPower(void)
|
|||
setprg16(0xC000,~0);
|
||||
setchr8(0);
|
||||
|
||||
SetReadHandler(0x6000,0x6FFF,CartBR);
|
||||
SetWriteHandler(0x6000,0x6FFF,CartBW);
|
||||
SetReadHandler(0x6000,0x7FFF,CartBR);
|
||||
SetWriteHandler(0x6000,0x7FFF,CartBW);
|
||||
SetReadHandler(0x8000,0xFFFF,CartBR);
|
||||
|
||||
#ifdef DEBUG_MAPPER
|
||||
|
@ -437,5 +434,4 @@ void NROM_Init(CartInfo *info)
|
|||
info->SaveGameLen[0]=WRAMSIZE;
|
||||
}
|
||||
AddExState(WRAM, WRAMSIZE, 0, "WRAM");
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue