INES Mapper 091

From NESdev Wiki
Revision as of 20:57, 27 August 2018 by NewRisingSun (talk | contribs) (Rewrite, incorporate original board version)
Jump to navigationJump to search

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:

  • Super Fighter III (original version, unknown publisher)
  • Street Fighter III (title screen hack of previous game, J.Y. Company)
  • Dragon Ball Z Super Butouden 2 (J.Y. Company)
  • Mortal Kombat II (early release, J.Y. Company)

The original Super Fighter III board has selectable mirroring, while the J.Y. Company clone board has hard-wired mirroring. Emulators should use the mirroring bit from the NES header until the mirroring registers are written to, if ever.

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

The original Super Fighter III board uses a more specific address mask than the J.Y. Company clone board to accomodate more registers. All J.Y. Company games written for the clone board however carefully choose their write addresses to work on the original board as well, so emulating the $F007 address mask will run games for both board types.

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

Mask: $F007 (original board), $F003 (J.Y. Company clone board)

  • $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, original board only)

Mask: $F007 (original board), registers do not exist (J.Y. Company clone board)

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

Unknown registers ($6006-$6007, write, original board only)

Mask: $F007 (original board), registers do not exist (J.Y. Company clone board)

These two registers have an unknown meaning. Since they are written to together with registers $7006 and $7007, they might be related to the IRQ counter.

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

Mask: $F007 (original board), $F003 (J.Y. Company clone board)

  • $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: $F007 (original board), $F003 (J.Y. Company clone board)

Value is ignored on both boards.

IRQ Start/Reset ($7007, write)

Mask: $F007 (original board), $F003 (J.Y. Company clone board)

Value is ignored on both boards.

Notes

  • On the clone board, the IRQ is implemented using a simple binary counter clocked by PPU A12, and simply counts 64 unfiltered rises of PPU A12. Emulating this seems to work with the single game released for the original board as well, though given the two unknown registers at $6006 and $6007, is likely not how the board really works.
  • The original 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 will fail some steps.
  • The commonly available ROM image of Super Fighter III is a mapper hack for INES Mapper 197.

See also

  • $6004: Select horizontal mirroring, value ignored