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.
Par contre tu as raison je ne vais pas avoir le temps de m'en occuper avant un bon mois… C'est pas si grave j'imagine, c'est pas comme si on attendait plus que ça pour releaser la traduction.
OK, je comprends. De toute façon on peut remettre ça à plus tard.
En fait j'ai surtout fait ça pour me "rassurer" de la faisabilité d'une traduction du binaire Xbox, vu qu'il y'a encore quelques semaines je connaissais rien à cette console. D'ailleurs, faudrait faire un tutoriel car la technique que nous utilisons pourra servir pour traduire d'autres jeux Dreamcast et Xbox, et ça serait dommage que ça se "perde". Mais on verra ça plus tard.
Là ma préocupation est de faire un convertisseur des dialogues Free Quest -> FREE.AFS, une fonction que Shendream m'avait demandé il y'a quelques temps et qui à priori, ne semble pas trop compliqué à faire (ça consiste à écrire les sous-titres dans un certain ordre).
Ensuite je devrais peut-être revoir l'éditeur des SRF et le créateur IDX, il semblerait qu'il y'ait quelques problèmes avec. A moins que je fasse l'outil de traduction des écrans d'aide pour Shenmue II Dreamcast (fichiers F_HELP.BIN et F_ADV.BIN, sur Xbox, c'est dans le DEFAULT.XBE).
J'vais voir... selon l'envie.
Sinon, j'ai trouvé un fichier dénommé SYSTALK.BIN qui contient des sous-titres affichés lorsque Ryô indique au joueur qu'il faut qu'il rentre. Est-ce que vous pouvez me confirmer que SYSTALK.BIN n'est pas utilisé et que vous avez traduit par un autre moyen ces sous-titres? Dans le cas contraire je devrais également faire un outil pour modifier le SYSTALK.BIN...
Alors si j'ai bien compris pour résumer car on s'y perd à force, dans Shenmue 1 DC le carnet est les choix in-game ce trouve dans 1st_read.bin, pour le moment aucun outils n'est encore écrit pour réaliser les modifications des sous titres et on sera à prioris limité sur le nombres de caractères étant donné que l'on ne peux pas agrandir le binaire, il va falloir jouer des pointer pour optimisée le tout, c'est Ayla qui dois ce charger de l'écriture de l'outil ?
Pour Shenmue II DC le carnet ce trouve dans MEMODATA.BIN et pour les choix in-game il ce trouve dans le 1st_read.bin ?
Pour le moment pas d'outils de disponible pour modifier 1st_read.bin parcontre on peux s'amusé à changer les sous titres du carnet avec l'outils "Shenmue Notebook Editor v1.0"
Concernant Shenmue II XBOX même problème qu'au dessus sauf que la il faut allez dans le fichier defaut.xbe pour les choix in-game.
J'ai tout bon ?
Citation:
Là ma préocupation est de faire un convertisseur des dialogues Free Quest -> FREE.AFS, une fonction que Shendream m'avait demandé il y'a quelques temps et qui à priori, ne semble pas trop compliqué à faire (ça consiste à écrire les sous-titres dans un certain ordre).
Oui je pense que c'est la meilleur idée plutôt que d'essayé de faire lire human.afs par la Dreamcast.
Citation:
Ensuite je devrais peut-être revoir l'éditeur des SRF et le créateur IDX, il semblerait qu'il y'ait quelques problèmes avec.
Sur qu'elle version de Shenmue on t'a rapporté des erreur ?
Citation:
Sinon, j'ai trouvé un fichier dénommé SYSTALK.BIN qui contient des sous-titres affichés lorsque Ryô indique au joueur qu'il faut qu'il rentre. Est-ce que vous pouvez me confirmer que SYSTALK.BIN n'est pas utilisé et que vous avez traduit par un autre moyen ces sous-titres? Dans le cas contraire je devrais également faire un outil pour modifier le SYSTALK.BIN...
Alors si j'ai bien compris pour résumer car on s'y perd à force, dans Shenmue 1 DC le carnet est les choix in-game ce trouve dans 1st_read.bin, pour le moment aucun outils n'est encore écrit pour réaliser les modifications des sous titres et on sera à prioris limité sur le nombres de caractères étant donné que l'on ne peux pas agrandir le binaire, il va falloir jouer des pointer pour optimisée le tout, c'est Ayla qui dois ce charger de l'écriture de l'outil ?
Un outil existe pour modifier les sous-titres de Shenmue II, il n'est juste pas encore releasé parce qu'il est lacunaire et peu ergonomique.
Au niveau du nombre de caractères… Fais-toi plaisir, y'a largement la place
Citation:
Envoyé par kogami-san
Pour Shenmue II DC le carnet ce trouve dans MEMODATA.BIN et pour les choix in-game il ce trouve dans le 1st_read.bin ?
Dans Shenmue II DC on trouve effectivement dans le binaire les choix in-game, mais aussi les noms des objets de quête (phœnix mirror, watch), les objets de collection, les mouvements et leur description, les noms de lieux, etc…
Sinon, j'ai trouvé un fichier dénommé SYSTALK.BIN qui contient des sous-titres affichés lorsque Ryô indique au joueur qu'il faut qu'il rentre. Est-ce que vous pouvez me confirmer que SYSTALK.BIN n'est pas utilisé et que vous avez traduit par un autre moyen ces sous-titres? Dans le cas contraire je devrais également faire un outil pour modifier le SYSTALK.BIN...
Malheureusement tu as raison Sizious, ces soustitres sont bien lus dans ce fichier SYSTALK.BIN je ne voulais pas te le dire avant d'avoir résolu mes problèmes de connexion internet mais ces soustitres sont bel et bien lus dans ce fichier, j'espère juste que ça sera plus simple à mettre en oeuvre que l'éditeur pour la scène en moto de Shenmue 1 C'est vraiment n'importe quoi ce truc mais à mon avis c'est le dernier obstacle pour Shenmue 2.
Il faudrait aussi que je fasse d'autres tests mais je crois bien que la version 2.7 de l'éditeur FQ est buggée, je ferai plus de tests et te confirmerait ça. ( Je précise pour Shenmue 2 uniquement, les persos disparaissent après un export et un import, je donnerai plus de précisions plus tard )
Dernière modification par Shendream ; 05/06/2010 à 19h54.
Bon courage SiZ. Quand je lis tout ça, je me demande bien pourquoi ils se sont autant fait chier chez Sega à mettre les sous-titrages à droite à gauche ?! Oo faut avoir fumé ou je ne sais quoi...
__________________
Installateur actif FMCB agréé Metagames
Installations France et Bénélux
94 installations depuis septembre 2012
Besoin d'une installation ? sunmingzhao[@]live.fr "retirez le []" (réf: #MET'install FMCB)!
Cet utilisateur dit Merci à Sunmingzhao pour ce poste utile:
Shenmue II / Shenmue 2X : Utilisez Shenmue Notebook Editor
Modifier les menus in-game:
Tous les jeux: Utilisez Shenmue Binary Translator.
Citation:
Envoyé par kogami-san
Oui je pense que c'est la meilleur idée plutôt que d'essayé de faire lire human.afs par la Dreamcast.
Ca sera pour la prochaine version de l'éditeur Free Quest.
Citation:
Envoyé par kogami-san
Sur qu'elle version de Shenmue on t'a rapporté des erreur ?
Pour ce qui est des SRF / IDX, à vrai dire, je ne m'en souviens pas... mais je crois que c'est sur Shenmue 1.
Citation:
Envoyé par kogami-san
Pour Shenmue 1 ou le 2 ? Voir pour les 2 ?
A priori, c'est pour les deux. Le fichier SYSTALK est inclu à plusieurs endroits, alors maintenant... faut savoir lequel modifier, lol. En gros, il est dans les PKS MISC/COLD_*.BIN, MISC/COLDINIT.BIN et même directement dans MISC/SYSTALK.BIN. Faut faire le tri, encore une fois. Merci SEGA-AM2, que du bonheur.
Citation:
Envoyé par Shendream
j'espère juste que ça sera plus simple à mettre en oeuvre que l'éditeur pour la scène en moto de Shenmue 1 C'est vraiment n'importe quoi ce truc mais à mon avis c'est le dernier obstacle pour Shenmue 2.
Il s'agit du format SCNF utilisé par les NPC. Cependant il est un peu différent, dans le sens où il contient plusieurs "tables" de sous-titres alors que les persos Free Quest n'en comporte qu'un seul. J'ai donc du boulot, mais c'est pas comme pour l'éditeur de Shenmue 1 qui lui, m'a réellement pris la tête.
Il faudrait aussi que je fasse d'autres tests mais je crois bien que la version 2.7 de l'éditeur FQ est buggée, je ferai plus de tests et te confirmerait ça. ( Je précise pour Shenmue 2 uniquement, les persos disparaissent après un export et un import, je donnerai plus de précisions plus tard )
En effet. J'ai résolu les différents (petits) problèmes.
Tous les problèmes de sauvegarde ont été définitivement résolus car j'ai mis en place (comme pour les nouveaux outils que je développe depuis quelques temps d'ailleurs) un système de test unitaire qui permet de (vraiment) malmener le programme, comme si quelqu'un l'utilisait réellement afin de tester sa solidité / fiabilité. Là je suis sûr de mon coup, l'éditeur Free Quest ne posera plus jamais aucun problème de sauvegarde. Pour te donner une idée, voilà la procédure que j'ai utilisée:
Je sélectionne un dossier où sont mes PKS originaux.
Je lance la modification:
Je crée une copie du PKS (ex: TRUC.PKS) qu'on renomme en OLD (TRUC.OLD).
J'ouvre le PKS du dossier dans l'éditeur SCNF
J'exporte les sous-titres originaux vers un fichier XML.
Je modifie chaque sous-titres du PKS avec une chaine de caractères aléatoire (du genre "AfjdjklHRkHE"), puis je sauvegarde le PKS. Je recommence ce processus 6 fois de suite.
Une fois la modification terminée, je réimporte le XML original sauvegardé plus haut dans le PKS ainsi malmené.
Si le TRUC.PKS possède le même hash MD5 que le TRUC.OLD, alors c'est gagné (et ceci pour tous les fichiers du répertoire sélectionné au point 1).
J'ai corrigé en tout ~3 bugs (si vous voulez en savoir plus, vous pouvez jeter un oeil au fichier docs/whatsnew.txt situé dans l'archive.
La v2.9 aura un convertisseur HUMANS -> FREE comme prévu.