Oder Hintergrund, der immer gelöscht werden muss, nur darauf bauen die meisten digitalen Spiele auf.
Die Methode hier: Es entstehen beim Entwickeln Fehler und damit überschreiten man die Konstruktion oder legt offen, was für Bedingungen Spiele erfüllen müssen. Nennen wir sie FailTheConstruct .-) Ein funktionierendes Spiel ist das Ergebnis von unendlich vielen „Fehlern“.
Im Coden auf alten Computern geht man ja auch rückwärts in der Geschichte der Programmierung und deren Kultur. Diese Sichtweise ist natürlich meist positivistisch „im Sinne von“: Das musste ja so kommen, auch wenn die Zukunft nie geschlossen ist. Aus dem Kommentar von Assembler „;“ wurde etwa der Abschluss eines Befehls in C (?). Und dann stösst man des öftern auf Schreib- und Notationstechniken, die dann sehr nahe dran ist an heutiger Notation. Und ja die Dinge sind dann oft näher zusammen – auch technisch – als es den Eindruck macht. Und schliesslich hat sich ja alles aus diesem entwickelt. Hier auch ein Fall – Arrays, Index und Objektorientierung.
Im vorliegenden Fall werden Bälle, Paddles und Bricks eine Breakouts in 68k Assembler verwaltet im Spiel Breakout einem SizeCodeProjekt im Rahmen von CHLudens. Das Ganze ist ein grosser Word-Array (2 Bytes). Die einzelnen Objekte sind als „Zeilen“ angeordnet. Quasi ein grosses Excel mit sich wiederholenden Zeilen.
Das heisst alle 12 Bytes kommt das nächste Objekt:
Variables: RAM-Adresse
Ball: 0+ Paddle: 12+ Brick 1: 24+
Ein Objekt ist aufgebaut mit (relativ): 0: x 2: y
Hier werden nun Koordinaten reingeschrieben. a4 beinhaltet die Adresse der Variablen:
Selbst im 68000 sind noch nicht alle Rechenoperationen virtualisiert. Es müssen noch einige Operationen über den Taschenrechner = 68k Prozessor gelöst werden. Total virtualisiert hiesse: Die Operation kann nur auf dem Prozessor, auf dem Prozessor und dem Memory oder nur im Memory ablaufen. Selbstverständlich gehen viele Operationen auf dem 68000 schon von und mit Memory anders als beim C64. Aber dennoch ist es noch nicht vollständig.
Hier etwa das Addieren einer Speicherstelle zu einer anderen. Dabei sind ball+speedx oder ball+x quasi der zur Memory-Adresse hingezefügte Index: Also in etwa
Es ist also eine hier nicht supportete Instruktion.
Die Rechnung muss also auseinandergenommen werden und in Recheneinheit der CPU geladen werden, dort prozessiert und dann wieder zurück „kopiert“ (move) werden.
Das Ganze muss man sich also wie folgt vorstellen: Tippe den Wert im Taschenrechner ein und addiere diesen Wert zu einer Speicherstelle.
Das Ganze braucht mehr Zeilen und mehr Speicher und lässt sich schlechter lesen.
Manchmal stösst man selbst auf interessante Artefakte, hier etwa aus meiner Kindheit, der Versuch selbst einen Computer zu bauen am Arsch der Welt. Die visuelle Gestaltung erinnert stark an einen Homecomputer und die „Elektronik“ ist mehr Elektrik.
Das scheint der Versuch gewesen zu sein: 1/1/0 abzubilden. Das Gelöte ist „brute“ .-) Hoffen wir noch mehr davon hat überlebt. Vermutlich sollte man eine Person kreieren, die das damals gemacht hat und es dann ausstellen .-) Zusammen mit anderen Versuchen, sich seinen eigenen Computer zu basteln!
Immer interessant ist, dass wenn man Interviews macht oder Leute zusammenbringt oder auch nur nachfragt, dies zu Aktivtität führt in schon vergessene gegangen Zusammehängen. So fangen Menschen an, Artefakte wieder zu sammeln oder aktualisieren Websteiten oder stellen sogar neue Webseiten ins Netz. Es kann aber auch dazu kommen, dass sich Leute wieder treffen und wieder Spiele spielen.
In diesem Sinn ist Forschung – an/mit noch lebenden Menschen vorallem – auch eine Aktivierung dieser Welten.
Allzu schnell urteilt man über Hardware wie „Der Atari ST war einfacher als der Amiga“. Das stimmt prinzipiell natürlich schon nur etwa, was Bitplanes anbetrifft überhaupt nicht. Der Aufbau des Bildschirms erinnert eher an die Komplexität des C64 und seiner Mosaike. Die Pixels sind recht Komplex verpackt – im Sinne von 16Pixel * 4 Farben in 8 Bytes. Während das Verstehen der Bitplanes des Amigas relativ einfach ist ist: 4 Bitplanes bei 16 Farben je 320×256 Pixel gross. Zum Ausprobieren ist die Amiga Hardware sehr einfach. Ich schreibe Bytes hinein und sehe etwas, ganz anders beim Atari ST (oder beim C64). Insofern ist der Bildschirmaufbau beim Atari ST bei weitem komplizierters als der Amiga und auch schwieriger zu Managen!
Der Atari ST war bekanntlich ein 68k-Computer schnell zusammengebaut, nachdem Jack Tramiel (gerade von Commodore) gewechselt trotz Zusammenarbeit mit der Amiga Firma, den Zuschlag dann doch nicht gekriegt hat und der Amiga an Commodore ging. Durch die sehr schnelle Entwicklung war der Atari ST ein richtiger Computer. Er bestand aus einem Prozessor und viel RAM. Ohne Hardware-Unterstützung mussten alle Sprites in Echtzeit berechnet werden. Darum gab es eher wenige davon. Bis ein Kniff auftauchte – man konnte diese Sprites ja vorberechnen. Das Problem ist nämlich auch hier: Der Screen ist in 8Pixel eingeteilt, man muss also Pixel über diese Byte-Grenze bewegen oder in Assembler „Rollen/Shiften“ und den überschüssigen Pixel dann im wieder im nächsten Byte einfügen etc. Ein komplexes und vorallem rechenzeitlastiges Problem. Da hilft dann eben alle 16 Verschiebungen schon vorher zu machen und einfach die geeigneten Blöcke zu kopieren bzw. zuerst die Maske auschhneiden und den Rest darüber legen. Und in diesem Bereich ist der 68k schnell mit movem- und co. Und macht damit fast die Vorteile des Blitters des Amiga wet..
Vereinfacht sieht dies Folgendermassen aus. Das wäre eine monochromer Screen (nicht erklärt: 16 Farben werden in 4 Layern untergebracht – Bitplanes):
Anbei sieht man eine solche automatisch generierte Masse von 16 x 2er Bläcken und daneben die Maske. Aus dem Spiel TheHolyCube (Atari ST) extra visualisiert, da die Daten nicht so nebeneinander liegen. Damit erreicht man relativ einfach 32 * 16×16 Sprites pro Frame.
Vermutlich muss man anfangen, die verschiedenen Arten von Autonomie gerade Anfang der 80er Jahre genauer anzuschauen und die gut untersuchten wie die Autonomen Zentren neben die digitalen zu stellen.
Vielleicht kann man die Demoscene der Anfänge auch als Besetzung oder zumindest als Markierungszene sehen, also eine Scene, die diesen neuen Raum – In Ermangelung eines Begriffes – „kolonialisiert“ (sie trifft dabei nur auf ihren eigenen neuen Raum!). Damit wäre dann auch klar, wie diese Scene sich von der Crackerscene absetzt, die sich ja zumindestens noch an den ersten digitalen existierende Welten – den Spielen – orientierten, diese kolonialisieren, für sich nutzen und diese letztlich ‚entführten‘ als Vehikel und damit die Grundlage legten für eine völlig emanzipierte Form – kurz die Demoscene. Dies erklärt in einem gewissen Sinn auch, warum diese Scene sich absolut nicht an der Kunst/Designszene und maximal noch an der Musikszene orientierte – auch visuell. Hier ging es darum, möglichst viel neues „Land“ abzustecken, es zu erweiteren und das war fatal: auch nur um das technisch Machbare zu erweiteren. Für viele war das Ganze geradezu ein Kampf um Aufmerksamkeit mit Effekten und Machbaren. Oder anders gesagt: Entfesselte Konkurrenz – ganz im Zeitgeist jener Tage.