Dans les commentaires de l'article d’hier un certain Fay Dek dans un élan de scepticisme digne des plus grands zététiciens a émit l’hypothèse que si dans Megaman 2 on recréait la meme scène de Megaman 3 que j’ai gifé alors on aurait peut être les même problème de framerate et que Megaman 2 aurait juste eu l’intelligence d'éviter certaines situations sensibles.
Devant cette affront ni une ni deux j’ai donc recréé la même scène dans Megaman 2 pour comparer et le résultat est édifiant. Ca tourne sans broncher avec a peu prêt 2 fois moins de ressource que dans Megaman 3
Soyont jusqu'au-boutisteet mettons le maximum d’item supporté par le moteur (soit 16). Le résultat reste le même, ca tient sans broncher. On reste loin de la barre fatidique des 100%.
En exploitant les chiffres de mon monitoring on peut meme faire une analyse précise. Chaque item sur Megaman 2 coûte +1.5% de ressource CPU mais +7.5% sur Megaman 3 soit 5 fois plus!! Mais c’est pas seulement le problème des items, tout est coûteux sur Megaman 3. Par exemple le simple fait de marcher coûte +7% de ressource CPU alors que sur Megaman 2 ca coute rien, on gagne même 0.6%. ( A titre indicatif 1% = environ 100 instructions CPU.)
C’est d’autant plus pertinent comme comparaison qu’une fois la pièce vide et megaman immobile les 2 jeux se stabilisent exactement au même niveau de ressource (autour de 51%) c’est juste que la moindre action ou le moindre objet est bien plus coûteux sur Megaman 3. Ca ressemble beaucoup a un probleme sur le moteur de collision. Peut etre que l'ajout de la glissade a crée des bug avec l'ancien moteur de collision, ils ont refait le moteur pour le rendre plus flexible et précis mais se sont un peu foiré.
Grace a l’intervention de Fay Dek on peut donc maintenant avoir un jugement plus tranché :). Y a un vrai problème dans le code de ce Megaman 3 et ca me donne encore plus envie de creuser.
Le hack salvateur
Autre découverte, il existe un hack “improvement” de Megaman 3 par Kuja Killer qui corrige beaucoup de chose du jeu dont son problème de framerate et on peut dire que le résultat est très concluant. Le problème de framerate est reglé (et cette fois pas besoin d’overclocking donc utilisable sur une vrai NES)
Malheureusement j’ai pas trouvé beaucoup d’information sur ce qu’il corrige précisément mais quelques indications on l’aire de confirmer l’hypothèse que ca vient au moins en partie du moteur de collision qui a changé en plus d'être exagérément sollicité puisque même les items au sol le sollicite constamment car la gravité continu d'être appliqué sur ces items sans pour autant que ca soit exploité dans le jeu (par exemple dans le level de snakeman ca aurait pu etre utile dans les salles au sol ondulant mais ces salles sont isolés et sans ennemis et donc sans items).
En creusant un peu on découvre aussi que le chef de projet et le lead programmeur n'était pas ceux de Megaman 1 et 2 donc c’est une équipe remanié. De plus le chef de projet a abandonné a mi-parcours. C’est Inafune qui reprend en main le projet mais certain élément d’organisation du projet sont perdu. La fin du développement a été chaotique et rushé (cela dit le développement de Megaman 2 a été aussi tres rushé) et on le voit aussi au travers de ce hack qui notamment remet en place plein d'éléments (frame d’animation, son...) présent sur la cartouche mais pas implémenté.
Et pour continuer sur ce hack tres généreux et ambitieux on peut constater aussi la possibilité de changer d’arme avec le bouton select ce qui vient corriger le menuing affreux de ce Megaman qui est le pire sur ce point. Avec ce soucis du détail d’indiquer l’arme en question avec un icone.
Et en bonus on a aussi l’ajout d’une sublime intro (et un ecran titre customisé). Ils ont poussé loin la customisation du jeu.
On peut donc dire que la version ultime de Megaman 3 existe. Le patch se trouve ici: http://www.romhacking.net/hacks/992/ . C’est une face du ROM hack (“improvement”) que j’aime beaucoup. Ca nous montre ce qu’aurait pu etre certain jeux au mieux de leur forme même si je comprend aussi l'intérêt historique de jouer a la version originel.