Update VRC4 with submapper
fixes 2-in-1 - Yuu Yuu + Dragonball Z
This commit is contained in:
parent
17d171148b
commit
0d0e6b5be4
|
@ -83,6 +83,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
||||||
int latch6k_value;
|
int latch6k_value;
|
||||||
|
|
||||||
bool isPirate = false;
|
bool isPirate = false;
|
||||||
|
// needed for 2-in-1 - Yuu Yuu + Dragonball Z [p1][!]
|
||||||
|
bool _isBMC = false;
|
||||||
|
|
||||||
public override void Dispose()
|
public override void Dispose()
|
||||||
{
|
{
|
||||||
|
@ -114,19 +116,22 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
||||||
|
|
||||||
void SyncPRG()
|
void SyncPRG()
|
||||||
{
|
{
|
||||||
if (prg_mode)
|
if (!_isBMC)
|
||||||
{
|
{
|
||||||
prg_banks_8k[0] = 0xFE;
|
if (prg_mode)
|
||||||
prg_banks_8k[1] = (byte)(prg_bank_reg_8k[1]);
|
{
|
||||||
prg_banks_8k[2] = (byte)(prg_bank_reg_8k[0]);
|
prg_banks_8k[0] = 0xFE;
|
||||||
prg_banks_8k[3] = 0xFF;
|
prg_banks_8k[1] = (byte)(prg_bank_reg_8k[1]);
|
||||||
}
|
prg_banks_8k[2] = (byte)(prg_bank_reg_8k[0]);
|
||||||
else
|
prg_banks_8k[3] = 0xFF;
|
||||||
{
|
}
|
||||||
prg_banks_8k[0] = (byte)(prg_bank_reg_8k[0]);
|
else
|
||||||
prg_banks_8k[1] = (byte)(prg_bank_reg_8k[1]);
|
{
|
||||||
prg_banks_8k[2] = 0xFE;
|
prg_banks_8k[0] = (byte)(prg_bank_reg_8k[0]);
|
||||||
prg_banks_8k[3] = 0xFF;
|
prg_banks_8k[1] = (byte)(prg_bank_reg_8k[1]);
|
||||||
|
prg_banks_8k[2] = 0xFE;
|
||||||
|
prg_banks_8k[3] = 0xFF;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -172,6 +177,16 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
||||||
remap = AddrA0A1_A2A3;
|
remap = AddrA0A1_A2A3;
|
||||||
Cart.wram_size = 8;
|
Cart.wram_size = 8;
|
||||||
break;
|
break;
|
||||||
|
case "MAPPER023_BMC":
|
||||||
|
type = 4;
|
||||||
|
remap = AddrA0A1_A2A3;
|
||||||
|
Cart.wram_size = 8;
|
||||||
|
_isBMC = true;
|
||||||
|
prg_banks_8k[0] = (byte)(prg_bank_reg_8k[0]);
|
||||||
|
prg_banks_8k[1] = (byte)(prg_bank_reg_8k[1]);
|
||||||
|
prg_banks_8k[2] = 0xFE;
|
||||||
|
prg_banks_8k[3] = 0xFF;
|
||||||
|
break;
|
||||||
case "MAPPER025":
|
case "MAPPER025":
|
||||||
type = 4;
|
type = 4;
|
||||||
remap = AddrA3A2_A1A0;
|
remap = AddrA3A2_A1A0;
|
||||||
|
@ -293,6 +308,31 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
||||||
if ((addr & 1) == 1 && extrabig_chr)
|
if ((addr & 1) == 1 && extrabig_chr)
|
||||||
chr_value = value & 0x1F;
|
chr_value = value & 0x1F;
|
||||||
|
|
||||||
|
// special instructions for BMC 2 in 1
|
||||||
|
if (_isBMC)
|
||||||
|
{
|
||||||
|
if (addr < 0x1000)
|
||||||
|
{
|
||||||
|
prg_banks_8k[prg_mode?1:0] = (byte)((prg_banks_8k[0] & 0x20) | (value & 0x1F));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (addr >= 0x2000 && addr < 0x3000)
|
||||||
|
{
|
||||||
|
prg_banks_8k[1] = (byte)((prg_banks_8k[0] & 0x20) | (value & 0x1F));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (addr >= 0x3000 && addr < 0x7000)
|
||||||
|
{
|
||||||
|
value = (byte)(value << 2 & 0x20);
|
||||||
|
|
||||||
|
prg_banks_8k[0] = (byte)(value | (prg_banks_8k[0] & 0x1F));
|
||||||
|
prg_banks_8k[1] = (byte)(value | (prg_banks_8k[1] & 0x1F));
|
||||||
|
prg_banks_8k[2] = (byte)(value | (prg_banks_8k[2] & 0x1F));
|
||||||
|
prg_banks_8k[3] = (byte)(value | (prg_banks_8k[3] & 0x1F));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (addr)
|
switch (addr)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in New Issue