Aller au contenu


Photo de Nicolas

Nicolas

Inscrit(e) (le) 03 juillet 2004
Déconnecté Dernière activité aujourd'hui, 03h21
-----

#51197 Traduction du jeu MSX de KOR : Natsu no Mirage

Posté par Nicolas on 25 mars 2024 - 00h23

Et là encore... ta sauvegarde risque de conserver une partie de la mémoire contenant le bug, donc il faudrait en créer une qui ne soit pas trop proche de la section corrompue.

Il est certainement envisageable de vérifier cela en testant la sauvegarde avec la version originale du jeu par contre !

Sinon pour trouver le bug tu as plusieurs avenues :

  • Dumper la mémoire de chaque version, la japonaise et celle traduite, et observer s'il y a une divergence significative
  • Comparer les instructions dans un débogueur entre la version japonaise et traduite
  • Injecter uniquement une partie de la traduction avant cette section et vérifier si le jeu plante plus loin, et en fonction du résultat, en ajouter un peu plus et retester (sûrement le plus simple si tu n'es pas à l'aise avec l'assembleur x86)
  • Ne pas traduire spécifiquement cette section et voir si le jeu plante toujours (en essayant si possible de ne pas changer le pointeur)

 




#51167 Traduction du jeu MSX de KOR : Natsu no Mirage

Posté par Nicolas on 24 mars 2024 - 02h57

J'ai fait un nouveau build du jeu avec la traduction améliorée jusqu'au moment du crash... Je suis aussi en train d'écrire la soluce en parallèle.

 

@Nicolas

J'avais cru comprendre que les bytes "7B" marquaient les débuts de CC/sections et qu'ils étaient suivis de deux octets indiquant la taille de la section (taille que j'ai du coup modifiée en remplaçant les chaines de kanji par des chaines d'ASCII) : c'est pas ça?

 

Le début d'une section est généralement marqué par 7B quand la valeur précédente est 5D qui lui indique la fin d'une section (ce n'est pas toujours 100% le cas). Si tu trouves d'autres 7B avec 2 bytes en avant, ce sont souvent des sous-sections liées à des embranchements (choix A ou B du joueur) et la logique est la même, si tu changes la longueur, il faut ajuster le calcul.

 

Mais oui c'est bien ce que je voulais dire, ce sont des pointeurs relatifs, c'est-à-dire qu'ils varient en fonction de la longueur de la section courante. Il est très probable que tu aies modifié des valeurs incorrectement ou qui ne devraient pas l'être... Je n'ai pas le dump de la table MSX comme je l'ai avec le PC-98, donc ce que j'ai souligné plus haut "pourrait" expliquer pourquoi le jeu crash là... Il faut que tu revérifies chaque valeur.
 

Quant au calcul, le bug peut être aussi simple que de compter un caractère Shift-JIS comme un byte alors qu'ils en comptent quasi tout le temps 2 (il y a des caractères Shift-JIS qui ne codent que sur un byte, il faut faire attention à ce point également :D) et cela revient à mon autre post où je te disais que tu avais laissé des caractères shif-jis parfois au début, il est possible que ton calcul soit en erreur dans ces là (et encore une fois, je ne fais que supposer).

Pour la soluce et d'autres éléments, tu peux aller lire ceci, point 4. SOLUTION SET (la liste des actions est en romaji ::malade:: (oui je déteste ce format d'écriture) mais tu peux faire un replace avec la traduction en anglais plus haut :
 

https://gamefaqs.gam...bMIbRUFAPlIqQ2U

Et le truc drôle à essayer :
 

 

- Hidden chara.

At Kasuga home, in sisters' room, when Manami chan
and Kurumi chan are present, talk persistently with them,
until the punishment.
After the back drop, go to living room, and examine
(shiraberu), to find the hidden chara Jingorou (cat).




#51133 Traduction du jeu MSX de KOR : Natsu no Mirage

Posté par Nicolas on 23 mars 2024 - 02h54

Ravi de constater tes progrès ! Il est curieux que tu ne puisses pas colorier le texte encodé en ASCII, j'irais bien regarder mais j'ai du mal à tester certaines affaires sur MSX sans perdre patience :hobo: , le jeu rame vraiment beaucoup trop sur cette machine (et la musique bug souvent).

Sur le peu que j'ai regardé (parce que je ne veux pas non plus me spoil l'histoire), j'ai noté quelques problèmes, mais rien de grave. Par exemple, je me suis retrouvé bloqué dans le salon sans pouvoir parler aux sœurs, uniquement au père, donc impossible d'aller plus loin. :

ob9d.gif

Également il manque du texte, ici par exemple (ou c'est un drôle de formatage pour la vitesse)  :

1bch.png

Il faudrait aussi que tu détermines la longueur maximale d'une ligne de texte pour ajouter dynamiquement un CR, sinon les mots sont coupés et ça n'est pas super lisible.
Tu as aussi oublié de corriger d'autres lettres diacritiques comme û. :P:

owd6.png

Moins problématique, la scène de l'écran de sélection est brisée, la section "MICROCABIN PRESENT" est corrompue et n’apparaît plus comme elle le devrait, je pense que tu as du écraser certains CC ou modifier des adresses qui affectent des pointeurs relatifs (et si c'est le cas il est possible que le jeu casse autre part).

Sinon, par moment, l'encodage est étrange devant les mots comme "Kimagure Orange Road" (tu pourrais d'ailleurs conserver l'étoile en SJIS entre Orange et Road)

Sinon Il y a encore du japonais à droite à gauche. :D

0a4p.png

nipz.png

Le texte du menu peut être dynamique, il n'est pas forcément lié à une table de pointeurs, dans le cas présent c'est lié au pilote audio (et ce n'est pas le seul cas, tu devrais refaire un scan sur ta version traduite pour extraire ce qui reste).

Toujours en ce qui concerne le menu principal, dans la version PC-98, il est possible de forcer un retour à la ligne avec 0x0A, mais le texte chevauche la ligne suivante. Peut-être que sur MSX cela fonctionne mieux ?

Pour répondre à ta question précédente, CC signifie "Control Code". Ces codes sont des caractères spéciaux et des séquences de bytes utilisés pour contrôler l'affichage et le comportement du texte dans le jeu. Ils permettent, par exemple, de simuler des animations en superposant des sprites sur des arrière-plans, de changer la couleur du texte, d'ajuster la vitesse, la musique, de définir l'ordre des scènes, et bien d'autres fonctionnalités encore !

De mon côté, je suis en train de les analyser tous. À un moment donné, je devrai écrire un programme pour compiler et décompiler le texte du moteur de script.

Mon but serait de porter le jeu sur SuperSakura plutôt que de traduire la version PC-98, ce vraiment la meilleure des idées car nous pourrions :

  • Traduire le jeu dans plusieurs langues sans avoir à manipuler les pointeurs de manière complexe
  • Refaire les graphismes en haute qualité
  • Supprimer la limitation de 15 caractères sur le menu principal
  • Remplacer le son 8bit avec le son original en flac
  • Créer des variantes du jeu avec différents scénarios au choix ! (ex porter des fanfics au format jeu vidéo :P)
  • Lancer le jeu comme un simple programme multiplateforme, sans utiliser d'émulateur

Cependant, pour réaliser ce portage, il est nécessaire d'apprendre à SuperSakura comment le jeu fonctionne dans son ensemble. Pour ce faire, je dois être capable de décoder intégralement le moteur de jeu (en cours), d'extraire les graphismes du second disque et de les décoder dans un format moderne comme. Ensuite, il faudra voir s'il sera possible d'extraire dynamiquement l'arbre des différents chemins proposés au joueur par le jeu. :judge:




#51072 Traduction du jeu MSX de KOR : Natsu no Mirage

Posté par Nicolas on 20 mars 2024 - 16h27

Bien joué Frozen ! Il faut vraiment être vigilant quant aux CC autour et au milieu du texte ! C'est crucial de les conserver, sinon tu risques de perturber les animations et les couleurs, ce qui expliquerait probablement pourquoi ton menu est partiellement atomisé  :pirate20: 
Également, déplacer des pointeurs comporte des risques, surtout si tu interviens dans des zones qui "semblent" inutilisées mais qui ne doivent en aucun cas être modifiées.

En ce qui concerne la version PC-98, voici où j'en suis rendu :

  • Hack pour ajouter la prise en charge des caractères diacritiques (à l'origine, le SHIFT-JIS ne supporte pas les caractères ASCII étendus) : En cours, j'arrive à afficher les caractères accentués, mais cela nécessitera la création d'une nouvelle TBL spécifique, ce n'est pas vraiment une partie de plaisir car je dois m'atteler à chaque caractère manuellement :judge:
    0qho.png
  • Expand de la taille des fichiers : J'ai du reverse le code de TBR.exe pour comprendre comment expand la taille des fichiers, de base le simple ajout d'un byte dans le fichier TBL ou TBY empêche le jeu de se lancer : Fait
  • Déplacement des pointeurs : Grace à l'expand de fichier, il n'y a désormais aucune restriction quant à la longueur du texte à traduire. La seule limitation réside dans le menu principal qui est limité à 15 caractères (techniquement 16, mais il déborde sur le côté de l'écran). Je vous invite à vous référer à la fin de mon message pour un coup de main : Fait
  • Reverse des CC : Je suis en mesure de modifier les couleurs du texte, de déplacer les éléments sur l'écran, de gérer les temps de pause, etc. En parallèle, je suis en train d'analyser les sous-routines. Une partie que je n'ai pas encore check concerne les pointeurs relatifs. J'appréhende qu'en déplaçant certains pointeurs, le jeu ne puisse plus revenir en arrière : En cours
  • Dump du texte : En attente. Pour obtenir un dump propre, il est essentiel de comprendre le fonctionnement de chaque CC ainsi que des sous-routines. Comme je l'ai mentionné dans mon introduction, ne pas en tenir compte risque de perturber ou même de corrompre le jeu (par exemple, j'ai involontairement "branch" la seconde scene avec la fin du jeu... j'ai auss, par accident, amené Madoka dans la chambre de Kyosuke dès le début du jeu :P)
    vxzq.png
  • Traduction : En attente
  • Code d’insertion : En attente
  • Extraction des images : À terme, j'aimerais être en mesure d'extraire l'ensemble du jeu et de le convertir au format SuperSakura (https://gitlab.com/b...lin/supersakura), ce qui le rendrait natif, sans nécessiter l'utilisation d'un émulateur :) Pour cela, il faudra extraire les images (qui, je confirme, sont dans le disque 2 dans un format propriétaire) : Must to have

J'ai constaté que MSX utilise un engine similaire mais contient des variations sur les CC... cela t'aidera Frozen à peut-être corrigé tes bugs dans le futur mais il faudra creuser plus loin pour aboutir à quelque chose de qualité équivalente à PC-98.

En ce qui concerne le menu d'actions, je vais faire appel à votre créativité car il faut limiter le texte à moins de 16 caractères.

Voici la liste :
 

 

2枚の写真 ; Deux photos
BGM1 ; BGM1
BGM2 ; BGM2
BGM3 ; BGM3
BGM4 ; BGM4
BGM5 ; BGM5
BGM6 ; BGM6
MENU ; MENU
あかね ; Akane
おじいちゃん ; Grand père
かけるのをやめる ; Arrêter de courir
くるみ ; Kurumi
くるみとまなみ ; Kurumi et Manami
さゆり ; Sayuri
ぬいぐるみ ; Peluche
ひかる ; Hikaru
まどか ; Madoka
まなみ ; Manami
まわり ; Environs
やや速め ; Légèrement plus rapide
やや遅め ; Légèrement plus lent
アバカブ ; Abacab
カメラ ; Caméra
セーブする ; Sauvegarder
テレビ ; Télévision
ディスコ ; Discothèque
マスター ; Maître
ロードする ; Charger
鮎川宅 ; Maison d'Ayukawa
移動 ; Déplacer
一弥 ; Kazuya
駅前 ; Devant la gare
河川敷 ; Bord de la rivière
海 ; Mer
学園 ; École
居間 ; Salon
恭介 ; Kyousuke
恭介の部屋 ; Chambre de Kyousuke
鏡 ; Miroir
靴箱 ; Boîte à chaussures
靴箱付近 ; Près de la boîte à chaussures
見る ; Regarder
交換日記 ; Échange de journaux intimes
更衣室 ; Vestiaire
使う ; Utiliser
持ち物 ; Affaires
時計 ; Horloge
取る ; Prendre
春日家 ; Maison de la famille Kasuga
春日家前の公園 ; Parc devant la maison de la famille Kasuga
初めから ; Nouveau
女の子 ; Fille
小松と八田 ; Komatsu et Hatta
小松宅 ; Maison de Komatsu
床 ; Plancher
正門掲示板 ; Panneau d'affichage principal
赤い麦わら帽子 ; Chapeau de paille rouge
設定変更 ; Modifier les paramètres
速め ; Plus rapide
遅め ; Plus lent
中止する ; Arrêter
張紙 ; Affiche
調べる ; Examiner
通学路 ; Chemin de l'école
店内カウンター ; Comptoir du magasin
電話 ; Téléphone
能力 ; Capacité
桧山宅 ; Maison de Hiyama
普通 ; Normal
父 ; Père
父の仕事部屋 ; Bureau du père
文字表示速度変更 ; Changement de vitesse d'affichage du texte
妹たちの部屋 ; Chambre des sœurs
勇作 ; Yuusaku
遊園地 ; Parc d'attractions
話す ; Parler

 

La suite dans un prochain épisode :hobo:
 




#50956 Traduction du jeu MSX de KOR : Natsu no Mirage

Posté par Nicolas on 15 mars 2024 - 18h43

J'ai commencé à reverse le langage de script de MicroCabin et les CC utilisés dans le texte, de ce que j'ai constaté pour le moment, en plus de mon explication sur le poste precedent, je constate que ceux-ci serviraient à contrôler l'affichage des images avec les effets de transition ainsi que des appels à des sous fonctions.

Rien à partager pour le moment, je n'en suis qu'au début de l'analyse.




#50832 Traduction du jeu MSX de KOR : Natsu no Mirage

Posté par Nicolas on 12 mars 2024 - 01h52

Comme promis voici quelques informations.

Le jeu est constitué de deux disquettes de 1,2 Mo :

- La première est formatée en FAT-16 et contient les binaires du jeu.
- La seconde est un disque de données ; il n'est pas possible de lancer le jeu avec uniquement la première disquette.

En ce qui concerne la première disquette, voici un bref résumé de son contenu :

Un ensemble de fichiers propre à MEG-DOS (un système d'exploitation compatible MS-DOS développé et vendu par la société SPS pour le PC98), comprenant :

- IO98.SYS (équivalent à IO.SYS dans DOS 2.x)
- MEGDOS.SYS (équivalent à MSDOS.SYS dans DOS 2.x)
- CONFIG.SYS : Fichier de configuration pour MEG-DOS, 4 paramètres :
    - files : définit le nombre maximum de fichiers pouvant être ouverts simultanément
    - buffers : taille du tampon mémoire utilisé sur la disquette (numéro 2?) pour stocker les images et d'autres fichiers temporaires
    - device : permet de charger un pilote, ici MMD2.SYS qui est le pilote audio du jeu, avec une allocation mémoire de 4kb
    - shell : le programme chargé à la place de COMMAND.COM

D'autres fichiers sur la première disquette incluent :

- MMD2.SYS : Pilote propriétaire développé en interne par Microcabin, assurant l'interface avec les puces YM2203/2608x (Music Driver version 2.01 「あけみちゃん」(include 「チャーリーくん」) Copyright © 1987,1988 Microcabin co./Xtal soft co.) une entrevue concernant ce driver et son usage dans MSX : https://www.msx.org/...rview-日本語
- VOICE.BIN : FM
- M00000.BIN : BGM1
- M00001.BIN : BGM2
- M00002.BIN : BGM3
- M00003.BIN : BGM4
- M00004.BIN : BGM5
- M00005.BIN : BGM6

- TRB.EXE : Le fichier exécutable principal du jeu, responsable, entre autres, du chargement des fichiers TBL et TBY (comme observé dans le dump ASM)
- PIYO.EXE : Le moteur de scripting du jeu
- PAT.COM : Il s'agit probablement d'un patch destiné à apporter des modifications ou des améliorations, l'analyse du code ASM n'a pas donné grand-chose, c'est un fichier COM donc pénible à reverse.

- S00000.TBL : Tables des pointeurs pour le jeu, contient également le texte du menu d'action présent à droite de l'écran principal.
- S00000.TBY : Renferme l'ensemble du texte du jeu, formaté avec le langage de script Piyo (qu'il faudra lui aussi reverse, au moins partiellement).

En ce qui concerne la deuxième disquette, je présume qu'elle contient les images et sert également à stocker des données temporaires pendant l'exécution du jeu.

Il faut savoir qu'à l'époque il était courant pour un dev de créer son propre format propriétaire pour un peu tout et n'importe quoi. C'est notamment le cas du format des données utilisé sur la seconde disquette, pour la musique (le MIDI n'était pas encore démocratisé) et ultimement des images (je ne pense pas que nous ayons besoin de changer le contenu des graphiques, du moins au début).

Dans l'immédiat le focus se portera donc sur les fichiers S00000.TBL et S00000.TBY.

S00000.TBL contient 2 tables, une pour le texte présent dans menu et une seconde pour le texte qui est affiché globalement dans le jeu.

La première table débute à 0x1C2, les adresses sont à lire en little-endian, par exemple 5C02 pointe sur l'adresse 0x25C, le texte de menu se trouve juste en dessous.

Comme une image vaut mille mots, voici à quoi cela ressemble (1ier pointeur en jaune, second en bleu, troisième en orange, séparateur en violet) :

05ew.png

La seconde table débute à 0x4BE, la lecture se fait de la même manière que pour les pointeurs du menu d'action, mais les adresses elles concernent le fichier S00000.TBY.

Dans le cas du texte (et contrairement au menu), l'extraction du contenu propre à chaque pointeur retourne systématiquement le texte avec le formatage propriétaire du moteur Piyo, ex abrégé :
[/],!48,34,!,?48,{<0F><00>[#,"2,"55,/216],?34,{<11><00>[#,"32,"107,/232]],?75,{・00>[>@120,@145,{・00>["141,=144]一 弥 「とうとう見つけたぞ! 一弥!!」
La meilleure approche selon moi serait de recréer un fichier TBL avec des pointeurs à jour et un fichier TBY avec la traduction + le contenu binaire non modifié.

L'un des enjeux que j'anticipe c'est que du fait qu'ils ont eu la belle idée de concaténer dans le fichier TBL deux tables, traduire les menus en français pourrait décaler l'emplacement d'origine de la seconde table et provoquer un crash complet du programme.

Quant à la manière dont le jeu effectue le mapping sur les entrées du fichier TBL, cela reste une interrogation : est-ce séquentiel, calculé, ou statiquement défini quelque part dans le binaire ? (Auquel cas il faudra soit trouver une façon de ne pas trop allonger le texte du menu, il y a quelques leading zeros mais pas de quoi ajouter grand-chose OU aller modifier le code assembleur pour le faire pointer sur la nouvelle adresse).

@FrozenOwl, la logique des pointeurs et du language de script est identique dans le jeu MSX, mais tu comprendras que travailler sur le système de fichier de l'image de la disquette directement pose problème tant pour le calcul des adresses que pour faire de l'espace afin de déplacer les choses (cela doit être faisable mais je ne connais pas bien cette machine.)

Dans un prochain message, je vous fournirai le code que j'ai développé pour extraire le contenu de la seconde table (code qui pourra être adapté pour la première table), ainsi que les outils nécessaires pour manipuler les fichiers et tester les modifications.


#50787 Traduction du jeu MSX de KOR : Natsu no Mirage

Posté par Nicolas on 10 mars 2024 - 18h20

Non, mais ne t'en fais pas : si tu me dis que la version PC-88 est meilleure, je te fais confiance. Tu peux me déjà passer ce que tu as sur cette machine (en MP si tu préfères), et je me débrouille avec!

J'ai examiné de plus près la version MSX et cela semble être un port bête et méchant entre PC88 <-> MSX (la version P98 est elle même un port de la version PC88).

Apporter des modifications directes au texte dans l'image DSK pose des défis car les adresses des pointeurs ne correspondent pas en raison de la concaténation des structures de fichiers. Après tu me diras que c'est un bête calcul d'offset... mais quand bien même, changer les pointeurs pour avoir du texte plus long va impliquer un expand du disque, ce qui n'est probablement pas faisable facilement.

En ce qui concerne la version PC98, c'est relativement plus simple car il est possible d'extraire les fichiers du contenu de l'image et de travailler sur ceux-ci car le système de fichier est en FAT16 (du moins pour le premier disque ; le second c'est une autre histoire).

Dans les deux versions, le moteur de jeu est identique et le texte est systématiquement intégré dans un langage de script propriétaire qui régit divers aspects du jeu, tels que la vitesse d'affichage du texte, la musique de fond, et divers effets graphiques (double-width, couleur, clear, flash, new line et j'en passe), donc en plus de jouer avec les pointeurs, il faudrait idéalement reverse certains CC afin d'adapter le rendu au français (qui ne s'affiche pas aussi vite que le japonais).

En anglais le jeu se traduit plus facilement qu'en français, mais même en jouant avec les pointeurs, le menu de droite à une largeur fixe qui limite les choses, je ne sais pas si le code gere le retour à la ligne à cet endroit ?!.

Je reviens prochainement avec tous les détails techniques pour faire avancer la cause, je n'ai pas le temps en ce moment de coder de quoi, mais je peux donner un coup de main à côté.

j2i6.png


 




#46225 Podcast sur KOR en français.

Posté par Nicolas on 07 mai 2023 - 20h21

Pour changer j'arrive après la guerre, j'écoute présentement le hors série sur le pilote, content d'entendre à nouveau Fred, Olivier & Cie :baloon:  Kody tu as vraiment fait une belle job, ça va me prendre un petit moment pour tout écouter :-)




#41067 KOR - Music Hall

Posté par Nicolas on 24 octobre 2020 - 19h22

Bonsoir à tous,

 

Petite nouveauté publiée ce soir. Merci à Rainfroid qui a offert une page supplémentaire dans l'espace de sa réflexion n°37 consacrée aux quelques places et lieux réels dans KOR. Cela fait deux ans que cette réflexion n'avait pas été mise à jour. Voici donc un lieu supplémentaire tiré du manga de KOR. Merci à Rainfroid pour ce coup d’œil qu'il a eu et qu'il nous fait partager.

 

Page directe -> CLIC

 

C'est amusant de voir que sur la version couleur du manga, ils ont fait l'effort de reprendre (pratiquement) les couleurs pour chacune des lettres :

kor115.png




#40997 KOR sur YouTube ou équivalent

Posté par Nicolas on 17 octobre 2020 - 20h49

 




#39280 KOR sur YouTube ou équivalent

Posté par Nicolas on 12 février 2019 - 03h34



Du groupe Lotos qui est tribute band de 中原めいこ




#36440 KOR sur YouTube ou équivalent

Posté par Nicolas on 04 janvier 2017 - 03h14




#34611 Kor sur spotify

Posté par Nicolas on 01 mars 2016 - 03h13

Salut les gens !

 

Ca fait longtemps que je suis pas passé par ici ! Aviez-vous remarqué cette compilation en espagnol sur spotify ? 

 

https://open.spotify...Jk4UOceCnof0lPR

 

Je m'attendais pas vraiment à trouver quoi que ce soit en rapport avec KOR sur spotify, comme quoi !




  • Loading Countdowns