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