Page 1 of 1

Trying to pass PPU read buffer tests

Posted: Fri Mar 22, 2019 11:18 am
by twicetimes
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:

Image

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.

Re: Trying to pass PPU read buffer tests

Posted: Sat Mar 23, 2019 1:05 pm
by twicetimes
Solved. The issue was not updating the PPUDATA read buffer correctly when reading from palette memory (0x3F00 - 0x3FFF)

The wiki says that
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.
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.

Re: Trying to pass PPU read buffer tests

Posted: Sat Mar 23, 2019 1:41 pm
by tepples
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).

Re: Trying to pass PPU read buffer tests

Posted: Sat Mar 23, 2019 4:47 pm
by twicetimes
Makes sense, thanks.