Go Down

Topic: Super NESduino (Read 12533 times) previous topic - next topic

Nelsyv

Jan 30, 2013, 02:16 am Last Edit: Dec 30, 2016, 12:25 am by 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?"

arduinopi

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.
All of my projects --> http://www.frankmagazu.com/

James C4S


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 Microcontroller with a limited amount of RAM.  Both of those systems had microprocessors, video processors, and sound generators all of which were more powerful than the ATmega328.

Wrong project for an Arduino.
Capacitor Expert By Day, Enginerd by night.  ||  Personal Blog: www.baldengineer.com  || Electronics Tutorials for Beginners:  www.addohms.com

Nelsyv

#3
Jan 31, 2013, 12:09 am Last Edit: Dec 30, 2016, 12:33 am by Nelsyv
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 Microcontroller with a limited amount of RAM.  Both of those systems had microprocessors, video processors, and sound generators all of which were more powerful than the ATmega328.

Wrong project for an Arduino.
Breaking this down, it seems to me what you are saying is that the limitations of an Arduino for this idea are:

  • Sound production
  • Video production
  • microprocessor (which, correct me if I am wrong, is very similar to a microcontroller but it has more pins and such?)
  • "power" of ATmega328


I guess I was thinking about it this way: sound production is easily achieved (look at mp3 shields), and video production is also easily achieved (look at LCD shields and RCA output), so the only thing that I can't think of a solution to is the last two points. But I am not exactly sure what you meant by them.
If what you mean is not enough pins, I'm pretty sure there are controllers available with more pins than an ATmega328.
If you mean memory limit, I'm pretty sure there are controllers available with more memory capacity than an ATmega328.
If you mean something different entirely, then I'm just further proving myself inexperienced.

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.
I don't know a whole lot about Raspberry Pi. Aren't they much larger? Also, what programming language do they use?

James C4S

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?
Capacitor Expert By Day, Enginerd by night.  ||  Personal Blog: www.baldengineer.com  || Electronics Tutorials for Beginners:  www.addohms.com

Nelsyv

#5
Jan 31, 2013, 02:16 am Last Edit: Dec 30, 2016, 12:33 am by Nelsyv
Can't you just burn the Arduino bootloader to any microcontroller though? I'm sure there are microcontrollers available with that kind of RAM and clock speed. I don't think the hardware limitations are very limiting if you just use a non-Arduino controller, unless I misunderstand the versatility available.

James C4S


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.
Capacitor Expert By Day, Enginerd by night.  ||  Personal Blog: www.baldengineer.com  || Electronics Tutorials for Beginners:  www.addohms.com

djjoshuad

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.

James C4S

#8
Jan 31, 2013, 03:24 am Last Edit: Jan 31, 2013, 03:36 am by James C4S Reason: 1

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.
Capacitor Expert By Day, Enginerd by night.  ||  Personal Blog: www.baldengineer.com  || Electronics Tutorials for Beginners:  www.addohms.com

djjoshuad

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 ;)

James C4S

My bad, that changed from the announcement and I never caught it...
Capacitor Expert By Day, Enginerd by night.  ||  Personal Blog: www.baldengineer.com  || Electronics Tutorials for Beginners:  www.addohms.com

lmaceleighton

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

Go Up