fixed bus conflict emulation, no kage no densetsu bug anymore

This commit is contained in:
CaH4e3 2011-09-03 14:14:22 +00:00
parent 790af32e1b
commit 4197dc1957
1 changed files with 28 additions and 32 deletions

View File

@ -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");
}