INES Mapper 004: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
m (→‎See also: Dish > Disch)
(Redirect: everything here is now covered by MMC3)
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
{{DEFAULTSORT:004}}[[Category:iNES Mappers]][[Category:MMC3-like mappers]][[Category:in NesCartDB]][[Category:Nintendo licensed mappers]][[Category:NES 2.0 mappers with submappers]]
#REDIRECT [[MMC3]]
[[iNES Mapper 004]] is a wide abstraction that can represent boards using the Nintendo [[MMC3]], Nintendo [[MMC6]], or functional clones of any of the above. Most games utilizing [[TxROM]], [[DxROM]], and '''HKROM''' boards use this designation.
{{DEFAULTSORT:004}}[[Category:iNES Mappers]][[Category:MMC3-like mappers]][[Category:in NesCartDB]][[Category:Nintendo licensed mappers]][[Category:NES 2.0 mappers with submappers]][[Category:Mappers with scanline IRQs]]
 
A few specific TxROM boards handle the PPU bus differently and thus have separate mapper numbers:
*[[iNES Mapper 118]] covers TKSROM and TLSROM, which use CHR bank bits to control nametable [[mirroring]]
*[[iNES Mapper 119]] covers TQROM, which has both CHR RAM and CHR ROM
 
Some [[:Category:MMC3-like mappers|MMC3-like mappers]] have different behaviors and thus their own mapper numbers.
 
HKROM does not have its own mapper number.
It can be identified in [[NES 2.0]] images by having 1024 bytes of battery-backed PRG RAM or in traditional iNES images by comparing the hash of the PRG ROM to the PRG hashes of the [http://bootgod.dyndns.org:7777/search.php?keywords=HKROM&kwtype=pcb two distinct licensed games that use this board]].
 
As with any iNES mapper, there is no exact "strict" interpretation of a hardware reality to be had. This is significant for example with the case of roms that exceed normal 512KB PRG limits, such as this significant rom hack: http://www.romhacking.net/translations/1590/ ; where you may have to consider mapper 4 as defining a fake MMC3 chip that contains full 8 bit registers capable of fully addressing the expanded PRG.
 
Consulting [[PPU rendering]], which includes a frame timing diagram and details on PPU address bus contents, might help in understanding the IRQ scanline counting logic.
 
== MMC3 + MMC6 implementation ==
 
The unfortunate conflation of MMC3 and MMC6 into the same iNES mapper can be resolved by the use of an [[NES 2.0]] header, but since the new header is not yet well adopted among emulators or ROM sets, an approach that supports both MMC3 and MMC6 may be desired when an NES 2.0 header is not used.
 
The difference between the MMC3 and MMC6 mostly has to do with a smaller PRG-RAM size on the MMC6, along with a different register scheme for write protecting it.
 
Because write protection is generally only used to guard against corruption during power off, many implementations of iNES Mapper 004 simply omit the write protection. Leaving PRG-RAM always write-enabled removes most of the incompatibility between MMC3 and MMC6, and is sufficient to support the popular MMC6 games StarTropics and StarTropics II. These games do not rely on the smaller PRG-RAM size of the MMC6, so the larger 8k RAM addressed by the MMC3 is not a problem.
 
The less well known game ''Low G Man'' is problematic. It used an MMC3 with no PRG RAM. Because of a bug in its music code, it relies on open-bus behaviour in the RAM's address range to function correctly. The game does use the MMC3 mechanism to disable RAM, so it could function on an MMC3 board that had PRG-RAM, but implementing the MMC3 RAM disable may conflict with the effort to support MMC6 games. Alternatively, NES 2.0 can be used to specify a PRG-RAM size of 0.
 
== See also ==
*[[:Category:MMC3-like mappers]]
*[[iNES Mapper 206]] covers Tengen MIMIC-1 or Namco 109 chip, the MMC3's predecessor with no mirroring control or IRQ, seen on [[DxROM]]
* NES mapper list by Disch : [http://www.romhacking.net/documents/362/]

Latest revision as of 18:53, 30 May 2015

Redirect to: