[SNES] Romancing Saga - Pointeurs

Des soucis pour hacker votre jeu ? C'est ici qu'il faut exposer votre problème.
BananaSplit
Nouveau Floodeur
Messages : 12
Inscription : 12 juin 2017, 19:06

[SNES] Romancing Saga - Pointeurs

Message non lu par BananaSplit » 14 juin 2017, 23:43

Bonsoir à tous !

Ayant beaucoup apprécié le jeu "Romancing Saga" (premier du nom) sur SNES et l'ayant fait en anglais il y a quelques temps (traduction anglaise faite par des fans), je trouvais dommage qu'il n'est pas eu droit à son patch fr.
Ayant pas mal de temps en ce moment, je me suis dis pourquoi ne pas en profiter pour le traduire et en même temps apprendre pas mal de choses dans le domaine du rom hacking.

Ne maîtrisant pas le japonais, je vais le traduire à partir de la version déjà traduite en anglais.
Ca fait maintenant quelques semaines que je me documente sur le rom hacking car complètement novice dans ce domaine.

J'ai pu identifier la table de caractères utilisée par le jeu et ainsi pouvoir voir le texte des menus/dialogues en clair dans l'éditeur hexadécimal (WindHex).
Le remplacement dans l'éditeur hexa fonctionne très bien mais le soucis que je rencontre comme je manque de place pour certaines traductions, c'est lorsque j'essaie de manipuler les pointeurs.

Sur certains textes traduits qui sont plus courts que les originaux, j'aimerai utiliser les pointeurs pour pouvoir indiquer à la ROM de continuer à afficher les textes sur telle ou telle adresse (qui pointerait donc aux endroits où j'ai pu récupérer de la place).
Je me suis documenté là dessus et je comprends très bien le principe de fonctionnement.
J'ai d'ailleurs téléchargé le logiciel Lunar Address pour retrouver les pointeurs à partir de l'offset de début d'un texte (très pratique). J'ai fait plusieurs essais pour essayer dans un premier temps un dialogue à la place d'un autre en changeant tout simplement la valeur du pointeur mais ça n'a jamais fonctionné.
Je n'ai pas de mal à retrouver les pointeurs et je sais également que sur NES et SNES, l"architecture du CPU était de type little endian (donc inverser les deux derniers octets renvoyés par Lunar lorsque l'on recherche un pointeur).

Je reconnais d'ailleurs assez rapidement les tables de pointeurs puisque beaucoup d'octets identiques reviennent souvent. Pour plusieurs essais que j'ai fait sur des pointeurs, je ne trouvais qu'une seule occurrence avec la recherche hexadécimale de l'éditeur donc difficile de se tromper.
Une fois la modif faite et sauvegardée sur la ROM, j'enregistre le changement et je charge à nouveau la ROM sur l'émulateur. Aucun bug sur le jeu mais ma modif n'apparaît pas.

Est-ce que ça aurait un lien avec le fait que le jeu ait déjà été traduit du japonais vers l'anglais et que donc la table de pointeurs (très certainement utilisée ^^)ait été modifiée en étant manipulée et donc ne renvoie plus vers les bons pointeurs ou quelque chose comme ça ?

Je ferai demain des captures d'écrans pour bien imager la chose et pour que vous puissiez voir les manipulations que je fait et me dire si je m'y prends mal.

Merci d'avance pour avoir lu tout ce pavé et pour les personnes qui prendront le temps de me répondre :)

Bonne nuit à tous :D

Avatar de l’utilisateur
Bleachya43vier
Amateur Suprême du Flood
Messages : 103
Inscription : 01 mai 2012, 16:43

Re: [SNES] Romancing Saga - Pointeurs

Message non lu par Bleachya43vier » 15 juin 2017, 12:02

Personnellement, je pense que ce serait difficile à dire comme ça sans exemple. Peut-être que tu ne modifies pas les bonnes valeurs. Sache aussi que les dialogues dans la rom ne respectent pas forcément l'ordre du jeu ; peut-être que tu modifies un pointeur mais pas celui que tu veux :D

Sinon, DDS met toujours à disposition ses outils et ses modifications quand il termine une trad. Tu as tout ça sur le lien suivant. En lisant tout, je suis sûr que tu en apprendras plus aussi. C'est peut-être la facilité pour le coup alors j'aimerais te conseiller de continuer à apprendre de la "voie classique" mais sinon tu as les cartes en main si tu demandes l'autorisation de l'auteur de partir sur la base anglaise ^^
http://www.romhacking.net/forum/index.php?topic=18590.0
Oh the queen of peace. Always does her best to please. Is it any use? Somebody's gotta lose.

BananaSplit
Nouveau Floodeur
Messages : 12
Inscription : 12 juin 2017, 19:06

Re: [SNES] Romancing Saga - Pointeurs

Message non lu par BananaSplit » 15 juin 2017, 13:25

Merci beaucoup pour ta réponse Bleachya43vier !

Je comprends que sans exemple ce soit difficile de me donner des pistes, c'est pourquoi j'ai fait plusieurs captures d'écran pour imager tout ça (un peu plus bas dans le message).

Effectivement, je me trompe peut-être de pointeurs ou peut-être que ce que je prend pour un pointeur n'en est pas un.
Merci également pour ton lien ! Je lui ai envoyé un MP pour savoir si ça le dérangeait ou non que je traduise le jeu à partir de sa version en anglais. J'attends sa réponse.

J'aimerai justement ne pas avoir besoin d'utiliser ses outils pour pouvoir apprendre de moi-même, par la voie classique comme tu dis. Et c'est un domaine qui m'intéresse en plus beaucoup.

Voici donc un petit exemple de ce que j'ai essayé de faire avec des captures d'écran :

Premièrement, je me place sur l'octet précédent le texte que je souhaite modifier. Je récupère l'offset de l'octet où je me trouve et je le copie dans Lunar qui me donne normalement le numéro de la bank de pointeur suivi des deux octets qui m'intéressent (les deux octets du pointeur correspondant au texte que j'avais déjà traduit : 18 ans). Ne pas oublier de les inverser (little endian), ce qui nous donne C883 :
1.png
1.png (719.19 Kio) Consulté 345 fois
Je fais la même chose pour le texte "Age 16" (qui s'affiche dans un autre menu si l'on choisit au départ un personnage féminin) que je souhaite afficher à la place de "18 ans". Les deux octets du pointeur correspondant sont donc 3C84 :
2.png
2.png (620.99 Kio) Consulté 345 fois
Je cherche donc la valeur hexadécimale C883 dans l'éditeur. Et je trouve deux occurrences.
La première ici :
3_1.png
3_1.png (68.85 Kio) Consulté 345 fois
Et la seconde ici :

Image

J'ai essayé à tour de rôle de modifier ces valeurs en les remplaçant par 3C84 mais comme vous pouvez le voir, aucun changement sur la ROM une fois lancée :

Image

Est-ce que je m'y prend mal ou est-ce que tout simplement ce n'étaient pas des pointeurs ?

Avatar de l’utilisateur
Bleachya43vier
Amateur Suprême du Flood
Messages : 103
Inscription : 01 mai 2012, 16:43

Re: [SNES] Romancing Saga - Pointeurs

Message non lu par Bleachya43vier » 15 juin 2017, 14:23

Alors je n'ai pas de grandes connaissances en hacking, juste assez pour me permettre de faire de petites choses. Je ne connais pas les calculs à faire sur une rom SNES mais bon.

En tout cas je peux t'affirmer ici que tu n'as pas les pointeurs de ton texte. Je vais tenter une explication un peu maladroite à mon goût mais bon :D Dans le cas que tu présentes ici, tu dis que le pointeur pour 18 ans et 20 ans à la même valeur. Tu ne trouves pas ça bizarre ? Un pointeur pointe vers une adresse hexadécimale. Si, par exemple, le pointeur vers 18 ans vaut C8 83, celui de 20 ans ne peut pas valoir C8 83 (sinon il afficherait 18 ans in-game en fait.) Donc il a forcément une valeur différente.

Sinon une table de pointeurs s'établit un peu de la manière suivante : C8 83 C8 F4 C9 12 C9 45 CA 35 etc... (pas du tout représentatif). C'est assez facile à repérer avec les valeurs qui s'incrémentent. Souvent elles se trouvent avant le texte, parfois après et rarement ailleurs (mais je n'ai pas assez de connaissances en la matière pour avoir vu ces deux derniers cas). Je te conseille de regarder plutôt à vue d'œil si tu la trouves et ne pas compter sur un logiciel de calcul. Après quand tu l'as trouvée, tu peux vérifier pour voir si ça pointe bien à la bonne adresse. :)
Dernière édition par Bleachya43vier le 15 juin 2017, 14:34, édité 1 fois.
Oh the queen of peace. Always does her best to please. Is it any use? Somebody's gotta lose.

BananaSplit
Nouveau Floodeur
Messages : 12
Inscription : 12 juin 2017, 19:06

Re: [SNES] Romancing Saga - Pointeurs

Message non lu par BananaSplit » 15 juin 2017, 14:34

Tu as dû mal me lire mais je n'ai pas trouvé deux mêmes valeurs pour 18 et 16 ans.
Comme expliqué, le C883 correspondait à 18 ans et 3C84 à "Age 16" (car pas traduit).

J'ai donc juste essayé de remplacer C883 par 3C84.
Car effectivement, j'aurai très vite compris qu'il y avait un problème si j'avais eu la même valeur de pointeur pour deux données différentes :)

Je vais essayer de voir en explorant la ROM à la main si je ne trouve pas quelque chose qui soit une table de pointeurs et qui ressemblerait plus à ce que tu m'indiques.

Avatar de l’utilisateur
Bleachya43vier
Amateur Suprême du Flood
Messages : 103
Inscription : 01 mai 2012, 16:43

Re: [SNES] Romancing Saga - Pointeurs

Message non lu par Bleachya43vier » 15 juin 2017, 14:41

Ah en effet. Mais dans tous les cas, ça me semble bizarre que tu trouves ces valeurs là. Puis si on regarde tes captures d'écran, ça ne ressemble aucunement à une table de pointeurs, surtout vu les adresses où se trouvent ces valeurs par rapport à ton texte, beaucoup trop éloignées. Tes textes font partie de la même "table" de textes, il serait donc logique que les pointeurs fassent partie de la même table de pointeurs :D
Oh the queen of peace. Always does her best to please. Is it any use? Somebody's gotta lose.

BananaSplit
Nouveau Floodeur
Messages : 12
Inscription : 12 juin 2017, 19:06

Re: [SNES] Romancing Saga - Pointeurs

Message non lu par BananaSplit » 15 juin 2017, 18:10

Je comprends mieux pourquoi je n'arrivai pas à identifier de table de pointeurs :
Mais, surtout dans les ROMs Super NES, il existe d'autres façons de stocker du texte : par exemple, le texte est toujours présenté sous forme de blocs mais il inclura quelques octets entre chacun de ces blocs et ne possédera pas de table de pointeurs : il est possible en théorie de changer la longueur de chaque groupement individuel sans aucun problème ! En fait, le seul inconvénient avec le texte stocké de cette façon est que cela le rends plus dur à extraire et à manipuler. Un exemples de ROM dont le script est stocké de cette façon : The Romancing Saga (RPG sur Super NES).

Source : https://wiki.romhack.org/index.php?titl ... _Super_NES
Je ne me suis visiblement pas attaqué à la ROM la plus évidente. Je vais continuer à regarder dans mon éditeur hexadécimal et essayer de comprendre à quoi servent ces octets présents entre chaque blocs de textes en essayant de les manipuler.

Avatar de l’utilisateur
BahaBulle
Bub'n'Bob Pawa!
Messages : 6397
Inscription : 06 août 2002, 09:34
Localisation : Sur une bulle
Contact :

Re: [SNES] Romancing Saga - Pointeurs

Message non lu par BahaBulle » 15 juin 2017, 19:25

Attention, la gestion des textes dans les menus est souvent différentes de celle des textes de dialogues.

Avatar de l’utilisateur
Loki
Dieu Suprême du flood
Messages : 1608
Inscription : 03 juil. 2006, 10:06
Localisation : Mer des Sarcasmes

Re: [SNES] Romancing Saga - Pointeurs

Message non lu par Loki » 15 juin 2017, 19:26

La table des pointeurs pour ce bloc se trouve au début de cette banque à l'adresse 0x140000 qui est mappée en mémoire à 0x288000 et les pointeurs qu'elle contient sont sur 2 octets et ne sont pas absolus mais relatif au début de cette banque.

Exemple avec le pointeur que tu cherches :
Le pointeur en 0x140020 vaut 0xBB03 ce qui donne 0x03BB donc 0x140000 + 0x03BB = 0x1403BB mappé en 0x2883BB.

Remarque qu'étant donné que c'est en relatif tu n'auras pas besoin de faire les calculs de mappage pour ce bloc.

C'est un menu interactif, ça pointe pas forcément du texte, ça contient aussi des codes interprétés par le jeu, alignements, couleurs, etc...

PS : J'ai pas testé, amuse-toi bien...

BananaSplit
Nouveau Floodeur
Messages : 12
Inscription : 12 juin 2017, 19:06

Re: [SNES] Romancing Saga - Pointeurs

Message non lu par BananaSplit » 15 juin 2017, 20:07

Merci beaucoup pour ce gros coup de pouce ;)

En lisant les notes de traduction laissées par DDS, j'ai vu effectivement que la table de pointeurs se trouvait en 0x140000.
Par contre, à partir de là, j'ai été bien incapable de trouver le bon pointeur.

Donc si j'ai bien compris, parmi tout le gros pavé de texte qu'il y a dans la phase de création du personnage (menus) le seul pointeur qu'il y a, c'est celui en 0x140020 ?

Si ça n'est pas ça, est-ce que je peux te demander comment tu as fait pour le repérer et comment tu en déduis qu'il vaut 0xBB03 (soit 0x03BB) repérer l'adresse à laquelle se trouvait ce pointeur, je voulais dire ? Car j'ai essayé le calcul via logiciel (Lunar Address) ainsi que la méthode manuelle : récupérer l'adresse, y ajouter 0x8000 (pas d'header dans la ROM donc pas besoin de soustraire 0x200), séparer le résultat en paquet d'octet (groupe de deux) et inverser les octets et enfin récupérer les deux derniers pour avoir la valeur du pointeur. J'arrive au même résultat qu'avec Lunar et ça n'est visiblement pas la bonne méthode pour cette ROM car c'est en relatif et donc pas tous ces calculs à faire, j'ai bon ?

J'ai également essayé de modifier les valeurs des octets précédents les textes et j'ai constaté aussi qu'ils servaient à l'alignement, à la position des textes ou au choix de leur couleur ou mise en forme.

En tout cas, merci beaucoup ;)

EDIT : Ma question est finalement peut-être bête car en parcourant d'autres topics concernant les pointeurs relatifs, j'ai vu une personne qui les identifiait via son émulateur en parcourant la mémoire de ce dernier. Je vais essayer ça aussi.

EDIT 2 : Je ne sais vraiment pas comment m'y prendre avec le debugger
Dernière édition par BananaSplit le 16 juin 2017, 15:43, édité 1 fois.

Avatar de l’utilisateur
pinktagada
Mauvaise ROMhackeuse débutarte
Messages : 2186
Inscription : 10 mars 2010, 10:39
Localisation : Midgard
Contact :

Re: [SNES] Romancing Saga - Pointeurs

Message non lu par pinktagada » 15 juin 2017, 21:58

WAHOUYAHOU \o/

Cool, un nouveau qui a l'air de bien comprendre des choses et qui EN PLUS écrit dans un très bon français ! Surtout n'abandonne pas, c'est pas un projet facile, mais c'est pas grave. Faut pas que t'arrêtes, on a besoin de san neuf, et de qualité :)

Hint : Meradrin avait commencé à bosser sur Romancing Saga 3 maisc'était y'a trèèèèès longtemps. Essaie de le contacter par MP, il répond pas souvent mais quand il est assez bien luné, il ne fait :) Il avait reparlé de refaire le hack depuis la version jap y'a qques années, on devait faire la trad ensemble. C'est pas mal un zombie fantôme, mais c'est quelqu'un de super quand il arrête de jouer à minecraft ou euro truck simulator, voire kerbal space program...

Depuis, le projet semble avoir été abandonné. Comme tu peux le voir c'était y'a des plombes :)
kogami en 2016 a écrit : Je vais me répéter mais si ça peux décharger un peu Baha, Magno peux vous aider.

Je pense que votre Hack doit être plus avancé que le sien car il vient juste de commencer mais quand il se met à fond sur un projet, il arrive à faire des miracles (y'a qu'a voir le hack sur Romancing Saga 3).

Il a préféré reprendre tout à zero en repartant de la Rom Jap et il va se servir de la compression qu'il à utilisé sur Ramancing Saga 3 + l'ajout d'une DTE (ce qu'il lui aurais fait gagné 3ko supplémentaires).

Il va mettre une VWF sur la partie des dialogues est menues et agrandir les cadres et revoir leurs ajustements.
MAIS Y A PLUS DE PLACE A L'ÉCRAN! NON DE MERDE MÊME SI JE TE DONNE TOUS LA PLACE DU MONDE DANS LA ROM!! TU POURRAIS PAS EN FAIRE AFFICHÉ PLUS A L'ÉCRAN!!!
Un grand philosophe...

Image

BananaSplit
Nouveau Floodeur
Messages : 12
Inscription : 12 juin 2017, 19:06

Re: [SNES] Romancing Saga - Pointeurs

Message non lu par BananaSplit » 15 juin 2017, 22:43

Salut à toi pinktagada !

J'ai bien l'intention de continuer, ne t'inquiètes pas :)
Effectivement, comme premier projet je ne pense pas que ça soit le plus simple mais je ne demande qu'à apprendre donc je vais pas lâcher le morceau !

Après, l'hexadécimal n'est pas nouveau pour moi car j'en ai mangé pas mal en BTS. Pour se repérer dans les différentes adresses et pour faire des opérations simples (addition/soustraction), ça aide je trouve :D

Merci, je lui enverrai un MP. Je verrai bien s'il me répond.

Bon, je retourne sur mon éditeur hexa pour essayer d'en comprendre un peu plus :)

EDIT : La personne qui s'est occupée de la traduction du jeu en anglais (DDS) m'a répondu et m'a dit qu'il n'y avait aucun problème pour repartir de sa traduction vers le français, avec un petit mot quelque part pour informer les gens que la traduction a été faîte à partir de sa propre traduction, ce qui est tout à fait normal.

Avatar de l’utilisateur
Loki
Dieu Suprême du flood
Messages : 1608
Inscription : 03 juil. 2006, 10:06
Localisation : Mer des Sarcasmes

Re: [SNES] Romancing Saga - Pointeurs

Message non lu par Loki » 16 juin 2017, 17:40

BananaSplit a écrit :
15 juin 2017, 20:07
Donc si j'ai bien compris, parmi tout le gros pavé de texte qu'il y a dans la phase de création du personnage (menus) le seul pointeur qu'il y a, c'est celui en 0x140020 ?

Si ça n'est pas ça, est-ce que je peux te demander comment tu as fait pour repérer l'adresse à laquelle se trouvait ce pointeur, je voulais dire ? c'est en relatif et donc pas tous ces calculs à faire, j'ai bon ?
Euh... à l'oeil ! Comme l'a dit Bleachya43vier la table est souvent placée juste avant ou juste après et l'incrémentation des valeurs est symptomatique des tables des pointeurs alors j'ai simplement regardé au début de la banque et bingo ! Ensuite le pointeur concerné est facile à voir c'est celui dont la valeur tombe pas loin avant le début du texte. De mémoire, pour la partie que tu cherches à modifier il y a qu'un seul pointeur celui à 0x140020, c'est à dire pour la présentation des 3 premiers personnages. Le pointeur suivant à 0x140022 pour les 3 derniers personnages. Puis le pointeur à 0x140024 pour le titre du menu. ça veut dire que si tu modifies les pointeurs pour agrandir le texte tu dois aussi placer les codes spéciaux au nouvel endroit pointé et comme le hack à étendu la rom tu as largement de la place pour le faire. Mais étant donné que ce ne sont que des pointeurs 16 bits relatifs à cette banque tu ne peux pointer que dans cette banque.

BananaSplit
Nouveau Floodeur
Messages : 12
Inscription : 12 juin 2017, 19:06

Re: [SNES] Romancing Saga - Pointeurs

Message non lu par BananaSplit » 16 juin 2017, 17:54

Super ! J'ai enfin compris !

Loki, si tu repasse par là, dis moi si c'est de cette façon que tu as toi aussi procédé stp :)
Après avoir lu ton message, j'étais resté dans l'optique qu'il fallait identifier où se trouvait le pointeur dans la table en 0x140000 en tâtonnant juste avant le début du bloc de texte concerné qui s'affichait à l'écran. Donc en modifiant octet par octet précédent le texte pour voir s'il s'agissait d'un octet gérant la mise en forme du texte ou si ça changeait carrément d'écran. Même quand j'arrivai à trouver ce fameux octet qui changeait l'écran affiché, je ne voyais pas comment remonter au pointeur concerné dans la table de pointeurs. Je me suis dis qu'il devait falloir jouer du debugger sur la ROM mais je ne savais pas par où commencer.

Donc, n'arrivant à rien, je suis allé faire une petite pause il y a une heure pour m'aérer la tête (par cette atroce chaleur :D ) et je suis revenu lire calmement ton message.
Et là, me demande pas pourquoi, j'ai eu une lueur avec une idée à tester d'après les calculs que tu m'avais montré.

Je me suis dis que le raisonnement était peut-être l'inverse de ce que j'essayais jusqu'à maintenant.

Je me suis donc positionné en 0x140020 pour reprendre ton exemple et j'ai commencé à poser mon calcul pour voir à quelle adresse ça me menait (à savoir que j'avais essayé l'éditeur de texte de DDS pour voir ce que ça donnait et j'avais fait quelques tests en modifiant certains textes et donc ça a dû modifier les pointeurs dans la table car à l'adresse 0x140020 et 0x140021 (car blocs de 2 octets) je n'avais pas la valeur 0xBB03 que tu m'annonçais mais 0xC103. Donc je m'acharnai à comprendre comment tu pouvais avoir trouvé BB03 à cette adresse et j'ai finalement compris que c'était l'éditeur qui avait dû modifier tout ça pour faire rentrer mes changements de textes). Gardons en tête que sur ma ROM qui a donc été modifiée par l'éditeur de textes, j'ai 0xC103 à la place de 0xBB03 :

1) Je repère le pointeur sur 2 octets à l'adresse où je me trouve (0x140020). Chez moi, il vaut donc 0xC103. J'inverse le tout : 0x03C1.

2) J'ajoute cette valeur à l'adresse de départ de la table : 0x140000 + 0x03C1 = 0x1403C1.

3) Je me rends donc à l'adresse trouvée (0x1403C1) et bingo je trouve sur quel menu ça pointe ! J'atterris bien quelques octets avant le début du texte du menu ("18 ans" ...). Les quelques octets après le pointeur et avant le début du texte sont donc bien les octets de mise en forme de ce dernier comme je l'avais repéré dans certains de mes essais en les modifiant et comme tu me l'avais fait remarquer.

J'ai fait quelques essais supplémentaires sur d'autres adresses paires au hasard dans la table de pointeurs et je tombais systématiquement quelques octets avant le début d'un bloc de texte et en modifiant ces pointeurs je faisais bien apparaitre d'autres menus à la place. Donc la méthode fonctionne. Le problème, si je puis dire, c'est qu'en faisant ça, il doit y avoir d'autres choses à modifier car après modification, si l'on essaie de revenir en arrière, ça créé ou des bugs d'affichage, ou une page vierge donc il n'est plus possible de rien faire.

Désolé pour ce gros pavé, même si ça peut paraître logique pour certains, mais pour moi c'est une belle avancée car je galérais là dessus depuis deux jours et il fallait que je partage mon analyse ! :D

Un grand merci à tous ceux qui m'ont aidé et notamment à Loki ;)

Bon allez, moi je continue :)
Je reviendrai donner des nouvelles ou poster d'autres problèmes (je me doute qu'il y en aura bien d'autres :D)

EDIT : Je rédigeais ce message quand tu m'as répondu donc je n'ai pas pu lire ta réponse avant de poster :)

EDIT 2 :
Le problème, si je puis dire, c'est qu'en faisant ça, il doit y avoir d'autres choses à modifier car après modification, si l'on essaie de revenir en arrière, ça créé ou des bugs d'affichage, ou une page vierge donc il n'est plus possible de rien faire.
Effectivement comme tu me l'as écrit dans ta réponse, il faut rajouter ces octets de mise en forme avant le texte sinon ça bug :)

Avatar de l’utilisateur
Bleachya43vier
Amateur Suprême du Flood
Messages : 103
Inscription : 01 mai 2012, 16:43

Re: [SNES] Romancing Saga - Pointeurs

Message non lu par Bleachya43vier » 17 juin 2017, 12:46

Et oui, tu viens de faire l'opération inverse de ce qui est expliqué dans les tutoriels (partir du texte pour trouver le pointeur). Si je sais où se situe le texte et la table de pointeurs, je préfère calculer à partir de la valeur de mon pointeur pour savoir vers quelle adresse il pointe également, ça a souvent faussé mes calculs la méthode expliquée dans les tutos. :D

Bravo en tout cas !
Oh the queen of peace. Always does her best to please. Is it any use? Somebody's gotta lose.

BananaSplit
Nouveau Floodeur
Messages : 12
Inscription : 12 juin 2017, 19:06

Re: [SNES] Romancing Saga - Pointeurs

Message non lu par BananaSplit » 17 juin 2017, 13:05

Effectivement, je trouve ça beaucoup plus simple ! :)
Merci et c'est en grande partie grâce à vos explications que j'ai réussi à m'en sortir :)

Prochaine difficulté, je pense que ça sera au niveau des textes in-game car je suis allé voir un peu au-dessus de chaque bloc de textes et même en début de banlieue et pas de table de pointeurs. Je vais trafiquer les octets avant voir ce que ça donne même si une grande partie doit aussi servir à la mise en forme du texte, les sauts de ligne, gestion d'affichage des fenêtres de dialogues, ...
Je verrai plus en détails quand j'y serai :)

Meradrin
Je suis Kebekois et alors ? ça se voit ?
Messages : 333
Inscription : 17 févr. 2002, 11:11
Localisation : Canada (Québec)
Contact :

Re: [SNES] Romancing Saga - Pointeurs

Message non lu par Meradrin » 17 juin 2017, 22:15

Table de pointeur à 228000 adresse en SNES.

Autre adresse cool trouvé 208000 table pour la largeur des caractères.

J'ai enregistré un petit vidéo rapide pour te montrer comment j'ai trouvé les adresses.


BananaSplit
Nouveau Floodeur
Messages : 12
Inscription : 12 juin 2017, 19:06

Re: [SNES] Romancing Saga - Pointeurs

Message non lu par BananaSplit » 17 juin 2017, 22:50

Vraiment mille mercis ! Je me pencherai là dessus demain ;)

EDIT : Désolé, dans la précipitation j'ai carrément oublié de te filer ma table de caractères !
Encore merci, j'ai appris énormément de choses grâce à ta vidéo !
J'ai plus qu'à pratiquer maintenant :D

Bonne journée à toi ;)

BananaSplit
Nouveau Floodeur
Messages : 12
Inscription : 12 juin 2017, 19:06

Re: [SNES] Romancing Saga - Pointeurs

Message non lu par BananaSplit » 20 juin 2017, 16:32

Petites nouvelles de l'avancement du projet :

J'ai réussi à intégrer les caractères accentués de notre langue dans la table de caractères intégrée au jeu (j'ai remplacé les caractères non utilisés comme 'la', 'le') avec le logiciel TileMolester. Par contre, quelle galère pour l'utiliser ... Au début mes modifications n'étaient pas prises en compte car la ROM était également ouverte dans mon éditeur hexadécimal et dans l'émulateur donc il n'avait plus les droits pour écrire sur le fichier comme celui-ci était ouvert dans d'autres programmes. Le pire dans tout ça, c'est que TM me mettait bien "File saved" alors qu'il n'en était rien ...

Ensuite, il suffisait que je laisse le carré de sélection sur une lettre et lors de la sauvegarde de mes modifs, ça me supprimait définitivement le caractère de la table ... Heureusement que je fais à chaque fois une copie de la ROM pour mes modifs récentes ...

Et grâce à Meradrin que je remercie encore une fois, j'ai pu localiser les pointeurs des textes dans le jeu qui sont en fait codés sur 24 bits. Ca explique pourquoi j'ai eu du mal à les trouver car j'étais resté dans l'idée que comme les menus de création de personnage avaient des pointeurs 16 bits, il en serait de même pour les textes du jeu, mais non :D

Pointeurs sur 3 octets, ce qui veut également dire que je pourrai déplacer mes textes n'importe où dans la ROM. Je ne serai pas limité à la bank d'origine d'où est stocké le texte ! Et vu que la ROM avait été agrandie pour la traduction anglaise, il y a pas mal de place libre donc ça ne devrait pas me poser de problèmes pour la traduction ! :heureux:

Répondre

Qui est en ligne ?

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