DT 91 11

From C64 Diskmag Wiki
Revision as of 22:28, 17 May 2011 by Nyquist (Talk | contribs)

(diff) ←Older revision | view current revision (diff) | Newer revision→ (diff)
Jump to: navigation, search

English Translation

Vom Bug zu Pong!
Vom Bug zu Pong!

________________________________________

Obwohl ich mich nie wirklich mit dem
C64er-Handbuch auseinander setzte,
verführten mich die letzten langen
Winternächte 2009/10 doch endlich dazu,
mich intensiver mit dem Handbuchinhalt
zu beschäftigen.

Klar hatte ich als Kind auch die
Commodore-Ballons aufsteigen lassen,
doch verstanden hatte ich den Basic-Code
immer nur teilweise.
Dass das Handbuch eigentlich gar nicht
mal so oberflächlich geschrieben wurde,
war mir bis zum letzten Winter somit
überhaupt nicht bewusst.


Umso mehr war ich erstaunt, als ich
nach akribischer Lektüre des
Commodore-Handbuches das kleine
Programm "Springender Ball" auf Seite 43
nachvollziehen und sogar Commodores
"Bug" korrigieren konnte!

(Das Setzen des Semikolons in Zeile 25)


Nachdem ich die Geheimnisse der
Peek- und Poke-Befehle dann endlich
kennenlernen durfte und nun auch erfuhr,
was es mit den 1000 Zeichen des Bild-
schirmspeichers auf sich hat, wurde
schließlich auf Seite 65 das zuvor
Erlernte zusammengefasst:

"Ein weiteres Springballspiel"

Dumm, dass der Ball jedoch so gar nicht
springen wollte, wie es die Programm-
beschreibung forderte...



Man mag es nicht glauben, doch auch
in diesem nur 12-zeiligen Code haben
sich gleich mehrere Fehler einge-
schlichen!

Zum einen sollte der Zeilenbildwert in
den Zeilen 50, 55 und 70 von 39 auf 40
verändert werden.

Zum anderen sind die Zeilen 50 und 55
zu tauschen.

Dass die Fehler in meinem alten
"Ur-Handbuch" zu finden sind, mag
noch verständlich sein.

Doch selbst in meinem C64er-Handbuch
aus dem Jahre 91 (weißer Umschlag mit
bunten Quadraten im oberen Drittel)
finden sich noch die Fehler!


Nun, wie dem auch sei. Inzwischen
hatte ich mich über die Fehlersuche
schon soweit vertraut gemacht mit dem
Code, dass ich zu experimentieren
begann.

Ein Spiel, dachte ich mir, war es ja
eigentlich nicht, fehlte doch jede
externe Einflussnahme.

Schließlich blätterte ich ein wenig
im Anhang und stolperte über die
Abfrage der Joysticks.

Mit meinem Wissen über die If...Then-
Anweisungen von Seite 38 programmierte
ich mir eine entsprechende Abfrage-
Routine und konnte nun ein Blockgra-
fikzeichen als Schläger über den
Bildschirm gezielt wandern lassen.

Zwar passierte jetzt immer noch nicht
viel, aber eine Kollisionsabfrage über
den Peek-Befehl war selbst für einen
absoluten Laien schnell programmiert
und führte zu ersten wirklichen
Interaktionen.

Die ganze Programmierspielerei begann
langsam so richtig Spaß zu machen und
selbst mich - als "Programmierlegasthe-
niker" - immer mehr zu begeistern.

Hinzu kam, dass mich der "Spielablauf"
ein wenig an mein erstes Spielcomputer-
erlebnis erinnerte!

Es war wohl gegen Ende der 70er Jahre,
als meine Eltern Post vom Versandhaus
Quelle bekamen.


Ich weiß nicht mehr, ob meine Eltern
mir nur einen meiner zahlreichen
Weihnachtswünsche erfüllten, oder ob
sich mein Vater - damals auch von einem
gewissen Hang zu technischen Neuig-
keiten beseelt - selbst eine Freude
machen wollte.

Nun, wie dem auch sei. Für die nächsten
Wochen fesselte mich die kleine
Universum-Spielkonsole schließlich
derart, dass der liebe Sohnemann nur
unter Protest den Fernsehapparat
freigab.


Insbesondere ein Spiel zog mich
dabei neben Schießen, Basketball,
Motocross und Co. besonders in seinen
Bann:


Tennis bzw. Pong


Ja, und nun erinnerte der springende
Ball und der Blockgrafikschläger mich
an dieses kindliche Spielerlebnis.




Die Ähnlichkeit mit Pong ließ sich
zudem schnell erhöhen, indem man
die Blockgrafik "Ball" durch
ein Rechteck ersetzte (Blick in den
Anhang E unter Bildschirm-Codes
reicht) und die Sprite-Grafik
lediglich für eine Spielfeldmarkierung
einsetzt (war eh das nächste Kapitel).

Inzwischen hatte ich bereits einige
Stunden in den Code investiert, sodass
dieser immer mehr an Länge gewann.

Um den Überblick nicht zu verlieren,
ersteigerte ich mir für schlappe
1 Euro einen STAR SG-10C Drucker.
Wahrscheinlich können es nur hart-
gesottene Retros nachvollziehen, aber
der Klang der Nadeln ließ mich recht
sentimental werden, da ich meinen ersten
Nadeldrucker just zur Weihnachtszeit
geschenkt bekam (1986: ein Star LC).

Nun, soviel Jugend- bzw. Kindheits-
erinnerungen motivieren natürlich,
sodass ich mich mit den Geheimnissen
des SIDs vertraut machte.

Auch finde ich hier, dass das Handbuch
mit dem Kapitel "Musik mit dem Commodore
64" sehr gut die Grundlagen vermitteln
kann.
Um wenigstens einigermaßen die typischen
Pong-Geräusche mit dem SID zu erzeugen,
bedurfte es zwar, mit den Klangeffekten
eine ganze Zeit lang zu experimentieren,
doch auch hier kam der Spaß nicht
zu kurz.

Mittlerweile hatte sich allerdings
eine entscheidende Schwäche der Basic-
Programmierung bemerkbar gemacht:

Der Programmablauf wurde immer
langsamer!

Abhilfe schaffte ein Weiterprogrammieren
auf dem VICE-Emulator, um meinen
3/4 Pong-Clone schließlich unter 200%
Maximum-Speed zu Ende zu programmieren.

Dank dem Programm "Star Commander" und
einem eigens bei Protovision bestellten
Transfer-Kabel gelang auch schnell die
Konvertierung meiner Master-Diskette in
ein .d64-File, sodass der Punktezähler
und der 1-Player-Modus am PC fertig-
gestellt werden konnten.

Den C64-Player im 1-Player-Modus hatte
ich im ersten Anlauf dummerweise so
programmiert, dass der Computer nicht
verlieren konnte.

Erst eine Zufall-Routine, die sich an
das "Würfelspiel" auf Seite 52 anlehnt,
lässt nun den Commodore Fehler machen...

Allerdings muss ich gestehen, dass ich
einen Sieg im 1-Player-Modus bis heute
nicht geschafft habe. :-(

Um das Programm schließlich auch
unter klassischen Bedingungen lauf-
fähig zu machen, habe ich den Code
zu guter Letzt compiliert und dafür auch
ein einfaches Programm aus dem Jahre
1983 im Netz gefunden:

C-64 Ultra Fast Basic Compiler (SEW)
Pong! erhebt keinen Anspruch, ein
"echtes" Spiel zu sein, sondern
versteht sich als Spielerei am Rande,
um die ich für die DT einen Artikel
geschrieben habe.

Sicherlich wird man beim Spielen noch
auf eine Reihe Bugs stoßen und vieles
hätte ggf. "eleganter" gelöst werden
können.

Vielleicht motiviert aber meine kleine
Pong-Story den einen oder anderen
Programmier-Muffel dazu, selbst aktiv
zu werden.

Schließlich lebt unser Compi ja von
neuen Programmen. Auch, wenn sie nicht
in die Annalen der hohen Programmier-
kunst eingehen werden.











                          Sky Observer _
Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox