Super NESduino

.

you might want to go with something like a raspberry pi. Not saying you can't do it with Arduino, but it would make things much simpler to use a raspberry pi.

arduinoPi: Not saying you can't do it with Arduino

Okay then I will say it: You can not emulate a SNES (or NES) with just an Arduino.

The Arduino is a Micro*controller* with a limited amount of RAM. Both of those systems had micro*processors*, video processors, and sound generators all of which were more powerful than the ATmega328.

Wrong project for an Arduino.

.

Pins has nothing to do with it.

The SNES was based on a 16-bit microprocessor running a 21MHz clock with 128k of RAM. That's just the CPU. You'd still have to account for a GPU, Sound processor, and controller interface.

The Arduino is based on an ATmega328 which is a 8-bit microcontroller running 16MHz with 2k of RAM.

See the problem?

.

Nelsyv:
Can’t you just burn the Arduino bootloader to any microcontroller though?

Sure as long as it is one of the 3 types of microcontrollers Arduino bootloaders exist for.

I agree with James, wrong project for an AVR Arduino, but it could be possible with a Due. That assumes you're willing to write a crapload of code. A Raspberry Pi would be a much better choice and it's very similar in size to an Arduino Uno. In fact, there are existing SNES emulators that could be pretty easily compiled to work without you having to write any code at all.

djjoshuad: I agree with James, wrong project for an AVR Arduino, but it could be possible with a Due.

Emulating a system with 128k of RAM in a microcontroller with 40k 96k of RAM would be interesting.

Of course the Due's SAM3 does support an external memory chip, but you'd have to design a custom board to support it.

The "official" Due ships with 96k and I assumed he would need to add at least another 32k, but some of the clones are being given more. RasPi is still a significantly better choice but he wanted to use an Arduino ;)

My bad, that changed from the announcement and I never caught it...

Well you might be able to with more than one Arduino...'maybe' everything except sound...only because I don't know crap about sound on the arduino, and I have been trying to figure out how to put a PC sound headphone jack on my project for MONTHS!!! But with one arduino doing all the Video, and another to offload some other things, like joystick, and well LOTS of other things...just a thought

Nelsyv: I'd like to build a handheld SNES emulator based on an Arduino.

I just want a little guidance on my project. I know it is very ambitious, and maybe not even possible. That said, here's my initial idea:

Draft 1

  • A microcontroller with plenty of internal memory (program probably will take a lot of space)
  • An SD card shield/reader (put ROM(s) to be loaded on the SD card)
  • An LCD shield with at least 256x224 resolution (for video output, but maybe also a GUI)
  • An audio shield w/speakers (for audio output)
  • Buttons (for controls)
  • A battery pack (so it is portable)

As for how to emulate a ROM... I found an open-source SNES emulator called "ZSNES" that says it is written in C++, which, if I am not mistaken, can probably be converted to work on Arduino with some effort?

As far as I figure, I should probably start with the software, and then I'll know what kind of requirements I will need for hardware. So the first question is: "Where do I start?"

I'm going to attempt this.. I've got an attiny85, 2 uno r3s, a mega 2560, a bunch of shields for SD, audio and so on. But I think what might help in my case is my zilog encore xp: 20MHz eZ8 microprocessor core 1KB Flash memory with in-circuit programming capability 256B register RAM 64B EEPROM capability Up to 8-channel, 10-bit analog to digital converter (ADC) with a fast 11.9µs conversion time On-chip analog comparator Two 16-bit timers with Capture, Compare and PWM capabilities Watchdog Timer (WDT) 17 to 23 I/O pins depending upon package Up to 18 interrupts with configurable priority On-chip debugger, Voltage Brown-Out Protection, Power-On Reset 0°C to +70°C standard temperature and –40°C to +105°C extended temperature operating ranges