Mahlzeit!
Da ich es in sehr naher Zukunft endlich mal auf die Reihe kriegen muss, und ich glaube, dass auch andere gerne mehr verständlichen Code sehen möchten, eröffne ich hiermit eine Art Scrolling-Workshop.
Ich hatte schon das eine oder andere Mal mit Scrolling gespielt (Flapper, mein erster Cartridge-Spiel-Entwurf), und bin da auf die eine und andere Hürde gestossen. Als Endziel sollte hier eine brauchbare Routine rauskommen (bzw. mehrere), die nach Bedarf Characters und Farbe scrollen können, und denen man einen nicht direkt im Speicher ausgepackten Level vorgeben kann (also nicht die Bildschirmdaten entpackt, sondern Teil-basiert; oder evtl. sogar Element-basiert).
Dass das nicht generisch funktioniert ist leider eine der ersten Erkenntnisse.
Ich versuche hier nach und nach Verbesserungen einzubringen und hoffe auf rege Teilnahme und Verbesserungsvorschläge (und dass zumindest ich was lerne).
#1: Naiv
-nur Zeichen
-eine feste Richtung
-Befüllung mit fixem Zeichenmuster
Den Anfang mache ich mit der Routine aus Flapper. Pro Frame wird ein Pixel gescrollt. Der simple Ansatz, für die 7 ersten Schritte wird lediglich das Softscroll-Register bei $D016 verwendet, beim 8 Schritt werden alle Zeichen stupide ein Zeichen nach links versetzt. Danach wird in der rechtsäußersten Spalte ein neuer Inhalt dargestellt.
Zur Veranschaulichung kann per Knopfdruck (Port II) die Dauer der Routine dargestellt werden.