Magical drop III : debugging Mame de l'apparition des couleurs de bulles
5 participants
Page 1 sur 1
Magical drop III : debugging Mame de l'apparition des couleurs de bulles
Hello !
J'ai du nouveau concernant mon post précédent sur Magical drop 3.
Pour rappel (https://www.neogeo-system.com/t3689-magical-drop-3-difference-de-gameplay-entre-les-persos) :
Suite aux conseils et infos reçues, je n'ai pas trouvé de confirmation ou d'infirmation ferme sur le sujet (même sur le forum américain). En particulier il y avait une tier list, mais sans les critères qui ont permis de l'établir.
Donc je me suis lancé le défi d'étudier le jeu pour voir comment il fonctionne sur ce sujet particulier (je n'ai pas l'ambition d'analyser tout le jeu, ça serait titanesque), à savoir le choix des bulles à afficher.
Je précise que je suis débutant en la matière (c'est ma première fois :p) et que pour certains du forum (je pense à Furrtek et elrayzeur) cela semblera probablement basique ! Ceci dit je travaille depuis toujours dans l'informatique et j'ai toujours aimé le bas niveau donc je ne démarre pas de rien non plus
J'ai récupéré la ROM Mame, et en me renseignant sur le net j'ai découvert qu'il y a un debugger inclus dans Mame.
Je vous résume plus loin comment j'ai procédé pour reverser le jeu.
Au final, l'analyse a infirmé ma théorie :
Question:
Est-ce que la grille de bulles au début d'une partie, et les bulles qui suivent, dépendent du personnage sélectionné ?
Réponse:
Non.
Explication:
Les séquences de bulles sont fixes, elles ont été calculées à l'avance et mises en dur dans la ROM.
Au démarrage du jeu, un compteur démarre, il s'incrémente continuellement. Lorsque la grille de bulle doit être initialisée, le jeu utilise ce compteur pour choisir de façon "aléatoire" une séquence de bulle parmi toutes celles possibles (disponibles en ROM).
La théorie était donc fausse ! On peut appeler ça un bel effet placebo ! Ceci dit, le personnage en question est réellement très fort, de part son pattern d'attaque (qui est documenté sur le net). C'est donc ce seul atout qui en fait la supériorité du personnage !
Pour illustrer le stockage par avance des bulles, j'ai fait une petite video qui montre que l'on peut prédire la prochaine rangée de bulle qui va arriver, à partir des bulles déjà affichées, et ce, sans être en train de debugger la mémoire vive du jeu. En effet, le jeu tourne sur ma console, et j'utilise le PC pour chercher dans la ROM les prochaines bulles).
https://www.dropbox.com/s/84l11n7mudy2q0y/magdrop3_predireProchaineRangee.MP4?dl=0
Il s'agit tout bêtement de rechercher dans la ROM la séquence des bulles affichées (la ROM est mirrorée en RAM, d'où le fait que deux adresses sont trouvées), et de lire la prochaine séquence.
Ci-dessous dans les grandes lignes la façon dont j'ai utilisé le debugger :
- Faire le diff entre un dump de la RAM après avoir choisi un perso A et un dump de la RAM après avoir choisi un perso B
=> Parmi les différences j'ai identité un octet qui contenait 0 pour le perso A et 8 pour le perso B. Cela correspondait à l'ordre des persos sur l'écran de choix du perso (le perso A était le premier de la liste, et le perso B le 8e)
=> Je savais ainsi à quelle adresse le perso choisi est stocké.
- Même technique de diff de dump de RAM, entre différents affichages de grille de bulles de départ
=> Cela a permis de savoir où sont stockées les bulles de chaque perso
=> Ainsi que de savoir comment sont codées les bulles en mémoire (valeurs associées aux couleurs).
- Analyse de code (assembleur motorola 68000) pour comprendre comment on choisit les prochaines bulles. C'était le plus fastidieux, car je suis parti de l'adresse dans laquelle on écrit la 1ère bulle, il a donc fallu dérouler à l'envers le fil d'exécution.
Voilà, je me suis bien amusé là-dessus donc je voulais partager ça avec vous, ça donnera peut-être envie à certains, auxquels cas on pourra continuer d'en parler !
Et au final c'était pas très compliqué, faut juste avancer avec méthode et noter tout ce qu'on trouve. J'y ai passé un peu moins d'une dizaine de soirées je pense, à coup d'1h par soirée, donc c'est pas la mort.
En annexe des sites utiles :
Assembleur Motorola 68000
http://mrjester.hapisan.com/04_MC68/
=> Ce gars-là a l'air de bosser sur des hacks, en particulier Megadrive, ça doit être intéressant à suivre mais je n'ai pas encore fouillé pour l'instant
Wiki Neo geo dev
https://wiki.neogeodev.org/index.php?title=Main_Page
=> Un grand bravo et un grand merci à Emmanuel Vadot et Furrtek qui gèrent ce wiki, qui est une mine d'or !
J'ai du nouveau concernant mon post précédent sur Magical drop 3.
Pour rappel (https://www.neogeo-system.com/t3689-magical-drop-3-difference-de-gameplay-entre-les-persos) :
A chaque fois que je joue à ce jeu avec des potes, on lutte pour comprendre pourquoi certains joueurs gèrent à fond avec certains persos, ou à l'inverse galèrent avec d'autres persos !
J'ai bien lu la gamefaq (http://www.gamefaqs.com/neo/563372-magical-drop-iii/faqs/16931) qui explique que les patterns d'attaque sont différents, mais j'ai l'impression qu'il y a encore d'autres différences.
Peut-être est-ce psychologique, mais avec Strength je fais des combos en série et je gagne à coup sûr, alors que je lutte avec d'autres persos pour faire les mêmes combos, comme si le set-up des couleurs (au départ puis au fur et à mesure) était différent selon le perso ! Idem sur l'apparition de blocs de glace.
Et des potes me battent si l'on prend d'autres persos (comme Lovers), qui semblent plus propices à un jeu plus réfléchi et des combos par réaction en chaine...
Au final, on finit par jouer à personnage identique, pour être sûr d'être à armes égales Smile
Donc je suis curieux de connaitre vos expériences
Suite aux conseils et infos reçues, je n'ai pas trouvé de confirmation ou d'infirmation ferme sur le sujet (même sur le forum américain). En particulier il y avait une tier list, mais sans les critères qui ont permis de l'établir.
Donc je me suis lancé le défi d'étudier le jeu pour voir comment il fonctionne sur ce sujet particulier (je n'ai pas l'ambition d'analyser tout le jeu, ça serait titanesque), à savoir le choix des bulles à afficher.
Je précise que je suis débutant en la matière (c'est ma première fois :p) et que pour certains du forum (je pense à Furrtek et elrayzeur) cela semblera probablement basique ! Ceci dit je travaille depuis toujours dans l'informatique et j'ai toujours aimé le bas niveau donc je ne démarre pas de rien non plus
J'ai récupéré la ROM Mame, et en me renseignant sur le net j'ai découvert qu'il y a un debugger inclus dans Mame.
Je vous résume plus loin comment j'ai procédé pour reverser le jeu.
Au final, l'analyse a infirmé ma théorie :
Question:
Est-ce que la grille de bulles au début d'une partie, et les bulles qui suivent, dépendent du personnage sélectionné ?
Réponse:
Non.
Explication:
Les séquences de bulles sont fixes, elles ont été calculées à l'avance et mises en dur dans la ROM.
Au démarrage du jeu, un compteur démarre, il s'incrémente continuellement. Lorsque la grille de bulle doit être initialisée, le jeu utilise ce compteur pour choisir de façon "aléatoire" une séquence de bulle parmi toutes celles possibles (disponibles en ROM).
La théorie était donc fausse ! On peut appeler ça un bel effet placebo ! Ceci dit, le personnage en question est réellement très fort, de part son pattern d'attaque (qui est documenté sur le net). C'est donc ce seul atout qui en fait la supériorité du personnage !
Pour illustrer le stockage par avance des bulles, j'ai fait une petite video qui montre que l'on peut prédire la prochaine rangée de bulle qui va arriver, à partir des bulles déjà affichées, et ce, sans être en train de debugger la mémoire vive du jeu. En effet, le jeu tourne sur ma console, et j'utilise le PC pour chercher dans la ROM les prochaines bulles).
https://www.dropbox.com/s/84l11n7mudy2q0y/magdrop3_predireProchaineRangee.MP4?dl=0
Il s'agit tout bêtement de rechercher dans la ROM la séquence des bulles affichées (la ROM est mirrorée en RAM, d'où le fait que deux adresses sont trouvées), et de lire la prochaine séquence.
Ci-dessous dans les grandes lignes la façon dont j'ai utilisé le debugger :
- Faire le diff entre un dump de la RAM après avoir choisi un perso A et un dump de la RAM après avoir choisi un perso B
=> Parmi les différences j'ai identité un octet qui contenait 0 pour le perso A et 8 pour le perso B. Cela correspondait à l'ordre des persos sur l'écran de choix du perso (le perso A était le premier de la liste, et le perso B le 8e)
=> Je savais ainsi à quelle adresse le perso choisi est stocké.
- Même technique de diff de dump de RAM, entre différents affichages de grille de bulles de départ
=> Cela a permis de savoir où sont stockées les bulles de chaque perso
=> Ainsi que de savoir comment sont codées les bulles en mémoire (valeurs associées aux couleurs).
- Analyse de code (assembleur motorola 68000) pour comprendre comment on choisit les prochaines bulles. C'était le plus fastidieux, car je suis parti de l'adresse dans laquelle on écrit la 1ère bulle, il a donc fallu dérouler à l'envers le fil d'exécution.
Voilà, je me suis bien amusé là-dessus donc je voulais partager ça avec vous, ça donnera peut-être envie à certains, auxquels cas on pourra continuer d'en parler !
Et au final c'était pas très compliqué, faut juste avancer avec méthode et noter tout ce qu'on trouve. J'y ai passé un peu moins d'une dizaine de soirées je pense, à coup d'1h par soirée, donc c'est pas la mort.
En annexe des sites utiles :
Assembleur Motorola 68000
http://mrjester.hapisan.com/04_MC68/
=> Ce gars-là a l'air de bosser sur des hacks, en particulier Megadrive, ça doit être intéressant à suivre mais je n'ai pas encore fouillé pour l'instant
Wiki Neo geo dev
https://wiki.neogeodev.org/index.php?title=Main_Page
=> Un grand bravo et un grand merci à Emmanuel Vadot et Furrtek qui gèrent ce wiki, qui est une mine d'or !
pandoff- 1000 Mega Shock
- Messages : 1827
Date d'inscription : 16/06/2012
Re: Magical drop III : debugging Mame de l'apparition des couleurs de bulles
J'adore cette façon de résoudre les problème : en ouvrant les tripes du jeu.
Merci pour ces info, le prétexte du fait que ce soit plus facile avec un perso ne tient surtout que de la mauvaise foi
Merci pour ces info, le prétexte du fait que ce soit plus facile avec un perso ne tient surtout que de la mauvaise foi
poup- 1000 Mega Shock
- Système(s) : AES, MVS et CDZ
Messages : 3150
Date d'inscription : 08/04/2015
Age : 46
Localisation : 37
Re: Magical drop III : debugging Mame de l'apparition des couleurs de bulles
Merci pour le partage, j'adore avoir ce type d'info sur un jeu.
Du coup vue que tu sais où sont stockés les données pour chaque ligne de bulles (je suppose pour chaque niveau),
tu pourrais te lancer dans un hack et nous pondre une version plus difficile . Avec les nouveaux outils de Blastar, tu peux même éditer les sprites facilement .
En tout cas super taf et merci pour le retour.
Ciao++
Du coup vue que tu sais où sont stockés les données pour chaque ligne de bulles (je suppose pour chaque niveau),
tu pourrais te lancer dans un hack et nous pondre une version plus difficile . Avec les nouveaux outils de Blastar, tu peux même éditer les sprites facilement .
En tout cas super taf et merci pour le retour.
Ciao++
elrayzeur- Combo maker
- Système(s) : AES
Messages : 739
Date d'inscription : 28/11/2014
Age : 42
Localisation : Royan
Re: Magical drop III : debugging Mame de l'apparition des couleurs de bulles
Pas d'quoi
Ah oui ça serait peut-être envisageable une version plus dure Histoire de rentabiliser le temps passé !
Je connaissais pas cet outil pour les sprites merci pour l'info !
Ah oui ça serait peut-être envisageable une version plus dure Histoire de rentabiliser le temps passé !
Je connaissais pas cet outil pour les sprites merci pour l'info !
pandoff- 1000 Mega Shock
- Messages : 1827
Date d'inscription : 16/06/2012
Re: Magical drop III : debugging Mame de l'apparition des couleurs de bulles
Merci et moi aussi j'aime ce genre d'autopsie d'un jeu.
_________________
_________________
Administrateur sur Neo-Geo System
Je réalise des converts AES/MVS, programmation d'eproms, bios, etc...
Ryo Sakazaki- Admin
- Système(s) : AES Jap, MVS MV-2F
Messages : 16723
Date d'inscription : 15/10/2011
Age : 49
Localisation : Dept 91
Re: Magical drop III : debugging Mame de l'apparition des couleurs de bulles
le logarithme est en dur dans la rom. ouah !
good job !
good job !
maldoror68- 1000 Mega Shock
- Système(s) : MVS,arcade,,F3,MD,32x,MCD,SAT
Messages : 3439
Date d'inscription : 09/07/2012
Age : 42
Localisation : Mulhouse
Sujets similaires
» [HELP] authentification PCB Magical Drop 3 MVS
» Question sur un MAGICAL DROP 2 AES : legit ou pas ?
» Rareté - Magical Drop 2
» Faux magical drop 3 aes
» Magical drop 3 : Différence de gameplay entre les persos
» Question sur un MAGICAL DROP 2 AES : legit ou pas ?
» Rareté - Magical Drop 2
» Faux magical drop 3 aes
» Magical drop 3 : Différence de gameplay entre les persos
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum