My emulator is starting to produce accurate looking games, but there's some graphical errors, so I'm trying to run the PPU-related tests from the test page on the wiki.
I'm getting the following results from the ppu read buffer tests:
I'm not sure what to make of the "should I go on", when there's no failures before that point. Anyone who's run these tests before have any insight here?
Thanks.
Trying to pass PPU read buffer tests
Moderator: Moderators
-
- Posts: 5
- Joined: Sat Mar 09, 2019 5:10 am
Re: Trying to pass PPU read buffer tests
Solved. The issue was not updating the PPUDATA read buffer correctly when reading from palette memory (0x3F00 - 0x3FFF)
The wiki says that
The wiki says that
However, I couldn't find any info on exactly which address should be used to populate the read buffer in this scenario. From other emulators, it appears to be PPU_ADDR - 0x1000, but I can't really intuit why that is the case.Reading palette data from $3F00-$3FFF works differently. The palette data is placed immediately on the data bus, and hence no dummy read is required. Reading the palettes still updates the internal buffer though, but the data placed in it is the mirrored nametable data that would appear "underneath" the palette.
Re: Trying to pass PPU read buffer tests
It's the case because the majority of the time (that is, on just about every board but GTROM), video memory $3000-$3FFF mirrors $2000-$2FFF. When PA13 is high ($2000-$3FFF), nothing is listening to PA12 (the line that distinguishes $0000-$0FFF from $1000-$1FFF and distinguishes $2000-$2FFF from $3000-$3FFF).
-
- Posts: 5
- Joined: Sat Mar 09, 2019 5:10 am
Re: Trying to pass PPU read buffer tests
Makes sense, thanks.