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 0187
h). 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"