The FPGA Videogame Console


Testing out the sprite overflow flag. I have it setting the green emphasis bit now if 9 or more sprites are on a line.

Same thing again, only this time with the sprites on top of the tiles to test the overflow flag AND the sprite 0 flag. I have it setting the blue emphasis bit when a visible sprite 0 pixel hits a visible tile pixel. This can be seen at the top of the screen.

A complete PPU screen dump. Everything is working great; the score and diamond counter and other things are sprites.

The first code is being run on the CPU! Before I worked on the PPU, I had the CPU running. I was using NSFs to debug my CPU before this point along with the simulator in the FPGA design environment so I knew it was relatively bug free. This Quietust's "Copper Bars" demo. It was perfect since it fits completely on the FPGA; DRAM is not working at this point.

And again on my 21" monitor. Pixels are RAZOR sharp! They can cut you if you're not careful. :-)

Again, with the lights turned off. I'm impressed with just how sharp the video is. It's better than most emulators even.

Now I'm trying to get the DRAM working. This is the Copper Bars demo again, but with the PPU using the DRAM for the graphics and nametables. It isn't working out too hot!

After tweaking the DRAM state machine, thinks are kinda looking better- but the graphics have a worrysome wrapping going on. Later on I would find out that this was OLD memory contents that were written on the first test! I had broken writes and didn't know it.

This is now with the dual port DRAM action going on. I wouldn't learn for a long time that I had an error on a multiplexer, so I couldn't get graphics working right for about 3-4 weeks!

I ironed out enough bugs in the DRAM unit to load 32K PRG's into memory with an improvised UART and BIOS code on the FPGA. A little mod to my QBASIC NSF loader and I had it loading the PRG ROMs. Before this I had to make a special RAM loader to load the CHR ROM into the PPU area.

There was still a bug in the CPU though... a VERY NASTY bug. Specifically, the carry flag was not being saved during some stack ops properly. This caused the blocks to shoot up and just keep flying around and around and around when hit, as you can see in the pic. The block is near the score area. Also, hammers were appearing out of nowhere and hitting me and stuff.

After some work, that was found and fixed. And I decided to dork around and play SMB and show it off. There were still some problems however, the DRAM unit wasn't perfect and it'd miss a write or something and just crash and lock the system up randomly.

Welcome to Warp Zone, w00t!

World 2, please.

Everything looks good.

Onto world 2-3. Shortly after this, the console crashed from the afore-mentioned DRAM problem.

I restarted and warped to world 5, and dorked around some more.

After playing with SMB awhile, I had to try out some other games. Sachen's Lock Smith was a pretty good game for a next test. I've actually beaten this POS game a couple times believe it or not! The little puzzles at the end are actually kinda fun.

Then I tried Little Red Hood. This of course is also another Sachen title. Ugh. Shitty game, but it worked.

After getting everything else working, I just had to try Route-16. This is a really spiffy Sunsoft game.


All HTML and graphics designed and © by Kevin Horton .