- Mit einem UP5K-FPGA hat der Autor das Spiel "Another World" als Hardware-Neuimplementierung nachgebaut.
- Das Spiel läuft auf einer virtuellen Maschine (VM), die einen Blitter und einen Rasterizer aufruft, um die Grafik zu erzeugen.
- Der Autor hat Hardware-Implementierungen der VM, des Blitters und des Rasterizers auf dem FPGA erstellt.
- Das Design bleibt innerhalb der Ressourcenanforderungen des FPGA und nutzt 128 KB SPRAM-Speicher.
- Der Autor begann damit, zu verstehen, wie die Daten durch die Spieldaten und den Code fließen.
- Das Design enthält ein SoC, das alles miteinander verbindet und die Display-Aktualisierung ergänzt.
- Der Framebuffer verwendet SPRAM-Blöcke, und jeder Framebuffer wird vollständig auf SPRAM-Blöcke abgebildet.
- Der Display-Controller streamt Pixel mit 25 MHz und verwendet Double Buffering, um Flackern zu vermeiden.
- Der Blitter kopiert den Inhalt eines Framebuffers in einen anderen oder füllt einen Framebuffer mit einer Volltonfarbe.
- Dem Autor ist es gelungen, das Spiel als Hardware nachzubilden, wobei das Design auf verschiedenen FPGA-Boards läuft.
- In diesem Artikel wird die Implementierung von Blitter und Rasterizer in der Game-Engine besprochen.
- Die Blitter-Einheit kopiert Pixel während des vblank, während die Rasterizer-Einheit Polygone in den Framebuffer zeichnet.
- Der Blitter prüft einen Startimpuls und führt bei Bedarf eine Farbfüllung aus.
- Der Rasterizer liest Polygon-Vertices aus Dual-Port-BRAM und zeichnet konkave Polygone.
- Der Rasterizer nutzt einen Paletten-Trick für Transparenz und kann Pixel aus einem anderen Quell-Framebuffer kopieren.
- Die Game-Engine enthält eine Font-Rendering-Engine und unterstützt vorgerenderte Hintergründe.
- Der Build-Prozess umfasst das Kopieren der Spieldatendateien sowie das Ausführen von Simulationen oder das Spielen des Spiels auf anderen Hardware-Plattformen.
- In diesem Artikel geht es um die Entwicklung eines Hardware-Designs, das für das Spiel Another World auf einem FPGA läuft.
- Der Autor nennt außerdem mehrere noch offene Aufgaben, darunter Spieltests, Timing-Anpassungen, das Beheben von Rendering-Problemen und das Hinzufügen von Musik.
- Der Autor erwähnt zudem die Möglichkeit, weitere Teile des Spiels zu verbinden und Spielstände zu speichern.
- Der Aufbau weiterer Spiele oder Demos auf dieser Hardware wird ebenfalls als mögliches künftiges Projekt genannt.
- Der Artikel bietet Links zu einer Blogserie, Ports sowie Materialien zu den verwendeten Tools.
- Das in diesem Projekt verwendete Silice-Design steht unter der MIT-Lizenz, während der modifizierte C++-Port weiterhin unter der ursprünglichen GPL-Lizenz steht.
- Der Artikel erläutert außerdem zentrale Begriffe wie Framebuffer, Rasterizer, Blitter und virtuelle Maschine (VM) für Leser, die mit der Branche nicht vertraut sind.
1 Kommentare
Hacker-News-Kommentare