Après une demi-journée de "boulot" sur cette partie (développement de l'algorithme) et 6h plus tard (le programme était pas super optimisé faut le reconnaitre... mais j'ai pas trouvé d'autres moyens), voici
le résultat.
Ce fichier Excel contient toutes les chaines du XBE avec leurs pointeurs.
Ca a vraiment été long à générer, car comme tu disais l'adresse virtuelle (où est chargée le Xbe en mémoire) n'était pas statique comme sur DC (0x8c010000), mais dynamique (le Xbe est chargé en plusieurs morceaux, par "sections"). Ca a vraiment compliqué les choses (dans le fond non, mais ça a été beaucoup plus long à traiter car il fallait re-scanner à chaque fois le binaire... et comme le binaire fait 5MB en plus... Et j'ai eu du mal à faire l'algorithme, je me fais vieux).
Dans ce fichier Excel tu trouveras toutes les infos qu'il te faut pour rajouter le support à Shenmue II Xbox.
A noter que tu n'as pas à gérer la place libre comme sur Dreamcast. Sur Xbox, on peut jouer avec les sections pour créer de la place libre (ce que j'ai réussi à faire, expliqué plus haut).
Pour ceux que ça intéresse:
Pour traduire le binaire Dreamcast, nous devions gérer la taille des chaines de caractères. En effet, les chaines anglaises sont beaucoup plus petites que les chaines équivalente en français, ce qui présume donc que nous avions un manque de place (Genre "Save" -> "Sauvegarder").
Nous avons essayé de rajouter des octets supplémentaires à la fin du binaire et de pointer dans cette zone de mémoire trafiquée par nous, où serait stocké nos nouvelles chaines traduites, mais ça ne fonctionnait pas. Nous avons donc essayé d'optimiser au maximum l'espace disponible en se servant de tout l'espace alloué par les chaines existantes, y compris celle des Debug (qui sont inutiles, bien sûr). Cette technique, qui utilise le MemoryManager d'Ayla, nous a permis de lever les limitations de place, mais d'également garder la taille de 1ST_READ.BIN à l'identique, ce qui est une bonne chose car nous sommes relativement limités en place sur Dreamcast.
Sur Xbox, il est tout à fait possible d'utiliser le MemoryManager d'Ayla, mais le concept des sections complique sévèrement le principe du MemoryManager. Heureusement, nous pouvons justement nous servir du concept des sections pour créer de la place libre (ce que j'ai fait plus haut dans cette page) et y inscrire nos chaines traduites. L'inconvénient majeur, c'est la perte de la place disque (en gros, on va certainement rajouter 10Ko au Default.xbe) mais le gros avantage, c'est la simplicité de mise en oeuvre.
Le fichier reste encore à trier, y'a pas mal de chaines qui servent à rien. Si quelqu'un qui connait bien le jeu peut l'épurer, c'est à dire garder uniquement les chaines qui apparaissent à l'écran et virer le reste, ça serait super. Car visiblement Ayla n'a pas le temps, moi je suis fatigué et je connais pas bien le jeu, bref si quelqu'un pouvait nous aider sur ce coup, ça serait vraiment cool!
Voilà, j'vais faire une pause moi...
Car ça m'a bien fatigué tout ça.