Trying to pass PPU read buffer tests

Discuss emulation of the Nintendo Entertainment System and Famicom.

Moderator: Moderators

Post Reply
twicetimes
Posts: 5
Joined: Sat Mar 09, 2019 5:10 am

Trying to pass PPU read buffer tests

Post 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.
twicetimes
Posts: 5
Joined: Sat Mar 09, 2019 5:10 am

Re: Trying to pass PPU read buffer tests

Post 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.
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Trying to pass PPU read buffer tests

Post 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).
twicetimes
Posts: 5
Joined: Sat Mar 09, 2019 5:10 am

Re: Trying to pass PPU read buffer tests

Post by twicetimes »

Makes sense, thanks.
Post Reply