Editer images de ROM NDS

modification image

Une question en rapport avec le ROMHacking ?
Dans cette section nous tenterons de vous conseiller ou de partager nos connaissances, bien entendu dans la limite de nos compétences et de notre disponibilité.

Editer images de ROM NDS

Message non lupar jerome674 » Mercredi 8 Juin 2011 à 23:58:10

Bonjour,

Pour précision je travaille sur la traduction d'une ROM NDS et j'ai pu faire modifier les textes, les pointeurs, les contrôles de taille de texte, j'ai les 20 premières minutes de jeu de traduite et fonctionnel.

je cherche à modifier des textes graphique dans cette Rom de NDS en particulier, j'ai fait différents tests mais rien à faire c'est au dessus de mes capacités pour le moment.

j'ai essayé plusieurs éditeurs tel que TiledGGD, Tile layer pro, Crystaltile ... sans aucun succès.

mes images se trouvent dans des fichiers bin, j'ai tenté un truc bête, éditer dans l'introduction à la place de nom de l'éditeur de mettre du blabla au hasard le plus complet ne parvenant pas à compiler l'image, et bien sur aucun résultat concluant.

J'ai fait des tests sur 2 autres roms mais il est clair que je n'ai aucune méthode pour "comprendre" comment se comporte les fonts et les graphismes.

Si vous pouviez faire un mini tuto sur le fonctionnement de tel ou tel logiciel graphique cela pourrait m'être fort utile, à savoir que je n'ai trouvé aucun tuto de valable avec :

1. voici un fichier contenant une image
2. ouvrir avec tel soft
3. modifier le format de l'image
- 3.1 l'image est correcte -> vous pouvez la modifer à votre grès...
- 3.2 l'image est pire ->remodifier le nombre de couleur...

J'ai vu que vous avez fait dès le début de --Valkyrie Profile : Covenant of the Plume -- une présentation de votre team, une image complète sur l'écran inférieur, avez vous développé vos propres outils pour en arriver à ce résultat là ?
idem pour les 30 secondes ajoutées à la fin du générique pour vos crédits, énorme, surtout quand on édite la ROM, la taille des fichiers n'a guère augmenté, la plupart même ont diminués par rapport à la rom EU.

PS : je ne donne pas plus d'info sur la rom en question comme le projet est "secret" pour le moment, par contre en MP pas de problème.

merci d'avance
jerome674
 
Messages: 98
Âge: 37
Enregistré le: Mercredi 8 Juin 2011 à 22:53:05
Localisation: Tours
Genre: Homme

Re: Editer images de ROM NDS

Message non lupar BahaBulle » Jeudi 9 Juin 2011 à 17:15:00

Voilà ton tutorial :D

1. Ouvrir un fichier avec TileMolester
2. Modifier le format de l'image : codec et nombre de tiles en largeur

Il n'y a pas vraiment de méthode précise mais les codec les plus souvent utilisés pour la NDS sont le 4BPP linear/inverse et le 8BPP linear (en 1ou 2 dimensions).

Pour avoir une plus belle image, il faudrait trouver la palette qui va avec. Elle peut se trouver dans le même fichier ou dans un autre.
Avatar de l’utilisateur
BahaBulle
 
Messages: 280
Enregistré le: Lundi 20 Décembre 2010 à 18:18:17
Genre: Homme

Re: Editer images de ROM NDS

Message non lupar Lyan53 » Jeudi 9 Juin 2011 à 18:25:28

+1 pour tilemolester


Sinon bien entendu le tout en admettant que les fichiers qui contiennent les graphismes n'embarquent pas de compression sinon il faudra d'abord les décompresser bien entendu ;)


Et sinon dans VP CotP , les formats d'images sont les standards utilisés sur NDS (NCGR , NCER , NSCR , NCLR) mais bon ce n'est pas systématiquement le cas dans tous les jeux NDS , pour ce qui est de l'ajout d'un écran au début , il s'agit d'un hack plus complexe

Pour les vidéos c'est encore différent et également complexe mais les écrits sur ces dernières ne sont pas "subforced" , les textes des crédits ont donc tout simplement été traduits (même si des modifs ont été faites pour certains ajouts)


Pour ce qui est des font , faut également voir si c'est du standard NDS ou si c'est un format propre au jeu , si c'est du standard , l'extension devrait être NFTR et le fonctionnement est assez particulier , un éditeur graphique de base ne peut pas forcément le gérer à cause principalement de la taille des caractères (si ils sont pas dans des normes comme 8x8 12x12 16x16 etc... c'est mort , une font en 10x14 par ex ne pourra pas s'afficher correctement) mais il existe des outils pour ça comme NFTRedit par ex

Si par contre tu veux ajouter des entrées dedans (étendre la font) là il faudra analyser et comprendre comment ce format fonctionne (m'enfin ça c'est vraiment pas de la tarte ^^)

J'ai vu que vous avez fait dès le début de --Valkyrie Profile : Covenant of the Plume -- une présentation de votre team, une image complète sur l'écran inférieur, avez vous développé vos propres outils pour en arriver à ce résultat là ?


Oui des outils ont étés développés pour permettre certaines modifications propres à ce jeu (et donc non utilisable sur d'autres jeux) , mais bon pour ce qui a été de faire l'image elle même de l'intro , c'était pas nécessaire puisqu'elle utilise également le même format standard que dans tout le reste du jeu , suffisait donc de recréer un fichier similaire en plus , le plus gros du taff à faire pour obtenir ce résultat s'est surtout passé dans l'ajout de la routine d'affichage pour que cet écran puisse être utilisé (merci Jes qui s'est pris la tête avec ça au passage ^^)
Image
Avatar de l’utilisateur
Lyan53
Administrateur du site
 
Messages: 864
Âge: 41
Enregistré le: Lundi 22 Novembre 2010 à 20:48:11
Genre: Homme

Re: Editer images de ROM NDS

Message non lupar jerome674 » Samedi 11 Juin 2011 à 13:32:02

format d'image non standard : .bin

pour ce qui est des fonts, j'ai bien un fichier font mais encore là avec une extention .bin ...

Je suis donc sur un rom bien embetante ...
jerome674
 
Messages: 98
Âge: 37
Enregistré le: Mercredi 8 Juin 2011 à 22:53:05
Localisation: Tours
Genre: Homme

Re: Editer images de ROM NDS

Message non lupar Lyan53 » Samedi 11 Juin 2011 à 17:47:25

Il faut voir avant d'en tirer trop tôt des conclusions , les .bin sont parfois des archives (un fichier contenant plusieurs sous fichiers) , ça peut être également un format relativement proche des standards , bref y'a pas vraiment de règles , faut vraiment z'yeuter dedans pour être fixé


En général sur des archives , il y a un header qui fait office d'index et qui répertorie donc les adresses (et/ou aussi taille) des sous fichiers qu'elle contient

Les sous fichiers peuvent être compressés au passage

Ces sous fichiers peuvent aussi être des standard NDS comme autre chose , m'enfin bon les standards ont juste un header particulier , parfois dans les roms NDS , les mêmes formats sont utilisés mais sans forcément avoir ce header , malgré tout ça revient au même


Voit si tu trouves quelques chose ressemblant à un index d'archive dans tes .bin , pis si tu ne trouves rien je z'yeuterais vite fait dedans voir si ça me parle plus ;)
Image
Avatar de l’utilisateur
Lyan53
Administrateur du site
 
Messages: 864
Âge: 41
Enregistré le: Lundi 22 Novembre 2010 à 20:48:11
Genre: Homme

Re: Editer images de ROM NDS

Message non lupar jerome674 » Dimanche 12 Juin 2011 à 21:13:00

je n'ai malheureusement rien trouver dans le début des fichiers, les bin ne semblent pas être des archives...

je m'en remets à tes lumières Lyan, je t'envoi par MP le lien du jeu et les fichiers contenant des images...

merci d'avance
jerome674
 
Messages: 98
Âge: 37
Enregistré le: Mercredi 8 Juin 2011 à 22:53:05
Localisation: Tours
Genre: Homme

Re: Editer images de ROM NDS

Message non lupar Lyan53 » Lundi 13 Juin 2011 à 0:59:03

J'ai donc z'yeuté dans ta rom


Certains .bin sont bien des archives comme je le pensais et qui plus est dans ces archives certains sous-fichiers sont compressés

Voilà une petite explication de comment ça fonctionne (c'est pas trop dur)

Il s'agit du fichier "title_local.bin"
Image


Donc pour commencer , on voit qu'il y a 0x8 octets dédié pour chaque entrée (sous-fichier) contenu(e) dans l'archive

Les valeurs sont stockées en little-endian :
- Les 4 premiers octets (en rouge) sont l'offset ou commence le sous fichier
- Les 4 suivants (en bleu) sont la taille , mais pas seulement , il y a un système utilisé qui indique si le fichier est oui ou non compressé


Décortiquons ça :

Si on prend la 1ère et la 2nde valeur encadrées en bleu donc on a

1- 0x00020000 > en litlle endian > 0x00000200 (ou 0x200)
2- 0xC0410080 > en little endian > 0x8000410C


Bien qu'à vue de pif ce ne soit pas forcément nécessaire de faire ça pour ces entrées on va les décortiquer tout de même en binaire pour expliquer comment fonctionne (enfin je pense) le système qui indique si il y a ou non compression sur un sous-fichier

1- 00000000 00000000 00000010 00000000
2- 10000000 00000000 01000001 00001100

On a donc 32 bits pour nos 4 octets par entrée .

Sur ces 32 bits :
  • le 1er bit le plus haut (en rouge) est dédié à la compression , si sa valeur est "1" la compression est active , si sa valeur est "0" il n'y a pas de compression (à l'oeil nu si le fichier n'est pas trop gros on verra donc 0x80 sur cette valeur mais mieux vaut faire néanmoins attention car si le fichier est assez grand en taille ça peut prêter à confusion)
  • les 31 bits les plus bas (en jaune) sont la taille du fichier mais attention , la taille du fichier une fois celui-ci décompressé(soit 0x410C) puisque le fichier n'est pas gros on aurait pu le savoir depuis le début mais valait mieux expliquer tout de même en détail au cas z'ou tu tomberais sur un plus gros fichier


- Pour notre 1er fichier donc on peu en déduire qu'il se situe à l'offset 0x30 , qu'il pèse 0x200 octets et qu'il n'est pas compressé
- Pour notre 2nd fichier , celui-ci est situé à l'offset 0x230, il pèse 0x41C0 octets (mais attention lorsqu'il est décompressé) et il est compressé (pour connaitre sa taille exacte en compressé , c'est simple il suffit de prendre l'adresse du fichier suivant et de soustraire à l'adresse du pointeur en question) l'entrée suivant commence là ou fini celui-ci en somme .

Pour ce qui est du tout dernier pointeur de la liste (en vert) il marque à la fois la taille complète du fichier complet et bien entendu l'offset ou fini le dernier sous fichier


Pour en revenir à la 1ère entrée , l'adresse 0x30 indique que le début du 1er sous-fichier ce qui implique donc qu'il s'agit également de la taille du header contenant l'index (encadré en orange)

Dans l'encadré rose , on a donc le 1er fichier (sur 0x200 octets puisque non compressé) ; note : il s'agit de la palette de couleur pour info

Et pour ce qui est de la valeur entouré en violet , c'est en fait le 1er octet du second fichier , celui qui m'a permis de reconnaitre le format de compression (classique utilisé sur NDS) , c'est du lzss type 11

Il te suffit juste d'utiliser le codec LZSS NDS codé par Loki que tu trouveras ici pour pouvoir décompresser/recompresser ce type de fichier : viewtopic.php?f=4&t=35


C'est pas trop compliqué tout ça tu devrais t'en sortir si tu es débrouillard , les indications données précédemment sont toujours valables au passage , et avec tilemolester tu devrais pouvoir gérer le format d'image mais bon t'attends pas à avoir des images toujours dans l'ordre , c'est un peu du puzzle tout de même


Sinon pour la font , j'ai pu la visualiser et elle ne devrait pas être trop complexe à éditer , faut voir après si tu peux facilement y ajouter des entrées (ça c'est pas sûr) , je te laisse essayer un peu tout ça pis si tu as besoin d'un coup de main n'hésite pas a repasser dans le coin ;)

Bon courage :)
Image
Avatar de l’utilisateur
Lyan53
Administrateur du site
 
Messages: 864
Âge: 41
Enregistré le: Lundi 22 Novembre 2010 à 20:48:11
Genre: Homme

Re: Editer images de ROM NDS

Message non lupar jerome674 » Lundi 13 Juin 2011 à 13:47:47

ouaaa !!

j'ai tout lu attentivement, tu as donc pu avoir un bout d'image, c'est encourageant :)


Si je comprends bien au niveau du header, j'ai 5 images différentes :
0*0030 ->image normale
0*0230 ->image compressée
0*3258 ->image compressée
0*34cc ->image compressée
0*3ba0 ->image compressée

0*4084 ->fin du fichier


pour utiliser LZSS NDS codé par Loki, je mets mon fichier bin en entier ou je dois juste copier coller ce qui est compressé ?

Le soft ne reconnait pas l'extension de mon fichier :
1. je fais décompresser
2. je sélectionne mon fichier .bin en faisant *.*
3 je sélectionne LZSS type 0x11

Puis après ?
mon fichier reste inchangé, je suis sous Windows 7, est-ce que cela peut en être la cause ou est-ce que j'utilise mal ce soft ?

Merci d'avance.
jerome674
 
Messages: 98
Âge: 37
Enregistré le: Mercredi 8 Juin 2011 à 22:53:05
Localisation: Tours
Genre: Homme

Re: Editer images de ROM NDS

Message non lupar Lyan53 » Lundi 13 Juin 2011 à 14:10:32

Il faut extraire manuellement le sous fichier de l'archive avec ton editeur hex (sauf si tu sais coder dans ce cas faut coder un logiciel pour extraire l'archive .bin ce sera plus simple qu'à la main)


Comme tu as les adresses de debut et de fin dans l'index tu peux donc facilement extraire un bloc hexa qui correspond a ton fichier

suffit ensuite de le renommer avec l'extension .lz ou .lzss de selectionner le type 11 dans le codec puis de decompresser ton fichier


Le logiciel de Loki ne gere pas l'archive elle même mais uniquement la compression sur le fichier (des archives de ce type il en existe des tonnes de formats pour exemple c'est la 1ere fois que je croise celui que tu as là ou la compression est indiquée de la sorte)

donc extraire le fichier de l'archive (juste un copié colllé de bloc hex) > lui attriibuer une extension .lz ou .lzss > le decompresser avec le logiciel de Loki reglé sur type 11

Normalement si l'extraction se passe bien tu auras le fichier de la taille indiquée dans l'index en sortie
Image
Avatar de l’utilisateur
Lyan53
Administrateur du site
 
Messages: 864
Âge: 41
Enregistré le: Lundi 22 Novembre 2010 à 20:48:11
Genre: Homme

Re: Editer images de ROM NDS

Message non lupar Loki » Lundi 13 Juin 2011 à 14:54:40

En fait mon programme détecte automatiquement le type de la compression utilisé dans le fichier, c'est seulement à la compression qu'il faut lui indiquer le type de compression souhaité.
Avatar de l’utilisateur
Loki
 
Messages: 98
Enregistré le: Mardi 23 Novembre 2010 à 18:18:48
Genre: Non spécifié

Suivante

Retourner vers Sur le ROMhacking

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité

x

#{title}

#{text}