fceumm mapper sync, parts 2 and 3... need more regression tests, scons/old vc projects update

This commit is contained in:
CaH4e3 2012-10-23 15:26:58 +00:00
parent 71cc0baf0e
commit a679f48a05
68 changed files with 4143 additions and 1839 deletions

77
src/boards/12in1.cpp Normal file
View File

@ -0,0 +1,77 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2009 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
*/
#include "mapinc.h"
static uint8 reg[4];
static SFORMAT StateRegs[]=
{
{reg, 4, "REGS"},
{0}
};
static void Sync(void)
{
uint8 bank = (reg[3]&3)<<3;
setchr4(0x0000, (reg[1]>>3)|(bank<<2));
setchr4(0x1000, (reg[2]>>3)|(bank<<2));
if(reg[3]&8)
{
setprg32(0x8000,((reg[2]&7)>>1)|bank);
}
else
{
setprg16(0x8000, (reg[1]&7)|bank);
setprg16(0xc000, 7|bank);
}
setmirror(((reg[3]&4)>>2)^1);
}
static DECLFW(BMC12IN1Write)
{
switch(A)
{
case 0xafff: reg[0] = V; break;
case 0xbfff: reg[1] = V; break;
case 0xdfff: reg[2] = V; break;
case 0xefff: reg[3] = V; break;
}
Sync();
}
static void BMC12IN1Power(void)
{
reg[0]=reg[1]=reg[2]=reg[3]=0;
Sync();
SetReadHandler(0x8000,0xFFFF,CartBR);
SetWriteHandler(0x8000,0xFFFF,BMC12IN1Write);
}
static void StateRestore(int version)
{
Sync();
}
void BMC12IN1_Init(CartInfo *info)
{
info->Power=BMC12IN1Power;
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}

View File

@ -1,42 +1,64 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2002 Xodnizel
*
* 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"
DECLFW(Mapper97_write)
{
ROM_BANK16(0xC000,V&15);
switch(V>>6)
{
case 0:break;
case 1:MIRROR_SET2(0);break;
case 2:MIRROR_SET2(1);break;
case 3:break;
}
}
void Mapper97_init(void)
{
ROM_BANK16(0x8000,~0);
SetWriteHandler(0x8000,0xffff,Mapper97_write);
}
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2012 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
*/
#include "mapinc.h"
static uint8 regs[8];
static SFORMAT StateRegs[]=
{
{regs, 8, "REGS"},
{0}
};
static void Sync(void)
{
setprg8(0x8000,regs[0]);
setprg8(0xA000,regs[2]);
setprg8(0xC000,regs[4]);
setprg8(0xE000,~0);
setchr4(0x0000,regs[6]);
setchr4(0x1000,regs[7]);
}
static DECLFW(M151Write)
{
regs[(A >> 12)&7] = V;
Sync();
}
static void M151Power(void)
{
Sync();
SetReadHandler(0x8000,0xFFFF,CartBR);
SetWriteHandler(0x8000,0xFFFF,M151Write);
}
static void StateRestore(int version)
{
Sync();
}
void Mapper151_Init(CartInfo *info)
{
info->Power=M151Power;
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}

View File

@ -15,26 +15,20 @@
*
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* DIS23C01 DAOU ROM CONTROLLER, Korea
* Metal Force (K)
* Buzz and Waldog (K)
* General's Son (K)
*
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "mapinc.h"
static uint8 chrlo[8], chrhi[8], prg, mirr, mirrisused = 0;
// uint8 *WRAM=NULL;
static uint8 *WRAM=NULL;
static uint32 WRAMSIZE;
static SFORMAT StateRegs[]=
{
{&prg, 1, "PREG"},
{chrlo, 8, "CRLO"},
{chrhi, 8, "CRHI"},
{chrlo, 8, "CRGL"},
{chrhi, 8, "CRGH"},
{&mirr, 1, "MIRR"},
{0}
};
@ -77,26 +71,26 @@ static DECLFW(M156Write)
}
}
static void M1566Reset()
static void M156Reset(void)
{
for(int i=0;i<8;i++)
{
chrlo[i]=0;
chrhi[i]=0;
}
prg=0;
mirr=0;
mirrisused = 0;
uint32 i;
for(i=0;i<8;i++)
{
chrlo[i]=0;
chrhi[i]=0;
}
prg=0;
mirr=0;
mirrisused = 0;
}
static void M156Power(void)
{
M156Reset();
Sync();
SetReadHandler(0x6000,0xFFFF,CartBR);
SetWriteHandler(0x6000,0x7FFF,CartBW);
SetWriteHandler(0xC000,0xCFFF,M156Write);
M1566Reset();
}
static void M156Close(void)
@ -113,6 +107,7 @@ static void StateRestore(int version)
void Mapper156_Init(CartInfo *info)
{
info->Power=M156Reset;
info->Power=M156Power;
info->Close=M156Close;

86
src/boards/168.cpp Normal file
View File

@ -0,0 +1,86 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2009 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
*/
#include "mapinc.h"
static uint8 reg;
static uint8 *CHRRAM=NULL;
static uint32 CHRRAMSIZE;
static SFORMAT StateRegs[]=
{
{&reg, 1, "REGS"},
{0}
};
static void Sync(void)
{
setchr4r(0x10,0x0000,0);
setchr4r(0x10,0x1000,reg&0x0f);
setprg16(0x8000,reg>>6);
setprg16(0xc000,~0);
}
static DECLFW(M168Write)
{
reg=V;
Sync();
}
static DECLFW(M168Dummy)
{
}
static void M168Power(void)
{
reg=0;
Sync();
SetWriteHandler(0x4020,0x7fff,M168Dummy);
SetWriteHandler(0xB000,0xB000,M168Write);
SetWriteHandler(0xF000,0xF000,M168Dummy);
SetWriteHandler(0xF080,0xF080,M168Dummy);
SetReadHandler(0x8000,0xFFFF,CartBR);
}
static void MNNNClose(void)
{
if(CHRRAM)
FCEU_gfree(CHRRAM);
CHRRAM=NULL;
}
static void StateRestore(int version)
{
Sync();
}
void Mapper168_Init(CartInfo *info)
{
info->Power=M168Power;
info->Close=MNNNClose;
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
CHRRAMSIZE=8192*8;
CHRRAM=(uint8*)FCEU_gmalloc(CHRRAMSIZE);
SetupCartCHRMapping(0x10,CHRRAM,CHRRAMSIZE,1);
AddExState(CHRRAM, CHRRAMSIZE, 0, "CRAM");
}

119
src/boards/17.cpp Normal file
View File

@ -0,0 +1,119 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2012 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
*/
#include "mapinc.h"
static uint8 preg[4], creg[8];
static uint8 IRQa, mirr;
static int32 IRQCount, IRQLatch;
static SFORMAT StateRegs[]=
{
{preg, 4, "PREG"},
{creg, 8, "CREG"},
{&mirr, 1, "MIRR"},
{&IRQa, 1, "IRQA"},
{&IRQCount, 4, "IRQC"},
{&IRQLatch, 4, "IRQL"},
{0}
};
static void Sync(void)
{
int i;
for(i=0; i<8; i++) setchr1(i<<10,creg[i]);
setprg8(0x8000,preg[0]);
setprg8(0xA000,preg[1]);
setprg8(0xC000,preg[2]);
setprg8(0xE000,preg[3]);
switch(mirr) {
case 0: setmirror(MI_0); break;
case 1: setmirror(MI_1); break;
case 2: setmirror(MI_H); break;
case 3: setmirror(MI_V); break;
}
}
static DECLFW(M17WriteMirr)
{
mirr = ((A << 1) & 2)|((V >> 4) & 1);
Sync();
}
static DECLFW(M17WriteIRQ)
{
switch(A) {
case 0x4501: IRQa=0; X6502_IRQEnd(FCEU_IQEXT); break;
case 0x4502: IRQCount&=0xFF00; IRQCount|=V; break;
case 0x4503: IRQCount&=0x00FF; IRQCount|=V<<8; IRQa=1; break;
}
}
static DECLFW(M17WritePrg)
{
preg[A & 3] = V;
Sync();
}
static DECLFW(M17WriteChr)
{
creg[A & 7] = V;
Sync();
}
static void M17Power(void)
{
preg[3] = ~0;
Sync();
SetReadHandler(0x8000,0xFFFF,CartBR);
SetWriteHandler(0x42FE,0x42FF,M17WriteMirr);
SetWriteHandler(0x4500,0x4503,M17WriteIRQ);
SetWriteHandler(0x4504,0x4507,M17WritePrg);
SetWriteHandler(0x4510,0x4517,M17WriteChr);
}
static void M17IRQHook(int a)
{
if(IRQa)
{
IRQCount+=a;
if(IRQCount>=0x10000)
{
X6502_IRQBegin(FCEU_IQEXT);
IRQa=0;
IRQCount=0;
}
}
}
static void StateRestore(int version)
{
Sync();
}
void Mapper17_Init(CartInfo *info)
{
info->Power=M17Power;
MapIRQHook=M17IRQHook;
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}

View File

@ -1,62 +1,68 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2002 Xodnizel
*
* 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"
#define ctrl mapbyte1[6]
static void DoCHR(void)
{
int x;
for(x=0;x<2;x++)
VROM_BANK2((x<<11)|((ctrl&2)<<11),mapbyte1[x]>>1);
for(x=0;x<4;x++)
VROM_BANK1((x<<10) | (((ctrl&2)^2)<<11),mapbyte1[2+x]);
}
static DECLFW(Mapper82_write)
{
if(A<=0x7EF5)
{
mapbyte1[A&7]=V;
DoCHR();
}
else
switch(A)
{
case 0x7ef6:ctrl=V&3;
MIRROR_SET2(V&1);
DoCHR();
break;
case 0x7efa:V>>=2;mapbyte2[0]=V;ROM_BANK8(0x8000,V);break;
case 0x7efb:V>>=2;mapbyte2[1]=V;ROM_BANK8(0xa000,V);break;
case 0x7efc:V>>=2;mapbyte2[2]=V;ROM_BANK8(0xc000,V);break;
}
}
void Mapper82_init(void)
{
ROM_BANK8(0xE000,~0);
/* external WRAM might end at $73FF */
SetWriteHandler(0x7ef0,0x7efc,Mapper82_write);
}
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2011 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
*/
#include "mapinc.h"
static uint8 reg;
static SFORMAT StateRegs[]=
{
{&reg, 1, "REGS"},
{0}
};
static void Sync(void)
{
setprg16(0x8000, 0);
setprg16(0xc000,~0);
setchr8(0);
}
static DECLFW(M170ProtW)
{
reg = V << 1 & 0x80;
}
static DECLFR(M170ProtR)
{
return reg | (X.DB & 0x7F);
}
static void M170Power(void)
{
Sync();
SetWriteHandler(0x6502,0x6502,M170ProtW);
SetWriteHandler(0x7000,0x7000,M170ProtW);
SetReadHandler(0x7001,0x7001,M170ProtR);
SetReadHandler(0x7777,0x7777,M170ProtR);
SetReadHandler(0x8000,0xFFFF,CartBR);
}
static void StateRestore(int version)
{
Sync();
}
void Mapper170_Init(CartInfo *info)
{
info->Power=M170Power;
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}

121
src/boards/18.cpp Normal file
View File

@ -0,0 +1,121 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2012 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
*/
#include "mapinc.h"
static uint8 preg[4], creg[8];
static uint8 IRQa, mirr;
static int32 IRQCount, IRQLatch;
static SFORMAT StateRegs[]=
{
{preg, 4, "PREG"},
{creg, 8, "CREG"},
{&mirr, 1, "MIRR"},
{&IRQa, 1, "IRQA"},
{&IRQCount, 4, "IRQC"},
{&IRQLatch, 4, "IRQL"},
{0}
};
static void Sync(void)
{
int i;
for(i=0; i<8; i++) setchr1(i<<10,creg[i]);
setprg8(0x8000,preg[0]);
setprg8(0xA000,preg[1]);
setprg8(0xC000,preg[2]);
setprg8(0xE000,~0);
if(mirr & 2)
setmirror(MI_0);
else
setmirror(mirr & 1);
}
static DECLFW(M18WriteIRQ)
{
switch(A & 0xF003) {
case 0xE000: IRQLatch&=0xFFF0; IRQLatch|=(V&0x0f)<<0x0;break;
case 0xE001: IRQLatch&=0xFF0F; IRQLatch|=(V&0x0f)<<0x4; break;
case 0xE002: IRQLatch&=0xF0FF; IRQLatch|=(V&0x0f)<<0x8; break;
case 0xE003: IRQLatch&=0x0FFF; IRQLatch|=(V&0x0f)<<0xC; break;
case 0xF000: IRQCount=IRQLatch; break;
case 0xF001: IRQa=V&1; X6502_IRQEnd(FCEU_IQEXT); break;
case 0xF002: mirr = V&3; Sync(); break;
}
}
static DECLFW(M18WritePrg)
{
uint32 i = ((A >> 1) & 1)|((A - 0x8000) >> 11);
preg[i] &= (0xF0) >> ((A & 1) << 2);
preg[i] |= (V & 0xF) << ((A & 1) << 2);
Sync();
}
static DECLFW(M18WriteChr)
{
uint32 i = ((A >> 1) & 1)|((A - 0xA000) >> 11);
creg[i] &= (0xF0) >> ((A & 1) << 2);
creg[i] |= (V & 0xF) << ((A & 1) << 2);
Sync();
}
static void M18Power(void)
{
preg[0] = 0;
preg[1] = 1;
preg[2] = ~1;
preg[3] = ~0;
Sync();
SetReadHandler(0x8000,0xFFFF,CartBR);
SetWriteHandler(0x8000,0x9FFF,M18WritePrg);
SetWriteHandler(0xA000,0xDFFF,M18WriteChr);
SetWriteHandler(0xE000,0xFFFF,M18WriteIRQ);
}
static void M18IRQHook(int a)
{
if(IRQa && IRQCount)
{
IRQCount-=a;
if(IRQCount<=0)
{
X6502_IRQBegin(FCEU_IQEXT);
IRQCount=0;
IRQa=0;
}
}
}
static void StateRestore(int version)
{
Sync();
}
void Mapper18_Init(CartInfo *info)
{
info->Power=M18Power;
MapIRQHook=M18IRQHook;
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}

77
src/boards/193.cpp Normal file
View File

@ -0,0 +1,77 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2009 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
*/
#include "mapinc.h"
static uint8 reg[8];
static uint8 mirror, cmd, bank;
static SFORMAT StateRegs[]=
{
{&cmd, 1, "CMD"},
{&mirror, 1, "MIRR"},
{&bank, 1, "BANK"},
{reg, 8, "REGS"},
{0}
};
static void Sync(void)
{
setmirror(mirror^1);
setprg8(0x8000,reg[3]);
setprg8(0xA000,0xD);
setprg8(0xC000,0xE);
setprg8(0xE000,0xF);
setchr4(0x0000,reg[0]>>2);
setchr2(0x1000,reg[1]>>1);
setchr2(0x1800,reg[2]>>1);
}
static DECLFW(M193Write)
{
reg[A&3]=V;
Sync();
}
static void M193Power(void)
{
bank=0;
Sync();
SetWriteHandler(0x6000,0x6003,M193Write);
SetReadHandler(0x8000,0xFFFF,CartBR);
SetWriteHandler(0x8000,0xFFFF,CartBW);
}
static void M193Reset(void)
{
}
static void StateRestore(int version)
{
Sync();
}
void Mapper193_Init(CartInfo *info)
{
info->Reset=M193Reset;
info->Power=M193Power;
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}

96
src/boards/225.cpp Normal file
View File

@ -0,0 +1,96 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2011 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
*/
#include "mapinc.h"
static uint8 prot[4], prg, mode, chr, mirr;
static SFORMAT StateRegs[]=
{
{prot, 4, "PROT"},
{&prg, 1, "PRG"},
{&chr, 1, "CHR"},
{&mode, 1, "MODE"},
{&mirr, 1, "MIRR"},
{0}
};
static void Sync(void)
{
if(mode)
{
setprg16(0x8000,prg);
setprg16(0xC000,prg);
}
else
setprg32(0x8000,prg>>1);
setchr8(chr);
setmirror(mirr);
}
static DECLFW(M225Write)
{
uint32 bank = (A >> 14) & 1;
mirr = (A >> 13) & 1;
mode = (A >> 12) & 1;
chr = (A & 0x3f) | (bank << 6);
prg = ((A >> 6) & 0x3f) | (bank << 6);
Sync();
}
static DECLFW(M225LoWrite)
{
}
static DECLFR(M225LoRead)
{
return 0;
}
static void M225Power(void)
{
prg = 0;
mode = 0;
Sync();
SetReadHandler(0x5000,0x5fff,M225LoRead);
SetWriteHandler(0x5000,0x5fff,M225LoWrite);
SetReadHandler(0x8000,0xFFFF,CartBR);
SetWriteHandler(0x8000,0xFFFF,M225Write);
}
static void M225Reset(void)
{
prg = 0;
mode = 0;
Sync();
}
static void StateRestore(int version)
{
Sync();
}
void Mapper225_Init(CartInfo *info)
{
info->Reset=M225Reset;
info->Power=M225Power;
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}

89
src/boards/34.cpp Normal file
View File

@ -0,0 +1,89 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2012 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
*/
#include "mapinc.h"
static uint8 regs[3];
static uint8 *WRAM=NULL;
static uint32 WRAMSIZE;
static SFORMAT StateRegs[]=
{
{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 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 M34Close(void)
{
if(WRAM)
FCEU_gfree(WRAM);
WRAM=NULL;
}
static void StateRestore(int version)
{
Sync();
}
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");
AddExState(&StateRegs, ~0, 0, 0);
}

102
src/boards/82.cpp Normal file
View File

@ -0,0 +1,102 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2012 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
*/
#include "mapinc.h"
static uint8 regs[9], ctrl;
static uint8 *WRAM=NULL;
static uint32 WRAMSIZE;
static SFORMAT StateRegs[]=
{
{regs, 9, "REGS"},
{&ctrl, 1, "CTRL"},
{0}
};
static void Sync(void)
{
uint32 swap = ((ctrl & 2) << 11);
setchr2(0x0000^swap,regs[0]>>1);
setchr2(0x0800^swap,regs[1]>>1);
setchr1(0x1000^swap,regs[2]);
setchr1(0x1400^swap,regs[3]);
setchr1(0x1800^swap,regs[4]);
setchr1(0x1c00^swap,regs[5]);
setprg8r(0x10,0x6000,0);
setprg8(0x8000,regs[6]);
setprg8(0xA000,regs[7]);
setprg8(0xC000,regs[8]);
setprg8(0xE000,~0);
setmirror(ctrl & 1);
}
static DECLFW(M82Write)
{
if(A <= 0x7ef5)
regs[A & 7] = V;
else
switch(A)
{
case 0x7ef6: ctrl = V & 3; break;
case 0x7efa: regs[6] = V >> 2; break;
case 0x7efb: regs[7] = V >> 2; break;
case 0x7efc: regs[8] = V >> 2; break;
}
Sync();
}
static void M82Power(void)
{
Sync();
SetReadHandler(0x6000,0xffff,CartBR);
SetWriteHandler(0x6000,0x7fff,CartBW);
SetWriteHandler(0x7ef0,0x7efc,M82Write); // external WRAM might end at $73FF
}
static void M82Close(void)
{
if(WRAM)
FCEU_gfree(WRAM);
WRAM=NULL;
}
static void StateRestore(int version)
{
Sync();
}
void Mapper82_Init(CartInfo *info)
{
info->Power=M82Power;
info->Power=M82Close;
WRAMSIZE=8192;
WRAM=(uint8*)FCEU_gmalloc(WRAMSIZE);
SetupCartPRGMapping(0x10,WRAM,WRAMSIZE,1);
AddExState(WRAM, WRAMSIZE, 0, "WRAM");
if(info->battery)
{
info->SaveGame[0]=WRAM;
info->SaveGameLen[0]=WRAMSIZE;
}
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}

95
src/boards/91.cpp Normal file
View File

@ -0,0 +1,95 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2012 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
*/
#include "mapinc.h"
static uint8 cregs[4], pregs[2];
static uint8 IRQCount, IRQa;
static SFORMAT StateRegs[]=
{
{cregs, 4, "CREG"},
{pregs, 2, "PREG"},
{&IRQa, 1, "IRQA"},
{&IRQCount, 1, "IRQC"},
{0}
};
static void Sync(void)
{
setprg8(0x8000,pregs[0]);
setprg8(0xa000,pregs[1]);
setprg8(0xc000,~1);
setprg8(0xe000,~0);
setchr2(0x0000,cregs[0]);
setchr2(0x0800,cregs[1]);
setchr2(0x1000,cregs[2]);
setchr2(0x1800,cregs[3]);
}
static DECLFW(M91Write0)
{
cregs[A & 3] = V;
Sync();
}
static DECLFW(M91Write1)
{
switch (A & 3)
{
case 0:
case 1: pregs[A & 1] = V; Sync(); break;
case 2: IRQa = IRQCount = 0; X6502_IRQEnd(FCEU_IQEXT); break;
case 3: IRQa = 1; X6502_IRQEnd(FCEU_IQEXT); break;
}
}
static void M91Power(void)
{
Sync();
SetWriteHandler(0x6000,0x6fff,M91Write0);
SetWriteHandler(0x7000,0x7fff,M91Write1);
SetReadHandler(0x8000,0xffff,CartBR);
}
static void M91IRQHook(void)
{
if(IRQCount<8 && IRQa)
{
IRQCount++;
if(IRQCount>=8)
{
X6502_IRQBegin(FCEU_IQEXT);
}
}
}
static void StateRestore(int version)
{
Sync();
}
void Mapper91_Init(CartInfo *info)
{
info->Power=M91Power;
GameHBIRQHook=M91IRQHook;
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}

77
src/boards/96.cpp Normal file
View File

@ -0,0 +1,77 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 1998 BERO
* Copyright (C) 2002 Xodnizel
* Copyright (C) 2012 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
*/
#include "mapinc.h"
static uint8 reg, ppulatch;
static SFORMAT StateRegs[]=
{
{&reg, 1, "REG"},
{&ppulatch, 1, "PPUL"},
{0}
};
static void Sync(void)
{
setmirror(MI_0);
setprg32(0x8000,reg & 3);
setchr4(0x0000,(reg & 4) | ppulatch);
setchr4(0x1000,(reg & 4) | 3);
}
static DECLFW(M96Write)
{
reg = V;
Sync();
}
static void M96Hook(uint32 A)
{
if((A & 0x3000) == 0x2000)
{
ppulatch = (A>>8) & 3;
Sync();
}
}
static void M96Power(void)
{
reg = ppulatch = 0;
Sync();
SetReadHandler(0x8000,0xffff,CartBR);
SetWriteHandler(0x8000,0xffff,M96Write);
}
static void StateRestore(int version)
{
Sync();
}
void Mapper96_Init(CartInfo *info)
{
info->Power=M96Power;
PPU_hook=M96Hook;
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}

View File

@ -1,59 +1,65 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2002 Xodnizel
*
* 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 DECLFW(Mapper91_write)
{
//if(A>=0x7001)
//printf("$%04x:$%02x, %d\n",A,V,scanline);
A&=0xF007;
if(A>=0x6000 && A<=0x6003) VROM_BANK2((A&3)*2048,V);
else switch(A&0xF003)
{
case 0x7000:
case 0x7001:ROM_BANK8(0x8000+(A&1)*8192,V);break;
case 0x7002:IRQa=IRQCount=0;X6502_IRQEnd(FCEU_IQEXT);break;
case 0x7003:IRQa=1;X6502_IRQEnd(FCEU_IQEXT);break;
// default: printf("Iyee: $%04x:$%02x\n",A,V);break;
}
//if(A>=0x7000)
// printf("$%04x:$%02x, %d\n",A,V,scanline);
}
static void Mapper91_hb(void)
{
if(IRQCount<8 && IRQa)
{
IRQCount++;
if(IRQCount>=8)
{
X6502_IRQBegin(FCEU_IQEXT);
}
}
}
void Mapper91_init(void)
{
SetWriteHandler(0x4020,0xFFFF,Mapper91_write);
GameHBIRQHook=Mapper91_hb;
}
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2012 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
*/
#include "mapinc.h"
static uint8 latch;
static writefunc old4016;
static SFORMAT StateRegs[]=
{
{&latch, 1, "LATC"},
{0}
};
static void Sync(void)
{
setchr8((latch >> 2) & 1);
setprg32(0x8000,0);
setprg8(0x8000,latch & 4); /* Special for VS Gumshoe */
}
static DECLFW(M99Write)
{
latch = V;
Sync();
old4016(A,V);
}
static void M99Power(void)
{
latch = 0;
Sync();
old4016=GetWriteHandler(0x4016);
SetWriteHandler(0x4016,0x4016,M99Write);
SetReadHandler(0x8000,0xFFFF,CartBR);
}
static void StateRestore(int version)
{
Sync();
}
void Mapper99_Init(CartInfo *info)
{
info->Power=M99Power;
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}

74
src/boards/ac-08.cpp Normal file
View File

@ -0,0 +1,74 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2011 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
*/
#include "mapinc.h"
static uint8 reg, mirr;
static SFORMAT StateRegs[]=
{
{&reg, 1, "REG"},
{&mirr, 1, "MIRR"},
{0}
};
static void Sync(void)
{
setprg8(0x6000, reg);
setprg32r(1, 0x8000, 0);
setchr8(0);
setmirror(mirr);
}
static DECLFW(AC08Mirr)
{
mirr = ((V&8)>>3)^1;
Sync();
}
static DECLFW(AC08Write)
{
if(A == 0x8001) // Green Berret bank switching is only 100x xxxx xxxx xxx1 mask
reg = (V >> 1) & 0xf;
else
reg = V & 0xf; // Sad But True, 2-in-1 mapper, Green Berret need value shifted left one byte, Castlevania doesn't
Sync();
}
static void AC08Power(void)
{
reg = 0;
Sync();
SetReadHandler(0x6000,0xFFFF,CartBR);
SetWriteHandler(0x4025,0x4025,AC08Mirr);
SetWriteHandler(0x8000,0xFFFF,AC08Write);
}
static void StateRestore(int version)
{
Sync();
}
void AC08_Init(CartInfo *info)
{
info->Power=AC08Power;
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}

View File

@ -1,41 +1,68 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2003 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
*/
/*
#include "mapinc.h"
static DECLFW(Mapper60_write)
{
if(A&0x80) {
ROM_BANK16(0x8000,(A&0x70)>>4);
ROM_BANK16(0xC000,(A&0x70)>>4);
}
else
ROM_BANK32((A&0x70)>>5);
VROM_BANK8(A&7);
MIRROR_SET((A&8)>>3);
}
void Mapper60_init(void)
{
ROM_BANK32(0);
SetWriteHandler(0x8000,0xffff, Mapper60_write);
}
*/
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2007 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
*/
#include "mapinc.h"
static uint8 reg, chr;
static SFORMAT StateRegs[]=
{
{&reg, 1, "REG"},
{&chr, 1, "CHR"},
{0}
};
static void Sync(void)
{
setprg8(0x6000,reg&3);
setprg32(0x8000,~0);
setchr8(chr&3);
}
static DECLFW(UNLBBWrite)
{
if((A & 0x9000) == 0x8000)
reg=chr=V;
else
chr=V&1; // hacky hacky, ProWres simplified FDS conversion 2-in-1 mapper
Sync();
}
static void UNLBBPower(void)
{
chr = 0;
reg = ~0;
Sync();
SetReadHandler(0x6000,0x7FFF,CartBR);
SetReadHandler(0x8000,0xFFFF,CartBR);
SetWriteHandler(0x8000,0xFFFF,UNLBBWrite);
}
static void StateRestore(int version)
{
Sync();
}
void UNLBB_Init(CartInfo *info)
{
info->Power=UNLBBPower;
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}

108
src/boards/dance2000.cpp Normal file
View File

@ -0,0 +1,108 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2007 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
*/
#include "mapinc.h"
static uint8 prg, mirr, prgmode;
static uint8 *WRAM=NULL;
static uint32 WRAMSIZE;
static SFORMAT StateRegs[]=
{
{&prg, 1, "REGS"},
{&mirr, 1, "MIRR"},
{&prgmode, 1, "MIRR"},
{0}
};
static void Sync(void)
{
setmirror(mirr);
setprg8r(0x10,0x6000,0);
setchr8(0);
if(prgmode)
setprg32(0x8000,prg&7);
else {
setprg16(0x8000,prg&0x0f);
setprg16(0xC000,0);
}
}
static DECLFW(UNLD2000Write)
{
// FCEU_printf("write %04x:%04x\n",A,V);
switch(A) {
case 0x5000: prg = V; Sync(); break;
case 0x5200: mirr = (V & 1)^1; prgmode = V & 4; Sync(); break;
// default: FCEU_printf("write %04x:%04x\n",A,V);
}
}
static DECLFR(UNLD2000Read)
{
if(prg & 0x40)
return X.DB;
else
return CartBR(A);
}
static void UNLD2000Power(void)
{
prg = prgmode = 0;
Sync();
SetReadHandler(0x6000,0x7FFF,CartBR);
SetWriteHandler(0x6000,0x7FFF,CartBW);
SetReadHandler(0x8000,0xFFFF,UNLD2000Read);
SetWriteHandler(0x4020,0x5FFF,UNLD2000Write);
}
static void UNLAX5705IRQ(void)
{
if(scanline > 174) setchr4(0x0000,1);
else setchr4(0x0000,0);
}
static void UNLD2000Close(void)
{
if(WRAM)
FCEU_gfree(WRAM);
WRAM=NULL;
}
static void StateRestore(int version)
{
Sync();
}
void UNLD2000_Init(CartInfo *info)
{
info->Power=UNLD2000Power;
info->Close=UNLD2000Close;
GameHBIRQHook=UNLAX5705IRQ;
GameStateRestore=StateRestore;
WRAMSIZE=8192;
WRAM=(uint8*)FCEU_gmalloc(WRAMSIZE);
SetupCartPRGMapping(0x10,WRAM,WRAMSIZE,1);
AddExState(WRAM, WRAMSIZE, 0, "WRAM");
AddExState(&StateRegs, ~0, 0, 0);
}

124
src/boards/famicombox.cpp Normal file
View File

@ -0,0 +1,124 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2009 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
*/
#include "mapinc.h"
static uint8 regs[8];
static uint8 *WRAM = NULL;
static uint32 WRAMSIZE;
static SFORMAT StateRegs[]=
{
{regs, 8, "REGS"},
{0}
};
static void Sync(void)
{
setprg2r(0x10,0x0800,0);
setprg2r(0x10,0x1000,1);
setprg2r(0x10,0x1800,2);
setprg8r(0x10,0x6000,1);
setprg16(0x8000,0);
setprg16(0xC000,~0);
setchr8(0);
}
//static DECLFW(SSSNROMWrite)
//{
// CartBW(A,V);
//}
static DECLFW(SSSNROMWrite)
{
//FCEU_printf("write %04x %02x\n",A,V);
//regs[A&7] = V;
}
static DECLFR(SSSNROMRead)
{
//FCEU_printf("read %04x\n",A);
switch(A&7) {
case 0: return regs[0]=0xff; // clear all exceptions
case 2: return 0xc0; // DIP selftest + freeplay
case 3: return 0x00; // 0, 1 - attract
// 2
// 4 - menu
// 8 - self check and game casette check
// 10 - lock?
// 20 - game title & count display
case 7: return 0x22; // TV type, key not turned, relay B
default: return 0;
}
}
static void SSSNROMPower(void)
{
regs[0]=regs[1]=regs[2]=regs[3]=regs[4]=regs[5]=regs[6]=0;
regs[7]=0xff;
Sync();
memset(WRAM,0x00,WRAMSIZE);
// SetWriteHandler(0x0000,0x1FFF,SSSNROMRamWrite);
SetReadHandler(0x0800,0x1FFF,CartBR);
SetWriteHandler(0x0800,0x1FFF,CartBW);
SetReadHandler(0x5000,0x5FFF,SSSNROMRead);
SetWriteHandler(0x5000,0x5FFF,SSSNROMWrite);
SetReadHandler(0x6000,0x7FFF,CartBR);
SetWriteHandler(0x6000,0x7FFF,CartBW);
SetReadHandler(0x8000,0xFFFF,CartBR);
}
static void SSSNROMReset(void)
{
regs[1]=regs[2]=regs[3]=regs[4]=regs[5]=regs[6]=0;
}
static void SSSNROMClose(void)
{
if(WRAM)
FCEU_gfree(WRAM);
WRAM=NULL;
}
static void SSSNROMIRQHook(void)
{
// X6502_IRQBegin(FCEU_IQEXT);
}
static void StateRestore(int version)
{
Sync();
}
void SSSNROM_Init(CartInfo *info)
{
info->Reset=SSSNROMReset;
info->Power=SSSNROMPower;
info->Close=SSSNROMClose;
GameHBIRQHook=SSSNROMIRQHook;
GameStateRestore=StateRestore;
WRAMSIZE=16384;
WRAM=(uint8*)FCEU_gmalloc(WRAMSIZE);
SetupCartPRGMapping(0x10,WRAM,WRAMSIZE,1);
AddExState(WRAM, WRAMSIZE, 0, "WRAM");
AddExState(&StateRegs, ~0, 0, 0);
}

91
src/boards/ks7012.cpp Normal file
View File

@ -0,0 +1,91 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2007 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
*/
#include "mapinc.h"
static uint8 reg;
static uint8 *WRAM=NULL;
static uint32 WRAMSIZE;
static SFORMAT StateRegs[]=
{
{&reg, 1, "REGS"},
{0}
};
static void Sync(void)
{
setprg8r(0x10,0x6000,0);
setprg32(0x8000,reg&1);
setchr8(0);
}
static DECLFW(UNLKS7012Write)
{
// FCEU_printf("bs %04x %02x\n",A,V);
switch(A)
{
case 0xE0A0: reg=0; Sync(); break;
case 0xEE36: reg=1; Sync(); break;
}
}
static void UNLKS7012Power(void)
{
reg = ~0;
Sync();
SetReadHandler(0x6000,0x7FFF,CartBR);
SetWriteHandler(0x6000,0x7FFF,CartBW);
SetReadHandler(0x8000,0xFFFF,CartBR);
SetWriteHandler(0x8000,0xFFFF,UNLKS7012Write);
}
static void UNLKS7012Reset(void)
{
reg = ~0;
Sync();
}
static void StateRestore(int version)
{
Sync();
}
static void UNLKS7012Close(void)
{
if(WRAM)
FCEU_gfree(WRAM);
WRAM=NULL;
}
void UNLKS7012_Init(CartInfo *info)
{
info->Power=UNLKS7012Power;
info->Reset=UNLKS7012Reset;
info->Close=UNLKS7012Close;
WRAMSIZE=8192;
WRAM=(uint8*)FCEU_gmalloc(WRAMSIZE);
SetupCartPRGMapping(0x10,WRAM,WRAMSIZE,1);
AddExState(WRAM, WRAMSIZE, 0, "WRAM");
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}

80
src/boards/ks7013.cpp Normal file
View File

@ -0,0 +1,80 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2011 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
*/
#include "mapinc.h"
static uint8 reg, mirr;
static SFORMAT StateRegs[]=
{
{&reg, 1, "REGS"},
{&mirr, 1, "MIRR"},
{0}
};
static void Sync(void)
{
setprg16(0x8000,reg);
setprg16(0xc000,~0);
setmirror(mirr);
setchr8(0);
}
static DECLFW(UNLKS7013BLoWrite)
{
reg = V;
Sync();
}
static DECLFW(UNLKS7013BHiWrite)
{
mirr = (V & 1) ^ 1;
Sync();
}
static void UNLKS7013BPower(void)
{
reg = 0;
mirr = 0;
Sync();
SetWriteHandler(0x6000,0x7FFF,UNLKS7013BLoWrite);
SetReadHandler(0x8000,0xFFFF,CartBR);
SetWriteHandler(0x8000,0xFFFF,UNLKS7013BHiWrite);
}
static void UNLKS7013BReset(void)
{
reg = 0;
Sync();
}
static void StateRestore(int version)
{
Sync();
}
void UNLKS7013B_Init(CartInfo *info)
{
info->Power=UNLKS7013BPower;
info->Reset=UNLKS7013BReset;
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}

134
src/boards/ks7017.cpp Normal file
View File

@ -0,0 +1,134 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2007 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
*
* FDS Conversion
*
*/
#include "mapinc.h"
static uint8 reg, mirr;
static int32 IRQa, IRQCount, IRQLatch;
static uint8 *WRAM=NULL;
static uint32 WRAMSIZE;
static SFORMAT StateRegs[]=
{
{&mirr, 1, "MIRR"},
{&reg, 1, "REGS"},
{&IRQa, 4, "IRQA"},
{&IRQCount, 4, "IRQC"},
{&IRQLatch, 4, "IRQL"},
{0}
};
static void Sync(void)
{
setprg16(0x8000,reg);
setprg16(0xC000,2);
setmirror(mirr);
}
static DECLFW(UNLKS7017Write)
{
// FCEU_printf("bs %04x %02x\n",A,V);
if((A & 0xFF00) == 0x4A00)
{
reg = ((A >> 2) & 3)|((A >> 4) & 4);
}
else if ((A & 0xFF00) == 0x5100)
{
Sync();
}
else if (A == 0x4020)
{
X6502_IRQEnd(FCEU_IQEXT);
IRQCount&=0xFF00;
IRQCount|=V;
}
else if (A == 0x4021)
{
X6502_IRQEnd(FCEU_IQEXT);
IRQCount&=0xFF;
IRQCount|=V<<8;
IRQa = 1;
}
else if (A == 0x4025)
{
mirr = ((V & 8) >> 3) ^ 1;
}
}
static DECLFR(FDSRead4030)
{
X6502_IRQEnd(FCEU_IQEXT);
return X.IRQlow&FCEU_IQEXT?1:0;
}
static void UNL7017IRQ(int a)
{
if(IRQa)
{
IRQCount-=a;
if(IRQCount<=0)
{
IRQa=0;
X6502_IRQBegin(FCEU_IQEXT);
}
}
}
static void UNLKS7017Power(void)
{
Sync();
setchr8(0);
setprg8r(0x10,0x6000,0);
SetReadHandler(0x6000,0x7FFF,CartBR);
SetWriteHandler(0x6000,0x7FFF,CartBW);
SetReadHandler(0x8000,0xFFFF,CartBR);
SetReadHandler(0x4030,0x4030,FDSRead4030);
SetWriteHandler(0x4020,0x5FFF,UNLKS7017Write);
}
static void UNLKS7017Close(void)
{
if(WRAM)
FCEU_gfree(WRAM);
WRAM=NULL;
}
static void StateRestore(int version)
{
Sync();
}
void UNLKS7017_Init(CartInfo *info)
{
info->Power=UNLKS7017Power;
info->Close=UNLKS7017Close;
MapIRQHook=UNL7017IRQ;
WRAMSIZE=8192;
WRAM=(uint8*)FCEU_gmalloc(WRAMSIZE);
SetupCartPRGMapping(0x10,WRAM,WRAMSIZE,1);
AddExState(WRAM, WRAMSIZE, 0, "WRAM");
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}

151
src/boards/ks7030.cpp Normal file
View File

@ -0,0 +1,151 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2007 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
*
* FDS Conversion
*
* Logical bank layot 32 K BANK 0, 64K BANK 1, 32K ~0 hardwired, 8K is missing
* need redump from MASKROM!
* probably need refix mapper after hard dump
*
*/
#include "mapinc.h"
static uint8 reg0, reg1;
static uint8 *WRAM=NULL;
static uint32 WRAMSIZE;
static SFORMAT StateRegs[]=
{
{&reg0, 1, "REG0"},
{&reg1, 1, "REG1"},
{0}
};
static void Sync(void)
{
setchr8(0);
setprg32(0x8000,~0);
setprg4(0xb800,reg0);
setprg4(0xc800,8+reg1);
}
// 6000 - 6BFF - RAM
// 6C00 - 6FFF - BANK 1K REG1
// 7000 - 7FFF - BANK 4K REG0
static DECLFW(UNLKS7030RamWrite0)
{
if((A >= 0x6000) && A <= 0x6BFF) {
WRAM[A-0x6000]=V;
} else if((A >= 0x6C00) && A <= 0x6FFF) {
CartBW(0xC800 + (A - 0x6C00), V);
} else if((A >= 0x7000) && A <= 0x7FFF) {
CartBW(0xB800 + (A - 0x7000), V);
}
}
static DECLFR(UNLKS7030RamRead0)
{
if((A >= 0x6000) && A <= 0x6BFF) {
return WRAM[A-0x6000];
} else if((A >= 0x6C00) && A <= 0x6FFF) {
return CartBR(0xC800 + (A - 0x6C00));
} else if((A >= 0x7000) && A <= 0x7FFF) {
return CartBR(0xB800 + (A - 0x7000));
}
return 0;
}
// B800 - BFFF - RAM
// C000 - CBFF - BANK 3K
// CC00 - D7FF - RAM
static DECLFW(UNLKS7030RamWrite1)
{
if((A >= 0xB800) && A <= 0xBFFF) {
WRAM[0x0C00+(A-0xB800)]=V;
} else if((A >= 0xC000) && A <= 0xCBFF) {
CartBW(0xCC00 + (A - 0xC000), V);
} else if((A >= 0xCC00) && A <= 0xD7FF) {
WRAM[0x1400+(A-0xCC00)]=V;
}
}
static DECLFR(UNLKS7030RamRead1)
{
if((A >= 0xB800) && A <= 0xBFFF) {
return WRAM[0x0C00+(A-0xB800)];
} else if((A >= 0xC000) && A <= 0xCBFF) {
return CartBR(0xCC00 + (A - 0xC000));
} else if((A >= 0xCC00) && A <= 0xD7FF) {
return WRAM[0x1400+(A-0xCC00)];
}
return 0;
}
static DECLFW(UNLKS7030Write0)
{
reg0=A&7;
Sync();
}
static DECLFW(UNLKS7030Write1)
{
reg1=A&15;
Sync();
}
static void UNLKS7030Power(void)
{
reg0=reg1=~0;
Sync();
SetReadHandler(0x6000,0x7FFF,UNLKS7030RamRead0);
SetWriteHandler(0x6000,0x7FFF,UNLKS7030RamWrite0);
SetReadHandler(0x8000,0xFFFF,CartBR);
SetWriteHandler(0x8000,0x8FFF,UNLKS7030Write0);
SetWriteHandler(0x9000,0x9FFF,UNLKS7030Write1);
SetReadHandler(0xB800,0xD7FF,UNLKS7030RamRead1);
SetWriteHandler(0xB800,0xD7FF,UNLKS7030RamWrite1);
}
static void UNLKS7030Close(void)
{
if(WRAM)
FCEU_gfree(WRAM);
WRAM=NULL;
}
static void StateRestore(int version)
{
Sync();
}
void UNLKS7030_Init(CartInfo *info)
{
info->Power=UNLKS7030Power;
info->Close=UNLKS7030Close;
GameStateRestore=StateRestore;
WRAMSIZE=8192;
WRAM=(uint8*)FCEU_gmalloc(WRAMSIZE);
AddExState(WRAM, WRAMSIZE, 0, "WRAM");
AddExState(&StateRegs, ~0, 0, 0);
}

85
src/boards/ks7031.cpp Normal file
View File

@ -0,0 +1,85 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2012 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
*
* FDS Conversion
*
*/
#include "mapinc.h"
static uint8 reg[4];
static SFORMAT StateRegs[]=
{
{reg, 4, "REGS"},
{0}
};
static void Sync(void)
{
setprg2(0x6000,reg[0]);
setprg2(0x6800,reg[1]);
setprg2(0x7000,reg[2]);
setprg2(0x7800,reg[3]);
setprg2(0x8000,15);
setprg2(0x8800,14);
setprg2(0x9000,13);
setprg2(0x9800,12);
setprg2(0xa000,11);
setprg2(0xa800,10);
setprg2(0xb000,9);
setprg2(0xb800,8);
setprg2(0xc000,7);
setprg2(0xc800,6);
setprg2(0xd000,5);
setprg2(0xd800,4);
setprg2(0xe000,3);
setprg2(0xe800,2);
setprg2(0xf000,1);
setprg2(0xf800,0);
setchr8(0);
}
static DECLFW(UNLKS7031Write)
{
reg[(A >> 11) & 3] = V;
Sync();
}
static void UNLKS7031Power(void)
{
Sync();
SetReadHandler(0x6000,0xFFFF,CartBR);
SetWriteHandler(0x8000,0xffff,UNLKS7031Write);
}
static void StateRestore(int version)
{
Sync();
}
void UNLKS7031_Init(CartInfo *info)
{
info->Power=UNLKS7031Power;
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}

135
src/boards/ks7037.cpp Normal file
View File

@ -0,0 +1,135 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2011 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
*
* FDS Conversion
*
*/
#include "mapinc.h"
static uint8 reg[8], cmd;
static uint8 *WRAM=NULL;
static uint32 WRAMSIZE;
static void(*WSync)(void);
static SFORMAT StateRegs[]=
{
{&cmd, 1, "CMD"},
{reg, 8, "REGS"},
{0}
};
static void SyncKS7037(void)
{
setprg4r(0x10,0x6000,0);
setprg4(0x7000,15);
setprg8(0x8000,reg[6]);
setprg4(0xA000,~3);
setprg4r(0x10,0xB000,1);
setprg8(0xC000,reg[7]);
setprg8(0xE000,~0);
setchr8(0);
setmirrorw(reg[2]&1,reg[4]&1,reg[3]&1,reg[5]&1);
}
static void SyncLH10(void)
{
setprg8(0x6000,~1);
setprg8(0x8000,reg[6]);
setprg8(0xA000,reg[7]);
setprg8r(0x10,0xC000,0);
setprg8(0xE000,~0);
setchr8(0);
setmirror(0);
}
static DECLFW(UNLKS7037Write)
{
switch(A & 0xE001)
{
case 0x8000: cmd = V & 7; break;
case 0x8001: reg[cmd] = V; WSync(); break;
}
}
static void UNLKS7037Power(void)
{
reg[0]=reg[1]=reg[2]=reg[3]=reg[4]=reg[5]=reg[6]=reg[7]=0;
WSync();
SetReadHandler(0x6000,0xFFFF,CartBR);
SetWriteHandler(0x6000,0x7FFF,CartBW);
SetWriteHandler(0x8000,0x9FFF,UNLKS7037Write);
SetWriteHandler(0xA000,0xBFFF,CartBW);
SetWriteHandler(0xC000,0xFFFF,UNLKS7037Write);
}
static void LH10Power(void)
{
reg[0]=reg[1]=reg[2]=reg[3]=reg[4]=reg[5]=reg[6]=reg[7]=0;
WSync();
SetReadHandler(0x6000,0xFFFF,CartBR);
SetWriteHandler(0x8000,0xBFFF,UNLKS7037Write);
SetWriteHandler(0xC000,0xDFFF,CartBW);
SetWriteHandler(0xE000,0xFFFF,UNLKS7037Write);
}
static void Close(void)
{
if(WRAM)
FCEU_gfree(WRAM);
WRAM=NULL;
}
static void StateRestore(int version)
{
WSync();
}
void UNLKS7037_Init(CartInfo *info)
{
info->Power=UNLKS7037Power;
info->Close=Close;
WSync = SyncKS7037;
WRAMSIZE=8192;
WRAM=(uint8*)FCEU_gmalloc(WRAMSIZE);
SetupCartPRGMapping(0x10,WRAM,WRAMSIZE,1);
AddExState(WRAM, WRAMSIZE, 0, "WRAM");
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}
void LH10_Init(CartInfo *info)
{
info->Power=LH10Power;
info->Close=Close;
WSync = SyncLH10;
WRAMSIZE=8192;
WRAM=(uint8*)FCEU_gmalloc(WRAMSIZE);
SetupCartPRGMapping(0x10,WRAM,WRAMSIZE,1);
AddExState(WRAM, WRAMSIZE, 0, "WRAM");
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}

View File

@ -1,41 +1,66 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2002 Xodnizel
*
* 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"
DECLFW(Mapper151_write)
{
switch(A&0xF000)
{
case 0x8000:ROM_BANK8(0x8000,V);break;
case 0xA000:ROM_BANK8(0xA000,V);break;
case 0xC000:ROM_BANK8(0xC000,V);break;
case 0xe000:VROM_BANK4(0x0000,V);break;
case 0xf000:VROM_BANK4(0x1000,V);break;
}
}
void Mapper151_init(void)
{
SetWriteHandler(0x8000,0xffff,Mapper151_write);
}
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2011 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
*
* FDS Conversion
*
*/
#include "mapinc.h"
static uint8 chr;
static SFORMAT StateRegs[]=
{
{&chr, 1, "CHR"},
{0}
};
static void Sync(void)
{
setprg2r(0,0xE000,0);
setprg2r(0,0xE800,0);
setprg2r(0,0xF000,0);
setprg2r(0,0xF800,0);
setprg8r(1,0x6000,3);
setprg8r(1,0x8000,0);
setprg8r(1,0xA000,1);
setprg8r(1,0xC000,2);
setchr8(chr & 1);
setmirror(MI_V);
}
static DECLFW(LE05Write)
{
chr = V;
Sync();
}
static void LE05Power(void)
{
Sync();
SetReadHandler(0x6000,0xFFFF,CartBR);
SetWriteHandler(0x8000,0xFFFF,LE05Write);
}
void LE05_Init(CartInfo *info)
{
info->Power=LE05Power;
AddExState(&StateRegs, ~0, 0, 0);
}

84
src/boards/lh32.cpp Normal file
View File

@ -0,0 +1,84 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2007 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
*
* FDS Conversion
*
*/
#include "mapinc.h"
static uint8 reg;
static uint8 *WRAM=NULL;
static uint32 WRAMSIZE;
static SFORMAT StateRegs[]=
{
{&reg, 1, "REG"},
{0}
};
static void Sync(void)
{
setprg8(0x6000,reg);
setprg8(0x8000,~3);
setprg8(0xa000,~2);
setprg8r(0x10,0xc000,0);
setprg8(0xe000,~0);
setchr8(0);
}
static DECLFW(LH32Write)
{
reg=V;
Sync();
}
static void LH32Power(void)
{
Sync();
SetReadHandler(0x6000,0xFFFF,CartBR);
SetWriteHandler(0xC000,0xDFFF,CartBW);
SetWriteHandler(0x6000,0x6000,LH32Write);
}
static void LH32Close(void)
{
if(WRAM)
FCEU_gfree(WRAM);
WRAM=NULL;
}
static void StateRestore(int version)
{
Sync();
}
void LH32_Init(CartInfo *info)
{
info->Power=LH32Power;
info->Close=LH32Close;
WRAMSIZE=8192;
WRAM=(uint8*)FCEU_gmalloc(WRAMSIZE);
SetupCartPRGMapping(0x10,WRAM,WRAMSIZE,1);
AddExState(WRAM, WRAMSIZE, 0, "WRAM");
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}

117
src/boards/lh53.cpp Normal file
View File

@ -0,0 +1,117 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2007 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
*
* FDS Conversion
*
*/
#include "mapinc.h"
static uint8 reg, IRQa;
static int32 IRQCount;
static uint8 *WRAM=NULL;
static uint32 WRAMSIZE;
static SFORMAT StateRegs[]=
{
{&reg, 1, "REG"},
{&IRQa, 1, "IRQA"},
{&IRQCount, 4, "IRQC"},
{0}
};
static void Sync(void)
{
setchr8(0);
setprg8(0x6000,reg);
setprg8(0x8000,0xc);
setprg4(0xa000,(0xd<<1));
setprg2(0xb000,(0xd<<2)+2);
setprg2r(0x10,0xb800,4);
setprg2r(0x10,0xc000,5);
setprg2r(0x10,0xc800,6);
setprg2r(0x10,0xd000,7);
setprg2(0xd800,(0xe<<2)+3);
setprg8(0xe000,0xf);
}
static DECLFW(LH53RamWrite)
{
WRAM[(A-0xB800)&0x1FFF]=V;
}
static DECLFW(LH53Write)
{
reg=V;
Sync();
}
static DECLFW(LH53IRQaWrite)
{
IRQa = V&2;
IRQCount = 0;
if(!IRQa)
X6502_IRQEnd(FCEU_IQEXT);
}
static void LH53IRQ(int a)
{
if(IRQa)
{
IRQCount+=a;
if(IRQCount>7560)
X6502_IRQBegin(FCEU_IQEXT);
}
}
static void LH53Power(void)
{
Sync();
SetReadHandler(0x6000,0xFFFF,CartBR);
SetWriteHandler(0xB800,0xD7FF,LH53RamWrite);
SetWriteHandler(0xE000,0xEFFF,LH53IRQaWrite);
SetWriteHandler(0xF000,0xFFFF,LH53Write);
}
static void LH53Close(void)
{
if(WRAM)
FCEU_gfree(WRAM);
WRAM=NULL;
}
static void StateRestore(int version)
{
Sync();
}
void LH53_Init(CartInfo *info)
{
info->Power=LH53Power;
info->Close=LH53Close;
MapIRQHook=LH53IRQ;
GameStateRestore=StateRestore;
WRAMSIZE=8192;
WRAM=(uint8*)FCEU_gmalloc(WRAMSIZE);
SetupCartPRGMapping(0x10,WRAM,WRAMSIZE,1);
AddExState(WRAM, WRAMSIZE, 0, "WRAM");
AddExState(&StateRegs, ~0, 0, 0);
}

View File

@ -34,7 +34,7 @@ uint32 CHRRAMSize;
uint8 DRegBuf[8];
uint8 EXPREGS[8]; /* For bootleg games, mostly. */
uint8 A000B,A001B;
int mmc3opts=0;
uint8 mmc3opts=0;
#undef IRQCount
#undef IRQLatch

View File

@ -1,4 +1,5 @@
extern uint8 MMC3_cmd;
extern uint8 mmc3opts;
extern uint8 A000B;
extern uint8 A001B;
extern uint8 EXPREGS[8];

124
src/boards/pec-586.cpp Normal file
View File

@ -0,0 +1,124 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2009 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
*/
#include "mapinc.h"
static uint8 reg[7];
static uint8 *WRAM=NULL;
static uint32 WRAMSIZE;
static SFORMAT StateRegs[]=
{
{reg, 2, "REG"},
{0}
};
static uint8 bs_tbl[128] = {
0x03, 0x13, 0x23, 0x33, 0x03, 0x13, 0x23, 0x33, 0x03, 0x13, 0x23, 0x33, 0x03, 0x13, 0x23, 0x33,
0x45, 0x67, 0x45, 0x67, 0x45, 0x67, 0x45, 0x67, 0x45, 0x67, 0x45, 0x67, 0x45, 0x67, 0x45, 0x67,
0x03, 0x13, 0x23, 0x33, 0x03, 0x13, 0x23, 0x33, 0x03, 0x13, 0x23, 0x33, 0x03, 0x13, 0x23, 0x33,
0x47, 0x67, 0x47, 0x67, 0x47, 0x67, 0x47, 0x67, 0x47, 0x67, 0x47, 0x67, 0x47, 0x67, 0x47, 0x67,
0x02, 0x12, 0x22, 0x32, 0x02, 0x12, 0x22, 0x32, 0x02, 0x12, 0x22, 0x32, 0x02, 0x12, 0x22, 0x32,
0x45, 0x67, 0x45, 0x67, 0x45, 0x67, 0x45, 0x67, 0x45, 0x67, 0x45, 0x67, 0x45, 0x67, 0x45, 0x67,
0x02, 0x12, 0x22, 0x32, 0x02, 0x12, 0x22, 0x32, 0x02, 0x12, 0x22, 0x32, 0x00, 0x10, 0x20, 0x30,
0x47, 0x67, 0x47, 0x67, 0x47, 0x67, 0x47, 0x67, 0x47, 0x67, 0x47, 0x67, 0x47, 0x67, 0x47, 0x67,
};
static uint8 br_tbl[16] = {
0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
};
static void Sync(void)
{
// setchr4(0x0000,(reg[0]&0x80) >> 7);
// setchr4(0x1000,(reg[0]&0x80) >> 7);
setchr8(0);
setprg8r(0x10,0x6000,0);
setprg16(0x8000,bs_tbl[reg[0]&0x7f]>>4);
setprg16(0xc000,bs_tbl[reg[0]&0x7f]&0xf);
setmirror(MI_V);
}
static DECLFW(UNLPEC586Write)
{
reg[(A&0x700)>>8]=V;
FCEU_printf("bs %04x %02x\n",A,V);
Sync();
}
static DECLFR(UNLPEC586Read)
{
FCEU_printf("read %04x\n",A);
return (X.DB & 0xD8) | br_tbl[reg[4]>>4];
}
static void UNLPEC586Power(void)
{
reg[0]=0x0E;
Sync();
setchr8(0);
SetReadHandler(0x6000,0x7FFF,CartBR);
SetWriteHandler(0x6000,0x7FFF,CartBW);
SetReadHandler(0x8000,0xFFFF,CartBR);
SetWriteHandler(0x5000,0x5fff,UNLPEC586Write);
SetReadHandler(0x5000,0x5fff,UNLPEC586Read);
}
static void UNLPEC586IRQ(void)
{
// if(reg[0]&0x80)
{
if(scanline==128) {
setchr4(0x0000,1);
setchr4(0x1000,0);
}
else {
setchr4(0x0000,0);
setchr4(0x1000,1);
}
}
}
static void UNLPEC586Close(void)
{
if(WRAM)
FCEU_gfree(WRAM);
WRAM=NULL;
}
static void StateRestore(int version)
{
Sync();
}
void UNLPEC586Init(CartInfo *info)
{
info->Power=UNLPEC586Power;
info->Close=UNLPEC586Close;
GameHBIRQHook=UNLPEC586IRQ;
GameStateRestore=StateRestore;
WRAMSIZE=8192;
WRAM=(uint8*)FCEU_gmalloc(WRAMSIZE);
SetupCartPRGMapping(0x10,WRAM,WRAMSIZE,1);
AddExState(WRAM, WRAMSIZE, 0, "WRAM");
AddExState(&StateRegs, ~0, 0, 0);
}

67
src/boards/sa-9602b.cpp Normal file
View File

@ -0,0 +1,67 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2012 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
*/
#include "mapinc.h"
#include "mmc3.h"
static void SA9602BPW(uint32 A, uint8 V)
{
setprg8r(EXPREGS[1],A,V&0x3F);
if(MMC3_cmd&0x40)
setprg8r(0,0x8000,~(1));
else
setprg8r(0,0xc000,~(1));
setprg8r(0,0xe000,~(0));
}
static DECLFW(SA9602BWrite)
{
switch(A & 0xe001)
{
case 0x8000: EXPREGS[0] = V; break;
case 0x8001:
if((EXPREGS[0] & 7) < 6)
{
EXPREGS[1] = V >> 6;
FixMMC3PRG(MMC3_cmd);
}
break;
}
MMC3_CMDWrite(A, V);
}
static void SA9602BPower(void)
{
EXPREGS[0]=EXPREGS[1]=0;
GenMMC3Power();
SetReadHandler(0x8000,0xFFFF,CartBR);
SetWriteHandler(0x8000,0xBFFF,SA9602BWrite);
}
void SA9602B_Init(CartInfo *info)
{
GenMMC3_Init(info, 512, 0, 0, 0);
pwrap=SA9602BPW;
mmc3opts|=2;
info->SaveGame[0]=UNIFchrrama;
info->SaveGameLen[0]=32 * 1024;
info->Power=SA9602BPower;
AddExState(EXPREGS, 2, 0, "EXPR");
}

103
src/boards/transformer.cpp Normal file
View File

@ -0,0 +1,103 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2009 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
*/
#include "mapinc.h"
static uint8 *WRAM=NULL;
static uint32 WRAMSIZE;
unsigned int *GetKeyboard(void); // FIXME: not so much portable, don't know really how to solve this correctly here...
static unsigned int *TransformerKeys, oldkeys[256];
static int TransformerCycleCount, TransformerChar = 0;
static void TransformerIRQHook(int a)
{
TransformerCycleCount+=a;
if(TransformerCycleCount >= 1000)
{
uint32 i;
TransformerCycleCount -= 1000;
TransformerKeys = GetKeyboard();
for(i=0; i<256; i++) {
if(oldkeys[i] != TransformerKeys[i]) {
if(oldkeys[i] == 0)
TransformerChar = i;
else
TransformerChar = i | 0x80;
X6502_IRQBegin(FCEU_IQEXT);
memcpy((void *)&oldkeys[0], (void *)TransformerKeys, 256);
break;
}
}
}
}
static DECLFR(TransformerRead)
{
uint8 ret = 0;
switch(A&3) {
case 0: ret = TransformerChar & 15; break;
case 1: ret = (TransformerChar >> 4); break;
case 2: break;
case 4: break;
}
X6502_IRQEnd(FCEU_IQEXT);
return ret;
}
static void TransformerPower(void)
{
setprg8r(0x10,0x6000,0);
setprg16(0x8000,0);
setprg16(0xC000,~0);
setchr8(0);
SetReadHandler(0x5000,0x5004,TransformerRead);
SetReadHandler(0x6000,0x7FFF,CartBR);
SetWriteHandler(0x6000,0x7FFF,CartBW);
SetReadHandler(0x8000,0xFFFF,CartBR);
MapIRQHook=TransformerIRQHook;
}
static void TransformerClose(void)
{
if(WRAM)
FCEU_gfree(WRAM);
WRAM=NULL;
}
void Transformer_Init(CartInfo *info)
{
info->Power=TransformerPower;
info->Close=TransformerClose;
WRAMSIZE=8192;
WRAM=(uint8*)FCEU_gmalloc(WRAMSIZE);
SetupCartPRGMapping(0x10,WRAM,WRAMSIZE,1);
if(info->battery)
{
info->SaveGame[0]=WRAM;
info->SaveGameLen[0]=WRAMSIZE;
}
AddExState(WRAM, WRAMSIZE, 0, "WRAM");
}

132
src/boards/vrc7.cpp Normal file
View File

@ -0,0 +1,132 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2009 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
*/
#include "mapinc.h"
static uint8 prg[3], chr[8], mirr;
static uint8 IRQLatch, IRQa, IRQd;
static uint32 IRQCount, CycleCount;
static SFORMAT StateRegs[]=
{
{prg, 3, "PRG"},
{chr, 8, "CHR"},
{&mirr, 1, "MIRR"},
{&IRQa, 1, "IRQA"},
{&IRQd, 1, "IRQD"},
{&IRQLatch, 1, "IRQC"},
{&IRQCount, 4, "IRQC"},
{&CycleCount, 4, "CYCC"},
{0}
};
static void Sync(void)
{
uint8 i;
setprg8(0x8000,prg[0]);
setprg8(0xa000,prg[1]);
setprg8(0xc000,prg[2]);
setprg8(0xe000,~0);
for(i=0; i<8; i++)
setchr1(i<<10,chr[i]);
switch(mirr&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(UNLVRC7Write)
{
switch(A&0xF008)
{
case 0x8000: prg[0]=V; Sync(); break;
case 0x8008: prg[1]=V; Sync(); break;
case 0x9000: prg[2]=V; Sync(); break;
case 0xa000: chr[0]=V; Sync(); break;
case 0xa008: chr[1]=V; Sync(); break;
case 0xb000: chr[2]=V; Sync(); break;
case 0xb008: chr[3]=V; Sync(); break;
case 0xc000: chr[4]=V; Sync(); break;
case 0xc008: chr[5]=V; Sync(); break;
case 0xd000: chr[6]=V; Sync(); break;
case 0xd008: chr[7]=V; Sync(); break;
case 0xe000: mirr=V; Sync(); break;
case 0xe008:
IRQLatch=V;
X6502_IRQEnd(FCEU_IQEXT);
break;
case 0xf000:
IRQa=V&2;
IRQd=V&1;
if(V&2)
IRQCount=IRQLatch;
CycleCount=0;
X6502_IRQEnd(FCEU_IQEXT);
break;
case 0xf008:
if(IRQd)
IRQa=1;
else
IRQa=0;
X6502_IRQEnd(FCEU_IQEXT);
break;
}
}
static void UNLVRC7Power(void)
{
Sync();
SetReadHandler(0x8000,0xFFFF,CartBR);
SetWriteHandler(0x8000,0xFFFF,UNLVRC7Write);
}
static void UNLVRC7IRQHook(int a)
{
if(IRQa)
{
CycleCount+=a*3;
while(CycleCount>=341)
{
CycleCount-=341;
IRQCount++;
if(IRQCount==248)
{
X6502_IRQBegin(FCEU_IQEXT);
IRQCount=IRQLatch;
}
}
}
}
static void StateRestore(int version)
{
Sync();
}
void UNLVRC7_Init(CartInfo *info)
{
info->Power=UNLVRC7Power;
MapIRQHook=UNLVRC7IRQHook;
GameStateRestore=StateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}

260
src/boards/yoko.cpp Normal file
View File

@ -0,0 +1,260 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2006 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
*/
#include "mapinc.h"
static uint8 mode, bank, reg[11], low[4], dip, IRQa;
static int32 IRQCount;
static uint8 *WRAM=NULL;
static uint32 WRAMSIZE;
static uint8 is2kbank, isnot2kbank;
static SFORMAT StateRegs[]=
{
{&mode, 1, "MODE"},
{&bank, 1, "BANK"},
{&IRQCount, 4, "IRQC"},
{&IRQa, 1, "IRQA"},
{reg, 11, "REGS"},
{low, 4, "LOWR"},
{&is2kbank, 1, "IS2K"},
{&isnot2kbank, 1, "NT2K"},
{0}
};
static void UNLYOKOSync(void)
{
setmirror((mode & 1)^1);
setchr2(0x0000,reg[3]);
setchr2(0x0800,reg[4]);
setchr2(0x1000,reg[5]);
setchr2(0x1800,reg[6]);
if(mode & 0x10)
{
uint32 base = (bank & 8) << 1;
setprg8(0x8000,(reg[0]&0x0f)|base);
setprg8(0xA000,(reg[1]&0x0f)|base);
setprg8(0xC000,(reg[2]&0x0f)|base);
setprg8(0xE000,0x0f|base);
}
else
{
if(mode & 8)
setprg32(0x8000,bank >> 1);
else
{
setprg16(0x8000,bank);
setprg16(0xC000,~0);
}
}
}
static void M83Sync(void)
{
switch(mode & 3) // check if it is truth
{
case 0: setmirror(MI_V); break;
case 1: setmirror(MI_H); break;
case 2: setmirror(MI_0); break;
case 3: setmirror(MI_1); break;
}
if(is2kbank&&!isnot2kbank)
{
setchr2(0x0000,reg[0]);
setchr2(0x0800,reg[1]);
setchr2(0x1000,reg[6]);
setchr2(0x1800,reg[7]);
}
else
{
int x;
for(x=0;x<8;x++)
setchr1(x<<10, reg[x] | ((bank&0x30)<<4));
}
setprg8r(0x10,0x6000,0);
if(mode & 0x40)
{
setprg16(0x8000,(bank&0x3F)); // DBZ Party [p1]
setprg16(0xC000,(bank&0x30)|0xF);
}
else
{
setprg8(0x8000,reg[8]);
setprg8(0xA000,reg[9]);
setprg8(0xC000,reg[10]);
setprg8(0xE000,~0);
}
}
static DECLFW(UNLYOKOWrite)
{
switch(A & 0x8C17)
{
case 0x8000: bank=V; UNLYOKOSync(); break;
case 0x8400: mode=V; UNLYOKOSync(); break;
case 0x8800: IRQCount&=0xFF00; IRQCount|=V; X6502_IRQEnd(FCEU_IQEXT); break;
case 0x8801: IRQa=mode&0x80; IRQCount&=0xFF; IRQCount|=V<<8; break;
case 0x8c00: reg[0]=V; UNLYOKOSync(); break;
case 0x8c01: reg[1]=V; UNLYOKOSync(); break;
case 0x8c02: reg[2]=V; UNLYOKOSync(); break;
case 0x8c10: reg[3]=V; UNLYOKOSync(); break;
case 0x8c11: reg[4]=V; UNLYOKOSync(); break;
case 0x8c16: reg[5]=V; UNLYOKOSync(); break;
case 0x8c17: reg[6]=V; UNLYOKOSync(); break;
}
}
static DECLFW(M83Write)
{
switch(A)
{
case 0x8000: is2kbank = 1;
case 0xB000: // Dragon Ball Z Party [p1] BMC
case 0xB0FF: // Dragon Ball Z Party [p1] BMC
case 0xB1FF: bank=V; mode |= 0x40; M83Sync(); break; // Dragon Ball Z Party [p1] BMC
case 0x8100: mode=V|(mode&0x40); M83Sync(); break;
case 0x8200: IRQCount&=0xFF00; IRQCount|=V; X6502_IRQEnd(FCEU_IQEXT); break;
case 0x8201: IRQa=mode&0x80; IRQCount&=0xFF; IRQCount|=V<<8; break;
case 0x8300: reg[8]=V; mode &= 0xBF; M83Sync(); break;
case 0x8301: reg[9]=V; mode &= 0xBF; M83Sync(); break;
case 0x8302: reg[10]=V; mode &= 0xBF; M83Sync(); break;
case 0x8310: reg[0]=V; M83Sync(); break;
case 0x8311: reg[1]=V; M83Sync(); break;
case 0x8312: reg[2]=V; isnot2kbank = 1; M83Sync(); break;
case 0x8313: reg[3]=V; isnot2kbank = 1; M83Sync(); break;
case 0x8314: reg[4]=V; isnot2kbank = 1; M83Sync(); break;
case 0x8315: reg[5]=V; isnot2kbank = 1; M83Sync(); break;
case 0x8316: reg[6]=V; M83Sync(); break;
case 0x8317: reg[7]=V; M83Sync(); break;
}
}
static DECLFR(UNLYOKOReadDip)
{
return (X.DB&0xFC)|dip;
}
static DECLFR(UNLYOKOReadLow)
{
return low[A & 3];
}
static DECLFW(UNLYOKOWriteLow)
{
low[A & 3] = V;
}
static void UNLYOKOPower(void)
{
mode = bank = 0;
dip = 3;
UNLYOKOSync();
SetReadHandler(0x5000,0x53FF,UNLYOKOReadDip);
SetReadHandler(0x5400,0x5FFF,UNLYOKOReadLow);
SetWriteHandler(0x5400,0x5FFF,UNLYOKOWriteLow);
SetReadHandler(0x8000,0xFFFF,CartBR);
SetWriteHandler(0x8000,0xFFFF,UNLYOKOWrite);
}
static void M83Power(void)
{
is2kbank = 0;
isnot2kbank = 0;
mode = bank = 0;
dip = 0;
M83Sync();
SetReadHandler(0x5000,0x5000,UNLYOKOReadDip);
SetReadHandler(0x5100,0x5103,UNLYOKOReadLow);
SetWriteHandler(0x5100,0x5103,UNLYOKOWriteLow);
SetReadHandler(0x6000,0x7fff,CartBR);
SetWriteHandler(0x6000,0x7fff,CartBW); // Pirate Dragon Ball Z Party [p1] used if for saves instead of seraial EEPROM
SetReadHandler(0x8000,0xffff,CartBR);
SetWriteHandler(0x8000,0xffff,M83Write);
}
static void UNLYOKOReset(void)
{
dip = (dip + 1) & 3;
mode = bank = 0;
UNLYOKOSync();
}
static void M83Reset(void)
{
dip ^= 1;
M83Sync();
}
static void M83Close(void)
{
if(WRAM)
FCEU_gfree(WRAM);
WRAM=NULL;
}
static void UNLYOKOIRQHook(int a)
{
if(IRQa)
{
IRQCount-=a;
if(IRQCount<0)
{
X6502_IRQBegin(FCEU_IQEXT);
IRQa=0;
IRQCount=0xFFFF;
}
}
}
static void UNLYOKOStateRestore(int version)
{
UNLYOKOSync();
}
static void M83StateRestore(int version)
{
M83Sync();
}
void UNLYOKO_Init(CartInfo *info)
{
info->Power=UNLYOKOPower;
info->Reset=UNLYOKOReset;
MapIRQHook=UNLYOKOIRQHook;
GameStateRestore=UNLYOKOStateRestore;
AddExState(&StateRegs, ~0, 0, 0);
}
void Mapper83_Init(CartInfo *info)
{
info->Power=M83Power;
info->Reset=M83Reset;
info->Close=M83Close;
MapIRQHook=UNLYOKOIRQHook;
GameStateRestore=M83StateRestore;
WRAMSIZE=8192;
WRAM=(uint8*)FCEU_gmalloc(WRAMSIZE);
SetupCartPRGMapping(0x10,WRAM,WRAMSIZE,1);
AddExState(WRAM, WRAMSIZE, 0, "WRAM");
AddExState(&StateRegs, ~0, 0, 0);
}

View File

@ -1,6 +1,6 @@
{ 0xecf78d8a13a030a6LL, "Ai Sensei no Oshiete", INESB_HACKED },
{ 0x10f90ba5bd55c22eLL, "Alien Syndrome", INESB_HACKED },
{ 0x4712856d3e12f21fLL, "Akumajou Densetsu", INESB_HACKED },
{ 0x10f90ba5bd55c22eLL, "Alien Syndrome", INESB_HACKED },
{ 0x0d69ab3ad28ad1c2LL, "Banana", INESB_INCOMPLETE },
{ 0x85d2c348a161cdbfLL, "Bio Senshi Dan", INESB_HACKED },
{ 0x18fdb7c16aa8cb5cLL, "Bucky O'Hare", INESB_CORRUPT },
@ -9,9 +9,9 @@
{ 0x60936436d3ea0ab6LL, "Crisis Force", INESB_HACKED },
{ 0xcf31097ddbb03c5dLL, "Crystalis (Prototype)", INESB_CORRUPT },
{ 0x92080a8ce94200eaLL, "Digital Devil Story II", INESB_HACKED },
{ 0x97f133d8bc1c28dbLL, "Dragon Ball", INESB_HACKED },
{ 0x6c2a2f95c2fe4b6eLL, "Dragon Ball", INESB_HACKED },
{ 0x767aaff62963c58fLL, "Dragon Ball", INESB_HACKED },
{ 0x97f133d8bc1c28dbLL, "Dragon Ball", INESB_HACKED },
{ 0x500b267abb323005LL, "Dragon Warrior 4", INESB_CORRUPT },
{ 0x02bdcf375704784bLL, "Erika to Satoru no Yume Bouken", INESB_HACKED },
{ 0xd4fea9d2633b9186LL, "Famista 91", INESB_HACKED },
@ -19,8 +19,8 @@
{ 0xb5bb1d0fb47d0850LL, "Famista 93", INESB_HACKED },
{ 0x30471e773f7cdc89LL, "Famista 94", INESB_HACKED },
{ 0x76c5c44ffb4a0bd7LL, "Fantasy Zone", INESB_HACKED },
{ 0x27da2b0c500dc346LL, "Fire Emblem", INESB_HACKED },
{ 0xb470bfb90e2b1049LL, "Fire Emblem Gaiden", INESB_HACKED },
{ 0x27da2b0c500dc346LL, "Fire Emblem", INESB_HACKED },
{ 0x23214fe456fba2ceLL, "Ganbare Goemon 2", INESB_HACKED },
{ 0xbf8b22524e8329d9LL, "Ganbare Goemon Gaiden", INESB_HACKED },
{ 0xa97041c3da0134e3LL, "Gegege no Kitarou 2", INESB_INCOMPLETE },
@ -31,8 +31,8 @@
{ 0xb068d4ac10ef848eLL, "Highway Star", INESB_HACKED },
{ 0xbf5175271e5019c3LL, "Kaiketsu Yanchamaru 3", INESB_HACKED },
{ 0xfb4b508a236bbba3LL, "Salamander", INESB_HACKED },
{ 0x3716c4bebf885344LL, "Super Mario Bros.", INESB_HACKED },
{ 0x1895afc6eef26c7dLL, "Super Mario Bros.", INESB_HACKED },
{ 0x103fc85d978b861bLL, "Sweet Home", INESB_CORRUPT },
{ 0x3716c4bebf885344LL, "Super Mario Bros.", INESB_HACKED },
{ 0xfffda4407d80885aLL, "Sweet Home", INESB_CORRUPT },
{ 0x103fc85d978b861bLL, "Sweet Home", INESB_CORRUPT },
{ 0, 0, 0 }

View File

@ -1,257 +1,234 @@
{0x9cbadc25,5,8}, /* JustBreed */
{0x6e68e31a,16,8}, /* Dragon Ball 3*/
{0xbfc7a2e9,16,8},
{0x33b899c9,16,-1}, /* Dragon Ball - Dai Maou Fukkatsu (J) [!] */
{0x3f15d20d,153,8}, /* Famicom Jump 2 */
{0xaf5d7aa2, -1, 0}, /* Clu Clu Land */
{0xcfb224e6, -1, 1}, /* Dragon Ninja (J) [p1][!].nes */
{0x4f2f1846, -1, 1}, /* Famista '89 - Kaimaku Han!! (J) */
{0x82f204ae, -1, 1}, /* Liang Shan Ying Xiong (NJ023) (Ch) [!] */
{0x684afccd, -1, 1}, /* Space Hunter (J) */
{0xad9c63e2, -1, 1}, /* Space Shadow (J) */
{0xfcdaca80, 0, 0}, /* Elevator Action */
{0xc05a365b, 0, 0}, /* Exed Exes (J) */
{0x32fa246f, 0, 0}, /* Tag Team Pro Wrestling */
{0xb3c30bea, 0, 0}, /* Xevious (J) */
{0xe492d45a, 0, 0}, /* Zippy Race */
{0xe28f2596, 0, 1}, /* Pac Land (J) */
{0xd8ee7669, 1, 8}, /* Adventures of Rad Gravity */
{0x5b837e8d, 1, 8}, /* Alien Syndrome */
{0x37ba3261, 1, 8}, /* Back to the Future 2 and 3 */
{0x5b6ca654, 1, 8}, /* Barbie rev X*/
{0x61a852ea, 1, 8}, /* Battle Stadium - Senbatsu Pro Yakyuu */
{0xf6fa4453, 1, 8}, /* Bigfoot */
{0x391aa1b8, 1, 8}, /* Bloody Warriors (J) */
{0xa5e8d2cd, 1, 8}, /* Breakthru */
{0x3f56a392, 1, 8}, /* Captain Ed (J) */
{0x078ced30, 1, 8}, /* Choujin - Ultra Baseball */
{0xfe364be5, 1, 8}, /* Deep Dungeon 4 */
{0x57c12280, 1, 8}, /* Demon Sword */
{0xd09b74dc, 1, 8}, /* Great Tank (J) */
{0xe8baa782, 1, 8}, /* Gun Hed (J) */
{0x970bd9c2, 1, 8}, /* Hanjuku Hero */
{0xcd7a2fd7, 1, 8}, /* Hanjuku Hero */
{0x63469396, 1, 8}, /* Hokuto no Ken 4 */
{0xe94d5181, 1, 8}, /* Mirai Senshi - Lios */
{0x7156cb4d, 1, 8}, /* Muppet Adventure Carnival thingy */
{0x70f67ab7, 1, 8}, /* Musashi no Bouken */
{0x291bcd7d, 1, 8}, /* Pachio Kun 2 */
{0xa9a4ea4c, 1, 8}, /* Satomi Hakkenden */
{0xcc3544b0, 1, 8}, /* Triathron */
{0x934db14a, 1, -1}, /* All-Pro Basketball */
{0xf74dfc91, 1, -1}, /* Win, Lose, or Draw */
{0x9ea1dc76, 2, 0}, /* Rainbow Islands */
{0x6d65cac6, 2, 0}, /* Terra Cresta */
{0xe1b260da, 2, 1}, /* Argos no Senshi */
{0x1d0f4d6b, 2, 1}, /* Black Bass thinging */
{0x266ce198, 2, 1}, /* City Adventure Touch */
{0x804f898a, 2, 1}, /* Dragon Unit */
{0x55773880, 2, 1}, /* Gilligan's Island */
{0x6e0eb43e, 2, 1}, /* Puss n Boots */
{0x2bb6a0f8, 2, 1}, /* Sherlock Holmes */
{0x28c11d24, 2, 1}, /* Sukeban Deka */
{0x02863604, 2, 1}, /* Sukeban Deka */
{0x419461d0, 2, 1}, /* Super Cars */
{0xdbf90772, 3, 0}, /* Alpha Mission */
{0xd858033d, 3, 0}, /* Armored Scrum Object */
{0x9bde3267, 3, 1}, /* Adventures of Dino Riki */
{0xd8eff0df, 3, 1}, /* Gradius (J) */
{0x1d41cc8c, 3, 1}, /* Gyruss */
{0xcf322bb3, 3, 1}, /* John Elway's Quarterback */
{0xb5d28ea2, 3, 1}, /* Mystery Quest - mapper 3?*/
{0x02cc3973, 3, 1}, /* Ninja Kid */
{0xbc065fc3, 3, 1}, /* Pipe Dream */
{0xc9ee15a7, 3, -1}, /* 3 is probably best. 41 WILL NOT WORK. */
{0x22d6d5bd, 4, 1},
{0xd97c31b0, 4, 1}, //Rasaaru Ishii no Childs Quest (J)
{0x404b2e8b, 4, 2}, /* Rad Racer 2 */
{0x15141401, 4, 8}, /* Asmik Kun Land */
{0x4cccd878, 4, 8}, /* Cat Ninden Teyandee */
{0x59280bec, 4, 8}, /* Jackie Chan */
{0x7474ac92, 4, 8}, /* Kabuki: Quantum Fighter */
{0x5337f73c, 4, 8}, /* Niji no Silk Road */
{0x9eefb4b4, 4, 8}, /* Pachi Slot Adventure 2 */
{0x21a653c7, 4, -1}, /* Super Sky Kid */
{0x9cbadc25, 5, 8}, /* JustBreed */
{0xf518dd58, 7, 8}, /* Captain Skyhawk */
{0x84382231, 9, 0}, /* Punch Out (J) */
{0xbe939fce, 9, 1}, /* Punchout*/
{0xaf5d7aa2, -1, 0}, /* Clu Clu Land */
{0xcfb224e6, -1, 1}, /* Dragon Ninja (J) [p1][!].nes */
{0x4f2f1846, -1, 1}, /* Famista '89 - Kaimaku Han!! (J) */
{0x345d3a1a, 11, 1}, /* Castle of Deceit */
{0x5e66eaea, 13, 1}, /* Videomation */
{0xbfc7a2e9, 16, 8},
{0x6e68e31a, 16, 8}, /* Dragon Ball 3*/
{0x183859d2, 16, -1},
{0x33b899c9, 16, -1}, /* Dragon Ball - Dai Maou Fukkatsu (J) [!] */
{0x5555fca3, 32, 8},
{0x283ad224, 32, 8}, /* Ai Sensei no Oshiete */
{0x243a8735, 32, 0x10|4}, /* Major League */
{0xc2730c30, 34, 0}, /* Deadly Towers */
{0x4c7c1af3, 34, 1}, /* Caesar's Palace */
{0x932ff06e, 34, 1}, /* Classic Concentration */
{0xf46ef39a, 37, -1}, /* Super Mario Bros. + Tetris + Nintendo World Cup (E) [!] */
{0x7ccb12a3, 43, -1}, /* SMB2j */
{0x6c71feae, 45, -1}, /* Kunio 8-in-1 */
{0xaebd6549, 48, 8}, /* Bakushou!! Jinsei Gekijou 3 */
{0x6cdc0cd9, 48, 8}, /* Bubble Bobble 2 */
{0x99c395f9, 48, 8}, /* Captain Saver */
{0xa7b0536c, 48, 8}, /* Don Doko Don 2 */
{0x40c0ad47, 48, 8}, /* Flintstones 2 */
{0x1500e835, 48, 8}, /* Jetsons (J) */
{0xa912b064, 51|0x800, 8}, /* 11-in-1 Ball Games(has CHR ROM when it shouldn't) */
{0xb19a55dd, 64, 8}, /* Road Runner */
{0xf92be3ec, 64, -1}, /* Rolling Thunder */
{0xe84274c5, 66, 1},
{0xbde3ae9b, 66, 1}, /* Doraemon */
{0x9552e8df, 66, 1}, /* Dragon Ball */
{0x811f06d9, 66, 1}, /* Dragon Power */
{0xd26efd78, 66, 1}, /* SMB Duck Hunt */
{0xdd8ed0f7, 70, 1}, /* Kamen Rider Club */
{0xbba58be5, 70, -1}, /* Family Trainer - Manhattan Police */
{0x370ceb65, 70, -1}, /* Family Trainer - Meiro Dai Sakusen */
{0xe62e3382, 71, -1}, /* Mig-29 Soviet Fighter */
{0x054bd3e9, 74, -1}, /* Di 4 Ci - Ji Qi Ren Dai Zhan (As) */
{0x496ac8f7, 74, -1}, /* Ji Jia Zhan Shi (As) */
{0xae854cef, 74, -1}, /* Jia A Fung Yun (Chinese) */
{0xba51ac6f, 78, 2},
{0x3d1c3137, 78, 8}, /* Uchuusen - Cosmo Carrier */
{0xa4fbb438, 79, 0},
{0xd4a76b07, 79, 0}, /* F-15 City Wars*/
{0x1eb4a920, 79, 1}, /* Double Strike */
{0x3e1271d5, 79, 1}, /* Tiles of Fate */
{0xd2699893, 88, 0}, /* Dragon Spirit */
{0xbb7c5f7a, 89, 8}, /* Mito Koumon or something similar */
{0x0da5e32e, 101, -1}, /* new Uruusey Yatsura */
{0x8eab381c, 113, 1}, /* Death Bots */
{0x6a03d3f3, 114, -1},
{0x0d98db53, 114, -1}, /* Pocahontas */
{0x4e7729ff, 114, -1}, /* Super Donkey Kong */
{0xc5e5c5b2, 115, -1}, /* Bao Qing Tian (As).nes */
{0xa1dc16c0, 116, -1},
{0xe40dfb7e, 116, -1}, /* Somari (P conf.) */
{0xc9371ebb, 116, -1}, /* Somari (W conf.) */
{0xcbf4366f, 118, 8}, /* Alien Syndrome (U.S. unlicensed) */
{0x78b657ac, 118, -1}, /* Armadillo */
{0x90c773c1, 118, -1}, /* Goal! 2 */
{0xb9b4d9e0, 118, -1}, /* NES Play Action Football */
{0x07d92c31, 118, -1}, /* RPG Jinsei Game */
{0x37b62d04, 118, -1}, /* Ys 3 */
{0x318e5502, 121, -1}, /* Sonic 3D Blast 6 (Unl) */
{0xddcfb058, 121, -1}, /* Street Fighter Zero 2 '97 (Unl) [!] */
{0x5aefbc94, 133, -1}, /* Jovial Race (Sachen) [a1][!] */
{0xc2df0a00, 140, 1}, /* Bio Senshi Dan(hacked) */
{0xe46b1c5d, 140, 1}, /* Mississippi Satsujin Jiken */
{0x3293afea, 140, 1}, /* Mississippi Satsujin Jiken */
{0x6bc65d7e, 140, 1}, /* Youkai Club*/
{0x5caa3e61, 144, 1}, /* Death Race */
{0x48239b42, 146, -1}, /* Mahjong Companion (Sachen) [!] */
{0xb6a727fa, 146, -1}, /* Papillion (As) [!] */
{0xa62b79e1, 146, -1}, /* Side Winder (HES) [!] */
{0xcc868d4e, 149, -1}, /* 16 Mahjong [p1][!] */
{0x29582ca1, 150, -1},
{0x40dbf7a2, 150, -1},
{0x73fb55ac, 150, -1}, /* 2-in-1 Cosmo Cop + Cyber Monster (Sachen) [!] */
{0xddcbda16, 150, -1}, /* 2-in-1 Tough Cop + Super Tough Cop (Sachen) [!] */
{0x47918d84, 150, -1}, /* auto-upturn */
{0x0f141525, 152, 8}, /* Arkanoid 2 (Japanese) */
{0xbda8f8e4, 152, 8}, /* Gegege no Kitarou 2 */
{0xb1a94b82, 152, 8}, /* Pocket Zaurus */
{0x026c5fca, 152, 8}, /* Saint Seiya Ougon Densetsu */
{0x3f15d20d, 153, 8}, /* Famicom Jump 2 */
{0xb7f28915, 153, -1}, /* Magical Taruruuto-kun 2 - Mahou Daibouken (J) */
{0xa262a81f, 153, -1}, /* Rokudenashi Blues (J) */
{0xe170404c, 153, -1}, /* SD Gundam Gaiden - Knight Gundam Monogatari (J) (V1.0) [!] */
{0x276ac722, 153, -1}, /* SD Gundam Gaiden - Knight Gundam Monogatari (J) (V1.1) [!] */
{0xb049a8c4, 153, -1}, /* SD Gundam Gaiden - Knight Gundam Monogatari 2 - Hikari no Kishi (J) [!] */
{0xc2840372, 153, -1}, /* SD Gundam Gaiden - Knight Gundam Monogatari 3 - Densetsu no Kishi Dan (J) [!] */
{0xd1691028, 154, 8}, /* Devil Man */
{0xcfd4a281, 155, 8}, /* Money Game. Yay for money! */
{0x2f27cdef, 155, 8}, /* Tatakae!! Rahmen Man */
{0xccc03440, 156, -1},
{0x983d8175, 157, 8}, /* Datach Battle Rush */
{0x894efdbc, 157, 8}, /* Datach Crayon Shin Chan */
{0x19e81461, 157, 8}, /* Datach DBZ */
{0xbe06853f, 157, 8}, /* Datach J-League */
{0x0be0a328, 157, 8}, /* Datach SD Gundam Wars */
{0x5b457641, 157, 8}, /* Datach Ultraman Club */
{0xf51a7f46, 157, 8}, /* Datach Yuu Yuu Hakusho */
{0x58152b42, 160, 1}, /* Pipe 5 (Sachen) */
{0x081caaff, 163, -1}, /* Commandos (Ch) */
{0x02c41438, 176, -1}, /* Xing He Zhan Shi (C) */
{0x558c0dc3, 178, -1}, /* Super 2in1 (unl)[!] {mapper unsupported} */
{0xc68363f6, 180, 0}, /* Crazy Climber */
{0x0f05ff0a, 181, -1}, /* Seicross (redump) */
{0x96ce586e, 189, 8}, /* Street Fighter 2 YOKO */
{0x555a555e, 191, -1},
{0x2cc381f6, 191, -1}, /* Sugoro Quest - Dice no Senshitachi (As) */
{0xa145fae6, 192, -1},
{0xa9115bc1, 192, -1},
{0x4c7bbb0e, 192, -1},
{0x98c1cd4b, 192, -1}, /* Ying Lie Qun Xia Zhuan (Chinese) */
{0x442f1a29, 192, -1}, /* Young chivalry */
{0x637134e8, 193, 1}, /* Fighting Hero */
{0xa925226c, 194, -1}, /* Dai-2-Ji - Super Robot Taisen (As) */
{0x7f3dbf1b, 195, 0},
{0xb616885c, 195, 0}, /* CHaos WOrld (Ch)*/
{0x33c5df92, 195, -1},
{0x1bc0be6c, 195, -1}, /* Captain Tsubasa Vol 2 - Super Striker (C) */
{0xd5224fde, 195, -1}, /* Crystalis (c) */
{0xfdec419f, 196, -1}, /* Street Fighter VI 16 Peoples (Unl) [!] */
{0x700705f4, 198, -1},
{0x9a2cf02c, 198, -1},
{0xd8b401a7, 198, -1},
{0x28192599, 198, -1},
{0x19b9e732, 198, -1},
{0xdd431ba7, 198, -1}, /* Tenchi wo kurau 2 (c) */
{0xd871d3e6, 199, -1}, /* Dragon Ball Z 2 - Gekishin Freeza! (C) */
{0xed481b7c, 199, -1}, /* Dragon Ball Z Gaiden - Saiya Jin Zetsumetsu Keikaku (C) */
{0x44c20420, 199, -1}, /* San Guo Zhi 2 (C) */
{0x4e1c1e3c, 206, 0}, /* Karnov */
{0x276237b3, 206, 0}, /* Karnov */
{0x7678f1d5, 207, 8}, /* Fudou Myouou Den */
{0x07eb2c12, 208, -1}, /* Street Fighter IV */
{0xdd8ced31, 209, -1}, /* Power Rangers 3 */
{0x063b1151, 209, -1}, /* Power Rangers 4 */
{0xdd4d9a62, 209, -1}, /* Shin Samurai Spirits 2 */
{0x0c47946d, 210, 1}, /* Chibi Maruko Chan */
{0xc247cc80, 210, 1}, /* Family Circuit '91 */
{0x6ec51de5, 210, 1}, /* Famista '92 */
{0xadffd64f, 210, 1}, /* Famista '93 */
{0x429103c9, 210, 1}, /* Famista '94 */
{0x81b7f1a8, 210, 1}, /* Heisei Tensai Bakabon */
{0x2447e03b, 210, 1}, /* Top Striker */
{0x1dc0f740, 210, 1}, /* Wagyan Land 2 */
{0xd323b806, 210, 1}, /* Wagyan Land 3 */
{0xbd523011, 210, 2}, /* Dream Master */
{0x5daae69a, 211, -1}, /* Aladdin - Return of Jaffar, The (Unl) [!] */
{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) */
{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) */
{0x983d8175,157,8}, /* Datach Battle Rush */
{0x894efdbc,157,8}, /* Datach Crayon Shin Chan */
{0x19e81461,157,8}, /* Datach DBZ */
{0xbe06853f,157,8}, /* Datach J-League */
{0x0be0a328,157,8}, /* Datach SD Gundam Wars */
{0x5b457641,157,8}, /* Datach Ultraman Club */
{0xf51a7f46,157,8}, /* Datach Yuu Yuu Hakusho */
{0xe62e3382,71,-1}, /* Mig-29 Soviet Fighter */
{0x21a653c7,4,-1}, /* Super Sky Kid */
{0xdd4d9a62,209,-1}, /* Shin Samurai Spirits 2 */
{0x063b1151,209,-1}, /* Power Rangers 4 */
{0xdd8ced31,209,-1}, /* Power Rangers 3 */
{0x0c47946d,210,1}, /* Chibi Maruko Chan */
{0xbd523011,210,2}, /* Dream Master */ // may be wrong, but seems it solve most problems
{0xc247cc80,210,1}, /* Family Circuit '91 */
{0x6ec51de5,210,1}, /* Famista '92 */
{0xadffd64f,210,1}, /* Famista '93 */
{0x429103c9,210,1}, /* Famista '94 */
{0x81b7f1a8,210,1}, /* Heisei Tensai Bakabon */
{0x2447e03b,210,1}, /* Top Striker */
{0x1dc0f740,210,1}, /* Wagyan Land 2 */
{0xd323b806,210,1}, /* Wagyan Land 3 */
{0x07eb2c12,208,-1}, /* Street Fighter IV */
{0x96ce586e,189,8}, /* Street Fighter 2 YOKO */
{0x7678f1d5,207,8}, /* Fudou Myouou Den */
{0x276237b3,206,0}, /* Karnov */
{0x4e1c1e3c,206,0}, /* Karnov */
/* Some entries to sort out the minor 33/48 mess. */
{0xaebd6549,48,8}, /* Bakushou!! Jinsei Gekijou 3 */
{0x6cdc0cd9,48,8}, /* Bubble Bobble 2 */
//{0x10e24006,48,8}, /* Flintstones 2 - bad dump? */
{0x40c0ad47,48,8}, /* Flintstones 2 */
{0xa7b0536c,48,8}, /* Don Doko Don 2 */
{0x99c395f9,48,8}, /* Captain Saver */
{0x1500e835,48,8}, /* Jetsons (J) */
{0x637134e8,193,1}, /* Fighting Hero */
{0xcbf4366f,118,8}, /* Alien Syndrome (U.S. unlicensed) */
{0xb19a55dd,64,8}, /* Road Runner */
//{0x3eafd012,116,-1}, /* AV Girl Fighting */
{0x1d0f4d6b,2,1}, /* Black Bass thinging */
{0xf92be3ec,64,-1}, /* Rolling Thunder */
{0x345ee51a,245,-1}, /* DQ4c */
{0xf518dd58,7,8}, /* Captain Skyhawk */
{0x7ccb12a3,43,-1}, /* SMB2j */
{0x6f12afc5,235,-1}, /* Golden Game 150-in-1 */
{0xccc03440,156,-1},
{0xc9ee15a7,3,-1}, /* 3 is probably best. 41 WILL NOT WORK. */
{0x3e1271d5,79,1}, /* Tiles of Fate */
{0x8eab381c,113,1}, /* Death Bots */
{0xd4a76b07,79,0}, /* F-15 City Wars*/
{0xa4fbb438,79,0},
{0x1eb4a920,79,1}, /* Double Strike */
{0x345d3a1a,11,1}, /* Castle of Deceit */
{0x62ef6c79,232,8}, /* Quattro Sports -Aladdin */
{0x5caa3e61,144,1}, /* Death Race */
{0xd2699893,88,0}, /* Dragon Spirit */
{0x2f27cdef,155,8}, /* Tatakae!! Rahmen Man */
{0xcfd4a281,155,8}, /* Money Game. Yay for money! */
{0xd1691028,154,8}, /* Devil Man */
{0xc68363f6,180,0}, /* Crazy Climber */
{0xbe939fce,9,1}, /* Punchout*/
{0x5e66eaea,13,1}, /* Videomation */
{0xaf5d7aa2,-1,0}, /* Clu Clu Land */
{0xc2730c30,34,0}, /* Deadly Towers */
{0x932ff06e,34,1}, /* Classic Concentration */
{0x4c7c1af3,34,1}, /* Caesar's Palace */
{0x15141401,4,8}, /* Asmik Kun Land */
{0x59280bec,4,8}, /* Jackie Chan */
{0x4cccd878,4,8}, /* Cat Ninden Teyandee */
{0x9eefb4b4,4,8}, /* Pachi Slot Adventure 2 */
{0x5337f73c,4,8}, /* Niji no Silk Road */
{0x7474ac92,4,8}, /* Kabuki: Quantum Fighter */
{0xbb7c5f7a,89,8}, /* Mito Koumon or something similar */
/* Probably a Namco MMC3-workalike */
//{0xa5e6baf9,4,1|4}, /* Dragon Slayer 4 */
//{0xe40b4973,4,1|4}, /* Metro Cross */
//{0xd97c31b0,4,1|4}, /* Rasaaru Ishii no Childs Quest */
{0x84382231,9,0}, /* Punch Out (J) */
{0xe28f2596,0,1}, /* Pac Land (J) */
{0xfcdaca80,0,0}, /* Elevator Action */
{0xe492d45a,0,0}, /* Zippy Race */
{0x32fa246f,0,0}, /* Tag Team Pro Wrestling */
{0xc05a365b,0,0}, /* Exed Exes (J) */
{0xb3c30bea,0,0}, /* Xevious (J) */
{0x804f898a,2,1}, /* Dragon Unit */
{0xe1b260da,2,1}, /* Argos no Senshi */
{0x6d65cac6,2,0}, /* Terra Cresta */
{0x9ea1dc76,2,0}, /* Rainbow Islands */
{0x28c11d24,2,1}, /* Sukeban Deka */
{0x02863604,2,1}, /* Sukeban Deka */
{0x2bb6a0f8,2,1}, /* Sherlock Holmes */
{0x55773880,2,1}, /* Gilligan's Island */
{0x419461d0,2,1}, /* Super Cars */
{0x6e0eb43e,2,1}, /* Puss n Boots */
{0x266ce198,2,1}, /* City Adventure Touch */
//{0x48349b0b,1,8}, /* Dragon Quest 2 */
{0xd09b74dc,1,8}, /* Great Tank (J) */
{0xe8baa782,1,8}, /* Gun Hed (J) */
{0x970bd9c2,1,8}, /* Hanjuku Hero */
{0xcd7a2fd7,1,8}, /* Hanjuku Hero */
{0x63469396,1,8}, /* Hokuto no Ken 4 */
{0x291bcd7d,1,8}, /* Pachio Kun 2 */
{0xf74dfc91,1,-1}, /* Win, Lose, or Draw */
{0x3f56a392,1,8}, /* Captain Ed (J) */
{0x078ced30,1,8}, /* Choujin - Ultra Baseball */
{0x391aa1b8,1,8}, /* Bloody Warriors (J) */
{0x61a852ea,1,8}, /* Battle Stadium - Senbatsu Pro Yakyuu */
{0xfe364be5,1,8}, /* Deep Dungeon 4 */
{0xd8ee7669,1,8}, /* Adventures of Rad Gravity */
{0xa5e8d2cd,1,8}, /* Breakthru */
{0xf6fa4453,1,8}, /* Bigfoot */
{0x37ba3261,1,8}, /* Back to the Future 2 and 3 */
{0x934db14a,1,-1}, /* All-Pro Basketball */
{0xe94d5181,1,8}, /* Mirai Senshi - Lios */
{0x7156cb4d,1,8}, /* Muppet Adventure Carnival thingy */
{0x5b6ca654,1,8}, /* Barbie rev X*/
{0x57c12280,1,8}, /* Demon Sword */
{0x70f67ab7,1,8}, /* Musashi no Bouken */
{0xa9a4ea4c,1,8}, /* Satomi Hakkenden */
{0xcc3544b0,1,8}, /* Triathron */
{0x1d41cc8c,3,1}, /* Gyruss */
{0xd8eff0df,3,1}, /* Gradius (J) */
{0xdbf90772,3,0}, /* Alpha Mission */
{0xd858033d,3,0}, /* Armored Scrum Object */
{0xcf322bb3,3,1}, /* John Elway's Quarterback */
{0x9bde3267,3,1}, /* Adventures of Dino Riki */
{0x02cc3973,3,1}, /* Ninja Kid */
{0xb5d28ea2,3,1}, /* Mystery Quest - mapper 3?*/
{0xbc065fc3,3,1}, /* Pipe Dream */
{0x5b837e8d,1,8}, /* Alien Syndrome */
{0x283ad224,32,8}, /* Ai Sensei no Oshiete */
{0x5555fca3,32,8}, /* "" "" */
{0x243a8735,32,0x10|4}, /* Major League */
{0x6bc65d7e,140,1}, /* Youkai Club*/
{0xc2df0a00,140,1}, /* Bio Senshi Dan(hacked) */
{0xbde3ae9b,66,1}, /* Doraemon */
{0xd26efd78,66,1}, /* SMB Duck Hunt */
{0x811f06d9,66,1}, /* Dragon Power */
{0x3293afea,140,1}, /* Mississippi Satsujin Jiken */
{0xe46b1c5d,140,1}, /* Mississippi Satsujin Jiken */
{0xe84274c5,66,1}, /* "" "" */
{0x9552e8df,66,1}, /* Dragon Ball */
{0xba51ac6f,78,2},
{0x3d1c3137,78,8}, /* Uchuusen - Cosmo Carrier */
{0xbda8f8e4,152,8}, /* Gegege no Kitarou 2 */
{0x026c5fca,152,8}, /* Saint Seiya Ougon Densetsu */
{0x0f141525,152,8}, /* Arkanoid 2 (Japanese) */
{0xb1a94b82,152,8}, /* Pocket Zaurus */
{0xbba58be5,70,-1}, /* Family Trainer - Manhattan Police */
{0x370ceb65,70,-1}, /* Family Trainer - Meiro Dai Sakusen */
{0xdd8ed0f7,70,1}, /* Kamen Rider Club */
{0x90c773c1,118,-1}, /* Goal! 2 */
{0xb9b4d9e0,118,-1}, /* NES Play Action Football */
{0x78b657ac,118,-1}, /* Armadillo */
{0x37b62d04,118,-1}, /* Ys 3 */
{0x07d92c31,118,-1}, /* RPG Jinsei Game */
{0x2705eaeb,234,-1}, /* Maxi 15 */
{0x404b2e8b,4,2}, /* Rad Racer 2 */
{0xa912b064,51|0x800,8}, /* 11-in-1 Ball Games(has CHR ROM when it shouldn't) */
{0xc5e5c5b2,115,-1}, /* Bao Qing Tian (As).nes */
{0xcfb224e6,-1,1}, /* Dragon Ninja (J) [p1][!].nes */
{0xf46ef39a,37,-1}, /* Super Mario Bros. + Tetris + Nintendo World Cup (E) [!] */
{0x0f05ff0a,181,-1}, /* Seicross (redump) */
{0x054bd3e9,74,-1}, /* Di 4 Ci - Ji Qi Ren Dai Zhan (As) */
{0x496ac8f7,74,-1}, /* Ji Jia Zhan Shi (As) */
{0xae854cef,74,-1}, /* Jia A Fung Yun (Chinese) */
{0x2cc381f6,191,-1}, /* Sugoro Quest - Dice no Senshitachi (As) */
{0x555a555e,191,-1},
{0x98c1cd4b,192,-1},/* Ying Lie Qun Xia Zhuan (Chinese) */
{0x442f1a29,192,-1},/* Young chivalry */
{0xa9115bc1,192,-1},
{0x4c7bbb0e,192,-1},
{0xa145fae6,192,-1},
{0xa925226c,194,-1},/* Dai-2-Ji - Super Robot Taisen (As) */
{0xd5224fde,195,-1},/* Crystalis (c) */
{0x1bc0be6c,195,-1},/* Captain Tsubasa Vol 2 - Super Striker (C) */
{0x33c5df92,195,-1},
{0xb616885c,195,0}, /* CHaos WOrld (Ch)*/
{0x7f3dbf1b,195,0},
{0xdd431ba7,198,-1},/* Tenchi wo kurau 2 (c) */
{0x28192599,198,-1},
{0x700705f4,198,-1},
{0x9a2cf02c,198,-1},
{0xd8b401a7,198,-1},
{0x19b9e732,198,-1},
{0xd871d3e6,199,-1},/* Dragon Ball Z 2 - Gekishin Freeza! (C) */
{0xed481b7c,199,-1},/* Dragon Ball Z Gaiden - Saiya Jin Zetsumetsu Keikaku (C) */
{0x44c20420,199,-1},/* San Guo Zhi 2 (C) */
{0xa1dc16c0,116,-1},
{0xcc868d4e,149,-1}, /* 16 Mahjong [p1][!] */
{0x48239b42,146,-1}, /* Mahjong Companion (Sachen) [!] */
{0xb6a727fa,146,-1}, /* Papillion (As) [!] */
{0xa62b79e1,146,-1}, /* Side Winder (HES) [!] */
{0x73fb55ac,150,-1}, /* 2-in-1 Cosmo Cop + Cyber Monster (Sachen) [!] */
{0xddcbda16,150,-1}, /* 2-in-1 Tough Cop + Super Tough Cop (Sachen) [!] */
{0x47918d84,150,-1}, /* auto-upturn */
{0x29582ca1,150,-1},
{0x40dbf7a2,150,-1},
{0x5aefbc94,133,-1}, /* Jovial Race (Sachen) [a1][!] */
{0x58152b42,160,1}, /* Pipe 5 (Sachen) */
{0x22d6d5bd,4,1},
{0x6a03d3f3,114,-1},
{0x0d98db53,114,-1}, /* Pocahontas */
{0x4e7729ff,114,-1}, /* Super Donkey Kong */
{0x02c41438,176,-1}, /* Xing He Zhan Shi (C) */
{0xfb2b6b10,241,-1}, /* Fan Kong Jing Ying (Ch) */
{0xb5e83c9a,241,-1}, /* Xing Ji Zheng Ba (Ch) */
{0x081caaff,163,-1}, /* Commandos (Ch) */
{0x0da5e32e,101,-1}, /* new Uruusey Yatsura */
{0x4f2f1846,-1,1}, /* Famista '89 - Kaimaku Han!! (J) */
{0x6c71feae,45,-1}, /* Kunio 8-in-1 */
// {0xbdbe3c96,238,-1}, /* Contra Fighter iNES version */
{0xd97c31b0,4,1}, //Rasaaru Ishii no Childs Quest (J)
{0,-1,-1}
{0x00000000, -1, -1}

View File

@ -152,101 +152,92 @@ struct INPSEL {
ESIFC inputfc;
};
static void SetInput(void)
{
static struct INPSEL moo[]=
{
{0x3a1694f9,SI_GAMEPAD,SI_GAMEPAD,SIFC_4PLAYER}, // Nekketsu Kakutou Densetsu
{0xc3c0811d,SI_GAMEPAD,SI_GAMEPAD,SIFC_OEKAKIDS}, // The two "Oeka Kids" games
{0x9d048ea4,SI_GAMEPAD,SI_GAMEPAD,SIFC_OEKAKIDS}, //
{0xaf4010ea,SI_GAMEPAD,SI_POWERPADB,SIFC_UNSET}, // World Class Track Meet
{0xd74b2719,SI_GAMEPAD,SI_POWERPADB,SIFC_UNSET}, // Super Team Games
{0x61d86167,SI_GAMEPAD,SI_POWERPADB,SIFC_UNSET}, // Street Cop
{0x6435c095,SI_GAMEPAD,SI_POWERPADB,SIFC_UNSET}, // Short Order/Eggsplode
{0x47232739,SI_GAMEPAD,SI_GAMEPAD,SIFC_TOPRIDER}, // Top Rider
{0x48ca0ee1,SI_GAMEPAD,SI_GAMEPAD,SIFC_BWORLD}, // Barcode World
{0x9f8f200a,SI_GAMEPAD,SI_GAMEPAD,SIFC_FTRAINERA}, // Super Mogura Tataki!! - Pokkun Moguraa
{0x9044550e,SI_GAMEPAD,SI_GAMEPAD,SIFC_FTRAINERA}, // Rairai Kyonshizu
{0x2f128512,SI_GAMEPAD,SI_GAMEPAD,SIFC_FTRAINERA}, // Jogging Race
{0x60ad090a,SI_GAMEPAD,SI_GAMEPAD,SIFC_FTRAINERA}, // Athletic World
{0x8a12a7d9,SI_GAMEPAD,SI_GAMEPAD,SIFC_FTRAINERB}, // Totsugeki Fuuun Takeshi Jou
{0xea90f3e2,SI_GAMEPAD,SI_GAMEPAD,SIFC_FTRAINERB}, // Running Stadium
{0x370ceb65,SI_GAMEPAD,SI_GAMEPAD,SIFC_FTRAINERB}, // Meiro Dai Sakusen
// Bad dump? {0x69ffb014,SI_GAMEPAD,SI_GAMEPAD,SIFC_FTRAINERB}, // Fuun Takeshi Jou 2
{0x6cca1c1f,SI_GAMEPAD,SI_GAMEPAD,SIFC_FTRAINERB}, // Dai Undoukai
{0x29de87af,SI_GAMEPAD,SI_GAMEPAD,SIFC_FTRAINERB}, // Aerobics Studio
{0xbba58be5,SI_GAMEPAD,SI_GAMEPAD,SIFC_FTRAINERB}, // Family Trainer: Manhattan Police
{0xea90f3e2,SI_GAMEPAD,SI_GAMEPAD,SIFC_FTRAINERB}, // Family Trainer: Running Stadium
{0xd9f45be9,SI_GAMEPAD,SI_GAMEPAD,SIFC_QUIZKING}, // Gimme a Break ...
{0x1545bd13,SI_GAMEPAD,SI_GAMEPAD,SIFC_QUIZKING}, // Gimme a Break ... 2
{0x7b44fb2a,SI_GAMEPAD,SI_GAMEPAD,SIFC_MAHJONG}, // Ide Yousuke Meijin no Jissen Mahjong 2
{0x9fae4d46,SI_GAMEPAD,SI_GAMEPAD,SIFC_MAHJONG}, // Ide Yousuke Meijin no Jissen Mahjong
{0x980be936,SI_GAMEPAD,SI_GAMEPAD,SIFC_HYPERSHOT}, // Hyper Olympic
{0x21f85681,SI_GAMEPAD,SI_GAMEPAD,SIFC_HYPERSHOT}, // Hyper Olympic (Gentei Ban)
{0x915a53a7,SI_GAMEPAD,SI_GAMEPAD,SIFC_HYPERSHOT}, // Hyper Sports
{0xad9c63e2,SI_GAMEPAD,SI_UNSET,SIFC_SHADOW}, // Space Shadow
{0x24598791,SI_UNSET,SI_ZAPPER,SIFC_NONE}, // Duck Hunt
{0xff24d794,SI_UNSET,SI_ZAPPER,SIFC_NONE}, // Hogan's Alley
{0xbeb8ab01,SI_UNSET,SI_ZAPPER,SIFC_NONE}, // Gumshoe
{0xde8fd935,SI_UNSET,SI_ZAPPER,SIFC_NONE}, // To the Earth
{0xedc3662b,SI_UNSET,SI_ZAPPER,SIFC_NONE}, // Operation Wolf
{0x2a6559a1,SI_UNSET,SI_ZAPPER,SIFC_NONE}, // Operation Wolf (J)
{0x4e959173,SI_UNSET,SI_ZAPPER,SIFC_NONE}, // Gotcha! - The Sport!
{0x23d17f5e,SI_GAMEPAD,SI_ZAPPER,SIFC_NONE}, // The Lone Ranger
{0xb8b9aca3,SI_UNSET,SI_ZAPPER,SIFC_NONE}, // Wild Gunman
{0x5112dc21,SI_UNSET,SI_ZAPPER,SIFC_NONE}, // Wild Gunman
{0x4318a2f8,SI_UNSET,SI_ZAPPER,SIFC_NONE}, // Barker Bill's Trick Shooting
{0x5ee6008e,SI_UNSET,SI_ZAPPER,SIFC_NONE}, // Mechanized Attack
{0x3e58a87e,SI_UNSET,SI_ZAPPER,SIFC_NONE}, // Freedom Force
{0xe9a7fe9e,SI_UNSET,SI_MOUSE,SIFC_NONE}, // Educational Computer 2000 //mbg merge 7/17/06 added -- appears to be from newer MM build
{0x851eb9be,SI_GAMEPAD,SI_ZAPPER,SIFC_NONE}, // Shooting Range
{0x74bea652,SI_GAMEPAD,SI_ZAPPER,SIFC_NONE}, // Supergun 3-in-1
{0x32fb0583,SI_UNSET,SI_ARKANOID,SIFC_NONE}, // Arkanoid(NES)
{0xd89e5a67,SI_UNSET,SI_UNSET,SIFC_ARKANOID}, // Arkanoid (J)
{0x0f141525,SI_UNSET,SI_UNSET,SIFC_ARKANOID}, // Arkanoid 2(J)
{0x912989dc,SI_UNSET,SI_UNSET,SIFC_FKB}, // Playbox BASIC
{0xf7606810,SI_UNSET,SI_UNSET,SIFC_FKB}, // Family BASIC 2.0A
{0x895037bc,SI_UNSET,SI_UNSET,SIFC_FKB}, // Family BASIC 2.1a
{0xb2530afc,SI_UNSET,SI_UNSET,SIFC_FKB}, // Family BASIC 3.0
{0x82f1fb96,SI_UNSET,SI_UNSET,SIFC_SUBORKB}, // Subor 1.0 Russian
{0xabb2f974,SI_UNSET,SI_UNSET,SIFC_SUBORKB}, // Study and Game 32-in-1
{0xd5d6eac4,SI_UNSET,SI_UNSET,SIFC_SUBORKB}, // Edu (As)
{0x589b6b0d,SI_UNSET,SI_UNSET,SIFC_SUBORKB}, // SuporV20
{0x5e073a1b,SI_UNSET,SI_UNSET,SIFC_SUBORKB}, // Supor English (Chinese)
{0x8b265862,SI_UNSET,SI_UNSET,SIFC_SUBORKB},
{0x41401c6d,SI_UNSET,SI_UNSET,SIFC_SUBORKB}, // SuporV40
{0x41ef9ac4,SI_UNSET,SI_UNSET,SIFC_SUBORKB},
{0x368c19a8,SI_UNSET,SI_UNSET,SIFC_SUBORKB}, // LIKO Study Cartridge
{0x543ab532,SI_UNSET,SI_UNSET,SIFC_SUBORKB}, // LIKO Color Lines
{0,SI_UNSET,SI_UNSET,SIFC_UNSET}
};
int x=0;
while(moo[x].input1>=0 || moo[x].input2>=0 || moo[x].inputfc>=0)
{
if(moo[x].crc32==iNESGameCRC32)
{
GameInfo->input[0]=moo[x].input1;
GameInfo->input[1]=moo[x].input2;
GameInfo->inputfc=moo[x].inputfc;
break;
}
x++;
}
static void SetInput(void)
{
static struct INPSEL moo[]=
{
{0x29de87af, SI_GAMEPAD, SI_GAMEPAD, SIFC_FTRAINERB }, // Aerobics Studio
{0xd89e5a67, SI_UNSET, SI_UNSET, SIFC_ARKANOID }, // Arkanoid (J)
{0x0f141525, SI_UNSET, SI_UNSET, SIFC_ARKANOID }, // Arkanoid 2(J)
{0x32fb0583, SI_UNSET, SI_ARKANOID, SIFC_NONE }, // Arkanoid(NES)
{0x60ad090a, SI_GAMEPAD, SI_GAMEPAD, SIFC_FTRAINERA }, // Athletic World
{0x48ca0ee1, SI_GAMEPAD, SI_GAMEPAD, SIFC_BWORLD }, // Barcode World
{0x4318a2f8, SI_UNSET, SI_ZAPPER, SIFC_NONE }, // Barker Bill's Trick Shooting
{0x6cca1c1f, SI_GAMEPAD, SI_GAMEPAD, SIFC_FTRAINERB }, // Dai Undoukai
{0x24598791, SI_UNSET, SI_ZAPPER, SIFC_NONE }, // Duck Hunt
{0xd5d6eac4, SI_UNSET, SI_UNSET, SIFC_SUBORKB }, // Edu (As)
{0xe9a7fe9e, SI_UNSET, SI_MOUSE, SIFC_NONE }, // Educational Computer 2000
{0x8f7b1669, SI_UNSET, SI_UNSET, SIFC_SUBORKB }, // FP BASIC 3.3 by maxzhou88
{0xf7606810, SI_UNSET, SI_UNSET, SIFC_FKB }, // Family BASIC 2.0A
{0x895037bc, SI_UNSET, SI_UNSET, SIFC_FKB }, // Family BASIC 2.1a
{0xb2530afc, SI_UNSET, SI_UNSET, SIFC_FKB }, // Family BASIC 3.0
{0xea90f3e2, SI_GAMEPAD, SI_GAMEPAD, SIFC_FTRAINERB }, // Family Trainer: Running Stadium
{0xbba58be5, SI_GAMEPAD, SI_GAMEPAD, SIFC_FTRAINERB }, // Family Trainer: Manhattan Police
{0x3e58a87e, SI_UNSET, SI_ZAPPER, SIFC_NONE }, // Freedom Force
{0xd9f45be9, SI_GAMEPAD, SI_GAMEPAD, SIFC_QUIZKING }, // Gimme a Break ...
{0x1545bd13, SI_GAMEPAD, SI_GAMEPAD, SIFC_QUIZKING }, // Gimme a Break ... 2
{0x4e959173, SI_UNSET, SI_ZAPPER, SIFC_NONE }, // Gotcha! - The Sport!
{0xbeb8ab01, SI_UNSET, SI_ZAPPER, SIFC_NONE }, // Gumshoe
{0xff24d794, SI_UNSET, SI_ZAPPER, SIFC_NONE }, // Hogan's Alley
{0x21f85681, SI_GAMEPAD, SI_GAMEPAD, SIFC_HYPERSHOT }, // Hyper Olympic (Gentei Ban)
{0x980be936, SI_GAMEPAD, SI_GAMEPAD, SIFC_HYPERSHOT }, // Hyper Olympic
{0x915a53a7, SI_GAMEPAD, SI_GAMEPAD, SIFC_HYPERSHOT }, // Hyper Sports
{0x9fae4d46, SI_GAMEPAD, SI_GAMEPAD, SIFC_MAHJONG }, // Ide Yousuke Meijin no Jissen Mahjong
{0x7b44fb2a, SI_GAMEPAD, SI_GAMEPAD, SIFC_MAHJONG }, // Ide Yousuke Meijin no Jissen Mahjong 2
{0x2f128512, SI_GAMEPAD, SI_GAMEPAD, SIFC_FTRAINERA }, // Jogging Race
{0xbb33196f, SI_UNSET, SI_UNSET, SIFC_FKB }, // Keyboard Transformer
{0x8587ee00, SI_UNSET, SI_UNSET, SIFC_FKB }, // Keyboard Transformer
{0x543ab532, SI_UNSET, SI_UNSET, SIFC_SUBORKB }, // LIKO Color Lines
{0x368c19a8, SI_UNSET, SI_UNSET, SIFC_SUBORKB }, // LIKO Study Cartridge
{0x5ee6008e, SI_UNSET, SI_ZAPPER, SIFC_NONE }, // Mechanized Attack
{0x370ceb65, SI_GAMEPAD, SI_GAMEPAD, SIFC_FTRAINERB }, // Meiro Dai Sakusen
{0x3a1694f9, SI_GAMEPAD, SI_GAMEPAD, SIFC_4PLAYER }, // Nekketsu Kakutou Densetsu
{0x9d048ea4, SI_GAMEPAD, SI_GAMEPAD, SIFC_OEKAKIDS }, // Oeka Kids
{0x2a6559a1, SI_UNSET, SI_ZAPPER, SIFC_NONE }, // Operation Wolf (J)
{0xedc3662b, SI_UNSET, SI_ZAPPER, SIFC_NONE }, // Operation Wolf
{0x912989dc, SI_UNSET, SI_UNSET, SIFC_FKB }, // Playbox BASIC
{0x9044550e, SI_GAMEPAD, SI_GAMEPAD, SIFC_FTRAINERA }, // Rairai Kyonshizu
{0xea90f3e2, SI_GAMEPAD, SI_GAMEPAD, SIFC_FTRAINERB }, // Running Stadium
{0x851eb9be, SI_GAMEPAD, SI_ZAPPER, SIFC_NONE }, // Shooting Range
{0x6435c095, SI_GAMEPAD, SI_POWERPADB, SIFC_UNSET }, // Short Order/Eggsplode
{0xc043a8df, SI_UNSET, SI_MOUSE, SIFC_NONE }, // Shu Qi Yu - Shu Xue Xiao Zhuan Yuan (Ch)
{0x2cf5db05, SI_UNSET, SI_MOUSE, SIFC_NONE }, // Shu Qi Yu - Zhi Li Xiao Zhuan Yuan (Ch)
{0xad9c63e2, SI_GAMEPAD, SI_UNSET, SIFC_SHADOW }, // Space Shadow
{0x61d86167, SI_GAMEPAD, SI_POWERPADB, SIFC_UNSET }, // Street Cop
{0xabb2f974, SI_UNSET, SI_UNSET, SIFC_SUBORKB }, // Study and Game 32-in-1
{0x41ef9ac4, SI_UNSET, SI_UNSET, SIFC_SUBORKB }, // Subor
{0x8b265862, SI_UNSET, SI_UNSET, SIFC_SUBORKB }, // Subor
{0x82f1fb96, SI_UNSET, SI_UNSET, SIFC_SUBORKB }, // Subor 1.0 Russian
{0x9f8f200a, SI_GAMEPAD, SI_GAMEPAD, SIFC_FTRAINERA }, // Super Mogura Tataki!! - Pokkun Moguraa
{0xd74b2719, SI_GAMEPAD, SI_POWERPADB, SIFC_UNSET }, // Super Team Games
{0x74bea652, SI_GAMEPAD, SI_ZAPPER, SIFC_NONE }, // Supergun 3-in-1
{0x5e073a1b, SI_UNSET, SI_UNSET, SIFC_SUBORKB }, // Supor English (Chinese)
{0x589b6b0d, SI_UNSET, SI_UNSET, SIFC_SUBORKB }, // SuporV20
{0x41401c6d, SI_UNSET, SI_UNSET, SIFC_SUBORKB }, // SuporV40
{0x23d17f5e, SI_GAMEPAD, SI_ZAPPER, SIFC_NONE }, // The Lone Ranger
{0xc3c0811d, SI_GAMEPAD, SI_GAMEPAD, SIFC_OEKAKIDS }, // The two "Oeka Kids" games
{0xde8fd935, SI_UNSET, SI_ZAPPER, SIFC_NONE }, // To the Earth
{0x47232739, SI_GAMEPAD, SI_GAMEPAD, SIFC_TOPRIDER }, // Top Rider
{0x8a12a7d9, SI_GAMEPAD, SI_GAMEPAD, SIFC_FTRAINERB }, // Totsugeki Fuuun Takeshi Jou
{0xb8b9aca3, SI_UNSET, SI_ZAPPER, SIFC_NONE }, // Wild Gunman
{0x5112dc21, SI_UNSET, SI_ZAPPER, SIFC_NONE }, // Wild Gunman
{0xaf4010ea, SI_GAMEPAD, SI_POWERPADB, SIFC_UNSET }, // World Class Track Meet
{0x00000000, SI_UNSET, SI_UNSET, SIFC_UNSET }
};
int x=0;
while(moo[x].input1>=0 || moo[x].input2>=0 || moo[x].inputfc>=0)
{
if(moo[x].crc32==iNESGameCRC32)
{
GameInfo->input[0]=moo[x].input1;
GameInfo->input[1]=moo[x].input2;
GameInfo->inputfc=moo[x].inputfc;
break;
}
x++;
}
}
#define INESB_INCOMPLETE 1
#define INESB_CORRUPT 2
#define INESB_HACKED 4
@ -533,144 +524,263 @@ typedef struct {
} BMAPPINGLocal;
static BMAPPINGLocal bmap[] = {
{"NROM", 0, NROM_Init},
{"MMC1", 1, Mapper1_Init},
{"UNROM", 2, UNROM_Init},
{"CNROM", 3, CNROM_Init},
{"MMC3", 4, Mapper4_Init},
{"MMC5", 5, Mapper5_Init},
{"ANROM", 7, ANROM_Init},
{"Color Dreams", 11, Mapper11_Init},
{"", 12, Mapper12_Init},
{"CPROM", 13, CPROM_Init},
{"100-in1", 15, Mapper15_Init},
{"Bandai", 16, Mapper16_Init},
{"Namcot 106", 19, Mapper19_Init},
{"Konami VRC2 type B", 23, Mapper23_Init},
{"Wario Land 2", 35, UNLSC127_Init}, // Wario Land 2
{"TXC Policeman", 36, Mapper36_Init}, // TXC Policeman
{"", 37, Mapper37_Init},
{"Bit Corp. Crime Busters", 38, Mapper38_Init}, // Bit Corp. Crime Busters
{"", 43, Mapper43_Init},
{"", 44, Mapper44_Init},
{"", 45, Mapper45_Init},
{"", 47, Mapper47_Init},
{"", 49, Mapper49_Init},
{"", 52, Mapper52_Init},
{"", 57, Mapper57_Init},
{"", 58, BMCGK192_Init},
{"", 60, BMCD1038_Init},
{"MHROM", 66, MHROM_Init},
{"Sunsoft Mapper #4", 68, Mapper68_Init},
{"", 70, Mapper70_Init},
{"", 74, Mapper74_Init},
{"Irem 74HC161/32", 78, Mapper78_Init},
{"", 87, Mapper87_Init},
{"", 88, Mapper88_Init},
{"", 90, Mapper90_Init},
{"Sunsoft UNROM", 93, SUNSOFT_UNROM_Init},
{"", 94, Mapper94_Init},
{"", 95, Mapper95_Init},
{"", 101, Mapper101_Init},
{"", 103, Mapper103_Init},
{"", 105, Mapper105_Init},
{"", 106, Mapper106_Init},
{"", 107, Mapper107_Init},
{"", 108, Mapper108_Init},
{"", 112, Mapper112_Init},
{"", 113, Mapper113_Init},
{"", 114, Mapper114_Init},
{"", 115, Mapper115_Init},
{"", 116, Mapper116_Init},
// {116, UNLSL1632_Init},
{"", 117, Mapper117_Init},
{"TSKROM", 118, TKSROM_Init},
{"", 119, Mapper119_Init},
{"", 120, Mapper120_Init},
{"", 121, Mapper121_Init},
{"UNLH2288", 123, UNLH2288_Init},
{"UNL22211", 132, UNL22211_Init},
{"SA72008", 133, SA72008_Init},
{"", 134, Mapper134_Init},
{"TCU02", 136, TCU02_Init},
{"S8259D", 137, S8259D_Init},
{"S8259B", 138, S8259B_Init},
{"S8259C", 139, S8259C_Init},
{"", 140, Mapper140_Init},
{"S8259A", 141, S8259A_Init},
{"UNLKS7032", 142, UNLKS7032_Init},
{"TCA01", 143, TCA01_Init},
{"", 144, Mapper144_Init},
{"SA72007", 145, SA72007_Init},
{"SA0161M", 146, SA0161M_Init},
{"TCU01", 147, TCU01_Init},
{"SA0037", 148, SA0037_Init},
{"SA0036", 149, SA0036_Init},
{"S74LS374N", 150, S74LS374N_Init},
{"", 152, Mapper152_Init},
{"", 153, Mapper153_Init},
{"", 154, Mapper154_Init},
{"", 155, Mapper155_Init},
{"", 156, Mapper156_Init},
{"", 157, Mapper157_Init},
{"", 159, Mapper16_Init}, // Obsolete, remove me!
{"SA009", 160, SA009_Init},
{"", 162, UNLFS304_Init},
{"", 163, Mapper163_Init},
{"", 164, Mapper164_Init},
{"", 165, Mapper165_Init},
// {169, Mapper169_Init},
{"", 171, Mapper171_Init},
{"", 172, Mapper172_Init},
{"", 173, Mapper173_Init},
{"", 175, Mapper175_Init},
{"BMCFK23C", 176, BMCFK23C_Init}, //zero 26-may-2012 - well, i have some WXN junk games that use 176 for instance 水浒神兽. i dont know what game uses this BMCFK23C as mapper 176. we'll have to make a note when we find it.
//{"BMCFK23C", 176, Mapper176_Init},
{"", 177, Mapper177_Init},
{"", 178, Mapper178_Init},
{"", 180, Mapper180_Init},
{"", 181, Mapper181_Init},
// {"", 182, Mapper182_Init}, // identical to 114
{"", 183, Mapper183_Init},
{"", 184, Mapper184_Init},
{"", 185, Mapper185_Init},
{"", 186, Mapper186_Init},
{"", 187, Mapper187_Init},
{"", 188, Mapper188_Init},
{"", 189, Mapper189_Init},
{"", 191, Mapper191_Init},
{"", 192, Mapper192_Init},
{"", 194, Mapper194_Init},
{"", 195, Mapper195_Init},
{"", 196, Mapper196_Init},
{"", 197, Mapper197_Init},
{"", 198, Mapper198_Init},
{"", 199, Mapper199_Init},
{"", 200, Mapper200_Init},
{"", 205, Mapper205_Init},
{"DEIROM", 206, DEIROM_Init},
{"", 208, Mapper208_Init},
{"", 209, Mapper209_Init},
{"", 210, Mapper210_Init},
{"", 211, Mapper211_Init},
{"", 215, UNL8237_Init},
{"", 216, Mapper216_Init},
// {"", 217, Mapper217_Init},
{"UNLA9746", 219, UNLA9746_Init},
{"Debug Mapper", 220, UNLKS7057_Init},
{"UNLN625092", 221, UNLN625092_Init},
{"", 222, Mapper222_Init},
{"", 226, Mapper226_Init},
{"", 235, Mapper235_Init},
{"UNL6035052", 238, UNL6035052_Init},
{"", 240, Mapper240_Init},
{"S74LS374NA", 243, S74LS374NA_Init},
{"", 245, Mapper245_Init},
{"", 249, Mapper249_Init},
{"", 250, Mapper250_Init},
{"", 253, Mapper253_Init},
{"", 254, Mapper254_Init},
{"", 0, 0}
{"NROM", 0, NROM_Init},
{"MMC1", 1, Mapper1_Init},
{"UNROM", 2, UNROM_Init},
{"CNROM", 3, CNROM_Init},
{"MMC3", 4, Mapper4_Init},
{"MMC5", 5, Mapper5_Init},
// {"", 6, Mapper6_Init},
{"ANROM", 7, ANROM_Init},
{"", 8, Mapper8_Init}, // Nogaems, it's worthless
// {"", 9, Mapper9_Init},
// {"", 10, Mapper10_Init},
{"Color Dreams", 11, Mapper11_Init},
{"", 12, Mapper12_Init},
{"CPROM", 13, CPROM_Init},
// {"", 14, Mapper14_Init},
{"100-in-1", 15, Mapper15_Init},
{"Bandai", 16, Mapper16_Init},
{"", 17, Mapper17_Init},
{"", 18, Mapper18_Init},
{"Namcot 106", 19, Mapper19_Init},
// {"", 20, Mapper20_Init},
// {"", 21, Mapper21_Init},
// {"", 22, Mapper22_Init},
{"Konami VRC2 type B", 23, Mapper23_Init},
// {"", 24, Mapper24_Init},
// {"", 25, Mapper25_Init},
// {"", 26, Mapper26_Init},
// {"", 27, Mapper27_Init},
// {"", 28, Mapper28_Init},
// {"", 29, Mapper29_Init},
// {"", 30, Mapper30_Init},
// {"", 31, Mapper31_Init},
// {"", 32, Mapper32_Init},
// {"", 33, Mapper33_Init},
{"", 34, Mapper34_Init},
{"Wario Land 2", 35, UNLSC127_Init}, // Wario Land 2
{"TXC Policeman", 36, Mapper36_Init}, // TXC Policeman
{"", 37, Mapper37_Init},
{"Bit Corp.", 38, Mapper38_Init}, // Bit Corp. Crime Busters
// {"", 39, Mapper39_Init},
// {"", 40, Mapper40_Init},
// {"", 41, Mapper41_Init},
// {"", 42, Mapper42_Init},
{"", 43, Mapper43_Init},
{"", 44, Mapper44_Init},
{"", 45, Mapper45_Init},
// {"", 46, Mapper46_Init},
{"", 47, Mapper47_Init},
// {"", 48, Mapper48_Init},
{"", 49, Mapper49_Init},
// {"", 50, Mapper50_Init},
// {"", 51, Mapper51_Init},
{"", 52, Mapper52_Init},
// {"", 53, Mapper53_Init},
// {"", 54, Mapper54_Init},
// {"", 55, Mapper55_Init},
// {"", 56, Mapper56_Init},
{"", 57, Mapper57_Init},
{"", 58, BMCGK192_Init},
// {"", 59, Mapper59_Init},
{"", 60, BMCD1038_Init},
// {"", 61, Mapper61_Init},
// {"", 62, Mapper62_Init},
// {"", 63, Mapper63_Init},
// {"", 64, Mapper64_Init},
// {"", 65, Mapper65_Init},
{"MHOM", 66, MHROM_Init},
// {"", 67, Mapper67_Init},
{"Sunsoft Mapper #4", 68, Mapper68_Init},
// {"", 69, Mapper69_Init},
{"", 70, Mapper70_Init},
// {"", 71, Mapper71_Init},
// {"", 72, Mapper72_Init},
// {"", 73, Mapper73_Init},
{"", 74, Mapper74_Init},
// {"", 75, Mapper75_Init},
// {"", 76, Mapper76_Init},
// {"", 77, Mapper77_Init},
{"Irem 74HC161/32", 78, Mapper78_Init},
// {"", 79, Mapper79_Init},
// {"", 80, Mapper80_Init},
// {"", 81, Mapper81_Init},
{"", 82, Mapper82_Init},
{"", 83, Mapper83_Init},
// {"", 84, Mapper84_Init},
// {"", 85, Mapper85_Init},
{"", 86, Mapper86_Init},
{"", 87, Mapper87_Init},
{"", 88, Mapper88_Init},
{"", 89, Mapper89_Init},
{"", 90, Mapper90_Init},
{"", 91, Mapper91_Init},
{"", 92, Mapper92_Init},
{"Sunsoft UNROM", 93, SUNSOFT_UNROM_Init},
{"", 94, Mapper94_Init},
{"", 95, Mapper95_Init},
{"", 96, Mapper96_Init},
{"", 97, Mapper97_Init},
// {"", 98, Mapper98_Init},
{"", 99, Mapper99_Init},
// {"", 100, Mapper100_Init},
{"", 101, Mapper101_Init},
// {"", 102, Mapper102_Init},
{"", 103, Mapper103_Init},
// {"", 104, Mapper104_Init},
{"", 105, Mapper105_Init},
{"", 106, Mapper106_Init},
{"", 107, Mapper107_Init},
{"", 108, Mapper108_Init},
// {"", 109, Mapper109_Init},
// {"", 110, Mapper110_Init},
// {"", 111, Mapper111_Init},
{"", 112, Mapper112_Init},
{"", 113, Mapper113_Init},
{"", 114, Mapper114_Init},
{"", 115, Mapper115_Init},
{"", 116, UNLSL12_Init},
{"", 117, Mapper117_Init},
{"TSKROM", 118, TKSROM_Init},
{"", 119, Mapper119_Init},
{"", 120, Mapper120_Init},
{"", 121, Mapper121_Init},
// {"", 122, Mapper122_Init},
{"UNLH2288", 123, UNLH2288_Init},
// {"", 124, Mapper124_Init},
{"", 125, LH32_Init},
// {"", 126, Mapper126_Init},
// {"", 127, Mapper127_Init},
// {"", 128, Mapper128_Init},
// {"", 129, Mapper129_Init},
// {"", 130, Mapper130_Init},
// {"", 131, Mapper131_Init},
{"UNL22211", 132, UNL22211_Init},
{"SA72008", 133, SA72008_Init},
{"", 134, Mapper134_Init},
// {"", 135, Mapper135_Init},
{"TCU02", 136, TCU02_Init},
{"S8259D", 137, S8259D_Init},
{"S8259B", 138, S8259B_Init},
{"S8259C", 139, S8259C_Init},
{"", 140, Mapper140_Init},
{"S8259A", 141, S8259A_Init},
{"UNLKS7032", 142, UNLKS7032_Init},
{"TCA01", 143, TCA01_Init},
{"", 144, Mapper144_Init},
{"SA72007", 145, SA72007_Init},
{"SA0161M", 146, SA0161M_Init},
{"TCU01", 147, TCU01_Init},
{"SA0037", 148, SA0037_Init},
{"SA0036", 149, SA0036_Init},
{"S74LS374N", 150, S74LS374N_Init},
{"", 151, Mapper151_Init},
{"", 152, Mapper152_Init},
{"", 153, Mapper153_Init},
{"", 154, Mapper154_Init},
{"", 155, Mapper155_Init},
{"", 156, Mapper156_Init},
{"", 157, Mapper157_Init},
// {"", 158, Mapper158_Init},
// {"", 159, Mapper159_Init},
{"SA009", 160, SA009_Init},
// {"", 161, Mapper161_Init},
{"", 162, UNLFS304_Init},
{"", 163, Mapper163_Init},
{"", 164, Mapper164_Init},
{"", 165, Mapper165_Init},
// {"", 166, Mapper166_Init},
// {"", 167, Mapper167_Init},
{"", 168, Mapper168_Init},
// {"", 169, Mapper169_Init},
{"", 170, Mapper170_Init},
{"", 171, Mapper171_Init},
{"", 172, Mapper172_Init},
{"", 173, Mapper173_Init},
// {"", 174, Mapper174_Init},
{"", 175, Mapper175_Init},
{"BMCFK23C", 176, BMCFK23C_Init}, //zero 26-may-2012 - well, i have some WXN junk games that use 176 for instance ????. i dont know what game uses this BMCFK23C as mapper 176. we'll have to make a note when we find it.
{"", 177, Mapper177_Init},
{"", 178, Mapper178_Init},
// {"", 179, Mapper179_Init},
{"", 180, Mapper180_Init},
{"", 181, Mapper181_Init},
// {"", 182, Mapper182_Init}, // Removed
{"", 183, Mapper183_Init},
{"", 184, Mapper184_Init},
{"", 185, Mapper185_Init},
{"", 186, Mapper186_Init},
{"", 187, Mapper187_Init},
{"", 188, Mapper188_Init},
{"", 189, Mapper189_Init},
// {"", 190, Mapper190_Init},
{"", 191, Mapper191_Init},
{"", 192, Mapper192_Init},
{"", 193, Mapper193_Init},
{"", 194, Mapper194_Init},
{"", 195, Mapper195_Init},
{"", 196, Mapper196_Init},
{"", 197, Mapper197_Init},
{"", 198, Mapper198_Init},
{"", 199, Mapper199_Init},
{"", 200, Mapper200_Init},
// {"", 201, Mapper201_Init},
// {"", 202, Mapper202_Init},
// {"", 203, Mapper203_Init},
// {"", 204, Mapper204_Init},
{"", 205, Mapper205_Init},
{"DEIROM", 206, DEIROM_Init},
// {"", 207, Mapper207_Init},
{"", 208, Mapper208_Init},
{"", 209, Mapper209_Init},
{"", 210, Mapper210_Init},
{"", 211, Mapper211_Init},
// {"", 212, Mapper212_Init},
// {"", 213, Mapper213_Init},
// {"", 214, Mapper214_Init},
{"", 215, UNL8237_Init},
{"", 216, Mapper216_Init},
// {"", 217, UNL8237A_Init},
// {"", 218, Mapper218_Init},
{"UNLA9746", 219, UNLA9746_Init},
{"Debug Mapper", 220, UNLKS7057_Init}, // DEBUG mapper
{"UNLN625092", 221, UNLN625092_Init},
{"", 222, Mapper222_Init},
// {"", 223, Mapper223_Init},
// {"", 224, Mapper224_Init},
{"", 225, Mapper225_Init},
{"", 226, Mapper226_Init},
// {"", 227, Mapper227_Init},
// {"", 228, Mapper228_Init},
// {"", 229, Mapper229_Init},
// {"", 230, Mapper230_Init},
// {"", 231, Mapper231_Init},
// {"", 232, Mapper232_Init},
{"", 233, BMC42in1r_Init},
// {"", 234, Mapper234_Init},
{"", 235, Mapper235_Init},
// {"", 236, Mapper236_Init},
// {"", 237, Mapper237_Init},
{"UNL6035052", 238, UNL6035052_Init},
// {"", 239, Mapper239_Init},
{"", 240, Mapper240_Init},
// {"", 241, Mapper241_Init},
// {"", 242, Mapper242_Init},
{"S74LS374NA", 243, S74LS374NA_Init},
// {"", 244, Mapper244_Init},
{"", 245, Mapper245_Init},
// {"", 246, Mapper246_Init},
// {"", 247, Mapper247_Init},
// {"", 248, Mapper248_Init},
{"", 249, Mapper249_Init},
{"", 250, Mapper250_Init},
// {"", 251, Mapper251_Init},
// {"", 252, Mapper252_Init},
{"", 253, Mapper253_Init},
{"", 254, Mapper254_Init},
// {"", 255, Mapper255_Init},
{"", 0, NULL}
};
@ -1058,6 +1168,7 @@ static void NONE_init(void)
else
setvram8(CHRRAM);
}
void (*MapInitTab[256])(void)=
{
0,
@ -1067,23 +1178,23 @@ void (*MapInitTab[256])(void)=
0,
0,
Mapper6_init,
0,//Mapper7_init,
Mapper8_init,
0, //Mapper7_init,
0, //Mapper8_init,
Mapper9_init,
Mapper10_init,
0, //Mapper11_init,
0,
0, //Mapper13_init,
0,
0, //Mapper15_init,
0, //Mapper16_init,
Mapper17_init,
Mapper18_init,
0, //Mapper15_init,
0, //Mapper16_init,
0, //Mapper17_init,
0, //Mapper18_init,
0,
0,
Mapper21_init,
Mapper22_init,
0, //Mapper23_init,
0, //Mapper23_init,
Mapper24_init,
Mapper25_init,
Mapper26_init,
@ -1094,7 +1205,7 @@ void (*MapInitTab[256])(void)=
0,
Mapper32_init,
Mapper33_init,
Mapper34_init,
0, //Mapper34_init,
0,
0,
0,
@ -1117,20 +1228,20 @@ void (*MapInitTab[256])(void)=
0,
0,
0,
0,// Mapper57_init,
0,// Mapper58_init,
0, //Mapper57_init,
0, //Mapper58_init,
Mapper59_init,
0,// Mapper60_init,
0, //Mapper60_init,
Mapper61_init,
Mapper62_init,
0,
Mapper64_init,
Mapper65_init,
0,//Mapper66_init,
0, //Mapper66_init,
Mapper67_init,
0,//Mapper68_init,
0, //Mapper68_init,
Mapper69_init,
0,//Mapper70_init,
0, //Mapper70_init,
Mapper71_init,
Mapper72_init,
Mapper73_init,
@ -1142,24 +1253,24 @@ void (*MapInitTab[256])(void)=
Mapper79_init,
Mapper80_init,
0,
Mapper82_init,
Mapper83_init,
0, //Mapper82_init,
0, //Mapper83_init,
0,
Mapper85_init,
Mapper86_init,
0, //Mapper86_init,
0, //Mapper87_init,
0, //Mapper88_init,
Mapper89_init,
0, //Mapper89_init,
0,
Mapper91_init,
Mapper92_init,
0, //Mapper91_init,
0, //Mapper92_init,
0, //Mapper93_init,
0, //Mapper94_init,
0,
Mapper96_init,
Mapper97_init,
0, //Mapper96_init,
0, //Mapper97_init,
0,
Mapper99_init,
0, //Mapper99_init,
0,
0,
0,
@ -1173,7 +1284,7 @@ void (*MapInitTab[256])(void)=
0,
0,
0,
0, // Mapper113_init,
0, //Mapper113_init,
0,
0,
0, //Mapper116_init,
@ -1211,12 +1322,12 @@ void (*MapInitTab[256])(void)=
0,
0,
0,
Mapper151_init,
0, //Mapper151_init,
0, //Mapper152_init,
0, //Mapper153_init,
0, //Mapper153_init,
0, //Mapper154_init,
0,
0,
0, //Mapper156_init,
0, //Mapper157_init,
0, //Mapper158_init, removed
0,
@ -1253,7 +1364,7 @@ void (*MapInitTab[256])(void)=
0,
0, //Mapper191_init,
0,
Mapper193_init,
0, //Mapper193_init,
0,
0,
0,
@ -1285,7 +1396,7 @@ void (*MapInitTab[256])(void)=
0,
0,
0,
Mapper225_init,
0, //Mapper225_init,
0, //Mapper226_init,
Mapper227_init,
Mapper228_init,

View File

@ -153,7 +153,7 @@ void Mapper1_init(void);
//void Mapper3_init(void);
void Mapper6_init(void);
//void Mapper7_init(void);
void Mapper8_init(void);
//void Mapper8_init(void);
void Mapper9_init(void);
void Mapper10_init(void);
//void Mapper11_init(void);
@ -162,8 +162,8 @@ void Mapper12_init(void);
void Mapper14_init(void);
//void Mapper15_init(void);
//void Mapper16_init(void);
void Mapper17_init(void);
void Mapper18_init(void);
//void Mapper17_init(void);
//void Mapper18_init(void);
void Mapper19_init(void);
void Mapper20_init(void);
void Mapper21_init(void);
@ -179,7 +179,7 @@ void Mapper30_init(void);
void Mapper31_init(void);
void Mapper32_init(void);
void Mapper33_init(void);
void Mapper34_init(void);
//void Mapper34_init(void);
void Mapper35_init(void);
void Mapper36_init(void);
//void Mapper37_init(void);
@ -224,22 +224,22 @@ void Mapper77_init(void);
void Mapper79_init(void);
void Mapper80_init(void);
void Mapper81_init(void);
void Mapper82_init(void);
//void Mapper82_init(void);
void Mapper83_init(void);
void Mapper84_init(void);
void Mapper85_init(void);
void Mapper86_init(void);
//void Mapper86_init(void);
//void Mapper87_init(void);
void Mapper88_init(void);
void Mapper89_init(void);
void Mapper91_init(void);
void Mapper92_init(void);
//void Mapper89_init(void);
//void Mapper91_init(void);
//void Mapper92_init(void);
//void Mapper93_init(void);
//void Mapper94_init(void);
void Mapper96_init(void);
void Mapper97_init(void);
//void Mapper96_init(void);
//void Mapper97_init(void);
void Mapper98_init(void);
void Mapper99_init(void);
//void Mapper99_init(void);
void Mapper100_init(void);
//void Mapper101_init(void);
//void Mapper103_init(void);
@ -249,10 +249,10 @@ void Mapper104_init(void);
//void Mapper108_init(void);
void Mapper109_init(void);
void Mapper110_init(void);
void Mapper111_init(void);
//void Mapper111_init(void);
//void Mapper113_init(void);
void Mapper115_init(void);
void Mapper116_init(void);
//void Mapper116_init(void);
//void Mapper117_init(void);
//void Mapper120_init(void);
//void Mapper121_init(void);
@ -277,13 +277,14 @@ void Mapper141_init(void);
void Mapper143_init(void);
//void Mapper144_init(void);
void Mapper150_init(void);
void Mapper151_init(void);
//void Mapper151_init(void);
//void Mapper152_init(void);
//void Mapper153_init(void);
void Mapper154_init(void);
//void Mapper156_init(void);
//void Mapper157_init(void);
//void Mapper158_init(void);
void Mapper159_init(void);
//void Mapper159_init(void);
void Mapper160_init(void);
void Mapper161_init(void);
void Mapper162_init(void);
@ -301,13 +302,13 @@ void Mapper176_init(void);
//void Mapper177_init(void);
//void Mapper178_init(void);
//void Mapper179_init(void);
//void Mapper180_init(void);
void Mapper180_init(void);
//void Mapper181_init(void);
//void Mapper184_init(void);
//void Mapper185_init(void);
//void Mapper189_init(void);
//void Mapper192_init(void);
void Mapper193_init(void);
//void Mapper193_init(void);
//void Mapper194_init(void);
//void Mapper195_init(void);
//void Mapper196_init(void);
@ -331,7 +332,7 @@ void Mapper221_init(void);
//void Mapper222_init(void);
void Mapper223_init(void);
void Mapper224_init(void);
void Mapper225_init(void);
//void Mapper225_init(void);
//void Mapper226_init(void);
void Mapper227_init(void);
void Mapper228_init(void);
@ -339,7 +340,7 @@ void Mapper229_init(void);
void Mapper230_init(void);
void Mapper231_init(void);
void Mapper232_init(void);
void Mapper233_init(void);
//void Mapper233_init(void);
void Mapper234_init(void);
//void Mapper235_init(void);
void Mapper236_init(void);
@ -369,12 +370,16 @@ void Mapper19_ESI(void);
void Mapper1_Init(CartInfo *);
void Mapper4_Init(CartInfo *);
void Mapper5_Init(CartInfo *);
void Mapper8_Init(CartInfo *);
void Mapper11_Init(CartInfo *);
void Mapper12_Init(CartInfo *);
void Mapper15_Init(CartInfo *);
void Mapper16_Init(CartInfo *);
void Mapper17_Init(CartInfo *);
void Mapper18_Init(CartInfo *);
void Mapper19_Init(CartInfo *);
void Mapper23_Init(CartInfo *);
void Mapper34_Init(CartInfo *);
void Mapper36_Init(CartInfo *);
void Mapper37_Init(CartInfo *);
void Mapper38_Init(CartInfo *);
@ -390,12 +395,21 @@ void Mapper68_Init(CartInfo *);
void Mapper70_Init(CartInfo *);
void Mapper74_Init(CartInfo *);
void Mapper78_Init(CartInfo *);
void Mapper82_Init(CartInfo *);
void Mapper83_Init(CartInfo *);
void Mapper86_Init(CartInfo *);
void Mapper87_Init(CartInfo *);
void Mapper88_Init(CartInfo *);
void Mapper89_Init(CartInfo *);
void Mapper90_Init(CartInfo *);
void Mapper91_Init(CartInfo *);
void Mapper92_Init(CartInfo *);
void Mapper93_Init(CartInfo *);
void Mapper94_Init(CartInfo *);
void Mapper95_Init(CartInfo *);
void Mapper96_Init(CartInfo *);
void Mapper97_Init(CartInfo *);
void Mapper99_Init(CartInfo *);
void Mapper101_Init(CartInfo *);
void Mapper103_Init(CartInfo *);
void Mapper105_Init(CartInfo *);
@ -406,9 +420,7 @@ void Mapper112_Init(CartInfo *);
void Mapper113_Init(CartInfo *);
void Mapper114_Init(CartInfo *);
void Mapper115_Init(CartInfo *);
void Mapper116_Init(CartInfo *);
void Mapper117_Init(CartInfo *);
void Mapper118_Init(CartInfo *);
void Mapper119_Init(CartInfo *);
void Mapper120_Init(CartInfo *);
void Mapper121_Init(CartInfo *);
@ -416,27 +428,26 @@ void Mapper125_Init(CartInfo *);
void Mapper134_Init(CartInfo *);
void Mapper140_Init(CartInfo *);
void Mapper144_Init(CartInfo *);
void Mapper151_Init(CartInfo *);
void Mapper152_Init(CartInfo *);
void Mapper153_Init(CartInfo *);
void Mapper154_Init(CartInfo *);
void Mapper155_Init(CartInfo *);
void Mapper156_Init(CartInfo *);
void Mapper157_Init(CartInfo *);
void Mapper159_Init(CartInfo *);
void Mapper163_Init(CartInfo *);
void Mapper164_Init(CartInfo *);
void Mapper165_Init(CartInfo *);
//void Mapper169_Init(CartInfo *);
void Mapper168_Init(CartInfo *);
void Mapper170_Init(CartInfo *);
void Mapper171_Init(CartInfo *);
void Mapper172_Init(CartInfo *);
void Mapper173_Init(CartInfo *);
void Mapper175_Init(CartInfo *);
void Mapper176_Init(CartInfo *);
void Mapper177_Init(CartInfo *);
void Mapper178_Init(CartInfo *);
void Mapper180_Init(CartInfo *);
void Mapper181_Init(CartInfo *);
//void Mapper182_Init(CartInfo *);
void Mapper183_Init(CartInfo *);
void Mapper184_Init(CartInfo *);
void Mapper185_Init(CartInfo *);
@ -446,6 +457,7 @@ void Mapper188_Init(CartInfo *);
void Mapper189_Init(CartInfo *);
void Mapper191_Init(CartInfo *);
void Mapper192_Init(CartInfo *);
void Mapper193_Init(CartInfo *);
void Mapper194_Init(CartInfo *);
void Mapper195_Init(CartInfo *);
void Mapper196_Init(CartInfo *);
@ -458,11 +470,10 @@ void Mapper208_Init(CartInfo *);
void Mapper209_Init(CartInfo *);
void Mapper210_Init(CartInfo *);
void Mapper211_Init(CartInfo *);
//void Mapper215_Init(CartInfo *);
void Mapper216_Init(CartInfo *);
//void Mapper217_Init(CartInfo *);
void Mapper220_Init(CartInfo *);
void Mapper222_Init(CartInfo *);
void Mapper225_Init(CartInfo *);
void Mapper226_Init(CartInfo *);
void Mapper235_Init(CartInfo *);
void Mapper236_Init(CartInfo *);

View File

@ -1,73 +0,0 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2002 Xodnizel
*
* 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 void FFEIRQHook(int a)
{
if(IRQa)
{
IRQCount+=a;
if(IRQCount>=0x10000)
{
X6502_IRQBegin(FCEU_IQEXT);
IRQa=0;
IRQCount=0;
}
}
}
DECLFW(Mapper17_write)
{
switch(A){
default:
break;
case 0x42FE:
onemir((V>>4)&1);
break;
case 0x42FF:
MIRROR_SET((V>>4)&1);
break;
case 0x4501:IRQa=0;X6502_IRQEnd(FCEU_IQEXT);break;
case 0x4502:IRQCount&=0xFF00;IRQCount|=V;break;
case 0x4503:IRQCount&=0x00FF;IRQCount|=V<<8;IRQa=1;break;
case 0x4504: ROM_BANK8(0x8000,V);break;
case 0x4505: ROM_BANK8(0xA000,V);break;
case 0x4506: ROM_BANK8(0xC000,V);break;
case 0x4507: ROM_BANK8(0xE000,V);break;
case 0x4510: VROM_BANK1(0x0000,V);break;
case 0x4511: VROM_BANK1(0x0400,V);break;
case 0x4512: VROM_BANK1(0x0800,V);break;
case 0x4513: VROM_BANK1(0x0C00,V);break;
case 0x4514: VROM_BANK1(0x1000,V);break;
case 0x4515: VROM_BANK1(0x1400,V);break;
case 0x4516: VROM_BANK1(0x1800,V);break;
case 0x4517: VROM_BANK1(0x1C00,V);break;
}
}
void Mapper17_init(void)
{
MapIRQHook=FFEIRQHook;
SetWriteHandler(0x4020,0x5fff,Mapper17_write);
}

View File

@ -1,80 +0,0 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2002 Xodnizel
*
* 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"
#define K4buf mapbyte2
#define K4buf2 mapbyte3
void JalecoIRQHook(int a)
{
if(IRQa && IRQCount)
{
IRQCount-=a;
if(IRQCount<=0)
{
X6502_IRQBegin(FCEU_IQEXT);
IRQCount=0;
IRQa=0;
}
}
}
DECLFW(Mapper18_write)
{
A&=0xF003;
if(A>=0x8000 && A<=0x9001)
{
int x=((A>>1)&1)|((A-0x8000)>>11);
K4buf2[x]&=(0xF0)>>((A&1)<<2);
K4buf2[x]|=(V&0xF)<<((A&1)<<2);
ROM_BANK8(0x8000+(x<<13),K4buf2[x]);
}
else if(A>=0xa000 && A<=0xd003)
{
int x=((A>>1)&1)|((A-0xA000)>>11);
K4buf[x]&=(0xF0)>>((A&1)<<2);
K4buf[x]|=(V&0xF)<<((A&1)<<2);
VROM_BANK1(x<<10,K4buf[x]);
}
else switch(A)
{
case 0xe000:IRQLatch&=0xFFF0;IRQLatch|=(V&0x0f);break;
case 0xe001:IRQLatch&=0xFF0F;IRQLatch|=(V&0x0f)<<4;break;
case 0xe002:IRQLatch&=0xF0FF;IRQLatch|=(V&0x0f)<<8;break;
case 0xe003:IRQLatch&=0x0FFF;IRQLatch|=(V&0x0f)<<12;break;
case 0xf000:IRQCount=IRQLatch;
break;
case 0xf001:IRQa=V&1;
X6502_IRQEnd(FCEU_IQEXT);
break;
case 0xf002:MIRROR_SET2(V&1);
if(V&2) onemir(0);
break;
}
}
void Mapper18_init(void)
{
SetWriteHandler(0x8000,0xffff,Mapper18_write);
MapIRQHook=JalecoIRQHook;
}

View File

@ -1,20 +0,0 @@
#include "mapinc.h"
static DECLFW(m193w)
{
//printf("$%04x:$%02x\n",A,V);
switch(A&3)
{
case 0:VROM_BANK4(0x0000,V>>2);break;
case 1:VROM_BANK2(0x1000,V>>1);break;
case 2:VROM_BANK2(0x1800,V>>1);break;
case 3:ROM_BANK8(0x8000,V);break;
}
}
void Mapper193_init(void)
{
ROM_BANK32(~0);
SetWriteHandler(0x4018,0x7fff,m193w);
SetReadHandler(0x4018,0x7fff,0);
}

View File

@ -1,3 +1,23 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2003 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
*/
#include "mapinc.h"
static DECLFW(Mapper212_write)

View File

@ -1,3 +1,23 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2003 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
*/
#include "mapinc.h"
static DECLFW(Mapper213_write)

View File

@ -1,3 +1,23 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2003 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
*/
#include "mapinc.h"
static DECLFW(Mapper214_write)

View File

@ -1,96 +0,0 @@
/*
#include "mapinc.h"
static uint8 cmdin;
static uint8 cmd;
static uint8 regs[8];
static uint8 master,chrm;
static void DoPRG215(void)
{
if(master&0x80)
{
setprg16(0x8000,master&0x1F);
setprg16(0xc000,master&0x1F);
}
else
{
setprg8(0x8000,regs[4]); 6
setprg8(0xA000,regs[6]); 7 0, 2, 5, 3, 6, 1, 7, 4
setprg8(0xC000,~1);
setprg8(0xE000,~0);
}
}
static void DoCHR215(void)
{
uint32 base=(cmd&0x80)<<5;
int orie=(chrm&0x4)<<6;
setchr2(0x0000^base,(orie|regs[0])>>1); 0
setchr2(0x0800^base,(orie|regs[5])>>1); 1
setchr1(0x1000,orie|regs[1]); 2
setchr1(0x1400,orie|regs[3]); 3
setchr1(0x1800,orie|regs[7]); 4
setchr1(0x1c00,orie|regs[2]); 5
}
static DECLFW(Write215_write)
{
switch(A&0xF001)
{
case 0xF001:IRQCount=V+2;break;
case 0xF000:X6502_IRQEnd(FCEU_IQEXT);break;
}
if(A==0x5000)
{
master=V;
DoPRG215();
// DoCHR215();
}
else if(A==0x5001)
{
chrm=V;
DoCHR215();
}
else
switch(A&0xE001)
{
case 0xC000:setmirror(((V|(V>>7))&1)^1);break;
case 0xa000:cmd=V;cmdin=1;DoCHR215();break;
case 0x8001:if(!cmdin) break;
regs[cmd&7]=V;
DoPRG215();
DoCHR215();
cmdin=0;
break;
}
}
static void hooko215(void)
{
if(IRQCount)
{
IRQCount--;
if(!IRQCount)
{
X6502_IRQBegin(FCEU_IQEXT);
}
}
}
void Mapper215_init(void)
{
int x;
for(x=0;x<8;x++) regs[x]=0;
master=chrm=cmd=cmdin=IRQCount=0;
GameHBIRQHook=hooko215;
SetReadHandler(0x8000,0xFFFF,CartBR);
SetWriteHandler(0x5000,0xFFFF,Write215_write);
DoPRG215();
DoCHR215();
}
*/

View File

@ -1,96 +0,0 @@
/*
#include "mapinc.h"
static uint8 cmdin;
static uint8 cmd;
static uint8 regs[8];
static uint8 master,chrm;
static void DoPRG217(void)
{
if(master&0x80)
{
setprg16(0x8000,master&0x1F);
setprg16(0xc000,master&0x1F);
}
else
{
setprg8(0x8000,regs[1]);
setprg8(0xA000,regs[3]);
setprg8(0xC000,~1);
setprg8(0xE000,~0);
}
}
static void DoCHR217(void)
{
uint32 base=(cmd&0x80)<<5;
int orie=(chrm&0x4)<<6;
setchr2(0x0000^base,(orie|regs[0])>>1);
setchr2(0x0800^base,(orie|regs[7])>>1);
setchr1(0x1000,orie|regs[5]);
setchr1(0x1400,orie|regs[2]);
setchr1(0x1800,orie|regs[6]);
setchr1(0x1c00,orie|regs[4]);
}
static DECLFW(Write217_write)
{
// if(A==0x5000)
// {
// master=V;
// DoPRG217();
// }
// else if(A==0x5001)
// {
// chrm=V;
// DoCHR217();
// }
// else if(A==0x5007)
// {
// }
switch(A&0xE001)
{
case 0x4000:master=V;DoPRG217();break;
case 0x8000:IRQCount=V;break;
case 0xc001:break;
case 0xe000:X6502_IRQEnd(FCEU_IQEXT);break;
case 0xe001:break;
case 0xa001:setmirror((V&1)^1);break;
case 0x8001:cmd=V;cmdin=1;DoPRG217();DoCHR217();break;
case 0xa000:if(!cmdin) break;
regs[cmd&7]=V;
DoPRG217();
DoCHR217();
cmdin=0;
break;
}
}
static void hooko217(void)
{
if(IRQCount)
{
IRQCount--;
if(!IRQCount)
{
X6502_IRQBegin(FCEU_IQEXT);
}
}
}
void Mapper217_init(void)
{
int x;
for(x=0;x<8;x++) regs[x]=0;
master=chrm=cmd=cmdin=IRQCount=0;
GameHBIRQHook=hooko217;
SetReadHandler(0x8000,0xFFFF,CartBR);
SetWriteHandler(0x5000,0xFFFF,Write217_write);
DoPRG217();
DoCHR217();
}
*/

View File

@ -1,87 +0,0 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2002 Xodnizel
*
* 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"
#define reg1 mapbyte1[0]
#define reg2 mapbyte1[1]
#define reg3 mapbyte1[2]
#define reg4 mapbyte1[3]
DECLFR(A110in1read)
{
switch(A&0x3)
{
case 0:return reg1;break;
case 1:return reg2;break;
case 2:return reg3;break;
case 3:return reg4;break;
}
return 0xF;
}
DECLFW(A110in1regwr)
{
switch(A&0x3)
{
case 0:reg1=V&0xF;break;
case 1:reg2=V&0xF;break;
case 2:reg3=V&0xF;break;
case 3:reg4=V&0xF;break;
}
}
DECLFW(Mapper225_write)
{
int banks=0;
MIRROR_SET((A>>13)&1);
if(A&0x4000)
banks=1;
else
banks=0;
VROM_BANK8(((A&0x003f)+(banks<<6)));
if(A&0x1000)
{
if(A&0x40)
{
ROM_BANK16(0x8000,((((((A>>7)&0x1F)+(banks<<5)))<<1)+1));
ROM_BANK16(0xC000,((((((A>>7)&0x1F)+(banks<<5)))<<1)+1));
}
else
{
ROM_BANK16(0x8000,(((((A>>7)&0x1F)+(banks<<5)))<<1));
ROM_BANK16(0xC000,(((((A>>7)&0x1F)+(banks<<5)))<<1));
}
}
else
{
ROM_BANK32(((((A>>7)&0x1F)+(banks<<5))));
}
}
void Mapper225_init(void)
{
SetWriteHandler(0x8000,0xffff,Mapper225_write);
SetReadHandler(0x5800,0x5fff,A110in1read);
SetWriteHandler(0x5800,0x5fff,A110in1regwr);
}

View File

@ -20,75 +20,72 @@
#include "mapinc.h"
//zero 14-apr-2012 - redid this entirely to match bizhawk
#define rg mapbyte1
static void DoSync(uint32 A)
{
int S = A & 1;
int M_horz = (A>>1)&1;
int p = (A >> 2) & 0x1F;
p += (A&0x100) ? 0x20 : 0;
bool o = (A>>7)&1;
bool L = (A>>9)&1;
if (o && !S )
{
ROM_BANK16(0x8000,p);
ROM_BANK16(0xC000,p);
}
if (o && S )
{
ROM_BANK16(0x8000,p);
ROM_BANK16(0xC000,p+1);
}
if (!o && !S && !L )
{
ROM_BANK16(0x8000,p);
ROM_BANK16(0xC000,p&0x38);
}
if (!o && S && !L )
{
ROM_BANK16(0x8000,p&0x3E);
ROM_BANK16(0xC000,p&0x38);
}
if (!o && !S && L)
{
ROM_BANK16(0x8000,p);
ROM_BANK16(0xC000,p|7);
}
if (!o && S && L )
{
ROM_BANK16(0x8000,p&0x3E);
ROM_BANK16(0xC000,p|7);
{
uint32 S = A & 1;
uint32 p = (A >> 2) & 0x1F;
p += (A&0x100) ? 0x20 : 0;
uint32 o = (A>>7)&1;
uint32 L = (A>>9)&1;
if (o && !S )
{
ROM_BANK16(0x8000,p);
ROM_BANK16(0xC000,p);
}
if (o && S )
{
ROM_BANK16(0x8000,p);
ROM_BANK16(0xC000,p+1);
}
if (!o && !S && !L )
{
ROM_BANK16(0x8000,p);
ROM_BANK16(0xC000,p&0x38);
}
if (!o && S && !L )
{
ROM_BANK16(0x8000,p&0x3E);
ROM_BANK16(0xC000,p&0x38);
}
if (!o && !S && L)
{
ROM_BANK16(0x8000,p);
ROM_BANK16(0xC000,p|7);
}
if (!o && S && L )
{
ROM_BANK16(0x8000,p&0x3E);
ROM_BANK16(0xC000,p|7);
}
rg[0]=A;
rg[1]=A>>8;
rg[0]=A;
rg[1]=A>>8;
MIRROR_SET((A>>1)&1);
MIRROR_SET((A>>1)&1);
}
static DECLFW(Mapper227_write)
{
DoSync(A);
DoSync(A);
}
static void M227Reset(void)
{
DoSync(0);
DoSync(0);
}
static void M227Restore(int version)
{
DoSync(rg[0]|(rg[1]<<8));
DoSync(rg[0]|(rg[1]<<8));
}
void Mapper227_init(void)
{
SetWriteHandler(0x8000,0xffff,Mapper227_write);
MapperReset=M227Reset;
GameStateRestore=M227Restore;
M227Reset();
SetWriteHandler(0x8000,0xffff,Mapper227_write);
MapperReset=M227Reset;
GameStateRestore=M227Restore;
M227Reset();
}

View File

@ -26,7 +26,7 @@ static uint8 mapper228_ram[4];
static SFORMAT StateRegs[]=
{
{ mapper228_ram, 4, "MAPPER_RAM" },
{ mapper228_ram, 4, "MRAM" },
{ 0 }
};

View File

@ -1,22 +1,22 @@
/* FCE Ultra - NES/Famicom Emulator
*
*
* Copyright notice for this file:
* Copyright (C) 2003 Xodnizel
*
*
* 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"

View File

@ -1,3 +1,23 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2003 Xodnizel
*
* 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 DECLFW(M241wr)

View File

@ -1,7 +1,7 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2003 CaH4e3
* Copyright (C) 2011 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
@ -20,19 +20,34 @@
#include "mapinc.h"
static DECLFW(Mapper244_write_1)
{
ROM_BANK32((A-0x8065)&0x03);
}
static uint8 prg_perm[4][4] = {
{0, 1, 2, 3,},
{3, 2, 1, 0,},
{0, 2, 1, 3,},
{3, 1, 2, 0,},
};
static DECLFW(Mapper244_write_2)
static uint8 chr_perm[8][8] = {
{0, 1, 2, 3, 4, 5, 6, 7,},
{0, 2, 1, 3, 4, 6, 5, 7,},
{0, 1, 4, 5, 2, 3, 6, 7,},
{0, 4, 1, 5, 2, 6, 3, 7,},
{0, 4, 2, 6, 1, 5, 3, 7,},
{0, 2, 4, 6, 1, 3, 5, 7,},
{7, 6, 5, 4, 3, 2, 1, 0,},
{7, 6, 5, 4, 3, 2, 1, 0,},
};
static DECLFW(Mapper244_write)
{
VROM_BANK8((A-0x80A5)&0x07);
if(V&8)
VROM_BANK8(chr_perm[(V>>4)&7][V&7]);
else
ROM_BANK32(prg_perm[(V>>4)&3][V&3]);
}
void Mapper244_init(void)
{
ROM_BANK32(0);
SetWriteHandler(0x8065,0x80a4,Mapper244_write_1);
SetWriteHandler(0x80a5,0x80e4,Mapper244_write_2);
SetWriteHandler(0x8000,0xffff,Mapper244_write);
}

View File

@ -37,7 +37,6 @@ static DECLFW(Mapper25_write)
VROM_BANK1(0x0000,0xFC);
VROM_BANK1(0x0400,0xFD);
VROM_BANK1(0x0800,0xFF);
VROM_BANK1(0x0c00,0xCF);
}
A=(A&0xF003)|((A&0xC)>>2);

View File

@ -37,7 +37,6 @@ static DECLFW(Mapper33_write)
case 0x8001:ROM_BANK8(0xA000,V); break;
case 0x8002:VROM_BANK2(0x0000,V);break;
case 0x8003:VROM_BANK2(0x0800,V);break;
case 0xe000:MIRROR_SET((V>>6)&1);break;
}
}

View File

@ -26,7 +26,7 @@
static uint32 Get8K(uint32 A)
{
uint32 bank;
bank=(page<<2)|((A>>13)&1);
if(A&0x4000 && !(mode&1)) bank|=0xC;

View File

@ -32,7 +32,7 @@ static DECLFW(Mapper77_write)
static void Mapper77_StateRestore(int version)
{
int x;
if(version>=7200)
{
ROM_BANK32(mapbyte1[0]&0x7);

View File

@ -1,34 +0,0 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2002 Xodnizel
*
* 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 DECLFW(Mapper8_write)
{
ROM_BANK16(0x8000,V>>3);
VROM_BANK8(V&7);
}
void Mapper8_init(void)
{
ROM_BANK32(0);
SetWriteHandler(0x8000,0xFFFF,Mapper8_write);
}

View File

@ -28,7 +28,7 @@ static void Fudou_PPU(uint32 A)
{
static int last=-1;
static uint8 z;
if(A>=0x2000) return;
A>>=10;

View File

@ -1,147 +0,0 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2002 Xodnizel
*
* 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 uint8 is2kbank, isnot2kbank, dipreg;
/*void Mapper83_init(void)
{
}
*/
static void m83IRQHook(int a)
{
if(IRQa)
{
IRQCount-=a;
if(IRQCount<0)
{
X6502_IRQBegin(FCEU_IQEXT);
IRQa=0;
IRQCount=0xFFFF;
}
}
}
static DECLFW(wrlow)
{
mapbyte4[A&3]=V;
}
static DECLFR(rdlow)
{
return mapbyte4[A&3];
}
static DECLFR(rd5000)
{
return dipreg;
}
static void m83prg(void)
{
ROM_BANK16(0x8000,(mapbyte1[0]&0x3F));
ROM_BANK16(0xC000,(mapbyte1[0]&0x30)|0xF);
}
static void m83chr(void)
{
if(is2kbank&&!isnot2kbank)
{
VROM_BANK2(0x0000,mapbyte2[0]);
VROM_BANK2(0x0800,mapbyte2[1]);
VROM_BANK2(0x1000,mapbyte2[6]);
VROM_BANK2(0x1800,mapbyte2[7]);
}
else
{
int x;
for(x=0;x<8;x++)
VROM_BANK1(x*0x400,mapbyte2[x]|((mapbyte1[0]&0x30)<<4));
}
}
static DECLFW(Mapper83_write)
{
//printf("$%04x:$%02x\n",A,V);
switch(A)
{
case 0x8000: is2kbank = 1;
case 0xB000:
case 0xB0FF:
case 0xB1FF:
{
mapbyte1[0]=V;
m83prg();
m83chr();
}
break;
case 0x8100:
mapbyte3[0]=V&0x80;
switch(V&0x3)
{
case 0x00:MIRROR_SET2(1);break;
case 0x01:MIRROR_SET2(0);break;
case 0x02:onemir(0);break;
case 0x03:onemir(1);break;
}
break;
case 0x8200:IRQCount&=0xFF00;IRQCount|=V;X6502_IRQEnd(FCEU_IQEXT);break;
case 0x8201:IRQa=mapbyte3[0];IRQCount&=0xFF;IRQCount|=V<<8;break;
case 0x8300:ROM_BANK8(0x8000,V);break;
case 0x8301:ROM_BANK8(0xA000,V);break;
case 0x8302:ROM_BANK8(0xC000,V);break;
case 0x8310:mapbyte2[0]=V;m83chr();break;
case 0x8311:mapbyte2[1]=V;m83chr();break;
case 0x8312:mapbyte2[2]=V;isnot2kbank = 1;m83chr();break; // 2 mappers in one :)
case 0x8313:mapbyte2[3]=V;isnot2kbank = 1;m83chr();break;
case 0x8314:mapbyte2[4]=V;isnot2kbank = 1;m83chr();break;
case 0x8315:mapbyte2[5]=V;isnot2kbank = 1;m83chr();break;
case 0x8316:mapbyte2[6]=V;m83chr();break;
case 0x8317:mapbyte2[7]=V;m83chr();break;
case 0x8318:mapbyte1[1]=V;m83prg();break;
}
// printf("$%04x:$%02x, $%04x\n",A,V,X.PC.W);
}
static void m83Reset(void)
{
dipreg^=1;
}
void Mapper83_init(void)
{
is2kbank = 0;
isnot2kbank = 0;
dipreg = 0;
ROM_BANK8(0xc000,0x1e);
ROM_BANK8(0xe000,0x1f);
MapIRQHook=m83IRQHook;
MapperReset=m83Reset;
SetReadHandler(0x5000,0x5000,rd5000); // title scren dip switch
SetReadHandler(0x5100,0x5103,rdlow);
SetWriteHandler(0x5100,0x5103,wrlow);
SetWriteHandler(0x8000,0xffff,Mapper83_write);
mapbyte1[1]=0xF;
}

View File

@ -1,38 +0,0 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2002 Xodnizel
*
* 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"
DECLFW(Mapper86_write)
{
if(A>=0x6000 && A<=0x6fFF)
{
VROM_BANK8((V&3)|((V>>4)&4));
ROM_BANK32((V>>4)&3);
}
//else
//if(A!=0x6000)
// printf("$%04x:$%02x\n",A,V);
}
void Mapper86_init(void)
{
SetWriteHandler(0x6000,0x6fff,Mapper86_write);
SetWriteHandler(0x4020,0xffff,Mapper86_write);
}

View File

@ -1,34 +0,0 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2002 Xodnizel
*
* 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"
DECLFW(Mapper89_write)
{
VROM_BANK8((V&7)|((V>>4)&8));
ROM_BANK16(0x8000,(V>>4)&7);
onemir((V>>3)&1);
}
void Mapper89_init(void)
{
Mirroring=0;
SetWriteHandler(0x8000,0xffff,Mapper89_write);
}

View File

@ -1,45 +0,0 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2002 Xodnizel
*
* 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"
/* Original code provided by LULU */
static DECLFW(Mapper92_write)
{
uint8 reg=(A&0xF0)>>4;
uint8 bank=A&0xF;
if(A>=0x9000)
{
if(reg==0xD) ROM_BANK16(0xc000,bank);
else if(reg==0xE) VROM_BANK8(bank);
}
else
{
if(reg==0xB) ROM_BANK16(0xc000,bank);
else if(reg==0x7) VROM_BANK8(bank);
}
}
void Mapper92_init(void)
{
SetWriteHandler(0x8000,0xFFFF,Mapper92_write);
}

View File

@ -1,37 +0,0 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 2002 Xodnizel
*
* 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 writefunc oldmorko;
static DECLFW(morko)
{
VROM_BANK8((V>>2)&1);
oldmorko(A,V);
setprg8(0x8000,V&0x4); /* Special for VS Gumshoe */
}
void Mapper99_init(void)
{
ROM_BANK32(0);
oldmorko=GetWriteHandler(0x4016);
SetWriteHandler(0x4016,0x4016,morko);
}

View File

@ -1,88 +0,0 @@
/* FCE Ultra - NES/Famicom Emulator
*
* Copyright notice for this file:
* Copyright (C) 1998 BERO
* Copyright (C) 2002 Xodnizel
*
* 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 uint8 latche;
static DECLFW(Mapper34_write)
{
switch(A)
{
case 0x7FFD:ROM_BANK32(V);break;
case 0x7FFE:VROM_BANK4(0x0000,V);break;
case 0x7fff:VROM_BANK4(0x1000,V);break;
}
if(A>=0x8000)
ROM_BANK32(V);
}
void Mapper34_init(void)
{
ROM_BANK32(0);
SetWriteHandler(0x7ffd,0xffff,Mapper34_write);
}
/* I might want to add some code to the mapper 96 PPU hook function
to not change CHR banks if the attribute table is being accessed,
if I make emulation a little more accurate in the future.
*/
static uint8 M96LA;
static DECLFW(Mapper96_write)
{
latche=V;
setprg32(0x8000,V&3);
setchr4r(0x10,0x0000,(latche&4)|M96LA);
setchr4r(0x10,0x1000,(latche&4)|3);
}
static void M96Hook(uint32 A)
{
if((A&0x3000)!=0x2000) return;
//if((A&0x3ff)>=0x3c0) return;
M96LA=(A>>8)&3;
setchr4r(0x10,0x0000,(latche&4)|M96LA);
}
static void M96Sync(int v)
{
setprg32(0x8000,latche&3);
setchr4r(0x10,0x0000,(latche&4)|M96LA);
setchr4r(0x10,0x1000,(latche&4)|3);
}
void Mapper96_init(void)
{
SetWriteHandler(0x8000,0xffff,Mapper96_write);
PPU_hook=M96Hook;
AddExState(&latche, 1, 0, "LATC");
AddExState(&M96LA, 1, 0, "LAVA");
SetupCartCHRMapping(0x10, MapperExRAM, 32768, 1);
latche=M96LA=0;
M96Sync(0);
setmirror(MI_0);
GameStateRestore=M96Sync;
}
// DIS23C01 Open Soft, Korea
// Metal Force (K)
// Buzz and Waldog (K)

View File

@ -317,36 +317,42 @@ 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},
{ "C-N22M", UNLCN22M_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,0},
{ "FK23C", BMCFK23C_Init,BMCFLAG_EXPCHRR},
{ "FK23CA", BMCFK23CA_Init,BMCFLAG_EXPCHRR},
{ "FS304", UNLFS304_Init,0},
@ -358,8 +364,18 @@ static BMAPPING bmap[] = {
{ "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},
@ -367,8 +383,10 @@ static BMAPPING bmap[] = {
{ "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},
@ -378,6 +396,7 @@ static BMAPPING bmap[] = {
{ "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},
@ -387,12 +406,14 @@ static BMAPPING bmap[] = {
{ "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
@ -421,8 +442,11 @@ static BMAPPING bmap[] = {
{ "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

@ -18,13 +18,17 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
void AC08_Init(CartInfo *info);
void ANROM_Init(CartInfo *info);
void BMC12IN1_Init(CartInfo *info);
void BMC13in1JY110_Init(CartInfo *info);
void BMC190in1_Init(CartInfo *info);
void BMC411120C_Init(CartInfo *info);
void BMC42in1r_Init(CartInfo *info);
void BMC64in1nr_Init(CartInfo *info);
void BMC70in1B_Init(CartInfo *info);
void BMC70in1_Init(CartInfo *info);
void BMC810544CA1_Init(CartInfo *info);
void BMC830118C_Init(CartInfo *info);
void BMCA65AS_Init(CartInfo *info);
void BMCBS5_Init(CartInfo *info);
@ -35,6 +39,7 @@ void BMCGK192_Init(CartInfo *info);
void BMCGS2004_Init(CartInfo *info);
void BMCGS2013_Init(CartInfo *info);
void BMCGhostbusters63in1_Init(CartInfo *info);
void BMCNTD03_Init(CartInfo *info);
void BMCT2271_Init(CartInfo *info);
void BMCT262_Init(CartInfo *info);
void CNROM_Init(CartInfo *info);
@ -47,6 +52,10 @@ void ETROM_Init(CartInfo *info);
void EWROM_Init(CartInfo *info);
void GNROM_Init(CartInfo *info);
void HKROM_Init(CartInfo *info);
void LE05_Init(CartInfo *info);
void LH10_Init(CartInfo *info);
void LH32_Init(CartInfo *info);
void LH53_Init(CartInfo *info);
void MALEE_Init(CartInfo *info);
void MHROM_Init(CartInfo *info);
void Mapper190_Init(CartInfo *info);
@ -64,6 +73,7 @@ void SA009_Init(CartInfo *info);
void SA0161M_Init(CartInfo *info);
void SA72007_Init(CartInfo *info);
void SA72008_Init(CartInfo *info);
void SA9602B_Init(CartInfo *info);
void SAROM_Init(CartInfo *info);
void SBROM_Init(CartInfo *info);
void SCROM_Init(CartInfo *info);
@ -74,6 +84,7 @@ void SL1ROM_Init(CartInfo *info);
void SLROM_Init(CartInfo *info);
void SNROM_Init(CartInfo *info);
void SOROM_Init(CartInfo *info);
void SSSNROM_Init(CartInfo *info);
void SUNSOFT_UNROM_Init(CartInfo *info); // "Shanghi" original version mapper
void Super24_Init(CartInfo *info);
void Supervision16_Init(CartInfo *info);
@ -91,31 +102,44 @@ void TLSROM_Init(CartInfo *info);
void TQROM_Init(CartInfo *info);
void TQROM_Init(CartInfo *info);
void TSROM_Init(CartInfo *info);
void Transformer_Init(CartInfo *info);
void UNL22211_Init(CartInfo *info);
void UNL3DBlock_Init(CartInfo *info);
void UNL43272_Init(CartInfo *info);
void UNL6035052_Init(CartInfo *info);
void UNL8157_Init(CartInfo *info);
void UNL8237A_Init(CartInfo *info);
void UNL8237_Init(CartInfo *info);
void UNLA9746_Init(CartInfo *info);
void UNLAX5705_Init(CartInfo *info);
void UNLBB_Init(CartInfo *info);
void UNLCC21_Init(CartInfo *info);
void UNLCITYFIGHT_Init(CartInfo *info);
void UNLCN22M_Init(CartInfo *info);
void UNLD2000_Init(CartInfo *info);
void UNLEDU2000_Init(CartInfo *info);
void UNLFS304_Init(CartInfo *info);
void UNLH2288_Init(CartInfo *info);
void UNLKOF97_Init(CartInfo *info);
void UNLKS7012_Init(CartInfo *info);
void UNLKS7013B_Init(CartInfo *info);
void UNLKS7017_Init(CartInfo *info);
void UNLKS7030_Init(CartInfo *info);
void UNLKS7031_Init(CartInfo *info);
void UNLKS7032_Init(CartInfo *info);
void UNLKS7037_Init(CartInfo *info);
void UNLKS7057_Init(CartInfo *info);
void UNLN625092_Init(CartInfo *info);
void UNLOneBus_Init(CartInfo *info);
void UNLPEC586Init(CartInfo *info);
void UNLSC127_Init(CartInfo *info);
void UNLSHeroes_Init(CartInfo *info);
void UNLSL12_Init(CartInfo *info);
void UNLSL1632_Init(CartInfo *info);
void UNLSMB2J_Init(CartInfo *info);
void UNLT230_Init(CartInfo *info);
void UNLTF1201_Init(CartInfo *info);
void UNLVRC7_Init(CartInfo *info);
void UNLYOKO_Init(CartInfo *info);
void UNROM_Init(CartInfo *info);
extern uint8 *UNIFchrrama; // Meh. So I can stop CHR RAM

View File

@ -236,23 +236,33 @@
<ClCompile Include="..\src\boards\117.cpp" />
<ClCompile Include="..\src\boards\120.cpp" />
<ClCompile Include="..\src\boards\121.cpp" />
<ClCompile Include="..\src\boards\12in1.cpp" />
<ClCompile Include="..\src\boards\15.cpp" />
<ClCompile Include="..\src\boards\151.cpp" />
<ClCompile Include="..\src\boards\156.cpp" />
<ClCompile Include="..\src\boards\164.cpp" />
<ClCompile Include="..\src\boards\168.cpp" />
<ClCompile Include="..\src\boards\17.cpp" />
<ClCompile Include="..\src\boards\170.cpp" />
<ClCompile Include="..\src\boards\175.cpp" />
<ClCompile Include="..\src\boards\176.cpp" />
<ClCompile Include="..\src\boards\177.cpp" />
<ClCompile Include="..\src\boards\178.cpp" />
<ClCompile Include="..\src\boards\18.cpp" />
<ClCompile Include="..\src\boards\183.cpp" />
<ClCompile Include="..\src\boards\185.cpp" />
<ClCompile Include="..\src\boards\186.cpp" />
<ClCompile Include="..\src\boards\187.cpp" />
<ClCompile Include="..\src\boards\189.cpp" />
<ClCompile Include="..\src\boards\193.cpp" />
<ClCompile Include="..\src\boards\199.cpp" />
<ClCompile Include="..\src\boards\208.cpp" />
<ClCompile Include="..\src\boards\222.cpp" />
<ClCompile Include="..\src\boards\225.cpp" />
<ClCompile Include="..\src\boards\23.cpp" />
<ClCompile Include="..\src\boards\235.cpp" />
<ClCompile Include="..\src\boards\253.cpp" />
<ClCompile Include="..\src\boards\34.cpp" />
<ClCompile Include="..\src\boards\3d-block.cpp" />
<ClCompile Include="..\src\boards\411120-c.cpp" />
<ClCompile Include="..\src\boards\43.cpp" />
@ -260,14 +270,36 @@
<ClCompile Include="..\src\boards\603-5052.cpp" />
<ClCompile Include="..\src\boards\68.cpp" />
<ClCompile Include="..\src\boards\8157.cpp" />
<ClCompile Include="..\src\boards\82.cpp" />
<ClCompile Include="..\src\boards\8237.cpp" />
<ClCompile Include="..\src\boards\830118C.cpp" />
<ClCompile Include="..\src\boards\88.cpp" />
<ClCompile Include="..\src\boards\90.cpp" />
<ClCompile Include="..\src\boards\91.cpp" />
<ClCompile Include="..\src\boards\95.cpp" />
<ClCompile Include="..\src\boards\96.cpp" />
<ClCompile Include="..\src\boards\99.cpp" />
<ClCompile Include="..\src\boards\ac-08.cpp" />
<ClCompile Include="..\src\boards\bb.cpp" />
<ClCompile Include="..\src\boards\cityfighter.cpp" />
<ClCompile Include="..\src\boards\dance2000.cpp" />
<ClCompile Include="..\src\boards\famicombox.cpp" />
<ClCompile Include="..\src\boards\ks7012.cpp" />
<ClCompile Include="..\src\boards\ks7013.cpp" />
<ClCompile Include="..\src\boards\ks7017.cpp" />
<ClCompile Include="..\src\boards\ks7030.cpp" />
<ClCompile Include="..\src\boards\ks7031.cpp" />
<ClCompile Include="..\src\boards\ks7037.cpp" />
<ClCompile Include="..\src\boards\ks7057.cpp" />
<ClCompile Include="..\src\boards\le05.cpp" />
<ClCompile Include="..\src\boards\lh32.cpp" />
<ClCompile Include="..\src\boards\lh53.cpp" />
<ClCompile Include="..\src\boards\onebus.cpp" />
<ClCompile Include="..\src\boards\pec-586.cpp" />
<ClCompile Include="..\src\boards\sa-9602b.cpp" />
<ClCompile Include="..\src\boards\transformer.cpp" />
<ClCompile Include="..\src\boards\vrc7.cpp" />
<ClCompile Include="..\src\boards\yoko.cpp" />
<ClCompile Include="..\src\boards\__dummy_mapper.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</ClCompile>
@ -537,11 +569,6 @@
<ClCompile Include="..\src\input\suborkb.cpp" />
<ClCompile Include="..\src\input\toprider.cpp" />
<ClCompile Include="..\src\input\zapper.cpp" />
<ClCompile Include="..\src\mappers\151.cpp" />
<ClCompile Include="..\src\mappers\156.cpp" />
<ClCompile Include="..\src\mappers\17.cpp" />
<ClCompile Include="..\src\mappers\18.cpp" />
<ClCompile Include="..\src\mappers\193.cpp" />
<ClCompile Include="..\src\mappers\201.cpp" />
<ClCompile Include="..\src\mappers\202.cpp" />
<ClCompile Include="..\src\mappers\203.cpp" />
@ -550,10 +577,7 @@
<ClCompile Include="..\src\mappers\212.cpp" />
<ClCompile Include="..\src\mappers\213.cpp" />
<ClCompile Include="..\src\mappers\214.cpp" />
<ClCompile Include="..\src\mappers\215.cpp" />
<ClCompile Include="..\src\mappers\217.cpp" />
<ClCompile Include="..\src\mappers\22.cpp" />
<ClCompile Include="..\src\mappers\225.cpp" />
<ClCompile Include="..\src\mappers\227.cpp" />
<ClCompile Include="..\src\mappers\228.cpp" />
<ClCompile Include="..\src\mappers\229.cpp" />
@ -579,7 +603,6 @@
<ClCompile Include="..\src\mappers\51.cpp" />
<ClCompile Include="..\src\mappers\59.cpp" />
<ClCompile Include="..\src\mappers\6.cpp" />
<ClCompile Include="..\src\mappers\60.cpp" />
<ClCompile Include="..\src\mappers\61.cpp" />
<ClCompile Include="..\src\mappers\62.cpp" />
<ClCompile Include="..\src\mappers\65.cpp" />
@ -592,17 +615,8 @@
<ClCompile Include="..\src\mappers\76.cpp" />
<ClCompile Include="..\src\mappers\77.cpp" />
<ClCompile Include="..\src\mappers\79.cpp" />
<ClCompile Include="..\src\mappers\8.cpp" />
<ClCompile Include="..\src\mappers\80.cpp" />
<ClCompile Include="..\src\mappers\82.cpp" />
<ClCompile Include="..\src\mappers\83.cpp" />
<ClCompile Include="..\src\mappers\85.cpp" />
<ClCompile Include="..\src\mappers\86.cpp" />
<ClCompile Include="..\src\mappers\89.cpp" />
<ClCompile Include="..\src\mappers\91.cpp" />
<ClCompile Include="..\src\mappers\92.cpp" />
<ClCompile Include="..\src\mappers\97.cpp" />
<ClCompile Include="..\src\mappers\99.cpp" />
<ClCompile Include="..\src\mappers\emu2413.c">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename)1.obj</ObjectFileName>
<XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
@ -616,7 +630,6 @@
<XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
</ClCompile>
<ClCompile Include="..\src\mappers\mmc2and4.cpp" />
<ClCompile Include="..\src\mappers\simple.cpp" />
<ClCompile Include="..\src\utils\ConvertUTF.c" />
<ClCompile Include="..\src\utils\crc32.cpp">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename)1.obj</ObjectFileName>

View File

@ -647,18 +647,6 @@
<ClCompile Include="..\src\lua\src\print.c">
<Filter>drivers\win\lua</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\151.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\17.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\18.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\193.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\201.cpp">
<Filter>mappers</Filter>
</ClCompile>
@ -683,18 +671,9 @@
<ClCompile Include="..\src\mappers\214.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\215.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\217.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\22.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\225.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\227.cpp">
<Filter>mappers</Filter>
</ClCompile>
@ -770,9 +749,6 @@
<ClCompile Include="..\src\mappers\6.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\60.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\61.cpp">
<Filter>mappers</Filter>
</ClCompile>
@ -809,48 +785,18 @@
<ClCompile Include="..\src\mappers\79.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\8.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\80.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\82.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\83.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\85.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\86.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\89.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\91.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\92.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\97.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\99.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\emu2413.c">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\mmc2and4.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\simple.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\movie.cpp" />
<ClCompile Include="..\src\netplay.cpp" />
<ClCompile Include="..\src\nsf.cpp" />
@ -967,15 +913,108 @@
<ClCompile Include="..\src\drivers\win\taseditor\laglog.cpp">
<Filter>drivers\win\taseditor</Filter>
</ClCompile>
<ClCompile Include="..\src\mappers\156.cpp">
<Filter>mappers</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\cityfighter.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\ks7057.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\12in1.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\17.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\18.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\34.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\82.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\91.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\96.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\99.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\151.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\156.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\168.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\170.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\193.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\ac-08.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\bb.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\dance2000.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\famicombox.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\ks7012.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\ks7013.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\ks7017.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\ks7030.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\ks7031.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\ks7037.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\le05.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\lh32.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\lh53.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\pec-586.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\sa-9602b.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\transformer.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\vrc7.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\yoko.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\225.cpp">
<Filter>boards</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\src\cart.h">