From 6d13706e53621acbff901b6e9d609ca13b9e3192 Mon Sep 17 00:00:00 2001 From: NewRisingSun <8vytz1+dhp372pv94ebg@sharklasers.com> Date: Sat, 6 Aug 2022 17:29:24 +0200 Subject: [PATCH] Add mapper 52 submapper 13 (CHR-ROM+CHR-RAM) --- src/boards/mmc3.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/boards/mmc3.c b/src/boards/mmc3.c index 633f0b5..b90e7cb 100644 --- a/src/boards/mmc3.c +++ b/src/boards/mmc3.c @@ -659,7 +659,10 @@ static void M52CW(uint32 A, uint8 V) { uint32 mask = 0xFF ^ ((EXPREGS[0] & 0x40) << 1); /* uint32 bank = (((EXPREGS[0]>>3)&4)|((EXPREGS[0]>>1)&2)|((EXPREGS[0]>>6)&(EXPREGS[0]>>4)&1))<<7; */ uint32 bank = (((EXPREGS[0] >> 4) & 2) | (EXPREGS[0] & 4) | ((EXPREGS[0] >> 6) & (EXPREGS[0] >> 4) & 1)) << 7; /* actually 256K CHR banks index bits is inverted! */ - setchr1(A, bank | (V & mask)); + if (CHRRAM && (EXPREGS[0] &3) ==3) + setchr1r(0x10, A, bank | (V & mask)); + else + setchr1(A, bank | (V & mask)); } static DECLFW(M52Write) { @@ -691,6 +694,12 @@ void Mapper52_Init(CartInfo *info) { info->Reset = M52Reset; info->Power = M52Power; AddExState(EXPREGS, 2, 0, "EXPR"); + if (info->iNES2 && info->submapper ==13) { + CHRRAMSIZE = 8192; + CHRRAM = (uint8*)FCEU_gmalloc(CHRRAMSIZE); + SetupCartCHRMapping(0x10, CHRRAM, CHRRAMSIZE, 1); + AddExState(CHRRAM, CHRRAMSIZE, 0, "CHRR"); + } } /* ---------------------------- Mapper 76 ------------------------------- */