DT 86 11
From C64 Diskmag Wiki
ALDI Android Entstehungsgeschichte von Klaus Quindt ________________________________________ Eigentlich habe ich für solche "Spiele- reien" keine Zeit. Habe bei der Zusam- menstellung der Kultpack 2 ein fades C64 Game entdeckt: ALDI Android mit EINEM Level. Optisch sieht das nicht mal so schlecht aus. Warum, weiß ich auch nicht. Hat mich ir- gendwie gereizt.
Habe das Spiel leicht verändert. Weil man da keine Action draus machen kann, habe ich das etwas mehr auf Logik aufge- baut. D.h., für die gesammelten Symbole gibt es Punkte. Gleichzeitig zählen die Punkte bei den Laufwegen aber wieder runter. D.h., man muss sich den effektivsten Laufweg aus- denken, um mehr Punkte zu bekommen. Zusätzlich gibt es noch "Bomben". Damit kann man Mauern oder Hindernisse auflö- sen. Dann gibt es noch unsichtbare "Fal- len", wo man ein Leben verliert.
Außerdem ist die Steuerung etwas kompli- ziert. Es gibt normale Laufrichtungen links/rechts/hoch/runter sowie Sprünge links/rechts. Das wäre ja kein Problem. Es gibt aber große und kleine Sprünge. Wie soll man das abfragen? Ich wollte keine zusätzliche Tasten an der Tastatur aktivieren. Am PC kann man sowieso nur mit den Pfeiltasten als Joystick agie- ren. Zusätzliche Tasten sollten am PC auch immer die gleichen sein (z.B. STRG oder ALT). Am PC (Emulator) könnte man trick- sen, so dass STRG und ALT reagieren.
Am C64 gibt es diese Tasten nicht. Wer weiß auch, welche Taste man da drücken müsste. Mir ist also folgender Kompromiss einge- fallen: Will man Bomben zünden (Mauern auflösen), geht das mit Feuer. Kleine Sprünge links/rechts Feuer plus links/ rechts. Hier wirds schon kompliziert. Hier muss alles schnell gehen. Feuer links/rechts fast gleichzeitig. Ansonsten sind durch Feuer die gesammelten Bomben gezündet. Große Sprünge (über 3 Felder).
Nach RECHTS: Feuer plus Joy nach unten. Nach LINKS: Feuer plus Joy hoch. Ein Problem war die Tastaturabfrage. Das wollte ich über Joystick regeln. Nun ha- be ich aber fast alles vergessen. Im C64 Anleitungsheft waren wenigstens beide Adressen (56320 und 56321) angegeben. 2 Zeilen Basic geschrieben: 10 PRINT PEEK(56320) 20 GOTO 10 Nun konnte ich sehen, welche Werte ange- zeigt wurden. Gab aber noch ein Problem.
Normale Laufrichtungen. Diese Register sind dann belegt. Es gibt dann aber noch kleine und große Sprünge nach links/rechts. Ein kleiner Sprung: Feuer und Joystick links/rechts. Das war nun auch belegt. Großer Sprung geht so: Sprung rechts: Feuer und Joystick runter Sprung links: Feuer und Joystick vor Ich wusste ja nicht einmal, wie das mit dem Zeichensatz ist. Da ich ja zusätz- lich "Bomben" eingebaut habe, musste ich den (einfachen) Zeichensatz ändern.
Ich hatte noch im Kopf dass der ab $2000 oder so abgelegt werden kann. Außerdem war der vorhandene Zeichensatz so primi- tiv, dass außer die paar Zeichen nichts war. Da habe ich mich an das FINAL III erin- nert. Da war doch was mit Zeichensatz im Monitor. Richtig. Mit dem richtigen Monitorbefehl konnte man den kompletten C64-Zeichen- satz als Bits in Form von Sternchen se- hen. Man muss nur ein Sternchen löschen oder setzen, schon hatte man ein anderes Zeichen. Ich musste nur herausfinden, wo
der Primitivzeichensatz von Android ab- gelegt ist. Dann habe ich folgendes ge- macht: Das Android Basic Programm schreibt nach dem Start per DATA den Zeichensatz. Pro- gramm abgebrochen und mit dem Modul den Zeichensatz im Speicher auf Disk abge- legt. Dann einen Teil des C64-Zeichen- satzes nach $3000 transferiert. Den An- droid-Zeichensatz geladen. Der hat dann ein Teil überschrieben. Am Ende dann al- les abgespeichert. So habe ich den Android-Zeichensatz et- was vergrößert.
Ein weiteres Problem: Nur mit Feuer kann man, wenn man Bomben gesammelt hat, Hindernisse auflösen. Darum ist eine kleine Verzögerung einge- baut. Noch ein Problem: Ich habe am C64 gedacht, aber auch am Emulator. An der PC-Tastatur sollte es nicht zu kompliziert werden. Beim PC wäre das fast egal. Da muss man sowieso den "Joystick" mit den Pfeiltas- ten steuern.
Es gab aber noch weitere Probleme: Wie kann man so ein einfaches Spiel etwas interessanter machen? Das EINZIGE Level war ja mit PRINT-Zei- len aufgebaut. Weitere Level mit PRINT gestalten, wäre Strafarbeit. Da fiel mir das ACTION REPLAY ein. Das hat ja einen Bildschirmeditor. Android gestartet und per Freezer in den Editor. Da habe ich dann alles bis auf die Umrandung ausradiert. Den Bildschirm im Monitor nach $C000 transferiert und anschließend die Sache als LEVEL 0 ge- speichert.
Das erste Level habe ich dann im Pro- gramm mit Pokes in den Bildschirm ge- speichert. Der Aufbau war ätzend langsam. Zeile für Zeile wurde langsam aufgebaut. Da habe ich mir eine kleine Assemblerroutine ge- codet, die den Bildschirm von $C000 nach $0400 schaufelt. Gottseidank hatte ich noch ein paar Grundkenntnisse. Zuerst mussten natürlich mehr Level her, doch ohne Punkte ist's auch nichts. Ein- fach nur die Symbole als Punkte zählen wäre fade, weil ja keine Action drin ist.
Ergo muss das Spiel mehr auf Logik auf- gebaut werden. Da habe ich folgende Idee gehabt: Jeder Schritt (Laufweg) bringt Punkteab- zug. Findet man also den kürzesten Weg, hat man mehr Punkte. Sammelt man Symbo- le, verdoppeln sich die Punkte bei jedem Symbol. Das 1. Symbol gibt einen Punkt. Das nächste 2 Punkte, das dritte 4 Punk- te usw. Verliert man ein Leben, werden 50 Punkte abgezogen. Kommt man irgendwie nicht weiter, kann man mit F1 das Spielfeld neu aufbauen.
Man hat dann wieder 3 Leben, dafür wer- den aber 200 Punkte abgezogen. Wie kreiert man aber neue Level ohne Le- veleditor? Ganz einfach. Im Grundprogramm von Android habe ich ein paar Zeilen rausgeschmissen. Dann habe ich einen kleinen Vorloader, mit dem man ein Level einladen kann. Level 0 ist z.B. ein Leerlevel. Will ich ein Le- vel etwas ändern, lade ich das so ein. Für ein neues Level lade ich das leere Level 0. Das Programm startet und zeigt das leere Level.
Ich drücke dann den Freezeknopf am MK Replay und dort die Taste T (Bildschirm- editor). Der Zeichensatz ist natürlich richtig eingestellt. Ich kann nun ganz einfach ein Level bauen. Ein Druck auf Enter und ich befinde mich wieder im Freezemenü. Dort in den Moni- tor und den Bildschirm (ab $0400) nach $C000 transferiert. Auf RESTART und ich kann das Level testen. Funktioniert alles, wieder Freeze-Taste drücken und dann im Monitor das Level mit S:"Level X",8,C000,C3EF speichern. Fertig.
Nun kam das nächste Problem: Wie kann man aber die Level durchspielen? Das Programm besteht fast nur aus GOSUB Zeilen. Damit nicht irgendwann der Spei- cher überläuft, wird das Programm nach einem geschafften Level neu gestartet. So gehen aber auch alle Werte verloren. Diese Werte (Punkte, Level) etc. werden vorher in eine Speicherzelle gepoket. Das Programm startet neu, liest die Speicherzellen aus und weiß, welches Le- vel geladen werden muss und wieviele Punkte schon geholt worden sind.
Nun fehlt nur noch ein kleiner Vorloa- der. Hat man ein Level geschafft, soll ja das nächste Level automatisch star- ten. Das ist so gelöst: In der ersten Zeile steht: IF PEEK(xxxxx)=1 THEN LOAD....... Ist das Level geschafft, wird in diese Speicherzelle eine 1 gepoket und mit RUN das Programm neu gestartet. So wird der Loader für das nächste Level gestartet. Da stehen die Werte für die zu sammeln- den Symbole (gepoket) drin usw.
Einerseits ist die Steuerung etwas ko- misch, aber andererseits wird es etwas schwierig. Das soll aber so sein. Level, die man sofort schafft, werden uninte- ressant. Dann habe ich die selbstgebauten Level getestet. Manchmal habe ich durch ein ? (ist im Zeichensatz unsichtbar) unsicht- bare Hindernisse eingebaut, an denen man ein Leben verliert. Habe dann festge- stellt, dass man diese Stellen sich sehr schlecht merken konnte. Verliert man da ein Leben, wird ein Punkt angezeigt. So geht man da nicht erneut kaputt.
Musik: Da kann ich mich nur dumpf erinnern, dass ich Musik gesammelt habe, die bei $1000 lag und bei $1003 mit SYS zu star- ten war. Wie ich das gemacht habe, weiß ich nicht mehr. Eine theoretische Möglichkeit, die mir gerade einfällt, wäre die: Ein kleines Programm (Basic), das nicht über $1000 geht, laden (nicht starten). Die Musik mit ,8,1 laden. Das Ganze dann im Cart- ridge Monitor speichern. Im Basicpro- gramm muss nur am Anfang SYSxxxx für die Musik stehen.
Anfangs wollte ich schon aufgeben. Da lief alles nicht richtig. Ich habe den Fehler nicht finden können. Ich habe Zeilen gelöscht, die waren trotzdem noch vorhanden. Bis ich merkte, dass der Emulator ne Macke hatte. Emula- tor beendet und neu gestartet. Da funk- tionierte plötzlich alles. Fazit: Auch wenn die Scener mehr den Vice vor- ziehen, ich finde den C64S besser, weil einen Tick kompatibler (in Spielen und bei Laderoutinen).
Nur das FINAL CARTRIDGE hat im C64S ne Macke. Plötzlich funktioniert das Abspeichern nicht mehr. Freezen kann man erst garnicht. Das Ab- speichern funktioniert nicht. ANDROID - EIGENE LEVEL BAUEN: Jeder kann Level bauen, wenn er das AC- TION REPLAY hat. Das ist ganz einfach: Man startet das Spiel und wenn ein Level aufgebaut ist, drückt man den Freeze-
knopf. Man befindet sich im Freezemenü. Wenn man da die Taste T drückt, befindet man sich im Bildschirmeditor. Nun kann man Leitern, Mauern setzen etc. Druck auf RETURN und man ist wieder im Freezemenü. Dort wählt man MONITOR. Nun transferiert man den Bildschirm (ab $0400) nach $C000 T0400 07E8 C000. Bedeutet: Transferiere den Inhalt von $0400 bis $07E8 nach $C000. Zur Sicher- heit gibt man ein: IC000 und scrollt die Adressen.
Man kann erkennen, dass bei $C3E8 das Ende ist. Ergo gibt man ein: S"LEVEL XX",8,C000,C3E8 Das Level (S=SAVE) wird nun gespeichert. Danach verlässt man mit X wieder den Mo- nitor und wählt RESTART. _