From bedeeebac7a5c990935383882a132004ed174ba3 Mon Sep 17 00:00:00 2001 From: NewRisingSun <8vytz1+dhp372pv94ebg@sharklasers.com> Date: Sat, 5 Apr 2025 22:15:36 +0200 Subject: [PATCH] Added mapper 462. --- src/boards/datalatch.c | 40 ++++++++++++++++++++++++++++++++++++++++ src/ines.c | 1 + src/ines.h | 1 + 3 files changed, 42 insertions(+) diff --git a/src/boards/datalatch.c b/src/boards/datalatch.c index 4cb03db..59aa9ff 100644 --- a/src/boards/datalatch.c +++ b/src/boards/datalatch.c @@ -649,6 +649,46 @@ void Mapper415_Init(CartInfo *info) { info->Power = M415Power; } +/*------------------ Mapper 462 ---------------------------*/ +static uint8 M462OuterBank; + +static void Mapper462_Sync(void) { + if (M462OuterBank &0x40) { + setprg32(0x8000, latche &7 | M462OuterBank >>3 &~7); + setmirror(latche &0x10? MI_1: MI_0); + } else { + setprg16(0x8000, latche &7 | M462OuterBank >>2 &~7); + setprg16(0xC000, 7 | M462OuterBank >>2 &~7); + setmirror(M462OuterBank &0x10? MI_V: MI_H); + } + setchr8(0); +} + +static DECLFW(M462_WriteExtra) { + M462OuterBank =V; + Mapper462_Sync(); +} + +static void M462Power(void) { + M462OuterBank =0; + LatchPower(); + SetWriteHandler(0xA000, 0xBFFF, M462_WriteExtra); +} + +static void M462Reset(void) { + M462OuterBank =0; + Mapper462_Sync(); +} + +void Mapper462_Init(CartInfo *info) { + Latch_Init(info, Mapper462_Sync, 0, 0x8000, 0xFFFF, 0, 0); + info->Power = M462Power; + info->Reset = M462Reset; + AddExState(&M462OuterBank, 1, 0, "EXP0"); +} + +/*------------------ Mapper 481 ---------------------------*/ + static void Mapper481_Sync(void) { setprg16(0x8000, latche >>4 &~7 | latche &7); setprg16(0xc000, latche >>4 | 7); diff --git a/src/ines.c b/src/ines.c index b569472..5d3efbe 100644 --- a/src/ines.c +++ b/src/ines.c @@ -845,6 +845,7 @@ INES_BOARD_BEGIN() INES_BOARD( "8-in-1", 459, Mapper459_Init ) INES_BOARD( "FC-29-40/K-3101", 460, Mapper460_Init ) INES_BOARD( "0324", 461, Mapper461_Init ) + INES_BOARD( "BMC-971107-00G", 462, Mapper462_Init ) INES_BOARD( "YH810X1", 463, Mapper463_Init ) INES_BOARD( "NTDEC 9012", 464, Mapper464_Init ) INES_BOARD( "ET-120", 465, Mapper465_Init ) diff --git a/src/ines.h b/src/ines.h index 96df832..3cda126 100644 --- a/src/ines.h +++ b/src/ines.h @@ -356,6 +356,7 @@ void Mapper458_Init(CartInfo *); void Mapper459_Init(CartInfo *); void Mapper460_Init(CartInfo *); void Mapper461_Init(CartInfo *); +void Mapper462_Init(CartInfo *); void Mapper463_Init(CartInfo *); void Mapper464_Init(CartInfo *); void Mapper465_Init(CartInfo *);