INES Mapper 100: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(Nintendulator uses 100 as a debug mapper - select PRG/CHR banks at will, choosing ROM or RAM (or nametables for PPU))
(Describe Nesticle's MMC3 emulation.)
Line 1: Line 1:
[[Category:Bad iNES Mappers|100]][[Category:INES Mappers|100]]
[[Category:Bad iNES Mappers|100]][[Category:INES Mappers|100]][[Category:MMC3-like mappers]][[Category:Mappers with scanline IRQs]]


Reportedly "MMC3/Nestice/Trainer/Buugy Mode Used in hacked roms !!"
iNES Mapper 100 is used by some emulators to denote ROM images hacked for Nesticle's [[MMC3]] emulation.


Details are unknown. Sounds like homebrew hacks that work only on certain emulators, but not on real MMC3 hardware. Or it is just meant to be corrupted .NES files with garbage in reserved header entries at [07h..0Fh], thus changing mapper number 04h (MMC3) to 64h (100 decimal).
==Bankswitch Index Register ($8000)/Data Register ($8001)==
Mask: $E001 (nominally)
$00: 1 KiB CHR-ROM bank at PPU $0000-$03FF := Value AND $FE
      1 KiB CHR-ROM bank at PPU $0400-$07FF := Value OR $01
$01: 1 KiB CHR-ROM bank at PPU $0800-$0BFF := Value AND $FE
      1 KiB CHR-ROM bank at PPU $0C00-$0FFF := Value OR $01
$02: 1 KiB CHR-ROM bank at PPU $1000-$13FF := Value
$03: 1 KiB CHR-ROM bank at PPU $1400-$17FF := Value
$04: 1 KiB CHR-ROM bank at PPU $1800-$1BFF := Value
$05: 1 KiB CHR-ROM bank at PPU $1C00-$1FFF := Value
$06: 8 KiB PRG-ROM bank at CPU $8000-$9FFF := Value
$07: 8 KiB PRG-ROM bank at CPU $A000-$BFFF := Value
$46: 8 KiB PRG-ROM bank at CPU $C000-$DFFF := Value
$47: 8 KiB PRG-ROM bank at CPU $A000-$BFFF := Value
$80: 1 KiB CHR-ROM bank at PPU $1000-$13FF := Value AND $FE
      1 KiB CHR-ROM bank at PPU $1400-$17FF := Value OR $01
$81: 1 KiB CHR-ROM bank at PPU $1800-$1BFF := Value AND $FE
      1 KiB CHR-ROM bank at PPU $1C00-$1FFF := Value OR $01
$82: 1 KiB CHR-ROM bank at PPU $0000-$03FF := Value
$83: 1 KiB CHR-ROM bank at PPU $0400-$07FF := Value
$84: 1 KiB CHR-ROM bank at PPU $0800-$0BFF := Value
$85: 1 KiB CHR-ROM bank at PPU $0C00-$0FFF := Value


At some point, FCEUX lost support for this.
Registers $8000/$8001 $00-$07 as well as registers $A000-$FFFF function identically to an actual Nintendo [[MMC3]], Registers $8000/$8001 $40-$85 do not.


It's also currently used as a magic number by Nestopia-1.4.0 for "anything whose dumps only exist as UNIF (and therefore has no iNES mapper number assigned)"
Nesticle is an old but influential NES emulator for DOS. Its non-standard method of emulating the MMC3's PRG A14/CHR A12 inversion bits had the side effect of making eight independent 1 KiB CHR-ROM banks available, by using registers $82-$85 to set four 1 KiB banks at CPU $0000-$0FFF and registers $02-$05 to set four more 1 KiB banks at CPU $1000-$1FFF. This resulted in several Japanese games' ROM images, that originally used mappers not supported by Nesticle, being hacked for it. All of these games have since been redumped and are available in their original unaltered form, which should be used instead.


Nintendulator uses this as a general-purpose debugging mapper, allowing PRG/CHR banks to be selected arbitrarily using a control dialog.
At some point, FCEUX lost support for this. It's also currently used as a magic number by Nestopia-1.4.0 for "anything whose dumps only exist as UNIF (and therefore has no iNES mapper number assigned)". Nintendulator uses this as a general-purpose debugging mapper, allowing PRG/CHR banks to be selected arbitrarily using a control dialog.

Revision as of 19:41, 12 May 2018


iNES Mapper 100 is used by some emulators to denote ROM images hacked for Nesticle's MMC3 emulation.

Bankswitch Index Register ($8000)/Data Register ($8001)

Mask: $E001 (nominally)

$00: 1 KiB CHR-ROM bank at PPU $0000-$03FF := Value AND $FE
     1 KiB CHR-ROM bank at PPU $0400-$07FF := Value OR $01
$01: 1 KiB CHR-ROM bank at PPU $0800-$0BFF := Value AND $FE
     1 KiB CHR-ROM bank at PPU $0C00-$0FFF := Value OR $01
$02: 1 KiB CHR-ROM bank at PPU $1000-$13FF := Value
$03: 1 KiB CHR-ROM bank at PPU $1400-$17FF := Value
$04: 1 KiB CHR-ROM bank at PPU $1800-$1BFF := Value
$05: 1 KiB CHR-ROM bank at PPU $1C00-$1FFF := Value
$06: 8 KiB PRG-ROM bank at CPU $8000-$9FFF := Value
$07: 8 KiB PRG-ROM bank at CPU $A000-$BFFF := Value
$46: 8 KiB PRG-ROM bank at CPU $C000-$DFFF := Value
$47: 8 KiB PRG-ROM bank at CPU $A000-$BFFF := Value
$80: 1 KiB CHR-ROM bank at PPU $1000-$13FF := Value AND $FE
     1 KiB CHR-ROM bank at PPU $1400-$17FF := Value OR $01
$81: 1 KiB CHR-ROM bank at PPU $1800-$1BFF := Value AND $FE
     1 KiB CHR-ROM bank at PPU $1C00-$1FFF := Value OR $01
$82: 1 KiB CHR-ROM bank at PPU $0000-$03FF := Value
$83: 1 KiB CHR-ROM bank at PPU $0400-$07FF := Value
$84: 1 KiB CHR-ROM bank at PPU $0800-$0BFF := Value
$85: 1 KiB CHR-ROM bank at PPU $0C00-$0FFF := Value

Registers $8000/$8001 $00-$07 as well as registers $A000-$FFFF function identically to an actual Nintendo MMC3, Registers $8000/$8001 $40-$85 do not.

Nesticle is an old but influential NES emulator for DOS. Its non-standard method of emulating the MMC3's PRG A14/CHR A12 inversion bits had the side effect of making eight independent 1 KiB CHR-ROM banks available, by using registers $82-$85 to set four 1 KiB banks at CPU $0000-$0FFF and registers $02-$05 to set four more 1 KiB banks at CPU $1000-$1FFF. This resulted in several Japanese games' ROM images, that originally used mappers not supported by Nesticle, being hacked for it. All of these games have since been redumped and are available in their original unaltered form, which should be used instead.

At some point, FCEUX lost support for this. It's also currently used as a magic number by Nestopia-1.4.0 for "anything whose dumps only exist as UNIF (and therefore has no iNES mapper number assigned)". Nintendulator uses this as a general-purpose debugging mapper, allowing PRG/CHR banks to be selected arbitrarily using a control dialog.