UxROM: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
m (→‎Variants: delink Camerica, instead link to m71)
m (omit links to redirects; provide links to UN1ROM)
Line 1: Line 1:
[[Category:Discrete_logic_mappers]]
[[Category:Discrete_logic_mappers]]
The generic designation [[UxROM]] refers to the Nintendo cartridge boards NES-[[UNROM]], NES-[[UOROM]], their [[Famicom|HVC]] counterparts, and clone boards. The [[iNES]] format assigns [[iNES Mapper 002|mapper 2]] to UxROM.
The generic designation [[UxROM]] refers to the Nintendo cartridge boards NES-UNROM, NES-UOROM, [[iNES Mapper 094|HVC-UN1ROM]] their [[Famicom|HVC]] counterparts, and clone boards. The [[iNES]] format assigns [[iNES Mapper 002|mapper 2]] to UxROM.


== Overview ==
== Overview ==
Line 29: Line 29:


== Hardware ==
== Hardware ==
The [[UNROM]] and [[UOROM]] boards contain a [[74161|74HC161]] binary counter used as a quad D latch (4-bit register) and a [[7432|74HC32]] quad 2-input OR gate to make one bank always visible.
The UNROM, UN1ROM, and UOROM boards contain a [[74161|74HC161]] binary counter used as a quad D latch (4-bit register) and a [[7432|74HC32]] quad 2-input OR gate to make one bank always visible.


<pre>
<pre>
Line 57: Line 57:
== Variants ==
== Variants ==
The [[iNES Mapper 071|mapper]] used in Codemasters games published by Camerica extends UxROM with [[CIC]] defeat circuitry.
The [[iNES Mapper 071|mapper]] used in Codemasters games published by Camerica extends UxROM with [[CIC]] defeat circuitry.
Nintendo's [[iNES Mapper 094|HVC-UN1ROM]] board moves the bankswitching bits within the byte.


{{Octal D|4 megabytes of PRG ROM}}The [[iNES]] format can't represent a ROM bigger than 2 MiB, so the biggest of these ROMs would have to be in [[NES 2.0]] format.
{{Octal D|4 megabytes of PRG ROM}}The [[iNES]] format can't represent a ROM bigger than 2 MiB, so the biggest of these ROMs would have to be in [[NES 2.0]] format.

Revision as of 05:46, 31 August 2012

The generic designation UxROM refers to the Nintendo cartridge boards NES-UNROM, NES-UOROM, HVC-UN1ROM their HVC counterparts, and clone boards. The iNES format assigns mapper 2 to UxROM.

Overview

  • PRG ROM size: 128 KB for UNROM, 256 KB for UOROM (DIP-28/32 Nintendo pinout)
  • PRG ROM bank size: 16 KB
  • PRG RAM: None
  • CHR capacity: 8 KB RAM
  • CHR bank size: Not bankswitched
  • Nametable mirroring: Solder pads select vertical or horizontal mirroring
  • Subject to bus conflicts: Yes

Banks

  • CPU $8000-$BFFF: 16 KB switchable PRG ROM bank
  • CPU $C000-$FFFF: 16 KB PRG ROM bank, fixed to the last bank

Solder pad config

  • Horizontal mirroring : 'H' disconnected, 'V' connected.
  • Vertical mirroring : 'H' connected, 'V' disconnected.

Registers

Bank select ($8000-$FFFF)

7  bit  0
---- ----
xxxx pPPP
     ||||
     ++++- Select 16 KB PRG ROM bank for CPU $8000-$BFFF
          (UNROM uses bits 2-0; UOROM uses bits 3-0)

Hardware

The UNROM, UN1ROM, and UOROM boards contain a 74HC161 binary counter used as a quad D latch (4-bit register) and a 74HC32 quad 2-input OR gate to make one bank always visible.

      /PRGSEL               A14  A13-A0
       |                      |      |
       |                      |      |
       | D3-D0-.       ,------'      |
       |       |     . |             |
       | ,-----+--.  |`+.            |
       | |Register+--+0  `.          |
       | `--------'  |    |_...      |
       |       |     |    | |||      |
       | R/W --'   7-+1  ,' |||      |
       |             | ,'   |||      |
       |             |'     |||      |
       |                    |||      |
      ,+--------------------+++------+-----.
      |/CE                A1654  A13-A0    |
      |         128K by 8 bit ROM     D7-D0+-- to 2A03 data bus
      |                                    |
      `------------------------------------'

The quad OR gate here acts as a multiplexer. A 74HC02 quad NOR gate can be used instead if the banks are stored in reverse order in the ROM. Or if an actual multiplexer (74HC157 quad 2:1) is cheaper than an OR gate, a third-party UxROM-compatible board can use that instead of the 74HC32, as kyuusaku suggested.

Variants

The mapper used in Codemasters games published by Camerica extends UxROM with CIC defeat circuitry.

Nintendo's HVC-UN1ROM board moves the bankswitching bits within the byte.

In theory, it would be possible to implement the bank select register with a 74HC377 octal D latch, allowing up to 4 megabytes of PRG ROM, but due to mask ROM cost in the NES era, no non-pirate NES cart used this much memory.The iNES format can't represent a ROM bigger than 2 MiB, so the biggest of these ROMs would have to be in NES 2.0 format.

There are two conceivable configurations. One uses an additional 74*32 on the high bits of the latch's output to force them high in the fixed bank, and this is what existing emulators appear to use for mapper 2.

The other leaves out the additional 74*32 and provides a separate fixed bank for each set of 16 banks in a way reminiscent of SUROM. For example, when bank 20 is swapped into $8000, bank 31 is swapped into $C000. As with SUROM, this configuration would be useful for making multicarts or other games with multiple distinct engines.

Crazy Climber replaces the 74HC32 quad-OR gate by a 74HC08 quad-AND gate, so that the first bank is fixed at $8000-$bfff and the switchable bank is present at $c000-$ffff. This configuration is assigned to iNES Mapper 180, which uses the same UNROM PCB.

See also