Merge pull request #345 from negativeExponent/update_bmcfk23c
m176: Minor tweak to chr mixed ram/rom logic check and others
This commit is contained in:
@@ -19,6 +19,19 @@
|
|||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* BMC-FK23C (no WRAM, no DIP switch)
|
||||||
|
* BMC-FK23CA (no WRAM, with DIP switch)
|
||||||
|
* BMC-Super24in1SC03 (functional duplicate of BMC-FK23C)
|
||||||
|
* WAIXING-FS005 (alternative name: Bensheng BS-001) (32 KiB battery-backed WRAM, 8 KiB of CHR-RAM, no DIP switch)
|
||||||
|
* WAIXING-FS006 (optional 8 KiB battery-backed WRAM, optional 8 KiB of CHR-RAM, no DIP switch)
|
||||||
|
|
||||||
|
* Three incompatible subtypes exist that do not correspond to these UNIF board names. No submappers have been proposed, as the subtypes can be easily discerned heuristically by looking at ROM sizes:
|
||||||
|
|
||||||
|
* Subtype 0, ROM size other than specified below: boot with Extended MMC3 mode disabled (boots in first 512 KiB of PRG-ROM regardless of ROM size)
|
||||||
|
* Subtype 1, 1024 KiB PRG-ROM, 1024 KiB CHR-ROM: boot with Extended MMC3 mode enabled (boots in last 512 KiB of the first 2 MiB of PRG-ROM)
|
||||||
|
* Subtype 2, 8192 or more KiB PRG-ROM, no CHR-ROM: Like Subtype 0, but MMC3 registers $46 and $47 swapped.
|
||||||
|
*/
|
||||||
|
|
||||||
/* 2020-3-14 - Refactoring based on latest sources */
|
/* 2020-3-14 - Refactoring based on latest sources */
|
||||||
/* TODO: Add database for ines 1.0 headers */
|
/* TODO: Add database for ines 1.0 headers */
|
||||||
|
|
||||||
@@ -41,9 +54,8 @@ static uint8 irq_enabled = 0;
|
|||||||
static uint8 irq_reload = 0;
|
static uint8 irq_reload = 0;
|
||||||
static uint8 cnrom_chr = 0;
|
static uint8 cnrom_chr = 0;
|
||||||
static uint8 dipswitch = 0;
|
static uint8 dipswitch = 0;
|
||||||
|
static uint8 subType = 0;
|
||||||
static uint8 is_bmcfk23ca = 0;
|
static uint8 is_bmcfk23ca = 0;
|
||||||
static uint8 subtype = 0;
|
|
||||||
|
|
||||||
static SFORMAT StateRegs[] = {
|
static SFORMAT StateRegs[] = {
|
||||||
{ fk23_regs, 4, "EXPR" },
|
{ fk23_regs, 4, "EXPR" },
|
||||||
@@ -57,6 +69,7 @@ static SFORMAT StateRegs[] = {
|
|||||||
{ &irq_count, 1, "IRQC" },
|
{ &irq_count, 1, "IRQC" },
|
||||||
{ &irq_latch, 1, "IRQL" },
|
{ &irq_latch, 1, "IRQL" },
|
||||||
{ &irq_enabled, 1, "IRQA" },
|
{ &irq_enabled, 1, "IRQA" },
|
||||||
|
{ &subType, 1, "SUBT" },
|
||||||
{ 0 }
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -74,10 +87,10 @@ static void cwrap(uint16 A, uint16 V)
|
|||||||
/* some workaround for chr rom / ram access */
|
/* some workaround for chr rom / ram access */
|
||||||
if (!UNIFchrrama && !CHRRAMSIZE)
|
if (!UNIFchrrama && !CHRRAMSIZE)
|
||||||
fk23_regs[0] &= ~0x20; /* chr rom with no chr ram always write to bank 0 */
|
fk23_regs[0] &= ~0x20; /* chr rom with no chr ram always write to bank 0 */
|
||||||
if (UNIFchrrama)
|
else if (UNIFchrrama && WRAM_EXTENDED && (mmc3_wram & 0x04))
|
||||||
fk23_regs[0] &= ~0x20; /* no chr rom, then chr ram is in bank 0 through UNIFchrrama */
|
|
||||||
if (UNIFchrrama && WRAM_EXTENDED && (mmc3_wram & 0x04))
|
|
||||||
fk23_regs[0] &= ~0x20;
|
fk23_regs[0] &= ~0x20;
|
||||||
|
else if (UNIFchrrama)
|
||||||
|
fk23_regs[0] &= ~0x20; /* no chr rom, then chr ram is in bank 0 through UNIFchrrama */
|
||||||
|
|
||||||
setchr1r((fk23_regs[0] & 0x20) >> 1, A, V);
|
setchr1r((fk23_regs[0] & 0x20) >> 1, A, V);
|
||||||
}
|
}
|
||||||
@@ -101,10 +114,9 @@ static void SyncCHR(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
uint16 cbase = INVERT_CHR ? 0x1000 : 0;
|
|
||||||
|
|
||||||
if (MMC3_EXTENDED)
|
if (MMC3_EXTENDED)
|
||||||
{
|
{
|
||||||
|
uint16 cbase = INVERT_CHR ? 0x1000 : 0;
|
||||||
uint16 outer = fk23_regs[2] << 3;
|
uint16 outer = fk23_regs[2] << 3;
|
||||||
|
|
||||||
cwrap(cbase ^ 0x0000, mmc3_regs[0] | outer);
|
cwrap(cbase ^ 0x0000, mmc3_regs[0] | outer);
|
||||||
@@ -119,6 +131,7 @@ static void SyncCHR(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
uint16 cbase = INVERT_CHR ? 0x1000 : 0;
|
||||||
uint8 mask = CHR_OUTER_BANK_SIZE ? 0x7F : 0xFF;
|
uint8 mask = CHR_OUTER_BANK_SIZE ? 0x7F : 0xFF;
|
||||||
uint16 outer = (fk23_regs[2] << 3) & ~mask;
|
uint16 outer = (fk23_regs[2] << 3) & ~mask;
|
||||||
|
|
||||||
@@ -166,9 +179,9 @@ static void SyncPRG(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
uint16 cbase = INVERT_PRG ? 0x4000 : 0;
|
||||||
uint8 mask = 0x3F >> prg_mode;
|
uint8 mask = 0x3F >> prg_mode;
|
||||||
uint16 outer = (prg_base << 1) & ~mask;
|
uint16 outer = (prg_base << 1) & ~mask;
|
||||||
uint16 cbase = INVERT_PRG ? 0x4000 : 0;
|
|
||||||
|
|
||||||
setprg8(0x8000 ^ cbase, (mmc3_regs[6] & mask) | outer);
|
setprg8(0x8000 ^ cbase, (mmc3_regs[6] & mask) | outer);
|
||||||
setprg8(0xA000, (mmc3_regs[7] & mask) | outer);
|
setprg8(0xA000, (mmc3_regs[7] & mask) | outer);
|
||||||
@@ -218,11 +231,42 @@ static DECLFW(WriteLo)
|
|||||||
{
|
{
|
||||||
if (((WRAM_EXTENDED == 0) || FK23_ENABLED) && (A & (0x10 << dipswitch)))
|
if (((WRAM_EXTENDED == 0) || FK23_ENABLED) && (A & (0x10 << dipswitch)))
|
||||||
{
|
{
|
||||||
fk23_regs[A & 3] = V;
|
switch (A & 3)
|
||||||
cnrom_chr = 0;
|
{
|
||||||
|
case 0:
|
||||||
|
if (fk23_regs[0] != V)
|
||||||
|
{
|
||||||
|
fk23_regs[0] = V;
|
||||||
SyncPRG();
|
SyncPRG();
|
||||||
SyncCHR();
|
SyncCHR();
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
if (fk23_regs[1] != V)
|
||||||
|
{
|
||||||
|
fk23_regs[1] = V;
|
||||||
|
SyncPRG();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
cnrom_chr = 0;
|
||||||
|
if (fk23_regs[2] != V)
|
||||||
|
{
|
||||||
|
fk23_regs[2] = V;
|
||||||
|
SyncPRG();
|
||||||
|
SyncCHR();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
if (fk23_regs[3] != V)
|
||||||
|
{
|
||||||
|
fk23_regs[3] = V;
|
||||||
|
SyncPRG();
|
||||||
|
SyncCHR();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
/* FK23C Registers disabled, $5000-$5FFF maps to the second 4 KiB of the 8 KiB WRAM bank 2 */
|
/* FK23C Registers disabled, $5000-$5FFF maps to the second 4 KiB of the 8 KiB WRAM bank 2 */
|
||||||
CartBW(A, V);
|
CartBW(A, V);
|
||||||
@@ -258,7 +302,7 @@ static DECLFW(WriteHi)
|
|||||||
|
|
||||||
/* Subtype 2, 8192 or more KiB PRG-ROM, no CHR-ROM: Like Subtype 0,
|
/* Subtype 2, 8192 or more KiB PRG-ROM, no CHR-ROM: Like Subtype 0,
|
||||||
* but MMC3 registers $46 and $47 swapped. */
|
* but MMC3 registers $46 and $47 swapped. */
|
||||||
if (UNIFchrrama && ((ROM_size << 4) > 8192))
|
if (subType == 2)
|
||||||
{
|
{
|
||||||
if (V == 0x46)
|
if (V == 0x46)
|
||||||
V = 0x47;
|
V = 0x47;
|
||||||
@@ -355,7 +399,7 @@ static void Reset(void)
|
|||||||
mmc3_wram = 0x80;
|
mmc3_wram = 0x80;
|
||||||
mmc3_ctrl = mmc3_mirr = irq_count = irq_latch = irq_enabled = 0;
|
mmc3_ctrl = mmc3_mirr = irq_count = irq_latch = irq_enabled = 0;
|
||||||
|
|
||||||
if (subtype == 1)
|
if (subType == 1)
|
||||||
fk23_regs[1] = 0x20;
|
fk23_regs[1] = 0x20;
|
||||||
|
|
||||||
Sync();
|
Sync();
|
||||||
@@ -379,7 +423,7 @@ static void Power(void)
|
|||||||
mmc3_wram = 0x80;
|
mmc3_wram = 0x80;
|
||||||
mmc3_ctrl = mmc3_mirr = irq_count = irq_latch = irq_enabled = 0;
|
mmc3_ctrl = mmc3_mirr = irq_count = irq_latch = irq_enabled = 0;
|
||||||
|
|
||||||
if (subtype == 1)
|
if (subType == 1)
|
||||||
fk23_regs[1] = 0x20;
|
fk23_regs[1] = 0x20;
|
||||||
|
|
||||||
Sync();
|
Sync();
|
||||||
@@ -407,12 +451,12 @@ static void Close(void)
|
|||||||
CHRRAM = NULL;
|
CHRRAM = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void StateRestore(void)
|
static void StateRestore(int version)
|
||||||
{
|
{
|
||||||
Sync();
|
Sync();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BMCFK23C_Init(CartInfo *info)
|
void GenBMCFK23C_Init(CartInfo *info)
|
||||||
{
|
{
|
||||||
is_bmcfk23ca = 0;
|
is_bmcfk23ca = 0;
|
||||||
|
|
||||||
@@ -423,28 +467,6 @@ void BMCFK23C_Init(CartInfo *info)
|
|||||||
GameStateRestore = StateRestore;
|
GameStateRestore = StateRestore;
|
||||||
AddExState(StateRegs, ~0, 0, 0);
|
AddExState(StateRegs, ~0, 0, 0);
|
||||||
|
|
||||||
if (((ROM_size << 4) == 1024) && ((VROM_size << 3) == 1024))
|
|
||||||
subtype = 1;
|
|
||||||
|
|
||||||
if (info->iNES2)
|
|
||||||
{
|
|
||||||
if (!UNIFchrrama)
|
|
||||||
CHRRAMSIZE = info->CHRRamSize + info->CHRRamSaveSize;
|
|
||||||
WRAMSIZE = info->PRGRamSize + info->PRGRamSaveSize;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!UNIFchrrama)
|
|
||||||
{
|
|
||||||
/* Rockman I - VI */
|
|
||||||
if (ROM_size == 128 && VROM_size == 64)
|
|
||||||
CHRRAMSIZE = 8 * 1024;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* For compatibility with waixing games, set wram to 32K */
|
|
||||||
WRAMSIZE = 32 * 1024;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (CHRRAMSIZE)
|
if (CHRRAMSIZE)
|
||||||
{
|
{
|
||||||
CHRRAM = (uint8 *)FCEU_gmalloc(CHRRAMSIZE);
|
CHRRAM = (uint8 *)FCEU_gmalloc(CHRRAMSIZE);
|
||||||
@@ -464,10 +486,70 @@ void BMCFK23C_Init(CartInfo *info)
|
|||||||
info->SaveGameLen[0] = info->PRGRamSaveSize ? info->PRGRamSaveSize : WRAMSIZE;
|
info->SaveGameLen[0] = info->PRGRamSaveSize ? info->PRGRamSaveSize : WRAMSIZE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
subType = 0;
|
||||||
|
if (((ROM_size * 16) == 1024) && ((VROM_size * 8) == 1024))
|
||||||
|
subType = 1;
|
||||||
|
else if (UNIFchrrama && ((ROM_size << 4) >= 8192))
|
||||||
|
subType = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* generic entry point for mapper 176 / bmcfk23c carts */
|
||||||
|
void BMCFK23C_Init(CartInfo *info) {
|
||||||
|
/* prepare ROM params before loading... */
|
||||||
|
if (info->iNES2)
|
||||||
|
{
|
||||||
|
if (!UNIFchrrama)
|
||||||
|
CHRRAMSIZE = info->CHRRamSize + info->CHRRamSaveSize;
|
||||||
|
WRAMSIZE = info->PRGRamSize + info->PRGRamSaveSize;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!UNIFchrrama)
|
||||||
|
{
|
||||||
|
/* Rockman I - VI uses mixed chr rom/ram */
|
||||||
|
if ((ROM_size * 16) == 2048 && (VROM_size * 8) == 512)
|
||||||
|
CHRRAMSIZE = 8 * 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Only waixing boards has battery backed wram, so only declare
|
||||||
|
* size when battery is set */
|
||||||
|
if (info->battery)
|
||||||
|
WRAMSIZE = 32 * 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
GenBMCFK23C_Init(info);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* UNIF Boards, declares so we can for chr mixed mode size and wram if any */
|
||||||
|
|
||||||
void BMCFK23CA_Init(CartInfo *info)
|
void BMCFK23CA_Init(CartInfo *info)
|
||||||
{
|
{
|
||||||
BMCFK23C_Init(info);
|
/* can use mixed chr rom/ram */
|
||||||
|
if (!UNIFchrrama)
|
||||||
|
CHRRAMSIZE = 8 * 1024;
|
||||||
|
|
||||||
|
GenBMCFK23C_Init(info);
|
||||||
is_bmcfk23ca = 1;
|
is_bmcfk23ca = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* BMC-Super24in1SC03 */
|
||||||
|
void Super24_Init(CartInfo *info) {
|
||||||
|
/* can use mixed chr rom/ram */
|
||||||
|
if (!UNIFchrrama)
|
||||||
|
CHRRAMSIZE = 8 * 1024;
|
||||||
|
|
||||||
|
GenBMCFK23C_Init(info);
|
||||||
|
}
|
||||||
|
|
||||||
|
void WAIXINGFS005_Init(CartInfo *info)
|
||||||
|
{
|
||||||
|
/* can have 8 or 32 KB battery-backed prg ram
|
||||||
|
* plus 8 KB chr for these boards */
|
||||||
|
if (!UNIFchrrama)
|
||||||
|
CHRRAMSIZE = 8 * 1024;
|
||||||
|
|
||||||
|
WRAMSIZE = 32 * 1024;
|
||||||
|
|
||||||
|
GenBMCFK23C_Init(info);
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,96 +0,0 @@
|
|||||||
/* FCE Ultra - NES/Famicom Emulator
|
|
||||||
*
|
|
||||||
* Copyright notice for this file:
|
|
||||||
* Copyright (C) 2005 CaH4e3
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* BMC-Super24in1SC03, basically is just a duplicate of BMC-FK23C (mapper 176)
|
|
||||||
* This should be merge with the said mapper soon... */
|
|
||||||
|
|
||||||
#include "mapinc.h"
|
|
||||||
#include "mmc3.h"
|
|
||||||
|
|
||||||
static uint8 *CHRRAM = NULL;
|
|
||||||
static const int masko8[8] = { 63, 31, 15, 1, 3, 0, 0, 0 };
|
|
||||||
|
|
||||||
static void Super24PW(uint32 A, uint8 V) {
|
|
||||||
setprg8(A, (EXPREGS[1] << 1) | (V & masko8[EXPREGS[0] & 0x7]));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void Super24CW(uint32 A, uint8 V) {
|
|
||||||
setchr1r((EXPREGS[0] & 0x20) >> 1, A, (EXPREGS[2] << 3) | V);
|
|
||||||
}
|
|
||||||
|
|
||||||
static DECLFW(Super24Write) {
|
|
||||||
switch (A & 0xF003) {
|
|
||||||
case 0x5000:
|
|
||||||
if (EXPREGS[0] != V) {
|
|
||||||
EXPREGS[0] = V;
|
|
||||||
FixMMC3PRG(MMC3_cmd);
|
|
||||||
FixMMC3CHR(MMC3_cmd);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 0x5001:
|
|
||||||
if (EXPREGS[1] != V) {
|
|
||||||
EXPREGS[1] = V;
|
|
||||||
FixMMC3PRG(MMC3_cmd);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 0x5002:
|
|
||||||
if (EXPREGS[2] != V) {
|
|
||||||
EXPREGS[2] = V;
|
|
||||||
FixMMC3CHR(MMC3_cmd);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void Super24Power(void) {
|
|
||||||
EXPREGS[0] = 0x24;
|
|
||||||
EXPREGS[1] = 0x9F;
|
|
||||||
EXPREGS[2] = 0;
|
|
||||||
GenMMC3Power();
|
|
||||||
SetWriteHandler(0x5000, 0x7FFF, Super24Write);
|
|
||||||
SetReadHandler(0x8000, 0xFFFF, CartBR);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void Super24Reset(void) {
|
|
||||||
EXPREGS[0] = 0x24;
|
|
||||||
EXPREGS[1] = 0x9F;
|
|
||||||
EXPREGS[2] = 0;
|
|
||||||
MMC3RegReset();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void Super24Close(void) {
|
|
||||||
GenMMC3Close();
|
|
||||||
if (CHRRAM)
|
|
||||||
FCEU_gfree(CHRRAM);
|
|
||||||
CHRRAM = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Super24_Init(CartInfo *info) {
|
|
||||||
GenMMC3_Init(info, 512, 512, 0, 0);
|
|
||||||
info->Power = Super24Power;
|
|
||||||
info->Reset = Super24Reset;
|
|
||||||
info->Close = Super24Close;
|
|
||||||
cwrap = Super24CW;
|
|
||||||
pwrap = Super24PW;
|
|
||||||
CHRRAM = (uint8*)FCEU_gmalloc(8192);
|
|
||||||
SetupCartCHRMapping(0x10, CHRRAM, 8192, 1);
|
|
||||||
AddExState(CHRRAM, 8192, 0, "CHRR");
|
|
||||||
AddExState(EXPREGS, 3, 0, "BIG2");
|
|
||||||
}
|
|
||||||
@@ -382,7 +382,6 @@
|
|||||||
{ 0x33751782, 4, -1 }, /* Zoda's Revenge - StarTropics II (USA, Europe) (Virtual Console).nes */
|
{ 0x33751782, 4, -1 }, /* Zoda's Revenge - StarTropics II (USA, Europe) (Virtual Console).nes */
|
||||||
{ 0x9BBF3E5D, 15, -1 }, /* 168-in-1 New Contra Function 16 */
|
{ 0x9BBF3E5D, 15, -1 }, /* 168-in-1 New Contra Function 16 */
|
||||||
|
|
||||||
|
|
||||||
/* TXC / Sachen / JoyVan */
|
/* TXC / Sachen / JoyVan */
|
||||||
|
|
||||||
/* This cart does not work anymore with latest mapper implementation.
|
/* This cart does not work anymore with latest mapper implementation.
|
||||||
@@ -399,12 +398,12 @@
|
|||||||
{ 0x503566b2, 366, 0 }, /* 4-in-1 (K-3131SS, GN-45) [p1][!] */
|
{ 0x503566b2, 366, 0 }, /* 4-in-1 (K-3131SS, GN-45) [p1][!] */
|
||||||
{ 0xDB2D2D88, 369, -1 }, /* Super Mario Bros. Party.nes */
|
{ 0xDB2D2D88, 369, -1 }, /* Super Mario Bros. Party.nes */
|
||||||
|
|
||||||
|
|
||||||
/* ines mappers that uses unif boards */
|
/* ines mappers that uses unif boards */
|
||||||
|
|
||||||
{ 0x0073dbd8, 260, -1 }, /* 2-in-1 - Mortal Kombat V Turbo 30 + Super Aladdin (Unl) [p1][!] */
|
{ 0x0073dbd8, 260, -1 }, /* 2-in-1 - Mortal Kombat V Turbo 30 + Super Aladdin (Unl) [p1][!] */
|
||||||
{ 0x4dc6107d, 260, -1 }, /* 2-in-1 - Boogerman + Flintstones, The (Unl) [p1][!] */
|
{ 0x4dc6107d, 260, -1 }, /* 2-in-1 - Boogerman + Flintstones, The (Unl) [p1][!] */
|
||||||
{ 0xb72b2cf4, 260, -1 }, /* 2-in-1 - Aladdin + Lion King, The (Unl) [p1][!] */
|
{ 0xb72b2cf4, 260, -1 }, /* 2-in-1 - Aladdin + Lion King, The (Unl) [p1][!] */
|
||||||
|
{ 0x5638BA59, 260, -1 }, /* Mortal Kombat Trilogy - 8 People (M1274) (Ch) [!].nes */
|
||||||
{ 0xa1dc16c0, 262, -1 }, /* Street Heroes (Asia) (Ja) (Unl */
|
{ 0xa1dc16c0, 262, -1 }, /* Street Heroes (Asia) (Ja) (Unl */
|
||||||
{ 0x1df10182, 263, -1 }, /* Boogerman II (Rex-Soft) [!].nes */
|
{ 0x1df10182, 263, -1 }, /* Boogerman II (Rex-Soft) [!].nes */
|
||||||
{ 0xf956fcea, 521, -1 }, /* Korean Igo (Korea) (Unl) */
|
{ 0xf956fcea, 521, -1 }, /* Korean Igo (Korea) (Unl) */
|
||||||
|
|||||||
@@ -571,7 +571,7 @@ static BMAPPING bmap[] = {
|
|||||||
{ "HP2018-A", 260, BMCHPxx_Init, 0 },
|
{ "HP2018-A", 260, BMCHPxx_Init, 0 },
|
||||||
{ "CHINA_ER_SAN2", 19, Mapper19_Init, 0 },
|
{ "CHINA_ER_SAN2", 19, Mapper19_Init, 0 },
|
||||||
{ "WAIXING-FW01", 227, Mapper227_Init, 0 },
|
{ "WAIXING-FW01", 227, Mapper227_Init, 0 },
|
||||||
{ "WAIXING-FS005", 176, BMCFK23C_Init, 0 },
|
{ "WAIXING-FS005", 176, WAIXINGFS005_Init, 0 },
|
||||||
{ "80013-B", 274, BMC80013B_Init, 0 },
|
{ "80013-B", 274, BMC80013B_Init, 0 },
|
||||||
{ "TH2131-1", 308, UNLTH21311_Init, 0 },
|
{ "TH2131-1", 308, UNLTH21311_Init, 0 },
|
||||||
{ "LH51", 309, LH51_Init, 0 },
|
{ "LH51", 309, LH51_Init, 0 },
|
||||||
|
|||||||
@@ -194,6 +194,7 @@ void BS110_Init(CartInfo *info);
|
|||||||
void WellNoDG450_Init(CartInfo *info);
|
void WellNoDG450_Init(CartInfo *info);
|
||||||
void AbG1l_Init(CartInfo *info);
|
void AbG1l_Init(CartInfo *info);
|
||||||
void KG256_Init(CartInfo *info);
|
void KG256_Init(CartInfo *info);
|
||||||
|
void WAIXINGFS005_Init(CartInfo *info);
|
||||||
|
|
||||||
#ifdef COPYFAMI
|
#ifdef COPYFAMI
|
||||||
void MapperCopyFamiMMC3_Init(CartInfo *info);
|
void MapperCopyFamiMMC3_Init(CartInfo *info);
|
||||||
|
|||||||
Reference in New Issue
Block a user