Question, tu pourrais nous montrer un bout de code avec une de ces tables et nous expliquer un peu comment c'est organisé ?
Pas de soucis !
Tiens, petit exemple (pour le moment trouvé uniquement dans captain commando).
A un endroit tu as cet appel pour mettre à jour la variable image du registre du PPU :
00005170: 3B7B 000E 284A move.w ($e,PC,D0.w), ($284a,A5)
($284a,A5) étant l'image en RAM du registre du PPU
En fait c'est une fonction qui permet de déplacer une valeur dans une autre, normal vu son nom.
Ici la valeur cible étant notre image PPU et la valeur source est exprimée grâce à un pointeur.
Quand les variables sont entre parenthèses, ce n'est pas la valeur qui est utilisé mais ce qu'elle pointe en mémoire.
Pour calculer l'endroit du code où il vas chercher cette info il suffit d'additionner les registres/valeur utilisés dans la partie gauche.
PC étant le programme counter (5170 + 2 dans notre cas, le +2 correspond à la taille de la fonction move)
D0 étant un registre préchargé (en debug tu t'aperçois qu'il change en fonction des scènes à afficher, dans notre exemple on prendras 0x02)
Il faut donc regarder en 0x0E + 0X5172 + 0x02 = 0x5180 ce qu'il y a.
Et par miracle voici ce que tu trouves en 0x5180 :
00005180: 13B2 12F2 12F2 move.b INVALID 32, INVALID 31
00005186: 13B2 7000 102D move.b (A2,D7.w), ($2d,A1,D1.w)
du code que mame n'arrive pas à décoder... Normal en fait puisque ce sont des datas, et si tu regardes bien tu vas retrouver des valeurs bien connues 13B2, 12F2, etc...
Ce sont les valeurs d'activation des layers, ce sont ici qu'il faut les modifier.
A+