PowerPak Menu

From NESdev Wiki
Revision as of 02:04, 10 July 2017 by NovaSquirrel (talk | contribs) (typo)
Jump to navigationJump to search

The PowerPak boot ROM and menu system use its own simple mapper. The PowerPak menu is split into a series of modules that reside at $0400-$07FF in the NES's built-in RAM and are loaded from the CF card. After booting, the module "I.MAP" is loaded and run.

Banks

  • PPU $0000-$1FFF: 8 KB switchable CHR RAM bank.
  • CPU $6000-$7FFF: 8 KB switchable PRG RAM bank, selects from the 512 KB "PRG ROM" space.
  • CPU $8000-$BFFF: 16 KB switchable PRG ROM bank, selects from boot ROM.
  • CPU $C000-$FFFF: 16 KB PRG ROM bank, fixed to the last bank of boot ROM.

Registers

FPGADATA ($5000)

The boot ROM writes $FF to this register. It tells the FPGA it is being reprogrammed.

FPGAPROGRAM ($5800)

7  bit  0
---- ----
DDDD DDDD
|||| ||||
++++-++++- Writes a byte of configuration to the FPGA.

MAPPERWR ($8000)

7  bit  0
---- ----
.... ..DD
       ||
       ++- Selects the bank of boot ROM that appears at $8000-$BFFF.

Banks 0, 1 and 2 contain the initial FPGA configuration. Bank 3 contains 8KB of font and then 8KB of system routines. As the last 16KB are also accessible via the fixed bank, the $8000-$BFFF area isn't useful for menu software.

PRGBANK ($4200)

7  bit  0
---- ----
WCDD DDDD
|||| ||||
||++-++++- Selects the bank of PRG RAM that appears in $6000-$7FFF.
|+-------- Enable CHR RAM writing if 1.
+--------- Selects from 32KB of WRAM instead of main PRG RAM.

CHRBANK ($4201)

7  bit  0
---- ----
..DD DDDD
  || ||||
  ++-++++- Selects the bank of CHR RAM used.