DT 86 11

From C64 Diskmag Wiki
(Difference between revisions)
Jump to: navigation, search
 
 
Line 1: Line 1:
[http://translate.google.com/translate?hl=de&ie=UTF-8&sl=de&tl=en&u=http://c64mags.untergrund.net/wiki/index.php%3Ftitle%3DDT_86_11&prev=_t  English Translation]
 
<pre>
 
              ALDI Android
 
Entstehungsgeschichte von Klaus Quindt
 
________________________________________
 
  
Eigentlich  habe ich f&uuml;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&szlig; ich auch nicht. Hat mich ir-
 
gendwie gereizt.
 
</pre>
 
<pre>
 
Habe  das  Spiel  leicht ver&auml;ndert. Weil
 
man da keine Action draus  machen  kann,
 
habe ich das etwas mehr auf Logik aufge-
 
baut.  D.h., f&uuml;r die gesammelten Symbole
 
gibt es Punkte.
 
 
Gleichzeitig  z&auml;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&auml;tzlich gibt es noch "Bomben".  Damit
 
kann  man Mauern oder Hindernisse aufl&ouml;-
 
sen. Dann gibt es noch unsichtbare "Fal-
 
len", wo man ein Leben verliert.
 
</pre>
 
<pre>
 
Au&szlig;erdem ist die Steuerung etwas kompli-
 
ziert.  Es  gibt  normale Laufrichtungen
 
links/rechts/hoch/runter  sowie  Spr&uuml;nge
 
links/rechts. Das w&auml;re ja kein Problem.
 
 
Es  gibt  aber gro&szlig;e und kleine Spr&uuml;nge.
 
Wie soll man das  abfragen?  Ich  wollte
 
keine zus&auml;tzliche Tasten an der Tastatur
 
aktivieren.  Am  PC kann man sowieso nur
 
mit  den  Pfeiltasten als Joystick agie-
 
ren.
 
 
Zus&auml;tzliche  Tasten  sollten  am PC auch
 
immer die gleichen sein  (z.B. STRG oder
 
ALT). Am PC (Emulator) k&ouml;nnte man trick-
 
sen, so dass STRG und ALT reagieren.
 
</pre>
 
<pre>
 
Am  C64  gibt es diese Tasten nicht. Wer
 
wei&szlig;  auch,  welche Taste man da dr&uuml;cken
 
m&uuml;sste.
 
 
Mir ist also folgender Kompromiss einge-
 
fallen:  Will  man Bomben z&uuml;nden (Mauern
 
aufl&ouml;sen),  geht  das  mit Feuer. Kleine
 
Spr&uuml;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&uuml;ndet.
 
 
Gro&szlig;e Spr&uuml;nge (&uuml;ber 3 Felder).
 
</pre>
 
<pre>
 
Nach RECHTS: Feuer plus Joy nach unten.
 
Nach  LINKS: Feuer plus Joy hoch.
 
 
Ein Problem war die Tastaturabfrage. Das
 
wollte ich &uuml;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.
 
</pre>
 
<pre>
 
Normale  Laufrichtungen.  Diese Register
 
sind dann belegt.
 
 
Es gibt dann aber noch kleine und  gro&szlig;e
 
Spr&uuml;nge nach links/rechts.  Ein  kleiner
 
Sprung: Feuer und Joystick links/rechts.
 
Das war nun auch belegt.
 
 
Gro&szlig;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&auml;tz-
 
lich "Bomben" eingebaut habe, musste ich
 
den (einfachen) Zeichensatz &auml;ndern.
 
</pre>
 
<pre>
 
Ich hatte noch im Kopf dass der ab $2000
 
oder  so  abgelegt werden kann. Au&szlig;erdem
 
war der vorhandene Zeichensatz so primi-
 
tiv,  dass au&szlig;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&ouml;schen
 
oder setzen, schon hatte man ein anderes
 
Zeichen. Ich musste nur herausfinden, wo
 
</pre>
 
<pre>
 
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 &uuml;berschrieben. Am Ende dann al-
 
les abgespeichert.
 
 
So habe ich den Android-Zeichensatz  et-
 
was vergr&ouml;&szlig;ert.
 
</pre>
 
<pre>
 
Ein weiteres Problem:
 
 
Nur mit Feuer kann man,  wenn man Bomben
 
gesammelt  hat,  Hindernisse  aufl&ouml;sen.
 
Darum ist eine kleine Verz&ouml;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&auml;re das fast egal.  Da muss man
 
sowieso den "Joystick" mit den Pfeiltas-
 
ten steuern.
 
</pre>
 
<pre>
 
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&auml;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&szlig;end  die  Sache als LEVEL 0 ge-
 
speichert.
 
</pre>
 
<pre>
 
Das  erste  Level  habe ich dann im Pro-
 
gramm mit  Pokes in  den Bildschirm  ge-
 
speichert.
 
 
Der Aufbau war &auml;tzend langsam. Zeile f&uuml;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&uuml;rlich mehr Level her,
 
doch ohne Punkte ist's auch nichts. Ein-
 
fach nur die Symbole als  Punkte  z&auml;hlen
 
w&auml;re fade, weil  ja  keine  Action  drin
 
ist.
 
</pre>
 
<pre>
 
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&uuml;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&auml;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.
 
</pre>
 
<pre>
 
Man hat dann wieder 3 Leben, daf&uuml;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 &auml;ndern, lade ich das so ein.
 
 
F&uuml;r  ein  neues Level lade ich das leere
 
Level 0. Das  Programm startet und zeigt
 
das leere Level.
 
</pre>
 
<pre>
 
Ich  dr&uuml;cke  dann  den Freezeknopf am MK
 
Replay und dort die Taste T (Bildschirm-
 
editor).  Der  Zeichensatz ist nat&uuml;rlich
 
richtig eingestellt. Ich kann  nun  ganz
 
einfach ein Level bauen.
 
 
Ein Druck auf Enter und ich befinde mich
 
wieder im Freezemen&uuml;.  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&uuml;cken  und  dann  im Monitor das Level
 
mit  S:"Level X",8,C000,C3EF  speichern.
 
Fertig.
 
</pre>
 
<pre>
 
Nun  kam  das  n&auml;chste Problem: Wie kann
 
man aber die Level durchspielen?
 
 
Das  Programm besteht fast nur aus GOSUB
 
Zeilen. Damit nicht irgendwann der Spei-
 
cher  &uuml;berl&auml;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&szlig;, welches Le-
 
vel  geladen  werden  muss  und wieviele
 
Punkte schon geholt worden sind.
 
</pre>
 
<pre>
 
Nun  fehlt  nur noch ein kleiner Vorloa-
 
der. Hat man ein Level  geschafft,  soll
 
ja  das n&auml;chste Level  automatisch star-
 
ten. Das ist so gel&ouml;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&uuml;r das n&auml;chste Level gestartet.
 
 
Da stehen die Werte f&uuml;r die zu  sammeln-
 
den Symbole (gepoket) drin usw.
 
</pre>
 
<pre>
 
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.
 
</pre>
 
<pre>
 
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&szlig;
 
ich nicht mehr.
 
 
Eine  theoretische  M&ouml;glichkeit, die mir
 
gerade einf&auml;llt, w&auml;re die:  Ein  kleines
 
Programm  (Basic),  das nicht &uuml;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&uuml;r die
 
Musik stehen.
 
</pre>
 
<pre>
 
Anfangs  wollte  ich  schon aufgeben. Da
 
lief alles nicht richtig. Ich  habe  den
 
Fehler nicht finden k&ouml;nnen.
 
 
Ich  habe  Zeilen  gel&ouml;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&ouml;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).
 
</pre>
 
<pre>
 
Nur  das  FINAL CARTRIDGE hat im C64S ne
 
Macke.
 
 
Pl&ouml;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&uuml;ckt  man den Freeze-
 
</pre>
 
<pre>
 
knopf.  Man befindet sich im Freezemen&uuml;.
 
Wenn man da die Taste T dr&uuml;ckt, befindet
 
man sich im Bildschirmeditor.
 
 
Nun kann man Leitern, Mauern setzen etc.
 
Druck  auf  RETURN und man ist wieder im
 
Freezemen&uuml;.
 
 
Dort w&auml;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.
 
</pre>
 
<pre>
 
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&auml;sst man mit X wieder den Mo-
 
nitor und w&auml;hlt RESTART.
 
 
 
 
 
 
 
                                      _
 
</pre>
 

Latest revision as of 00:13, 18 January 2011

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox