The FPGA Videogame Console


Back to Aladdin for a bit, seeing if it still worked.

And back again to Super Mario World to play around again after fixing mapper 90 for hardware nametables, to make sure it still worked!

I love bashing Yoshi's head in to make him stick his tongue out.

After doing mapper 90, I decided I'd implement the largest multicart to date- 3Mbytes total. This required some redesign of the loader hardware so I could address all of the ROM data. This is the menu for it. All the games worked fine.

Because I like abuse, I had to play around with the Sachen mappers. I went for the most common 8259 mapper, since many games used it. Implementing it wasn't too tough.

This is possibly one of the most fucked-up and neat NES game intros ever. It's on the game Pipe 5. This dood walks along and climbs a ladder, then opens the valve and water floods in filling the screen. Finally, bubbles rise up from his head and stuff. This nifty little tune plays as it happens.

My favourite Sachen game ever: Strategist! It's an NES version of the game Milles Bournes. A card game my sis and I used to play the hell out of when we were younger. There's two variations which is really nice.

After that diversion, I decided to expand on mapper 90, and "multiplex" it with MMC5. MMC5 was the other "huge" mapper that I needed to implement. Interestingly, much of the mapper 90 stuff was directly applicable. The interrupt structure of course wasn't, and the split screen wasn't, but alot of the PRG and CHR banking was. I spent around 2 days to get it this far.

Things were working OK, but there were still some interrupt problems here and there. I got them working good enough, however, to get the vertical scrolling screen working.

It took some doing to get Just Breed going, however. I didn't have the multiplier implemented right so the game wouldn't even start until that was fixed.

This game is the largest licensed/legit NES game made. It's got 512K of PRG and 512K of CHR. I had to do some MMC5 reverse engineering to figure out how to get the MMC5 to address all of its CHR. Turns out there's another register that provides 2 more bank bits!

If this looks right, then you got banking right.

Gunsight was a game I used alot to debug interrupts. It uses the HELL out of interrupts! Also, it uses the "nametable fill" mode to scroll the graphics in from a blank screen. I dunno why the MMC5 supports this, but it does and you have to emulate it properly for this game to look good.

If interrupts are not right, this screen is all hosed. They trigger around 6 or 7 interrupts on here to do a really neat "parallax" scroll when you take off.

SDF was the first MMC5 game I got running. It doesn't use much of the MMC5 hardware for the game, but it is the only game that uses the vertical split screen mode.

I spent another 2-3 days heavily reverse engineering the MMC5 mapper to figure out EXACTLY how the split screen mode worked, and how everything interacts. There are LOTS of interactions between the split screen function and the desired nametable and the EXRAM and all that crap. I meticulously reverse engineered it all so that my MMC5 is an exact clone of the real deal. If you get this demo loop of SDF working, you're doing very good.

This is one of the Koei games. All of their games were written in C, and are very slow as a result. They also use some of the more odd features of the MMC5 like the "in VBLANK" flag and stuff. If this is not emulated right, the game will write to the PPU during rendering which hoses everything up!

If this looks good, then your VBLANK flag on the MMC5 is working properly.

This is a pirate of the game Bio Miracle. This was poorly titled "Mario Baby" on the top of the cart in english. It is the FDS version of Bio Miracle, stuffed onto a cart! The coolest part (that I wouldn't learn until later) is the FDS music is still intact! I use this later to debug my FDS audio circuitry.

On world 4, you gotta crawl over some circuitry. Just don't walk on the chips with their pins sticking up. It hurts a whole lot. The "LED" thing cracks me up.


All HTML and graphics designed and © by Kevin Horton .