Start Mapper 197 (based on MMC3) and sort out the use of this vs Mapper 91.
This commit is contained in:
parent
6a63f2f197
commit
ea8d47bcc0
|
@ -200,6 +200,7 @@
|
||||||
<Compile Include="Consoles\Nintendo\NES\Boards\MMC3_family\Mapper191.cs" />
|
<Compile Include="Consoles\Nintendo\NES\Boards\MMC3_family\Mapper191.cs" />
|
||||||
<Compile Include="Consoles\Nintendo\NES\Boards\MMC3_family\Mapper192.cs" />
|
<Compile Include="Consoles\Nintendo\NES\Boards\MMC3_family\Mapper192.cs" />
|
||||||
<Compile Include="Consoles\Nintendo\NES\Boards\MMC3_family\Mapper194.cs" />
|
<Compile Include="Consoles\Nintendo\NES\Boards\MMC3_family\Mapper194.cs" />
|
||||||
|
<Compile Include="Consoles\Nintendo\NES\Boards\MMC3_family\Mapper197.cs" />
|
||||||
<Compile Include="Consoles\Nintendo\NES\Boards\MMC3_family\Mapper205.cs" />
|
<Compile Include="Consoles\Nintendo\NES\Boards\MMC3_family\Mapper205.cs" />
|
||||||
<Compile Include="Consoles\Nintendo\NES\Boards\MMC3_family\Mapper245.cs" />
|
<Compile Include="Consoles\Nintendo\NES\Boards\MMC3_family\Mapper245.cs" />
|
||||||
<Compile Include="Consoles\Nintendo\NES\Boards\MMC3_family\MMC3.cs" />
|
<Compile Include="Consoles\Nintendo\NES\Boards\MMC3_family\MMC3.cs" />
|
||||||
|
|
|
@ -8,70 +8,8 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
class Mapper91 : NES.NESBoardBase
|
class Mapper91 : NES.NESBoardBase
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Here are Disch's original notes:
|
*Note: Street Fighter III (Unl) is actually mapper 197. However variations such as Street Fighter III (9 Fighter) and Mari Street Fighter III use this mapper
|
||||||
========================
|
//http://wiki.nesdev.com/w/index.php/INES_Mapper_091
|
||||||
= Mapper 091 =
|
|
||||||
========================
|
|
||||||
|
|
||||||
|
|
||||||
Example Game:
|
|
||||||
--------------------------
|
|
||||||
Street Fighter 3
|
|
||||||
|
|
||||||
|
|
||||||
Notes:
|
|
||||||
---------------------------
|
|
||||||
Regs exist at $6000-7FFF, so this mapper has no SRAM.
|
|
||||||
|
|
||||||
|
|
||||||
Registers:
|
|
||||||
---------------------------
|
|
||||||
|
|
||||||
Range,Mask: $6000-7FFF, $7003
|
|
||||||
|
|
||||||
$6000-6003: CHR Regs
|
|
||||||
$7000-7001: [.... PPPP] PRG Regs
|
|
||||||
|
|
||||||
$7002 [.... ....] IRQ Stop
|
|
||||||
$7003 [.... ....] IRQ Start
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CHR Setup:
|
|
||||||
---------------------------
|
|
||||||
|
|
||||||
$0000 $0400 $0800 $0C00 $1000 $1400 $1800 $1C00
|
|
||||||
+---------------+---------------+---------------+---------------+
|
|
||||||
| $6000 | $6001 | $6002 | $6003 |
|
|
||||||
+---------------+---------------+---------------+---------------+
|
|
||||||
|
|
||||||
PRG Setup:
|
|
||||||
---------------------------
|
|
||||||
|
|
||||||
$8000 $A000 $C000 $E000
|
|
||||||
+-------+-------+-------+-------+
|
|
||||||
| $7000 | $7001 | { -2} | { -1} |
|
|
||||||
+-------+-------+-------+-------+
|
|
||||||
|
|
||||||
|
|
||||||
IRQs:
|
|
||||||
---------------------------
|
|
||||||
|
|
||||||
IRQs on this mapper seem to behave exactly like MMC3 -- except it's fixed so that it will only fire after 8
|
|
||||||
scanlines. This is easily emulatable by using MMC3 logic.
|
|
||||||
|
|
||||||
Write to $7002/$7003 can translate directly to write(s) to the following MMC3 registers:
|
|
||||||
|
|
||||||
on $7002 write:
|
|
||||||
a) write to $E000
|
|
||||||
|
|
||||||
on $7003 write:
|
|
||||||
a) write $07 to $C000
|
|
||||||
b) write to $C001
|
|
||||||
c) write to $E001
|
|
||||||
|
|
||||||
|
|
||||||
For details on MMC3 IRQ operation, see mapper 004
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ByteBuffer chr_regs_2k = new ByteBuffer(4);
|
ByteBuffer chr_regs_2k = new ByteBuffer(4);
|
||||||
|
@ -84,7 +22,6 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
switch (Cart.board_type)
|
switch (Cart.board_type)
|
||||||
{
|
{
|
||||||
case "MAPPER091":
|
case "MAPPER091":
|
||||||
case "MAPPER197": //GoodNES reports 197 instead of 91
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
|
@ -164,7 +101,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
{
|
{
|
||||||
if (addr < 0x2000)
|
if (addr < 0x2000)
|
||||||
{
|
{
|
||||||
int bank_2k = (addr >> 11);
|
int bank_2k = (addr >> 11) - 1;
|
||||||
bank_2k = chr_regs_2k[bank_2k];
|
bank_2k = chr_regs_2k[bank_2k];
|
||||||
bank_2k &= chr_bank_mask_2k;
|
bank_2k &= chr_bank_mask_2k;
|
||||||
return VROM[(bank_2k * 0x800) + addr];
|
return VROM[(bank_2k * 0x800) + addr];
|
||||||
|
|
|
@ -114,7 +114,6 @@ sha1:6DF9AECF5787C0833B0F05A9A83D0E58A6153977 Rumblestation 15-in-1 (Unl) NES
|
||||||
sha1:E4BFD5AB3C3649DBD36B9A7280CF431641BCBCEC Peek-A-Boo Poker (Unl) NES board=NES-CNROM;PRG=32;CHR=24;WRAM=0
|
sha1:E4BFD5AB3C3649DBD36B9A7280CF431641BCBCEC Peek-A-Boo Poker (Unl) NES board=NES-CNROM;PRG=32;CHR=24;WRAM=0
|
||||||
sha1:39294394A0631708F58397371CE14075AE1FB7E6 Peek-A-Boo Poker (Panesian) NES board=NES-CNROM;PRG=32;CHR=64;WRAM=0
|
sha1:39294394A0631708F58397371CE14075AE1FB7E6 Peek-A-Boo Poker (Panesian) NES board=NES-CNROM;PRG=32;CHR=64;WRAM=0
|
||||||
sha1:C87E7E6A68DD9C7E24652CD2C7D390A14E8ADF04 Lagrange Point NES board=KONAMI-VRC-7;PRG=512;CHR=0;WRAM=8;PRAM=8;PCB=352402
|
sha1:C87E7E6A68DD9C7E24652CD2C7D390A14E8ADF04 Lagrange Point NES board=KONAMI-VRC-7;PRG=512;CHR=0;WRAM=8;PRAM=8;PCB=352402
|
||||||
sha1:E05B0FCA7EA2F6433FA06DD204F7265417B91BBE Street Fighter III NES board=MAPPER091;PRG=128;CHR=512
|
|
||||||
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
|
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
|
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue