a little bit of latest mapper changes
code/data logger now can log data access from the RAM code the new button to save unused data to the code/data logger
This commit is contained in:
parent
bf32a2bcce
commit
e9e97b774e
|
@ -1,7 +1,7 @@
|
|||
/* FCE Ultra - NES/Famicom Emulator
|
||||
*
|
||||
* Copyright notice for this file:
|
||||
* Copyright (C) 2005 CaH4e3
|
||||
* Copyright (C) 2005-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
|
||||
|
@ -16,52 +16,143 @@
|
|||
* 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
|
||||
*
|
||||
* Super Game (Sugar Softec) protected mapper
|
||||
* Pocahontas 2 (Unl) [U][!], etc.
|
||||
* TODO: 9in1 LION KING HANGS!
|
||||
*/
|
||||
|
||||
#include "mapinc.h"
|
||||
#include "mmc3.h"
|
||||
|
||||
static uint8 cmdin;
|
||||
static uint8 UNL8237_perm[8] = {0, 2, 6, 1, 7, 3, 4, 5};
|
||||
|
||||
static uint8 regperm[8][8] =
|
||||
{
|
||||
{0, 1, 2, 3, 4, 5, 6, 7},
|
||||
{0, 2, 6, 1, 7, 3, 4, 5},
|
||||
{0, 5, 4, 1, 7, 2, 6, 3}, // unused
|
||||
{0, 6, 3, 7, 5, 2, 4, 1},
|
||||
{0, 2, 5, 3, 6, 1, 7, 4},
|
||||
{0, 1, 2, 3, 4, 5, 6, 7}, // empty
|
||||
{0, 1, 2, 3, 4, 5, 6, 7}, // empty
|
||||
{0, 1, 2, 3, 4, 5, 6, 7}, // empty
|
||||
};
|
||||
|
||||
static uint8 adrperm[8][8] =
|
||||
{
|
||||
{0, 1, 2, 3, 4, 5, 6, 7},
|
||||
{3, 2, 0, 4, 1, 5, 6, 7},
|
||||
{0, 1, 2, 3, 4, 5, 6, 7}, // unused
|
||||
{5, 0, 1, 2, 3, 7, 6, 4},
|
||||
{3, 1, 0, 5, 2, 4, 6, 7},
|
||||
{0, 1, 2, 3, 4, 5, 6, 7}, // empty
|
||||
{0, 1, 2, 3, 4, 5, 6, 7}, // empty
|
||||
{0, 1, 2, 3, 4, 5, 6, 7}, // empty
|
||||
};
|
||||
|
||||
static void UNL8237CW(uint32 A, uint8 V)
|
||||
{
|
||||
setchr1(A,((EXPREGS[1]&4)<<6)|V);
|
||||
if(EXPREGS[0]&0x40)
|
||||
setchr1(A,((EXPREGS[1]&0xc)<<6)|(V&0x7F)|((EXPREGS[1]&0x20)<<2));
|
||||
else
|
||||
setchr1(A,((EXPREGS[1]&0xc)<<6)|V);
|
||||
}
|
||||
|
||||
static void UNL8237PW(uint32 A, uint8 V)
|
||||
{
|
||||
if(EXPREGS[0]&0x80)
|
||||
if(EXPREGS[0]&0x40)
|
||||
{
|
||||
if(EXPREGS[0]&0x20)
|
||||
setprg32(0x8000,(EXPREGS[0]&0xF)>>1);
|
||||
else
|
||||
uint8 sbank = (EXPREGS[1]&0x10);
|
||||
if(EXPREGS[0]&0x80)
|
||||
{
|
||||
setprg16(0x8000,(EXPREGS[0]&0x1F));
|
||||
setprg16(0xC000,(EXPREGS[0]&0x1F));
|
||||
uint8 bank = ((EXPREGS[1]&3)<<4)|(EXPREGS[0]&0x7)|(sbank>>1);
|
||||
if(EXPREGS[0]&0x20)
|
||||
setprg32(0x8000,bank>>1);
|
||||
else
|
||||
{
|
||||
setprg16(0x8000,bank);
|
||||
setprg16(0xC000,bank);
|
||||
}
|
||||
}
|
||||
else
|
||||
setprg8(A,((EXPREGS[1]&3)<<5)|(V&0x0F)|sbank);
|
||||
}
|
||||
else
|
||||
setprg8(A,V&0x3F);
|
||||
{
|
||||
if(EXPREGS[0]&0x80)
|
||||
{
|
||||
uint8 bank = ((EXPREGS[1]&3)<<4)|(EXPREGS[0]&0xF);
|
||||
if(EXPREGS[0]&0x20)
|
||||
setprg32(0x8000,bank>>1);
|
||||
else
|
||||
{
|
||||
setprg16(0x8000,bank);
|
||||
setprg16(0xC000,bank);
|
||||
}
|
||||
}
|
||||
else
|
||||
setprg8(A,((EXPREGS[1]&3)<<5)|(V&0x1F));
|
||||
}
|
||||
}
|
||||
|
||||
static void UNL8237ACW(uint32 A, uint8 V)
|
||||
{
|
||||
if(EXPREGS[0]&0x40)
|
||||
setchr1(A,((EXPREGS[1]&0xE)<<7)|(V&0x7F)|((EXPREGS[1]&0x20)<<2));
|
||||
else
|
||||
setchr1(A,((EXPREGS[1]&0xE)<<7)|V);
|
||||
}
|
||||
|
||||
static void UNL8237APW(uint32 A, uint8 V)
|
||||
{
|
||||
if(EXPREGS[0]&0x40)
|
||||
{
|
||||
uint8 sbank = (EXPREGS[1]&0x10);
|
||||
if(EXPREGS[0]&0x80)
|
||||
{
|
||||
uint8 bank = ((EXPREGS[1]&3)<<4)|((EXPREGS[1]&8)<<3)|(EXPREGS[0]&0x7)|(sbank>>1);
|
||||
if(EXPREGS[0]&0x20)
|
||||
setprg32(0x8000,bank>>1);
|
||||
else
|
||||
{
|
||||
setprg16(0x8000,bank);
|
||||
setprg16(0xC000,bank);
|
||||
}
|
||||
}
|
||||
else
|
||||
setprg8(A,((EXPREGS[1]&3)<<5)|((EXPREGS[1]&8)<<4)|(V&0x0F)|sbank);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(EXPREGS[0]&0x80)
|
||||
{
|
||||
uint8 bank = ((EXPREGS[1]&3)<<4)|((EXPREGS[1]&8)<<3)|(EXPREGS[0]&0xF);
|
||||
if(EXPREGS[0]&0x20)
|
||||
setprg32(0x8000,bank>>1);
|
||||
else
|
||||
{
|
||||
setprg16(0x8000,bank);
|
||||
setprg16(0xC000,bank);
|
||||
}
|
||||
}
|
||||
else
|
||||
setprg8(A,((EXPREGS[1]&3)<<5)|((EXPREGS[1]&8)<<4)|(V&0x1F));
|
||||
}
|
||||
}
|
||||
static DECLFW(UNL8237Write)
|
||||
{
|
||||
if((A&0xF000)==0xF000)
|
||||
IRQCount=V;
|
||||
else if((A&0xF000)==0xE000)
|
||||
X6502_IRQEnd(FCEU_IQEXT);
|
||||
else switch(A&0xE001)
|
||||
uint8 dat = V;
|
||||
uint8 adr = adrperm[EXPREGS[2]][((A>>12)&6)|(A&1)];
|
||||
uint16 addr = (adr & 1)|((adr & 6)<<12)|0x8000;
|
||||
if(adr < 4)
|
||||
{
|
||||
case 0x8000: setmirror(((V|(V>>7))&1)^1); break;
|
||||
case 0xA000: MMC3_CMDWrite(0x8000,(V&0xC0)|(UNL8237_perm[V&7])); cmdin=1; break;
|
||||
case 0xC000: if(cmdin)
|
||||
{
|
||||
MMC3_CMDWrite(0x8001,V);
|
||||
cmdin=0;
|
||||
}
|
||||
break;
|
||||
if(!adr)
|
||||
dat = (dat & 0xC0)|(regperm[EXPREGS[2]][dat & 7]);
|
||||
MMC3_CMDWrite(addr,dat);
|
||||
}
|
||||
else
|
||||
MMC3_IRQWrite(addr,dat);
|
||||
}
|
||||
|
||||
static DECLFW(UNL8237ExWrite)
|
||||
|
@ -69,14 +160,15 @@ static DECLFW(UNL8237ExWrite)
|
|||
switch(A)
|
||||
{
|
||||
case 0x5000: EXPREGS[0]=V; FixMMC3PRG(MMC3_cmd); break;
|
||||
case 0x5001: EXPREGS[1]=V; FixMMC3CHR(MMC3_cmd); break;
|
||||
case 0x5001: EXPREGS[1]=V; FixMMC3PRG(MMC3_cmd); FixMMC3CHR(MMC3_cmd); break;
|
||||
case 0x5007: EXPREGS[2]=V; break;
|
||||
}
|
||||
}
|
||||
|
||||
static void UNL8237Power(void)
|
||||
{
|
||||
IRQa=1;
|
||||
EXPREGS[0]=EXPREGS[1]=0;
|
||||
EXPREGS[0]=EXPREGS[2]=0;
|
||||
EXPREGS[1]=3;
|
||||
GenMMC3Power();
|
||||
SetWriteHandler(0x8000,0xFFFF,UNL8237Write);
|
||||
SetWriteHandler(0x5000,0x7FFF,UNL8237ExWrite);
|
||||
|
@ -91,3 +183,13 @@ void UNL8237_Init(CartInfo *info)
|
|||
AddExState(EXPREGS, 3, 0, "EXPR");
|
||||
AddExState(&cmdin, 1, 0, "CMDIN");
|
||||
}
|
||||
|
||||
void UNL8237A_Init(CartInfo *info)
|
||||
{
|
||||
GenMMC3_Init(info, 256, 256, 0, 0);
|
||||
cwrap=UNL8237ACW;
|
||||
pwrap=UNL8237APW;
|
||||
info->Power=UNL8237Power;
|
||||
AddExState(EXPREGS, 3, 0, "EXPR");
|
||||
AddExState(&cmdin, 1, 0, "CMDIN");
|
||||
}
|
||||
|
|
|
@ -1,148 +0,0 @@
|
|||
/* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
0000 - 1FFF - RAM
|
||||
2000 - 23FF - PPU
|
||||
2400 - 27FF - Write: "PAG" / Read: --
|
||||
2800 - 2BFF - Write: "BNK" / Read: "STS"
|
||||
2C00 - 2FFF - Write: "UWR" / Read: "URD"
|
||||
3000 - 3FFF - Small Flash Page (â ðåãèñòðå BNK)
|
||||
4000 - 7FFF - Free
|
||||
8000 - FFFF - Cart/Big Flash Page (ñìîòðè ðåãèñòð PAG)
|
||||
Áèòû:
|
||||
Ðåãèñòð [PAG], ïî ñáðîñó äîëæåí áûòü = $00.
|
||||
D3-D0 - Big Page High Address (D3,D2,D1,D0,A14,A13,A12,A11,A10,A9,A8,A7,A6,A5,A4,A3,A2,A1,A0)
|
||||
D4 - VMD áèò. Åñëè =0, òî ê PPU ïîäêëþ÷åíî âíóòðåíåå ÎÇó íà 8Êá, åñëè =1 - òî êàðòðèäæ.
|
||||
D5 - STR áèò. Åñëè =0, òî âìåñòî êàðòà ïî àäðåñàì 8000-FFFF âíóòðåííÿÿ ôëýø, =1 - êàðò.
|
||||
Ðåãèñòð [BNK], íå ïðåäóñòàíàâëèâàåòñÿ
|
||||
D6-D0 - Small Page High Address (D6,D5,D4,D3,D2,D1,D0,A11,A10,A9,A8,A7,A6,A5,A4,A3,A2,A1,A0)
|
||||
D7 - S/W áèò. Óïðàâëÿåò USB ìîñòîì, â ýìóëå ðåàëèçîâûâàòü íå íàäî.
|
||||
Ðåãèñòðû [UWR]/[URD], íå ïðåäóñòàíàâëèâàþòñÿ, â ýìóëå ðåàëèçîâûâàòü íå íàäî.
|
||||
[UWR] - Ðåãèñòð çàïèñè äàííûõ â USB ìîñò.
|
||||
[URD] - Ðåãèñòð ÷òåíèÿ èç USB ìîñòà.
|
||||
*/
|
||||
|
||||
#include "mapinc.h"
|
||||
#include "mmc3.h"
|
||||
|
||||
static uint8 reg[3];
|
||||
|
||||
static uint8 *CHRRAM=NULL; // there is no more extern CHRRAM in mmc3.h
|
||||
// I need chrram here and local static == local
|
||||
static uint32 CHRRAMSIZE;
|
||||
|
||||
static SFORMAT StateRegs[]=
|
||||
{
|
||||
{reg, 3, "REGS"},
|
||||
{0}
|
||||
};
|
||||
|
||||
static void Sync(void)
|
||||
{
|
||||
setprg4r(1,0x3000,reg[1]&0x7F);
|
||||
FixMMC3PRG(MMC3_cmd);
|
||||
FixMMC3CHR(MMC3_cmd);
|
||||
}
|
||||
|
||||
static void MCopyFamiMMC3PW(uint32 A, uint8 V)
|
||||
{
|
||||
if(reg[0]&0x20)
|
||||
setprg8r(0,A,V);
|
||||
else
|
||||
setprg32r(1,0x8000,reg[0]&0x0F);
|
||||
}
|
||||
|
||||
static void MCopyFamiMMC3CW(uint32 A, uint8 V)
|
||||
{
|
||||
if(reg[0]&0x20)
|
||||
setchr1r(0,A,V);
|
||||
else
|
||||
setchr8r(0x10,0);
|
||||
}
|
||||
|
||||
static DECLFW(MCopyFamiMMC3WritePAG)
|
||||
{
|
||||
reg[0]=V;
|
||||
Sync();
|
||||
}
|
||||
|
||||
static DECLFW(MCopyFamiMMC3WriteBNK)
|
||||
{
|
||||
reg[1]=V;
|
||||
Sync();
|
||||
}
|
||||
|
||||
static DECLFW(MCopyFamiMMC3WriteUSB)
|
||||
{
|
||||
reg[2]=V;
|
||||
}
|
||||
|
||||
static void MCopyFamiMMC3Power(void)
|
||||
{
|
||||
reg[0] = 0;
|
||||
GenMMC3Power();
|
||||
Sync();
|
||||
SetReadHandler(0x3000,0x3FFF,CartBR);
|
||||
SetWriteHandler(0x3000,0x3FFF,CartBW);
|
||||
|
||||
SetWriteHandler(0x2400,0x27FF,MCopyFamiMMC3WritePAG);
|
||||
SetWriteHandler(0x2800,0x2BFF,MCopyFamiMMC3WriteBNK);
|
||||
SetWriteHandler(0x2C00,0x2FFF,MCopyFamiMMC3WriteUSB);
|
||||
}
|
||||
|
||||
static void MCopyFamiMMC3Reset(void)
|
||||
{
|
||||
reg[0] = 0;
|
||||
MMC3RegReset();
|
||||
Sync();
|
||||
}
|
||||
|
||||
static void MCopyFamiMMC3Close(void)
|
||||
{
|
||||
if(CHRRAM)
|
||||
FCEU_gfree(CHRRAM);
|
||||
CHRRAM=NULL;
|
||||
}
|
||||
|
||||
static void StateRestore(int version)
|
||||
{
|
||||
Sync();
|
||||
}
|
||||
|
||||
void MapperCopyFamiMMC3_Init(CartInfo *info)
|
||||
{
|
||||
GenMMC3_Init(info, 512, 512, 0, 0);
|
||||
|
||||
cwrap=MCopyFamiMMC3CW;
|
||||
pwrap=MCopyFamiMMC3PW;
|
||||
|
||||
info->Reset=MCopyFamiMMC3Reset;
|
||||
info->Power=MCopyFamiMMC3Power;
|
||||
info->Close=MCopyFamiMMC3Close;
|
||||
GameStateRestore=StateRestore;
|
||||
|
||||
CHRRAMSIZE=8192;
|
||||
CHRRAM=(uint8*)FCEU_gmalloc(CHRRAMSIZE);
|
||||
SetupCartPRGMapping(0x10,CHRRAM,CHRRAMSIZE,1);
|
||||
AddExState(CHRRAM, CHRRAMSIZE, 0, "SRAM");
|
||||
|
||||
AddExState(&StateRegs, ~0, 0, 0);
|
||||
}
|
|
@ -28,13 +28,12 @@
|
|||
#include "mmc3.h"
|
||||
|
||||
uint8 MMC3_cmd;
|
||||
uint8 *WRAM;
|
||||
uint8 *CHRRAM;
|
||||
uint32 CHRRAMSize;
|
||||
uint8 DRegBuf[8];
|
||||
uint8 EXPREGS[8]; /* For bootleg games, mostly. */
|
||||
|
||||
static uint8 *WRAM;
|
||||
static uint8 *CHRRAM;
|
||||
static uint8 A000B,A001B;
|
||||
uint8 A000B,A001B;
|
||||
|
||||
#undef IRQCount
|
||||
#undef IRQLatch
|
||||
|
@ -102,6 +101,8 @@ void FixMMC3CHR(int V)
|
|||
cwrap(cbase^0x1400,DRegBuf[3]);
|
||||
cwrap(cbase^0x1800,DRegBuf[4]);
|
||||
cwrap(cbase^0x1c00,DRegBuf[5]);
|
||||
|
||||
if(mwrap) mwrap(A000B);
|
||||
}
|
||||
|
||||
void MMC3RegReset(void)
|
||||
|
@ -128,9 +129,7 @@ DECLFW(MMC3_CMDWrite)
|
|||
{
|
||||
case 0x8000:
|
||||
if((V&0x40) != (MMC3_cmd&0x40))
|
||||
{
|
||||
FixMMC3PRG(V);
|
||||
}
|
||||
if((V&0x80) != (MMC3_cmd&0x80))
|
||||
FixMMC3CHR(V);
|
||||
MMC3_cmd = V;
|
||||
|
@ -226,20 +225,18 @@ static void MMC3_hb_PALStarWarsHack(void)
|
|||
|
||||
void GenMMC3Restore(int version)
|
||||
{
|
||||
if(mwrap) mwrap(A000B);
|
||||
FixMMC3PRG(MMC3_cmd);
|
||||
FixMMC3CHR(MMC3_cmd);
|
||||
}
|
||||
|
||||
static void GENCWRAP(uint32 A, uint8 V)
|
||||
{
|
||||
// if(!UNIFchrrama) // Yong Zhe Dou E Long - Dragon Quest VI (As).nes NEEDS THIS
|
||||
setchr1(A,V); // Business Wars NEEDS THIS
|
||||
setchr1(A,V); // Business Wars NEEDS THIS for 8K CHR-RAM
|
||||
}
|
||||
|
||||
static void GENPWRAP(uint32 A, uint8 V)
|
||||
{
|
||||
setprg8(A,V&0x3F);
|
||||
setprg8(A,V&0x7F); // [NJ102] Mo Dao Jie (C) has 1024Mb MMC3 BOARD, maybe something other will be broken
|
||||
}
|
||||
|
||||
static void GENMWRAP(uint8 V)
|
||||
|
@ -253,16 +250,6 @@ static void GENNOMWRAP(uint8 V)
|
|||
A000B=V;
|
||||
}
|
||||
|
||||
static DECLFW(MBWRAM)
|
||||
{
|
||||
WRAM[A-0x6000]=V;
|
||||
}
|
||||
|
||||
static DECLFR(MAWRAM)
|
||||
{
|
||||
return(WRAM[A-0x6000]);
|
||||
}
|
||||
|
||||
static DECLFW(MBWRAMMMC6)
|
||||
{
|
||||
WRAM[A&0x3ff]=V;
|
||||
|
@ -292,9 +279,10 @@ void GenMMC3Power(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
FCEU_CheatAddRAM(wrams>>10,0x6000,WRAM);
|
||||
SetReadHandler(0x6000,0x6000+wrams-1,MAWRAM);
|
||||
SetWriteHandler(0x6000,0x6000+wrams-1,MBWRAM);
|
||||
FCEU_CheatAddRAM((wrams&0x1fff)>>10,0x6000,WRAM);
|
||||
SetWriteHandler(0x6000,0x6000 + ((wrams - 1) & 0x1fff),CartBW);
|
||||
SetReadHandler(0x6000,0x6000 + ((wrams - 1) & 0x1fff),CartBR);
|
||||
setprg8r(0x10,0x6000,0);
|
||||
}
|
||||
if(!(mmc3opts&2))
|
||||
FCEU_dwmemset(WRAM,0,wrams);
|
||||
|
@ -313,15 +301,6 @@ static void GenMMC3Close(void)
|
|||
CHRRAM=WRAM=NULL;
|
||||
}
|
||||
|
||||
//static uint16 _a12;
|
||||
//static void MMC3_PPU(uint32 A)
|
||||
//{
|
||||
// if(A&0x2000)return;
|
||||
// if((!_a12)&&(A&0x1000))
|
||||
// ClockMMC3Counter();
|
||||
// _a12=A&0x1000;
|
||||
//}
|
||||
|
||||
void GenMMC3_Init(CartInfo *info, int prg, int chr, int wram, int battery)
|
||||
{
|
||||
pwrap=GENPWRAP;
|
||||
|
@ -338,7 +317,8 @@ void GenMMC3_Init(CartInfo *info, int prg, int chr, int wram, int battery)
|
|||
{
|
||||
mmc3opts|=1;
|
||||
WRAM=(uint8*)FCEU_gmalloc(wrams);
|
||||
AddExState(WRAM, wrams, 0, "WRAM");
|
||||
SetupCartPRGMapping(0x10,WRAM,wrams,1);
|
||||
AddExState(WRAM, wrams, 0, "MMC3WRAM");
|
||||
}
|
||||
|
||||
if(battery)
|
||||
|
@ -348,14 +328,6 @@ void GenMMC3_Init(CartInfo *info, int prg, int chr, int wram, int battery)
|
|||
info->SaveGameLen[0]=wrams;
|
||||
}
|
||||
|
||||
// if(!chr) // duplicated CHR RAM set up
|
||||
// {
|
||||
// CHRRAM=(uint8*)FCEU_gmalloc(8192);
|
||||
// CHRRAMSize=8192;
|
||||
// SetupCartCHRMapping(0, CHRRAM, 8192, 1);
|
||||
// AddExState(CHRRAM, 8192, 0, "CHRR");
|
||||
// }
|
||||
|
||||
AddExState(MMC3_StateRegs, ~0, 0, 0);
|
||||
|
||||
info->Power=GenMMC3Power;
|
||||
|
@ -370,7 +342,6 @@ void GenMMC3_Init(CartInfo *info, int prg, int chr, int wram, int battery)
|
|||
GameHBIRQHook = MMC3_hb_PALStarWarsHack;
|
||||
else
|
||||
GameHBIRQHook=MMC3_hb;
|
||||
// PPU_hook=MMC3_PPU;
|
||||
GameStateRestore=GenMMC3Restore;
|
||||
}
|
||||
|
||||
|
@ -786,25 +757,15 @@ static void M114PWRAP(uint32 A, uint8 V)
|
|||
|
||||
static DECLFW(M114Write)
|
||||
{
|
||||
if(A==0xE003)
|
||||
switch(A&0xE001)
|
||||
{
|
||||
IRQa=1;
|
||||
IRQLatch=V;
|
||||
IRQReload=1;
|
||||
}
|
||||
else if(A==0xE002)
|
||||
{
|
||||
IRQa=0;
|
||||
X6502_IRQEnd(FCEU_IQEXT);
|
||||
}
|
||||
else switch(A&0xE000)
|
||||
{
|
||||
case 0x8000: setmirror((V&1)^1); break;
|
||||
case 0x8001: MMC3_CMDWrite(0xA000,V); break;
|
||||
case 0xA000: MMC3_CMDWrite(0x8000,(V&0xC0)|(m114_perm[V&7])); cmdin=1; break;
|
||||
case 0xC000: if(!cmdin) break;
|
||||
MMC3_CMDWrite(0x8001,V);
|
||||
cmdin=0;
|
||||
break;
|
||||
case 0xC000: if(!cmdin) break; MMC3_CMDWrite(0x8001,V); cmdin=0; break;
|
||||
case 0xA001: IRQLatch=V; break;
|
||||
case 0xC001: IRQReload=1; break;
|
||||
case 0xE000: X6502_IRQEnd(FCEU_IQEXT);IRQa=0; break;
|
||||
case 0xE001: IRQa=1; break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -832,6 +793,7 @@ static void M114Reset(void)
|
|||
|
||||
void Mapper114_Init(CartInfo *info)
|
||||
{
|
||||
isRevB=0;
|
||||
GenMMC3_Init(info, 256, 256, 0, 0);
|
||||
pwrap=M114PWRAP;
|
||||
info->Power=M114Power;
|
||||
|
@ -941,15 +903,6 @@ static void TKSWRAP(uint32 A, uint8 V)
|
|||
setmirror(MI_0+(V>>7));
|
||||
}
|
||||
|
||||
//void Mapper118_Init(CartInfo *info)
|
||||
//{
|
||||
// GenMMC3_Init(info, 512, 256, 8, info->battery);
|
||||
// cwrap=TKSWRAP;
|
||||
// mwrap=GENNOMWRAP;
|
||||
// PPU_hook=TKSPPU;
|
||||
// AddExState(&PPUCHRBus, 1, 0, "PPUC");
|
||||
//}
|
||||
|
||||
// ---------------------------- Mapper 119 ------------------------------
|
||||
|
||||
static void TQWRAP(uint32 A, uint8 V)
|
||||
|
@ -1076,41 +1029,6 @@ void Mapper165_Init(CartInfo *info)
|
|||
AddExState(EXPREGS, 4, 0, "EXPR");
|
||||
}
|
||||
|
||||
// ---------------------------- Mapper 182 ------------------------------
|
||||
// òàáëèöà ïåðìóòàöè àíàëîãè÷íà 114 ìàïïåðó, ðåãèñòðû ìàïïåðà ãîðàçäî ñëîæíåå,
|
||||
// ÷åì èñïîëüçóþòñÿ çäåñü, õîòÿ âñå ïðåêðàñíî ðàáîòàåò.
|
||||
|
||||
//static uint8 m182_perm[8] = {0, 3, 1, 5, 6, 7, 2, 4};
|
||||
static DECLFW(M182Write)
|
||||
{
|
||||
switch(A&0xF003)
|
||||
{
|
||||
case 0x8001: setmirror((V&1)^1); break;
|
||||
case 0xA000: MMC3_CMDWrite(0x8000,m114_perm[V&7]); break;
|
||||
case 0xC000: MMC3_CMDWrite(0x8001,V); break;
|
||||
case 0xE003: if(V)
|
||||
{
|
||||
IRQLatch=V;
|
||||
IRQReload=1;
|
||||
IRQa=1;
|
||||
}
|
||||
X6502_IRQEnd(FCEU_IQEXT);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void M182Power(void)
|
||||
{
|
||||
GenMMC3Power();
|
||||
SetWriteHandler(0x8000,0xFFFF,M182Write);
|
||||
}
|
||||
|
||||
void Mapper182_Init(CartInfo *info)
|
||||
{
|
||||
GenMMC3_Init(info, 256, 256, 0, 0);
|
||||
info->Power=M182Power;
|
||||
}
|
||||
|
||||
// ---------------------------- Mapper 191 ------------------------------
|
||||
|
||||
static void M191CW(uint32 A, uint8 V)
|
||||
|
@ -1318,191 +1236,12 @@ void Mapper205_Init(CartInfo *info)
|
|||
AddExState(EXPREGS, 1, 0, "EXPR");
|
||||
}
|
||||
|
||||
// ---------------------------- Mapper 215 ------------------------------
|
||||
|
||||
static uint8 m215_perm[8] = {0, 2, 5, 3, 6, 1, 7, 4};
|
||||
//static uint8 m215_perm[8] = {0, 1, 2, 3, 4, 5, 6, 7};
|
||||
|
||||
static void M215CW(uint32 A, uint8 V)
|
||||
{
|
||||
if(EXPREGS[1]&0x04)
|
||||
setchr1(A,V|0x100);
|
||||
else
|
||||
setchr1(A,(V&0x7F)|((EXPREGS[1]&0x10)<<3));
|
||||
}
|
||||
|
||||
static void M215PW(uint32 A, uint8 V)
|
||||
{
|
||||
if(EXPREGS[0]&0x80)
|
||||
{
|
||||
setprg16(0x8000,(EXPREGS[0]&0x0F)|(EXPREGS[1]&0x10));
|
||||
setprg16(0xC000,(EXPREGS[0]&0x0F)|(EXPREGS[1]&0x10));
|
||||
}
|
||||
else if(EXPREGS[1]&0x08)
|
||||
setprg8(A,(V&0x1F)|0x20);
|
||||
else
|
||||
setprg8(A,(V&0x0F)|(EXPREGS[1]&0x10));
|
||||
}
|
||||
|
||||
static DECLFW(M215Write)
|
||||
{
|
||||
// FCEU_printf("bs %04x %02x\n",A,V);
|
||||
if(!(EXPREGS[2]))
|
||||
{
|
||||
if(A >= 0xc000)
|
||||
MMC3_IRQWrite(A,V);
|
||||
else
|
||||
MMC3_CMDWrite(A,V);
|
||||
}
|
||||
else switch(A&0xE001)
|
||||
{
|
||||
case 0xC001: IRQLatch=V; break;
|
||||
case 0xA001: IRQReload=1; break;
|
||||
case 0xE001: IRQa=1; break;
|
||||
case 0xE000: X6502_IRQEnd(FCEU_IQEXT); IRQa=0; break;
|
||||
case 0xC000: setmirror(((V|(V>>7))&1)^1); break;
|
||||
case 0xA000: MMC3_CMDWrite(0x8000,(V&0xC0)|(m215_perm[V&7])); cmdin=1; break;
|
||||
case 0x8001: if(!cmdin) break;
|
||||
MMC3_CMDWrite(0x8001,V);
|
||||
cmdin=0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static DECLFW(M215ExWrite)
|
||||
{
|
||||
// FCEU_printf("bs %04x %02x (%04x)\n",A,V,A&0x5007);
|
||||
switch(A)
|
||||
{
|
||||
// case 0x6000:
|
||||
case 0x5000:
|
||||
EXPREGS[0]=V;
|
||||
FixMMC3PRG(MMC3_cmd);
|
||||
break;
|
||||
// case 0x6001:
|
||||
case 0x5001:
|
||||
EXPREGS[1]=V;
|
||||
FixMMC3CHR(MMC3_cmd);
|
||||
break;
|
||||
// case 0x6007:
|
||||
case 0x5007:
|
||||
EXPREGS[2]=V;
|
||||
MMC3RegReset();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void M215Power(void)
|
||||
{
|
||||
EXPREGS[0]=0;
|
||||
EXPREGS[1]=0xFF;
|
||||
EXPREGS[2]=4;
|
||||
GenMMC3Power();
|
||||
SetWriteHandler(0x8000,0xFFFF,M215Write);
|
||||
SetWriteHandler(0x5000,0x7FFF,M215ExWrite);
|
||||
}
|
||||
|
||||
void Mapper215_Init(CartInfo *info)
|
||||
{
|
||||
GenMMC3_Init(info, 256, 256, 0, 0);
|
||||
cwrap=M215CW;
|
||||
pwrap=M215PW;
|
||||
info->Power=M215Power;
|
||||
AddExState(EXPREGS, 3, 0, "EXPR");
|
||||
AddExState(&cmdin, 1, 0, "CMDIN");
|
||||
}
|
||||
|
||||
// ---------------------------- Mapper 217 ------------------------------
|
||||
|
||||
static uint8 m217_perm[8] = {0, 6, 3, 7, 5, 2, 4, 1};
|
||||
|
||||
static void M217CW(uint32 A, uint8 V)
|
||||
{
|
||||
if(EXPREGS[1]&0x08)
|
||||
setchr1(A,V|((EXPREGS[1]&3)<<8));
|
||||
else
|
||||
setchr1(A,(V&0x7F)|((EXPREGS[1]&3)<<8)|((EXPREGS[1]&0x10)<<3));
|
||||
}
|
||||
|
||||
static void M217PW(uint32 A, uint8 V)
|
||||
{
|
||||
if(EXPREGS[0]&0x80)
|
||||
{
|
||||
setprg16(0x8000,(EXPREGS[0]&0x0F)|((EXPREGS[1]&3)<<4));
|
||||
setprg16(0xC000,(EXPREGS[0]&0x0F)|((EXPREGS[1]&3)<<4));
|
||||
}
|
||||
else if(EXPREGS[1]&0x08)
|
||||
setprg8(A,(V&0x1F)|((EXPREGS[1]&3)<<5));
|
||||
else
|
||||
setprg8(A,(V&0x0F)|((EXPREGS[1]&3)<<5)|(EXPREGS[1]&0x10));
|
||||
}
|
||||
|
||||
static DECLFW(M217Write)
|
||||
{
|
||||
if(!EXPREGS[2])
|
||||
{
|
||||
if(A >= 0xc000)
|
||||
MMC3_IRQWrite(A, V);
|
||||
else
|
||||
MMC3_CMDWrite(A,V);
|
||||
}
|
||||
else switch(A&0xE001)
|
||||
{
|
||||
case 0x8000: IRQCount=V; break;
|
||||
case 0xE000: X6502_IRQEnd(FCEU_IQEXT);IRQa=0; break;
|
||||
case 0xC001: IRQa=1; break;
|
||||
case 0xA001: setmirror((V&1)^1); break;
|
||||
case 0x8001: MMC3_CMDWrite(0x8000,(V&0xC0)|(m217_perm[V&7])); cmdin=1; break;
|
||||
case 0xA000: if(!cmdin) break;
|
||||
MMC3_CMDWrite(0x8001,V);
|
||||
cmdin=0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static DECLFW(M217ExWrite)
|
||||
{
|
||||
switch(A)
|
||||
{
|
||||
case 0x5000:
|
||||
EXPREGS[0]=V;
|
||||
FixMMC3PRG(MMC3_cmd);
|
||||
break;
|
||||
case 0x5001:
|
||||
EXPREGS[1]=V;
|
||||
FixMMC3PRG(MMC3_cmd);
|
||||
break;
|
||||
case 0x5007:
|
||||
EXPREGS[2]=V;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void M217Power(void)
|
||||
{
|
||||
EXPREGS[0]=0;
|
||||
EXPREGS[1]=0xFF;
|
||||
EXPREGS[2]=3;
|
||||
GenMMC3Power();
|
||||
SetWriteHandler(0x8000,0xFFFF,M217Write);
|
||||
SetWriteHandler(0x5000,0x7FFF,M217ExWrite);
|
||||
}
|
||||
|
||||
void Mapper217_Init(CartInfo *info)
|
||||
{
|
||||
GenMMC3_Init(info, 256, 256, 0, 0);
|
||||
cwrap=M217CW;
|
||||
pwrap=M217PW;
|
||||
info->Power=M217Power;
|
||||
AddExState(EXPREGS, 3, 0, "EXPR");
|
||||
AddExState(&cmdin, 1, 0, "CMDIN");
|
||||
}
|
||||
|
||||
// ---------------------------- Mapper 245 ------------------------------
|
||||
|
||||
static void M245CW(uint32 A, uint8 V)
|
||||
{
|
||||
setchr1(A,V&7);
|
||||
if(!UNIFchrrama) // Yong Zhe Dou E Long - Dragon Quest VI (As).nes NEEDS THIS for RAM cart
|
||||
setchr1(A,V&7);
|
||||
EXPREGS[0]=V;
|
||||
FixMMC3PRG(MMC3_cmd);
|
||||
}
|
||||
|
|
|
@ -395,21 +395,19 @@ void LogCDData(){
|
|||
uint16 A = 0;
|
||||
uint8 opcode[3] = {0}, memop = 0;
|
||||
|
||||
j = GetPRGAddress(_PC);
|
||||
opcode[0] = GetMem(_PC);
|
||||
switch (opsize[opcode[0]]) {
|
||||
case 2:
|
||||
opcode[1] = GetMem(_PC + 1);
|
||||
break;
|
||||
case 3:
|
||||
opcode[1] = GetMem(_PC + 1);
|
||||
opcode[2] = GetMem(_PC + 2);
|
||||
break;
|
||||
}
|
||||
|
||||
if(j != -1) {
|
||||
opcode[0] = GetMem(_PC);
|
||||
switch (opsize[opcode[0]]) {
|
||||
case 2:
|
||||
opcode[1] = GetMem(_PC + 1);
|
||||
break;
|
||||
case 3:
|
||||
opcode[1] = GetMem(_PC + 1);
|
||||
opcode[2] = GetMem(_PC + 2);
|
||||
break;
|
||||
}
|
||||
|
||||
for (i = 0; i < opsize[opcode[0]]; i++){
|
||||
if((j = GetPRGAddress(_PC)) != -1)
|
||||
for (i = 0; i < opsize[opcode[0]]; i++) {
|
||||
if(cdloggerdata[j+i] & 1)continue; //this has been logged so skip
|
||||
cdloggerdata[j+i] |= 1;
|
||||
cdloggerdata[j+i] |=((_PC+i)>>11)&0x0c;
|
||||
|
@ -418,36 +416,35 @@ void LogCDData(){
|
|||
if(!(cdloggerdata[j+i] & 2))undefinedcount--;
|
||||
}
|
||||
|
||||
//log instruction jumped to in an indirect jump
|
||||
if(opcode[0] == 0x6c) indirectnext = 1; else indirectnext = 0;
|
||||
//log instruction jumped to in an indirect jump
|
||||
if(opcode[0] == 0x6c) indirectnext = 1; else indirectnext = 0;
|
||||
|
||||
switch (optype[opcode[0]]) {
|
||||
case 0: break;
|
||||
case 1:
|
||||
A = (opcode[1]+_X) & 0xFF;
|
||||
A = GetMem(A) | (GetMem(A+1)<<8);
|
||||
memop = 0x20;
|
||||
break;
|
||||
case 2: A = opcode[1]; break;
|
||||
case 3: A = opcode[1] | opcode[2]<<8; break;
|
||||
case 4:
|
||||
A = (GetMem(opcode[1]) | (GetMem(opcode[1]+1)<<8))+_Y;
|
||||
memop = 0x20;
|
||||
break;
|
||||
case 5: A = opcode[1]+_X; break;
|
||||
case 6: A = (opcode[1] | (opcode[2]<<8))+_Y; break;
|
||||
case 7: A = (opcode[1] | (opcode[2]<<8))+_X; break;
|
||||
case 8: A = opcode[1]+_Y; break;
|
||||
}
|
||||
switch (optype[opcode[0]]) {
|
||||
case 0: break;
|
||||
case 1:
|
||||
A = (opcode[1]+_X) & 0xFF;
|
||||
A = GetMem(A) | (GetMem(A+1)<<8);
|
||||
memop = 0x20;
|
||||
break;
|
||||
case 2: A = opcode[1]; break;
|
||||
case 3: A = opcode[1] | opcode[2]<<8; break;
|
||||
case 4:
|
||||
A = (GetMem(opcode[1]) | (GetMem(opcode[1]+1)<<8))+_Y;
|
||||
memop = 0x20;
|
||||
break;
|
||||
case 5: A = opcode[1]+_X; break;
|
||||
case 6: A = (opcode[1] | (opcode[2]<<8))+_Y; break;
|
||||
case 7: A = (opcode[1] | (opcode[2]<<8))+_X; break;
|
||||
case 8: A = opcode[1]+_Y; break;
|
||||
}
|
||||
|
||||
if((j = GetPRGAddress(A)) != -1) {
|
||||
if(!(cdloggerdata[j] & 2)) {
|
||||
cdloggerdata[j] |= 2;
|
||||
cdloggerdata[j] |=(A>>11)&0x0c;
|
||||
cdloggerdata[j] |= memop;
|
||||
datacount++;
|
||||
if(!(cdloggerdata[j] & 1))undefinedcount--;
|
||||
}
|
||||
if((j = GetPRGAddress(A)) != -1) {
|
||||
if(!(cdloggerdata[j] & 2)) {
|
||||
cdloggerdata[j] |= 2;
|
||||
cdloggerdata[j] |=(A>>11)&0x0c;
|
||||
cdloggerdata[j] |= memop;
|
||||
datacount++;
|
||||
if(!(cdloggerdata[j] & 1))undefinedcount--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ using namespace std;
|
|||
void LoadCDLogFile();
|
||||
void SaveCDLogFileAs();
|
||||
void SaveCDLogFile();
|
||||
void SaveStrippedRom();
|
||||
void SaveStrippedRom(int invert);
|
||||
|
||||
extern iNES_HEADER head; //defined in ines.c
|
||||
extern uint8 *trainerpoo;
|
||||
|
@ -169,7 +169,10 @@ MB_OK);
|
|||
SaveCDLogFile();
|
||||
break;
|
||||
case BTN_CDLOGGER_SAVE_STRIPPED:
|
||||
SaveStrippedRom();
|
||||
SaveStrippedRom(0);
|
||||
break;
|
||||
case BTN_CDLOGGER_SAVE_UNUSED:
|
||||
SaveStrippedRom(1);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
@ -319,7 +322,7 @@ void UpdateCDLogger(){
|
|||
return;
|
||||
}
|
||||
|
||||
void SaveStrippedRom(){ //this is based off of iNesSave()
|
||||
void SaveStrippedRom(int invert){ //this is based off of iNesSave()
|
||||
//todo: make this support nsfs
|
||||
const char NESfilter[]="Stripped iNes Rom file (*.NES)\0*.nes\0All Files (*.*)\0*.*\0\0";
|
||||
const char NSFfilter[]="Stripped NSF file (*.NSF)\0*.nsf\0All Files (*.*)\0*.*\0\0";
|
||||
|
@ -376,8 +379,12 @@ void SaveStrippedRom(){ //this is based off of iNesSave()
|
|||
|
||||
fseek(fp,0x8,SEEK_SET);
|
||||
for(i = 0;i < ((NSFMaxBank+1)*4096);i++){
|
||||
if(cdloggerdata[i] & 3)fputc(NSFDATA[i],fp);
|
||||
else fputc(0,fp);
|
||||
unsigned char pchar;
|
||||
if(cdloggerdata[i] & 3)
|
||||
pchar = invert?0:NSFDATA[i];
|
||||
else
|
||||
pchar = invert?NSFDATA[i]:0;
|
||||
fputc(pchar, fp);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -395,8 +402,12 @@ void SaveStrippedRom(){ //this is based off of iNesSave()
|
|||
}
|
||||
|
||||
for(i = 0;i < head.ROM_size*0x4000;i++){
|
||||
if(cdloggerdata[i] & 3)fputc(ROM[i],fp);
|
||||
else fputc(0,fp);
|
||||
unsigned char pchar;
|
||||
if(cdloggerdata[i] & 3)
|
||||
pchar = invert?0:ROM[i];
|
||||
else
|
||||
pchar = invert?ROM[i]:0;
|
||||
fputc(pchar, fp);
|
||||
}
|
||||
//fwrite(ROM,0x4000,head.ROM_size,fp);
|
||||
|
||||
|
|
|
@ -1386,7 +1386,7 @@ BEGIN
|
|||
DEFPUSHBUTTON "&OK",IDOK,67,52,50,14
|
||||
END
|
||||
|
||||
CDLOGGER DIALOGEX 0, 0, 322, 213
|
||||
CDLOGGER DIALOGEX 0, 0, 315, 218
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
EXSTYLE WS_EX_ACCEPTFILES
|
||||
CAPTION "Code Data Logger"
|
||||
|
@ -1394,12 +1394,12 @@ FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
|||
BEGIN
|
||||
DEFPUSHBUTTON "Load...",BTN_CDLOGGER_LOAD,7,81,50,14
|
||||
PUSHBUTTON "Save",BTN_CDLOGGER_SAVE,257,81,50,14
|
||||
GROUPBOX "Code Data Log Status",-1,2,4,316,119,BS_CENTER
|
||||
GROUPBOX "Code Data Log Status",-1,3,4,308,131,BS_CENTER
|
||||
PUSHBUTTON "Start",BTN_CDLOGGER_START_PAUSE,129,81,50,14
|
||||
GROUPBOX "Address Label Logger",65534,3,128,315,79,BS_CENTER
|
||||
PUSHBUTTON "Load...",111,7,182,50,14,WS_DISABLED
|
||||
PUSHBUTTON "Start",112,127,181,50,14,WS_DISABLED
|
||||
PUSHBUTTON "Save...",113,259,181,50,14,WS_DISABLED
|
||||
GROUPBOX "Address Label Logger",65534,3,136,308,79,BS_CENTER
|
||||
PUSHBUTTON "Load...",111,7,190,50,14,WS_DISABLED
|
||||
PUSHBUTTON "Start",112,127,189,50,14,WS_DISABLED
|
||||
PUSHBUTTON "Save...",113,256,189,50,14,WS_DISABLED
|
||||
LTEXT "4067 - 29.5%",LBL_CDLOGGER_CODECOUNT,38,31,68,11
|
||||
GROUPBOX "Bytes Logged As Code",65533,29,20,84,27
|
||||
GROUPBOX "Bytes Logged as data",65532,117,20,84,27
|
||||
|
@ -1409,7 +1409,8 @@ BEGIN
|
|||
LTEXT "Itsa me the Code Data Logger! Press Start to play!",65530,69,56,172,12
|
||||
PUSHBUTTON "Reset Log",BTN_CDLOGGER_RESET,7,66,50,14
|
||||
PUSHBUTTON "Save as...",BTN_CDLOGGER_SAVE_AS,257,66,50,14
|
||||
PUSHBUTTON "Save Stripped iNes Rom...",BTN_CDLOGGER_SAVE_STRIPPED,213,102,99,14
|
||||
PUSHBUTTON "Save Stripped iNes Rom...",BTN_CDLOGGER_SAVE_STRIPPED,208,102,99,14
|
||||
PUSHBUTTON "Save Unused Data...",BTN_CDLOGGER_SAVE_UNUSED,208,117,99,14
|
||||
END
|
||||
|
||||
PPUVIEW DIALOGEX 44, 38, 355, 246
|
||||
|
@ -1817,6 +1818,10 @@ BEGIN
|
|||
BOTTOMMARGIN, 318
|
||||
END
|
||||
|
||||
"TRACER", DIALOG
|
||||
BEGIN
|
||||
END
|
||||
|
||||
"ADDBP", DIALOG
|
||||
BEGIN
|
||||
RIGHTMARGIN, 185
|
||||
|
@ -1882,6 +1887,7 @@ BEGIN
|
|||
|
||||
"CDLOGGER", DIALOG
|
||||
BEGIN
|
||||
BOTTOMMARGIN, 213
|
||||
END
|
||||
|
||||
"ARCHIVECHOOSERDIALOG", DIALOG
|
||||
|
|
|
@ -103,6 +103,7 @@
|
|||
#define IDC_ROMPATCHER_PATCH_DATA 109
|
||||
#define IDC_ADDBP_MODE_X2 109
|
||||
#define IDC_ADDBP_MODE_F 109
|
||||
#define BTN_CDLOGGER_SAVE_UNUSED 109
|
||||
#define IDC_CHEAT_VAL_LT_BY 110
|
||||
#define MENU_SAVE_STATE 110
|
||||
#define CB_ASK_EXIT 110
|
||||
|
|
|
@ -241,6 +241,8 @@
|
|||
|
||||
{0x22d6d5bd,4,1},
|
||||
{0x6a03d3f3,114,-1},
|
||||
{0x0d98db53,114,-1}, /* Pocahontas */
|
||||
{0x4e7729ff,114,-1}, /* Super Donkey Kong */
|
||||
|
||||
{0x02c41438,176,-1}, /* Xing He Zhan Shi (C) */
|
||||
|
||||
|
|
|
@ -580,7 +580,7 @@ static BMAPPINGLocal bmap[] = {
|
|||
{"", 178, Mapper178_Init},
|
||||
{"", 180, Mapper180_Init},
|
||||
{"", 181, Mapper181_Init},
|
||||
{"", 182, Mapper182_Init},
|
||||
// {"", 182, Mapper182_Init}, // identical to 114
|
||||
{"", 183, Mapper183_Init},
|
||||
{"", 184, Mapper184_Init},
|
||||
{"", 185, Mapper185_Init},
|
||||
|
@ -603,9 +603,9 @@ static BMAPPINGLocal bmap[] = {
|
|||
{"", 209, Mapper209_Init},
|
||||
{"", 210, Mapper210_Init},
|
||||
{"", 211, Mapper211_Init},
|
||||
{"", 215, Mapper215_Init},
|
||||
{"", 215, UNL8237_Init},
|
||||
{"", 216, Mapper216_Init},
|
||||
{"", 217, Mapper217_Init},
|
||||
// {"", 217, Mapper217_Init},
|
||||
{"UNLA9746", 219, UNLA9746_Init},
|
||||
{"OneBus", 220, UNLOneBus_Init},
|
||||
|
||||
|
|
|
@ -418,7 +418,7 @@ void Mapper177_Init(CartInfo *);
|
|||
void Mapper178_Init(CartInfo *);
|
||||
void Mapper180_Init(CartInfo *);
|
||||
void Mapper181_Init(CartInfo *);
|
||||
void Mapper182_Init(CartInfo *);
|
||||
//void Mapper182_Init(CartInfo *);
|
||||
void Mapper183_Init(CartInfo *);
|
||||
void Mapper184_Init(CartInfo *);
|
||||
void Mapper185_Init(CartInfo *);
|
||||
|
@ -440,9 +440,9 @@ void Mapper208_Init(CartInfo *);
|
|||
void Mapper209_Init(CartInfo *);
|
||||
void Mapper210_Init(CartInfo *);
|
||||
void Mapper211_Init(CartInfo *);
|
||||
void Mapper215_Init(CartInfo *);
|
||||
//void Mapper215_Init(CartInfo *);
|
||||
void Mapper216_Init(CartInfo *);
|
||||
void Mapper217_Init(CartInfo *);
|
||||
//void Mapper217_Init(CartInfo *);
|
||||
void Mapper220_Init(CartInfo *);
|
||||
void Mapper222_Init(CartInfo *);
|
||||
void Mapper226_Init(CartInfo *);
|
||||
|
|
|
@ -392,12 +392,12 @@ static BMAPPING bmap[] = {
|
|||
{ "SMB2J", UNLSMB2J_Init, 0},
|
||||
{ "AX5705", UNLAX5705_Init, 0},
|
||||
{ "CC-21", UNLCC21_Init,0},
|
||||
|
||||
{ "H2288", UNLH2288_Init,0},
|
||||
{ "KOF97", UNLKOF97_Init,0},
|
||||
{ "SL1632", UNLSL1632_Init,0},
|
||||
{ "SHERO", UNLSHeroes_Init,0},
|
||||
{ "8237", UNL8237_Init,0},
|
||||
{ "8237A", UNL8237A_Init,0},
|
||||
{ "8157", UNL8157_Init,0},
|
||||
{ "T-262", BMCT262_Init,0},
|
||||
{ "FK23C", BMCFK23C_Init,0},
|
||||
|
|
|
@ -108,6 +108,7 @@ void UNLA9746_Init(CartInfo *info);
|
|||
void UNLSHeroes_Init(CartInfo *info);
|
||||
void UNLH2288_Init(CartInfo *info);
|
||||
void UNL8237_Init(CartInfo *info);
|
||||
void UNL8237A_Init(CartInfo *info);
|
||||
void UNL8157_Init(CartInfo *info);
|
||||
void UNL22211_Init(CartInfo *info);
|
||||
void UNLTF1201_Init(CartInfo *info);
|
||||
|
|
|
@ -479,7 +479,7 @@ extern int test; test++;
|
|||
}
|
||||
|
||||
//will probably cause a major speed decrease on low-end systems
|
||||
DEBUG( DebugCycle() );
|
||||
DEBUG( DebugCycle() );
|
||||
|
||||
_PI=_P;
|
||||
b1=RdMem(_PC);
|
||||
|
|
|
@ -274,7 +274,6 @@
|
|||
<ClCompile Include="..\src\boards\bmc70in1.cpp" />
|
||||
<ClCompile Include="..\src\boards\bonza.cpp" />
|
||||
<ClCompile Include="..\src\boards\bs-5.cpp" />
|
||||
<ClCompile Include="..\src\boards\copyfami_mmc3.cpp" />
|
||||
<ClCompile Include="..\src\boards\datalatch.cpp" />
|
||||
<ClCompile Include="..\src\boards\deirom.cpp" />
|
||||
<ClCompile Include="..\src\boards\dream.cpp" />
|
||||
|
|
|
@ -193,9 +193,6 @@
|
|||
<ClCompile Include="..\src\boards\bs-5.cpp">
|
||||
<Filter>boards</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\boards\copyfami_mmc3.cpp">
|
||||
<Filter>boards</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\boards\datalatch.cpp">
|
||||
<Filter>boards</Filter>
|
||||
</ClCompile>
|
||||
|
|
Loading…
Reference in New Issue