Mapper 82 complete
This commit is contained in:
parent
868bcc8502
commit
ff86bc5101
|
@ -8,7 +8,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
|
|
||||||
//Minelvaton Saga
|
//Minelvaton Saga
|
||||||
//Taito Grand Prix - Eikou heno License
|
//Taito Grand Prix - Eikou heno License
|
||||||
|
//Kyuukyoku Harikiri Stadium
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Registers:
|
* Registers:
|
||||||
|
@ -152,4 +152,21 @@ PRG Setup:
|
||||||
else return base.ReadPPU(addr);
|
else return base.ReadPPU(addr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
CHR Setup:
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
$0000 $0400 $0800 $0C00 $1000 $1400 $1800 $1C00
|
||||||
|
+---------------+---------------+-------+-------+-------+-------+
|
||||||
|
CHR Mode 0: | <$7EF0> | <$7EF1> | $7EF2 | $7EF3 | $7EF4 | $7EF5 |
|
||||||
|
+---------------+---------------+---------------+---------------+
|
||||||
|
CHR Mode 1: | $7EF2 | $7EF3 | $7EF4 | $7EF5 | <$7EF0> | <$7EF1> |
|
||||||
|
+-------+-------+-------+-------+---------------+---------------+
|
||||||
|
*/
|
|
@ -14,7 +14,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
* Example Games:
|
* Example Games:
|
||||||
--------------------------
|
--------------------------
|
||||||
SD Keiji - Blader
|
SD Keiji - Blader
|
||||||
Kyuukyoku Harikiri Stadium
|
|
||||||
|
|
||||||
|
|
||||||
Notes:
|
Notes:
|
||||||
|
@ -92,7 +92,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
}
|
}
|
||||||
|
|
||||||
SetMirrorType(EMirrorType.Vertical);
|
SetMirrorType(EMirrorType.Vertical);
|
||||||
chr_bank_mask = Cart.chr_size / 2 - 1;
|
chr_bank_mask = Cart.chr_size / 1 - 1;
|
||||||
prg_bank_mask = Cart.prg_size / 8 - 1;
|
prg_bank_mask = Cart.prg_size / 8 - 1;
|
||||||
prg_regs_8k[3] = 0xFF;
|
prg_regs_8k[3] = 0xFF;
|
||||||
return true;
|
return true;
|
||||||
|
@ -103,23 +103,69 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
switch (addr)
|
switch (addr)
|
||||||
{
|
{
|
||||||
case 0x1EF0:
|
case 0x1EF0:
|
||||||
chr_regs_1k[0] = value;
|
if (ChrMode)
|
||||||
|
{
|
||||||
|
chr_regs_1k[4] = (byte)(value / 2 * 2);
|
||||||
|
chr_regs_1k[5] = (byte)(value / 2 * 2 + 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
chr_regs_1k[0] = (byte)(value / 2 * 2);
|
||||||
|
chr_regs_1k[1] = (byte)(value / 2 * 2 + 1);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x1EF1:
|
case 0x1EF1:
|
||||||
chr_regs_1k[1] = value;
|
if (ChrMode)
|
||||||
|
{
|
||||||
|
chr_regs_1k[6] = (byte)(value / 2 * 2);
|
||||||
|
chr_regs_1k[7] = (byte)(value / 2 * 2 + 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
chr_regs_1k[2] = (byte)(value / 2 * 2);
|
||||||
|
chr_regs_1k[3] = (byte)(value / 2 * 2 + 1);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x1EF2:
|
case 0x1EF2:
|
||||||
chr_regs_1k[2] = value;
|
if (ChrMode)
|
||||||
|
{
|
||||||
|
chr_regs_1k[0] = value;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
chr_regs_1k[4] = value;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x1EF3:
|
case 0x1EF3:
|
||||||
chr_regs_1k[3] = value;
|
if (ChrMode)
|
||||||
|
{
|
||||||
|
chr_regs_1k[1] = value;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
chr_regs_1k[5] = value;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x1EF4:
|
case 0x1EF4:
|
||||||
chr_regs_1k[4] = value;
|
if (ChrMode)
|
||||||
|
{
|
||||||
|
chr_regs_1k[2] = value;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
chr_regs_1k[6] = value;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0X1EF5:
|
case 0X1EF5:
|
||||||
chr_regs_1k[5] = value;
|
if (ChrMode)
|
||||||
|
{
|
||||||
|
chr_regs_1k[3] = value;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
chr_regs_1k[7] = value;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x1EF6:
|
case 0x1EF6:
|
||||||
|
@ -137,7 +183,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
prg_regs_8k[1] = (byte)(value >> 2);
|
prg_regs_8k[1] = (byte)(value >> 2);
|
||||||
break;
|
break;
|
||||||
case 0x1EFC:
|
case 0x1EFC:
|
||||||
prg_regs_8k[1] = (byte)(value >> 2);
|
prg_regs_8k[2] = (byte)(value >> 2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -154,12 +200,16 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
|
|
||||||
public override byte ReadPPU(int addr)
|
public override byte ReadPPU(int addr)
|
||||||
{
|
{
|
||||||
int bank_2k = addr >> 11;
|
if (addr < 0x2000)
|
||||||
int ofs = addr & ((1 << 11) - 1);
|
{
|
||||||
bank_2k = chr_regs_1k[bank_2k];
|
int bank_1k = addr >> 10;
|
||||||
bank_2k &= chr_bank_mask;
|
int ofs = addr & ((1 << 10) - 1);
|
||||||
addr = (bank_2k << 11) | ofs;
|
bank_1k = chr_regs_1k[bank_1k];
|
||||||
return VROM[addr];
|
bank_1k &= chr_bank_mask;
|
||||||
|
addr = (bank_1k << 10) | ofs;
|
||||||
|
return VROM[addr];
|
||||||
|
}
|
||||||
|
else return base.ReadPPU(addr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue