Aller au contenu
tatsui

Palette swap

Messages recommandés

Hello

 

désolé je ne savais pas trop où poster le sujet.

 

Petite question concernant, le hack de rom et plus précisement le swap de palette. Pour résumer la chose, j'ai remplacé certains tiles d'un ecran titre mais les tiles remplacés se voyaient originellement attribués une palette qui ne me convient pas.

 

Je ne peux pas modifier la palette en elle même car cela impacterait d'autres tiles mais je pourrais faire en sorte d'attribuer une autre palette existante aux tiles concernés. D'après ce que j'ai pu voir il faudrait que je modifie le attributs des tiles pour indiquer quelle palette utiliser.

 

Mon soucis est que je ne parviens pas à déterminer à quelle adresse se trouve les attributs pour les tiles concernés

 

auriez vous de la doc ou, rêve absolu, une démarche à m'indiquer? merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour Tatsui,

 

En ce qui concerne la modification de palette.

 

Sur nes c'est relativement simple ;)

 

Sinon regarde le code hexa des tiles, ça se présente sous quelle forme XX YY ? il y a surement un bit qui est attribué au numéro du palette à utiliser.

(désolé mais ne sachant pas de quel jeu tu parles, c'est difficile d'y jeter un œil ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

hello

 

j'avais vu ce très bon tuto mais si je ne m'abuse c'est pour modifier la plaette elle même et pas l'attribution de la palette, je vais le relire pour être sur

 

l'idée est plus de modifier l'OAM (http://wiki.nesdev.com/w/index.php/PPU_OAM), le jeu concerné est nintendo world cup, le but étant d'assigner au ballon de l'écran titre la même palette que le restant du titre pour coller avec le changement de titre

 

post-5648-0-86757500-1404647156_thumb.png

Partager ce message


Lien à poster
Partager sur d’autres sites

Bon, on est parti (rapidos, j'ai pas trop le temps)

Déjà phrase 1, les tiles, on les repère :

25/26/27/28 <- début en 0x3D54

35/36/37/38 <- début en 0x3D74

45/46/47/48 <- début en 0x3D94

55/56/57/58 <- début en 0x3DB4

 

Phase 2, (mais je dois filer) on va chercher après la palette correspondante pour ces tiles.

 

Sinon un petit lien pour t'aider.

Partager ce message


Lien à poster
Partager sur d’autres sites

Sur NES je ne saurais pas te dire, mais j'espère que sous SNES c'est un peu similaire:

 

En gros, les tilemap sont sous un format XXYYXXYYXXYY où les XX sont les numéro de tile et les YY les numéros de palette. Si tu trouves le numéro de palette correspondant au tile en rouge, tu pourras l'appliquer au tiles en blanc (enfin, sous snes c'est comme ça que j'ai modifié une rom).

Partager ce message


Lien à poster
Partager sur d’autres sites

J'aurais pas le temps de m'en charger aujourd'hui, le truc, c'est qu'il faut repérer quelle palette est affectée à tel ou tel tiles, mais à mon avis, si je me souviens bien hier de ce que j'ai vu dans FCEUX, tu vas devoir swapper 2 couleurs pour que les teintes de rouge ne choque pas.

 

Ces tiles sont employés ailleurs dans le jeu ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Je vais expliquer :)

 

Pour modifier la couleur du ballon, tu dois en effet modifier la table d'attributs.

http://wiki.nesdev.com/w/index.php/PPU_attribute_tables

 

Pour les situer et effectuer des tests, il y a un outil incontournable : Fceux !

Grâce à sa fonction hex Editor, tu peux modifier les valeurs en temps réel et constater les effets.

 

Les tables d'attributs se situent en x23C0, x27C0, x2BC0, ou x2FC0 de la mémoire PPU.

Dans Fceux lance la rom, et va dans le menu "Hex Editor", puis tu sélectionnes "PPU Memory" dans le menu "View".

Dans le cas de Nintendo World Cup, modifier les valeurs de la table d'attribut située en x23C0 affecte l'écran titre (j'ai inséré plein de AA pour tester):

 

433639Cup.png

 

En tatonnant, tu localises l'emplacement des octets affectant le ballon :

 

x23D1

x23D2

x23D9

x23DA

Il ne reste plus qu'a tester des valeurs pour voir celles qui te permettent d'obtenir l'effet désiré.

 

Enfin, maintenant que tu connais la chaîne de valeur de la table d'attributs, une recherche en rom te permet d'appliquer la modification.

Dans ton cas, les octets à modifier se situent en rom aux emplacements suivants ;

 

x3E8D

x3E8E

x3E93

x3E94

 

Et si tu es feignant :lol:, la rom modifiée :

 

Nintendo World Cup (modif).zip

Partager ce message


Lien à poster
Partager sur d’autres sites

super merci beaucoup, bien détaillé merci

 

Faut que je mette à jour ma version de fceux et que je le maitrise mieux, dernière question comment fais tu le lien entre adresse ppu et adresse rom (exemple x23DA et et x3E94) ca donne rien de concluant pour moi

 

en tout cas merci je me coucherai moins bete ce soir

Partager ce message


Lien à poster
Partager sur d’autres sites

Il y a en effet une petite spécificité sur ce jeu.

 

Si tu recherches tous les octets de cette table d'attributs, cele ne donne rien.

 

La table d'attributs dans la mémoire PPU :

897773PPU.png

 

Avec une recherche réduite sur le groupe  d'octets A5 AD A7, on arrive ici :

245485Rom.png

 

On observant la rom, on retrouve des similitudes, mais pas la table d'attributs entière.

La subtilité est là : le jeu utilise une compression RLE pour écrire la table d'attribut.

C'est une compression simple : en gros, au lieu d'écrire 5 fois l'octet A5 en rom, il est écrit "05A5", le "05" indiquant le nombre de répétitions.

 

En modifiant ces octets et en relançant la rom, les couleurs de l'écran titre sont modifiées, ce qui valide l'emplacement de la table d'attributs en rom.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai lu quelque chose relatif a cette compression sur nesdev ce matin et l'avait rencontré sans savoir ce que c'était en editantt des tiles mais grace à tes explications je comprends ce qui se cache derriere, ce qui était le plus important avant même de reussir la modif

 

merci beaucoup

Partager ce message


Lien à poster
Partager sur d’autres sites

Désolé de n'avoir pu finir le coup de patte, sinon pour le rle : http://traf.romhack.org/WikiTraf/index.php/Run_Length_Encoding

 

À terme tu comptes faire quoi avec ce hack tatsui ?

 

P.s: merci blyn! Pour ma part je me dis souvent si le tilemap est dans le coin, alors la table des attributs ne doit pas être loin...

Partager ce message


Lien à poster
Partager sur d’autres sites

×
×
  • Créer...