The Gameduino


From the Gameduino website - "Tiny microcontrollers like the Atmel AVR used in the Arduino are now much more powerful than the 8-bit computers from the 1980s. So why not use them to play video games?"

We have to admit, that seems like a perfectly reasonable statement. So check it out - the Gameduino.

That's actually pretty impressive - those graphics are at least as good, if not better, than an old-school NES. The Gameduino is an awesome shield designed to work with the Arduino development platform (or any microcontroller with an SPI interface). As far as graphics go, the Gameduino outputs at 400x300 pixels in 512 colors.


A delicious double-stack.

The Gameduino website does a fantastic job of documenting how they did the build and they even give you all the files you need to build your own. It's a very cool project! It's also nice to see a worthwhile Kickstarter project make it all the way to production. Great work!


Comments 47 comments

  • This is pretty high-end video gaming for Arduino. Very nice. It uses a very expensive FPGA chip to do the heavy lifting for the VGA graphics, so the shield costs $53. Other Arduino-based game systems like Hackvision only use the ATmega328 to bit-bang out composite video that you connect to a TV. For comparison, Arduino Asteroids running solely on the ATmega328

    • The chip costs ~$12 in single quantities, not sure if that qualifies as “very expensive”. High end FPGAs can run 10k/ea.
      That is quite an interesting website though.

  • For the whole “Arduino vs C” bit. The AVR architecture is a bit of a hack to put into C as it is. C was designed for Von Nuemann based processors(code is also data). AVR is designed rather Harvard based(code is not data). This means a lot of things in C, just don’t work. For instance, function pointers, all the hacks required to get read-only strings, function lookup tables(including how switch is commonly implemented behind the scenes).
    But, For the most part, The Arduino programming environment is a subset of C++, and very closely a fully standard C99 environment(minus the architecture problems which makes certain things impossible).
    I actually ripped a copy of the Wiring library’s source code. All but three files compiled as C. Those three files had to do with printing and such. I actually ported them to C, but in C++ it’s cleaner. So case in point, what the arduino environment provides you is a tiny bit of built in boiler plate code(init/loop), and the C++ Wiring library. If you know how to program in the Arduino environment, you know how to program in C/C++(or at least a working subset)

    • I have to admit I miss C++. Nothing like taking a 175 page C program and cut it down to under 10 pages.
      But the way people talk about Ardunio it makes it sound like the IDE/langage is just casterated Java. And sometimes I have to agree. I wish the Ardunio was more like what Stroustrup ment C++ to be. “And no, that smaller and cleaner language is not Java or C#”

      • “I have to admit I miss C++. Nothing like taking a 175 page C program and cut it down to under 10 pages."
        I could be wrong, but I believe you are conflating C vs C++ with "not using libraries” vs “using libraries”.
        I know C developers who - once they learn a method of doing things - they use the same code in new projects for years. And when I do QA for them, I find the same bugs. :-) And when I demo the benefits of NOT writing their own HTTP client in C - and just use libcurl - then my example is 1 page of C vs their 5 pages of C.
        Given the option to use libraries, one can make your C example using the same 10 pages C++ required. Or Python. Or Perl (although, with Perl there’s probably a way to do it all on one line, and the author would omit any source comments ;-)

  • I had a gameduino pre-ordered when James announced the kickstarter project.
    I’m looking forward to trying it out.

  • I am getting tired of people labeling Atmel’s wonderful AVR as an Arduino.
    Arduino is for people who can’t learn to use C.

    • I don’t think you realize what you’re saying. Do you write yourself a new operating system from scratch every time you buy a PC? Or, even better, do you buy a bare Intel Core i7 and design your own 8+ layer board for it, etch the layers manually, silkscreen by hand, and bake? I doubt it, but I have faith in your ability to learn to do so, if you desire to.
      BTW, have you ever noticed the 6 pin ISP connector on the standard Arduinos? Program them as you see fit.
      *Larius has never used an Arduino, but appreciates their value.

    • C is for people who can’t learn to use assembly.

      • Assembly is for people who can’t learn to use machine code.
        Machine code is for people who can’t learn to use discrete logic ICs.
        Discrete logic ICs are for people who can’t learn to use transistors.
        Transistors are for people who can’t learn to use tubes.
        Tubes are for people who can’t learn to use spark gaps.
        We should all use more spark gaps (caution: high voltage). Sparkfun!

        • Um, as someone who works in tubes (microwave) for a living, I can assure you that they use high voltage as well. Im not quite sure what you can do with a spark gap though, even a triggered sparkgap wouldn’t be a very useful switch for logic. which is maybe why I’ve never heard of a sparkgap computer… transmitters maybe. nitpicking is fun!

      • Are you kidding me? 90% of all professional embedded software are developped using languages like C or Ada, mostly C, from cellphones to real time systems like those in an airplane flight control. Nevertheless in some circumstances you still may need to use assembly.

    • This is not the first Arduino-related item where you stopped whatever you were doing, just to troll.
      We get it - you look down on people who can’t or don’t want to learn C.
      The funny thing is, you like LEGOS. Now Legos are neat stuff, but SOME people might say Legos were designed for people who can’t learn to use an Erector/Meccano Set. ;-)
      By the way, have you actually designed anything that’s ¼ as cool as what people are doing with Arduinos? Thought so. :-) In the real world, people just want to Get Stuff Done. Arduino is more than just a easier language platform, but also a programmer and development board (one worth using even if you want to erase the Arduino bootloader and just target C).

    • lol

    • no, Arduino is for people that want a cheap and powerful plataform based on the great AVR with a bit more easy C-based programming.
      Also, Arduino programming langue is praticaly C

      • Arduino is also for people that are proficient in C programming, but want to take advantage of the Arduino bootloader and Arduino IDE as an easy way to compile and upload their code to the AVR chip.
        As an alternative, I could write a Makefile and use avrdude to burn my code to the chip using my Bus Pirate. But why? Instead I write code outside of the IDE in the editor of my choice, then just click the upload button on the IDE.

        • I don’t mean to bash the Arduino, but it is a beginner’s tool.

          • Arduino can be a professional’s tool as well, because it allows you to build fast and simple modular prototypes for testing purposes and some proof of concepts.

            • It’s true. The Arduino can be used for a wide range of projects. It is great for beginners, but is just as well fitted for an experienced engineer that is looking for fast prototyping, and proof of concept.

              • I agree, being a PIC person I’ve only ever used an Arduino while helping my friend through his university assignments, just like the basic stamp before it (aswell as others) you’ll never see a fully released product with an Arduino sitting at the heart of it (unless the product is directed at Arduino’s…) but I bet stleast some of the original concepts were fleshed out using one.

          • And you program all your code in assembly right?

            • I program code into my micro-controllers with a magnetized needle to store 1’s and 0’s in the chip.
              I’ve tried using butterflies, but they kept dying on me.

              • Only a small detail but micro-controllers don’t use magnetic storage as a standard desktop HDD. This means that you probably have better chance of success programming the flash cells of your micro-controllers with an electrical charge needle to change the charge in the flash cell.
                Maybe you could use the same needle to revive your butterflies.

                • Thanks! That explains a lot of the problems I have been having. From now on I will certainly use an electrical charge needle to program my ATMEGAs.
                  Oh, no need to worry about the butterflies. I eventually realized that they need food to survive, not just the humor and irony I have been feeding them. Perhaps you’ve heard of the concepts?

                  • I know the concepts personally I been feeding my butterflies hope and dreams and they are fine for 2 to 3 days but then they die on me. I thought it was their natural short life span now you are saying I killed them I am so sad now.

          • When I got started in electronics I had a lot of experience in physics and computer science. My first board used and AVR that I programmed with C using AVR studio. I could figure out the code and I could figure out the circuitry.
            But I was a beginner.
            After I had more experience I realized how foolish I was to be wasting all my time using these klunky tools. I knew there was a place for them, but not for what I was doing. When I learned about Arduino, my life became easy. I was no longer a beginner because I was using Arduino. Wish I had been using it the whole time, but you live and learn.

          • I think you may be confusing “beginner’s tool” with “a tool that is easily accessible to beginners”. The Arduino platform has a lot of capabilities.
            Now PICaxe on the other hand…

          • see above.
            I don’t see anything ‘beginner’ about a library of commonly used functions and a standardized set of development boards. The first thing I did when I was developing on a raw AVR for my robotics classes in college was essentially write my own Arduino library. I imagine that’s what you do as well.

        • Have you used Atmels AVR studio with Winavr? No makefiles, no manually programming the fuses, does C and assembly with debugging! You can also use an external debugger like the JtagIce mk2. Arduino is the AVR version of the Oopic…

          • Uh…. Ok, let’s clear a LOT of things up.
            First: “Arduino” is not just a single thing, it is a combination of three distinct parts:
            1) Hardware. Arduino’s are AVR development boards with a standard footprint and pin-out. Arduino’s dev team flat out states that in several places. This standardization allows for part 2 to work with zero configuration besides selecting the model of Arduino.
            2) Software Library. This is the special sauce of Arduino. But it’s just that: a Library. You can use the Arduino library with a STK500 and a DIP ATMega 328, coded in Eclipse, compiled on WinAVR, and programed with AVRDude if you want. It just requires a bit of work getting things set up.
            3) IDE. This is what takes the Arduino Library and turns it into a “language”, and I use that term very, very loosely. Why? Because the IDE has a pre-processor that takes what you write and adds in all the missing bits to turn it into a functioning, compilable C++ program. But you are writing in C++, just structured

          • No, I haven’t, but that’s because I don’t run any Windows machines.

    • Are you referring to this post or just in general? I think in this post it’s fairly clear there is a distinction between the Arduino platform and the ATMega AVR. The Gameduino is designed to “play nice” with the Arduino boards, but as I mentioned, can be made to work with any micro that has an SPI interface.

  • Offtopic, but I would love to see a board that made VGA output from the raw signals found on older Atari STs, and other classic platforms. (Composite to VGA adapters are horrible, and feeding composite into a TV loses a lot of the contrast needed to display fonts on those old systems).

  • If this thing did programmable resolutions and refresh rates I’d buy 3 right now. Shame I don’t know Verilog (yet) or I’d do it myself.

  • Saw this on kickstarter

  • Quite impressive, but this could be done with a $7 Parallax Propeller, a few resistors and connectors.

    • Really? Are you sure you understand what this does? It’s not just a simple TV out project, which can be done very cheaply - even cheaper than your Propeller.

      • Yes, he’s correct. Google the ‘Hydra game system’, which is a gaming development board based on the propeller. But the problem is that the propeller only has 32KB of RAM to share amongs its 8 cores, so without the (significantly more than $7) RAM expander card for the Hydra, you start running into memory constraints very quickly if you want to make good looking games. The Hydra is closer to an 8bit NES… this is closer to a 16bit SNES, in terms of its graphics capabilities.

  • So, why are things circling the hemisphere called asteroids, but things circling an ass are called hemorrhoids?
    Think about it.

  • its SPI controlled but the FPGA only does a VGA out or it also process graphics? because if arduino is redering the graphics, that is awesome!

    • No, the Arduino only acts as a co-processor for primary game logic. The Gamduino is doing the graphical heavy lifting. The setup on the Gamduino is basically how most home consoles worked in the 8bit and 16bit (and really the 32bit era too, but they were WAAYY more complicated), where there was a ‘general purpose’ CPU such as a Motorola 6800 or the like, and then a dedicated graphics processing unit, which might be a simple ‘bliter’ (see http://en.wikipedia.org/wiki/Bit_blit) and DAC or have more complex operations like the FPGA in this one does. Outputting a NSTC image would use up a lot of an ATMega’s processing power.
      Writing data structures for image data for this thing must be a PITA though.

  • Hackvision and Video Game Shield both use the TV Out library. This though is using VGA, which is very nice. I wonder though if the AVGA Console code could be used to make a shield? Might be worth a try.

  • So is Sparkfun going to sell Gameduinos?


This Week

This Month

Heartbleed

Happy Arduino Day!

SXSW Create 2014