NES 2.0 Mapper 266
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.