Mapper 414: Add menu cycling.

This commit is contained in:
NewRisingSun
2025-04-01 15:13:23 +02:00
committed by LibretroAdmin
parent 225ce34420
commit bf72633444

View File

@@ -22,14 +22,20 @@
static uint8 latch_data;
static uint32 latch_addr;
static uint8 dipswitch;
static SFORMAT StateRegs[] =
{
{ &latch_addr, 4, "ADDR" },
{ &latch_data, 1, "DATA" },
{ &dipswitch, 1, "DIPS" },
{ 0 }
};
static DECLFR(Mapper414_ReadOB) {
return X.DB;
}
static void Sync(void) {
if (latch_addr & 0x2000) { /* NROM-256 */
setprg32(0x8000, latch_addr >> 2);
@@ -37,6 +43,7 @@ static void Sync(void) {
setprg16(0x8000, latch_addr >> 1);
setprg16(0xC000, latch_addr >> 1);
}
SetReadHandler(0xC000, 0xFFFF, ~latch_addr &0x100 && latch_addr &dipswitch? Mapper414_ReadOB: CartBR);
setchr8(latch_data);
setmirror((latch_addr & 1) ^ 1);
}
@@ -48,17 +55,23 @@ static DECLFW(M414Write) {
}
static void M414Power(void) {
dipswitch =0;
Sync();
SetReadHandler(0x8000, 0xFFFF, CartBR);
SetWriteHandler(0x8000, 0xFFFF, M414Write);
}
static void M414Reset(void) {
dipswitch =dipswitch ==0xF0? 0x00: (dipswitch <<1 | 0x10);
}
static void StateRestore(int version) {
Sync();
}
void Mapper414_Init(CartInfo *info) {
info->Power = M414Power;
info->Reset = M414Reset;
GameStateRestore = StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}