Nun, das ist ein Projekt, das ein 8-Bit-Mikrocontroller ATMega32 bis an die Grenzen stößt.
Wie Sie aus dem Titel erraten, ist es ein Spielsystem. Hier sind einige der Spezifikationen:
* 27MHz übertaktet (von 16MHz) AVR ATmega32 Mikrocontroller , mit 32KB Flash, 2KB RAM. Ich denke, Sie können auch eine ATMega644.They haben die gleichen Pinbelegungen. Ich habe nicht persönlich mit einem atmega644 versucht.
* 128 x 64 monochromen KS0108 basierte Anzeige
* 4 Voice sound-Engine: (Klingt wie das NES)
* 2 variable Volumen Rechtecksignal Kanäle.
* 1 DDS (Direct Digital Synthesis) Welle Tabelle Kanal mit festen Volumen, die spielen kann: Sinuswellen, Dreieck-Wellen, Sägezahn Wellen, quadratische Wellen oder andere einfache Wellenform.
* 1 DDS weiße Rauschen Kanal (im Grunde identisch mit der ersten Welle Tabelle Kanal, aber dieses verwendet eine weißes Rauschen-Welle-Tabelle).
* Frame-Buffer basierte video-Treiber: (Penguin verwendet einen Videotreiber, der sehr weit fortgeschritten ist, im Vergleich zu den anderen graphischen Bibliotheken Sie auf Mikrocontroller mit KS0108 LCDs finden )
* Instant Farbeffekt inversion
* Übergänge
* Text zeichnen
* Sprite zeichnen mit feste Höhe 8 und X-Skalierung (schnell)
* Sprite zeichnen mit feste Höhe 8 mit X- und Y-Skalierung (langsam)
* Vektorgrafiken mit rotation
* Geometrische Formen zeichnen: Dreieck, Rechteck, Kreis (keine Füllung für alle Formen)
* Mehrere Hintergrund zeichnen (für transparente Hintergründe)
*Draw_pixel(x,y) Funktion (ziemlich selbsterklärend...)
Den Grafiktreiber verwendet 1KB RAM für den Frame-Buffer und hat rund 30 FPS mit einem transparenten Hintergrund, sound-Engine laufen und 50 Sprites auf dem Bildschirm.
Es gibt keine Hintergrund-Limit, Sprite Limit oder etwas ähnliches. Der einzige Nachteil ist, dass wenn Sie zu viel Zeug auf dem Bildschirm zeichnen, es wird langsamer und langsamer. Die Vektor-Grafik-Funktionen verwenden ein proprietäres Format, das von einem Tool generiert wird, Sie im Bereich "Tools" in diesem instructable finden.