Mapper 414: Add menu cycling.
This commit is contained in:
committed by
LibretroAdmin
parent
225ce34420
commit
bf72633444
@@ -22,14 +22,20 @@
|
|||||||
|
|
||||||
static uint8 latch_data;
|
static uint8 latch_data;
|
||||||
static uint32 latch_addr;
|
static uint32 latch_addr;
|
||||||
|
static uint8 dipswitch;
|
||||||
|
|
||||||
static SFORMAT StateRegs[] =
|
static SFORMAT StateRegs[] =
|
||||||
{
|
{
|
||||||
{ &latch_addr, 4, "ADDR" },
|
{ &latch_addr, 4, "ADDR" },
|
||||||
{ &latch_data, 1, "DATA" },
|
{ &latch_data, 1, "DATA" },
|
||||||
|
{ &dipswitch, 1, "DIPS" },
|
||||||
{ 0 }
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static DECLFR(Mapper414_ReadOB) {
|
||||||
|
return X.DB;
|
||||||
|
}
|
||||||
|
|
||||||
static void Sync(void) {
|
static void Sync(void) {
|
||||||
if (latch_addr & 0x2000) { /* NROM-256 */
|
if (latch_addr & 0x2000) { /* NROM-256 */
|
||||||
setprg32(0x8000, latch_addr >> 2);
|
setprg32(0x8000, latch_addr >> 2);
|
||||||
@@ -37,6 +43,7 @@ static void Sync(void) {
|
|||||||
setprg16(0x8000, latch_addr >> 1);
|
setprg16(0x8000, latch_addr >> 1);
|
||||||
setprg16(0xC000, latch_addr >> 1);
|
setprg16(0xC000, latch_addr >> 1);
|
||||||
}
|
}
|
||||||
|
SetReadHandler(0xC000, 0xFFFF, ~latch_addr &0x100 && latch_addr &dipswitch? Mapper414_ReadOB: CartBR);
|
||||||
setchr8(latch_data);
|
setchr8(latch_data);
|
||||||
setmirror((latch_addr & 1) ^ 1);
|
setmirror((latch_addr & 1) ^ 1);
|
||||||
}
|
}
|
||||||
@@ -48,17 +55,23 @@ static DECLFW(M414Write) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void M414Power(void) {
|
static void M414Power(void) {
|
||||||
|
dipswitch =0;
|
||||||
Sync();
|
Sync();
|
||||||
SetReadHandler(0x8000, 0xFFFF, CartBR);
|
SetReadHandler(0x8000, 0xFFFF, CartBR);
|
||||||
SetWriteHandler(0x8000, 0xFFFF, M414Write);
|
SetWriteHandler(0x8000, 0xFFFF, M414Write);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void M414Reset(void) {
|
||||||
|
dipswitch =dipswitch ==0xF0? 0x00: (dipswitch <<1 | 0x10);
|
||||||
|
}
|
||||||
|
|
||||||
static void StateRestore(int version) {
|
static void StateRestore(int version) {
|
||||||
Sync();
|
Sync();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Mapper414_Init(CartInfo *info) {
|
void Mapper414_Init(CartInfo *info) {
|
||||||
info->Power = M414Power;
|
info->Power = M414Power;
|
||||||
|
info->Reset = M414Reset;
|
||||||
GameStateRestore = StateRestore;
|
GameStateRestore = StateRestore;
|
||||||
AddExState(&StateRegs, ~0, 0, 0);
|
AddExState(&StateRegs, ~0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user