[Dossier] Monsterland en anglais : choisir la bonne version

Devenez le MacGyver de l'Arcade

Re: [Dossier] Monsterland en anglais : choisir la bonne version

Message par mpatou » 27 Janvier 2014, 20:55

Pour l'instant, je suis en train de trier opcodess et data manuellement sur les 2 roms où ces données sont mélangées, après ça permettra d'y voir un petit peu plus clair.
Image Anciennement mpatard Image
Avatar de l’utilisateur
mpatou
 
Message(s) : 1260
Inscription : 14 Janvier 2013, 16:37

Re: [Dossier] Monsterland en anglais : choisir la bonne version

Message par Braintrash » 27 Janvier 2014, 21:21

Ah !
Je prends le Hellfire tout de suite ou bien j'investis dans un Monsterland à la place ? :silent:
Braintrash
 
Message(s) : 681
Inscription : 17 Mars 2013, 11:54

Re: [Dossier] Monsterland en anglais : choisir la bonne version

Message par mpatou » 27 Janvier 2014, 21:32

Je viens d'observer à la loupe les travaux qu'a commencé Runik, ainsi qu'une rom decryptée en 32ko et une que Runik m'avait envoyée et qui ne marche pas...la conclusion est sévère : ma méthode pour trier opcode et data n'est pas bonne :(
Image Anciennement mpatard Image
Avatar de l’utilisateur
mpatou
 
Message(s) : 1260
Inscription : 14 Janvier 2013, 16:37

Re: [Dossier] Monsterland en anglais : choisir la bonne version

Message par Braintrash » 27 Janvier 2014, 21:40

Je prends la Hellfire alors. ^^

Mais zut pour ta méthode.
Quelle était-elle ?
Braintrash
 
Message(s) : 681
Inscription : 17 Mars 2013, 11:54

Re: [Dossier] Monsterland en anglais : choisir la bonne version

Message par mpatou » 27 Janvier 2014, 21:48

Compliqué à expliquer, disons que j'ai pris une rom de 64ko contenant dans la première moitié la rom de 32ko decryptée une fois comme étant entière composée d'opcodes, puis la seconde moitié décryptée une seconde fois comme si elle ne contenait que des data. J'ai remplacé les data décryptées comme des opcodes par les data bien décryptées (tirées de la seconde moitié), sans tenir compte qu'au milieu des opcodes il y a plein de bouts de data. Bref c'est incomplet et ça ne peut pas marcher (et c'est assez long).
Image Anciennement mpatard Image
Avatar de l’utilisateur
mpatou
 
Message(s) : 1260
Inscription : 14 Janvier 2013, 16:37

Re: [Dossier] Monsterland en anglais : choisir la bonne version

Message par Braintrash » 27 Janvier 2014, 22:36

Le code est beaucoup plus bordélique que prévu, en gros. :-(
Braintrash
 
Message(s) : 681
Inscription : 17 Mars 2013, 11:54

Re: [Dossier] Monsterland en anglais : choisir la bonne version

Message par mpatou » 27 Janvier 2014, 23:19

Runik avait bien saisi la complexité, ce qui n'était pas mon cas, ou alors trop tard :P
Image Anciennement mpatard Image
Avatar de l’utilisateur
mpatou
 
Message(s) : 1260
Inscription : 14 Janvier 2013, 16:37

Re: [Dossier] Monsterland en anglais : choisir la bonne version

Message par Braintrash » 28 Janvier 2014, 09:31

Cela semble toujours plus facile quand les autres le racontent que lorsqu'on le fait. ;-)
Il va falloir que je relise le sujet et m'y mette également plus sérieusement.
Braintrash
 
Message(s) : 681
Inscription : 17 Mars 2013, 11:54

Re: [Dossier] Monsterland en anglais : choisir la bonne version

Message par mpatou » 05 Février 2014, 22:41

Alors, j'ai un peu avancé dans le dossier de la version anglais de wbml, et j'ai légèrement réorienté mon travail. Désormais je tente de faire fonctionner le romset de la VC, sur une PCB d'origine sans aucune modification de celle-ci.

Pour ceux qui n'ont pas suivi, c qui pose problème pour réaliser ceci c'est que sur les 6 ROMS à changer pour passer d'une version jap originale (cryptée) à la version anglaise de la VC, il y en a 2 dont la taille est deux fois plus importante, c-a-d 65.5ko au lieu de 32.8ko (nécessitant dont une eprom de 512kb au lieu de 256kb, avec dont un pinout légèrement différent, d'où la nécessité de modifier la PCB).

J'ai donc commencé par disséquer ces 2 ROM qui posent problème, la VC.IC90 et la VC.IC91.




Tout d'abord parce que c'est plus rapide, j'ai remarqué que la VC.IC91 est en fait composée de 2 parties identiques


[apparté technique]

A partir de maintenant, je ne compterai plus avec le système décimal, mais en hexadecimal. Concrètement, au lieu de compter les unités de 0 à 9 (en décimal), je les compterai de 0 à F (0 1 2 3 4 5 6 7 8 9 A B C D E F), ce qui fait 16 caractères au lieu de seulement 10 (Hexa = 6 , décimal = 10 =>10+6=16, d'où hexadecimal).
Par exemple, à partir de 9 on compte A B C D E F puis 10 11 12 ...18 19 1A 1B 1C 1D 1E 1F et là 20 etc...

[fin apparté technique]

Cette ROM (la IC91) est composée de FFFF bytes/octets (soit en décimal 65 536). Les 7FFF premiers bytes sont identiques au 7FFF derniers (en héxa, 7FFF+7FFF=FFFF). On a donc affaire à une ROM qui a été "concaténée" comme on dit dans le jargon. Il a tout simplement suffi de copier avec un éditeur hexadecimal les 7FFF premiers bytes pour en faire une nouvelle ROM de la bonne taille, soit 32.8ko (taille indiquée ici en décimal)

Tout le monde suit? :bobo:


La suite demain.
Image Anciennement mpatard Image
Avatar de l’utilisateur
mpatou
 
Message(s) : 1260
Inscription : 14 Janvier 2013, 16:37

Re: [Dossier] Monsterland en anglais : choisir la bonne version

Message par Braintrash » 05 Février 2014, 23:09

Tu m'intrigues, là. Je ne vois pas l'intérêt de faire cela pour une version immatérielle.
Braintrash
 
Message(s) : 681
Inscription : 17 Mars 2013, 11:54

Re: [Dossier] Monsterland en anglais : choisir la bonne version

Message par manmax » 05 Février 2014, 23:54

Cela prouverait que le dump de la VC vient bien d'une version materielle, sur laquelle difféérentes EEproms devaient etre utilisées.... et une necessité de concaténér sur l'eeprom en question.
manmax
 
Message(s) : 20
Inscription : 01 Mars 2013, 00:02

Re: [Dossier] Monsterland en anglais : choisir la bonne version

Message par mpatou » 06 Février 2014, 11:42

Le romset VC vient bien d'une version matérielle. Dans cette interview, Ryuichi Nishizawa (producteur et programmateur du jeu) confirme que c'est lui (et son équipe de chez Westone) qui s'est chargée du développement de la version anglaise du jeu en 1987, et que cette traduction anglaise a ensuite servi de base pour les version micro et console du jeu. Cependant cette version arcade en anglais n'est jamais sortie elle même, SEGA l'a gardée dans un entrepôt et a été retrouvée récemment (d'où les release Wii et xbox360/PS3 du jeu).

Concernant la taille de la VC91? je dirai juste que c'est une version qui est restée au stade de développement, et qu'elle devait être utilisée sur une plaque de test câblée pour faire fonctionner des eprom de 512ko. Pourquoi ça? sûrement pour faire fonctionner le jeu en version décryptée "à l'ancienne", c'est à dire en doublant la taille de la rom.


Je retourne à mes explications, et j'en étais à la VC.IC90.

Le souci de cette rom...et bien c'est le bazar. Comme Runik l'a expliqué dans son topic sur le décryptage, dans une rom cryptée du jeu les OPcodes sont cryptées une fois et les data deux fois avec la même clé. Ici, la VC.IC90 est décryptée à l'ancienne (ou presque...) avec
-sur une première moitié de la rom -du byte 0000 au byte 7FFF, soit 32.8ko- toute la rom décryptée une fois comme si elle n'était composée que d'OPcode
-sur une seconde moitié de la rom -du byte 8000 au byte FFF, soit 32.8ko- toute la rom décryptée une seconde fois, comme si elle n'était composée que de data.
(jusque là, rien de nouveau).

Le problème c'est que les data et les OPcodes sont mélangées, et en plus les OPcodes contiennent également des bytes cryptées comme des data. Ajoutez à celà des parties du code assez rares, mais qui ne sont pas du tout cryptées.
La difficulté c'est de trier tout ce bazar. Heureusement, j'ai pu me procurer quelques outils très utiles.

Tout d'abord, HPman m'a expliqué comment générer le code du jeu désassemblé avec la console de debug de Mame.



[aparté technique]
Le code désassemblé, qu'est-ce? En fait les programmeurs du jeu tapent le programme en langage assembleur Z80
, puis utilisent un programme qui compile le jeu pour générer un fichier dans un langage exploitable par la machine.

exemple: le programmeur entre l'instruction en assembleur Z80: call 0187h ,"call" étant l'action à effectuer, et "0187h" l'adresse de la partie du code appelée par "call", soit le byte 0187 en héxadécimal, (d'où le h dans 0187h). Et cette instruction compilée donnera en language exploitable par la machine (en héxadécimal) CD 87 01 (CD pour "call", et 87 01 pour "0187h"). Vous me direz "ouais mais 87 01 c'est à l'envers?!", et bah c'est comme ça et c'est tout.

Les roms en général sont en langage exploitable par la machine, soit en binaire (composé de 1 et 0) traduit en héxadécimal.

Et bien le code désassemblé, c'est l'opération inverse, c'est à dire qu'on prend le fichier en binaire/hexadécimal et à partir de là on ressort le code en langage assembleur, de programmation quoi.
[fin aparté technique]




Le souci du fichier assembleur généré par mame, c'est qu'il ne fait pas la distrinction entre data et instructions, et qu'en plus il n'y a pas les labels indiquant l'utilité de tel ou tel partie du code (qui sont passés à la trappe lors de la compilation de la rom).

C'est là que Runik m'a donné sans le vouloir un sacré coup de pouce. En effet le petit programme en ligne de commande DOS qu'il m'a transmis, appelé romconvz80, non seulement il m'a permi de décrypter les roms cryptées japonaises du jeu "proprement" (c-a-d en faisant le tri des data et opcode pour avoir une rom décryptée de la bonne taille), mais en plus il fournit un fichier assembleur z80 tout propre, avec les data et les opcodes qui sont triés.

Je me suis donc servi de ce programme pour obtenir l'assembleur de la version Japan Old du jeu (wbmljo), j'ai comparé ce dernier au fichier assembleur du romset VC généré par Mame pour trier data et opcodes (la version VC étant après comparaison la version Japan Old modifiée).

Petite et dernière subtilité : les bytes codées comme des DATA dans les OPcodes. Dans l'exemple de l'apparté technique ci-dessus (l'instruction "call 0187h" compilée en CD 87 01), en fait CD est bien cryptée comme une instruction, mais l'adresse 0187h/87 01 est cryptée comme un data. Le fichier binaire/hexa de la rom est truffé d'incrustations dans le genre.

Pour résumer : J'ai la ROM VC.IC90, dont une moitié est composée des instructions décryptées correctement, et des DATA et adresses nécessitant un décryptage supplémentaire, et dont l'autre moitié est composée des data et des adresses décryptées comme il faut, mais avec les instructions décryptées une fois de trop.

En gros, maintenant, il faut recomposer à l'aide d'un éditeur héxadécimal une nouvelle ROM avec les OPcodes et Data piochées à chaque fois dans la bonne moitié de la rom d'origine.

Et là j'imagine très bien Runik avec son bel accent de l'Aude "Oh con! t'as pas fini de te faire chier" :runik:
Image Anciennement mpatard Image
Avatar de l’utilisateur
mpatou
 
Message(s) : 1260
Inscription : 14 Janvier 2013, 16:37

Re: [Dossier] Monsterland en anglais : choisir la bonne version

Message par mpatou » 06 Février 2014, 12:46

Pour finir avec les explications et le décryptage de VC.IC90 :

Comme je l'ai dit précédemment, wbml VC est très proche de wbml Japan Old, seules certaines DATA, adresses et instructions sont différentes. A l'aide de Mame j'ai donc également généré le fichier deésassemblé de wbmlJO (comme je l'ai fait pour wbml VC) pour pouvoir tout comparer. A ce stade j'ai donc :

-le code assembleur trié de wbmljo (grâce à Runik et à romconz80)
-le code assembleur non trié de wbmljo (obtenu avec Mame), qui va me servir à corréler les différentes parties de l'assembleur de wbmlVC avec l'assembleur trié de wbmlJO
-le code assembleur non trié de wbmlVC (obtenu également avec Mame).
-la rom VC.IC90 coupée en deux avec d'un côté les instructions et de l'autre les data/adresses
-la rom IC90 de 32.8ko décryptée de wbmlJO.

Grâce à ça, dans la ROM VC.IC91 j'ai fait le tri entre les bytes qui codent pour des instructions, ceux qui codent pour des DATA et des adresses, j'ai aussi pu mettre en évidence les quelques parties des OPcodes qui différaient (et qui sont peut-être responsables du bug d'autofire...)

Ces quelques parties des OPcodes qui diffèrent me compliquent bien la tâche à cause de leur longueur variable. Hormis les DATA, quelques parties du programme sont différentes entre la version Japan Old et VC du jeu (sachant que le le programme même du jeu est dans sa grande majorité contenu dans la rom VC.IC90). Ces parties non seulement diffèrent dans leur contenu, mais aussi dans leur taille. La conséquence, c'est qu'à chaque partie qui diffère, on a un décalage des adresses des Bytes qui suivent.

Illustration : dans les fichiers Hexadécimal IC91 de la VC et de la JOld (décrypté, ça sera plus simple pour illustrer), tout est identique (à part les Data) jusqu'au byte numéro 12D0 (son adresse quoi). A partir de là, on a :



etc...

La conséquence est un décalage des adresses pour les instructions et données qui suivent. Sans ça, il aurait suffit de remplacer les Data et c'était bon. Ce décalage qui est de 1 byte à partir du byte 12D1 augmente progressivement par palier au fil des différences jusqu'à atteindre 75 bytes (en hexadécimal je compte hein) à partir du byte 30B6 (3041 pour la Japan Old), et ceci jusqu'à la fin de la ROM.

Donc, où j'en suis maintenant : Maintenant que j'ai les DATA, OPcodes, adresses et différences qui sont bien balisées, je recompose à la main une rom avec les bonnes données bien décryptées au bon endroit, avec les bonnes adresses, en me servant de la IC90 de wbml Japan Old comme support. Comme je ne sais pas du tout programmer, je fais du "copier/coller" en corrigeant ce qui doit l'être, en notant tout au fur et à mesure pour éviter les erreurs et c'est très long. À l'heure où je rédige ce poste, j'en suis à 10Ko sur 32.8ko.

A suivre donc...
Image Anciennement mpatard Image
Avatar de l’utilisateur
mpatou
 
Message(s) : 1260
Inscription : 14 Janvier 2013, 16:37

Re: [Dossier] Monsterland en anglais : choisir la bonne version

Message par DracoeL » 07 Février 2014, 06:12

Je comprends mieux ce que tu fais maintenant ;o).
Bon courage :)
[centrer]Strider, Mark of Bubble !
Avatar de l’utilisateur
DracoeL
Vieux Jammatophage
 
Message(s) : 1696
Inscription : 13 Janvier 2013, 04:31

Re: [Dossier] Monsterland en anglais : choisir la bonne version

Message par Braintrash » 07 Février 2014, 10:41

Impressionnant. Et en gros, tu as déjà fait un tiers du travail. C'est immense. On va t'en devoir, des bouteilles de poppers.
Braintrash
 
Message(s) : 681
Inscription : 17 Mars 2013, 11:54

Re: [Dossier] Monsterland en anglais : choisir la bonne version

Message par Bonky » 22 Février 2014, 01:28

Rhooo mais ça bidouille dur par ici :D

Enfin, on pourrait avoir une version correcte :heart:
Ce qui pourrait me motiv2 à chercher un original....pour remplacer mon BO....... :O:
J'avais pas trop accroché (alors que le portage sur Master System est une pure tuerie) à l'époque, mais maintenant je lui trouve son charme :)

ATeam Powaaaaa :heart:
Avatar de l’utilisateur
Bonky
 
Message(s) : 25
Inscription : 16 Mars 2013, 00:21

Re: [Dossier] Monsterland en anglais : choisir la bonne version

Message par Batman » 26 Février 2014, 09:13

tain le boulot de malade!!!!

courage Mpatou :(love):
Avatar de l’utilisateur
Batman
 
Message(s) : 976
Inscription : 17 Janvier 2013, 22:23

Re: [Dossier] Monsterland en anglais : choisir la bonne version

Message par mpatou » 26 Février 2014, 14:30

Ça avance, j'en suis à 26.5ko, j'aperçois le bout du tunnel...
Image Anciennement mpatard Image
Avatar de l’utilisateur
mpatou
 
Message(s) : 1260
Inscription : 14 Janvier 2013, 16:37

Re: [Dossier] Monsterland en anglais : choisir la bonne version

Message par Braintrash » 26 Février 2014, 15:57

Courage, courage, si tu y arrives, je te paye une bière, le vestiaire et je t'offre mon cul au Bear's Den.
Braintrash
 
Message(s) : 681
Inscription : 17 Mars 2013, 11:54

Re: [Dossier] Monsterland en anglais : choisir la bonne version

Message par mpatou » 26 Février 2014, 16:33

Une bière?! espèce de radin!
Image Anciennement mpatard Image
Avatar de l’utilisateur
mpatou
 
Message(s) : 1260
Inscription : 14 Janvier 2013, 16:37

PrécédentSuivant

Retour vers Tutos

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s)