diff --git a/src/boards/195.c b/src/boards/195.c new file mode 100644 index 0000000..f956a1a --- /dev/null +++ b/src/boards/195.c @@ -0,0 +1,97 @@ +/* FCEUmm - NES/Famicom Emulator + * + * Copyright notice for this file: + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 + */ +#include "mapinc.h" +#include "mmc3.h" + +writefunc writePPU; +static uint8 *CHRRAM; +static uint32 CHRRAMSIZE; +static uint8 mask; +static uint8 compare; +extern uint32 RefreshAddr; + +static void Mapper195_CHRWrap(uint32 A, uint8 V) { + if ((V &mask) ==compare) + setchr1r(0x10, A, V); + else + setchr1r(0, A, V); +} + +static const uint8 compares[8] = { 0x28, 0x00, 0x4C, 0x64, 0x46, 0x7C, 0x04, 0xFF }; +static DECLFW(Mapper195_InterceptPPUWrite) { + if (RefreshAddr <0x2000) { + int addr =RefreshAddr; + int reg, bank; + + if (MMC3_cmd &0x80) addr ^=0x1000; + if (addr <0x1000) + reg =addr >>11; + else + reg =(addr >>10) -2; + + bank =DRegBuf[reg]; + if (bank &0x80) { + if (bank &0x10) { + mask =0x00; + compare =0xFF; + } else { + int index =(bank &0x02? 1: 0) | (bank &0x08? 2: 0) | (bank &0x40? 4: 0); + mask =bank &0x40? 0xFE: 0xFC; + compare =compares[index]; + } + FixMMC3CHR(MMC3_cmd); + } + } + writePPU(A, V); +} + +static void Mapper195_Power(void) { + mask =0xFC; + compare =0x00; + GenMMC3Power(); + setprg4r(0x10, 0x5000, 2); + SetWriteHandler(0x5000, 0x5FFF, CartBW); + SetReadHandler(0x5000, 0x5FFF, CartBR); + + if (GetWriteHandler(0x2007) !=Mapper195_InterceptPPUWrite) { + writePPU =GetWriteHandler(0x2007); + SetWriteHandler(0x2007, 0x2007, Mapper195_InterceptPPUWrite); + } +} + +void Mapper195_Close(void) { + if (CHRRAM) + FCEU_gfree(CHRRAM); + CHRRAM = NULL; +} + +void Mapper195_Init(CartInfo *info) { + GenMMC3_Init(info, 512, 256, 16, info->battery); + cwrap = Mapper195_CHRWrap; + info->Power = Mapper195_Power; + info->Reset = MMC3RegReset; + info->Close = Mapper195_Close; + CHRRAMSIZE =4096; + CHRRAM =(uint8*)FCEU_gmalloc(CHRRAMSIZE); + SetupCartCHRMapping(0x10, CHRRAM, CHRRAMSIZE, 1); + AddExState(CHRRAM, CHRRAMSIZE, 0, "CHRR"); + AddExState(&mask, 1, 0, "EXP0"); + AddExState(&compare, 1, 0, "EXP1"); +} diff --git a/src/boards/199.c b/src/boards/199.c index c6cd39f..16beb17 100644 --- a/src/boards/199.c +++ b/src/boards/199.c @@ -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; } diff --git a/src/boards/268.c b/src/boards/268.c index 9f2a966..328fd90 100644 --- a/src/boards/268.c +++ b/src/boards/268.c @@ -46,7 +46,8 @@ static void Mapper268_PRGWrap(uint32 A, uint8 V) { prgOffset =EXPREGS[3] &0x00E |EXPREGS[0] <<4 &0x070 |EXPREGS[1] <<4 &0x080 - |EXPREGS[1] <<7 &0x300 + |EXPREGS[1] <<6 &0x100 + |EXPREGS[1] <<8 &0x200 |EXPREGS[0] <<6 &0xC00; break; case 4: /* LD622D: PRG A20-21 moved to register 0 */ @@ -67,7 +68,10 @@ static void Mapper268_PRGWrap(uint32 A, uint8 V) { break; } prgOffset &=~(prgMaskMMC3 | prgMaskGNROM); - setprg8(A, V &prgMaskMMC3 | prgOffset | A >>13 &prgMaskGNROM); + setprg8(A, V &prgMaskMMC3 | prgOffset | A >>13 &prgMaskGNROM); + + /* CHR-RAM write protect on submapper 8/9) */ + SetupCartCHRMapping(0, CHRptr[0], CHRsize[0], (submapper &~1) ==8 && EXPREGS[0] &0x10? 0: 1); } static void Mapper268_CHRWrap(uint32 A, uint8 V) { diff --git a/src/boards/354.c b/src/boards/354.c new file mode 100644 index 0000000..0b4d731 --- /dev/null +++ b/src/boards/354.c @@ -0,0 +1,92 @@ +/* FCEUmm - NES/Famicom Emulator + * + * Copyright notice for this file: + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 + */ + +#include "mapinc.h" + +static uint16 latchAddr; +static uint8 latchData; +static uint8 submapper; + +static SFORMAT StateRegs[] = +{ + { &latchAddr, 2, "ADDR" }, + { &latchData, 1, "DATA" }, + { 0 } +}; + +static void Mapper354_Sync(void) +{ + int prg =latchData &0x3F | latchAddr <<2 &0x40 | latchAddr >>5 &0x80; + switch(latchAddr &7) + { + case 0: case 4: + setprg32(0x8000, prg >>1); + break; + case 1: + setprg16(0x8000, prg); + setprg16(0xC000, prg |7); + break; + case 2: case 6: + setprg8(0x8000, prg <<1 | latchData >>7); + setprg8(0xA000, prg <<1 | latchData >>7); + setprg8(0xC000, prg <<1 | latchData >>7); + setprg8(0xE000, prg <<1 | latchData >>7); + break; + case 3: case 7: + setprg16(0x8000, prg); + setprg16(0xC000, prg); + break; + case 5: + setprg8(0x6000, prg <<1 | latchData >>7); + setprg32(0x8000, prg >>1 |3); + break; + } + setchr8(0); + setmirror(latchData &0x40? MI_H: MI_V); +} + +static DECLFW(Mapper354_WriteLatch) +{ + latchData =V; + latchAddr =A &0xFFFF; + Mapper354_Sync(); +} + +static void Mapper354_Reset(void) +{ + latchAddr =latchData =0; + Mapper354_Sync(); +} + +static void Mapper354_Power(void) +{ + latchAddr =latchData =0; + SetReadHandler(0x6000, 0xFFFF, CartBR); + SetWriteHandler(submapper ==1? 0xE000: 0xF000, 0xFFFF, Mapper354_WriteLatch); + Mapper354_Sync(); +} + +void Mapper354_Init(CartInfo *info) +{ + submapper = info->submapper; + info->Power =Mapper354_Power; + info->Reset =Mapper354_Reset; + AddExState(StateRegs, ~0, 0, 0); +} diff --git a/src/boards/452.c b/src/boards/452.c index 5b8b3c9..bd83f51 100644 --- a/src/boards/452.c +++ b/src/boards/452.c @@ -18,44 +18,85 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - + /* DS-9-27. Absolutely insane PCB that overlays 8 KiB of WRAM into a selectable position between $8000 and $E000. */ - + #include "mapinc.h" static uint8 *WRAM; static uint32 WRAMSIZE; static uint16 latch[2]; +static uint8 submapper; +static void SetWRAM(uint16 A) { + setprg8r(0x10, A, 0); + SetWriteHandler(A, A |0x1FFF, CartBW); +} + +static DECLFW(Mapper452_WriteLatch); static void Mapper452_Sync(void) { - uint8 wramBank = latch[1] >>3 &6 |8; - if (latch[1] &2) { - setprg8(0x8000, latch[0] >>1); - setprg8(0xA000, latch[0] >>1); - setprg8(0xC000, latch[0] >>1); - setprg8(0xE000, latch[0] >>1); - setprg8r(0x10, (wramBank ^4) <<12, 0); - } else - if (latch[1] &8) { - setprg8(0x8000, latch[0] >>1 &~1 |0); - setprg8(0xA000, latch[0] >>1 &~1 |1); - setprg8(0xC000, latch[0] >>1 &~1 |2); - setprg8(0xE000, latch[0] >>1 &~1 |3 | latch[1] &4 | (latch[1] &0x04 && latch[1] &0x40? 8: 0)); + SetWriteHandler(0x8000, 0xFFFF, Mapper452_WriteLatch); + if (submapper ==1) { + switch(latch[0] &0xF000) { + case 0xA000: + setprg16(0x8000, latch[0] >>1); + setprg8 (0xC000, 0); + SetWRAM(latch[0] <<4 &0x6000 |0x8000); + break; + case 0xC000: + setprg16(0x8000, latch[0] >>1 |0); + setprg16(0xC000, latch[0] >>1 |1); + SetWRAM(latch[0] <<4 &0x6000 |0x8000); + break; + case 0xD000: + setprg8(0x8000, latch[0]); + setprg8(0xA000, latch[0]); + setprg8(0xC000, latch[0]); + setprg8(0xE000, latch[0]); + SetWRAM(latch[0] <<4 &0x2000 |0x8000); + SetWRAM(latch[0] <<4 &0x2000 |0xC000); + break; + case 0xE000: + setprg16(0x8000, latch[0] >>1); + setprg16(0xC000, latch[0] &0x100? (latch[0] >>1 |7): 0); + SetWRAM(latch[0] <<4 &0x6000 |0x8000); + break; + default: + setprg16(0x8000, latch[0] >>1); + setprg16(0xC000, 0); + break; + } + setchr8(0); + setmirror(latch[0] &0x800? MI_H: MI_V); } else { - setprg16(0x8000, latch[0] >>2); - setprg16(0xC000, 0); + uint8 wramBank = latch[1] >>3 &6 |8; + if (latch[1] &2) { + setprg8(0x8000, latch[0] >>1); + setprg8(0xA000, latch[0] >>1); + setprg8(0xC000, latch[0] >>1); + setprg8(0xE000, latch[0] >>1); + SetWRAM((wramBank ^4) <<12); + } else + if (latch[1] &8) { + setprg8(0x8000, latch[0] >>1 &~1 |0); + setprg8(0xA000, latch[0] >>1 &~1 |1); + setprg8(0xC000, latch[0] >>1 &~1 |2); + setprg8(0xE000, latch[0] >>1 &~1 |3 | latch[1] &4 | (latch[1] &0x04 && latch[1] &0x40? 8: 0)); + } else { + setprg16(0x8000, latch[0] >>2); + setprg16(0xC000, 0); + } + SetWRAM(wramBank <<12); + setchr8(0); + setmirror(latch [1] &1 ^1); } - setprg8r(0x10, wramBank <<12, 0); - setchr8(0); - setmirror(latch [1] &1 ^1); - } static DECLFW(Mapper452_WriteLatch) { - latch[0] =A &0xFFF; + CartBW(A, V); + latch[0] =A &0xFFFF; latch[1] =V; Mapper452_Sync(); - /* Do not relay to CartBW, as RAM mapped to locations other than $8000-$DFFF are not write-enabled. */ } static void Mapper452_Reset(void) { @@ -64,35 +105,32 @@ static void Mapper452_Reset(void) { } static void Mapper452_Power(void) { - latch[0] =latch[1] =0; + SetReadHandler(0x6000, 0xFFFF, CartBR); Mapper452_Sync(); - SetReadHandler(0x8000, 0xFFFF, CartBR); - SetWriteHandler(0x8000, 0xDFFF, Mapper452_WriteLatch); - SetWriteHandler(0xE000, 0xFFFF, CartBW); - FCEU_CheatAddRAM(WRAMSIZE >> 10, 0x6000, WRAM); + FCEU_CheatAddRAM(WRAMSIZE >> 10, 0x6000, WRAM); } static void Mapper452_Close(void) { - if (WRAM) - FCEU_gfree(WRAM); - WRAM = NULL; + if (WRAM) + FCEU_gfree(WRAM); + WRAM = NULL; } static void StateRestore(int version) { - Mapper452_Sync(); + Mapper452_Sync(); } void Mapper452_Init(CartInfo *info) { + submapper =info->submapper; info->Reset = Mapper452_Reset; info->Power = Mapper452_Power; info->Close = Mapper452_Close; GameStateRestore = StateRestore; - WRAMSIZE = 8192; - WRAM = (uint8*) FCEU_gmalloc(WRAMSIZE); + WRAMSIZE =8192; + WRAM =(uint8*) FCEU_gmalloc(WRAMSIZE); SetupCartPRGMapping(0x10, WRAM, WRAMSIZE, 1); AddExState(WRAM, WRAMSIZE, 0, "WRAM"); - AddExState(&latch, 4, 0, "LATC"); } diff --git a/src/boards/addrlatch.c b/src/boards/addrlatch.c index dd67b51..a989010 100644 --- a/src/boards/addrlatch.c +++ b/src/boards/addrlatch.c @@ -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); } diff --git a/src/boards/mmc3.c b/src/boards/mmc3.c index b90e7cb..864e498 100644 --- a/src/boards/mmc3.c +++ b/src/boards/mmc3.c @@ -1007,31 +1007,6 @@ void Mapper194_Init(CartInfo *info) { AddExState(CHRRAM, CHRRAMSIZE, 0, "CHRR"); } -/* ---------------------------- Mapper 195 ------------------------------- */ -static void M195CW(uint32 A, uint8 V) { - if (V <= 3) /* Crystalis (c).nes, Captain Tsubasa Vol 2 - Super Striker (C) */ - setchr1r(0x10, A, V); - else - setchr1r(0, A, V); -} - -static void M195Power(void) { - GenMMC3Power(); - setprg4r(0x10, 0x5000, 2); - SetWriteHandler(0x5000, 0x5fff, CartBW); - SetReadHandler(0x5000, 0x5fff, CartBR); -} - -void Mapper195_Init(CartInfo *info) { - GenMMC3_Init(info, 512, 256, 16, info->battery); - cwrap = M195CW; - info->Power = M195Power; - CHRRAMSIZE = 4096; - CHRRAM = (uint8*)FCEU_gmalloc(CHRRAMSIZE); - SetupCartCHRMapping(0x10, CHRRAM, CHRRAMSIZE, 1); - AddExState(CHRRAM, CHRRAMSIZE, 0, "CHRR"); -} - /* ---------------------------- Mapper 196 ------------------------------- */ /* MMC3 board with optional command address line connection, allows to * make three-four different wirings to IRQ address lines and separately to @@ -1127,6 +1102,13 @@ void Mapper197_Init(CartInfo *info) { /* ---------------------------- Mapper 198 ------------------------------- */ +static void M198Power(void) { + GenMMC3Power(); + setprg4r(0x10, 0x5000, 2); + SetWriteHandler(0x5000, 0x5fff, CartBW); + SetReadHandler(0x5000, 0x5fff, CartBR); +} + static void M198PW(uint32 A, uint8 V) { if (V >= 0x50) /* Tenchi o Kurau II - Shokatsu Koumei Den (J) (C).nes */ setprg8(A, V & 0x4F); @@ -1137,7 +1119,7 @@ static void M198PW(uint32 A, uint8 V) { void Mapper198_Init(CartInfo *info) { GenMMC3_Init(info, 1024, 0, 16, info->battery); pwrap = M198PW; - info->Power = M195Power; + info->Power = M198Power; } /* ---------------------------- Mapper 205 ------------------------------ */ diff --git a/src/ines.c b/src/ines.c index 63755d7..aea8215 100644 --- a/src/ines.c +++ b/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 ) @@ -759,6 +759,7 @@ INES_BOARD_BEGIN() INES_BOARD( "891227", 350, BMC891227_Init ) INES_BOARD( "Techline XB", 351, Mapper351_Init ) INES_BOARD( "Super Mario Family", 353, Mapper353_Init ) + INES_BOARD( "FAM250/81-01-39-C/SCHI-24",354, Mapper354_Init ) INES_BOARD( "3D-BLOCK", 355, UNL3DBlock_Init ) INES_BOARD( "7-in-1 Rockman (JY-208)", 356, Mapper356_Init ) INES_BOARD( "Bit Corp 4-in-1", 357, Mapper357_Init ) diff --git a/src/ines.h b/src/ines.h index 4f7bbdf..ef072a5 100644 --- a/src/ines.h +++ b/src/ines.h @@ -271,6 +271,7 @@ void Mapper330_Init(CartInfo *); void Mapper334_Init(CartInfo *); void Mapper351_Init(CartInfo *); void Mapper353_Init(CartInfo *); +void Mapper354_Init(CartInfo *); void Mapper356_Init(CartInfo *); void Mapper357_Init(CartInfo *); void Mapper358_Init(CartInfo *);