Properly name a few Waixing mappers. Ambiguous mapper 199 changed to nesdev definition. Add mapper 227 submapper 2.

This commit is contained in:
NewRisingSun
2022-12-30 00:13:22 +01:00
parent f6b5f60399
commit a99b4b11bd
3 changed files with 22 additions and 81 deletions

View File

@@ -1,7 +1,7 @@
/* FCE Ultra - NES/Famicom Emulator
/* FCEUmm - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2006 CaH4e3
* Copyright (C) 2022
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,83 +16,24 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Dragon Ball Z 2 - Gekishin Freeza! (C)
* Dragon Ball Z Gaiden - Saiya Jin Zetsumetsu Keikaku (C)
* San Guo Zhi 2 (C)
*
*/
#include "mapinc.h"
#include "mmc3.h"
static uint8 *CHRRAM = NULL;
static uint32 CHRRAMSIZE;
static void M199PW(uint32 A, uint8 V) {
setprg8(A, V);
setprg8(0xC000, EXPREGS[0]);
setprg8(0xE000, EXPREGS[1]);
static void Mapper199_CHRWrap(uint32 A, uint8 V) {
setchr8(0); /* Unbanked CHR RAM */
}
static void M199CW(uint32 A, uint8 V) {
setchr1r((V < 8) ? 0x10 : 0x00, A, V);
setchr1r((DRegBuf[0] < 8) ? 0x10 : 0x00, 0x0000, DRegBuf[0]);
setchr1r((EXPREGS[2] < 8) ? 0x10 : 0x00, 0x0400, EXPREGS[2]);
setchr1r((DRegBuf[1] < 8) ? 0x10 : 0x00, 0x0800, DRegBuf[1]);
setchr1r((EXPREGS[3] < 8) ? 0x10 : 0x00, 0x0c00, EXPREGS[3]);
}
static void M199MW(uint8 V) {
/* FCEU_printf("%02x\n",V); */
switch (V & 3) {
case 0: setmirror(MI_V); break;
case 1: setmirror(MI_H); break;
case 2: setmirror(MI_0); break;
case 3: setmirror(MI_1); break;
}
}
static DECLFW(M199Write) {
if ((A == 0x8001) && (MMC3_cmd & 8)) {
EXPREGS[MMC3_cmd & 3] = V;
FixMMC3PRG(MMC3_cmd);
FixMMC3CHR(MMC3_cmd);
} else
if (A < 0xC000)
MMC3_CMDWrite(A, V);
else
MMC3_IRQWrite(A, V);
}
static void M199Power(void) {
EXPREGS[0] = ~1;
EXPREGS[1] = ~0;
EXPREGS[2] = 1;
EXPREGS[3] = 3;
static void Mapper199_Power(void) {
GenMMC3Power();
SetWriteHandler(0x8000, 0xFFFF, M199Write);
}
static void M199Close(void) {
GenMMC3Close();
if (CHRRAM)
FCEU_gfree(CHRRAM);
CHRRAM = NULL;
setprg4r(0x10, 0x5000, 2);
SetWriteHandler(0x5000, 0x5FFF, CartBW);
SetReadHandler(0x5000, 0x5FFF, CartBR);
}
void Mapper199_Init(CartInfo *info) {
GenMMC3_Init(info, 512, 256, 8, info->battery);
cwrap = M199CW;
pwrap = M199PW;
mwrap = M199MW;
info->Power = M199Power;
info->Close = M199Close;
CHRRAMSIZE = 8192;
CHRRAM = (uint8*)FCEU_gmalloc(CHRRAMSIZE);
SetupCartCHRMapping(0x10, CHRRAM, CHRRAMSIZE, 1);
AddExState(CHRRAM, CHRRAMSIZE, 0, "CHRR");
AddExState(EXPREGS, 4, 0, "EXPR");
GenMMC3_Init(info, 1024, 0, 16, info->battery);
cwrap = Mapper199_CHRWrap;
info->Power = Mapper199_Power;
info->Reset = MMC3RegReset;
}

View File

@@ -28,6 +28,7 @@ static readfunc defread;
static uint8 *WRAM = NULL;
static uint32 WRAMSIZE;
static uint32 hasBattery;
static uint32 submapper = 0;
static DECLFW(LatchWrite) {
latche = A;
@@ -267,7 +268,6 @@ void Mapper200_Init(CartInfo *info) {
/* 2020-3-6 - Support for 21-in-1 (CF-043) (2006-V) (Unl) [p1].nes which has mixed mirroring
* found at the time labeled as submapper 15
* 0x05658DED 128K PRG, 32K CHR */
static uint32 submapper = 0;
static void M201Sync(void) {
if (latche & 8 || submapper == 15) {
setprg32(0x8000, latche & 3);
@@ -281,8 +281,7 @@ static void M201Sync(void) {
}
void Mapper201_Init(CartInfo *info) {
submapper = 0;
if (info->submapper > 0) submapper = info->submapper;
submapper = info->submapper;
Latch_Init(info, M201Sync, NULL, 0xFFFF, 0x8000, 0xFFFF, 0);
}
@@ -398,7 +397,7 @@ static void M227Sync(void) {
setprg16(0xC000, p | 7);
} else {
setprg16(0x8000, p);
setprg16(0xC000, p & 0x38);
setprg16(0xC000, submapper ==2? 0: p & 0x38);
}
}
}
@@ -415,6 +414,7 @@ static void M227Sync(void) {
}
void Mapper227_Init(CartInfo *info) {
submapper =info->submapper;
Latch_Init(info, M227Sync, NULL, 0x0000, 0x8000, 0xFFFF, 1);
}

View File

@@ -583,7 +583,7 @@ INES_BOARD_BEGIN()
INES_BOARD( "BANDAI 24C01", 159, Mapper159_Init ) /* Different type of EEPROM on the bandai board */
INES_BOARD( "SA009", 160, SA009_Init )
/* INES_BOARD( "", 161, Mapper161_Init ) */
INES_BOARD( "", 162, Mapper162_Init )
INES_BOARD( "Waixing FS304", 162, Mapper162_Init )
INES_BOARD( "", 163, Mapper163_Init )
INES_BOARD( "", 164, Mapper164_Init )
INES_BOARD( "", 165, Mapper165_Init )
@@ -599,7 +599,7 @@ INES_BOARD_BEGIN()
INES_BOARD( "", 175, Mapper175_Init )
INES_BOARD( "BMCFK23C", 176, Mapper176_Init )
INES_BOARD( "", 177, Mapper177_Init )
INES_BOARD( "", 178, Mapper178_Init )
INES_BOARD( "Waixing FS305", 178, Mapper178_Init )
/* INES_BOARD( "", 179, Mapper179_Init ) */
INES_BOARD( "", 180, Mapper180_Init )
INES_BOARD( "", 181, Mapper181_Init )
@@ -613,21 +613,21 @@ INES_BOARD_BEGIN()
INES_BOARD( "", 189, Mapper189_Init )
INES_BOARD( "", 190, Mapper190_Init )
INES_BOARD( "", 191, Mapper191_Init )
INES_BOARD( "TW MMC3+VRAM Rev. B", 192, Mapper192_Init )
INES_BOARD( "Waixing FS308", 192, Mapper192_Init )
INES_BOARD( "NTDEC TC-112", 193, Mapper193_Init ) /* War in the Gulf */
INES_BOARD( "TW MMC3+VRAM Rev. C", 194, Mapper194_Init )
INES_BOARD( "TW MMC3+VRAM Rev. D", 195, Mapper195_Init )
INES_BOARD( "Waixing FS303", 195, Mapper195_Init )
INES_BOARD( "", 196, Mapper196_Init )
INES_BOARD( "", 197, Mapper197_Init )
INES_BOARD( "TW MMC3+VRAM Rev. E", 198, Mapper198_Init )
INES_BOARD( "", 199, Mapper199_Init )
INES_BOARD( "Waixing FS309", 199, Mapper199_Init )
INES_BOARD( "", 200, Mapper200_Init )
INES_BOARD( "21-in-1", 201, Mapper201_Init )
INES_BOARD( "", 202, Mapper202_Init )
INES_BOARD( "", 203, Mapper203_Init )
INES_BOARD( "", 204, Mapper204_Init )
INES_BOARD( "BMC 15-in-1/3-in-1", 205, Mapper205_Init )
INES_BOARD( "NAMCOT 108 Rev. C", 206, Mapper206_Init ) /* Deprecated, Used to be "DEIROM" whatever it means, but actually simple version of MMC3 */
INES_BOARD( "Nintendo DE(1)ROM", 206, Mapper206_Init )
INES_BOARD( "TAITO X1-005 Rev. B", 207, Mapper207_Init )
INES_BOARD( "", 208, Mapper208_Init )
INES_BOARD( "HUMMER/JY BOARD", 209, Mapper209_Init )