mapper 253 - fixed dragonball garbled graphis TODO: irq
bandai mappers - fixed savestates
This commit is contained in:
parent
d5e6d7f891
commit
175c4af22b
|
@ -50,13 +50,6 @@ static void Sync(void) {
|
|||
setprg8(0xe000, ~0);
|
||||
for (i = 0; i < 8; i++) {
|
||||
uint32 chr = chrlo[i] | (chrhi[i] << 8);
|
||||
if (chrlo[i] == 0xc8) {
|
||||
vlock = 0;
|
||||
continue;
|
||||
} else if (chrlo[i] == 0x88) {
|
||||
vlock = 1;
|
||||
continue;
|
||||
}
|
||||
if (((chrlo[i] == 4) || (chrlo[i] == 5)) && !vlock)
|
||||
setchr1r(0x10, i << 10, chr & 1);
|
||||
else
|
||||
|
@ -74,8 +67,15 @@ static DECLFW(M253Write) {
|
|||
if ((A >= 0xB000) && (A <= 0xE00C)) {
|
||||
uint8 ind = ((((A & 8) | (A >> 8)) >> 3) + 2) & 7;
|
||||
uint8 sar = A & 4;
|
||||
chrlo[ind] = (chrlo[ind] & (0xF0 >> sar)) | ((V & 0x0F) << sar);
|
||||
if (A & 4)
|
||||
uint8 clo = (chrlo[ind] & (0xF0 >> sar)) | ((V & 0x0F) << sar);
|
||||
chrlo[ind] = clo;
|
||||
if (ind == 0) {
|
||||
if (clo == 0xc8)
|
||||
vlock = 0;
|
||||
else if (clo == 0x88)
|
||||
vlock = 1;
|
||||
}
|
||||
if (sar)
|
||||
chrhi[ind] = V >> 4;
|
||||
Sync();
|
||||
} else
|
||||
|
@ -85,11 +85,12 @@ static DECLFW(M253Write) {
|
|||
case 0x9400: mirr = V & 3; Sync(); break;
|
||||
case 0xF000: X6502_IRQEnd(FCEU_IQEXT); IRQLatch &= 0xF0; IRQLatch |= V & 0xF; break;
|
||||
case 0xF004: X6502_IRQEnd(FCEU_IQEXT); IRQLatch &= 0x0F; IRQLatch |= V << 4; break;
|
||||
case 0xF008: X6502_IRQEnd(FCEU_IQEXT); IRQClock = 0; IRQCount = IRQLatch; IRQa = V & 2;break;
|
||||
case 0xF008: X6502_IRQEnd(FCEU_IQEXT); IRQClock = 0; IRQCount = IRQLatch; IRQa = V & 2; break;
|
||||
}
|
||||
}
|
||||
|
||||
static void M253Power(void) {
|
||||
vlock = 0;
|
||||
Sync();
|
||||
SetReadHandler(0x6000, 0x7FFF, CartBR);
|
||||
SetWriteHandler(0x6000, 0x7FFF, CartBW);
|
||||
|
|
|
@ -52,9 +52,8 @@ static uint8 x24c0x_data[256], x24c0x_state;
|
|||
static uint8 x24c0x_addr, x24c0x_word, x24c0x_latch, x24c0x_bitcount;
|
||||
static uint8 x24c0x_sda, x24c0x_scl, x24c0x_out, x24c0x_oe;
|
||||
|
||||
static SFORMAT x24c01StateRegs[] =
|
||||
static SFORMAT x24c0xStateRegs[] =
|
||||
{
|
||||
{ x24c0x_data, 128, "DATA" },
|
||||
{ &x24c0x_addr, 1, "ADDR" },
|
||||
{ &x24c0x_word, 1, "WORD" },
|
||||
{ &x24c0x_latch, 1, "LATC" },
|
||||
|
@ -234,9 +233,10 @@ void Mapper16_Init(CartInfo *info) {
|
|||
info->battery = 1;
|
||||
info->SaveGame[0] = x24c0x_data;
|
||||
info->SaveGameLen[0] = 256;
|
||||
AddExState(x24c0x_data, 256, 0, "DATA");
|
||||
|
||||
GameStateRestore = StateRestore;
|
||||
AddExState(&x24c01StateRegs, ~0, 0, 0);
|
||||
AddExState(&x24c0xStateRegs, ~0, 0, 0);
|
||||
AddExState(&StateRegs, ~0, 0, 0);
|
||||
}
|
||||
|
||||
|
@ -249,9 +249,10 @@ void Mapper159_Init(CartInfo *info) {
|
|||
info->battery = 1;
|
||||
info->SaveGame[0] = x24c0x_data;
|
||||
info->SaveGameLen[0] = 128;
|
||||
AddExState(x24c0x_data, 128, 0, "DATA");
|
||||
|
||||
GameStateRestore = StateRestore;
|
||||
AddExState(&x24c01StateRegs, ~0, 0, 0);
|
||||
AddExState(&x24c0xStateRegs, ~0, 0, 0);
|
||||
AddExState(&StateRegs, ~0, 0, 0);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue