Pour appliquer les raster, j'ai utilisé l'IRQ mis en place pour le son et qui doit se déclencher une fois par frame.
L'IRQ est synchronisée sur la ligne en haut du dégradé du ciel.
(En fait il y a deux IRQ : un avec juste le son utilisée au début de l'intro, l'autre avec son + raster)
Quand on n'est pas dans l'IRQ, on déclenche le code des objets, l'affichage des sprites ...
Un des objets (RasterFade) se charge de calculer les valeurs de couleur pour les lignes de raster.
Il prend en entrée une couleur et effectue un fondu (frame par frame) vers une palette de destination.
L'IRQ avant de jouer le son, effectue le refresh des 72 lignes de raster.
Le fond de l'écran (ciel+eau) est une seule couleur (15), la dessus pas de problème, c'est facile.
Quand deux lignes de ciel sont identiques, on en profite pour changer une autre couleur.
Quand l'IRQ se déclenche on a déjà "rendu" à l'écran les deux personnages, il ne reste donc que le bas de l'emblème. On peut donc réutiliser tous les index couleurs dont on a plus besoin.
On commence par les 4 couleurs de vert de l'ile, puis plus bas les 4 couleurs de terre ...
en utilisant les couleurs qui se "libèrent" au fur et à mesure que l'emblème n'a plus a être dessiné.
C'est la partie "fun" car il faut identifier à la main quelles couleurs ne sont plus utilisées et faire le décompte ligne à ligne pour paramétrer tout ça dans un tableau de données.
Comme j'étais "large"
j'ai entrelacé les lignes du dégradé du ciel.
Un dernier truc : en plus du fondu, RasterFade fait un palette cycle sur une couleur de l'eau, c'est discret mais c'est bien présent.
Je t'invite à regarder le code pour plus de détail (release v0.0.3)
Il n'est pas super optimisé, mais il est a peu près organisé ;-)