One man gave me NTSC NES to fix. The problem was that all games were running correctly, but instead of background - there was just random checkboard of tiles (sprites are displayed correctly). At first glance I thought that VRAM is broken, but no.. it is the PPU itself!

I replaced it with UA6528 and all works fine, but I kept that broken PPU for myself. Because I have not many NTSC PPUs in my collection -> I thought it would be good exercise to take closer look at the problem and maybe fix it.

So for all CHR-ROM games, it displays just random set of sprites:

But if it's CHR-RAM game, there is complete mess:

So now I was sure that PPU has problems with writing to its external memory. I thought that maybe !WR signal is broken, but no - it is asserted correctly. Then I wrote simple testing program that forces PPU to write 0 to consecutive addresses (attachment):

Code:

set_ppu_addr_to $0000loop: lda #0 sta PPUDATA jmp loop

and I viewed signals on logic analyzer what is going on (and compared them against another working PPU).

Good PPU (second photo is magnified view at the moment data is driven)

Bad PPU:

Now I was sure - PPU is not driving its data bus with data to be written, so instead of data.. low 8 bits of address are written!

Because the data that PPU writes to its memory always comes from CPU (and it is always from $2007), I thought of making small addon board that would latch all writes to $2007 and when !WE is asserted - output it, instead of `invalid` PPU data - good idea?What about games that make use of raster effects?

Sometimes when I load any of those demos, background is blinking black-white (as visible in attached video) but after restarting console, it is displayed correctly so maybe those demos are sensible for CPU/PPU cycle allignment.

Who is online

Users browsing this forum: No registered users and 3 guests

You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot post attachments in this forum