| ★ APPLICATIONS ★ COURS DE BIDOUILLAGE ★ JOYSTICK n°5 - Cours de Bidouilles ★ |
| Patrice Maubert - Cours de Bidouilles - Joystick N05 | Applications Cours De Bidouillage |
Salut les kids. Dieu et chef ont été indulgents alors comme vous pouvez le constater, je suis encore là. Ca ne va peut-être pas durer donc j'en profite pour vous communiquer deux informations importantes : non je ne ferai pas de cours de bidouilles sur ST et non ne m'appelez pas Monta, ce n'est pas moi qui ai choisi ce surnom stupide... La dernière fois je vous ai juste donné une petite astuce rapide avant de partir. Cette fois-ci nous allons approfondir tout ça car se contenter de remplacer une chaîne hexa c'est pas violent et en plus sans comprendre ce qu'on fait c'est plutôt débile (c'est-à-dire faible). Tout ceci étant destiné à faire naître en vous le sentiment de culpabilité de votre ignorance et vous pousser ainsi à poursuivre la difficile lecture de ma prose insipide...
HEXA C'EST HEXA... D'habitude dans les livres traitant de l'assembleur, on vous apprend a compter jusqu'à 1. Ici on va vous apprendre à compter jusqu'à F. Comme je me doute que la plupart d'entre vous connaissent déjà, disons simplement qu'il s'agit de compter en base 16 (niveau cours préparatoire) plutôt qu'en base 10 (niveau maternelle). Ceux qui n'ont pas suivi quand ils étaient au CP s'en mordent aujourd'hui les doigts. Il est inutile de savoir calculer en hexa CB65+1F20, sachez seulement sur le bout des doigts tous les nombres de0à 255 (=FF) et les autres valeurs remarquables : 800 -7000 - 4000 - FFFF... N'oubliez pas qu'avec Discology, tout (ou presque) se fait en hexadécimal. ASSEMBLEUR ET CODE MACHINE... Ces deux termes désignent deux notions différentes qu'il est indispensable de bien discerner. Le code machine est le seul langage (c'est-à-dire suite d'instructions) compréhensible directement par le microprocesseur. C'est en fait une suite de 0 et de 1 (des bits) que nous regroupons par commodité par 8, pour former des octets. Mais l'esprit humain est ainsi fait que ces suites de nombres, parfaitement claires pour l'ordinateur, le sont beaucoup moins pour nous. Nous les convertissons donc en un autre langage qui comporte des lettres et des mots : l'assembleur, le passage de l'assembleur au langage machine (et inversement) se fait par simple conversion (une instruction égale une autre instruction), alors que par exemple le passage du basic à l'assembleur est beaucoup plus compliqué. Pour schématiser grossièrement ce que nous ferons en assembleur, disons que cela va consister à manipuler des nombres (vous vous en doutiez non ?), d'une part en effectuant sur eux des opérations, et d'autre part en les stockant, soit dans des registres (internes au microprocesseur), soit dans des cases mémoires (externes), dont votre ordinateur possède pas moins de 65536 exemplaires.
PREMIERES INSTRUCTIONS... Revenons a nos préoccupations premières, qui étaient je le rappelle les bidouilles. Intéressons-nous pour l'instant aux vies infinies. Imaginons un jeu ou vous possédez cinq vies. Le nombre cinq va être stocké dans une case mémoire et l'opération effectuée sur ce nombre sera une décrémentation, lorsque vous perdrez une vie. Le but final est d'éliminer la partie du programme ( là où sont les instructions ) qui provoque cette décrémentation. Pour cela, il nous faut tout d'abord trouver la case mémoire contenant le nombre de vies. Nous allons rechercher l'initialisation, c'est-à-dire la partie du programme qui, au début de la partie, met a jour tous les compteurs (vies, scores, levé!,..). Voyons ce que cela pourrait donner en assembleur (avec le code machine correspondant) pour un jeu à cinq vies : LD A,5 3E 05 ; on met le nombre 5 dans le registre A La case mémoire dépend bien sur du bon vouloir du programmeur et vous ne pouvez pas la deviner. Vous connaissez donc les trois premiers octets qui sont 3E 05 32. Recherchez donc cette chaîne hexa avec votre DISCO préféré. Pour vérifier que vous êtes sur la bonne voie, remplacez le 05 par autre chose, 'et chargez votre jeu. Si le nombre de vies est changé, c'est tout bon. Vous avez reconnu là le petit « truc » que je vous avais donné le mois dernier. Mais cette fois-ci vous en comprenez le sens ! Quand vous avez repéré la zone avec DISCO, désassemblez le secteur (menu Afficher - option Désassembler écran). Si le listing laisse apparaître beaucoup d'instructions dans le style LD (XXXX),A c'est que vous avez des chances d'être tombé sur les initialisations. Si ce n'est pas le cas, cherchez plus loin. C'est le genre d'instruction qu'il n'est pas étonnant de rencontrer plusieurs fois. Une autre façon de repérer l'endroit : si le jeu se joue a deux joueurs et que vous rencontrez les instructions LD A, vies LD (XXXX),A case mémoire pour le joueur 1 |
| ![]() |
| Page précédente : Patrice Maubert - Cours de Bidouilles - Joystick N04 |
|