- Ja gern, aber das schaffst Du nie.
- -- Jac! am Ostersonntag 2013 auf der Revision Party 3.0
Das war die Antwort, die ich von Peter aka Jac! bekam, als ich ihn gefragt hatte, ob ich
sein Demo in einen Demopack mit integrieren könnte. Aber ich muss hier weiter ausholen: wie bereits
geschrieben hatte, war ich über Ostern auf der Revision 3.0 Party. Von meinem Platz dort konnte ich auf einen C64 sehen, auf dem das selbe Demo in lief, wenn der Besitzer nicht am Platz war. Das Demo selbst war okay, allerdings war es auch etwas schade, dass immer das selbe lief.
Aber so etwas wollte ich für mein Atari 2600 VCS auch. Also habe ich mal das eine, mal das andere Demo gestartet, aber wenn das in einer Schleife lief, wurde es doch recht schnell langweilig. Also überlegte ich: ein Demo ist meistens 4k oder 8k groß, im Modul habe ich 32k zur Verfügung. Warum also nicht die Demos so in ein Modul packen, dass die Demos sich gegenseitig in einer Schleife aufrufen? Gut, man müsste die Demos etwas patchen, aber wenn ich eine Freigabe dafür bekomme, dann ist das in Ordnung.
Peter war der erste, den ich nach der Freigabe fragte. Seine Antwort hatten wir ja schon. Auch Tjoppen, der ebenfalls anwesend, und somit der zweite war, den ich gefragt hatte, war skeptisch. 2008 hatte eine Gruppe namens Trilobit etwas ähnliches probiert: ein Menü, mit dem man eine Demo auswählen und starten kann, welches dann so lange läuft, bis man das Gerät ausschaltet. Sie hatten 2009 entnervt aufgegeben und das Menü einzeln
veröffentlicht. Ihr größtes Problem war, dass das Einschaltverhalten bei Modulen mit einer Größe von mehr als 4k (kurz für 4 Kilobyte) nicht deterministisch ist, und das per Software ausgegeben werden muss. Das liegt daran, dass die Software in 4k Bänke unterteilt wird, und nicht klar ist, welche beim Einschalten verwendet wird. Um das auszugleichen müssten dann wiederum die alten Demos angepasst werden, was aber wiederum kompliziert wird.
Da aber war ich im Vorteil: mir ist egal welches Bank als erstes startet, so ist halt nicht klar, welches Demo als erstes startet, aber die Schleife wird definitiv komplett durchlaufen. Danach ging es an die Auswahl der Demos. Vier der Demos standen relativ schnell fest. Drei waren 8k groß, eins 4k. Die letzten freien 4k wurden mit dem Wunsch des Autors eines anderen Demos gefüllt. Bei der Analyse der Demos habe ich festgestellt, dass eins der 8k Demos nur etwas mehr als 5k verwendet. Also gibt es da noch fast 3k nicht verwendet wurden. Und es gibt da ein Demo, dass nur 128 Byte benötigt. Allerdings gibt es das nur als NTSC Version, das müsste ich noch auf PAL portieren. Aber bei der Lösung dieses Problems hatte ich einfach etwas Glück, so dass ich nur an ein paar Parametern drehen musste, und dann hat das eher zufällig gepasst. Ketzerisches Detail am Rande: gepatcht habe ich die Demos übrigens auf einem emulierten C64 mit einem Action Replay Cartridge, weil es den so ziemlich besten Direkt-Assembler hat.
Blieben aber immer noch 2.5k... Also habe ich mich selbst hingesetzt, noch etwas alten Code genommen, umgebaut, ergänzt, noch was neues geschrieben und das Ganze dann schön versteckt eingebaut. Die Idee war schließlich zu Ostern entstanden und "
Easter Eggs" in Software haben Tradition. Das vermutlich erste Easteregg im Heimbereich war auch auf dem Atari 2600 VCS, aber das ist eine andere Geschichte. Danach stand noch einiges an Testen, Fehlersuchen und -beheben auf dem Programm, und letzte Wochen Freitag konnte ich dann den
ganzen Krempel veröffentlichen. Es wurde recht gut angenommen, nur hat bisher niemand mein Easter Egg gefunden und publik gemacht. Eine Veröffentlichung als Modul ist übrigens auch noch geplant.
Ach ja, und am Samstag hatte ich dann eine Email von Trilobit im Briefkasten: "Kannst Du uns bei unserem Demopack von damals helfen...?" Konnte ich, aber das ist eine andere Geschichte.
Kommentare
(2013-04-14 21:16:28) e.: maybe he's coding :)
(2013-04-14 21:17:19) T.: coders coding? pfft
(2013-04-14 21:18:15) e.: unpossible!1
[...]
(2013-04-14 21:19:43) M.: Coders coding more than a week before a party is the unpossible part