[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 » 24 Mars 2014, 10:28

J'ai fait quelques roms hybrides (en mélangeant les moitiés OP decryptées et les moitiées Data décryptées). Certaines donnent l'épée quand il faut, d'autres jamais. Je vais comparer le fonctionnement de mes différents fichiers et trouver ce qui cloche.
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 ゴジラ » 24 Mars 2014, 12:11

Oh mais tu es tout proche là.
Avatar de l’utilisateur
ゴジラ
Administrateur
 
Message(s) : 2659
Inscription : 11 Janvier 2013, 14:39

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

Message par mpatou » 26 Mars 2014, 12:16

Alors ça y est, j'ai trouvé ce qui provoquait le bug des 2 dernières épées, aussi bien sur ma rom decryptée que sur les version jap. Voilà comment j'ai procédé, en utilisant Mame qui est un outil absolument génial :

J'ai d'abord utilisé une rom hybride pour la rom IC90, avec comme première moitié ma rom decryptée sans autofire, et comme seconde moitié, la seconde moitié de la rom 90 de la Virtual Console (qui contient donc les DATA correctement décryptées).

En gros ça donne ça

1111111111111111
1111111111111111
1111111111111111
1111111111111111
1111111111111111
1111111111111111
1111111111111111
1111111111111111
----------------------
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
64ko en tout

Je l'ai testée avec Mame, et là pas de problème, j'obtiens les bonnes épées au bon moment. Du coup j'ai refait 2 autres hybrides, schématisées ci dessous :

1111111111111111 1111111111111111
1111111111111111 1111111111111111
1111111111111111 1111111111111111
1111111111111111 1111111111111111
1111111111111111 1111111111111111
1111111111111111 1111111111111111
1111111111111111 1111111111111111
1111111111111111 1111111111111111
----------------------et---------------------
1111111111111111 0000000000000000
1111111111111111 0000000000000000
1111111111111111 0000000000000000
1111111111111111 0000000000000000
0000000000000000 1111111111111111
0000000000000000 1111111111111111
0000000000000000 1111111111111111
0000000000000000 1111111111111111


C'est celle de gauche qui fonctionne. Sur cette base, je fais deux nouvelles roms hybrides, en coupant encore en deux la partie issue de la rom VC

1111111111111111 1111111111111111
1111111111111111 1111111111111111
1111111111111111 1111111111111111
1111111111111111 1111111111111111
1111111111111111 1111111111111111
1111111111111111 1111111111111111
1111111111111111 1111111111111111
1111111111111111 1111111111111111
----------------------et---------------------
1111111111111111 1111111111111111
1111111111111111 1111111111111111
1111111111111111 1111111111111111
1111111111111111 1111111111111111
1111111111111111 0000000000000000
1111111111111111 0000000000000000
0000000000000000 1111111111111111
0000000000000000 1111111111111111

et ainsi de suite jusqu'à ce que je me retrouve avec deux roms très peu différentes, dont une qui au moment crucial me donne toujours le gant à la con, et l'autre qui m'affiche le message comme quoi j'ai la bonne épée, mais rien n’apparaît et je reste bloqué dans la salle du boss (on sort de la salle du boss lorsqu'on récupère l'item qu'il nous donne après le combat). Je présume donc que j'ai coupé la partie fautive en deux pour me retrouver avec ce bug inédit. Mes deux roms diffèrent de seulement 80 octects (128 en décimal), ce qui est peu au regard des 32 768 octets qui composent la ROM. Il m'a fallu 8 divisions par 2 pour en arriver là, ce qui prend un peu de temps, mais moins pour moi que d'éplucher tout le code. La source du problème est donc ici.

A partir de ce point, j'ai repris la cartographie de ma rom (un fichier assembleur généré par Mame sur lequel j'avais étiqueté les parties étant des OPcodes et les DATA) que j'avais établi en m'aidant de la cartographie générée par romconv (le petit prog de dégryptage que Runik avait trouvé sur un site japonais pour rappel). Il apparaît alors que dans les 80 octects (128) suspects, il y aurait une possibilité que des opérandes aient été mal identifiées et soient en fait des DATA. Celà concernait C octets (12 en décimal). En faisant l'hypothèse que ces C (12) octects sont bien des DATA, je les copie dans la seconde moitié de la rom 90 de la VC (celle avec les bonnes DATA donc), et je les mets à la place des octects correspondant dans ma rom de 32Ko, puis enfin j'ai testé directement sur le vrai hardware (plus rapide que de modifier une nouvelle fois les drivers de Mame, de regénérer un nouveau Mame et me faire tout le jeu jusqu'à l'endroit critique).

Et bah ça a fonctionné, j'ai pu récupérer les 2 dernières épées au bon moment, et finir le jeu comme il faut :fete:

Je n'ai plus qu'à faire la même correction aux 2 version japonaises décryptées avec romconv, et j'aurai enfin à ma disposition des roms utilisables sur le hardware original, sans modifier celui-ci, que ce soit en anglais ou en japonais.
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 ゴジラ » 26 Mars 2014, 12:48

Félicitations, tu tues :).

Je ne comprends pas tout, mais je vois que c'est un boulot de titan (euphémisme) que tu as abattu.
Avatar de l’utilisateur
ゴジラ
Administrateur
 
Message(s) : 2659
Inscription : 11 Janvier 2013, 14:39

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

Message par DracoeL » 26 Mars 2014, 12:58

Sérieux j'adore ton tâtonnement, c'est exactement comme ça que je me figure essayer un jour. Reste à trouver le jeu qui comme pour toi, suscitera cette implication.
Franchement tu vends du rêve. ;)
Te reste à traduire ça en anglais pour faire un buzz mondial :D.
[centrer]Strider, Mark of Bubble !
Avatar de l’utilisateur
DracoeL
Vieux Jammatophage
 
Message(s) : 1695
Inscription : 13 Janvier 2013, 04:31

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

Message par Runik » 26 Mars 2014, 16:49

Bon, et ce speedrun ?

:soldat:
AGAR v1.2.2 est sorti !
Avatar de l’utilisateur
Runik
 
Message(s) : 458
Inscription : 12 Janvier 2013, 22:45

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

Message par mpatou » 26 Mars 2014, 18:16

Attendez, j'ai eu une dernière surprise cet après-midi, mais avec les version JAP que j'avais modifiées pour ne plus avoir le problème d'épée, et bah le ROM CHECK au démarrage indiquait une erreur sur la ROM1 (la 90, celle que j'ai modifiée quoi).
J'ai fait en sorte de rendre les romset jap corrigés avec Mame, et j'ai utilisé la fonction Trace de la console de debugage de Mame : elle liste dans un fichier texte les instructions exécutée par le CPU lors de l'exécution du programme, jusqu'à ce qu'on l'interromp. J'ai fait de même avec le romset VC, qui lui a toujours démarré malgré tout ce que je lui ai fait subir (en plus du fait que sur cette version n'apparait pas l'écran du ROM CHECK, j'en ai déduit que cette procédure était inibée).

Et bah il n'a pas fallu plus de 2 minutes avec un comparateur de textes pour voir une première différence : un byte "AF" (codant pour "xor") était remplacé par "C9" ("ret", ou return) pour le log de la version VC. J'ai alors remplacé ce AF par C9 dans la rom 90 de la version jap decryptée, et bingo! Plus de ROMCHECK, et le jeu marche maintenant parfaitement.

Bon, normalement, j'ai complètement fini là ! :alcolo:
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 Batman » 26 Mars 2014, 23:28

bravo mpatou, content pour toi que tu sois arrivé au bout de ce travail titanesque!

j'ai absolument rien compris du début à la fin, mais tu es trop fort. point barre! :D
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 Runik » 27 Mars 2014, 10:07

Mmmh ... c'est quand même une solution de gros bourrin là :O:
Tu pourrais aussi modifier le code CRC afin qu'il corresponde à la nouvelle rom, ce qui fait que le rom check sera correct (c'est ce que je fais sur les sets System 16 ;) )
AGAR v1.2.2 est sorti !
Avatar de l’utilisateur
Runik
 
Message(s) : 458
Inscription : 12 Janvier 2013, 22:45

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

Message par mpatou » 28 Mars 2014, 09:28

Je ne sais pas comment faire pour retrouver et changer le CRC. A ton avis c'est un CRC simple?
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 Runik » 28 Mars 2014, 09:56

Tu n'as pas à le calculer toi même ;)
En général, lorsque la routine du rom check se lance, tu as une boucle qui s'exécute en additionnant chaque octet de la rom qu'il teste l'un après l'autre. Lorsqu'il a parcouru toute la rom, il compare le résultat obtenu avec celui qui est codé en dur dans la rom qui correspond au CRC attendu.
Il suffit donc de remplacer le CRC de la rom par celui qui est calculé par la routine, et ça roule ;)

Tu peux aussi t'aider du texte affiché qui indique l'état du test (GOOD ou BAD par ex.), tu recherches ce texte dans la rom (en général ce texte n'est pas encrypté et il est visible en clair), ce qui te permet d'avoir son adresse. Ensuite il te suffit de suivre au débugger de Mame pour trouver quand cette adresse est utilisée, et tu remontes un peu plus tôt pour voir le détail du test (et où se trouve stocké le résultat CRC dans la rom)
AGAR v1.2.2 est sorti !
Avatar de l’utilisateur
Runik
 
Message(s) : 458
Inscription : 12 Janvier 2013, 22:45

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

Message par mpatou » 28 Mars 2014, 10:44

Si je t'envoies la rom, tu peux regarder s'il te plait? :gay:
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 » 29 Mars 2014, 14:43

Bon en fait je n'ai même pas trouvé où étaient les CRC dans les 3 roms modifiées :(
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 » 01 Avril 2014, 21:37

Bon les copains, je rebouche le champagne, le boulot n'est pas fini : j'ai fait une partie ce matin et je me suis retrouvé face à un bug très gênant.

Parfois, en battant certains ennemis "normaux", ils droppent des équipement (armure, bouclier, chaussure, etc...). C'est très rare mais ça arrive. Et bien là, je bas une ennemis dans l'avant dernier niveau, il droppe l'avant dernier bouclier (que je n'avais pas acheté pour économiser des sous), je récupère le bouclier et là le jeu plante et redémarre...

L'emmerdant c'est que c'est très rare d'obtenir un item d'équipement en battant un ennemi, et donc pour reprovoquer ce bug, ça ne va ps être simple.

Au boulot!
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 Batman » 02 Avril 2014, 08:35

bon courage math, je me serais découragé depuis un moment à ta place.

je mets le champagne au frais, il n'attends que toi!
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 » 03 Avril 2014, 20:33

J'ai trouvé une piste : un byte malencontreusement changé. Je corrige et on testera ça ce week-end au cas où...
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 » 18 Avril 2014, 21:29

Bon, petit rapport d'étape : les tests du week-end chez Batman n'ont pas été concluants (Doktor a filmé un plantage en direct avec son APN). J'ai un peu planché depuis, j'ai fait quelques essais, et je ce soir suis parvenu à faire une rom IC90 hybride qui lache qui n'a pas le bug du bouclier : j'ai pris la première moitié de la rom VC.IC90 (avec les bons OPcodes), j'ai corrigé l'autofire dessus (comme expliqué ci-avant), et j'ai collé ma rom IC90 (appelée mpatou.ic90) avec les précédentes corrections.

:b: bons-OPcodes :b:
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
----------------------
1111111111111111
1111111111111111
1111111111111111
1111111111111111
1111111111111111
1111111111111111
1111111111111111
1111111111111111
:h: mpatou.ic90 :h:

Ça a donc marché, ce qui laisse supposé que le problème ici c'est des OPcodes qui ont été traitées comme des DATA. En gros, c'est le contraire de ce qui s'est passé avec le bug du gant qu'on avait à la place de l'épée Excalibur. (où c'était des DATA qui avaient été traitées comme des OPcodes).

Me reste plus qu'à élaborer une méthode pas trop chiante pour trouver la partie des DATA de mpatou.ic90 qui sont en fait des OPcodes.
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 » 13 Mai 2014, 08:45

Alors cette fois ça semble bon pour le bouclier. J'ai suivi la méthode précédemment décrite, c-a-d que j'ai divisé par 2 la taille de la VC.IC90 corrigée que je greffais à chaque étape dans mon code. Au bout de 8 tests, et donc 8 divisions par 2, je me suis retrouvé avec un greffon de 80 bytes (80 en hexadecimal, ce qui fait 128 en décimal) qui contenaient le code non buggé. En comparant à la loupe cette partie de l'assembleur de cette rom avec celle qui buggait, le bug est apparu assez clairement, c'était bien des OPcodes qui avaient été traitées comme des DATA, la cartographie générée par le programme romconvz80 était donc là aussi incorrecte.

Le problème de cartographie se retrouvait donc aussi sur les rom jap générées par romconvz80, ce qui m'a été confirmé en faisant des tests avec les roms jap décryptées de la sorte (bouclage infini en essayant de prendre le bouclier bleu après qu'il soit apparu).

Mais ça n'est pas tout, une erreur exactement de la même nature s'était glissée un peu plus bas, provoquant un bug certainement similaire avec un autre équipement (une armure ou une paire de chaussure), que je n'avais pas constatée encore.

J'ai donc corrigé toutes mes roms IC90, c'est à dire la version anglaise faite par mes petits soins, ainsi que les 2 versions jap (normal et old) qui avaient déjà subi une correction concernant l'épée Excalibur (voir un de mes posts précédents).

Je dirai donc qu'à ce stade, j'ai fini. Je vais pouvoir commencer à apprécier ce jeu en tant que tel, et plus seulement comme programme à debugger. Enfin jusqu'à ce que je tombe sur un autre bug du au décryptage.
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 Tronky » 13 Mai 2014, 17:39

Furieux..!
Avatar de l’utilisateur
Tronky
 
Message(s) : 421
Inscription : 27 Janvier 2013, 12:03

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

Message par DracoeL » 13 Mai 2014, 19:04

Du coup tu le 1cc maintenant? ;o)
[centrer]Strider, Mark of Bubble !
Avatar de l’utilisateur
DracoeL
Vieux Jammatophage
 
Message(s) : 1695
Inscription : 13 Janvier 2013, 04:31

PrécédentSuivant

Retour vers Tutos

Qui est en ligne ?

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

cron