From 0caa46219089fe243e72a2daca5570ae78a30065 Mon Sep 17 00:00:00 2001 From: NewRisingSun <8vytz1+dhp372pv94ebg@sharklasers.com> Date: Sun, 14 Dec 2025 17:26:03 +0100 Subject: [PATCH] Added mapper 441 submapper 1. --- src/boards/441.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/boards/441.c b/src/boards/441.c index c371a92..8589d26 100644 --- a/src/boards/441.c +++ b/src/boards/441.c @@ -18,14 +18,17 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -/* 850335C PCB */ +/* 850335C PCB (submapper 0) + 840415C/43-170 PCB (submapper 1) */ #include "mapinc.h" #include "mmc3.h" +static uint8 submapper; + static void Mapper441_PRGWrap(uint32 A, uint8 V) { - int prgAND =EXPREGS[0] &0x08? 0x0F: 0x1F; - int prgOR =EXPREGS[0] <<4 &0x30; + int prgAND = EXPREGS[0] &0x08? 0x0F: 0x1F; + int prgOR = EXPREGS[0] <<4 &0x30; if (EXPREGS[0] &0x04) { if (~A &0x4000) { setprg8(A, ~2 &V &prgAND | prgOR &~prgAND); @@ -36,14 +39,17 @@ static void Mapper441_PRGWrap(uint32 A, uint8 V) { } static void Mapper441_CHRWrap(uint32 A, uint8 V) { - int chrAND =EXPREGS[0] &0x40? 0x7F: 0xFF; - int chrOR =EXPREGS[0] <<3 &0x180; + int chrAND = EXPREGS[0] &0x40? 0x7F: 0xFF; + int chrOR = EXPREGS[0] <<3 &0x180; setchr1(A, V &chrAND | chrOR &~chrAND); } static DECLFW(Mapper441_Write) { if (~EXPREGS[0] &0x80) { - EXPREGS[0] =V; + if (submapper == 1) + EXPREGS[0] = V &~4 | A &4; + else + EXPREGS[0] = V; FixMMC3PRG(MMC3_cmd); FixMMC3CHR(MMC3_cmd); } @@ -51,17 +57,18 @@ static DECLFW(Mapper441_Write) { } static void Mapper441_Reset(void) { - EXPREGS[0] =0; + EXPREGS[0] = 0; MMC3RegReset(); } static void Mapper441_Power(void) { - EXPREGS[0] =0; + EXPREGS[0] = 0; GenMMC3Power(); SetWriteHandler(0x6000, 0x7FFF, Mapper441_Write); } void Mapper441_Init(CartInfo *info) { + submapper = info->submapper; GenMMC3_Init(info, 256, 256, 8, 0); cwrap = Mapper441_CHRWrap; pwrap = Mapper441_PRGWrap;