INES Mapper 003: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(add some clarification on bus conflicts to m003)
(Updates Notes to better explain the bus conflict situation. Thanks to lidnariq and NewRisingSun for help hopefully getting this right.)
 
(13 intermediate revisions by 7 users not shown)
Line 1: Line 1:
[[Category:iNES Mappers]]
{{DEFAULTSORT:003}}
[[Category:iNES Mappers]] [[Category:in NesCartDB]] [[Category:CNROM-like mappers]] [[Category:Nintendo licensed mappers]] [[Category:Expansion audio]][[Category:NES 2.0 mappers with submappers]]
{{Infobox iNES mapper
|name=CNROM and similar
|company=Nintendo, others
|mapper=3
|nescartdbgames=104
|boards=CNROM "and similar"
|prgmax=16K or 32K
|prgpage=n/a
|chrmax=32K (2M oversize version)
|chrpage=8K
|mirroring=Fixed H or V
|busconflicts=Yes(CNROM, some others)
|audio=[http://bootgod.dyndns.org:7777/profile.php?id=3953 One case]
}}
{{nesdbbox
|ines|3|iNES 003
|unif_wild|CNROM|CNROM
}}
'''iNES Mapper 003''' is used to designate the [[CNROM]] board, and similar boards used by Bandai, Panesian, Sachen and others, generalized to support up to 256 banks (2048 KiB) of CHR ROM.


'''iNES Mapper 003''' is used to designate the [[CNROM]] board and a very similar board used for Panesian games, generalized to support up to 255 banks (2040 KiB) of CHR ROM.
The [[NROM-368|CNROM-368]] extension was proposed, allowing 46 KiB PRG ROM.


In May 2012, the [[NROM-368|CNROM-368]] extension was proposed, allowing 46 KB PRG ROM.
Example games:
* ''Solomon's Key''
* ''Arkanoid''
* ''Arkista's Ring''
* ''Bump 'n' Jump''
* ''Cybernoid''


  Here are Disch's original notes:
==Overview==
  ========================
* PRG ROM size: 16 KiB or 32 KiB
  =  Mapper 003          =
* PRG ROM bank size: Not bankswitched
  ========================
* PRG RAM: None
 
* CHR capacity: Up to 2048 KiB ROM
  aka
* CHR bank size: 8 KiB
  --------------------------
* Nametable [[mirroring]]: Fixed vertical or horizontal mirroring
  CNROM (and compatible)
* Subject to [[bus conflict]]s: Yes (CNROM), but not all compatible boards have bus conflicts. [[Category:Mappers with bus conflicts]]
 
 
  Example Games:
  --------------------------
  Solomon's Key
  Arkanoid
  Arkista's Ring
  Bump 'n' Jump
  Cybernoid
 
 
  Registers (**BUS CONFLICTS** sometimes):
  --------------------------
    $8000-FFFF:  [CCCC CCCC]
      CHR Reg (selects 8k @ $0000)
 
 
  Notes:
  ---------------------------
  CNROM has bus conflicts, however mapper 003 is meant to be CNROM and compatible.  So some mappers which were
  similar in function, but did not have bus conflicts are included.
 
  Additionally, CNROM's reg is only 2 bits wide... therefore it is capped at 32KiB CHR. Extra bits are listed here for the Panesian boards.
 
  There is no PRG swapping.
   
The game Cybernoid seems to behave very strangely.  It uses unprepped system RAM... and it is as if it
actually relies on bus conflicts (AND written value with value read from address)! Supposedly this bug
manifests by CHR corruptions when the music changes.


The game "Colorful Dragon (Unl) (Sachen)" has glitched CHR if bus conflicts are emulated.
==Banks==
* PPU $0000-$1FFF: 8 KB switchable CHR ROM bank


Emulators will probably have to use hashes to know which games to emulate bus conflicts on.
==Registers==
=== Bank select ($8000-$FFFF) ===
7  bit  0
---- ----
cccc ccCC
|||| ||||
++++-++++- Select 8 KB CHR ROM bank for PPU $0000-$1FFF
 
CNROM only implements the lowest 2 bits, capping it at 32 KiB CHR. Other boards may implement 4 or more bits for larger CHR.
 
==Notes==
Mapper 3 is normally subject to [[Bus conflict|bus conflicts]], where the value seen by the mapper is actually the bitwise AND of the value written by the CPU and the ROM value at that address. Games normally work around this by ensuring the two values are identical. However, the game ''Cybernoid'' relies on bus conflicts. Without bus conflicts, the wrong CHR bank will be loaded when the player changes the audio from sound effects to music playback. ''Cybernoid'' also uses uninitialized RAM, which can be responsible for behavior differences between hardware and emulator.
 
While bus conflicts are standard, there exist hacks that rely on the absence of bus conflicts. These include Nintendo's updated version of ''Donkey Kong'' with the pie factory level and some mapper hacks, such as a common hack of ''Colorful Dragon (Unl) (Sachen)'' that changes it from [[INES Mapper 079]] to Mapper 3. Emulating these with bus conflicts will cause the wrong CHR bank to be loaded. Where necessary, NES 2.0 is capable of specifying that a game should be emulated without bus conflicts.
 
The [https://nescartdb.com/profile/view/3953/family-trainer-3-aerobics-studio Japanese version of ''Dance Aerobics''] adds a [http://forums.nesdev.org/viewtopic.php?p=102300#p102300 sound playback IC] to CNROM. It adds a [http://forums.nesdev.org/viewtopic.php?t=9449 register mapped from $6000-$7FFF] that can play one of eight voice recordings. However, the specifics of the compression are not yet known, and there is no standardized way to bundle audio data with [[iNES]] images.
 
==References==
* [http://www.romhacking.net/documents/362/ Disch's Mapper Notes]

Latest revision as of 00:28, 22 September 2023

CNROM and similar
Company Nintendo, others
Games 104 in NesCartDB
Boards CNROM "and similar"
PRG ROM capacity 16K or 32K
PRG ROM window n/a
PRG RAM capacity None
CHR capacity 32K (2M oversize version)
CHR window 8K
Nametable mirroring Fixed H or V
Bus conflicts Yes(CNROM, some others)
IRQ No
Audio One case
iNES mappers 003
NESCartDB
iNES 003
CNROM

iNES Mapper 003 is used to designate the CNROM board, and similar boards used by Bandai, Panesian, Sachen and others, generalized to support up to 256 banks (2048 KiB) of CHR ROM.

The CNROM-368 extension was proposed, allowing 46 KiB PRG ROM.

Example games:

  • Solomon's Key
  • Arkanoid
  • Arkista's Ring
  • Bump 'n' Jump
  • Cybernoid

Overview

  • PRG ROM size: 16 KiB or 32 KiB
  • PRG ROM bank size: Not bankswitched
  • PRG RAM: None
  • CHR capacity: Up to 2048 KiB ROM
  • CHR bank size: 8 KiB
  • Nametable mirroring: Fixed vertical or horizontal mirroring
  • Subject to bus conflicts: Yes (CNROM), but not all compatible boards have bus conflicts.

Banks

  • PPU $0000-$1FFF: 8 KB switchable CHR ROM bank

Registers

Bank select ($8000-$FFFF)

7  bit  0
---- ----
cccc ccCC
|||| ||||
++++-++++- Select 8 KB CHR ROM bank for PPU $0000-$1FFF

CNROM only implements the lowest 2 bits, capping it at 32 KiB CHR. Other boards may implement 4 or more bits for larger CHR.

Notes

Mapper 3 is normally subject to bus conflicts, where the value seen by the mapper is actually the bitwise AND of the value written by the CPU and the ROM value at that address. Games normally work around this by ensuring the two values are identical. However, the game Cybernoid relies on bus conflicts. Without bus conflicts, the wrong CHR bank will be loaded when the player changes the audio from sound effects to music playback. Cybernoid also uses uninitialized RAM, which can be responsible for behavior differences between hardware and emulator.

While bus conflicts are standard, there exist hacks that rely on the absence of bus conflicts. These include Nintendo's updated version of Donkey Kong with the pie factory level and some mapper hacks, such as a common hack of Colorful Dragon (Unl) (Sachen) that changes it from INES Mapper 079 to Mapper 3. Emulating these with bus conflicts will cause the wrong CHR bank to be loaded. Where necessary, NES 2.0 is capable of specifying that a game should be emulated without bus conflicts.

The Japanese version of Dance Aerobics adds a sound playback IC to CNROM. It adds a register mapped from $6000-$7FFF that can play one of eight voice recordings. However, the specifics of the compression are not yet known, and there is no standardized way to bundle audio data with iNES images.

References