Beiträge von Mac Bacon im Thema „Sprite-Animation / Farbwechsel“

    Falls die Y-Position = spr_BorderBottom ist, dann soll erstmal geguckt werden, ob die Flash-Routine gerade aktiv ist: [...]
    Falls ja, direkt aufrufen. Falls nicht, Flash-Flag für das Sprite auf 1 setzen, der untere Rand wurde ja erreicht:


    Dann ist der Test unnötig. Wenn der untere Rand erreicht wurde => Flashen. Ob das vorher auch schon der Fall war, ist an der Stelle egal.

    Okay, wenn Du regelmäßig die Farbregister beschreibst, arbeite lieber mit Offsets von 0 bis 7. Für den Zugriff auf die Positionsregister kannst Du den aktuellen Offset kurz verdoppeln:

    In diesem Beispiel enthält X immer nur die Spritenummer.
    Alternativ zum Verdoppeln über den Akku wäre auch noch eine "Multiplikationstabelle" für die verdoppelten Offsets möglich - wie es Dir besser passt.

    Möglicherweise hab ich das Problem nicht ganz verstanden, aber um eine Routine von einem einzigen Datensatz auf n Datensätze umzustricken, nimmt man üblicherweise Tabellen. Bei Sprites bietet es sich an, die Tabelleneinträge 16 Bit groß zu machen, dann kann man mit dem Offset für den Tabellenzugriff (0,2,4,6,8,10,12,14) auch gleich die Positionsregister im VIC beschreiben. Also wenn jedes Sprite "seinen eigenen Pointer auf die Farbtabelle" braucht, dann leg diese acht Pointer in eine Tabelle und ruf sämtliche Sprite-Routinen mit dem entsprechenden Offset in Y auf.
    EDIT: X zu Y geändert, denn das wird im ersten Beispiel ja schon benutzt, um die acht Sprites anzusprechen.