- L’auteur a recréé en matériel le jeu "Another World" à l’aide d’un FPGA UP5K.
- Le jeu s’exécute sur une machine virtuelle (VM) qui appelle un blitter et un rastériseur pour générer les graphismes.
- L’auteur a réalisé des implémentations matérielles sur FPGA de la VM, du blitter et du rastériseur.
- La conception respecte les contraintes de ressources du FPGA et utilise 128 Ko de mémoire SPRAM.
- L’auteur a commencé par comprendre comment les données circulent à travers les données et le code du jeu.
- La conception comprend un SoC qui relie tous les éléments entre eux et ajoute le rafraîchissement de l’affichage.
- Le framebuffer utilise des blocs SPRAM, et chaque framebuffer correspond parfaitement à des blocs SPRAM.
- Le contrôleur d’affichage diffuse les pixels à 25 MHz et utilise le double buffering pour éviter le scintillement.
- Le blitter copie le contenu d’un framebuffer vers un autre ou remplit un framebuffer avec une couleur unie.
- L’auteur a recréé avec succès le jeu sur du matériel réel, avec une conception fonctionnant sur diverses cartes FPGA.
- Cet article traite de l’implémentation du blitter et du rastériseur dans le moteur du jeu.
- L’unité de blitter copie les pixels pendant le vblank, tandis que l’unité de rastérisation dessine des polygones dans le framebuffer.
- Le blitter vérifie une impulsion de démarrage et remplit une couleur si cela est spécifié.
- Le rastériseur lit les sommets des polygones depuis une BRAM double port pour dessiner des polygones concaves.
- Le rastériseur utilise une astuce de palette pour la transparence et peut copier des pixels depuis un autre framebuffer source.
- Le moteur du jeu comprend un moteur de rendu de polices et prend en charge des arrière-plans pré-rendus.
- Le processus de build comprend la copie des fichiers de données du jeu ainsi que l’exécution de simulations ou du jeu sur d’autres plateformes matérielles.
- Cet article aborde le développement d’une conception matérielle s’exécutant sur FPGA pour le jeu Another World.
- L’auteur mentionne aussi plusieurs tâches restant à accomplir, notamment les tests du jeu, l’ajustement du timing, la correction de problèmes de rendu et l’ajout de la musique.
- L’auteur évoque également la possibilité de relier d’autres parties du jeu et de sauvegarder l’état de la partie.
- Construire d’autres jeux ou démos sur cette base matérielle est également mentionné comme projet potentiel à venir.
- L’article fournit des liens vers une série de billets de blog, des ports, des outils et des ressources associées.
- Le design Silice utilisé dans ce projet est sous licence MIT, tandis que le port C++ modifié conserve la licence GPL d’origine.
- L’article explique aussi des termes clés comme framebuffer, rastériseur, blitter et machine virtuelle (VM) pour les lecteurs moins familiers du secteur.
1 commentaires
Avis Hacker News