The existing PPU documentation is excellent, but there are a few minor aspects that I thought were somewhat unclear.
(1) If the primary object has an X-coordinate in the range (0...7) and the OBJ clip or background clip features (or both) are enabled, will the primary object collision still take place?
(2) The Nesdev Wiki says that "Addresses $3F04/$3F08/$3F0C can contain unique data, though these values are not used by the PPU when rendering". Are these ever used in any fashion, or are writes to them simply ignored completely? My understanding is that, when the background is disabled, the PPU will render the palette entry last accessed by $2006. Apparently, Disch needed to do this to get some Camerica games to run. So, if you ran the following code -
- would this cause the normally-unused palette entry in $3F04 to be rendered as the background color during the blanked lines? Or would the PPU simply display the transparency ($3F00) color instead?
(3) Brad Taylor's PPU documentation indicates that eight pairs of garbage nametable fetches take place during HBlank when the OBJ tile data for the next scanline is being retrieved. Do we know what addresses appear on the PPU bus during these fetches? That could be significant for emulating mappers like MMC3.
(4) Speaking of which, Kevin Horton's documentation on MMC3 conflicts with Brad Taylor's comments. Kevin's documentation says that the IRQ counter is triggered on a rising edge of A12; Brad's documentation says on every 42nd rising edge of A13. Which is more accurate?
Thanks for any assistance in these matters.
(1) If the primary object has an X-coordinate in the range (0...7) and the OBJ clip or background clip features (or both) are enabled, will the primary object collision still take place?
(2) The Nesdev Wiki says that "Addresses $3F04/$3F08/$3F0C can contain unique data, though these values are not used by the PPU when rendering". Are these ever used in any fashion, or are writes to them simply ignored completely? My understanding is that, when the background is disabled, the PPU will render the palette entry last accessed by $2006. Apparently, Disch needed to do this to get some Camerica games to run. So, if you ran the following code -
Code:
lda $2002 ;clear flipflop
lda #$04
sta $2006
lda #$3f
sta $2006 ;put $3f04 on the PPU bus
lda #$00
sta $2001 ;disable screen
lda #$04
sta $2006
lda #$3f
sta $2006 ;put $3f04 on the PPU bus
lda #$00
sta $2001 ;disable screen
- would this cause the normally-unused palette entry in $3F04 to be rendered as the background color during the blanked lines? Or would the PPU simply display the transparency ($3F00) color instead?
(3) Brad Taylor's PPU documentation indicates that eight pairs of garbage nametable fetches take place during HBlank when the OBJ tile data for the next scanline is being retrieved. Do we know what addresses appear on the PPU bus during these fetches? That could be significant for emulating mappers like MMC3.
(4) Speaking of which, Kevin Horton's documentation on MMC3 conflicts with Brad Taylor's comments. Kevin's documentation says that the IRQ counter is triggered on a rising edge of A12; Brad's documentation says on every 42nd rising edge of A13. Which is more accurate?
Thanks for any assistance in these matters.