Could somebody please explain $8000.7 in detail?
"When set, does an effective XOR of 1000h with the CHR addresses." -Kevtris
What does this mean? Which CHR addresses?
Thanks
This is the place where the tiles you use to draw the screen are. The 8KByte chunk at the beginning of the PPU memory ($0000-$1FFF) that holds the pattern tables.
MMC3 bankswitching divides one of the 4K halfs in 2 parts and the other 4K in 4 parts. The bit you asked about lets you choose wich one you want to divide in 2 and the other one is diveded in 4 pieces.
In the mapper document, you can see that by default, the first page is divided in 2 pieces and the second is divided in 4 pieces. If you set that bit, you invert this.
At least this is what I understood from the document...
It affects how the MMC3 handles pattern table accesses.
One setting treats the CHR bank registers as
$0000 (2 KB), $0800 (2 KB), $1000 (1 KB), $1400 (1 KB), $1800 (1 KB), $1C00 (1 KB)
SMB3 uses this.
The other setting treats the CHR bank registers as
$1000 (2 KB), $1800 (2 KB), $0000 (1 KB), $0400 (1 KB), $0800 (1 KB), $0C00 (1 KB), in that order
Kirby uses this.
When set... when the NES requests patterns at $1xxx, the cart returns patterns at $0xxx... likewise when the NES requests patterns at $0xxx, the cart returns patterns at $1xxx.
In practice... this allows the game to switch which pattern table has 2k banks and which has 1k banks. By default (that bit off), the right pattern table (typically sprites -- especially considering the way MMC3's IRQ counter works) has 1k swappable banks, and the left pattern table (BG) has 2k banks.
If the game wanted to have sprites 2k banks and BG 1k... it couldn't flip the pattern selection bits in $2000.3 and $2000.4 without breaking MMC3's IRQ counter operation -- so the game can flip on MMC3's $8000.7 bit to have the same effect.
You cannot manipulate $8000.7 to get all 1k banks... it won't work. As soon as you change the state of $8000.7 it will appear as though the pattern tables have instantly "switched"
edit -- pfft... 2 other people replied in the time I typed my reply XD hahaha
Thanks everybody I understand now