[NDS] Soucis pour modifier du texte dans Club | Pokémon Trash
[NDS] Soucis pour modifier du texte
Darkrai-X - 29 juillet 2015 à 17:45
Salut !
J'aimerai modifier quelques textes sur la rom The World End With You, sur NDS, mais il ne contient pas de fichier .Narc, que des fichiers .bin, et quand je les ouvres avec un éditeur Hexa, impossible de chercher le texte que je veux modifier.
J'ai essayé de passer par l'hexa tout court sur le fichier .nds mais on dirai que la rom est cryptée...
Si vous avez une solution ce serai cool, merci!
yago58 - 29 juillet 2015 à 19:21
Je connais pas, donc je vais pas faire de mystère.
gh7778 - 29 juillet 2015 à 19:25
c'est beau l'innocence, croire que y'a des narc dans toutes les roms x)
Je jeterais un oeil quand j'aurais le temps, histoire de t'orienter. T'a pas des dat par hasard ?
Darkrai-X - 29 juillet 2015 à 20:11
Nope
Darkrai-X - 30 juillet 2015 à 15:59
Personne n'a une petite piste ?
gh7778 - 30 juillet 2015 à 16:44
je vais regarder
Darkrai-X - 30 juillet 2015 à 16:55
merci !
Darkrai-X - 30 juillet 2015 à 17:11
Alors ? Tu trouves quelques trucs ?
gh7778 - 30 juillet 2015 à 17:17
Alors, laisse tomber les extensions, c'ets le bordel. Je suis tombé sur des tiles dans des bin décompressés au 2eme niveau (Apl_Abe/Grp_FldShinigami.bin)
Les messages semblent être (à l'origine) dans des fichiers xls (voir overlays9_36)
J'ai trouvé du texte dans Apl_Fuk/mestxt.bin (va de paire avec mestable.bin)
j'ai pas le temps de t'aider plus, déso =/
Et comme j'ai pas joué au jeu, ça aide pas^^
hésite pas à fouiller au niveau des overlays et des arm pour pecher des infos
Megadrifter - 30 juillet 2015 à 18:37
Dans mestable.bin, tu as le dictionnaire des phrases, qui contient une liste de paires Offset (4 octets)/Longueur (4 octets) des phrases dans mestxt.bin.
Dans mestxt.bin, tu as le texte, en ASCII. Les caractères sont sur deux octets. Un saut de ligne est représenté par FE FF, et une fin de phrase par .
Dans mestable.bin, tu as le dictionnaire des phrases, qui contient une liste de paires Offset (4 octets)/Longueur (4 octets) des phrases dans mestxt.bin.
Dans mestxt.bin, tu as le texte, en ANSI. Les caractères sont sur deux octets. Un saut de ligne est représenté par FE FF, et une fin de phrase par FF FF.
Et comment je fais du coup ?
Megadrifter - 30 juillet 2015 à 18:57
Soit tu demandes à ce qu'on te fasse un petit programme qui gère le tout, et dans lequel tu modifies le texte.
Soit tu fais ça à la main, en modifiant le texte dans l'hexa, puis si la longueur change, tu modifies mestable.bin en fonction. Ce qui peut être assez pénible et fastidieux.
Darkrai-X - 30 juillet 2015 à 19:00
Et a qui veux-tu que je demande un programme pareil ? :(
Megadrifter - 30 juillet 2015 à 19:08
À qui sait un minimum coder. C'est assez simple à programmer, qui plus est. Je pourrais le faire, Yuri pourrait le faire.
Par contre, avant que quelqu'un se lance là-dedans, je préfère demander : le texte est toujours en majuscule dans le jeu ? Sinon, ça veut dire que la casse est gérée autre part, et que ça ne concordera pas forcément avec une traduction, voire une simple modification.
Darkrai-X - 30 juillet 2015 à 19:18
Non tous n'est pas en MaJ.
Tu as skype ? Yuri a Skype ?
Ca pourrai être rémunéré, on est pas mal sur GBATemp à vouloir ça.
Megadrifter - 30 juillet 2015 à 19:24
Alors, si tout n'est pas en majuscule, il va d'abord falloir chercher où c'est géré dans les fichiers du jeu (sûrement dans les Overlay dont parlait Guitoh). Ensuite, ça pourrait se faire.
Nous avons Skype. Et je crois déjà t'avoir dans mes contacts.
Darkrai-X - 30 juillet 2015 à 19:25
J'ai pu ajouter Yuri sur skype, on va voir, si tu veux venir je fait convo à 3
Nuri Yuri - 30 juillet 2015 à 19:35
Je regarderais ça demain je pense :p
Si vous voulez me simplifier la tache, dites moi un peu comment fonctionne les deux fichiers entre eux et comment vous voulez que ce soit présenté. (Parce que là je vois un gros bordel et je sais pas trop à quoi correspond les valeurs de la table ^^'
Megadrifter - 30 juillet 2015 à 19:36
C'est écrit /club/rom-hacking/(nds-soucis-pour-modifier-du-texte/msg1472919/#msg1472919).
Megadrifter - 30 juillet 2015 à 20:18
Le texte est géré dans Overlay9_31. Je ne sais pas lire ces fichiers, mais si quelqu'un d'autre le peut, il faudrait chercher une addition de 0x20. Plus besoin de regarder, vu ce que j'écris après...
Dans le fichier mestxt.bin, le texte est écrit avec un décalage de -0x20 sur les http://ascii-table.com/ascii.php. C'est pour ça qu'on voit des parenthèses au tout début du fichier.
Guitoh, si tu connais un moyen de décompresser les fichiers pack, ça pourrait être intéressant de décompresser le fichier Apl_Fuk/Grp_Font.bin pour voir si la police contient les caractères européens (accents et autres). Sinon, ça veut dire que la traduction devra s'en passer.
Darkrai-X - 30 juillet 2015 à 20:48
Wow, merci déjà pour tout vos efforts, ca me fait plaisir !
gh7778 - 30 juillet 2015 à 21:16
tinke "décompresse" parfaitement ça (apparemment c'est juste un dossier, pas de compression que dalle... mais ça donne accès à des fichiers qui eux le sont). Par contre y'a des table de caractères qui trainent un peu partout dans la rom, du coup je sais pas laquelle est la principale.
De mémoire, j'ai pas vu de carac accentués sur ces tables d'ailleurs
Pour en revenir au bin, au final j'ai rien, juste des suites comme ça un peu partout, sinon juste des en-tête j'ai l'impression :
Peut être une représentation graphique des caractères (si c'est bien des caractères, c'est strange, l'overlays semble dire que oui, mais les data non =/)
Megadrifter - 30 juillet 2015 à 21:57
OK, merci pour les informations, je note ça quelque part. Je reviendrai s'il y a besoin.
gh7778 - 30 juillet 2015 à 22:06
le plus simple va être de tester ingame, comme ça on a la réponse direct. C'ets pas très compliqué de modifier 1 carac d'un dialogue cible pour savoir
Darkrai-X - 30 juillet 2015 à 22:24
J'ai essayer, ca fait un dialogue vide.
Premier dialogue est là: 0x3DE46F4
gh7778 - 30 juillet 2015 à 23:50
donc probablement pas supporté
Mickey` - 31 juillet 2015 à 00:21
Si t'as besoin d'un log et que tu sais quoi modifier, tu peux me contacter, ça m'intéresse.
Ribesg - 31 juillet 2015 à 08:24
Que quelqu'un up un couple mestable.bin / mestxt.bin quelque part alors, pour pouvoir test
Donc en résumé, pour chaque couple d'octets, on rajoute 0x20 pour avoir le "vrai" caractère et FEFF est un retour à la ligne et FFFF une fin de phrase. mestable.bin est une bête FAT qui pointe vers des offsets dans mestxt.bin. J'ai tout compris ?
TheCaptainSnow - 31 juillet 2015 à 10:59
Ajouter 0x20 sert pas a grand chose, c'est simplement que ce n'est pas la table ASCII qui est utilisé, et qu'il faut trouver la correspondance entre les caractères et la table, puisque les !.?, etc ne seront pas forcément décalé de 0x20 avec l'ASCII.
Pour ce qui est des accents il est toujours possibles de les ajouter dans la table de caractère. Il faut juste savoir comment est fait le mappage entre les la valeur et l'image d'un caractère, dans certains cas c'est simple dans d'autres non.
Nuri Yuri - 31 juillet 2015 à 14:06
Dans le fichier mestxt je ne vois pas des espaces entre les caractères mais des \x00, ça me fait énormément penser au TCHAR sous Windows.
TheCaptainSnow - 31 juillet 2015 à 16:34
Le TCHAR au placard merci, parce-que tous a déjà était dit.
Spoiler
La table de caractère n'est pas dans le format ASCII donc il faut la construire c'est tous. Les textes sont écrits en clair dans le mestxt.bin donc ils sont très simple a modifier.
Comme la taille de ce que tu va écrire sera différente de celle du texte anglais il faudra modifié le mestable.bin, mais megadrifter a tous dit la dessus :
Dans mestable.bin, tu as le dictionnaire des phrases, qui contient une liste de paires Offset (4 octets)/Longueur (4 octets) des phrases dans mestxt.bin.
Dans mestxt.bin, tu as le texte, en ASCII. Les caractères sont sur deux octets. Un saut de ligne est représenté par FE FF, et une fin de phrase par FF FF.
Voila c'est tout. J'ai vite fait généré une table que j'ai légèrement complété, mais il manque pas mal de caractères. Tous les # que vous voyez sur le screen sont les caractères qui n'ont pas de correspondance dans la table que j'ai faite, a vous de completer.
La plus part des éditeur hexa ne gère pas les tables de caractère, Translhextion le fait. Mais éditer les textes avec l'éditeur héxa c'est pas top, autant développer un petit log c'est rapide et simple et ça te décharge de devoir éditer manuellement le mestable.
Edit: Ce qui a était fait la c'est quand même les bases de la traduction et on trouve facilement des guides (Guide TRAF par exemple) typiquement ce cas la est le cas de base pris dans les exemples de ce genre de guide.
Si jamais tu tiens a rajouter les accents il me semble qu'il y a un passage dessus sur le guide de la TRAF, et si tu n'y arrive pas j'y jetterais éventuellement un œil, mais avant tous il faut compléter la table de caractère.
Darkrai-X - 31 juillet 2015 à 16:44
Nuri Yuri bosse aussi dessus :
Merci à vous en tout cas, et désolé pour mon incompétence...
Ouai peut-être, mais dans tout les cas en HEXA comme ça je peux pas dépassé la limite de caractères...
gh7778 - 31 juillet 2015 à 19:42
si tu peux, en mettant à jour les offsets dans mestable.bin, mais tellement fastidieux que oui, faut mieux un prog. Si nuri est sur le coup ça devrait être tranquille
Nuri Yuri - 31 juillet 2015 à 22:46
mestable.bin, le jeu il a pas l'air d'en avoir grand chose à faire '^' (D'ailleurs les fin & co ne tombent jamais bien donc je pense qu'il n'a pas avoir avec le fichier actuel...)
gh7778 - 31 juillet 2015 à 22:54
il est chargé dans les overlays pourtant
Nuri Yuri - 31 juillet 2015 à 23:40
Effectivement. Petit problème de compatibilité entre le 16 bits et l'offset. Ce point est réglé (pour la lecture). J'ai aucune idée de si l'écriture fonctionne toujours, j'attends les résultats de Undi ^^
Nuri Yuri - 2 août 2015 à 15:43
Bouh les gens. Le soft fonctionne correctement maintenant. Le seul problème réside dans les caractères avec accents, j'ai aucune idée de quelle est leur correspondance du coup on a le droit à des jolis caractères japoniais (Hiraganas).
PS : Petit screen du merdier :
gh7778 - 2 août 2015 à 15:52
gg!
Ben y'aura plus qu'à chercher si les carac sont pas dispo par miracle :P
Nuri Yuri - 2 août 2015 à 16:20
J'ai vu un fontdata dans les fichiers mais comme je n'y connais absolument rien en RH je ne peux pas en exploiter grand choses.
Si t'as l'image du charset d'ailleurs peut être que ça peut aider ^^
gh7778 - 2 août 2015 à 19:46
je t'avoue que j'ai aucune idée de comment sont gérés les charsets dans les roms =/