more mapper madness

This commit is contained in:
CaH4e3 2012-11-09 15:49:58 +00:00
parent 2de90cafdd
commit 4d763e782f
9 changed files with 594 additions and 513 deletions

View File

@ -16,88 +16,94 @@
* 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
* TXC mappers
*
* TXC mappers, originally much complex banksitching
*
* 01-22111-000 (05-00002-010) (132, 22211) - MGC-001 Qi Wang
* 01-22110-000 (52S ) - MGC-002 2-in-1 Gun
* 01-22111-100 (02-00002-010) (173 ) - MGC-008 Mahjong Block
* (079 ) - MGC-012 Poke Block
* 01-22110-200 (05-00002-010) (036 ) - MGC-014 Strike Wolf
* 01-22000-400 (05-00002-010) (036 ) - MGC-015 Policeman
* 01-22017-000 (05-PT017-080) (189 ) - MGC-017 Thunder Warrior
* 01-11160-000 (04-02310-000) ( , 11160) - MGC-023 6-in-1
* 01-22270-000 (05-00002-010) (132, 22211) - MGC-xxx Creatom
* 01-22200-400 (------------) (079 ) - ET.03 F-15 City War
* (172 ) - 1991 Du Ma Racing
*
*/
#include "mapinc.h"
static uint8 reg[4], cmd, is172, is173;
static SFORMAT StateRegs[]=
static SFORMAT StateRegs[] =
{
{reg, 4, "REGS"},
{&cmd, 1, "CMD"},
{0}
{ reg, 4, "REGS" },
{ &cmd, 1, "CMD" },
{ 0 }
};
static void Sync(void)
{
setprg32(0x8000,(reg[2]>>2)&1);
if(is172)
setchr8((((cmd^reg[2])>>3)&2)|(((cmd^reg[2])>>5)&1)); // 1991 DU MA Racing probably CHR bank sequence is WRONG, so it is possible to
// rearrange CHR banks for normal UNIF board and mapper 172 is unneccessary
else
setchr8(reg[2]&3);
static void Sync(void) {
setprg32(0x8000, (reg[2] >> 2) & 1);
if (is172)
setchr8((((cmd ^ reg[2]) >> 3) & 2) | (((cmd ^ reg[2]) >> 5) & 1)); // 1991 DU MA Racing probably CHR bank sequence is WRONG, so it is possible to
// rearrange CHR banks for normal UNIF board and mapper 172 is unneccessary
else
setchr8(reg[2] & 3);
}
static DECLFW(UNL22211WriteLo)
{
// FCEU_printf("bs %04x %02x\n",A,V);
reg[A&3]=V;
static DECLFW(UNL22211WriteLo) {
// FCEU_printf("bs %04x %02x\n",A,V);
reg[A & 3] = V;
}
static DECLFW(UNL22211WriteHi)
{
// FCEU_printf("bs %04x %02x\n",A,V);
cmd=V;
Sync();
static DECLFW(UNL22211WriteHi) {
// FCEU_printf("bs %04x %02x\n",A,V);
cmd = V;
Sync();
}
static DECLFR(UNL22211ReadLo)
{
return (reg[1]^reg[2])|(is173?0x01:0x40);
// if(reg[3])
// return reg[2];
// else
// return X.DB;
static DECLFR(UNL22211ReadLo) {
return (reg[1] ^ reg[2]) | (is173 ? 0x01 : 0x40);
// if(reg[3])
// return reg[2];
// else
// return X.DB;
}
static void UNL22211Power(void)
{
Sync();
SetReadHandler(0x8000,0xFFFF,CartBR);
SetReadHandler(0x4100,0x4100,UNL22211ReadLo);
SetWriteHandler(0x4100,0x4103,UNL22211WriteLo);
SetWriteHandler(0x8000,0xFFFF,UNL22211WriteHi);
static void UNL22211Power(void) {
Sync();
SetReadHandler(0x8000, 0xFFFF, CartBR);
SetReadHandler(0x4100, 0x4100, UNL22211ReadLo);
SetWriteHandler(0x4100, 0x4103, UNL22211WriteLo);
SetWriteHandler(0x8000, 0xFFFF, UNL22211WriteHi);
}
static void StateRestore(int version)
{
Sync();
static void StateRestore(int version) {
Sync();
}
void UNL22211_Init(CartInfo *info)
{
is172=0;
is173=0;
info->Power=UNL22211Power;
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
void UNL22211_Init(CartInfo *info) {
is172 = 0;
is173 = 0;
info->Power = UNL22211Power;
GameStateRestore = StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}
void Mapper172_Init(CartInfo *info)
{
is172=1;
is173=0;
info->Power=UNL22211Power;
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
void Mapper172_Init(CartInfo *info) {
is172 = 1;
is173 = 0;
info->Power = UNL22211Power;
GameStateRestore = StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}
void Mapper173_Init(CartInfo *info)
{
is172=0;
is173=1;
info->Power=UNL22211Power;
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
void Mapper173_Init(CartInfo *info) {
is172 = 0;
is173 = 1;
info->Power = UNL22211Power;
GameStateRestore = StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}

View File

@ -16,74 +16,77 @@
* 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
*
* Many-in-one hacked mapper crap.
*
* Original BNROM is actually AxROM variations without mirroring control,
* and haven't SRAM on-board, so it must be removed from here
*
* Difficult banking is what NINA board doing, most hacks for 34 mapper are
* NINA hacks, so this is actually 34 mapper
*
*/
#include "mapinc.h"
static uint8 regs[3];
static uint8 *WRAM=NULL;
static uint8 *WRAM = NULL;
static uint32 WRAMSIZE;
static SFORMAT StateRegs[]=
static SFORMAT StateRegs[] =
{
{regs, 3, "REGS"},
{0}
{ regs, 3, "REGS" },
{ 0 }
};
static void Sync(void)
{
setprg8r(0x10,0x6000,0);
setprg32(0x8000,regs[0]);
setchr4(0x0000,regs[1]);
setchr4(0x1000,regs[2]);
static void Sync(void) {
setprg8r(0x10, 0x6000, 0);
setprg32(0x8000, regs[0]);
setchr4(0x0000, regs[1]);
setchr4(0x1000, regs[2]);
}
static DECLFW(M34Write)
{
if(A>=0x8000)
regs[0] = V;
else
switch(A)
{
case 0x7ffd: regs[0] = V; break;
case 0x7ffe: regs[1] = V; break;
case 0x7fff: regs[2] = V; break;
}
Sync();
static DECLFW(M34Write) {
if (A >= 0x8000)
regs[0] = V;
else
switch (A) {
case 0x7ffd: regs[0] = V; break;
case 0x7ffe: regs[1] = V; break;
case 0x7fff: regs[2] = V; break;
}
Sync();
}
static void M34Power(void)
{
regs[0] = 0;
Sync();
SetReadHandler(0x6000,0x7ffc,CartBR);
SetWriteHandler(0x6000,0x7ffc,CartBW);
SetReadHandler(0x8000,0xffff,CartBR);
SetWriteHandler(0x7ffd,0xffff,M34Write);
static void M34Power(void) {
regs[0] = regs[1] = 0;
regs[2] = 1;
Sync();
SetReadHandler(0x6000, 0x7ffc, CartBR);
SetWriteHandler(0x6000, 0x7ffc, CartBW);
SetReadHandler(0x8000, 0xffff, CartBR);
SetWriteHandler(0x7ffd, 0xffff, M34Write);
}
static void M34Close(void)
{
if(WRAM)
FCEU_gfree(WRAM);
WRAM=NULL;
static void M34Close(void) {
if (WRAM)
FCEU_gfree(WRAM);
WRAM = NULL;
}
static void StateRestore(int version)
{
Sync();
static void StateRestore(int version) {
Sync();
}
void Mapper34_Init(CartInfo *info)
{
info->Power=M34Power;
info->Close=M34Close;
GameStateRestore=StateRestore;
void Mapper34_Init(CartInfo *info) {
info->Power = M34Power;
info->Close = M34Close;
GameStateRestore = StateRestore;
WRAMSIZE=8192;
WRAM=(uint8*)FCEU_gmalloc(WRAMSIZE);
SetupCartPRGMapping(0x10,WRAM,WRAMSIZE,1);
AddExState(WRAM, WRAMSIZE, 0, "WRAM");
WRAMSIZE = 8192;
WRAM = (uint8*)FCEU_gmalloc(WRAMSIZE);
SetupCartPRGMapping(0x10, WRAM, WRAMSIZE, 1);
AddExState(WRAM, WRAMSIZE, 0, "WRAM");
AddExState(&StateRegs, ~0, 0, 0);
AddExState(&StateRegs, ~0, 0, 0);
}

View File

@ -44,8 +44,8 @@ static void LatchPower(void) {
if (WRAM) {
SetReadHandler(0x6000, 0x7FFF, CartBR);
SetWriteHandler(0x6000, 0x7FFF, CartBW);
}
SetReadHandler(0x8000, 0xFFFF, defread);
} else
SetReadHandler(0x6000, 0xFFFF, defread);
SetWriteHandler(addrreg0, addrreg1, LatchWrite);
}
@ -67,7 +67,7 @@ static void Latch_Init(CartInfo *info, void (*proc)(void), readfunc func, uint16
if (func != NULL)
defread = func;
else
defread = CartBR;
defread = CartBROB;
info->Power = LatchPower;
info->Reset = LatchReset;
info->Close = LatchClose;
@ -103,7 +103,7 @@ static void BMCD1038Sync(void) {
if (latche & 0x80) {
setprg16(0x8000, (latche & 0x70) >> 4);
setprg16(0xC000, (latche & 0x70) >> 4);
}else
} else
setprg32(0x8000, (latche & 0x60) >> 5);
setchr8(latche & 7);
setmirror(((latche & 8) >> 3) ^ 1);
@ -132,7 +132,7 @@ void BMCD1038_Init(CartInfo *info) {
static void UNL43272Sync(void) {
if ((latche & 0x81) == 0x81) {
setprg32(0x8000, (latche & 0x38) >> 3);
}else
} else
FCEU_printf("unrecognized command %04!\n", latche);
setchr8(0);
setmirror(0);
@ -162,7 +162,7 @@ static void BMCGK192Sync(void) {
if (latche & 0x40) {
setprg16(0x8000, latche & 7);
setprg16(0xC000, latche & 7);
}else
} else
setprg32(0x8000, (latche >> 1) & 3);
setchr8((latche >> 3) & 7);
setmirror(((latche & 0x80) >> 7) ^ 1);
@ -205,7 +205,7 @@ static void M92Sync(void) {
case 0xD0: setprg16(0xc000, latche & 15); break;
case 0xE0: setchr8(latche & 15); break;
}
}else {
} else {
switch (reg) {
case 0xB0: setprg16(0xc000, latche & 15); break;
case 0x70: setchr8(latche & 15); break;
@ -249,11 +249,14 @@ void Mapper201_Init(CartInfo *info) {
//------------------ Map 202 ---------------------------
static void M202Sync(void) {
int32 tmp = (latche >> 1) & 0x7;
setmirror((latche & 1)^1);
setprg16(0x8000, tmp);
setprg16(0xc000, tmp + (((tmp & 0x6) == 0x6) ? 1 : 0));
setchr8(tmp);
// According to more carefull hardware tests and PCB study
int32 mirror = latche & 1;
int32 bank = (latche >> 1) & 0x7;
int32 select = (mirror & (bank >> 2));
setprg16(0x8000, select ? (bank & 6) | 0 : bank);
setprg16(0xc000, select ? (bank & 6) | 1 : bank);
setmirror(mirror ^ 1);
setchr8(bank);
}
void Mapper202_Init(CartInfo *info) {
@ -277,6 +280,13 @@ void Mapper204_Init(CartInfo *info) {
//------------------ Map 212 ---------------------------
static DECLFR(M212Read) {
uint8 ret = CartBROB(A);
if ((A & 0xE010) == 0x6000)
ret |= 0x80;
return ret;
}
static void M212Sync(void) {
if(latche & 0x4000) {
setprg32(0x8000, (latche >> 1) & 3);
@ -289,7 +299,7 @@ static void M212Sync(void) {
}
void Mapper212_Init(CartInfo *info) {
Latch_Init(info, M212Sync, NULL, 0xFFFF, 0x8000, 0xFFFF, 0);
Latch_Init(info, M212Sync, M212Read, 0xFFFF, 0x8000, 0xFFFF, 0);
}
//------------------ Map 213 ---------------------------
@ -315,6 +325,17 @@ void Mapper214_Init(CartInfo *info) {
Latch_Init(info, M214Sync, NULL, 0x0000, 0x8000, 0xFFFF, 0);
}
//------------------ Map 217 ---------------------------
static void M217Sync(void) {
setprg32(0x8000, (latche >> 2) & 3);
setchr8(latche & 7);
}
void Mapper217_Init(CartInfo *info) {
Latch_Init(info, M217Sync, NULL, 0x0000, 0x8000, 0xFFFF, 0);
}
//------------------ Map 227 ---------------------------
static void M227Sync(void) {
@ -408,9 +429,9 @@ void Mapper242_Init(CartInfo *info) {
//------------------ 190in1 ---------------------------
static void BMC190in1Sync(void) {
setprg16(0x8000, (latche >> 2) & 0x07);
setprg16(0xC000, (latche >> 2) & 0x07);
setchr8((latche >> 2) & 0x07);
setprg16(0x8000, (latche >> 2) & 7);
setprg16(0xC000, (latche >> 2) & 7);
setchr8((latche >> 2) & 7);
setmirror((latche & 1) ^ 1);
}
@ -448,7 +469,7 @@ static void BMCNTD03Sync(void) {
if (latche & 0x80) {
setprg16(0x8000, prg | ((latche >> 6) & 1));
setprg16(0xC000, prg | ((latche >> 6) & 1));
}else
} else
setprg32(0x8000, prg >> 1);
setchr8(chr);
setmirror(((latche >> 10) & 1) ^ 1);
@ -457,3 +478,25 @@ static void BMCNTD03Sync(void) {
void BMCNTD03_Init(CartInfo *info) {
Latch_Init(info, BMCNTD03Sync, NULL, 0x0000, 0x8000, 0xFFFF, 0);
}
//-------------- BMCG-146 ------------------------
static void BMCG146Sync(void) {
setchr8(0);
if (latche & 0x800) { // UNROM mode
setprg16(0x8000, (latche & 0x1F) | (latche & ((latche & 0x40) >> 6)));
setprg16(0xC000, (latche & 0x18) | 7);
} else {
if (latche & 0x40) { // 16K mode
setprg16(0x8000, latche & 0x1F);
setprg16(0xC000, latche & 0x1F);
} else {
setprg32(0x8000, (latche >> 1) & 0x0F);
}
}
setmirror(((latche & 0x80) >> 7) ^ 1);
}
void BMCG146_Init(CartInfo *info) {
Latch_Init(info, BMCG146Sync, NULL, 0x0000, 0x8000, 0xFFFF, 0);
}

View File

@ -42,7 +42,7 @@ static void LatchPower(void) {
if (WRAM) {
SetReadHandler(0x6000, 0xFFFF, CartBR);
SetWriteHandler(0x6000, 0x7FFF, CartBW);
}else {
} else {
SetReadHandler(0x8000, 0xFFFF, CartBR);
}
SetWriteHandler(addrreg0, addrreg1, LatchWrite);
@ -478,3 +478,16 @@ void BMCA65AS_Init(CartInfo *info) {
Latch_Init(info, BMCA65ASSync, 0, 0x8000, 0xFFFF, 0, 0);
}
//------------------ BMC-11160 ---------------------------
// Simple BMC discrete mapper by TXC
static void BMC11160Sync(void) {
uint32 bank = (latche >> 4) & 7;
setprg32(0x8000, bank);
setchr8((bank << 2) | (latche & 3));
setmirror((latche >> 7) & 1);
}
void BMC11160_Init(CartInfo *info) {
Latch_Init(info, BMC11160Sync, 0, 0x8000, 0xFFFF, 0, 0);
}

View File

@ -178,6 +178,7 @@
{0x5b457641, 157, 8}, /* Datach Ultraman Club */
{0xf51a7f46, 157, 8}, /* Datach Yuu Yuu Hakusho */
{0x58152b42, 160, 1}, /* Pipe 5 (Sachen) */
{0x1c098942, 162, -1}, /* Xi You Ji Hou Zhuan (Ch) */
{0x081caaff, 163, -1}, /* Commandos (Ch) */
{0x02c41438, 176, -1}, /* Xing He Zhan Shi (C) */
{0x558c0dc3, 178, -1}, /* Super 2in1 (unl)[!] {mapper unsupported} */
@ -226,11 +227,21 @@
{0xd323b806, 210, 1}, /* Wagyan Land 3 */
{0xbd523011, 210, 2}, /* Dream Master */
{0x5daae69a, 211, -1}, /* Aladdin - Return of Jaffar, The (Unl) [!] */
{0x046d70cc, 217, -1}, /* 500-in-1 (Anim Splash, Alt Mapper)[p1][!] */
{0x12f86a4d, 217, -1}, /* 500-in-1 (Static Splash, Alt Mapper)[p1][!] */
{0xd09f778d, 217, -1}, /* 9999999-in-1 (Static Splash, Alt Mapper)[p1][!] */
{0x62ef6c79, 232, 8}, /* Quattro Sports -Aladdin */
{0x2705eaeb, 234, -1}, /* Maxi 15 */
{0x6f12afc5, 235, -1}, /* Golden Game 150-in-1 */
{0xfb2b6b10, 241, -1}, /* Fan Kong Jing Ying (Ch) */
{0xb5e83c9a, 241, -1}, /* Xing Ji Zheng Ba (Ch) */
{0x2537b3e6, 241, -1}, /* Dance Xtreme - Prima (Unl) */
{0x11611e89, 241, -1}, /* Darkseed (Unl) [p1] */
{0x81a37827, 241, -1}, /* Darkseed (Unl) [p1][b1] */
{0xc2730c30, 241, -1}, /* Deadly Towers (U) [!] */
{0x368c19a8, 241, -1}, /* LIKO Study Cartridge 3-in-1 (Unl) [!] */
{0xa21e675c, 241, -1}, /* Mashou (J) [!] */
{0x54d98b79, 241, -1}, /* Titanic 1912 (Unl) */
{0x6bea1235, 245, -1}, /* MMC3 cart, but with nobanking applied to CHR-RAM, so let it be there */
{0x345ee51a, 245, -1}, /* DQ4c */
{0x57514c6c, 245, -1}, /* Yong Zhe Dou E Long - Dragon Quest VI (Ch) */

View File

@ -551,7 +551,7 @@ static BMAPPINGLocal bmap[] = {
{"Konami VRC2/VRC4", 25, Mapper25_Init},
// {"", 26, Mapper26_Init},
// {"", 27, Mapper27_Init}, // Deprecated, dupe for VRC2/VRC4 mapper
{"INL-ROM", 28, Mapper28_Init},
{"INL-ROM", 28, Mapper28_Init},
// {"", 29, Mapper29_Init},
// {"", 30, Mapper30_Init},
// {"", 31, Mapper31_Init},
@ -740,7 +740,7 @@ static BMAPPINGLocal bmap[] = {
{"", 214, Mapper214_Init},
{"", 215, UNL8237_Init},
{"", 216, Mapper216_Init},
// {"", 217, UNL8237A_Init},
{"", 217, Mapper217_Init}, // Redefined to a new Discrete BMC mapper
// {"", 218, Mapper218_Init},
{"UNLA9746", 219, UNLA9746_Init},
{"Debug Mapper", 220, UNLKS7057_Init},
@ -774,11 +774,11 @@ static BMAPPINGLocal bmap[] = {
// {"", 248, Mapper248_Init},
{"", 249, Mapper249_Init},
{"", 250, Mapper250_Init},
// {"", 251, Mapper251_Init},
// {"", 251, Mapper251_Init}, // No good dumps for this mapper, use UNIF version
{"SAN GUO ZHI PIRATE", 252, Mapper252_Init},
{"DRAGON BALL PIRATE", 253, Mapper253_Init},
{"", 254, Mapper254_Init},
// {"", 255, Mapper255_Init}, // Doesn't have any good dump for this mapper
// {"", 255, Mapper255_Init}, // No good dumps for this mapper
{"", 0, NULL}
};

View File

@ -485,6 +485,7 @@ void Mapper212_Init(CartInfo *);
void Mapper213_Init(CartInfo *);
void Mapper214_Init(CartInfo *);
void Mapper216_Init(CartInfo *);
void Mapper217_Init(CartInfo *);
void Mapper220_Init(CartInfo *);
void Mapper222_Init(CartInfo *);
void Mapper225_Init(CartInfo *);

View File

@ -317,136 +317,138 @@ static int LoadCHR(FCEUFILE *fp)
static BMAPPING bmap[] = {
{ "12-IN-1",BMC12IN1_Init,0},
{ "13in1JY110", BMC13in1JY110_Init, 0},
{ "190in1", BMC190in1_Init, 0},
{ "22211", UNL22211_Init,0},
{ "3D-BLOCK", UNL3DBlock_Init, 0},
{ "411120-C",BMC411120C_Init, 0},
{ "42in1ResetSwitch", Mapper226_Init, 0},
{ "43272", UNL43272_Init,0},
{ "603-5052", UNL6035052_Init,0},
{ "64in1NoRepeat", BMC64in1nr_Init, 0},
{ "70in1", BMC70in1_Init, 0},
{ "70in1B", BMC70in1B_Init, 0},
{ "810544-C-A1", BMC810544CA1_Init,0},
{ "8157", UNL8157_Init,0},
{ "8237", UNL8237_Init,0},
{ "8237A", UNL8237A_Init,0},
{ "830118C",BMC830118C_Init, 0},
{ "A65AS", BMCA65AS_Init,0},
{ "AC08", AC08_Init,0},
{ "ANROM", ANROM_Init,0},
{ "AX5705", UNLAX5705_Init, 0},
{ "BB", UNLBB_Init,0},
{ "BS-5",BMCBS5_Init, 0},
{ "CC-21", UNLCC21_Init,0},
{ "CITYFIGHT", UNLCITYFIGHT_Init, 0},
{ "CNROM", CNROM_Init,0},
{ "CPROM", CPROM_Init,BMCFLAG_16KCHRR},
{ "D1038", BMCD1038_Init, 0},
{ "DANCE", UNLOneBus_Init,0}, // redundant
{ "DANCE2000", UNLD2000_Init,0},
{ "DREAMTECH01", DreamTech01_Init,0},
{ "EDU2000", UNLEDU2000_Init,0},
{ "EKROM", EKROM_Init,0},
{ "ELROM", ELROM_Init,0},
{ "ETROM", ETROM_Init,0},
{ "EWROM", EWROM_Init,0},
{ "FK23C", BMCFK23C_Init,BMCFLAG_EXPCHRR},
{ "FK23CA", BMCFK23CA_Init,BMCFLAG_EXPCHRR},
{ "FS304", UNLFS304_Init,0},
{ "GK-192", BMCGK192_Init, 0},
{ "GS-2004", BMCGS2004_Init, 0},
{ "GS-2013", BMCGS2013_Init, 0},
{ "Ghostbusters63in1", BMCGhostbusters63in1_Init, 0},
{ "H2288", UNLH2288_Init,0},
{ "HKROM", HKROM_Init,0},
{ "KOF97", UNLKOF97_Init,0},
{ "KONAMI-QTAI", Mapper190_Init,0},
{ "KS7012", UNLKS7012_Init, 0},
{ "KS7013B", UNLKS7013B_Init, 0},
{ "KS7017", UNLKS7017_Init, 0},
{ "KS7030", UNLKS7030_Init, 0},
{ "KS7031", UNLKS7031_Init, 0},
{ "KS7032", UNLKS7032_Init, 0},
{ "KS7037", UNLKS7037_Init, 0},
{ "KS7057", UNLKS7057_Init, 0},
{ "LE05", LE05_Init,0},
{ "LH10", LH10_Init,0},
{ "LH32", LH32_Init,0},
{ "LH53", LH53_Init,0},
{ "MARIO1-MALEE2", MALEE_Init,0},
{ "MHROM", MHROM_Init,0},
{ "N625092", UNLN625092_Init,0},
{ "NROM", NROM_Init,0 },
{ "NROM-128", NROM_Init,0 },
{ "NROM-256", NROM_Init,0 },
{ "NTBROM", Mapper68_Init,0},
{ "NTD-03", BMCNTD03_Init,0},
{ "NovelDiamond9999999in1", Novel_Init,0},
{ "OneBus", UNLOneBus_Init,0},
{ "PEC-586",UNLPEC586Init,0},
{ "RROM", NROM_Init,0 },
{ "RROM-128", NROM_Init,0 },
{ "SA-002", TCU02_Init, 0},
{ "SA-0036", SA0036_Init,0},
{ "SA-0037", SA0037_Init,0},
{ "SA-009", SA009_Init,0},
{ "SA-016-1M", SA0161M_Init,0},
{ "SA-72007", SA72007_Init,0},
{ "SA-72008", SA72008_Init,0},
{ "SA-9602B", SA9602B_Init, BMCFLAG_32KCHRR},
{ "SA-NROM", TCA01_Init,0},
{ "SAROM", SAROM_Init,0},
{ "SBROM", SBROM_Init,0},
{ "SC-127", UNLSC127_Init,0},
{ "SCROM", SCROM_Init,0},
{ "SEROM", SEROM_Init,0},
{ "SGROM", SGROM_Init,0},
{ "SHERO", UNLSHeroes_Init,0},
{ "SKROM", SKROM_Init,0},
{ "SL12", UNLSL12_Init,0},
{ "SL1632", UNLSL1632_Init,0},
{ "SL1ROM", SL1ROM_Init,0},
{ "SLROM", SLROM_Init,0},
{ "SMB2J", UNLSMB2J_Init, 0},
{ "SNROM", SNROM_Init,0},
{ "SOROM", SOROM_Init,0},
{ "SSS-NROM-256", SSSNROM_Init,0 },
{ "SUNSOFT_UNROM", SUNSOFT_UNROM_Init,0},
{ "Sachen-74LS374N", S74LS374N_Init,0},
{ "Sachen-74LS374NA", S74LS374NA_Init,0}, //seems to be custom mapper
{ "Sachen-8259A", S8259A_Init,0},
{ "Sachen-8259B", S8259B_Init,0},
{ "Sachen-8259C", S8259C_Init,0},
{ "Sachen-8259D", S8259D_Init,0},
{ "Super24in1SC03", Super24_Init,0},
{ "SuperHIK8in1", Mapper45_Init,0},
{ "Supervision16in1", Supervision16_Init,0},
{ "T-227-1",BMCT2271_Init,0},
{ "T-230", UNLT230_Init, 0},
{ "T-262", BMCT262_Init,0},
{ "TBROM", TBROM_Init,0},
{ "TC-U01-1.5M", TCU01_Init,0},
{ "TEK90", Mapper90_Init,0},
{ "TEROM", TEROM_Init,0},
{ "TF1201", UNLTF1201_Init, 0},
{ "TFROM", TFROM_Init,0},
{ "TGROM", TGROM_Init,0},
{ "TKROM", TKROM_Init,0},
{ "TKSROM", TKSROM_Init,0},
{ "TLROM", TLROM_Init,0},
{ "TLSROM", TLSROM_Init,0},
{ "TQROM", TQROM_Init,0},
{ "TR1ROM", TFROM_Init,BMCFLAG_FORCE4},
{ "TSROM", TSROM_Init,0},
{ "TVROM", TLROM_Init,BMCFLAG_FORCE4},
{ "Transformer", Transformer_Init, 0},
{ "UNROM", UNROM_Init,0},
{ "UOROM", UNROM_Init,0},
{ "VRC7", UNLVRC7_Init,0},
{ "YOKO", UNLYOKO_Init,0},
{ "11160", BMC11160_Init, 0 },
{ "12-IN-1", BMC12IN1_Init, 0 },
{ "13in1JY110", BMC13in1JY110_Init, 0 },
{ "190in1", BMC190in1_Init, 0 },
{ "22211", UNL22211_Init, 0 },
{ "3D-BLOCK", UNL3DBlock_Init, 0 },
{ "411120-C", BMC411120C_Init, 0 },
{ "42in1ResetSwitch", Mapper226_Init, 0 },
{ "43272", UNL43272_Init, 0 },
{ "603-5052", UNL6035052_Init, 0 },
{ "64in1NoRepeat", BMC64in1nr_Init, 0 },
{ "70in1", BMC70in1_Init, 0 },
{ "70in1B", BMC70in1B_Init, 0 },
{ "810544-C-A1", BMC810544CA1_Init, 0 },
{ "8157", UNL8157_Init, 0 },
{ "8237", UNL8237_Init, 0 },
{ "8237A", UNL8237A_Init, 0 },
{ "830118C", BMC830118C_Init, 0 },
{ "A65AS", BMCA65AS_Init, 0 },
{ "AC08", AC08_Init, 0 },
{ "ANROM", ANROM_Init, 0 },
{ "AX5705", UNLAX5705_Init, 0 },
{ "BB", UNLBB_Init, 0 },
{ "BS-5", BMCBS5_Init, 0 },
{ "CC-21", UNLCC21_Init, 0 },
{ "CITYFIGHT", UNLCITYFIGHT_Init, 0 },
{ "CNROM", CNROM_Init, 0 },
{ "CPROM", CPROM_Init, BMCFLAG_16KCHRR },
{ "D1038", BMCD1038_Init, 0 },
{ "DANCE", UNLOneBus_Init, 0 }, // redundant
{ "DANCE2000", UNLD2000_Init, 0 },
{ "DREAMTECH01", DreamTech01_Init, 0 },
{ "EDU2000", UNLEDU2000_Init, 0 },
{ "EKROM", EKROM_Init, 0 },
{ "ELROM", ELROM_Init, 0 },
{ "ETROM", ETROM_Init, 0 },
{ "EWROM", EWROM_Init, 0 },
{ "FK23C", BMCFK23C_Init, BMCFLAG_EXPCHRR },
{ "FK23CA", BMCFK23CA_Init, BMCFLAG_EXPCHRR },
{ "FS304", UNLFS304_Init, 0 },
{ "G-146", BMCG146_Init, 0 },
{ "GK-192", BMCGK192_Init, 0 },
{ "GS-2004", BMCGS2004_Init, 0 },
{ "GS-2013", BMCGS2013_Init, 0 },
{ "Ghostbusters63in1", BMCGhostbusters63in1_Init, 0 },
{ "H2288", UNLH2288_Init, 0 },
{ "HKROM", HKROM_Init, 0 },
{ "KOF97", UNLKOF97_Init, 0 },
{ "KONAMI-QTAI", Mapper190_Init, 0 },
{ "KS7012", UNLKS7012_Init, 0 },
{ "KS7013B", UNLKS7013B_Init, 0 },
{ "KS7017", UNLKS7017_Init, 0 },
{ "KS7030", UNLKS7030_Init, 0 },
{ "KS7031", UNLKS7031_Init, 0 },
{ "KS7032", UNLKS7032_Init, 0 },
{ "KS7037", UNLKS7037_Init, 0 },
{ "KS7057", UNLKS7057_Init, 0 },
{ "LE05", LE05_Init, 0 },
{ "LH10", LH10_Init, 0 },
{ "LH32", LH32_Init, 0 },
{ "LH53", LH53_Init, 0 },
{ "MARIO1-MALEE2", MALEE_Init, 0 },
{ "MHROM", MHROM_Init, 0 },
{ "N625092", UNLN625092_Init, 0 },
{ "NROM", NROM_Init, 0 },
{ "NROM-128", NROM_Init, 0 },
{ "NROM-256", NROM_Init, 0 },
{ "NTBROM", Mapper68_Init, 0 },
{ "NTD-03", BMCNTD03_Init, 0 },
{ "NovelDiamond9999999in1", Novel_Init, 0 },
{ "OneBus", UNLOneBus_Init, 0 },
{ "PEC-586", UNLPEC586Init, 0 },
{ "RROM", NROM_Init, 0 },
{ "RROM-128", NROM_Init, 0 },
{ "SA-002", TCU02_Init, 0 },
{ "SA-0036", SA0036_Init, 0 },
{ "SA-0037", SA0037_Init, 0 },
{ "SA-009", SA009_Init, 0 },
{ "SA-016-1M", SA0161M_Init, 0 },
{ "SA-72007", SA72007_Init, 0 },
{ "SA-72008", SA72008_Init, 0 },
{ "SA-9602B", SA9602B_Init, BMCFLAG_32KCHRR },
{ "SA-NROM", TCA01_Init, 0 },
{ "SAROM", SAROM_Init, 0 },
{ "SBROM", SBROM_Init, 0 },
{ "SC-127", UNLSC127_Init, 0 },
{ "SCROM", SCROM_Init, 0 },
{ "SEROM", SEROM_Init, 0 },
{ "SGROM", SGROM_Init, 0 },
{ "SHERO", UNLSHeroes_Init, 0 },
{ "SKROM", SKROM_Init, 0 },
{ "SL12", UNLSL12_Init, 0 },
{ "SL1632", UNLSL1632_Init, 0 },
{ "SL1ROM", SL1ROM_Init, 0 },
{ "SLROM", SLROM_Init, 0 },
{ "SMB2J", UNLSMB2J_Init, 0 },
{ "SNROM", SNROM_Init, 0 },
{ "SOROM", SOROM_Init, 0 },
{ "SSS-NROM-256", SSSNROM_Init, 0 },
{ "SUNSOFT_UNROM", SUNSOFT_UNROM_Init, 0 },
{ "Sachen-74LS374N", S74LS374N_Init, 0 },
{ "Sachen-74LS374NA", S74LS374NA_Init, 0 }, //seems to be custom mapper
{ "Sachen-8259A", S8259A_Init, 0 },
{ "Sachen-8259B", S8259B_Init, 0 },
{ "Sachen-8259C", S8259C_Init, 0 },
{ "Sachen-8259D", S8259D_Init, 0 },
{ "Super24in1SC03", Super24_Init, 0 },
{ "SuperHIK8in1", Mapper45_Init, 0 },
{ "Supervision16in1", Supervision16_Init, 0 },
{ "T-227-1", BMCT2271_Init, 0 },
{ "T-230", UNLT230_Init, 0 },
{ "T-262", BMCT262_Init, 0 },
{ "TBROM", TBROM_Init, 0 },
{ "TC-U01-1.5M", TCU01_Init, 0 },
{ "TEK90", Mapper90_Init, 0 },
{ "TEROM", TEROM_Init, 0 },
{ "TF1201", UNLTF1201_Init, 0 },
{ "TFROM", TFROM_Init, 0 },
{ "TGROM", TGROM_Init, 0 },
{ "TKROM", TKROM_Init, 0 },
{ "TKSROM", TKSROM_Init, 0 },
{ "TLROM", TLROM_Init, 0 },
{ "TLSROM", TLSROM_Init, 0 },
{ "TQROM", TQROM_Init, 0 },
{ "TR1ROM", TFROM_Init, BMCFLAG_FORCE4 },
{ "TSROM", TSROM_Init, 0 },
{ "TVROM", TLROM_Init, BMCFLAG_FORCE4 },
{ "Transformer", Transformer_Init, 0 },
{ "UNROM", UNROM_Init, 0 },
{ "UOROM", UNROM_Init, 0 },
{ "VRC7", UNLVRC7_Init, 0 },
{ "YOKO", UNLYOKO_Init, 0 },
{0,0,0}
};

View File

@ -20,6 +20,7 @@
void AC08_Init(CartInfo *info);
void ANROM_Init(CartInfo *info);
void BMC11160_Init(CartInfo *info);
void BMC12IN1_Init(CartInfo *info);
void BMC13in1JY110_Init(CartInfo *info);
void BMC190in1_Init(CartInfo *info);
@ -34,6 +35,7 @@ void BMCBS5_Init(CartInfo *info);
void BMCD1038_Init(CartInfo *info);
void BMCFK23CA_Init(CartInfo *info);
void BMCFK23C_Init(CartInfo *info);
void BMCG146_Init(CartInfo *info);
void BMCGK192_Init(CartInfo *info);
void BMCGS2004_Init(CartInfo *info);
void BMCGS2013_Init(CartInfo *info);