Skip to main content
NESdev Wiki
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

GxROM

GxROM
CompanyNintendo, others
BoardsGNROM,MHROM
PRG ROM capacity128KiB (512KiB oversize)
PRG ROM window32KiB
PRG RAM capacityNone
CHR capacity32KiB (128KiB oversize)
CHR window8KiB
Nametable arrangementFixed H or V, controlled by solder pads
Bus conflictsYes
IRQNo
AudioNo
iNES mappers066

The designation GxROM refers to Nintendo cartridge boards labeled NES-GNROM and NES-MHROM (and their HVC counterparts), which use discrete logic to provide up to four 32 KB banks of PRG ROM and up to four 8 KB banks of CHR ROM. The iNES format assigns mapper 66 to these boards.

The Jaleco board assigned to iNES Mapper 140 is sometimes confused with GNROM, as they are very similar but with the bankswitch register in a different location.

Example games:

  • Doraemon
  • Dragon Power
  • Gumshoe
  • Paris-Dakar Rally Special!
  • Takahashi Meijin no Bugutte Honey
  • Thunder & Lightning
  • Super Mario Bros. + Duck Hunt (MHROM)

Board Types

The following GxROM boards are known to exist:

BoardPRG ROMCHR
GNROM128 KB32 KB ROM
MHROM64 KB16 / 32 KB ROM

Banks

  • CPU $8000-$FFFF: 32 KB switchable PRG ROM bank
  • PPU $0000-$1FFF: 8 KB switchable CHR ROM bank

Registers

Bank select ($8000-$FFFF)

7  bit  0
---- ----
xxPP xxCC
  ||   ||
  ||   ++- Select 8 KB CHR ROM bank for PPU $0000-$1FFF
  ++------ Select 32 KB PRG ROM bank for CPU $8000-$FFFF

Bit 5 is not used on MHROM, which supports only 64 KB PRG.

Solder pad config

  • Horizontal mirroring : ‘H’ disconnected, ‘V’ connected.
  • Vertical mirroring : ‘H’ connected, ‘V’ disconnected.

Hardware

The GNROM board contains a 74HC161 binary counter used as a quad D latch (4-bit register) to select the current PRG and CHR banks. MHROM, on the other hand, was often a glop-top, as it was used for pack-in games, such as the Super Mario Bros./Duck Hunt multicart, and needed to be very inexpensive to produce in huge quantities.

Variants

Theoretically the bank select register could be implemented with a 74HC377 octal D latch, allowing up to 512 KB of PRG ROM and 128 KB of CHR ROM. There are a large number of other variants on GNROM, where the bits or the writeable address were moved around. Notable variants include:

  • iNES Mapper 140 places the bank register in $6000-$7FFF instead of $8000-$FFFF. iNES Mapper 240 moves it further at $4020-$5FFF.
  • NES 2.0 Mapper 271 adds mapper-controlled nametable arrangement, controlled by one of the PRG banking bit.
  • The Color Dreams board leaves the port at $8000-$FFFF, swaps the nibbles, expands CHR by two bits, and adds two bits for charge pump control. iNES Mapper 046 additionally has an outer bank register.
  • iNES Mapper 086 supports speech sample playback in addition to an additional bit of CHR banking.
  • iNES Mapper 070 can be seen as a mix of GxROM and UxROM, which combines GNROM-style bank register with UxROM-style 16 KiB PRG banking. iNES Mapper 152 additionally has hardware-controlled single-screen mirroring.

See also

Edit this page on GitHub