NES 2.0 Mapper 304

From NESdev Wiki
Jump to navigationJump to search

NES 2.0 Mapper 304 is used for several ROM cartridge conversions of Famicom Disk Systems for which, along with the entirely-different INES Mapper 043 and NES 2.0 Mapper 311, UNIF MAPR UNL-SMB2J is used.

FCEUX' source code says that the PCB for both the CHR-ROM and CHR-RAM variants is named 09-034A.

Banks

  • CPU $6000-$7FFF: Switchable 8 KiB PRG-ROM bank (#4-#5)
  • CPU $8000-$FFFF: Fixed 32 KiB PRG-ROM bank #0
  • PPU $0000-$1FFF: Unbanked 8 KiB CHR-ROM or CHR-RAM.

Registers

Unknown Registers ($4042-$4055, read)

Reading from these addresses must return $FF rather than open bus, otherwise SMB2J will freeze.

PRG Bank Select ($4027, write)

Mask: Unknown

Bit 7654 3210
    ---------
    .... ...B
            +- 0: CPU $6000-$7FFF to 8 KiB bank #4
               1: CPU $6000-$7FFF to 8 KiB bank #5

On games with only 32 KiB ROM, $6000-$7FFF will (as usual) wrap to banks #0 and #1.

IRQ Control ($4068, write)

Mask: Unknown

Bit 7654 3210
    ---------
    .... ...I
            +- 0: Disable and Acknowledge IRQ, and reset counter
               1: Enable IRQ

According to FCEUX, when enabled, IRQ counter increases on every M2 cycle until it reaches 5750, upon which an IRQ is fired. While this does work nicely with the ROM image of LE10, the hardware video recording seems to indicate that the actual hardware does not have a functioning IRQ counter.