INES Mapper 001: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(Idem)
(Remove Dish' notes, (they are available at http://www.romhacking.net/documents/362/ so it's not like they're lost, they just don't belong to here), add link to Dish' notes)
Line 12: Line 12:
# When CHR is small, the MMC1's CHR bank registers switch PRG RAM banks as in SXROM. If the battery bit is present, only banks which are written to are saved to the disk when the game is quit. When loading a game with the battery bit set, if a 8KB .sav file is present, it is repeated equally across all banks. This will lead to data being saved when it wasn't supposed to for SOROM games, but 8KB of hard disk space isn't a problem, and no known NES game had the copy protection based on PRG RAM size that was common in the Super NES era.
# When CHR is small, the MMC1's CHR bank registers switch PRG RAM banks as in SXROM. If the battery bit is present, only banks which are written to are saved to the disk when the game is quit. When loading a game with the battery bit set, if a 8KB .sav file is present, it is repeated equally across all banks. This will lead to data being saved when it wasn't supposed to for SOROM games, but 8KB of hard disk space isn't a problem, and no known NES game had the copy protection based on PRG RAM size that was common in the Super NES era.
# When both PRG ROM and CHR are small, CHR A16 disables PRG RAM when turned on.
# When both PRG ROM and CHR are small, CHR A16 disables PRG RAM when turned on.
==See also==
* NES mapper list by Dish : [http://www.romhacking.net/documents/362/]

Revision as of 09:20, 21 April 2015


iNES Mapper 001 is used to designate the SxROM boardset, all of which use the Nintendo MMC1.

This has proven to be problematic for boards (such as SOROM, SUROM and SXROM) which use the upper CHR bank select lines to select additional PRG ROM or PRG RAM data; games which use SOROM or SXROM often must be handled individually based on the ROM checksum.

In the absence of data beyond basic iNES header data, an emulator may follow the following procedure to guess a board type useful for emulation:

  1. Determine whether PRG ROM is "large" (512 KiB) or "small" (256 KiB or less) and whether CHR is "large" (16-128 KiB CHR ROM) or "small" (8 KiB CHR ROM or CHR RAM).
  2. When PRG ROM is large, the highest CHR line (CHR A16) switches 256 KiB PRG ROM banks as in SUROM.
  3. When CHR is large, MMC1 registers act "normal".
  4. When CHR is small, the MMC1's CHR bank registers switch PRG RAM banks as in SXROM. If the battery bit is present, only banks which are written to are saved to the disk when the game is quit. When loading a game with the battery bit set, if a 8KB .sav file is present, it is repeated equally across all banks. This will lead to data being saved when it wasn't supposed to for SOROM games, but 8KB of hard disk space isn't a problem, and no known NES game had the copy protection based on PRG RAM size that was common in the Super NES era.
  5. When both PRG ROM and CHR are small, CHR A16 disables PRG RAM when turned on.

See also

  • NES mapper list by Dish : [1]