3D-Shooter Doom: Hangar-Level im FPGA als Hardware programmiert

Ein Entwickler lässt das 3D-Spiel Doom von 1993 auf programmierbaren Logikgattern ohne CPU und GPU laufen – effizienter geht’s nicht.

In Pocket speichern vorlesen Druckansicht 176 Kommentare lesen
3D-Shooter Doom: Hangar-Level im FPGA als Hardware programmiert

(Bild: id Software)

Lesezeit: 2 Min.

Field Programmable Gate Arrays (FPGAs) bestehen aus Tausenden bis Millionen Logikgattern, die sich vom Nutzer beliebig programmieren lassen, um spezifische Schaltungen zu übernehmen. Solche FPGAs sind nicht nur in der Industrie interessant – Nvidia verwendet sie zum Beispiel bei seinen G-Sync-Modulen zur Bildsynchronisation zwischen Grafikkarte und Display –, sondern ermöglichen Privatanwendern spannende Entwicklungsprojekte.

Twitter-Nutzer "sylefeb" zeigt eines, bei dem id Softwares Shooter-Klassiker Doom auf einem FPGA läuft. Das Spiel wird dabei sprichwörtlich zur Hardware und kommt ohne CPU-Kerne oder eine Grafikeinheit aus.

Sylvain Lefebvre lässt eine eigene Programmiersprache auf dem Entwicklerboard DE10-Nano von Terasic Technologies laufen, die zu Verilog kompiliert wird. Auf dem Board sitzt ein Cyclone-V-FPGA der Intel-Tochter Altera, der aktuell das Hangar-Level E1M1 rendern kann. Von den insgesamt 110.000 Logikelemente lastet Lefebvre nur knapp ein Drittel aus. Doom läuft mit 640 × 480 Pixeln und 60 Bildern pro Sekunde (fps) bei gerade einmal 100 MHz Taktfrequenz. Die integrierten ARM-Rechenkerne kommen nicht zum Einsatz, die GPU übernimmt lediglich die Bildausgabe (herunterskaliert 320 × 200 Pixel). Bisher passt alles in die 768 KByte SDRAM des FPGAs, zusätzlicher Speicher ließe sich beispielsweise per MiSTer-Modul nachrüsten.

Der FPGA kann derzeit einen vordefinierten Durchlauf vom Doom-Level E1M1 rendern, bei dem Lifts in einem festen Intervall hoch- und herunterfahren sowie Türen immer offen stehen. Künftig will Lefebvre die Steuerung per Joystick ermöglichen, mehr Interaktion erlauben und weitere Lichtquellen einbauen. Das komplette Projekt kommt dann als Quellcode auf GitHub. Als Basis für die Entwicklung dient der Quellcode von Doom, den Entwicklerstudio id Software auf GitHub veröffentlicht hat, und das Game Engine Black Book: Doom vom Programmierer Fabien Sanglard. (mma)