INES Mapper 219: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
m (→‎Banking: multiplying is hard)
m (→‎Registers: mysterious deletion undone)
Line 36: Line 36:
| $23 || - || ..PPPP.. || (reversed) bits of PRG bank $E000-$FFFF, central nibble only
| $23 || - || ..PPPP.. || (reversed) bits of PRG bank $E000-$FFFF, central nibble only
|-  
|-  
| - || $08-$1e even || CBA98765 || Outer CHR bit latch for any 1k bank, 8 bits
| - || $08-$1e(even) || CBA98765 || Outer CHR bit latch for any 1k bank, 8 bits
|-  
|-  
| - || $09 || 7654321. || CHR bits for $0000-$03FF  
| - || $09 || 7654321. || Inner 7 CHR bits for $0000-$03FF  
|-  
|-  
| - || $0B || 765432*. || Inner 7 CHR bits for $0400-$07FF (*least bit ORed to 1 regardless)
| - || $0B || 765432*. || Inner 7 CHR bits for $0400-$07FF (*least bit ORed to 1 regardless)
Line 44: Line 44:
| - || $0D || 7654321. || Inner 7 CHR bits for $0800-$0BFF
| - || $0D || 7654321. || Inner 7 CHR bits for $0800-$0BFF
|-  
|-  
| - || $0F || 765432*. || Inner 7 CHR bits for $0C00-$0FFF (*least bit ORed to 1 regardless)
| - || $0F || 765432*. || Inner 7 CHR bits for $0C00-$0FFF (*least bit ORed to 1 regardless)
|-
|-
| - || $11 || 7654321. || Inner 7 CHR bits for $1000-$13FF
| - || $11 || 7654321. || Inner 7 CHR bits for $1000-$13FF
|-  
|-  
| - || $15 || 7654321. || Inner 7 CHR bits for $1400-$17FF
| - || $15 || 7654321. || Inner 7 CHR bits for $1400-$17FF
|-
|-
| - || $19 || 7654321. || Inner 7 CHR bits for $1800-$1BFF
| - || $19 || 7654321. || Inner 7 CHR bits for $1800-$1BFF
|-  
|-  
| - || $1D || 7654321. || Inner 7 CHR bits for $1C00-$1FFF
| - || $1D || 7654321. || Inner 7 CHR bits for $1C00-$1FFF
|}
|}



Revision as of 09:34, 14 October 2016

"A9746"

Banking

  • PRG: 4x8KiB (none fixed), 4 bits = 128KiB max
  • CHR: 8x1KiB, 12 bits = 4MiB max

Registers

Mask: $E003
$8000 Select Register 1
$8002 Select Register 2
$8001 Control Register
Whichever of $8000, $8002 is last written decides what $8001 writes do.

It appears to have MMC3-like IRQ registers, as the implementation just falls through and uses those directly.

Mask $E001 
$C000 IRQ latch
$C001 IRQ reload
$E000 IRQ disable
$E001 IRQ enable
CHR banking is very odd. The following bits are ORed together:
Latch: CBA98765.... [write << 4]
Inner: .....7654321 [write >> 1]
and, if the bank is $0400 or $0C00, the least significant bit is further ORed with 1.
This has the effect of allowing consecutive writes to adjacent bank regs to get "sort of" a 2k bank.
$8000 write $8002 write bits $8000 effect
$26 - ..PPPP.. (reversed) bits of PRG bank $8000-$9FFF, central nibble only
$25 - ..PPPP.. (reversed) bits of PRG bank $A000-$BFFF, central nibble only
$24 - ..PPPP.. (reversed) bits of PRG bank $C000-$DFFF, central nibble only
$23 - ..PPPP.. (reversed) bits of PRG bank $E000-$FFFF, central nibble only
- $08-$1e(even) CBA98765 Outer CHR bit latch for any 1k bank, 8 bits
- $09 7654321. Inner 7 CHR bits for $0000-$03FF
- $0B 765432*. Inner 7 CHR bits for $0400-$07FF (*least bit ORed to 1 regardless)
- $0D 7654321. Inner 7 CHR bits for $0800-$0BFF
- $0F 765432*. Inner 7 CHR bits for $0C00-$0FFF (*least bit ORed to 1 regardless)
- $11 7654321. Inner 7 CHR bits for $1000-$13FF
- $15 7654321. Inner 7 CHR bits for $1400-$17FF
- $19 7654321. Inner 7 CHR bits for $1800-$1BFF
- $1D 7654321. Inner 7 CHR bits for $1C00-$1FFF

Sources