1 Punkte von GN⁺ 2023-07-16 | 1 Kommentare | Auf WhatsApp teilen
  • 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

 
GN⁺ 2023-07-16
Hacker-News-Kommentare
  • Another World: ein klassisches Videospiel, bekannt für seine beeindruckende Grafik und seinen künstlerischen Stil
  • Das Spiel ist kurz und die Rätsel beruhen auf Versuch und Irrtum, ist aber künstlerisch weiterhin beliebt
  • Fans von Another World könnten auch Flashback: The Quest for Identity genießen
  • Es gibt verschiedene Ports von Another World für Plattformen wie Amstrad CPC, Nintendo 64 und PlayStation 1
  • Der Autor dieses Artikels verwendet für den FPGA-Port eine benutzerdefinierte HDL-Sprache namens Silice
  • Die auf dem Amiga verwendete planare Grafik hat Vorteile wie Transparenzeffekte und Moiré-Effekte
  • Der Einsatz einer virtuellen Maschine (VM) für das Spiel könnte auf PCs der 90er Jahre zu Leistungseinbußen geführt haben
  • Das Spiel hat ein denkwürdiges Opening und herausforderndes Gameplay, etwa die Flucht vor einem Löwen
  • Der ursprüngliche Entwickler von Another World hielt auf der GDC einen Rückblicksvortrag über die Entwicklungswerkzeuge und den Animationsprozess
  • Das Ansehen eines Playthroughs auf YouTube kann Spielern helfen, die mit dem Spiel Schwierigkeiten haben