Modern Vintage Gamer – YouTube
| Kanal-Aufrufe | 0 |
| Kanal | https://www.youtube.com/channel/UCjFaPUcJU1vwk193mnW_w1w |
🔗 https://www.youtube.com/watch?v=4f1-7c6WX10
🤖 Zusammenfassung
Die Analyse erklärt, warum eine Doom-Portierung für das Neo Geo bisher ausblieb. Trotz gleicher Motorola-68000-CPU wie beim Sega Genesis oder Amiga unterscheidet sich die Neo-Geo-Architektur grundlegend: Das System ist auf 2D-Sprites spezialisiert und besitzt weder einen Bitmap-Modus noch einen Framebuffer. Besonders problematisch ist, dass der CROM-Speicher für Sprite-Grafiken direkt mit dem Videochip verbunden ist, aber nicht über den CPU-Adressbus erreichbar ist; die CPU kann also keine Texturpixel lesen. Der Autor demonstriert dennoch einen Machbarkeitsnachweis für einen einfachen Wolfenstein-3D-ähnlichen Raycaster, der 80 vertikale, hardwareskalierte Sprite-Streifen nutzt. Doom gilt jedoch als deutlich komplexer wegen variabler Sektorenhöhen, diagonalen Wänden, texturierten Böden/Decken und pro-pixel-Beleuchtung. Die Einschätzung bleibt subjektiv: Der Sprecher hält eine reine Softwarelösung auf der 12-MHz-CPU für nahezu unmöglich, schließt Zusatzhardware aber nicht aus. Hinweis: Die Transkription enthält mehrere offensichtliche Fehler (z. B. „Omega“/„Amigga“ für Amiga, „indischfreundlich“).
Summary created by "LinkBuster-KI HAL8999 – Status READY!!"
📜 Transkript
Es scheint üblich zu sein, dass für jedes technische Gerät eine Doom-Version verfügbar ist. Dies liegt daran, dass der Code elegant, schnell, modular und auf nahezu allen Systemen lauffähig ist. Sogar Systeme, die vor Doom erschienen sind, haben Portierungen erhalten, und einige Portierungen haben von spezieller Hardware profitiert, wie zum Beispiel das ursprüngliche Doom auf dem SNES. Doom ist in einem sehr sauberen und eleganten CC- Code geschrieben. Es ist nicht schwer zu lernen und mitzumachen. Es verwendet keine modernen Sprachaktualisierungen, greift auch nicht auf veraltete Technologien zurück und lässt sich recht gut kompilieren. Es ist außerdem indischfreundlich, was für die Portabilität sehr wichtig ist . Daher kann man wohl sagen, dass es etwas überraschend ist, dass Doom noch nie für das Neo Geo erschienen ist . Schließlich teilt sich das Neo Geo den gleichen Mikroprozessor (CPU), den Motorola 68000, mit dem Sega Genesis und dem Commodore Omega, auf deren Hardware jeweils Aftermarket-Versionen von Doom liefen. Auf dem Neo Geo ist es jedoch nirgends zu finden. Viele Entwickler, die an Neo Geo gearbeitet haben, sagten oft, dass Doom nahezu unmöglich zum Laufen zu bringen sei. Doch die Frage ist nun: Warum? Warum sollte es unmöglich sein, eine Portierung von Doom auf dem Neo Geo auszuführen? Schließlich verfügt es über einen Bildschirm, eine CPU, RAM und alles, was zum Ausführen eines Videospiels erforderlich ist. Kommen wir also nun zu den Gründen dafür. Das Neo Geo verwendet jetzt einen Motorola 68.000 mit 12 MHz. Es verfügt über 64 Kilobyte RAM, 84 Kilobyte VRAM und 2 Kilobyte Audiospeicher. Die Grafikdarstellung arbeitet mit einer Auflösung von 320×224 Pixeln und insgesamt 340 Bildschirmfarben aus einer Palette von 65.000 Farben. Das allein klingt schon nach einer großen Herausforderung für Doom, aber wir haben Doom schon auf allen möglichen Hardware-Varianten laufen sehen. Nun gut, machen wir weiter . Das Problem ist, dass der Neo Geo ein auf 2D-Sprites basierendes Hardware- Monster ist, und Sprites sind genau das, was der Neo Geo zur Darstellung seiner Bilder verwendet. Das System zeichnet seine Sprites in vertikalen Streifen von Kacheln der Größe 16×6 Pixel, wobei eine Beschränkung von 96 Sprites pro Scanzeile gilt. Es ist möglich, Sprites mit einer Größe von bis zu 16×512 Pixel zu haben. Wie der Amiga verfügt auch der Neo Geo über keinen Bitmap- Grafikmodus. Das heißt, es gibt keine direkte Möglichkeit, Pixel in den Anzeigespeicher zu schreiben und von dort zu lesen. Aber wir haben Doom bereits auf der Omega laufen sehen. Wie ist das möglich? Auf dem Amigga konnten Grafiken auf dem Bildschirm in den Chipspeicher gezeichnet werden, indem Werte in die Bit-Ebenen des Omega geschrieben wurden. Bei den Doom-Portierungen für den Amigga wird eine Konvertierung namens Chunky Topler verwendet, um die Bitmap-Daten, die Doom an seinen Framebuffer ausgibt, in ein geeignetes Format zu konvertieren, das der Omega anzeigen kann. Dieser Prozess ist ziemlich langsam und das ist einer der Gründe, warum man einen ziemlich schnellen 030 oder höher beschleunigten Omega benötigt, um Doom darauf spielen zu können. Allein das benachteiligt das Neo Geo erheblich, da die Hardware fest verbaut ist. Es ist nicht praktikabel, einfach einen leistungsstärkeren Prozessor auf das Motherboard zu setzen. Die Stärke des Neo Geo liegt aber in der 2D-Darstellung. Das Konzept von 3D-Linienzeichnungen oder Vektorgrafiken existiert überhaupt nicht . Schon vor Spielen wie Doom gab es für den Amiga Spiele wie Star Glider 2 von Argonaut, viele Flugsimulatoren und viele 3D- Vektorgrafikspiele. Die Blitter-Hardware von Omega kann Linien zeichnen und diese relativ schnell füllen. Im Vergleich dazu bietet das Neo Geo lediglich 2D-Sprites. Einige Neo Geo- Spiele, wie Viewpoint und Super Spy, versuchten, Echtzeit-3D zu simulieren, aber in Wirklichkeit handelte es sich dabei allesamt um vorab berechnete Sprite-Daten, die auf der Neo Geo- Spielkassette gespeichert waren. Der Super Spy simuliert eine Ego-Umgebung, indem er eine Funktion der Hardware nutzt, die als Sprite- Verkleinerung bekannt ist. Das Verkleinern, auch Skalieren, Reduzieren oder Zoomen genannt, ist eine Hardwarefunktion, die es ermöglicht, Sprites pixelgenau in beiden Dimensionen zu verkleinern. Tatsächlich nutzen viele Spiele dieses Feature, und es ist ein wichtiges visuelles Merkmal des Neo Geo, das ihm seinen einzigartigen Stil und Charme verleiht. Bei Kampfspielen wurde oft synchron zum Spielgeschehen hinein- und herausgezoomt, um das Gefühl der Immersion zu verstärken, und das war ein ziemlich cooler Effekt. Bislang haben wir Dinge gesagt, die eine Portierung von Doom auf dem Neo Geo nicht wirklich verhindern würden. Es muss einen Weg geben, das zu umgehen. Die größte Herausforderung insgesamt ist jedoch die Tatsache, dass die 68.000er CPU keinen direkten Zugriff auf die Grafikdaten irgendeiner Neo Geo-Cartridge hat. Und das ist eine architektonische Tatsache, die viele übersehen haben. Der CROM-Speicher, der die Sprite-Grafiken enthält, ist direkt mit dem LSPC-Videochip verbunden, befindet sich aber nicht auf dem Adressbus des 68000. Dies bedeutet, dass die CPU keine Daten direkt aus dem CROM abgreifen kann. Es kann keine Texturdaten erfassen . Es kann kein Pixel lesen. Es kann mit den Grafikdaten nichts anfangen. Das Einzige, was es kann, ist, Referenzen wie Kachelnummern, Positionen und Schrumpfwerte in den VRAMm zu schreiben, damit der Videochip die tatsächlichen Pixel selbst aus dem CROM abrufen kann. Und dies ist eine deutlich andere Architektur als bei einer Framebuffer-Maschine oder auch beim Amiga mit seinen Bit-Ebenen, wo Pixel frei gelesen und geschrieben werden können. Selbst wenn wir einen Software-Renderer in Betracht ziehen, kann der Neo Geo das einfach nicht leisten. Es kann die Quellgrafiken nicht lesen und es gibt keinen Framebuffer, in den die Ergebnisse geschrieben werden könnten . Nun war es also Zeit für eine Herausforderung. Okay, gehen wir mal davon aus, dass Doom nicht in Frage kommt . Oder vielleicht sollten wir einfacher anfangen. Können wir einen einfachen Raycaster zeichnen oder rendern, wie er beispielsweise in Wolfenstein 3D auf dem Neo Geo verwendet wird? Wäre das möglich? Wir haben ja bereits erwähnt, dass der Neo Geo alles mithilfe von Sprites zeichnet und dass ein Sprite aus kleinen Bildern besteht, die aus 16×6 Pixel großen Kacheln bestehen, die zu einem vertikalen Streifen gestapelt sind. Der Ansatz des Neo Geo besteht also darin, eine Liste der Sprites sowie deren Positionen und Eigenschaften in einem speziellen Speicherbereich zu verwalten. Und diese Hardware rendert diese Liste in jedem einzelnen Frame. Wir haben auch gesagt, dass das Neo Geo jeden Sprite unabhängig voneinander in X- und Y-Richtung kostenlos verkleinern kann. Theoretisch wäre es also möglich, einen Raycaster zu bauen, bei dem jedes Wandsegment ein verkleinertes Sprite ist. Ein Raycaster-Bildschirm besteht aus vertikalen Streifen. Für jede Spalte auf dem Bildschirm kann man einen Strahl in die Welt aussenden, den Auftreffpunkt der Wand ermitteln , die Entfernung messen und eine vertikale Linie zeichnen, deren Höhe von der Entfernung abhängt. Bei ausreichender Detailgenauigkeit registriert das Gehirn dies als 3D-Szene. Also habe ich schließlich einen einfachen Raycaster auf dem Neo Geo gebaut. Und zwar so, dass wir 80 Sprites nebeneinander haben , die jeweils vier Pixel breit sind und sich an einer festen X-Position auf dem Bildschirm befinden. Bei jedem Frame lassen wir den X-Wert unverändert. Und was wir tun, ist, die vertikale Y-Schrumpfposition zu verändern. Die Wände scheinen sich mit Ihnen zu bewegen und zu verändern , aber wir zeichnen nichts. Wir passen lediglich die Schrumpfungswerte von 80 an . Bei jedem Raycaster haben wir nun ein 2D-Gitter aus Eins- und Nullwerten. Eins steht für eine Wand, Null für leer . Der Spieler hat zwei Werte, eine Position und eine Blickrichtung. Für jede der 80 Bildschirmspalten stellen wir uns einfach die Frage: Wenn ich einen Strahl vom Spieler in die Welt hinaus in die Richtung sende, die eine Spalte repräsentiert, welche Wandzelle trifft er zuerst und wie weit ist sie entfernt? Und genau das macht die Rendering-Funktion. Es durchläuft den Strahl 80 Mal pro Frame und füllt drei Arrays. die Schrumpfungswerte für jede Spalte, die Y-Position für jede Spalte und den Farbpalettenwert für jede Spalte. An diesem Punkt haben wir also alles in einem Array von Werten. Aber es wird immer noch nichts auf dem Bildschirm angezeigt. Als nächstes müssen wir unsere Blit-Funktion aufrufen. Hier schreiben wir unsere Schrumpfungswerte, unsere X- und Y-Positionen sowie die Sprite-Werte in den SCB (Sprite Control Block). Zur besseren Übersicht habe ich außerdem eine 2D- Minikarte darübergelegt. Dafür habe ich die Fix-Layer-Funktion von Neo Geo verwendet. Die fixierte Ebene ist für Text und HUD- Elemente wie Punktestand und Leben vorgesehen und wird immer über den Sprites gezeichnet. Es ist deutlich weniger flexibel, aber perfekt für eine 2D-Minikarte. Und das ist das Endergebnis. So schlimm ist es gar nicht. In jedem einzelnen Frame lesen wir den Joystick aus und bewegen den Spieler. Und für jede dieser 80 Bildschirmspalten durchlaufen wir das Array im Raster, bis es auf eine Wand stößt, und messen dann die Entfernung, die in Höhe und Farbe umgewandelt wird. Dann streamen wir diese 80 Höhen-, Positions- und Farbwerte in den Sprite-Steuerungsblock, wo jede Spalte ein einzelnes texturiertes Sprite ist, das auf die richtige Höhe verkleinert wird. Wir nutzen die Skalierung von Neo Geo, um die eigentliche Arbeit für uns erledigen zu lassen. Es gibt keinen Framebuffer, keine Pixelzeichnung und erst recht keine Gleitkommazahlen. Ein paar Dinge sind hierbei zu beachten. Das ist alles andere als optimierter Code. Ich habe das sehr, sehr schnell zusammengestellt und es läuft wahrscheinlich mit etwa 8 Bildern pro Sekunde. Wir könnten die Leistung definitiv noch deutlich verbessern. Aber aktuell lassen wir das Ganze auch emulieren. Ich habe dies nicht an realer Hardware getestet, aber ich glaube nicht, dass es einen Unterschied machen würde. Und für alle Interessierten habe ich den Quellcode in der Beschreibung unten eingefügt. Schauen Sie gerne bei Bedarf einmal rein . Mit diesem einfachen Machbarkeitsnachweis bin ich der Meinung, dass es möglich ist, eine Wolfenstein-Engine zu entwickeln, die auf dem Neo Geo One mit vertikalen Streifen in voller Höhe läuft. Ich stimme aber zu, dass Doom auf dem Neo Geo wahrscheinlich nicht realisierbar ist . Die Wände bestehen nicht mehr aus gleichmäßig hohen Streifen. In Wolfenstein sind alle Wände gleich hoch und nach einem Raster ausgerichtet. Eine Spalte besteht also immer aus einem einzigen Texturstreifen von oben nach unten, der skaliert wird. In Doom gibt es beispielsweise Sektoren mit willkürlichen Boden- und Deckenhöhen. Es gibt Dinge wie Vorsprünge, Treppen, erhöhte Plattformen, Aufzüge, Tunnel und Fenster, durch die man in dahinterliegende Räume schauen kann. Wir sprechen also nicht mehr von skalierten Streifen. Wir bräuchten mehrere unabhängig positionierte und skalierte Sprites pro Spalte, die zudem aneinander angepasst werden müssten . Es gibt auch das Konzept der diagonalen Wände. In Wolfenstein sind die Wände gitterförmig angeordnet. Das heißt, jede Wand ist genau nach Norden, Süden, Osten und Westen ausgerichtet. In Doom können Wände in jedem beliebigen Winkel angeordnet sein, und eine einzelne Bildschirmspalte, die eine diagonale Wand kreuzt, zeigt die Wandoberfläche in einem sich ständig verändernden Abstand entlang der Spalte an. Auf dem Neo Geo wäre es daher sehr schwierig, wenn nicht gar unmöglich, eine pixelgenaue Skalierungs- und Perspektivkarte für einen einzelnen Sprite anzuwenden. Diagonale Wände benötigen genau das. Selbst eine einzelne diagonale Wand wäre daher schwer als hardwareseitig skalierter Streifen abzubilden. Andere Dinge wie Fußböden und Decken stellen ebenfalls ein großes Problem dar. Im Raycaster sind Böden und Decken einfarbige Flächen. In Doom sind Böden und Decken texturiert und perspektivisch abgebildet. Doom verfügte außerdem über eine sektorbasierte Beleuchtung pro Pixel mittels Farbkarten. Mit unserer Raycast-Gießmaschine können wir beispielsweise eine gestaffelte Schattierung pro Säule realisieren, was gut funktioniert. Da die Beleuchtung in Doom innerhalb einer Oberfläche und über die einzelnen Bodenpixel hinweg variiert, muss das Neo Geo die Pixel pro Sprite austauschen, kann aber nicht jedes Pixel über eine texturierte Ebene neu zuordnen. Und das alles, bevor wir über Sprites, feindliche Monster, Waffen und all die anderen Dinge sprechen, die Doom ausmachen . und vorausgesetzt, Sie finden einen Weg, all dies zu lösen, wenn das alles auf einer 12-MHz-CPU läuft. Ich bin klug genug, Ihnen zu sagen, dass ich nicht behaupten will, es sei unmöglich, denn sobald man etwas als unmöglich bezeichnet, hat man den Fehdehandschuh hingeworfen. Ich glaube aber, dass Doom nur mit zusätzlicher Hardware auf dem Neo Geo laufen kann. Das ist natürlich nur meine Meinung, basierend auf dem Hacken eines Raycasting-Programms, das auf einem Neo Geo mit unoptimiertem Code läuft. Damit beenden wir die heutige Folge. Ich hoffe, Ihnen hat dieser Einblick in die Gründe gefallen, warum Doom auf dem Neo Geo unmöglich erscheint. Nun, ich sage, es scheint unmöglich, denn später in diesem Jahr erscheint der Neo Geo AES Plus, der die Homebrew-Community erneut beleben wird . Und vielleicht gibt es da draußen jemanden mit den richtigen Fähigkeiten, der uns das Verhängnis für Neo Geo bescheren könnte. Ich denke, es besteht eine gewisse Möglichkeit, dass es so kommen könnte. Aber für heute belassen wir es dabei für die heutige Folge. Ich hoffe, es hat Ihnen gefallen. Vielen Dank fürs Zuschauen. Und wenn es Ihnen gefallen hat, hinterlassen Sie mir einen Daumen hoch. Wir sehen uns dann in der nächsten Folge. Bis bald.
📊 Link-Infos
| URL | https://www.youtube.com/watch?v=4f1-7c6WX10 |
| Titel | DOOM Runs On Everything…except Neo Geo |
| Kategorien | BulkNews, Modern Vintage Gamer |
| Hinzugefügt | 2026-07-18 01:02:33 |
| Mediendatei | Original-Medium ansehen · Lokale Kopie |

