Projets 8 Bits Cireza

Retour sur Mortal Kombat II SMS. J’avais posté il y a quelques temps un message, où j’expliquais que je voulais arranger les palettes du jeu. J’ai ensuite lâché le truc car c’était assez compliqué de trouver où intervenir dans la ROM.

Mais qu’à cela ne tienne. J’ai retenté le coup hier, assagi de quelques semaines/mois. Je me suis lancé dans le débogage du code source tandis qu’il tournait sur émulateur. Je vous passe les détails mais j’ai appris pas mal de choses, notamment à mieux lire l’assembleur et mieux comprendre ce qu’il se passe.

Après pas mal d’essais (démarche un peu empirique, mais c’est inévitable) j’ai finalement trouvé le code qui alimente les palettes. Mais là, surprise, rien n’avait de sens. Les couleurs chargées étaient bidouillés avec des décalages de bits, et venaient de valeurs plus grandes que ce que la console accepte.

Et j’ai finalement compris ce qu’il se passait : plutôt que de faire des palettes dédiées pour la SMS, les développeurs ont copié/collé les palettes 4096 couleurs de la GG, et ont forcé le passage à 64 couleurs via des manipulations de bits automatiques. Ce qui explique clairement pourquoi on a des couleurs perdues (dupliquées). Pour être honnête, c’est dégueulasse comme pratique et à mon avis, c’était l’affaire d’une journée d’essayer de faire de meilleures palettes. Mais à la place ils ont codé un truc en 5 minutes et ont considéré que c’était bon.

C’était pour cette raison que les palettes affichées par la SMS étaient introuvables dans la ROM : il n’y a que les palettes GG en terme de data, et les valeurs SMS sont calculées à la volée. Maintenant que j’ai compris ça, je peux essayer de bricoler de meilleures palettes SMS, faire le décalage inverse (les mettre en mode GG) et les écrire dans la ROM. Je vais déjà essayer d’arranger les trois décors, mais ça n’est pas facile car il y a quelques couleurs communes entre le décor et les personnages.

Bref, j’essaye à nouveau ce soir !

1 « J'aime »