UxROM: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(→‎Hardware: Restore the comment about oversize variants, now in the section it belongs)
(Bregalad thinks it'd be better to make a separate page for a multicart mapper based on extending UOROM SUROM-style)
Line 55: Line 55:


If an actual multiplexer ([[74157|74HC157]] quad 2:1) is cheaper than an OR gate, a third-party UxROM-compatible board can use that instead of the 74HC32, as [http://forums.nesdev.org/viewtopic.php?p=93516#p93516 kyuusaku suggested].
If an actual multiplexer ([[74157|74HC157]] quad 2:1) is cheaper than an OR gate, a third-party UxROM-compatible board can use that instead of the 74HC32, as [http://forums.nesdev.org/viewtopic.php?p=93516#p93516 kyuusaku suggested].
UxROM games 512 KiB in size or larger have two different ways this mapper could be implemented, depending on whether the cost of a second 7432 is acceptable. Most emulators force the absolute last bank to always be mapped in the upper 16 KiB, and the only known 512 KiB homebrew does the same by using two 74HC32s. But omitting the second OR gate effectively produces a multicart of 256 KiB UOROM games, which could have its own uses. Furthermore, the former behavior using the latter hardware can be effected by having the 16th bank of each 256KiB slice be a duplicate.


== Variants ==
== Variants ==
Line 65: Line 63:
''Crazy Climber'' replaces the [[7432|74HC32]] quad-OR gate by a [[7408|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.
''Crazy Climber'' replaces the [[7432|74HC32]] quad-OR gate by a [[7408|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.


Theoretically the bank select register could be implemented with a [[74377|74HC377]] octal latch, allowing up to 4 MB of PRG ROM.
With an 8-bit latch ([[74377|74HC377]] or an additional 74HC161) and an additional 74HC32 to control A18-A21, a third-party board implementing this mapper can switch 4 MiB of PRG ROM.
A 512 KiB homebrew game using such a board is believed to exist.


== See also ==
== See also ==
*[[Programming UNROM]]
*[[Programming UNROM]]

Revision as of 17:34, 18 March 2014

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. If the program is 128 KiB or smaller, the 7402 way leaves one NOR gate free to invert R/W into /OE to avoid bus conflicts.[1]

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.

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.

With an 8-bit latch (74HC377 or an additional 74HC161) and an additional 74HC32 to control A18-A21, a third-party board implementing this mapper can switch 4 MiB of PRG ROM. A 512 KiB homebrew game using such a board is believed to exist.

See also