Properly name a few Waixing mappers. Ambiguous mapper 199 changed to nesdev definition. Add mapper 227 submapper 2.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
12
src/ines.c
12
src/ines.c
@@ -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 )
|
||||
|
||||
Reference in New Issue
Block a user