INES Mapper 091: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(Despite Disch's notes, I don't think this is particularly MMC3-shaped anymore.)
m (defaultsort)
 
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[Category:iNES Mappers|091]]
{{DEFAULTSORT:091}}[[Category:iNES Mappers]][[Category:Mappers with fixed-timing scanline IRQs]]
  Here are Disch's original notes: 
iNES Mapper 091 was used by the original release of ''Super Fighter III'' from an unknown publisher, but is more commonly known by a clone board from J.Y. Company.
  ========================
{| class="wikitable"
  = Mapper 091         =
! colspan="3" | INES Mapper 091 submapper table
  ========================
|-
 
! Submapper # !! Board !! Games
 
|-
  Example Games:
| 0 || JY830623C|| ''Street Fighter 3'', ''Mortal Kombat II'', ''Dragon Ball Z 2'', ''Mario & Sonic 2''
  --------------------------
|-
  Street Fighter III
| 0 || YY840238C|| ''1995 Super HIK 4-in-1 (JY-016)'', ''1995 Super HiK 4-in-1 (JY-017)''
  Super Mario & Sonic 2
|-
 
| 1 || EJ-006-1 || ''Super Fighter III''
 
|}
  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 [[iNES Mapper 004|mapper 4]]


It seems likely that this IRQ is actually implemented using a simple binary counter clocked by PPU A12, and it ''doesn't'' count 8 scanlines, but instead counts 32 rises of PPU A12.
Submapper 0 has a PA12-based IRQ counter and hard-wired mirroring; submapper 1 an M2-based IRQ counter and selectable mirroring.


== See also ==
=Banks=
* [http://www.romhacking.net/documents/362/ NES Mapper list] by Disch.
* CPU $8000-$9FFF: 8 KiB switchable PRG-ROM bank
*[http://nesdev.org/mappers.zip Comprehensive NES Mapper Document] by \Firebug\. Information on mapper's initial state is innacurate.
* CPU $A000-$BFFF: 8 KiB switchable PRG-ROM bank
* CPU $C000-$FFFF: 16 KiB PRG-ROM bank, hard-wired to last bank
* PPU $0000-$07FF: 2 KiB switchable CHR-ROM bank
* PPU $0800-$0FFF: 2 KiB switchable CHR-ROM bank
* PPU $1000-$17FF: 2 KiB switchable CHR-ROM bank
* PPU $1800-$1FFF: 2 KiB switchable CHR-ROM bank
 
=Registers=
==CHR-ROM Bank Select ($6000-$6003, write)==
Mask: $F003/$F007 (submapper 0/1)
* $6000: Select 2 KiB CHR-ROM bank at PPU $0000-$07FF
* $6001: Select 2 KiB CHR-ROM bank at PPU $0800-$0FFF
* $6002: Select 2 KiB CHR-ROM bank at PPU $1000-$17FF
* $6003: Select 2 KiB CHR-ROM bank at PPU $1800-$1FFF
 
==Nametable Mirroring Select ($6004-$6005, write, submapper 1 only)==
Mask: $F007
* $6004: Select horizontal mirroring, value ignored
* $6005: Select vertical mirroring, value ignored
 
==IRQ Counter Register ($6006-$6007, write, submapper 1 only)==
Mask: $F007
 
* $6006: Set IRQ Counter LSB
* $6007: Set IRQ Counter MSB
 
==PRG-ROM Bank Select ($7000-$7001, write)==
Mask: $F003/$F007 (submapper 0/1)
* $7000: Select 8 KiB PRG-ROM bank at CPU $8000-$9FFF
* $7001: Select 8 KiB PRG-ROM bank at CPU $A000-$BFFF
 
==IRQ Stop/Acknowledge ($7006, write)==
Mask: $F003 (submapper 0)/$F007 (submapper 1)
 
Value is ignored..
 
==IRQ Start/Reset ($7007, write)==
Mask: $F003/$F007 (submapper 0/1)
 
Value is ignored.
 
==Outer Bank register ($8000-$9FFF, write, submapper 0 only)==
Mask: unknown
A~FEDC BA98 7654 3210
  -------------------
  .... .... .... .PPC
                  ||+- Select outer 512 KiB CHR-ROM bank (CHR A19)
                  ++-- Select outer 128 KiB PRG-ROM bank (PRG A17-A18)
=Notes=
* Submapper 0: the IRQ counter is a binary counter clocked by PPU A12, and simply counts a fixed number of 64 unfiltered rises of PPU A12.
* Submapper 1: the IRQ counter is a binary counter clocked by the M2 signal with a factor of 5/4, meaning counting down by five every fourth M2 cycle.
* Submapper 1's ''Super Fighter III'' runs a hardware test when resetting with Select+Start+B pressed. The test exists in J.Y. Company's hacked versions as well, but was not adjusted for the simpler hardware and thus will fail some tests.
* The commonly available ROM image of ''Super Fighter III'' is a mapper hack for [[INES Mapper 197]].

Latest revision as of 19:33, 24 April 2019

iNES Mapper 091 was used by the original release of Super Fighter III from an unknown publisher, but is more commonly known by a clone board from J.Y. Company.

INES Mapper 091 submapper table
Submapper # Board Games
0 JY830623C Street Fighter 3, Mortal Kombat II, Dragon Ball Z 2, Mario & Sonic 2
0 YY840238C 1995 Super HIK 4-in-1 (JY-016), 1995 Super HiK 4-in-1 (JY-017)
1 EJ-006-1 Super Fighter III

Submapper 0 has a PA12-based IRQ counter and hard-wired mirroring; submapper 1 an M2-based IRQ counter and selectable mirroring.

Banks

  • CPU $8000-$9FFF: 8 KiB switchable PRG-ROM bank
  • CPU $A000-$BFFF: 8 KiB switchable PRG-ROM bank
  • CPU $C000-$FFFF: 16 KiB PRG-ROM bank, hard-wired to last bank
  • PPU $0000-$07FF: 2 KiB switchable CHR-ROM bank
  • PPU $0800-$0FFF: 2 KiB switchable CHR-ROM bank
  • PPU $1000-$17FF: 2 KiB switchable CHR-ROM bank
  • PPU $1800-$1FFF: 2 KiB switchable CHR-ROM bank

Registers

CHR-ROM Bank Select ($6000-$6003, write)

Mask: $F003/$F007 (submapper 0/1)

  • $6000: Select 2 KiB CHR-ROM bank at PPU $0000-$07FF
  • $6001: Select 2 KiB CHR-ROM bank at PPU $0800-$0FFF
  • $6002: Select 2 KiB CHR-ROM bank at PPU $1000-$17FF
  • $6003: Select 2 KiB CHR-ROM bank at PPU $1800-$1FFF

Nametable Mirroring Select ($6004-$6005, write, submapper 1 only)

Mask: $F007

  • $6004: Select horizontal mirroring, value ignored
  • $6005: Select vertical mirroring, value ignored

IRQ Counter Register ($6006-$6007, write, submapper 1 only)

Mask: $F007

  • $6006: Set IRQ Counter LSB
  • $6007: Set IRQ Counter MSB

PRG-ROM Bank Select ($7000-$7001, write)

Mask: $F003/$F007 (submapper 0/1)

  • $7000: Select 8 KiB PRG-ROM bank at CPU $8000-$9FFF
  • $7001: Select 8 KiB PRG-ROM bank at CPU $A000-$BFFF

IRQ Stop/Acknowledge ($7006, write)

Mask: $F003 (submapper 0)/$F007 (submapper 1)

Value is ignored..

IRQ Start/Reset ($7007, write)

Mask: $F003/$F007 (submapper 0/1)

Value is ignored.

Outer Bank register ($8000-$9FFF, write, submapper 0 only)

Mask: unknown

A~FEDC BA98 7654 3210
  -------------------
  .... .... .... .PPC
                  ||+- Select outer 512 KiB CHR-ROM bank (CHR A19)
                  ++-- Select outer 128 KiB PRG-ROM bank (PRG A17-A18)

Notes

  • Submapper 0: the IRQ counter is a binary counter clocked by PPU A12, and simply counts a fixed number of 64 unfiltered rises of PPU A12.
  • Submapper 1: the IRQ counter is a binary counter clocked by the M2 signal with a factor of 5/4, meaning counting down by five every fourth M2 cycle.
  • Submapper 1's Super Fighter III runs a hardware test when resetting with Select+Start+B pressed. The test exists in J.Y. Company's hacked versions as well, but was not adjusted for the simpler hardware and thus will fail some tests.
  • The commonly available ROM image of Super Fighter III is a mapper hack for INES Mapper 197.