NES 2.0 submappers: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(→‎iNES Mapper 232: formatting, games)
m (formatting cleanup)
Line 6: Line 6:
'''This document is a living specification. Proposals for new submappers should be made at:''' [[NES 2.0 submappers\Proposals|Proposals]].
'''This document is a living specification. Proposals for new submappers should be made at:''' [[NES 2.0 submappers\Proposals|Proposals]].


== 001: MMC1 ==
== [[iNES Mapper 001|001]]: [[MMC1]] ==
Most [[SxROM|MMC1 boards]] wire all PRG ROM address lines A14-A18 to the mapper's output in a fairly predictable manner.
Most [[SxROM|MMC1 boards]] wire all PRG ROM address lines A14-A18 to the mapper's output in a fairly predictable manner.


Line 22: Line 22:
* ''Dragon Warrior III''
* ''Dragon Warrior III''
* ''Dragon Warrior IV'' / ''Dragon Quest IV''
* ''Dragon Warrior IV'' / ''Dragon Quest IV''
* ''Ninjara Hoi!'
* ''Ninjara Hoi!''


=== 001: 2 ===
=== 001: 2 ===
Line 42: Line 42:
* Many games: [http://bootgod.dyndns.org:7777/search.php?keywords=serom&kwtype=pcb SEROM], [http://bootgod.dyndns.org:7777/search.php?keywords=SHROM&kwtype=pcb SHROM], [http://bootgod.dyndns.org:7777/search.php?keywords=SH1ROM&kwtype=pcb SH1ROM]
* Many games: [http://bootgod.dyndns.org:7777/search.php?keywords=serom&kwtype=pcb SEROM], [http://bootgod.dyndns.org:7777/search.php?keywords=SHROM&kwtype=pcb SHROM], [http://bootgod.dyndns.org:7777/search.php?keywords=SH1ROM&kwtype=pcb SH1ROM]


== [[iNES Mapper 032|032: Irem G101]] ==
== [[iNES Mapper 032|032]]: Irem G101 ==
[http://bootgod.dyndns.org:7777/profile.php?id=3800 Major League] requires hardwired one-screen mirroring and entirely ignores writes to $9000.
A variation of this mapper requires hardwired one-screen mirroring and entirely ignores writes to $9000.


=== 032: 0 ===
=== 032: 0 ===
Line 50: Line 50:
=== 032: 1 ===
=== 032: 1 ===
CIRAM A10 is tied high (fixed one-screen mirroring) and PRG banking style is fixed as 8+8+16F
CIRAM A10 is tied high (fixed one-screen mirroring) and PRG banking style is fixed as 8+8+16F
* ''Major League''
* ''[http://bootgod.dyndns.org:7777/profile.php?id=3800 Major League]''


== 034: [[iNES Mapper 034]] ==
== [[iNES Mapper 034|034]]: [[BNROM]] / [[NINA-001]] ==
This iNES mapper unfortunately combines the unrelated [[BNROM]] and [[NINA-001]] mappers.
This iNES mapper unfortunately combines the unrelated [[BNROM]] and [[NINA-001]] mappers.


Line 64: Line 64:
* ''(no extant games require this)''
* ''(no extant games require this)''


== [[iNES Mapper 068|068]]: [[Sunsoft 4]] ==
== [[iNES Mapper 068|068]]: Sunsoft 4 ==
In addition to its normal function, the Sunsoft 4 IC was used in [http://bootgod.dyndns.org:7777/profile.php?id=2265 ''Nantettatte!! Baseball''] which requires different PRG behavior:
In addition to its normal function, the Sunsoft 4 IC was used in [http://bootgod.dyndns.org:7777/profile.php?id=2265 ''Nantettatte!! Baseball''] which requires different PRG behavior:


Line 74: Line 74:
* ''Nantettatte!! Baseball''
* ''Nantettatte!! Baseball''


== [[iNES Mapper 071|071]] ==
== [[iNES Mapper 071|071]]: Codemasters ==
Some games use this with 1-screen [[mirroring]], where the mapper's mirroring control bit is wired directly to CIRAM A10. Others have hardwired horizontal or vertical mirroring.
Some games use this with 1-screen [[mirroring]], where the mapper's mirroring control bit is wired directly to CIRAM A10. Others have hardwired horizontal or vertical mirroring.


Line 86: Line 86:
* ''[http://bootgod.dyndns.org:7777/profile.php?id=733 Fire Hawk]''
* ''[http://bootgod.dyndns.org:7777/profile.php?id=733 Fire Hawk]''


== [[iNES Mapper 078|078]] ==
== [[iNES Mapper 078|078]]: Cosmo Carrier / Holy Diver ==
This mapper unfortunately combines two games with incompatible mirroring control.
This mapper unfortunately combines two games with incompatible mirroring control.


Line 105: Line 105:
* ''[http://bootgod.dyndns.org:7777/profile.php?id=4038 Holy Diver]''
* ''[http://bootgod.dyndns.org:7777/profile.php?id=4038 Holy Diver]''


== 210: Namco 175 and 340 ==
== [[iNES Mapper 210|210]]: Namco 175 and 340 ==
[[iNES Mapper 210|Mapper 210]] doesn't distinguish between the 175's hardwired mirroring and 340's 1/H/V mirroring.
[[iNES Mapper 210|Mapper 210]] doesn't distinguish between the 175's hardwired mirroring and 340's 1/H/V mirroring.


Also, previous confusion and compatibility code used by Namco when they were developing games means that many 175- and 340- using games are incorrectly tagged as [[iNES Mapper 19|mapper 19]].
Also, previous confusion and compatibility code used by Namco when they were developing games means that many 175- and 340- using games are incorrectly tagged as [[iNES Mapper 19|mapper 19]].


== 210: 0 ==
=== 210: 0 ===
No advisory statement is made (use runtime heuristics)
No advisory statement is made (use runtime heuristics)


== 210: 1 ==
=== 210: 1 ===
Namco 175. Hardwired mirroring, no IRQ.
Namco 175. Hardwired mirroring, no IRQ.
* ''See [[iNES Mapper 210|mapper 210]] for a list of games.'''
* ''See [[iNES Mapper 210|mapper 210]] for a list of games.''


== 210: 2 ==
=== 210: 2 ===
Namco 340. 1/H/V mirroring, no IRQ, no internal or external RAM.
Namco 340. 1/H/V mirroring, no IRQ, no internal or external RAM.
* ''See [[iNES Mapper 210|mapper 210]] for a list of games.'''
* ''See [[iNES Mapper 210|mapper 210]] for a list of games.''


== [[iNES Mapper 232|232]] ==
== [[iNES Mapper 232|232]]: Quattro ==
Similar to #71 above, with a separate register controlling which 64 KiB outer bank of the PRG ROM is used. This is used for the [http://bootgod.dyndns.org:7777/search.php?keywords=quattro&kwtype=game Quattro multicarts].
Similar to #71 above, with a separate register controlling which 64 KiB outer bank of the PRG ROM is used. This is used for the [http://bootgod.dyndns.org:7777/search.php?keywords=quattro&kwtype=game Quattro multicarts].


The Aladdin Deck Enhancer version of these multicarts used a different banking scheme.
The Aladdin Deck Enhancer version of these multicarts used a different banking scheme.


== 323: 0 ==
=== 323: 0 ===
0: Normal
0: Normal


== 232: 1 ==
=== 232: 1 ===
Aladdin Deck Enhancer variation. Swap the bits of the outer bank number.
Aladdin Deck Enhancer variation. Swap the bits of the outer bank number.
* ''[http://bootgod.dyndns.org:7777/profile.php?id=553 Quattro Adventure] (Aladdin Deck Enhancer)''
* ''[http://bootgod.dyndns.org:7777/profile.php?id=553 Quattro Adventure] (Aladdin Deck Enhancer)''

Revision as of 17:11, 7 August 2015

Submapper is a term used in the NES 2.0 header for 4-bit codes designating functionally distinct variants of iNES mappers that cannot be distinguished by the memory size fields alone. Most emulators using iNES format distinguish these using CRC, SHA-1, or other hashes of the PRG ROM and CHR ROM, but this works only for games published prior to 1997, not for fan translations or ROM hacks, and not for new games on the same mapper.

Submapper 0 represents the default iNES behavour, so that backward compatibility is maintained.

This document is a living specification. Proposals for new submappers should be made at: Proposals.

001: MMC1

Most MMC1 boards wire all PRG ROM address lines A14-A18 to the mapper's output in a fairly predictable manner.

Boards with CHR RAM wire PRG ROM A18 and the PRG RAM address lines to otherwise unused CHR bank outputs.

Boards designed to take a 32 KiB PRG ROM, either connect PRG ROM A14 to the MMC1's output (SIROM), or directly to CPU A14 (SEROM, SHROM, SH1ROM).

TO DO: which of these games are actually incompatible with the default mapper? Are all of these traditionally CRC cases?

001: 0

Normal behavior. The PRG ROM size and PRG RAM size determine the function of bits.

001: 1

SUROM. (Can also be identified by PRG ROM and PRG RAM size.)

  • Dragon Warrior III
  • Dragon Warrior IV / Dragon Quest IV
  • Ninjara Hoi!

001: 2

SOROM. (Can also be identified by PRG ROM and PRG RAM size.)

  • Genghis Khan / Aoki Ookami to Shiroki Mejika: Genghis Khan
  • Nobunaga's Ambition / Nobunaga no Yabou: Zenkokuban
  • Romance of the Three Kingdoms
  • Sangokushi

001: 3

Deprecated. Use iNES Mapper 155 instead.

001: 4

SSROM. (Can also be identified by PRG ROM and PRG RAM size.)

001: 5

SEROM, SHROM, SH1ROM style: PRG ROM A14 connected directly to CPU A14 (and MMC1 A14 input) instead of MMC1 A14 output. Ignore MMC1 A14, ignore LSB of PRG bank, weird behavior of switchable PRG bank if PRG > 32KiB.

032: Irem G101

A variation of this mapper requires hardwired one-screen mirroring and entirely ignores writes to $9000.

032: 0

Normal (H/V mapper-controlled mirroring)

032: 1

CIRAM A10 is tied high (fixed one-screen mirroring) and PRG banking style is fixed as 8+8+16F

034: BNROM / NINA-001

This iNES mapper unfortunately combines the unrelated BNROM and NINA-001 mappers.

034: 0

Normal. Both mappers can be implemented simultaneously without incompatibility.

Because the NINA-001 supports CHR banking and BNROM does not, the presence of more than 8 KiB of CHR implies NINA-001, and could be used to select between two exclusive mapper implementations.

034: 1

NINA-001 only.

  • (no extant games require this)

068: Sunsoft 4

In addition to its normal function, the Sunsoft 4 IC was used in Nantettatte!! Baseball which requires different PRG behavior:

068: 0

0: Normal (max 256KiB PRG)

068: 1

1: Sunsoft Dual Cartridge System a.k.a. NTB-ROM (max 128KiB PRG, licensing IC present, external option ROM of up to 128KiB should be selectable by a second menu)

  • Nantettatte!! Baseball

071: Codemasters

Some games use this with 1-screen mirroring, where the mapper's mirroring control bit is wired directly to CIRAM A10. Others have hardwired horizontal or vertical mirroring.

Another variation of this mapper was used in the Quattro multicarts, but these have been reassigned to mapper 232.

071: 0

Hardwired horizontal or vertical mirroring.

071 : 1

Mapper controlled single-screen mirroring.

078: Cosmo Carrier / Holy Diver

This mapper unfortunately combines two games with incompatible mirroring control.

One game uses this with 1-screen mirroring, where the mapper's mirroring control bit is wired directly to CIRAM A10. The other can switch between horizontal and vertical mirroring, using a multiplexer between PPU A10 and PPU A11 whose output is sent to CIRAM A10.

078: 0

Unspecified.

078: 1

Single-screen mirroring (nibble-swapped mapper 152).

078: 2

Deprecated.

078: 3

Mapper-controlled H/V mirroring.

210: Namco 175 and 340

Mapper 210 doesn't distinguish between the 175's hardwired mirroring and 340's 1/H/V mirroring.

Also, previous confusion and compatibility code used by Namco when they were developing games means that many 175- and 340- using games are incorrectly tagged as mapper 19.

210: 0

No advisory statement is made (use runtime heuristics)

210: 1

Namco 175. Hardwired mirroring, no IRQ.

210: 2

Namco 340. 1/H/V mirroring, no IRQ, no internal or external RAM.

232: Quattro

Similar to #71 above, with a separate register controlling which 64 KiB outer bank of the PRG ROM is used. This is used for the Quattro multicarts.

The Aladdin Deck Enhancer version of these multicarts used a different banking scheme.

323: 0

0: Normal

232: 1

Aladdin Deck Enhancer variation. Swap the bits of the outer bank number.

References