[Andrew] is developing a game for the Nintendo Entertainment System (NES). Emulators are great for this, but [Andy] loves running on the real iron. To help, he’s created a dual port RAM interface for his NES. As the name implies, a dual port RAM is a memory with two separate data and address buses. The Cypress Semiconductor CY7C136 [Andy] used also includes arbitration logic to ensure that both ports don’t attempt to access the same memory cell and cause data corruption. In [Andy’s] case the NES was on one side, oblivious to the new hardware. On the other side of the dual port RAM, [Andy] installed an ATmega164 running his own custom firmware.
The new hardware gives [Andy] a live view of what’s going on in the NES’s memory. He added a live memory view/edit screen similar to the FCEUX emulator. The window runs on a PC while the game itself is running on an NES. [Andy] was even able to add rudimentary break and step features by connecting his circuit to the Non Maskable Interrupt (NMI) line of the NES. By holding the NMI asserted, the ATmega can essentially freeze the game in progress.
[Andy] has even used his circuit to teach the NES some new tricks. By reading the timer and score memory locations on Ice Hockey, he was able to create a scoreboard and goal light. Similar techniques were used to give Contra a muzzle flash light which puts Ambilight systems to shame.
We don’t know what [Andy] is planning next, but we hope it’s a source release so we can start hacking some some games ourselves!
Click past the break to see a couple of [Andy’s] Vine videos.
11 thoughts on “Dual Port RAM Teaches An Old NES New Tricks”
Wow that is impressive. I still have mine (only owner) and haven’t had a reason to bring it out. Hmm…
Not much to say about this except that it’s awesome!
dual ported ram is one of the best things ever
last time i saw someone doing something LIKE this,
it was a looong time ago!
he should seriously consider making a second that stands in for the game program data. AKA game-cart
because using both of them at once would be insane :D
in addition to the things you could do with such a setup would be insane :D
i mean being able to create a game-genie type device execpt on a whole different level!
(no pun intended)
WIth full access to both ram and rom contents, you could feed the NES basically an unlimited size / malleability cartridge. Now tie that into an internet enabled computer. Suddenly your nes has internet multiplayer, Gigabytes large game worlds, endless tracklists for background music.
FIrst thing I would want is a console played MUD or MMO game in true 8 bit style!
I want to see megaman 10 ported to the NES
Not Ice Hockey, that is Blades of Steel!
Yes, definitely Blades Of Steel – I spent much too much time playing that when I was younger.
I spent a lot of time playing it just to get to the half-time mini games.
This is one of the cooler hacks I’ve seen here in a while (well, it’s right up my alley). Very cool project that makes me wish I leaned more of the EE side of my engineering degree.
Please be kind and respectful to help make the comments section excellent. (Comment Policy)