Polygone Eine andere Welt: Atari ST

Dies ist der dritte Artikel in einer Reihe über die Portierung des Spiels Another World. Bei der Arbeit mit Atari ST geht es um Tricks . Es wird empfohlen, zuerst die vorherigen Artikel zu lesen.


Die Geburt von Atari ST war, gelinde gesagt, unruhig. Alles beginnt wie im Märchen, endet aber mit Krieg und Verrat unter Beteiligung von Amiga Corp, Commodore, Atari und Atari Computer.




Artikelserie


  1. Polygone eine andere Welt .
  2. Polygone eine andere Welt: Amiga 500 .
  3. Polygone Eine andere Welt: Atari ST.

Geschichte von ATARI ST


1983 war Hi-Toro ein Santa Clara-Startup, das eine Spielekonsole namens Lorraine entwickelte. Mit einem leistungsstarken 68.000 mit erstaunlichen Grafikfähigkeiten war es ein technologisches Wunderwerk, das allen Mitbewerbern weit überlegen war. Hi-Toro ging jedoch das Geld aus. Atari, damals ein Videospielriese, investierte 500.000 US-Dollar in die Weiterentwicklung, um das Recht zu erhalten, eine Tastatur hinzuzufügen und die Konsole als Computer zu verkaufen.


Weit entfernt von Kalifornien, in Pennsylvania, führte der Machtkampf bei Commodore zum Abzug des Gründers Jack Tramiel. Er gründete sofort Tramel Technology, als er Commodore-Ingenieure anlockte. Unnötig zu erwähnen, dass die Trennung alles andere als freundlich war.


Mitte 1984 war es an Atari, finanzielle Turbulenzen zu erleben. Als Jack Tramiel Interesse am Kauf der Atari-Computersparte bekundete, sah Commodore eine Gelegenheit, sich seinem früheren CEO zu widersetzen. Sie kauften Hi-Toro (das zu dieser Zeit in Amiga Corporation umbenannt wurde) und gaben Atari nur ihren "Kredit" zurück.


Tramiel schloss die Akquisition von Atari Computers ab und verklagte sofort die Amiga Corporation. Dieses Problem wird erst im März 1987 behoben [2] . In der Zwischenzeit war Atari ohne neue Technologien, die dazu beitragen würden, wieder rentabel zu werden [3] .


Für einige Zeit erwog Jack Tramiel, Genesis von Sega zu kaufen, der einen Partner mit Erfahrung in Nordamerika suchte. Letztendlich wurde die Idee abgelehnt. Was ist als nächstes passiert, sagt DadHacker [4] [5] . Jack hat nur 900 der 10.000 Mitarbeiter von Atari verlassen. Die übrigen nahmen am Todesmarsch teil, mit dem Ziel, innerhalb eines Jahres ein neues Auto zu entwickeln und herauszubringen.


Überraschenderweise haben sie es geschafft. Atari ST wurde im Juni 1985 auf den Markt gebracht und kam einen Monat früher als der Amiga 1000 auf den Markt.



Das Gerät wurde von den Nutzern gut aufgenommen. Bis November 1985 hatte Jack Tramiel bekannt gegeben, dass Atari 50.000 Einheiten verkauft hatte. Der Preis war überraschend. Der 520ST wurde für 999 US-Dollar und der Amiga 1000 für 1285 US-Dollar verkauft.


Bei der Auswahl von zwei Computern mit demselben Prozessor und demselben RAM waren zusätzliche 300 US-Dollar nicht wert. Viele Verbraucher haben sich für ST entschieden.


Zusätzlich zum Hauptpreisvorteil hat das Auto einige bemerkenswerte Vorteile gegenüber Mitbewerbern. Der hochauflösende Monochrom-Modus 640 x 480 war ideal für Programmierer. Eingebautes MIDI wurde von Musikern geschätzt. Als kleines Detail, das einen Unterschied machen könnte, befanden sich das Betriebssystem (TOS) und der Kernel tatsächlich im ROM. Es war nicht nötig, von einer Diskette zu booten!


Atari ST verzeichnete schnell einen Anhänger-Kult, insbesondere in Europa. Die Macher der Demoszene versuchten obsessiv, Methoden zum Überscannen [6] [7] [8] [9] zu entwickeln, um die Ränder des schwarzen Bildschirms zu entfernen. Am Ende waren diese Versuche erfolgreich [10] .


Während seines Lebens von 1985 bis 1993 verkaufte Atari Computers 2 Millionen Geräte [11] . Für viele, die diese Ära überlebten, war es der berüchtigte Amiga-Krieg gegen Atari ST.




Atari st e


Aus der Sicht von Computergrafik, Animation und Videospielen gab es keinen Krieg als solchen. Es ist sogar schwer, eine Schlacht zu nennen. Dank seiner Agnus- und Denise-Coprozessoren ist Amiga Atari ST deutlich überlegen. Das Arbeiten mit dem Speicher eines Atari ST-Framebuffers war beispielsweise schmerzhaft, wenn versucht wurde, ein Sprite über den Bildschirm zu bewegen.


Um seine Mängel zu beheben, aktualisierte Atari Computers die Atari ST-Linie 1989 mit der Einführung der Modelle 520 ST E und 1040 ST E. Zu den Verbesserungen zählen: Genlock, 12-Bit-Farben, PCM-Audio und vor allem BLiTTER [12] . Diese Innovationen haben Atari ST zu einer Technologie gemacht, die es mit Amiga aufnehmen kann.


Architektur


Blitters Fähigkeiten waren für Spieleentwickler von unschätzbarem Wert. Leider erschien er zu spät. Atari ST hatte eine riesige Basis, die Entwickler davon abhielt, Zeit zu verschwenden, um ihr Spiel für eine kleine Anzahl von Benutzern zu verbessern. Ganz zu schweigen davon, dass niemand es gewagt hat, das Spiel exklusiv auf ST E zu veröffentlichen. Another World ist keine Ausnahme, so der Entwickler der Jaguar-Version (die den Atari ST-Quellcode enthielt).


Another World war vollständig auf 68000 programmiert. ST E- Funktionen wurden überhaupt nicht verwendet.


- Sébastien Briais



Bitte beachten Sie, dass es auf jedem Atari ST einen DMA-Controller gibt, der jedoch nur von einer Diskette / Festplatte in den Arbeitsspeicher übertragen kann, was bei der Entwicklung von Spielen nicht viel geholfen hat. Den Programmierern blieb nicht viel übrig. Der Motorola 68000 Prozessor mit einer Taktfrequenz von 8 MHz und 512 KiB RAM.




Videosystem


Der GLUE-Chip, der für die Erzeugung des Videosignals verantwortlich ist, verwendet 3 Bits pro Kanal (9 Bits pro Pixel), was 512 Farben ergibt.



Hinweis: Durch Manipulation von Shifter, GLUE und MMU konnte der Demo-Hersteller die berüchtigten schwarzen Ränder des Atari-Bildschirms entfernen. Der Overscan- und der Vollbild-Techniker schalten die Bildwiederholfrequenz zwischen 50 Hz und 60 Hz um und wechseln auch von HiRes zu LowRes, bis der Zeilenscan abgeschlossen ist, um GLUE zu zwingen, VSYNC / HSYNC-Signale zu verzögern [13] !


Eine andere Welt auf Atari ST


Eine andere Welt unter Atari ST wurde von Eric Shayi komplett parallel zur Amiga-Version geschrieben. Der 68000-Prozessor, ähnlich wie der Amiga, erleichterte den Port, da die meisten ASM-VMs wiederverwendet werden konnten. Es gab Unterschiede im grafischen Teil, wo drei Modi zur Verfügung stehen. Hohe Auflösung (640x400 2 Farben), die sich hervorragend zum Programmieren eignet, mittlere Auflösung (640x200 4 Farben), die in diesem Zusammenhang nicht sehr interessant ist, und niedrige Auflösung (320x200 16 Farben [14] ), die sich ideal für Another World eignet.



Alle Berechtigungen verwenden 32 KB für jeden Framebuffer. Es gibt keine Beatpläne wie den im letzten Artikel erwähnten Amiga. In hoher Auflösung entspricht jedes Bit einem Pixel. Bei niedriger Auflösung ist der Pixelindex in 4 Bits unterteilt, die auf 64 Bits verteilt sind.



Kleine Hölle


Bei einem Spiel mit Sprites war ein solches Layout auf niedriger Ebene ein Problem. Versuchen Sie sich die Aufgabe vorzustellen, eine Maske / Aufnahme mit einer Auflösung von einem Bit zu verwenden, wenn die Busauflösung ein Byte (8 Bit) beträgt. Stellen Sie sich nun vor, wie ein Sprite eine Byte-Grenze überschreitet und die Aufgabe sich in einen Albtraum verwandelt [15] . Die CPU-Auslastung war so hoch, dass Spiele keine Maske / Aufzeichnung verwendeten. Stattdessen wurden vorgedrehte Sprites (ein Satz für jede Bitausrichtung) bevorzugt. Dies war zu Ehren von Atari ST angesichts des hohen Arbeitsspeichers kein allzu großes Problem Vorstand.


Interessanterweise verwandelt sich in einer anderen Welt die Hölle alternierender Grafikebenen in ein Paradies, wenn es darum geht, lange Linien derselben Farbe zu zeichnen. Mal sehen warum.


FÜLLEN und KOPIEREN


Mit nur einem Prozessor zum Durchführen von FILL und COPY wird diese Aufgabe auf einfachste Weise durchgeführt. Hier gibt es keinen kniffligen Trick, aber das nicht ebene Layout des Framebuffers ermöglicht 68.000 "Reisen". Mit einem 32-KB- move.l die 8000 (32 Bit) move.l Operationen in beiden Fällen die Aufgabe. Die aufgezeichnete Ausgabe eines Teils des Kopiervorgangs am 68000 lautet wie folgt.


  ... move.w #49,d0 ;50*160*4 = 32000 octets .copy_loop: rept 160 move.l (a1)+,(a0)+ endr dbra d0,.copy_loop ... 

Da das Timing von 68000 sehr gut dokumentiert ist [16] [17] , können wir genau berechnen, wie lange es dauert, bis die COPY-Operation abgeschlossen ist. Da move.l 20 Zyklen erfordert, beträgt die Gesamtzahl der erforderlichen Zyklen 20 * 160 * 50 = 160.000 Zyklen. Bei einer Geschwindigkeit von 8.000.000 Zyklen / s dauert das Kopieren 20 ms.


Dieselbe Idee für FILL, außer dass anstelle des Operanden „ move.l indirekt mit move.l “ der erste Operand von move.l „Daten direkt“ ist, was „nur“ 12 Zyklen dauert. Dies ergibt insgesamt 12 ms für FILL.


  ... move.w #49,d0 ;50*160*4 = 32000 octets .fill_loop: rept 160 ; d1 = color repeated 8 times since d1=32 bits and color index=4 bits) move.l d1,(a0)+ endr dbra d0,.fill_loop ... 

Hinweis: Sie können die Atari ST-Version leicht von der Amiga-Version unterscheiden, wenn Sie sich den zweiten Spielbildschirm ansehen.


Der süße Skarabäus der Amiga-Version verschwand auf dem Atari ST. Tatsächlich fehlt es in allen anderen Häfen [18] , was es aus unklaren Gründen zu einem exklusiven Amiga macht.




Lösen des Problems beim Rendern


Ohne die Modi „Strichzeichnung“ und „Flächenfüllung“ verwendet der Port unter Atari ST den einfachen Bresenham-Algorithmus [22] , um die Kanten des Polygons zu verfolgen. Mit zwei Kanten und horizontalen Linien werden die Start- und Endkoordinaten des Bildschirmbereichs erstellt. Dann füllen 68.000 den Raum zwischen ihnen. Im Allgemeinen ähnelt das Funktionsprinzip dem Amiga-Blitter, nur dass hier alles programmgesteuert erfolgt.


Die Annäherung ist auf den ersten Blick sehr langsam, aber auch hier kann eine „Reisegeschwindigkeit“ erreicht werden, indem das gewebte Layout genutzt wird. Wenn Sie genau hinschauen, bestehen die meisten Frames von Another World aus langen horizontalen Linien derselben Farbe. Dies ermöglicht es dem 68000, Zeilen in einem Block von 16 Pixeln unter Verwendung der Anweisung move.l zu schreiben, die wir zuvor überprüft haben.


Der Bildschirm, auf dem Leicester seinen „Retter“ trifft, ist ein gutes Beispiel.



Hier sehen wir die roten Teile der Zeilen, die aufgrund der Position und Ausrichtung des Framebuffers nicht in 16-Pixel-Blöcken angezeigt werden können. Diese "langsamen" Pixel machen nur 23% des Framebuffers am Rand der Polygone aus. 77% des Bildpuffers werden mit einem "schnellen" 16-Pixel-Blocksatz gerendert.




Das Problem mit der Palette lösen


Das letzte zu lösende Problem ist, dass der Atari ST eine geringe Farbtiefe aufweist. Während Amiga 12 Bit pro Farbe zulässt, kann AtariST nur 9 Bit liefern.


Die Lösung bestand darin, das Spiel mit den Amiga-Paletten zu versehen und die 68.000 mit einer einfachen 1-Bit-Verschiebung (LRS) für jeden Kanal zum Startzeitpunkt für die Konvertierung von 12-Bit auf 9-Bit zu sorgen.


Das endgültige Bild sieht im Vergleich zum Amiga etwas dunkler aus, aber der Unterschied ist kaum zu bemerken [20] .


Abschließend


Trotz der offensichtlichen Mängel gelang es Atari ST, die genaue Version von Another World herauszubringen. Trotz allem sollte das Spiel nicht von der Amiga-Version abweichen. Der kleinere Farbraum war kaum zu bemerken, und der Motor arbeitete nur ein wenig langsamer [21] als auf dem Amiga (der mit fast 24 Bildern pro Sekunde lief).



Referenzen


  1. Die Amiga-Geschichte: Entwickelt in Atari, geboren in Commodore .
  2. Amiga Corporation .
  3. Wikipedia: Atari ST Ursprünge .
  4. Dadhacker, Der Atari ST, Teil 1 .
  5. Dadhacker, The Atari ST, Teil 2 .
  6. ST Magazine 51: "Les techniques de l'Overscan part 1" von Shengan Short .
  7. ST Magazine 51: "Les techniques de l'Overscan part 2" von Shengan Short .
  8. ST Magazin 55: "Les techniques de l'Overscan 3" von Shengan Short .
  9. ST Magazin 70: "Les techniques de l'Overscan 4" von Shengan Short .
  10. Atari ST Vollbild-Demoversionen .
  11. Atari ST Computer Sales und Marketshare: Ein Vergleich .
  12. ST Magazin 70: "Le Blitter, Tres Grande Vitesse" von Mathias Agopian .
  13. Atari-Overscan-Techniken .
  14. Echtzeit-3D-Grafik für den Atari ST .
  15. Warum Atari ST-Spiele langsamer waren als die Amiga-Versionen .
  16. Ausführungszeiten für Anweisungen verschieben .
  17. Der Befehlssatz des 68000 .
  18. Nerdy Vergnügen .
  19. Ein weiterer Quellcode der Welt: Video :: fillPolygon .
  20. Nerdy Pleasures: "ST hat eine etwas dunklere Palette als der Amiga." .
  21. Nerdy Pleasures: "Die Atari ST-Version läuft etwas langsamer als der Amiga ."
  22. Bresenhams Algorithmus .

Source: https://habr.com/ru/post/de484656/


All Articles