hareng-tool 2 ?

Des soucis pour hacker votre jeu ? C'est ici qu'il faut exposer votre problème.
Avatar de l’utilisateur
S.O.R
Le Hareng qui fait YAAAAAAAA
Le Hareng qui fait YAAAAAAAA
Messages : 1270
Inscription : 17 févr. 2002, 21:49

hareng-tool 2 ?

Message non lu par S.O.R » 01 févr. 2015, 16:52

Bonjour bonjour,

je ne sais pas depuis combien de temps je ne suis pas passé par ici, à part en mode lecture furtive de temps à autres. Mais en tout cas, un bon nombre d'années ! La raison de mon passage n'est pas pour dire "Ouais trop bien, je vais me remettre à trafiquer des jeux". Je sais très bien que je n'aurai pas l'envie d'aller jusqu'au bout d'un projet consistant à trafiquer un jeu, et je ne l'aurai certainement jamais, donc je préfère éviter ce genre de phrases :)

J'ai refait mon apparition sur IRC il y a quelques temps déjà, voyant avec plaisir qu'il y a toujours quelques personnes motivées. J'ai dû faire de rares dépannages sur des outils, répondre à quelques questions pour aider des gens, mais rien de bien formidable. Mais j'ai été intrigué par le fait que tout le monde passe son temps à refaire des outils qui sont similaires sur certains points. Quelques rares personnes utilisent le hareng-tool, mais il est fortement limité et il est naturel de s'en passer dans un grand nombre de cas. Même si je suppose qu'il existe aussi un certain lien avec ça :)

Quelques personnes m'ont aussi demandé à plusieurs reprises quand est-ce que je comptais faire un hareng v2. En discutant un peu, je n'ai jamais réussi à identifier de besoin supplémentaire, à part peut-être la gestion de l'UTF-8 et des pointeurs éparpillés dans une ROM. Ça ne m'avait pas paru suffisant pour me relancer dans une paire d'heures de développement (une paire d'heures parce que la version actuelle du hareng ne peut pas être réutilisée pour X raisons). Mais courant novembre, je cherchais à faire un peu de C++11 pour expérimenter les ajouts dans le langage. Ne trouvant pas d'idée de projet, j'ai finalement décidé de refaire un embryon de hareng. J'avais déjà quelques idées de choses à faire différement, mes idées sur ce que devait être un outil de romhack, et je visualisais en gros la charge de travail (en fait j'ai sous estimé ce point là :P), je me suis donc lancé début décembre.

Mes buts initiaux étaient :
  • Créer un outil libre, accessible et modifiable par tout le monde.
  • Créer un outil léger, facile à récupérer et à compiler.
  • Créer un outil qui fonctionne sous Windows, Linux et MacOS X.
  • Créer un boîte à outils et non un outil standalone comme l'était le premier hareng. Ce qui signifie que le code de base du hareng 2 doit pouvoir être réutilisé très facilement dans n'importe quel projet si quelqu'un le veut. Le hareng 2 n'est PAS un exécutable à proprement parler.
  • Proposer une API suffisament bas niveau pour pouvoir être utilisée dans plusieurs cas de figure. Comme l'a fait remarquer Baha, le hareng premier du nom était extrêmement limité de ce niveau là.
  • Gérer tout type d'encodage (ISO 8859-1[5], UTF-8, Shift JIS, ou n'importe quoi d'autre).
  • Gérer tout type de format de fichier, que ce soit pour les tables ou les scripts.
  • Gérer des pointeurs placés n'importe où dans une ROM.
  • Créer un binding Lua de l'API C++ pour permettre aux gens d'utiliser plus facilement les outils mis à disposition.
  • Faire le code de manière à pouvoir accueillir de nouvelles fonctionnalités très facilement.
Après deux mois de travail plus ou moins régulier, j'en suis rendu à une première version assez minimaliste, mais qui reprend tous les points cités précédemment. Pour résumer :
  • Le code se présente sous forme de librairies, mais avec quand même un petit exécutable qui permet d'exécuter des scripts Lua. Typiquement, une GUI pourrait être développée en utilisant uniquement le code C++, et en laisant le binding Lua de côté.
  • L'extraction et l'insertion sont fonctionnelles, avec le support des pointeurs placés "aléatoirement" dans une ROM.
  • J'ai implémenté le code nécessaire pour gérer des fichiers de table et de script qui étaient compatible avec la première version.
  • Les différents encodages pour les fichiers textes sont gérés.
  • Le binding Lua est fait.
  • J'ai développé l'outil sous Linux et MacOS X. Je l'ai testé il y a quelques semaines sous Windows.
L'idée globale est d'avoir un framework qui peut être utilisé par quelqu'un qui code des outils pour un jeu. Je sais que les gens aiment bien avoir un outil qui gère tout ce qui est nécessaire pour les modifications d'un jeu, et non pas avoir 200 outils indépendants, ce qui me parait tout à fait normal. C'est pourquoi cette version est créee comme un ensemble de librairies qui peuvent être embarquées dans n'importe quel projet, si certaines parties de l'API semblent utiles, quitte à forker le projet pour faire des adaptations minimes pour ses besoins. On peut donc distinguer deux approches possibles pour utiliser l'outil :
  • La personne veut un outil standalone (là forcément codé en C ou C++), pas scriptable en Lua. Il lui suffit juste de se linker avec le hareng v2 pour accéder à ses fonctionnalités.
  • La personne veut faire le maximum de choses en Lua, mais veut quand même coder en C/C++ certaines parties. Il suffit de faire un module supplémentaire qui est chargé par l'interpréteur Lua, et qui exporte son API en Lua. Typiquement si on veut coder une compression LZSS, on peut très bien la faire en C/C++, et appeler le compresseur depuis Lua.
Finalement, pourquoi je vous dis tout ça ? Mon but n'est pas de forcer l'adoption de cet outil, de demander une liste de fonctionnalités à ajouter aveuglement ou de demander de l'aide pour le finir. Mon but est juste de présenter quelque chose qui me parait nouveau, c'est à dire un framework, qui potentiellement peut être étendu au fur et à mesure des besoins des gens, et qui finalement pourrait permettre de mettre en commun du code qu'on retrouve dans tout les projets existants. En fait je cherche juste à savoir qui trouve l'idée intéressante et savoir pourquoi des gens ne la trouvent pas intéressante. En gros, j'ai fait la partie qui m'amusait, je peux très bien laisser le code en l'état. Mais si des gens sont intéressés pour l'utiliser, je suis prêt à continuer à bosser dessus maintenant que le plus gros du travail a été fait.

Pour ceux qui ont tenu jusqu'ici, et qui sont curieux de savoir un peu plus en quoi consiste l'API actuelle, je vais faire une brève description. C'est une description de l'état actuel de l'outil. Ce que j'entends par là, c'est que rien n'est figé. On peut et on doit envisager de rajouter des choses pour que ça soit utilisable selon les besoins des gens. Je mets le feu au premier qui me dit "C'est nul, ça fait pas ce que je veux, je l'utiliserai pas". Si les gens veulent des choses en plus, ils ont le droit de venir m'en parler sur IRC. Soit ils peuvent le faire eux-même, soit je le fais pour eux. Mais arriver à la conclusion "Ça fait pas ça saynul, trop d'la merde putain, fucking noob" sans m'en parler avant pour avoir mon avis est ridicule. Après si des gens ne sont pas intéressés tout court par l'outil, je ne leur en veux pas du tout, chacun fait ce qu'il veut :)

Donc en gros, l'API est en plusieurs morceaux (elle est très basique à l'heure actuelle) :
  • Table : une API pour rajouter des éléments dans une table, en rechercher
  • Text : une API pour décrire un script qui a été chargé depuis un fichier texte. On retrouve les différents pointeurs, les différents blocs. À partir de là, si on donne une Table, on peut demander à encoder le texte dans un buffer
  • PointerTable : une API qui sert à gérer tous les pointeurs liés à un Text. Elle mémorise la position des pointeurs dans la ROM, elle permet de faire des calculs sur l'ensemble des pointeurs, et elle permet d'insérer automatiquement l'ensemble des pointeurs dans un fichier.
  • API legacy : lit des fichiers de table et de script pour remplir des objets de type Table ou Text
Pour ceux qui sont curieux de voir l'état actuel de la bête, voici le lien vers le projet github : https://github.com/rofferom/ht2.

Je vais conclure tout ça en me répétant un peu. La description actuelle correspond à un simple embryon de projet. On peut envisager de rajouter tout ce qui peut être utilisé par plusieurs projets. De la même façon, l'outil ne gère que des scripts à l'heure actuelle, mais on peut très bien envisager de rajouter d'autres choses à terme. Il suffit juste d'en parler, rien de plus. Mon objectif est de savoir si l'idée du framework intéresse des gens ou non. Sinon je trouve autre chose à coder, ou je retourne jouer dans mon coin :P

Si des gens sont arrivés jusqu'ici, et qu'ils ont la motivation de donner leur avis (positif ou négatif), je suis preneur !

TODO
  • un format de texte qui permet de conserver la langue d'origine, et l'adresse des pointeurs
  • un format de table qui permet de définir des balises paramétrables
  • une API pour générer en live une table ASCII ou Shift JIS
  • exporter des fonctions pour juste décoder des buffers de texte, sans se préoccuper des pointeurs ni rien. Ça peut permettre de gérer des cas très tordus : on va alors juste faire les détections de début et fin de cadre en Lua, et l'API générique va juste décoder le texte.
  • un mode d'extraction pour des jeux qui n'ont pas de balise de fin de cadre. Ces jeux préfixent les blocs par leur taille (il me faudra un exemple de jeu Baha :P)

    Évoqués mais à vérifier si c'est vraiment utile :
  • une API pour valider la largeur d'un ensemble de scripts
  • à l'extraction, détection des fins des cadres via les octets de fin de texte utilisés par le jeu. Actuellement je ne me base que sur les offsets indiqués par les pointeurs pour détecter les fin de phrase

Avatar de l’utilisateur
rid
Dieu Suprême du flood
Messages : 2013
Inscription : 04 janv. 2005, 22:17
Contact :

Re: hareng-tool 2 ?

Message non lu par rid » 01 févr. 2015, 17:11

Oula, gros pavé! Mais bon, comme c'est pas souvent que l'on a la chance de pouvoir te lire, je me suis donné quand même la peine!

Au tout début du hareng, j'avoue ne pas avoir vu ou plutôt compris l'intérêt d'un tel outil. C'est vrai que mon objectif alors était de me perfectionner dans le développement d'outils pour le hack, et l'utilisation d'une solution toute prête plus ou moins obscure me motivait à moitié.
Puis est venu le projet Samouraï Pizza Cats et le besoin de créer une MTE à partir de mon script. J'avais voulu faire tout moi même mais je me suis vite retrouvé dans le fait que je suis pas très fort en algo de compression, et du coup j'ai commencé par écouter les conseils des autres. Notamment Baha qui m'a rappelé que le hareng pouvait être mon ami. J'ai donc décidé de finalement lui donner une chance, et après quelques minutes de réflexion sur comment utiliser le bazar avec mon script xml (et aussi fait une version à ma sauce pour gérer l'utf-8), j'ai rapidement obtenu ma MTE! Le hareng s'est finalement trouvé utile à mes yeux!

Après j'avoue ne pas avoir creusé l'ensemble des fonctionnalités offertes, celles-ci se faisant utiles en fonction des besoins. Je fais encore moi même mes outils d'insertion et d'extraction, mais c'est plus par habitude qu'autre chose...
Bon, c'est pas encore complètement lancé, mais si j'arrive à me dépatouiller de mon petit problème de meta-langage sur Kishin Kourinden Oni, j'essaierai de voir dans quelle mesure le nouveau hareng pourra m'aider à aller plus vite sur les étapes rébarbatives du hack. Je pense que je viendrai te poser tout plein de questions ce moment :p

Encore, très content de voir que le projet hareng n'est pas mort, et que toi non plus, et vive le hareng!

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 758
Inscription : 17 juin 2004, 16:47

Re: hareng-tool 2 ?

Message non lu par kogami » 01 févr. 2015, 20:20

Alors pour ma part j'utilise dans tout mes projets de traduction hareng-tool, j'ai commencé par cet outil des le départ lorsque je me suis lancé dans la traduction de jeu vidéo. J'ai aimé sa simplicité d'utilisation, pour moi il a toutes les fonctionnalité nécessaire du moment que le jeu utilise les standards habituel (table de pointeur, texte non mélangé à du code).

J'ai essayé d'autres outils par la suite comme Atlas ou Pointer Tables, mais leur gros défaut c'est que l'on ne peux pas personnalisé la table avec les saut de ligne que l'on souhaite, j'ai une façon bien à moi de créer ma table et hareng par sa simplicité ne ce pose pas de question et prend la table comme elle est.

De même je peux organiser à ma convenance les dossier car tout est en ligne de commande

Image

Un truc tout bête mais seul Hareng Tool permet d'écrire les noms des scripts avec des espaces
"Description Tech Cayenne.txt"
"Texte Dialogue Bank 2.txt"

Avec les autres outils je serais obligé d'écrire comme ceci
"Description_Tech_Cayenne.txt"
"Texte_Dialogue_Bank_2.txt"

Un exemple
extraire("Roms/Final Fantasy VI (J) [Original].sfc", "Tables/Final Fantasy VI (J) [Dialogue].tbl", "Dump (script original)/Texte Dialogue Bank 1.txt", 0xD0000, 0xE0007, 0xCE604, 1819, 2, "X+0xC00000", little_endian)

inserer("Roms/Final-Fantasy-6fr.sfc", "Tables/Final Fantasy VI (Fr) [Dialogue].tbl", "Insert (script traduit)/Texte Dialogue Bank 1.txt", 0x300000, 0x3226EB, 0xCE603, 1819, 3, "X+0xC00000", little_endian)

Les fonctionnalité que j'aimerais bien avoir sont la possibilité par une option de conserver le script d'origine comme Atlas
:
<PT0001>
//「あの都市か?[nl]
//「魔大戦で氷づけになった1000年前[nl]
// の幻獣か… [Delais 1618][Delais 12][End]
Wedge : Nous y sommes…[Delais 1608][Delais 12]
[Clear Cadre]
Biggs : Je n'arrive pas à croire[nl]
qu'une chimère ait pu survivre dans[nl]
le glacier 1000 ans après la guerre[nl]
des Magi…[Delais 1618][Delais 12][End]

<PT0002>
//「また、がせじゃねえのか?[nl]
//「フム。[nl]
//だが、あれの使用許可が出るくらいだ[nl]
//かなり、たしかな情報だろう。 [Delais 1618][Delais 12][End]
Biggs: Je parie que c'est encore une[nl]
fausse alerte. [Delais 1610][Delais 12]
[Clear Cadre]
Wedge: Hum… [Delais 1608][Delais 12]
[Clear Cadre]
Cette fois, le tuyau doit être bon…[nl]
Ils ne nous auraient pas permis[nl]
d'emmener la fille, sinon. [Delais 1618][Delais 12][End]

<PT0003>
//「生まれながらに魔導の力を持つ娘か…[nl]
// 魔導アーマーに乗った兵士50人を[nl]
// たった3分で倒したとか…[nl]
//恐しい… [Delais 1618][Delais 12][End]
Biggs: Fichue sorcière ! [Delais 1608][Delais 12]
[Clear Cadre]
On dit qu'elle a calciné 50 soldats[nl]
dans leur armure magitech en trois[nl]
minutes…[nl]
Elle me donne la chair de poule ![Delais 1618][Delais 12][End]
Pouvoir donner directement l'adresse du pointeur manuellement
:
<PT0001>($3382B)
//<$77><$79>はじめますか?[End]
<$77><$79>partie?[End]

<PT0002>($33831)
//<$F7><$78>これをけして[End]
<$F7><$78>Effacer[End]

<PT0003>($33833)
//<$77><$79>かきこみます.[End]
<$77><$79>cette[End]

<PT0004>($33835)
//<$F7><$79>いいですか?[End]
<$F7><$79>partie?[End]
Et aussi avoir un debug mode qui nous dirais qu'elle texte est susceptible de dépasser de la boite des fenêtre des jeux.

J'utilise VWF Line, il suffit de lui donner la taille des lettres et la taille du cadre (généralement 224 pixel).

Et si jamais tu a encore un peu de temps de libre, codé un outil comme The Cheat
Image

Il a de nombreuse lacune qui ne facilite pas sont utilisation, et personne n'a pris le temps de codé un tels outils qui serait un gain de temps considérable pour la mise en page des textes.

Les options indispensable:
-Possibilité de caché les codes balise
[nl]
[End]
[Delais]
[Pause]

-Cacher certains caractère:
[
]

-Ouvrir sont textes directement depuis l'original et pouvoir l'éditer et sauvegarder.
Actuellement il faut faire des copier/coller et faire des allez retour entre le script et l'outil.

-Pouvoir lui indiquer le code balise [Clear nouveau cadre]
Qu'on puisse avoir le même rendu que dans le jeu.

Voir encore
-Une mise en page automatique
-intégrer directement VWF Line (il nous dirais les textes successible de de déborder du cadre des dialogue)
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

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

Re: hareng-tool 2 ?

Message non lu par BahaBulle » 01 févr. 2015, 21:10

Je suis d'accord pour le 1er point, ça peut servir. Avoir aussi la possibilité de mettre des commentaires sans qu'ils ne soient insérés.

Je ne comprends pas l'utilité du 2ème point.

Le 3ème point, pourquoi pas, la v1 avait déjà une fonction qui le faisait il me semble mais ce serait plutôt à intégrer dans un outil tiers comme the cheat.
D'ailleurs, sur ce point, il faut lourdement regarder dans la direction de Kipy :D

Avatar de l’utilisateur
Lyan
Dieu Suprême du flood
Messages : 1441
Inscription : 19 nov. 2007, 04:56
Localisation : Raxacoricofallapatorius
Contact :

Re: hareng-tool 2 ?

Message non lu par Lyan » 01 févr. 2015, 22:19

Pour le 3ème point, y'avait le notepad de Jes aussi qui était très bien, dommage qu'il n'était dédié qu'à certains jeux car ce dernier permettait le repérage rapides des lignes trop longues et l'édition des scripts en direct.


Sinon bravo S.O.R pour le HT v2 ;)


Pour ma part, comme on disait avec Baha hier sur le IRC, ce qui m'intéresserait c'est de pouvoir ajouter des balises de textes dans la table, qui prennent en compte des paramètres comme on rencontre dans certains jeux (pour les couleurs des textes, tailles des textes, etc...)

Pour exemple tiré d'un de mes projets ou j'ai des balises du type :

@s(valeur) = pour la taille du texte
@y(valeur) = pour l'espacement des lignes
@x(valeur) = pour l'espacement des caractères
@c(valeur, valeur, valeur) = pour la couleur du texte

Actuellement je suis obligé de créer une entrée dans la table dès qu'un paramètre diffère d'un autre (ce qui est assez contraignant) ;)
http://www.youtube.com/user/Lyan53
Image
- Avec les gens de cour, vos pareils don Salluste, je vous laisse et je reste avec mes chenapans. Je vis avec les loups, non avec les serpents.
- L'amour a dompté le loup ! Ôtez-lui l'amour, il redeviendra un loup.

Avatar de l’utilisateur
GreatSkaori
Chooser of the Slain
Chooser of the Slain
Messages : 8735
Inscription : 17 févr. 2002, 20:06
Localisation : Ailleurs
Contact :

Re: hareng-tool 2 ?

Message non lu par GreatSkaori » 01 févr. 2015, 23:29

(Aucun rapport sur la technicité du sujet, je veux juste dire bonjour à S.O.R, ça fait tellement longtemps, je te vois encore comme le petit gars de 16 ans avec qui j'ai bossé sur FF6 :D Force et honneur à toi!)
Your sins lay heavy upon you defiler of souls.
By the holy laws you shall be obliterated !

Avatar de l’utilisateur
S.O.R
Le Hareng qui fait YAAAAAAAA
Le Hareng qui fait YAAAAAAAA
Messages : 1270
Inscription : 17 févr. 2002, 21:49

Re: hareng-tool 2 ?

Message non lu par S.O.R » 02 févr. 2015, 22:09

Merci pour ces premiers retours :)

Rid, je sais bien que beaucoup de gens ont la même démarche que toi à la base : ils ont pas trop envie d'utiliser un truc obscur à la base. Et pour les gens qui codent ici, faire ce gene d'outils est une occasion de pratiquer un peu :)

Pour ce qui est des informations en plus dans les scripts, il faut voir comment définir un nouveau format. Je ne sais pas si des gens se sont amusés à définir des formats qui supportent ce genre de choses, vous pouvez m'en dire quelque chose ? En tout cas on veut un format qui permet de :
- avoir à disposition la langue originale dans le script
- donner l'adresse du pointeur dans la ROM (utile quand on a des pointeurs n'importe où dans la ROM)

Au niveau des fonctionnalités de détection des lignes trop longues et compagnie, je suis d'accord avec Baha. On m'a parlé de l'outil de Kipy :) Par contre ça peut être assez rapide de faire une fonction qui va juste dire quelles sont les lignes qui dépassent une certaine longueur. Ça c'est pas vraiment compliqué. Ça dirait juste dans la console les anomalies trouvées. C'est un peu fastidieux à utiliser mais ça peut permettre de valider tout un ensemble de scripts d'un coup, plutôt que de les revérifier à la main un par un.

Pour le format de table, il faut juste déterminer une syntaxe. À priori il y a déjà des outils qui font ça, autant que je m'en inspire. Baha, tu avais fait comment toi ?

Sinon Baha m'a demandé sur IRC s'il était possible de demander à l'API Lua de générer une table ASCII ou Shift JIS. Ça c'est également tout à fait jouable.

Donc si on récapitule :
- un format de texte qui permet de conserver la langue d'origine, et l'adresse des pointeurs
- un format de table qui permet de définir des balises avec un paramètre variable
- une API pour générer en live une table ASCII ou Shift JIS
- une API pour valider la largeur d'un ensemble de scripts (à confirmer si c'est vraiment utile)

Note pour Baha : j'ai pas retenu la moitié de ce que tu m'as demandé, noter des trucs ici pourrait être utile pour pas que ça s'oublie :P

Avatar de l’utilisateur
Ti Dragon
Est devenu grand
Messages : 12441
Inscription : 25 févr. 2002, 18:25
Localisation : Dans mon lit c'est mieux
Contact :

Re: hareng-tool 2 ?

Message non lu par Ti Dragon » 02 févr. 2015, 23:31

Ce que je trouve le plus extraordinaire, en fait, c'est qu'on revienne toi et moi le même jour.

Sauf que tu n'es pas revenu les mains vides. Et, rien que pour ça, bravo :)
"Heureusement qu'il n'avait que deux mots à nous dire... je plains son auditoire lorsqu'il doit faire un long discours"
(c) Le gardien du square
--
La scène de la traduction francophone : http://traf.romhack.org/

Avatar de l’utilisateur
Lestat
céréal floddeur
Messages : 924
Inscription : 15 avr. 2004, 04:45
Localisation : France
Contact :

Re: hareng-tool 2 ?

Message non lu par Lestat » 03 févr. 2015, 03:02

Je plussoie l'utilisation de commentaire dans un script, je dois avouer qu'atlas dans le genre est fort pratique!

Peut-être que l'ajout de "paramétrage personnalisé" serait un plus, du genre comment faire pour extraire des pointeurs qui se trouvent aux débuts de chaque phrases?

Genre :

[pointeur]blabla truc muche bla[pointeur]blibla bou bla bla[pointeur]

Qu'Appelles-tu les pointeurs placés aléatoirement ? Les pointeurs "en dur", quand tu n'as pas de table mais une suite d'instructions asm à modifier (enfin une chaîne hexa à réécrire). Je ne sais pas si c'est ce que l'on nomme des pointeur hardcodés.

En tout cas l'idée est bonne, cet utilitaire mérite une "suite", et ça serait intéressant d'avoir quelques retours aussi d'autres personnes qui bossent sur d'autre plateformes plus récentes.

En tout cas, heureux d'avoir de tes nouvelles!

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 758
Inscription : 17 juin 2004, 16:47

Re: hareng-tool 2 ?

Message non lu par kogami » 03 févr. 2015, 12:15

Je viens de me rappeler une fonction qui pourrais etre tres utile, la gestion de plusieurs table !!!

En effet il n'est pas rare de tomber sur des bloc de textes ou plusieurs table sont utilisé, cela vient de m'arriver sur les credit ending d'un jeu ou plusieur police sont utilisé, une font pour les nom des dev et une autre font pour leur role.
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

Avatar de l’utilisateur
4ph
Maître en Flood
Messages : 323
Inscription : 03 mai 2008, 16:55
Contact :

Re: hareng-tool 2 ?

Message non lu par 4ph » 03 févr. 2015, 13:03

Ti Dragon a écrit :Ce que je trouve le plus extraordinaire, en fait, c'est qu'on revienne toi et moi le même jour.

Sauf que tu n'es pas revenu les mains vides. Et, rien que pour ça, bravo :)
Même message que Ti Dragon! bravo! :boire:
Hors sujet: Quel plaisir de voir ton retour Ti Dragon!!! :calin:

Avatar de l’utilisateur
S.O.R
Le Hareng qui fait YAAAAAAAA
Le Hareng qui fait YAAAAAAAA
Messages : 1270
Inscription : 17 févr. 2002, 21:49

Re: hareng-tool 2 ?

Message non lu par S.O.R » 03 févr. 2015, 21:47

Lestat, j'ai pas compris ton premier point :) Tu peux reformuler ? Pour les pointeurs "randoms", c'est bien de ça dont je parle. Je savais pas comment les appeler, mais je voulais juste dire qu'ils pouvaient être n'importe où dans la ROM.

Kogami, je voudrais bien un exemple pratique de cette situation :) Et des jeux où tu as vu ça. Je suis curieux ! :P

Baha m'a dit sur IRC qu'il voudrait un mode d'extraction où les tailles des cadres sont indiquées avant le texte. À priori il est tombé sur des jeux où on n'avait pas de balise de fin de cadre.

Je récapitule tout ça à la fin du premier post, ainsi la première liste que j'ai mis dans un post précédent.

Edit :
Le forum me laisse pas éditer mon premier message. Je récapitule ici :

A rajouter :
- un format de texte qui permet de conserver la langue d'origine, et l'adresse des pointeurs
- un format de table qui permet de définir des balises paramétrables
- une API pour générer en live une table ASCII ou Shift JIS
- exporter des fonctions pour juste décoder des buffers de texte, sans se préoccuper des pointeurs ni rien. Ça peut permettre de gérer des cas très tordus : on va alors juste faire les détections de début et fin de cadre en Lua, et l'API générique va juste décoder le texte.
- un mode d'extraction pour des jeux qui n'ont pas de balise de fin de cadre. Ces jeux préfixent les blocs par leur taille (il me faudra un exemple de jeu Baha :P)

Évoqués mais à vérifier si c'est vraiment utile :
- une API pour valider la largeur d'un ensemble de scripts
- à l'extraction, détection des fins des cadres via les octets de fin de texte utilisés par le jeu. Actuellement je ne me base que sur les offsets indiqués par les pointeurs pour détecter les fin de phrase

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 758
Inscription : 17 juin 2004, 16:47

Re: hareng-tool 2 ?

Message non lu par kogami » 07 févr. 2015, 10:33

Tu veux un exemple de jeu utilisant le multi table ? Ca tombe bien car j'en ai plein :D

Starfox 2
:
<PT0093>
[General Pepper 1]
C'est le système de défense[nl]
géo-orbital de Corneria.[end]

<PT0094>
[General Pepper 1]
Le système géo-orbital[nl]
a été pris par l'ennemi![nl]
Reprenez-en le contrôle!![end]

<PT0095>
[end][end]

VReeRaW[end]

<PT0096>
[end][end]

dNLadM[end]

<PT0097>
[end][end]

fNef[end]

<PT0098>
[end][end]

NWfdIRWNVNWf[end]

<PT0099>
[end][end]

LaWORPgdIfRaW[end]

<PT0100>
[end][end]

[end]

<PT0101>
[end][end]

[end]

<PT0102>
[end][end]

WadVIU[end]

<PT0103>
[end][end]

MROORLRUN[end]

<PT0104>
[end][end]

NjbNdf[end]

<PT0105>
[end][end]

Veux-tu te déplacer avec le[nl]
vaisseau-mère?[nl]
[nl]
Oui[nl]
[nl]
[nl]
[nl]
[nl]
[nl]
[nl]
[nl]
[nl]
[nl]
[nl]
[nl]
[nl]
[nl]
[nl]
[nl]
[nl]
[nl]
<11>Non[end]

<PT0106>
[end][end]

Déplace le curseur et appuie[nl]
sur pour sélectionner ta[nl]
destination.[end]

<PT0107>
[General Pepper 1]
Vous avez repris le[nl]
contrôle du système[nl]
géo-orbital. Bien joué!![end]


A partir du pointeur 96 on a un changement de font en ascii pour les menu des options mélanger au reste des dialogues.

J'ai du faire correspondre les lettres ascii avec les lettre de ma table dialogue.

Sur un autres projets, j'utilise 2 style de font.

:
<PT0005>
Wedge: Nous approcherons la ville[nl]
du côté est. Allons ! [Delais 160C][Delais 12][End]

<PT0006>
[L][a] [g][e][r][r][e] [d][e] [M][a][g][…][nl]
[Q][a][n][d] [l][e] [f][l][a][m][m][e] ['][é][t][e][g][n][r][e][n][t] [à] [l][a] [f][n][nl]
[d] [c][o][m][a][t][,] [t][o][t][e] [t][r][a][c][e] [d][e] [m][a][g][e] [a][v][a][t][nl]
[d][p][a][r] [d] [m][o][n][d][e] [q] [g][a][t] [e][n] [r][i][n][e][…][Delais 16FF][Delais 12][End]

<PT0007>
[1][0][0][0] [a][n] [p][l] [t][a][r][d][…][nl]
[L]['][a][c][i][e][r][,] [l][a] [p][o][d][r][e] [n][o][i][r][e] [e][t] [l][a] [t][e][c][h][n][o][l][o][g][i][e][nl]
[o][n][t] [r][e][m][p][l][a][c][é] [l][a] [m][a][g][i][e] [e][t] [r][e][d][o][n][n][é] [a][u][nl]
[m][o][n][d][e] [a] [g][l][o][i][r][e] [d]['][a][n][t][a][n][…][Delais 16FF][Delais 12][End]

<PT0008>
[C][e][p][e][n][d][a][n][t][,] [q][u][e][l][q][u]['][u][n] [c][h][e][r][c][h][e] [à] [f][a][i][r][e][nl]
[r][e][n][a][î][t][r][e] [l][e] [p][o][u][v][o][i][r] [l][é][g][e][n][d][a][i][r][e] [d][e] [l][a][nl]
[m][a][g][i][e] [a][f][i][n] [d][e] [c][o][n][q][u][é][r][i][r] [l][e] [m][o][n][d][e] [e][n][t][i][e][r][.][Delais 16FF][Delais 12][End]

<PT0009>
[Q][u][i] [o][e][r][a][i][t] [c][o][m][m][e][t][t][r][e] [l][e][s] [m][ê][m][e][s][nl]
[e][r][r][e][u][r][s] [q][u]['][i][l] [y] [a] [1][0][0][0] [a][n][s] [?][nl]
[L]['][h][i][s][t][o][i][r][e] [s][e] [r][é][p][é][t][e][r][a]-[t]-[e][l][l][e] [?][Delais 162A][Delais 12][End]

<PT0010>
Une lueur étrange inonde les environs…[nl]
C'est un point de sauvegarde.
[Clear Cadre]
Voulez-vous plus de détails ?[nl]
[Choix] Oui[nl]
[Choix] Non[End]

<PT0011>
Wedge: Laissons la fille passer devant.[nl]
Ne perdons pas de temps avec le menu[nl]
fretin. Dépêchons-nous ![End]


L'idée que j'ai eu et de mettre la seconde font entre [] pour les distinguer lors de l'insertion des scripts.

S'il est possible à coté du pointer d'indiquer une seconde table manuellement ?
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

Avatar de l’utilisateur
Lyan
Dieu Suprême du flood
Messages : 1441
Inscription : 19 nov. 2007, 04:56
Localisation : Raxacoricofallapatorius
Contact :

Re: hareng-tool 2 ?

Message non lu par Lyan » 07 févr. 2015, 12:47

J'ai aussi un exemple assez sympa qui partirait un peu dans le même délire qu'une multifont : viewtopic.php?f=43&t=3468&hilit=princess+crown
http://www.youtube.com/user/Lyan53
Image
- Avec les gens de cour, vos pareils don Salluste, je vous laisse et je reste avec mes chenapans. Je vis avec les loups, non avec les serpents.
- L'amour a dompté le loup ! Ôtez-lui l'amour, il redeviendra un loup.

Avatar de l’utilisateur
rid
Dieu Suprême du flood
Messages : 2013
Inscription : 04 janv. 2005, 22:17
Contact :

Re: hareng-tool 2 ?

Message non lu par rid » 07 févr. 2015, 13:39

Pourquoi ne pas utiliser deux scripts, un pour chaque table?

Avatar de l’utilisateur
Lyan
Dieu Suprême du flood
Messages : 1441
Inscription : 19 nov. 2007, 04:56
Localisation : Raxacoricofallapatorius
Contact :

Re: hareng-tool 2 ?

Message non lu par Lyan » 07 févr. 2015, 22:01

Dans mon cas c'est impossible, mais bon ce doit être à kogami que tu demandes ça :P
http://www.youtube.com/user/Lyan53
Image
- Avec les gens de cour, vos pareils don Salluste, je vous laisse et je reste avec mes chenapans. Je vis avec les loups, non avec les serpents.
- L'amour a dompté le loup ! Ôtez-lui l'amour, il redeviendra un loup.

Avatar de l’utilisateur
S.O.R
Le Hareng qui fait YAAAAAAAA
Le Hareng qui fait YAAAAAAAA
Messages : 1270
Inscription : 17 févr. 2002, 21:49

Re: hareng-tool 2 ?

Message non lu par S.O.R » 11 févr. 2015, 22:12

Bon j'ai moyennement avancé, j'ai surtout passé du temps à préparer le build depuis Windows. Ça fonctionne, il faudra que je foute dans un coin la procédure. Je viens de pusher quelques trucs, globalement c'est de quoi builder pour OS X et Windows. Et j'ai rendu publiques les fonctions pour encoder/décoder du texte à partir d'une table.

kogami, il devrait y avoir moyen de faire quelque chose, c'est surtout à intégrer dans un éventuel nouveau format de table.

Je vais me sortir les doigts du cul et écrire un peu de doc de l'API Lua. Avant ça il faudrait que je fasse un vrai exécutable utilisable, pas un vieux truc de démo tout moisi comme j'ai pu faire :P Comme ça Baha pourra commencer à regarder la bouse que j'ai pondue...

Avatar de l’utilisateur
Lestat
céréal floddeur
Messages : 924
Inscription : 15 avr. 2004, 04:45
Localisation : France
Contact :

Re: hareng-tool 2 ?

Message non lu par Lestat » 12 févr. 2015, 01:44

S.O.R a écrit :Lestat, j'ai pas compris ton premier point :) Tu peux reformuler ?
C'est un pote qui m'a parlé de ça, c'est pour Shantae, sur GameBoy color.

De ce que j'en ai compris tu as des pointeurs en plein milieu de phrase.

[Pointeur1]phrase1[Pointeur2]phrase2[etc...]

Tout ça dans un même bloc.
S.O.R a écrit :baha m'a dit sur IRC qu'il voudrait un mode d'extraction où les tailles des cadres sont indiquées avant le texte. À priori il est tombé sur des jeux où on n'avait pas de balise de fin de cadre.
Regarde un coup lost viking sur SNES, tu verras qu'en plus des pointeurs, tu as deux octets qui définissent la taille de la boîte de dialogue, c'est peut-être à ça qu'il pensait. (Largeur, hauteur).

A rajouter :
- un format de texte qui permet de conserver la langue d'origine, et l'adresse des pointeurs

Alors là, je suis pour à 100%!

Tu as été voir du côté de la "concurrence ", Atlas, Cartographer, Kruptar?

Kruptar utilise un système de double fenêtres, l'une pour la VO, l'autre pour ta traduction.

Mais après avoir testé les deux, je dirais que c'est cool d'avoir, par exemple :
[Pointeur]
/* hello, my name is Doe, John Doe.*/
Bonjour, mon nom est Doe, John Doe.
[Fin]

J'espère avoir été clair :)

Pour les flemmard non codeux, quand tu auras une version que tu jugeras assez avancée, tu pourrais mettre le binaire quelque part?

PS : le code source de Kruptar, c'est du Delphi, il y a probablement de bonne idée là dedans :)

Avatar de l’utilisateur
S.O.R
Le Hareng qui fait YAAAAAAAA
Le Hareng qui fait YAAAAAAAA
Messages : 1270
Inscription : 17 févr. 2002, 21:49

Re: hareng-tool 2 ?

Message non lu par S.O.R » 12 févr. 2015, 13:20

Tout ça dans le même bloc ? Marrant :) C'est pas du tout supporté puisque le mode actuel d'insertion utilise uniquement les pointeurs pour découper les blocs. Après il y a moyen de changer/adapter des choses.

Baha avait l'air de parler d'autre chose, mais je n'ai toujours pas eu d'exemple :| *baffe Baha*

Je n'ai rien regardé à côté, je ne connais aucun outil :P C'est pour ça que je viens chercher des suggestions par ici pour voir ce qui était manquant par rapport à d'autres features utiles ailleurs :) Mais ce que tu suggères a été évoqué, ça doit pouvoir se faire facilement. Je crois qu'un des trucs les plus simples pour avoir quelque chose d'extensible et pas trop galère à parser est de partir sur du XML. Mais c'est à définir...

C'est prévu de foutre des versions dans un coin pour les curieux :)

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 758
Inscription : 17 juin 2004, 16:47

Re: hareng-tool 2 ?

Message non lu par kogami » 12 févr. 2015, 15:29

Moi je suis pas fan des fenêtres, je préfère les fichier .txt qui sont plus simple pour visualiser le script dans sont ensemble. Par la suite y a plein de programme pour éditer des .txt (notepad++) qui édite plusieurs fichier .txt (très pratique pour rechercher un mot dans plusieurs .txt
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

Avatar de l’utilisateur
Happexamendios
Adepte !
Messages : 6697
Inscription : 22 févr. 2002, 12:01
Localisation : Royaume d'Imajica
Contact :

Re: hareng-tool 2 ?

Message non lu par Happexamendios » 12 févr. 2015, 15:51

Je suis assez d'accord avec toi, Kogami.
Inutile de rajouter des tas de trucs tordus alors qu'il y a déjà des applis qui font ça très bien.

Avoir déjà la possibilité de garder le texte en VO serait déjà pas mal
Je pionce donc je suis

Avatar de l’utilisateur
S.O.R
Le Hareng qui fait YAAAAAAAA
Le Hareng qui fait YAAAAAAAA
Messages : 1270
Inscription : 17 févr. 2002, 21:49

Re: hareng-tool 2 ?

Message non lu par S.O.R » 12 févr. 2015, 21:17

De toute façon je compte pas faire d'interface comme indiqué plus haut :P C'est un framework, pas une application graphique !

Avatar de l’utilisateur
rid
Dieu Suprême du flood
Messages : 2013
Inscription : 04 janv. 2005, 22:17
Contact :

Re: hareng-tool 2 ?

Message non lu par rid » 12 févr. 2015, 21:36

C'est pas un toolkit ? :p

Avatar de l’utilisateur
S.O.R
Le Hareng qui fait YAAAAAAAA
Le Hareng qui fait YAAAAAAAA
Messages : 1270
Inscription : 17 févr. 2002, 21:49

Re: hareng-tool 2 ?

Message non lu par S.O.R » 12 févr. 2015, 21:59

C'est un truc qui permet de faire des outils :P

jerome674
Nouveau Floodeur
Messages : 49
Inscription : 30 sept. 2011, 11:14

Re: hareng-tool 2 ?

Message non lu par jerome674 » 22 oct. 2017, 23:27

Bonjour,

existe t il une version compilée du hareng tool 2 (version beta comme non finie)?

je suis sur des tables et fichiers en utf8 et des caractère japonais qui ne passent pas avec la version 1.
d'après ce que j'ai lu c'était utilisable avec la version développée mais je n'ai pas trouvé sur le GitHub de version compilée :(

Merci par avance.

Répondre