NES 2.0 Mapper 266

From Nesdev wiki
Jump to: navigation, search

NES 2.0 Mapper 266 is used by City Fighter IV, a hack of Master Fighter II that adds (very grungy) PCM speech output. Given that its resolution (four bits) is worse than the NES/Famicom's own DAC at $4011 (seven bits), it's not immediately obvious what the purpose of including its own DAC is, other than perhaps the possibility of low-pass filtering the 3.5 kHz-sampled PCM data on the circuit board. Its UNIF board name is UNL-CITYFIGHT.

Registers

Mirroring ($9000)

Mask: Probably $F808

7654 3210
---------
.... ..MM
       ++- Set nametable mirroring
           0: Vertical
           1: Horizontal
           2: One-screen page 0
           3: One-screen page 1

PRG-ROM Bank ($9008)

Mask: Probably $F808

7654 3210
---------
.... PP..
     ++--- Select 32 KiB PRG-ROM bank at CPU $8000-$FFFF

PRG Banking Mode ($C000)

Mask: Probably $F000

7654 3210
---------
.... ...M
        +- Set PRG Mode
           0: $C000-$DFFF is a mirror of $8000-$9FFF
           1: $C000-$DFFF is not a mirror of $8000-$9FFF

PCM Output ($9800)

Mask: Probably $F800

7654 3210
---------
.... PPPP
     ++++- Unsigned PCM data

CHR-ROM Banks ($A000-$BFFF, $D000-$EFFF)

Mask: Probably $F00C

A000    Set 1 KiB CHR-ROM bank at PPU $0800-$0BFF (low nibble)
A004    Set 1 KiB CHR-ROM bank at PPU $0800-$0BFF (high nibble)
A008    Set 1 KiB CHR-ROM bank at PPU $0C00-$0FFF (low nibble)
A00C    Set 1 KiB CHR-ROM bank at PPU $0C00-$0FFF (high nibble)
B000    Set 1 KiB CHR-ROM bank at PPU $1000-$13FF (low nibble)
B004    Set 1 KiB CHR-ROM bank at PPU $1000-$13FF (high nibble)
B008    Set 1 KiB CHR-ROM bank at PPU $1400-$17FF (low nibble)
B00C    Set 1 KiB CHR-ROM bank at PPU $1400-$17FF (high nibble)
D000    Set 1 KiB CHR-ROM bank at PPU $0000-$03FF (low nibble)
D004    Set 1 KiB CHR-ROM bank at PPU $0000-$03FF (high nibble)
D008    Set 1 KiB CHR-ROM bank at PPU $0400-$07FF (low nibble)
D00C    Set 1 KiB CHR-ROM bank at PPU $0400-$07FF (high nibble)
E000    Set 1 KiB CHR-ROM bank at PPU $1800-$1BFF (low nibble)
E004    Set 1 KiB CHR-ROM bank at PPU $1800-$1BFF (high nibble)
E008    Set 1 KiB CHR-ROM bank at PPU $1C00-$1FFF (low nibble)
E00C    Set 1 KiB CHR-ROM bank at PPU $1C00-$1FFF (high nibble)

7654 3210
---------
.... PPPP
     ++++- 1 KiB CHR bank number (low/high nibble depending on address)

IRQ Counter ($F000/$F004)

Mask: Probably $F00C

F000    Set low nibble of 8-bit IRQ counter
F004    Set high nibble of 8-bit IRQ counter

7654 3210
---------
.... VVVV
     ++++- IRQ counter data (low/high nibble depending on address)

IRQ Enable/Acknowledge($F008)

Mask: Probably $F008

7654 3210
---------
.... ..E.
       +-- 1=Enable IRQ

Writing to this register also acknowledges the IRQ.

IRQ operation

If the IRQ is enabled, the counter is decremented on every second M2 cycle. If it becomes zero, an IRQ is raised.