INES Mapper 099: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(→‎Hardware: Clone mapper that works with no external dongle)
(→‎Hardware: rewrite)
Line 32: Line 32:
== Hardware ==
== Hardware ==


The banking configuration described by mapper 99 connects the 2A03's OUT2 pin to a simple 1-to-2 demultiplexer to select between two CHR-ROM banks. (If you are implementing it in a Famicom and aren't using IRQ or keyboard, then you can put a wire in the expansion port connecting OUT2 to IRQ. On some (but not all) models of NES, you can make it work even if the game does use IRQ.)
The banking configuration described by mapper 99 connects the 2A03's OUT2 pin to a simple 1-to-2 demultiplexer to select between two CHR-ROM banks. To run one of the arcade games in a plain NES or Famicom, one could connect OUT2 an unused pin in the expansion port (such as one of the EXPx pins or IRQ if the game doesn't use IRQs).
Or a clone mapper could fully decode $4016 writes on all hardware variants.
Or a clone mapper could fully decode $4016 writes on all hardware variants.
 
Although this hardware has never been used outside the Vs. System, its behavior is well-defined in the absence of the [[INES#Flags_7|for Vs. System]] or [[INES#Flags_6|four-screen VRAM]] bits.


Only ''Vs. Gumshoe'' uses the 40KiB PRG variant; in the [[iNES]] encapsulation, the 8KiB banks are arranged as 0, 1, 2, 3, 0alternate, empty. (The hardware adds a wire to EPROM socket 2D or 6D, connecting OUT2 to A13)
Only ''Vs. Gumshoe'' uses the 40KiB PRG variant; in the [[iNES]] encapsulation, the 8KiB banks are arranged as 0, 1, 2, 3, 0alternate, empty. (The hardware adds a wire to EPROM socket 2D or 6D, connecting OUT2 to A13)
Although this hardware has never been used outside the Vs. System, its behavior is well-defined in the absence of the [[INES#Flags_7|for Vs. System]] or [[INES#Flags_6|four-screen VRAM]] bits.

Revision as of 19:00, 22 July 2013

Mapper 99 is a simple mapper used by Vs. System games such as Vs. Super Mario Bros. It is comparable to CNROM, but without bus conflicts.

The Vs. System has other ports related to coin insertion and DIP switches that must be emulated to get games to advance past attract mode, and most games' palettes differ from the standard RGB NES palette used by Duck Hunt and PlayChoice games. See Vs. System for more information.

Overview

  • PRG ROM size: 8 to 40 KiB, in 8 KiB steps (as one to four 8 KiB ROMs, or one 16 KiB ROM and three 8 KiB ROMs)
  • PRG ROM bank size: 8 KiB
  • PRG RAM: 2 KiB, at least in Vs DualSystem, switchable between CPUs
  • CHR capacity: 8 or 16 KiB (as one or two 8 KiB ROMs)
  • CHR bank size: 8 KiB
  • Nametable mirroring: Fixed as four screen
  • Subject to bus conflicts: No

Banks

  • CPU $8000-$9FFF: 8 KiB switchable PRG ROM bank
  • CPU $A000-$FFFF: 24 KiB fixed PRG ROM bank
  • PPU $0000-$1FFF: 8 KiB switchable CHR ROM bank

Registers

Bank select ($4016)

7  bit  0
---- ----
xxxx xBRC
      |
      +--- Select both PRG ROM and CHR ROM bank

Note that the two LSBs are used for other things (see Vs. System), so you'll probably need to keep a copy of the value stored.

Hardware

The banking configuration described by mapper 99 connects the 2A03's OUT2 pin to a simple 1-to-2 demultiplexer to select between two CHR-ROM banks. To run one of the arcade games in a plain NES or Famicom, one could connect OUT2 an unused pin in the expansion port (such as one of the EXPx pins or IRQ if the game doesn't use IRQs). Or a clone mapper could fully decode $4016 writes on all hardware variants.

Although this hardware has never been used outside the Vs. System, its behavior is well-defined in the absence of the for Vs. System or four-screen VRAM bits.

Only Vs. Gumshoe uses the 40KiB PRG variant; in the iNES encapsulation, the 8KiB banks are arranged as 0, 1, 2, 3, 0alternate, empty. (The hardware adds a wire to EPROM socket 2D or 6D, connecting OUT2 to A13)