Hallo Besucher, der Thread wurde 1,5k mal aufgerufen und enthält 5 Antworten

letzter Beitrag von Drachen am

Sprite-Scroller

  • Hi Leute

    mal eine frage, ich habe mir von der codebase64 - Seite ein Sprite-scroller genommen um das mal zu verstehen wie das funktioniert.

    Nachdem ich einige Anpassungen gemacht habe damit das Ding auch läuft, musste ich feststellen das manche Buchstaben beim scrollen 1 oder 2 höher sind als der restliche Text.

    Jetzt habe ich mich auf die Suche macht woran das liegen könnte, habe hier und da ein paar Werte geändert. Aber nichts hat geholfen. Vielleicht weis einer von euch eine Tipp

    woran das liegen könnte

    Hier mal der Quellcode

    und hier das fertig Progamm

    sprite-scroller 01.prg


    Hoffe einer von euch kann mir einen Rat geben


    Gruß Drachen

  • Bei .undlos nimmst Du den Screencode mal 8 durch 3 rols. Für Großbuchstaben (> 64) führt das zu einem Überlauf schon beim 2. rol. Das Carry wird dadurch gesetzt und beim 3. rol in Bit 1 zurückgeschoben. Dadurch verschiebt sich Dein Pointer ungewollt um 1.

  • EDIT: zu langsam

    Nachdem ich einige Anpassungen gemacht habe damit das Ding auch läuft, musste ich feststellen das manche Buchstaben beim scrollen 1 oder 2 höher sind als der restliche Text.

    Das sind genau die Buchstaben, die im Sourcecode Großbuchstaben sind, während aus den Kleinbuchstaben "normale" Großbuchstaben werden. Bei der Offsetberechnung wird zwar das Carry geprüft, aber der Überlauf passiert schon einen Befehl vorher und wird durch das ROL wieder unten in das Offsetbyte hineingeschoben.

    Oder kurz gesagt: Der Offset ist zehn Bits groß, das Programm kommt aber nur mit neun zurecht.

  • Ok vielen Dank Claus und Mac Bacon


    habe jetzt den gesamten Scroll-Text mit Kleinbuchstaben geschrieben. Und siehe da es jetzt alles normal. Da hätte ich auch selber drauf kommen können.

    Ich vergesse immer wieder das man beim C64´ er auf die Groß- und Kleinschreibung aufpassen sollte. :platsch:



    Gruß Drachen

  • Alternativ könntest Du das Carry bei jedem Shift berücksichtigen, dann funktioniert es für jeden Screencode: