Drücken Sie das Analogon von Space Invaders auf 1 Kilobyte (Original 1978 dauert 8)



Dieses Spiel, das stark von Space Invaders inspiriert wurde, wurde von Grund auf für ATtiny2313 geschrieben und an den kürzlich abgehaltenen 1-Kilobyte-Wettbewerb am Hackaday gesendet .

Es ist nicht einfach, ein solches Spiel in 1024 Bytes zu setzen. Der Autor entschied sich jedoch für ein voll funktionsfähiges Spiel mit Scoring, Sound und einem VGA-Video-Ausgang mit einer Auflösung von 640 x 480 und einer Frequenz von 60 Hz.

Natürlich ist der gesamte Code vollständig in Assembler geschrieben und für die Erzeugung von Ton und Video so programmiert, dass genaue Zeitintervalle erhalten werden.

Der Timer-Interrupt erfüllt die Anforderungen für die horizontale VGA-Synchronisation, und da die Bildrate durch Teilen der horizontalen Linie durch eine Ganzzahl erhalten wird, können beide Arten der Synchronisation in einem Interrupt-Verarbeitungsvorgang platziert werden. Zu diesem Zweck zählt die Prozedur die Zyklen genau.

Die Netzfrequenz von 31,5 kHz wird nach dem gleichen Verfahren wie die Grundlage für den Tonempfang ermittelt.

Die Interrupt-Verarbeitungsroutine nimmt 90% der Maschinenzeit ein, sodass die gesamte Spiellogik während des Rückstrahls berechnet wird. Mehrere Zustandsautomaten steuern die Bewegung von Zeichen, bestimmen die Position von Raketen usw.

Ein kleiner Zeichengenerator wird verwendet, um sowohl die Schriftart für die Anzeige der Partitur als auch Kacheln und Sprites zu speichern.

Nur wenige Stunden vor dem Ende des Materialempfangs war der Code fertig und wurde an den Wettbewerb gesendet. Es stellte sich heraus, dass alles darin verwirklicht war. Generierung eines Standard-VGA-Signals (obwohl die tatsächliche Auflösung viel niedriger als 640 x 480 ist - „riesige quadratische Pixel“), Steuerung über ein Gamepad für SNES oder dessen Klon mit drei Clock-, Latch-, Datensignalen, Programm-Sprites mit sanfter Bewegung, anstatt aus der Vertrautheit zu springen in Vertrautheit, Wertung, zyklischer Fliesenwechsel wie im Original ...



Das gleiche Gamepad:



Sie können auch dasselbe Gerät herstellen und ein 1-Kilobyte-Analogon von Space Invaders abspielen. Bauen Sie die Schaltung zusammen (Quarz bei 20 MHz wird nicht angezeigt, wird an die Pins 4 und 5 angeschlossen, der Anschluss oben rechts ist für den Programmierer). Der Autor behauptet, dass er dieses Diagramm um 4 Uhr morgens unmittelbar vor dem Senden an den Wettbewerb auf ein Smartphone gezeichnet hat. Natürlich ist der Parallax-Adapter optional, Sie können einfach den VGA-Anschluss nehmen.



Bei Verwendung des Adapters sieht das Gerät folgendermaßen aus:



Kompilieren Sie die Quelle ( Programm- und Header-Datei ) mit AVR Studio oder GCC oder füllen Sie einfach die angehängte HEX-Datei aus - dies ist schneller, aber Sie können nicht in den Code eintauchen. Und Sie können selbst sehen, dass das Analogon von Space Invaders, das in ein Kilobyte passt, Realität ist.

Source: https://habr.com/ru/post/de446984/


All Articles