INES Mapper 042: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
m (add cat:ines)
m (add defaultsort)
 
(6 intermediate revisions by 5 users not shown)
Line 1: Line 1:
[[Category:iNES Mappers|042]]
{{DEFAULTSORT:042}}[[Category:iNES Mappers]][[Category:Discrete logic mappers]][[Category:Mappers with CHR RAM]][[Category:FDS conversion mappers]]
[[iNES Mapper 042]] was used by hacked FDS games converted to cartridge form, specifically the Ai Senshi Nicol pirate cartridge.
[[iNES Mapper 042]] was used for hacked FDS games converted to cartridge form.  At least two examples are known: Ai Senshi Nicol and "Mario Baby" (really Bio Miracle Bokutte Upa).  While they likely used different hardware, they can both be encompassed by a single mapper.


Memory map:
== Overview ==
* PRG ROM size: 128 KiB
* PRG ROM bank size: 8 KiB
* PRG RAM: No
* CHR capacity: 128KiB ROM or 8KiB RAM
* CHR bank size: 8 KiB
* Nametable mirroring: Mapper controlled
* Subject to [[bus conflict]]s: ??


PRG:
== Banks ==
*6000-7FFF: Switchable 8k PRG ROM bank
* CPU $6000-$7FFF: 8KiB switchable PRG ROM bank
*8000-FFFF: Fixed to last 32k
* CPU $8000-$FFFF: Fixed to last 32 KiB of PRG ROM
* PPU $0000-$1FFF: 8KiB switchable CHR ROM bank or 8KiB fixed CHR RAM


CHR:
== Registers ==
*0000-1FFF: Switchable 8k CHR ROM bank
Register addresses should be masked with $E003.


Registers:
=== CHR Select ($8000) ===
*8000-8001: Select 8k CHR bank
7  bit  0
*E000: Select 8k PRG ROM bank at 6000-7FFF
---- ----
*E001: Select mirroring: (08 = vertical, 00 = horizontal)
xxxx CCCC
      ||||
      ++++- Select 8 KB CHR ROM bank for PPU $0000-$1FFF
 
This register is ignored on Bio Miracle Bokutte Upa, which uses 8KiB CHR RAM instead.
 
=== PRG Select ($E000) ===
7  bit  0
---- ----
xxxx PPPP
      ||||
      ++++- Select 8 KB PRG ROM bank for CPU $6000-$7FFF
 
=== Mirroring Control ($E001) ===
7  bit  0
---- ----
xxxx Mxxx
      |
      +---- Mirroring (0: Vertical; 1: Horizontal)
 
=== IRQ Control ($E002) ===
7  bit  0
---- ----
xxxx xxEx
        |
        +-- IRQ (0: Disable, Acknowledge, and Reset; 1: Enable)
 
The IRQ hardware counts M2 cycles and triggers after 24576 ($6000) have elapsed. FCEUX's source implies that the IRQ hardware is a 15-bit counter, and IRQ is asserted while the two MSBs are set, i.e. in the absence of CPU involvement, IRQ will be be not asserted for 24576 cycles, then asserted for 8192 cycles, and repeat endlessly.
 
== See also ==
* [http://nesdev.org/42.txt Pirate game "Mario Baby" Mapper #42 Info] by The Mad Dumper.

Latest revision as of 00:45, 18 April 2018

iNES Mapper 042 was used for hacked FDS games converted to cartridge form. At least two examples are known: Ai Senshi Nicol and "Mario Baby" (really Bio Miracle Bokutte Upa). While they likely used different hardware, they can both be encompassed by a single mapper.

Overview

  • PRG ROM size: 128 KiB
  • PRG ROM bank size: 8 KiB
  • PRG RAM: No
  • CHR capacity: 128KiB ROM or 8KiB RAM
  • CHR bank size: 8 KiB
  • Nametable mirroring: Mapper controlled
  • Subject to bus conflicts: ??

Banks

  • CPU $6000-$7FFF: 8KiB switchable PRG ROM bank
  • CPU $8000-$FFFF: Fixed to last 32 KiB of PRG ROM
  • PPU $0000-$1FFF: 8KiB switchable CHR ROM bank or 8KiB fixed CHR RAM

Registers

Register addresses should be masked with $E003.

CHR Select ($8000)

7  bit  0
---- ----
xxxx CCCC
     ||||
     ++++- Select 8 KB CHR ROM bank for PPU $0000-$1FFF

This register is ignored on Bio Miracle Bokutte Upa, which uses 8KiB CHR RAM instead.

PRG Select ($E000)

7  bit  0
---- ----
xxxx PPPP
     ||||
     ++++- Select 8 KB PRG ROM bank for CPU $6000-$7FFF

Mirroring Control ($E001)

7  bit  0
---- ----
xxxx Mxxx
     |
     +---- Mirroring (0: Vertical; 1: Horizontal)

IRQ Control ($E002)

7  bit  0
---- ----
xxxx xxEx
       |
       +-- IRQ (0: Disable, Acknowledge, and Reset; 1: Enable)

The IRQ hardware counts M2 cycles and triggers after 24576 ($6000) have elapsed. FCEUX's source implies that the IRQ hardware is a 15-bit counter, and IRQ is asserted while the two MSBs are set, i.e. in the absence of CPU involvement, IRQ will be be not asserted for 24576 cycles, then asserted for 8192 cycles, and repeat endlessly.

See also