Merge pull request #537 from NRS-NewRisingSun/mappers6
Last mapper update in 2022
This commit is contained in:
97
src/boards/195.c
Normal file
97
src/boards/195.c
Normal file
@@ -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");
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
92
src/boards/354.c
Normal file
92
src/boards/354.c
Normal file
@@ -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);
|
||||
}
|
||||
108
src/boards/452.c
108
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");
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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 ------------------------------ */
|
||||
|
||||
13
src/ines.c
13
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 )
|
||||
|
||||
@@ -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 *);
|
||||
|
||||
Reference in New Issue
Block a user