From 7194d208d9117672e317bb3a567cf6b9256a3e32 Mon Sep 17 00:00:00 2001 From: NewRisingSun <8vytz1+dhp372pv94ebg@sharklasers.com> Date: Tue, 1 Apr 2025 21:03:03 +0200 Subject: [PATCH] Mappers 44,174,331,333,335: Reset to menu. --- src/boards/12in1.c | 6 ++++++ src/boards/174.c | 6 ++++++ src/boards/8in1.c | 7 +++++++ src/boards/bmcctc09.c | 7 +++++++ src/boards/mmc3.c | 9 +++++++++ 5 files changed, 35 insertions(+) diff --git a/src/boards/12in1.c b/src/boards/12in1.c index 64f812a..e9be49d 100644 --- a/src/boards/12in1.c +++ b/src/boards/12in1.c @@ -61,12 +61,18 @@ static void BMC12IN1Power(void) { SetWriteHandler(0x8000, 0xFFFF, BMC12IN1Write); } +static void BMC12IN1Reset(void) { + prgchr[0] = prgchr[1] = ctrl = 0; + Sync(); +} + static void StateRestore(int version) { Sync(); } void BMC12IN1_Init(CartInfo *info) { info->Power = BMC12IN1Power; + info->Reset = BMC12IN1Reset; GameStateRestore = StateRestore; AddExState(&StateRegs, ~0, 0, 0); } diff --git a/src/boards/174.c b/src/boards/174.c index 3b41446..cb2900e 100644 --- a/src/boards/174.c +++ b/src/boards/174.c @@ -32,6 +32,12 @@ static void Sync(void) { setmirror((latch.addr & 1) ^ 1); } +static void M174Reset(void) { + latch.addr =0; + Sync(); +} + void Mapper174_Init(CartInfo *info) { Latch_Init(info, Sync, NULL, 0, 0); + info->Reset = M174Reset; } diff --git a/src/boards/8in1.c b/src/boards/8in1.c index 554f5e6..4f9db77 100644 --- a/src/boards/8in1.c +++ b/src/boards/8in1.c @@ -58,10 +58,17 @@ static void BMC8IN1Power(void) { SetWriteHandler(0x8000, 0xFFFF, BMC8IN1Write); } +static void BMC8IN1Reset(void) { + EXPREGS[0] = 0; + FixMMC3PRG(0); + FixMMC3CHR(0); +} + void BMC8IN1_Init(CartInfo *info) { GenMMC3_Init(info, 128, 128, 0, 0); cwrap = BMC8IN1CW; pwrap = BMC8IN1PW; info->Power = BMC8IN1Power; + info->Reset = BMC8IN1Reset; AddExState(EXPREGS, 1, 0, "EXPR"); } diff --git a/src/boards/bmcctc09.c b/src/boards/bmcctc09.c index 8651ad9..2ad8a22 100644 --- a/src/boards/bmcctc09.c +++ b/src/boards/bmcctc09.c @@ -57,18 +57,25 @@ static DECLFW(WriteCHR) { } static void BMCCTC09Power(void) { + regs[0] =regs[1] =0; Sync(); SetReadHandler(0x8000, 0xFFFF, CartBR); SetWriteHandler(0x8000, 0xBFFF, WriteCHR); SetWriteHandler(0xC000, 0xFFFF, WritePRG); } +static void BMCCTC09Reset(void) { + regs[0] =regs[1] =0; + Sync(); +} + static void StateRestore(int version) { Sync(); } void BMCCTC09_Init(CartInfo *info) { info->Power = BMCCTC09Power; + info->Reset = BMCCTC09Reset; GameStateRestore = StateRestore; AddExState(&StateRegs, ~0, 0, 0); } diff --git a/src/boards/mmc3.c b/src/boards/mmc3.c index 1291495..5571012 100644 --- a/src/boards/mmc3.c +++ b/src/boards/mmc3.c @@ -466,6 +466,14 @@ static void M44Power(void) { EXPREGS[0] = 0; GenMMC3Power(); SetWriteHandler(0xA000, 0xBFFF, M44Write); + FixMMC3PRG(MMC3_cmd); + FixMMC3CHR(MMC3_cmd); +} + +static void M44Reset(void) { + EXPREGS[0] =0; + FixMMC3PRG(0); + FixMMC3CHR(0); } void Mapper44_Init(CartInfo *info) { @@ -473,6 +481,7 @@ void Mapper44_Init(CartInfo *info) { cwrap = M44CW; pwrap = M44PW; info->Power = M44Power; + info->Reset = M44Reset; AddExState(EXPREGS, 1, 0, "EXPR"); }