Pressez l'analogue de Space Invaders à 1 kilo-octet (l'original de 1978 prend 8)



Ce jeu, fortement inspiré de Space Invaders, a été écrit à partir de zéro pour ATtiny2313 et envoyé au concours de 1 kilo-octet organisé récemment sur Hackaday .

Il n'est pas facile de mettre un tel jeu en 1024 octets. Mais l'auteur a décidé d'obtenir un jeu entièrement fonctionnel avec des scores, du son et une sortie vidéo VGA avec une résolution de 640x480 et une fréquence de 60 Hz.

Bien sûr, tout le code est entièrement écrit en assembleur, et pour la génération du son et de la vidéo, il est programmé pour obtenir des intervalles de temps précis.

L'interruption du temporisateur est conforme aux exigences de la synchronisation horizontale VGA, et comme la fréquence d'images est obtenue en divisant la ligne horizontale par un entier, les deux types de synchronisation peuvent être placés dans une procédure de traitement d'interruption. Pour ce faire, la procédure compte précisément les cycles.

La fréquence de ligne de 31,5 kHz est prise selon la même procédure que la base de réception des sons.

La procédure de traitement des interruptions occupe 90% du temps de l'ordinateur, donc toute la logique du jeu est calculée pendant le faisceau de retour. Plusieurs machines à états contrôlent le mouvement des personnages, déterminent la position des missiles, etc.

Un petit générateur de caractères est utilisé pour stocker à la fois la police pour afficher la partition, ainsi que les tuiles et les sprites.

Quelques heures avant la fin de la réception du matériel, le code était prêt et envoyé au concours. Tout s'est avéré y être réalisé. Génération d'un signal VGA standard (bien que la résolution réelle soit bien inférieure à 640x480 - «énormes pixels carrés»), contrôle à partir d'une manette de jeu pour SNES ou son clone avec trois signaux d'horloge, de verrouillage, de données, programmez des sprites avec un mouvement fluide, plutôt que de sauter de la familiarité dans la familiarité, la notation, le changement cyclique des tuiles comme dans l'original ...



La même manette de jeu:



Vous pouvez également créer le même appareil et lire un analogue de 1 kilo-octet de Space Invaders. Assemblez le circuit (le quartz à 20 MHz n'est pas illustré, se connecte aux broches 4 et 5, le connecteur en haut à droite est pour le programmateur). L'auteur affirme avoir dessiné ce schéma sur un smartphone à 4 heures du matin juste avant de l'envoyer au concours. Bien sûr, l'adaptateur Parallax est facultatif, vous pouvez simplement prendre le connecteur VGA.



Lorsque vous utilisez l'adaptateur, l'appareil ressemble à ceci:



Compilez la source ( programme et fichier d'en-tête ) à l'aide d'AVR Studio ou GCC, ou remplissez simplement le fichier HEX joint - c'est plus rapide, mais vous ne pourrez pas creuser dans le code. Et vous pouvez constater par vous-même que l'analogue de Space Invaders, qui tient dans un kilo-octet, est une réalité.

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


All Articles