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:
CaH4e3 2011-09-24 06:36:44 +00:00
parent bf32a2bcce
commit e9e97b774e
15 changed files with 1971 additions and 2264 deletions

View File

@ -1,7 +1,7 @@
/* FCE Ultra - NES/Famicom Emulator /* FCE Ultra - NES/Famicom Emulator
* *
* Copyright notice for this file: * 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 * 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 * 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 * You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * 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 "mapinc.h"
#include "mmc3.h" #include "mmc3.h"
static uint8 cmdin; 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) 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) static void UNL8237PW(uint32 A, uint8 V)
{ {
if(EXPREGS[0]&0x80) if(EXPREGS[0]&0x40)
{ {
if(EXPREGS[0]&0x20) uint8 sbank = (EXPREGS[1]&0x10);
setprg32(0x8000,(EXPREGS[0]&0xF)>>1); if(EXPREGS[0]&0x80)
else
{ {
setprg16(0x8000,(EXPREGS[0]&0x1F)); uint8 bank = ((EXPREGS[1]&3)<<4)|(EXPREGS[0]&0x7)|(sbank>>1);
setprg16(0xC000,(EXPREGS[0]&0x1F)); 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 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) static DECLFW(UNL8237Write)
{ {
if((A&0xF000)==0xF000) uint8 dat = V;
IRQCount=V; uint8 adr = adrperm[EXPREGS[2]][((A>>12)&6)|(A&1)];
else if((A&0xF000)==0xE000) uint16 addr = (adr & 1)|((adr & 6)<<12)|0x8000;
X6502_IRQEnd(FCEU_IQEXT); if(adr < 4)
else switch(A&0xE001)
{ {
case 0x8000: setmirror(((V|(V>>7))&1)^1); break; if(!adr)
case 0xA000: MMC3_CMDWrite(0x8000,(V&0xC0)|(UNL8237_perm[V&7])); cmdin=1; break; dat = (dat & 0xC0)|(regperm[EXPREGS[2]][dat & 7]);
case 0xC000: if(cmdin) MMC3_CMDWrite(addr,dat);
{
MMC3_CMDWrite(0x8001,V);
cmdin=0;
}
break;
} }
else
MMC3_IRQWrite(addr,dat);
} }
static DECLFW(UNL8237ExWrite) static DECLFW(UNL8237ExWrite)
@ -69,14 +160,15 @@ static DECLFW(UNL8237ExWrite)
switch(A) switch(A)
{ {
case 0x5000: EXPREGS[0]=V; FixMMC3PRG(MMC3_cmd); break; 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) static void UNL8237Power(void)
{ {
IRQa=1; EXPREGS[0]=EXPREGS[2]=0;
EXPREGS[0]=EXPREGS[1]=0; EXPREGS[1]=3;
GenMMC3Power(); GenMMC3Power();
SetWriteHandler(0x8000,0xFFFF,UNL8237Write); SetWriteHandler(0x8000,0xFFFF,UNL8237Write);
SetWriteHandler(0x5000,0x7FFF,UNL8237ExWrite); SetWriteHandler(0x5000,0x7FFF,UNL8237ExWrite);
@ -91,3 +183,13 @@ void UNL8237_Init(CartInfo *info)
AddExState(EXPREGS, 3, 0, "EXPR"); AddExState(EXPREGS, 3, 0, "EXPR");
AddExState(&cmdin, 1, 0, "CMDIN"); 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");
}

View File

@ -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);
}

View File

@ -28,13 +28,12 @@
#include "mmc3.h" #include "mmc3.h"
uint8 MMC3_cmd; uint8 MMC3_cmd;
uint8 *WRAM;
uint8 *CHRRAM;
uint32 CHRRAMSize; uint32 CHRRAMSize;
uint8 DRegBuf[8]; uint8 DRegBuf[8];
uint8 EXPREGS[8]; /* For bootleg games, mostly. */ uint8 EXPREGS[8]; /* For bootleg games, mostly. */
uint8 A000B,A001B;
static uint8 *WRAM;
static uint8 *CHRRAM;
static uint8 A000B,A001B;
#undef IRQCount #undef IRQCount
#undef IRQLatch #undef IRQLatch
@ -102,6 +101,8 @@ void FixMMC3CHR(int V)
cwrap(cbase^0x1400,DRegBuf[3]); cwrap(cbase^0x1400,DRegBuf[3]);
cwrap(cbase^0x1800,DRegBuf[4]); cwrap(cbase^0x1800,DRegBuf[4]);
cwrap(cbase^0x1c00,DRegBuf[5]); cwrap(cbase^0x1c00,DRegBuf[5]);
if(mwrap) mwrap(A000B);
} }
void MMC3RegReset(void) void MMC3RegReset(void)
@ -128,9 +129,7 @@ DECLFW(MMC3_CMDWrite)
{ {
case 0x8000: case 0x8000:
if((V&0x40) != (MMC3_cmd&0x40)) if((V&0x40) != (MMC3_cmd&0x40))
{
FixMMC3PRG(V); FixMMC3PRG(V);
}
if((V&0x80) != (MMC3_cmd&0x80)) if((V&0x80) != (MMC3_cmd&0x80))
FixMMC3CHR(V); FixMMC3CHR(V);
MMC3_cmd = V; MMC3_cmd = V;
@ -226,20 +225,18 @@ static void MMC3_hb_PALStarWarsHack(void)
void GenMMC3Restore(int version) void GenMMC3Restore(int version)
{ {
if(mwrap) mwrap(A000B);
FixMMC3PRG(MMC3_cmd); FixMMC3PRG(MMC3_cmd);
FixMMC3CHR(MMC3_cmd); FixMMC3CHR(MMC3_cmd);
} }
static void GENCWRAP(uint32 A, uint8 V) 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 for 8K CHR-RAM
setchr1(A,V); // Business Wars NEEDS THIS
} }
static void GENPWRAP(uint32 A, uint8 V) 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) static void GENMWRAP(uint8 V)
@ -253,16 +250,6 @@ static void GENNOMWRAP(uint8 V)
A000B=V; A000B=V;
} }
static DECLFW(MBWRAM)
{
WRAM[A-0x6000]=V;
}
static DECLFR(MAWRAM)
{
return(WRAM[A-0x6000]);
}
static DECLFW(MBWRAMMMC6) static DECLFW(MBWRAMMMC6)
{ {
WRAM[A&0x3ff]=V; WRAM[A&0x3ff]=V;
@ -292,9 +279,10 @@ void GenMMC3Power(void)
} }
else else
{ {
FCEU_CheatAddRAM(wrams>>10,0x6000,WRAM); FCEU_CheatAddRAM((wrams&0x1fff)>>10,0x6000,WRAM);
SetReadHandler(0x6000,0x6000+wrams-1,MAWRAM); SetWriteHandler(0x6000,0x6000 + ((wrams - 1) & 0x1fff),CartBW);
SetWriteHandler(0x6000,0x6000+wrams-1,MBWRAM); SetReadHandler(0x6000,0x6000 + ((wrams - 1) & 0x1fff),CartBR);
setprg8r(0x10,0x6000,0);
} }
if(!(mmc3opts&2)) if(!(mmc3opts&2))
FCEU_dwmemset(WRAM,0,wrams); FCEU_dwmemset(WRAM,0,wrams);
@ -313,15 +301,6 @@ static void GenMMC3Close(void)
CHRRAM=WRAM=NULL; 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) void GenMMC3_Init(CartInfo *info, int prg, int chr, int wram, int battery)
{ {
pwrap=GENPWRAP; pwrap=GENPWRAP;
@ -338,7 +317,8 @@ void GenMMC3_Init(CartInfo *info, int prg, int chr, int wram, int battery)
{ {
mmc3opts|=1; mmc3opts|=1;
WRAM=(uint8*)FCEU_gmalloc(wrams); WRAM=(uint8*)FCEU_gmalloc(wrams);
AddExState(WRAM, wrams, 0, "WRAM"); SetupCartPRGMapping(0x10,WRAM,wrams,1);
AddExState(WRAM, wrams, 0, "MMC3WRAM");
} }
if(battery) if(battery)
@ -348,14 +328,6 @@ void GenMMC3_Init(CartInfo *info, int prg, int chr, int wram, int battery)
info->SaveGameLen[0]=wrams; 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); AddExState(MMC3_StateRegs, ~0, 0, 0);
info->Power=GenMMC3Power; info->Power=GenMMC3Power;
@ -370,7 +342,6 @@ void GenMMC3_Init(CartInfo *info, int prg, int chr, int wram, int battery)
GameHBIRQHook = MMC3_hb_PALStarWarsHack; GameHBIRQHook = MMC3_hb_PALStarWarsHack;
else else
GameHBIRQHook=MMC3_hb; GameHBIRQHook=MMC3_hb;
// PPU_hook=MMC3_PPU;
GameStateRestore=GenMMC3Restore; GameStateRestore=GenMMC3Restore;
} }
@ -786,25 +757,15 @@ static void M114PWRAP(uint32 A, uint8 V)
static DECLFW(M114Write) static DECLFW(M114Write)
{ {
if(A==0xE003) switch(A&0xE001)
{ {
IRQa=1; case 0x8001: MMC3_CMDWrite(0xA000,V); break;
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 0xA000: MMC3_CMDWrite(0x8000,(V&0xC0)|(m114_perm[V&7])); cmdin=1; break; case 0xA000: MMC3_CMDWrite(0x8000,(V&0xC0)|(m114_perm[V&7])); cmdin=1; break;
case 0xC000: if(!cmdin) break; case 0xC000: if(!cmdin) break; MMC3_CMDWrite(0x8001,V); cmdin=0; break;
MMC3_CMDWrite(0x8001,V); case 0xA001: IRQLatch=V; break;
cmdin=0; case 0xC001: IRQReload=1; break;
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) void Mapper114_Init(CartInfo *info)
{ {
isRevB=0;
GenMMC3_Init(info, 256, 256, 0, 0); GenMMC3_Init(info, 256, 256, 0, 0);
pwrap=M114PWRAP; pwrap=M114PWRAP;
info->Power=M114Power; info->Power=M114Power;
@ -941,15 +903,6 @@ static void TKSWRAP(uint32 A, uint8 V)
setmirror(MI_0+(V>>7)); 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 ------------------------------ // ---------------------------- Mapper 119 ------------------------------
static void TQWRAP(uint32 A, uint8 V) static void TQWRAP(uint32 A, uint8 V)
@ -1076,41 +1029,6 @@ void Mapper165_Init(CartInfo *info)
AddExState(EXPREGS, 4, 0, "EXPR"); 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 ------------------------------ // ---------------------------- Mapper 191 ------------------------------
static void M191CW(uint32 A, uint8 V) static void M191CW(uint32 A, uint8 V)
@ -1318,191 +1236,12 @@ void Mapper205_Init(CartInfo *info)
AddExState(EXPREGS, 1, 0, "EXPR"); 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 ------------------------------ // ---------------------------- Mapper 245 ------------------------------
static void M245CW(uint32 A, uint8 V) 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; EXPREGS[0]=V;
FixMMC3PRG(MMC3_cmd); FixMMC3PRG(MMC3_cmd);
} }

View File

@ -395,21 +395,19 @@ void LogCDData(){
uint16 A = 0; uint16 A = 0;
uint8 opcode[3] = {0}, memop = 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) { if((j = GetPRGAddress(_PC)) != -1)
opcode[0] = GetMem(_PC); for (i = 0; i < opsize[opcode[0]]; i++) {
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(cdloggerdata[j+i] & 1)continue; //this has been logged so skip if(cdloggerdata[j+i] & 1)continue; //this has been logged so skip
cdloggerdata[j+i] |= 1; cdloggerdata[j+i] |= 1;
cdloggerdata[j+i] |=((_PC+i)>>11)&0x0c; cdloggerdata[j+i] |=((_PC+i)>>11)&0x0c;
@ -418,36 +416,35 @@ void LogCDData(){
if(!(cdloggerdata[j+i] & 2))undefinedcount--; if(!(cdloggerdata[j+i] & 2))undefinedcount--;
} }
//log instruction jumped to in an indirect jump //log instruction jumped to in an indirect jump
if(opcode[0] == 0x6c) indirectnext = 1; else indirectnext = 0; if(opcode[0] == 0x6c) indirectnext = 1; else indirectnext = 0;
switch (optype[opcode[0]]) { switch (optype[opcode[0]]) {
case 0: break; case 0: break;
case 1: case 1:
A = (opcode[1]+_X) & 0xFF; A = (opcode[1]+_X) & 0xFF;
A = GetMem(A) | (GetMem(A+1)<<8); A = GetMem(A) | (GetMem(A+1)<<8);
memop = 0x20; memop = 0x20;
break; break;
case 2: A = opcode[1]; break; case 2: A = opcode[1]; break;
case 3: A = opcode[1] | opcode[2]<<8; break; case 3: A = opcode[1] | opcode[2]<<8; break;
case 4: case 4:
A = (GetMem(opcode[1]) | (GetMem(opcode[1]+1)<<8))+_Y; A = (GetMem(opcode[1]) | (GetMem(opcode[1]+1)<<8))+_Y;
memop = 0x20; memop = 0x20;
break; break;
case 5: A = opcode[1]+_X; break; case 5: A = opcode[1]+_X; break;
case 6: A = (opcode[1] | (opcode[2]<<8))+_Y; break; case 6: A = (opcode[1] | (opcode[2]<<8))+_Y; break;
case 7: A = (opcode[1] | (opcode[2]<<8))+_X; break; case 7: A = (opcode[1] | (opcode[2]<<8))+_X; break;
case 8: A = opcode[1]+_Y; break; case 8: A = opcode[1]+_Y; break;
} }
if((j = GetPRGAddress(A)) != -1) { if((j = GetPRGAddress(A)) != -1) {
if(!(cdloggerdata[j] & 2)) { if(!(cdloggerdata[j] & 2)) {
cdloggerdata[j] |= 2; cdloggerdata[j] |= 2;
cdloggerdata[j] |=(A>>11)&0x0c; cdloggerdata[j] |=(A>>11)&0x0c;
cdloggerdata[j] |= memop; cdloggerdata[j] |= memop;
datacount++; datacount++;
if(!(cdloggerdata[j] & 1))undefinedcount--; if(!(cdloggerdata[j] & 1))undefinedcount--;
}
} }
} }
} }

View File

@ -38,7 +38,7 @@ using namespace std;
void LoadCDLogFile(); void LoadCDLogFile();
void SaveCDLogFileAs(); void SaveCDLogFileAs();
void SaveCDLogFile(); void SaveCDLogFile();
void SaveStrippedRom(); void SaveStrippedRom(int invert);
extern iNES_HEADER head; //defined in ines.c extern iNES_HEADER head; //defined in ines.c
extern uint8 *trainerpoo; extern uint8 *trainerpoo;
@ -169,7 +169,10 @@ MB_OK);
SaveCDLogFile(); SaveCDLogFile();
break; break;
case BTN_CDLOGGER_SAVE_STRIPPED: case BTN_CDLOGGER_SAVE_STRIPPED:
SaveStrippedRom(); SaveStrippedRom(0);
break;
case BTN_CDLOGGER_SAVE_UNUSED:
SaveStrippedRom(1);
break; break;
} }
break; break;
@ -319,7 +322,7 @@ void UpdateCDLogger(){
return; return;
} }
void SaveStrippedRom(){ //this is based off of iNesSave() void SaveStrippedRom(int invert){ //this is based off of iNesSave()
//todo: make this support nsfs //todo: make this support nsfs
const char NESfilter[]="Stripped iNes Rom file (*.NES)\0*.nes\0All Files (*.*)\0*.*\0\0"; 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"; 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); fseek(fp,0x8,SEEK_SET);
for(i = 0;i < ((NSFMaxBank+1)*4096);i++){ for(i = 0;i < ((NSFMaxBank+1)*4096);i++){
if(cdloggerdata[i] & 3)fputc(NSFDATA[i],fp); unsigned char pchar;
else fputc(0,fp); 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++){ for(i = 0;i < head.ROM_size*0x4000;i++){
if(cdloggerdata[i] & 3)fputc(ROM[i],fp); unsigned char pchar;
else fputc(0,fp); 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); //fwrite(ROM,0x4000,head.ROM_size,fp);

View File

@ -1386,7 +1386,7 @@ BEGIN
DEFPUSHBUTTON "&OK",IDOK,67,52,50,14 DEFPUSHBUTTON "&OK",IDOK,67,52,50,14
END 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 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_ACCEPTFILES EXSTYLE WS_EX_ACCEPTFILES
CAPTION "Code Data Logger" CAPTION "Code Data Logger"
@ -1394,12 +1394,12 @@ FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN BEGIN
DEFPUSHBUTTON "Load...",BTN_CDLOGGER_LOAD,7,81,50,14 DEFPUSHBUTTON "Load...",BTN_CDLOGGER_LOAD,7,81,50,14
PUSHBUTTON "Save",BTN_CDLOGGER_SAVE,257,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 PUSHBUTTON "Start",BTN_CDLOGGER_START_PAUSE,129,81,50,14
GROUPBOX "Address Label Logger",65534,3,128,315,79,BS_CENTER GROUPBOX "Address Label Logger",65534,3,136,308,79,BS_CENTER
PUSHBUTTON "Load...",111,7,182,50,14,WS_DISABLED PUSHBUTTON "Load...",111,7,190,50,14,WS_DISABLED
PUSHBUTTON "Start",112,127,181,50,14,WS_DISABLED PUSHBUTTON "Start",112,127,189,50,14,WS_DISABLED
PUSHBUTTON "Save...",113,259,181,50,14,WS_DISABLED PUSHBUTTON "Save...",113,256,189,50,14,WS_DISABLED
LTEXT "4067 - 29.5%",LBL_CDLOGGER_CODECOUNT,38,31,68,11 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 Code",65533,29,20,84,27
GROUPBOX "Bytes Logged as data",65532,117,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 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 "Reset Log",BTN_CDLOGGER_RESET,7,66,50,14
PUSHBUTTON "Save as...",BTN_CDLOGGER_SAVE_AS,257,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 END
PPUVIEW DIALOGEX 44, 38, 355, 246 PPUVIEW DIALOGEX 44, 38, 355, 246
@ -1817,6 +1818,10 @@ BEGIN
BOTTOMMARGIN, 318 BOTTOMMARGIN, 318
END END
"TRACER", DIALOG
BEGIN
END
"ADDBP", DIALOG "ADDBP", DIALOG
BEGIN BEGIN
RIGHTMARGIN, 185 RIGHTMARGIN, 185
@ -1882,6 +1887,7 @@ BEGIN
"CDLOGGER", DIALOG "CDLOGGER", DIALOG
BEGIN BEGIN
BOTTOMMARGIN, 213
END END
"ARCHIVECHOOSERDIALOG", DIALOG "ARCHIVECHOOSERDIALOG", DIALOG

View File

@ -103,6 +103,7 @@
#define IDC_ROMPATCHER_PATCH_DATA 109 #define IDC_ROMPATCHER_PATCH_DATA 109
#define IDC_ADDBP_MODE_X2 109 #define IDC_ADDBP_MODE_X2 109
#define IDC_ADDBP_MODE_F 109 #define IDC_ADDBP_MODE_F 109
#define BTN_CDLOGGER_SAVE_UNUSED 109
#define IDC_CHEAT_VAL_LT_BY 110 #define IDC_CHEAT_VAL_LT_BY 110
#define MENU_SAVE_STATE 110 #define MENU_SAVE_STATE 110
#define CB_ASK_EXIT 110 #define CB_ASK_EXIT 110

View File

@ -241,6 +241,8 @@
{0x22d6d5bd,4,1}, {0x22d6d5bd,4,1},
{0x6a03d3f3,114,-1}, {0x6a03d3f3,114,-1},
{0x0d98db53,114,-1}, /* Pocahontas */
{0x4e7729ff,114,-1}, /* Super Donkey Kong */
{0x02c41438,176,-1}, /* Xing He Zhan Shi (C) */ {0x02c41438,176,-1}, /* Xing He Zhan Shi (C) */

View File

@ -580,7 +580,7 @@ static BMAPPINGLocal bmap[] = {
{"", 178, Mapper178_Init}, {"", 178, Mapper178_Init},
{"", 180, Mapper180_Init}, {"", 180, Mapper180_Init},
{"", 181, Mapper181_Init}, {"", 181, Mapper181_Init},
{"", 182, Mapper182_Init}, // {"", 182, Mapper182_Init}, // identical to 114
{"", 183, Mapper183_Init}, {"", 183, Mapper183_Init},
{"", 184, Mapper184_Init}, {"", 184, Mapper184_Init},
{"", 185, Mapper185_Init}, {"", 185, Mapper185_Init},
@ -603,9 +603,9 @@ static BMAPPINGLocal bmap[] = {
{"", 209, Mapper209_Init}, {"", 209, Mapper209_Init},
{"", 210, Mapper210_Init}, {"", 210, Mapper210_Init},
{"", 211, Mapper211_Init}, {"", 211, Mapper211_Init},
{"", 215, Mapper215_Init}, {"", 215, UNL8237_Init},
{"", 216, Mapper216_Init}, {"", 216, Mapper216_Init},
{"", 217, Mapper217_Init}, // {"", 217, Mapper217_Init},
{"UNLA9746", 219, UNLA9746_Init}, {"UNLA9746", 219, UNLA9746_Init},
{"OneBus", 220, UNLOneBus_Init}, {"OneBus", 220, UNLOneBus_Init},

View File

@ -418,7 +418,7 @@ void Mapper177_Init(CartInfo *);
void Mapper178_Init(CartInfo *); void Mapper178_Init(CartInfo *);
void Mapper180_Init(CartInfo *); void Mapper180_Init(CartInfo *);
void Mapper181_Init(CartInfo *); void Mapper181_Init(CartInfo *);
void Mapper182_Init(CartInfo *); //void Mapper182_Init(CartInfo *);
void Mapper183_Init(CartInfo *); void Mapper183_Init(CartInfo *);
void Mapper184_Init(CartInfo *); void Mapper184_Init(CartInfo *);
void Mapper185_Init(CartInfo *); void Mapper185_Init(CartInfo *);
@ -440,9 +440,9 @@ void Mapper208_Init(CartInfo *);
void Mapper209_Init(CartInfo *); void Mapper209_Init(CartInfo *);
void Mapper210_Init(CartInfo *); void Mapper210_Init(CartInfo *);
void Mapper211_Init(CartInfo *); void Mapper211_Init(CartInfo *);
void Mapper215_Init(CartInfo *); //void Mapper215_Init(CartInfo *);
void Mapper216_Init(CartInfo *); void Mapper216_Init(CartInfo *);
void Mapper217_Init(CartInfo *); //void Mapper217_Init(CartInfo *);
void Mapper220_Init(CartInfo *); void Mapper220_Init(CartInfo *);
void Mapper222_Init(CartInfo *); void Mapper222_Init(CartInfo *);
void Mapper226_Init(CartInfo *); void Mapper226_Init(CartInfo *);

View File

@ -392,12 +392,12 @@ static BMAPPING bmap[] = {
{ "SMB2J", UNLSMB2J_Init, 0}, { "SMB2J", UNLSMB2J_Init, 0},
{ "AX5705", UNLAX5705_Init, 0}, { "AX5705", UNLAX5705_Init, 0},
{ "CC-21", UNLCC21_Init,0}, { "CC-21", UNLCC21_Init,0},
{ "H2288", UNLH2288_Init,0}, { "H2288", UNLH2288_Init,0},
{ "KOF97", UNLKOF97_Init,0}, { "KOF97", UNLKOF97_Init,0},
{ "SL1632", UNLSL1632_Init,0}, { "SL1632", UNLSL1632_Init,0},
{ "SHERO", UNLSHeroes_Init,0}, { "SHERO", UNLSHeroes_Init,0},
{ "8237", UNL8237_Init,0}, { "8237", UNL8237_Init,0},
{ "8237A", UNL8237A_Init,0},
{ "8157", UNL8157_Init,0}, { "8157", UNL8157_Init,0},
{ "T-262", BMCT262_Init,0}, { "T-262", BMCT262_Init,0},
{ "FK23C", BMCFK23C_Init,0}, { "FK23C", BMCFK23C_Init,0},

View File

@ -108,6 +108,7 @@ void UNLA9746_Init(CartInfo *info);
void UNLSHeroes_Init(CartInfo *info); void UNLSHeroes_Init(CartInfo *info);
void UNLH2288_Init(CartInfo *info); void UNLH2288_Init(CartInfo *info);
void UNL8237_Init(CartInfo *info); void UNL8237_Init(CartInfo *info);
void UNL8237A_Init(CartInfo *info);
void UNL8157_Init(CartInfo *info); void UNL8157_Init(CartInfo *info);
void UNL22211_Init(CartInfo *info); void UNL22211_Init(CartInfo *info);
void UNLTF1201_Init(CartInfo *info); void UNLTF1201_Init(CartInfo *info);

View File

@ -479,7 +479,7 @@ extern int test; test++;
} }
//will probably cause a major speed decrease on low-end systems //will probably cause a major speed decrease on low-end systems
DEBUG( DebugCycle() ); DEBUG( DebugCycle() );
_PI=_P; _PI=_P;
b1=RdMem(_PC); b1=RdMem(_PC);

View File

@ -274,7 +274,6 @@
<ClCompile Include="..\src\boards\bmc70in1.cpp" /> <ClCompile Include="..\src\boards\bmc70in1.cpp" />
<ClCompile Include="..\src\boards\bonza.cpp" /> <ClCompile Include="..\src\boards\bonza.cpp" />
<ClCompile Include="..\src\boards\bs-5.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\datalatch.cpp" />
<ClCompile Include="..\src\boards\deirom.cpp" /> <ClCompile Include="..\src\boards\deirom.cpp" />
<ClCompile Include="..\src\boards\dream.cpp" /> <ClCompile Include="..\src\boards\dream.cpp" />

View File

@ -193,9 +193,6 @@
<ClCompile Include="..\src\boards\bs-5.cpp"> <ClCompile Include="..\src\boards\bs-5.cpp">
<Filter>boards</Filter> <Filter>boards</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\src\boards\copyfami_mmc3.cpp">
<Filter>boards</Filter>
</ClCompile>
<ClCompile Include="..\src\boards\datalatch.cpp"> <ClCompile Include="..\src\boards\datalatch.cpp">
<Filter>boards</Filter> <Filter>boards</Filter>
</ClCompile> </ClCompile>