support mmc5 reg $5130

This commit is contained in:
zeromus 2009-06-11 06:27:37 +00:00
parent 0de4ad663e
commit 9dcb88a888
4 changed files with 12 additions and 4 deletions

View File

@ -50,7 +50,7 @@ static INLINE void MMC5BGVROM_BANK8(uint32 V) {if(CHRptr[0]){V&=CHRmask8[0];MMC5
static uint8 PRGBanks[4];
static uint8 WRAMPage;
static uint8 CHRBanksA[8], CHRBanksB[4];
static uint16 CHRBanksA[8], CHRBanksB[4];
static uint8 WRAMMaskEnable[2];
uint8 mmc5ABMode; /* A=0, B=1 */
@ -352,7 +352,8 @@ static DECLFW(Mapper5_write)
if(A>=0x5120&&A<=0x5127)
{
mmc5ABMode = 0;
CHRBanksA[A&7]=V;
CHRBanksA[A&7]=V | ((MMC50x5130&0x3)<<8); //if we had a test case for this then we could test this, but it hasnt been verified
//CHRBanksA[A&7]=V;
MMC5CHRA();
}
else switch(A)
@ -416,6 +417,8 @@ static DECLFW(Mapper5_write)
}
ATFill=V;
break;
case 0x5130: MMC50x5130=V;break;
case 0x5200: MMC5HackSPMode=V;break;
case 0x5201: MMC5HackSPScroll=(V>>3)&0x1F;break;
case 0x5202: MMC5HackSPPage=V&0x3F;break;
@ -804,8 +807,8 @@ static void GenMMC5Reset(void)
static SFORMAT MMC5_StateRegs[]={
{ PRGBanks, 4, "PRGB"},
{ CHRBanksA, 8, "CHRA"},
{ CHRBanksB, 4, "CHRB"},
{ CHRBanksA, 16, "CHRA"},
{ CHRBanksB, 8, "CHRB"},
{ &WRAMPage, 1, "WRMP"},
{ WRAMMaskEnable, 2, "WRME"},
{ &mmc5ABMode, 1, "ABMD"},
@ -844,6 +847,7 @@ static void GenMMC5_Init(CartInfo *info, int wsize, int battery)
AddExState(&MMC5HackSPMode, 1, 0, "SPLM");
AddExState(&MMC5HackSPScroll, 1, 0, "SPLS");
AddExState(&MMC5HackSPPage, 1, 0, "SPLP");
AddExState(&MMC50x5130, 1, 0, "5130");
MMC5WRAMsize=wsize/8;
BuildWRAMSizeTable();

View File

@ -38,6 +38,7 @@ extern int MMC5Hack;
extern uint8 *MMC5HackVROMPTR;
extern uint8 MMC5HackCHRMode;
extern uint8 MMC5HackSPMode;
extern uint8 MMC50x5130;
extern uint8 MMC5HackSPScroll;
extern uint8 MMC5HackSPPage;

View File

@ -261,6 +261,7 @@ uint8 *MMC5HackExNTARAMPtr=0;
uint8 *MMC5HackVROMPTR=0;
uint8 MMC5HackCHRMode=0;
uint8 MMC5HackSPMode=0;
uint8 MMC50x5130=0;
uint8 MMC5HackSPScroll=0;
uint8 MMC5HackSPPage=0;
@ -320,6 +321,7 @@ uint8* FCEUPPU_GetCHR(uint32 vadr, uint32 refreshaddr) {
if(MMC5HackCHRMode==1) {
uint8 *C = MMC5HackVROMPTR;
C += (((MMC5HackExNTARAMPtr[refreshaddr & 0x3ff]) & 0x3f & MMC5HackVROMMask) << 12) + (vadr & 0xfff);
C += (MMC50x5130&0x3)<<18; //11-jun-2009 for kuja_killer
return C;
} else {
return MMC5BGVRAMADR(vadr);

View File

@ -76,6 +76,7 @@ pshift[1]<<=8;
C = MMC5HackVROMPTR;
C += (((MMC5HackExNTARAMPtr[RefreshAddr & 0x3ff]) & 0x3f &
MMC5HackVROMMask) << 12) + (vadr & 0xfff);
C += (MMC50x5130&0x3)<<18; //11-jun-2009 for kuja_killer
#elif defined(PPUT_MMC5)
C=MMC5BGVRAMADR(vadr);
#else