Google+

Κυριακή 27 Νοεμβρίου 2011

Gameduino - Game Adapter for Arduino

Το Gameduino δεν είναι απλά ένα... shield για Arduino. Πρόκειται για ΤΟ shield που πραγματικά ανεβάζει πολλά επίπεδα επάνω τις δυνατότητες του μικροελεγκτή AVR της ATMEL για ένα συγκεκριμένο σκοπό, τη δημιουργία παιχνιδιών!

Spec:
  • Video output is 400x300 pixels in 512 colors
  • All color processed internally at 15-bit precision
  • Compatible with any standard VGA monitor (800x600 @ 72Hz)
  • Background Graphics
    • 512x512 pixel character background
    • 256 characters, each with independent 4 color palette
    • pixel-smooth X-Y wraparound scroll
  • Foreground Graphics
    • each sprite is 16x16 pixels with per-pixel transparency
    • each sprite can use 256, 16 or 4 colors
    • four-way rotate and flip
    • 96 sprites per scan-line, 1536 texels per line
    • pixel-perfect sprite collision detection
  • Audio output is a stereo 12-bit frequency synthesizer
  • 64 Independent Voices 10-8000 Hz
  • Per-Voice Sine Wave or White Noise
  • Sample Playback Channel
Με λίγα λόγια, είναι μια overclocked έκδοση των παλιών 8-bit game-computers (amstrad, spectrum, c64...)  σε μέγεθος σπιρτόκουτου! man i love FPGA-VHDL system design :)

οκ με όλα αυτά τα geek-nerd αλλά πως το "παντρεύουμε" με arduino;

Καταρχήν, συνδέουμε το shield πάνω στο arduino και τροφοδοτούμε με +5V (usb ή external power). Κατεβάζουμε από εδώ τη GD βιβλιοθήκη που περιέχει sample, demo game code sketch για το Arduino IDE. Συνδέουμε μια οθόνη VGA και κάποια ηχεία/ακουστικά στην αντίστοιχη έξοδο του shield και φύγαμε!
 
Όπως προτείνει και ο δημιουργός του, καλό είναι να φορτώσουμε πρώτα το selftest για να δοκιμαστεί το shield:


Δεν αργούμε να δοκιμάσουμε demo για όλες τις δυνατότητες scroll, music και φυσικά game, όπου εκεί υπάρχει το Asteroids. Βέβαια, για να παίξουμε θα χρειαστούμε και ένα joystick είτε σε μορφή έτοιμου shield, είτε από κάποιο old joystick hack.


Η κοινότητα ετοιμάζει παιχνίδια για το Gameduino οπότε, ας τη βοηθήσουμε δημιουργώντας και ένα δικό μας!

Ιδού, και το Game Development Tutorial, Quick Reference Programming Guide, Sprite Library.

Εγώ, πάντως ξεκίνησα ήδη με το Hello world :)

// Gameduino - Hello World

#include 'spi.h'
#include 'gd.h'

void setup() {
  // give time for the gameduino splash screen to be displayed
  delay(2500);
  
  GD.begin();
  
  // load character set
  GD.ascii();
  
  // display the string
  GD.putstr(0, 0, "Hello World");
  
  // set the background colour to green
  unsigned int bg_colour = RGB(0, 255, 0);
  GD.wr16(BG_COLOR, bg_colour);
  
}

void loop() {

}