DT 91 11
From C64 Diskmag Wiki
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 _