Stuffing an NES into an FPGA

megaman_fpga

When the developer of the µTorrent torrent client and the ScummVM  LucasArts adventure game interpreter gets bored, something cool is bound to happen. Luckily for us, [Ludde] was a bit listless over Christmas, and with more time than energy to burn, implemented a Nintendo Entertainment System on an FPGA dev board.

The NES was powered by a Ricoh 2A03 CPU, a chip nearly identical to the 6502 found in the Commodore 64s and Apple IIs of the early 1980s. There are a few differences between the two, though: the NES CPU includes an Audio Processing Unit on the chip and is connected to a very cool Picture Processing unit elsewhere on the NES. [Ludde] put all these chips in his Spartan-6 FPGA with a lot of Verilog code.

The rest of the system – the RAM, display output, and controller input comes from the peripherals attached to the FPGA dev board. [Ludde]‘s specific board didn’t have a good digital to analog converter, so the composite output was traded for a VGA output. It’s not a completely accurate color pallet, but it’s still an amazing piece of work for someone who was simply bored.

Comments

  1. nafix says:

    Very nice.

  2. jero says:

    There’s another difference between the 2a03 and 6502 other than audio. The controller i/o is partially inside the 2a03. Also nintendo copied the entire 6502 die but they lasered off two transistors that would allow decimal mode to be activated for legal reasons. So you can’t use decimal mode (Even though its basically in there)

  3. DanielG says:

    Why is he holding a SNES controller?

    • Daniel says:

      “The Digilent USB Interface can also be used as a bidirectional communications channel between the FPGA and a program running on the PC. The only controllers I had were USB SNES controllers, so I hooked the controller up to the PC and have a small program that reads the joystick movements and sends these over the cable to the FPGA.”

    • mr_jrt says:

      The SNES controller is basically an extended NES controller…and he probably only had a SNES one lying about. If you look into the details, you can see a very logical progression in the pinout and signalling from the NES controllers all the way to the Gamecube controller. It’s really quite easy to wire up a SNES controller to a NES and have it work…abet the buttons aren’t the logical layout (IIRC, I think the SNES B & Y map to the NES’s B & A, rather than the logical B & A on the SNES pad).

  4. Dr. DFTBA says:

    Dumb question, but is the FPGA the giant board with the 7-segs on it?

  5. MooglyGuy says:
  6. steveg says:

    Hey brian; 6510 != 6502

    While Commodore owned mos technology the company that designed and made the 6501, 6502 and 6510 processors as well as using the 6502 in its PET and Vic-20 computers they didn’t use it in the c64! The Commodore 64 used the improved 6510 which added a digital io port and a tri-state address bus. I realize you may be to young to remember and the c64 looks a lot like the vic-20 but would it hurt you to spend a few minutes fact checking your article? I know this is only a blog, but could we get some semblance of journalistic integrity? This site routinely posts descriptions containing glaring errors that could’ve been stopped by 5 minutes of googling or in some cases even just reading the original article you’re linking too. When you do this it shows you don’t care about the readers, your job or the people who do the original hacks you repost and gain advertising revenue from. I spent a lot more time on this comment then you did on your article and it shows.

    • EccentricElectron says:

      You’re new here, aren’t you?

      • messmaker says:

        haha!

      • steveg says:

        No actually ive been reading this site for a very long time and remember fondly how much better it was before it turned into a business, i know these guys will never put that kind of effort into it, but considering this site makes money off of reposting other peoples work and the descriptions are pretty much the only original content here, i really don’t think its too much to ask that the bloggers actually read what they’re reposting and double check what they wrote to make sure they aren’t talking out of their @ss.

        • Punkguyta says:

          Sadly Steveg has a point guys..

        • Rob says:

          There are philosophical discussions to be had regarding the quality and depth of the education (primary, secondary, post-secondary) of the most recent generations… and what’s being observed here would certainly be a good jumping-off point for such discussions, though this is probably not the appropriate forum for a lengthy discussion of such.

          As a member of a more recent generation though, I have observed among myself and my peers a tendency toward rough accuracy without regard to deeper finesse. Whether this is a product of educational apathy (teachers or students) or technological reliance or some combination of both remains to be determined, however I’m happy to report that it’s certainly not willful (in most cases). Additional knowledge is always welcomed to fill in gaps and prevent future errors, however the sheer quantity of information seems to push us to focus on the short-term factual retention to the detriment of long-term pattern learning/avoidance. I think it has as much to do with educational style as it does with quality, but from a macro perspective I think it points to glaring issues with our educational system as a whole. The tradeoff is one of sheer information vs technical precision/specialization.

          One can only assume this isn’t the first time such differences in accuracy vs. scope have been oberved within the sciences. I certainly don’t think it will be the last. In the meantime though, HAD and other such forums exist both for instruction and correction, and if those of us in need of such are as eager to receive it as those of us who possess such are willing to provide it, then I think we’ll all continue to thrive.

  7. markaeric says:

    I’d just like to say that I too am “simply bored”, but you don’t see me writing an NES emulator on an FPGA. Granted, it’s not because I don’t want to, but because I can’t :P

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 91,363 other followers