APPLICATIONSCOURS DE BIDOUILLAGE ★ Cours de Bidouilles: LMDSPTDVIDUQSTDS "Méthode De Septh Pour Trouver Des Vies Infinies Dans Les Jeux Qui Sont Trop Difficiles Sinon" (PREMIERE PARTIE) ★

Cours de Bidouilles A100 - Lmdsptdviduqstds 1 (Amstrad Cent Pour Cent)Applications Cours De Bidouillage
Je vous l'ai annoncée le mois dernier, voici une petite série d'aide, voire d'initiation à la bidouille, pour tous les caisses qui voudraient bien mettre des vies infinies dans les jeux, mais qui ne savent pas comment s'y prendre, je veux parler de "La méthode de Septh pour trouver des vies infinies dans les jeux qui sont trop difficiles sinon".

Bien entendu, je ne prétends pas donner une méthode universelle, qui marche à tous les coups ; n'oublions pas

---------------------+------------------+---------------------+
| Instruction | Code Hexa | Le même, en BASIC |
+--------------------+------------------+---------------------+
| LD HL,adresse | 21-adresse | HL=adresse |
| LD A,valeur | 3E-valeur | A=valeur |
| LD (HL),A ;| 77 ;| POKE HL,A ;|
+--------------------+------------------+---------------------+
| LD HL,adresse | 21-adresse | HL-adresse |
| LD (HL),valeur | 36-valeur | POKE HL,valeur |
+--------------------+------------------+---------------------+
| LD A,valeur | 3E-valeur | A=valeur |
| LD (adresse),A | 32-adresse | POKE adresse,A |
+--------------------+------------------+---------------------+

qu'il existe des jeux codés, qu'un loader particulier se charge de décoder. N'oublions pas non plus que tout dépend du savoir-faire du programmeur, ainsi que de son habileté à dissimuler aux regards indiscrets, les parties importantes de son œuvre. M'enfin, sans vouloir trop m'avancer, cette méthode devrait permettre de trouver des vies infinies dans quasiment 70 % des jeux qui sortent à l'heure actuelle, ce n'est quand même pas si mal. La seule condition requise étant de posséder un éditeur de secteur ayant une fonction de recherche de chaînes hexadécimales et un désassembleur intégré (j'ai en effet volontairement écarté les interfaces genre The Hacker ou la Multiface II, idéales pour ce genre de besogne, mais que tout le monde ne possède pas).

J'ai choisi comme support pour mes démonstrations le jeu Incredible Shrinking Sphère (ISS) de Electric Dreams, d'une part parce que, malgré ce que pensent certains, il est pas mal du tout, et, d'autre part, parce que, pour l'instant, personne ne m'a envoyé de bidouille le concernant.

C'EST PARTI

La première chose à faire est de s'armer d'un peu de courage et de beaucoup de patience. En effet, il va nous falloir rechercher des suites de codes hexadécimaux correspondant à des instructions en langage machine bien particulières. Je vous rassure tout de suite, vous n'aurez pas besoin de connaître le LM..., pour appliquer ma méthode ; disons simplement que ça peut vous aider.

Dans ISS, on commence avec trois vies. Il y a donc quelque part, dans le programme, une instruction machine qui met la valeur 3 à une adresse mémoire bien précise. Il nous faut justement découvrir quelle est cette adresse.

En assembleur, Sined vous le dirait s'il était là un peu plus souvent, il existe plusieurs moyens de poker une valeur sur huit Dits (un octet) à une adresse, moyens que voici :
(Heureusement, il est impossible d'écrire LD (adresse), valeur, sinon je vous raconte pas la galère...) ° : pour les ceusses qui causent pas l'assembleur...

La première colonne contient les instructions assembleur, la deuxième les codes hexa correspondant à ces instructions. Ce ne sont là que trois techniques possibles, celles qui sont les plus couramment utilisées ; il en existe, hélas pour nous, quelques autres. Il n'y a là qu'une inconnue, l'adresse. La valeur, nous la connaissons, c'est 3 (le nombre de vies, quoi).

RECHERCHE

Il convient maintenant de rechercher sur toute la disquette (c'est l'opération la plus longue) et une à une, toutes les fois où l'instruction LD A,3 (soit en hexa 3E-03) apparaît. Tout en sachant que 3E-03 ne correspond pas forcément au nombre de vies, mais peut également être à l'intérieur d'une zone de données dans le programme (sprites, tableaux, etc.). Nous verrons par la suite comment déterminer, s'il s'agit ou non de ce qui nous intéresse ici. Or donc, Disco trouve 6 fois la chaîne 3E-03 sur la disquette originale de ISS (tout en nous signalant au passage que les pistes 19 à 41 ne sont pas formatées !). On aura pris soin de noter chacune des adresses ainsi trouvées, soit :

+-------+---------+---------+
| Piste | Secteur | Adresse |
+-------+---------+---------+
| 8 | 44 | 0104 |
| 9 | 44 | 012A |
| 9 | 47 | 0046 |
| 12 | 41 | 005A |
| 16 | 45 | 0102 |
| 17 | 41 | 00CE |
+-------+---------+---------+

Je vous expliquerai le mois prochain et dans le détail pourquoi. Mais autant vous le dire tout de suite, là, on l'a gentiment dans le baba : aucune de ces adresses n'est la bonne. Que faire donc ? D'abord, on recherche la dernière des trois possibilités évoquées plus haut, soit l'instruction LD (HL),3 ce qui donne en hexa 36-03, et l'on s'aperçoit que, là encore, ça ne marche pas. Alors on se dit que tonton Septh déconne complètement, et on ferme son Amstrad Cenf Pour Cent en le maudissant jusqu'à la dix-huitième génération. Ça, c'est la réaction bête et méchante.

Une réaction plus intelligente consisterait à penser que, si nulle part dans le programme on ne trouve trois vies, c'est peut-être simplement parce que, en fait le programmeur n'en a mis que deux ! Eh oui, numérotées de 0 à 2, cela ferait bien le bon compte... Du coup, c'est reparti pour la recherche, mais avec 3E-02 en lieu et place de 3E-03. Discology trouve alors les occurrences suivantes :

+-------+---------+---------+
| Piste | Secteur | Adresse |
+-------+---------+---------+
| 4 | 46 | 012E |
| 9 | 43 | 01E1 |
| 9 | 44 | 00C7 |
+-------+---------+---------+

Là encore, je vous expliquerai pourquoi le mois prochain, mais cette fois-ci, on brûle : c'est bien en piste 9, secteur 44, adresse 00C7 que le programme décide du nombre de vies allouées au joueur (attention : cette particularité, 2 vies au lieu de 3, n'est pas généralisable - sinon, ça ne serait pas une particularité. Il vaut mieux toujours commencer par rechercher 3 vies, et si ça ne marche pas, passer alors à 2). La preuve, si l'on remplace le 02 par un FF, on a dès lors 255 vies, ce qui n'est pas si mal pour un début, et vous aidera peut-être, à patienter un long mois pour avoir les vies infinies...

Amstrad 100 % n°16 , juin 89 , p38

★ ANNÉES: 1989
★ AUTEUR(S): ???

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Protection Basic NEF
» Applications » Problèmes de compatibilité CPC/CPC Plus (Tom et Jerry/GPA)
» Applications » Enquete sur la Piratage - James Plombes (Tilt)
» Applications » Disc Unprotector (Pixel)
» Applications » Ascii File Protector (Amstrad Action)
» Applications » Protlist: Protection et Deprotection de Listings (CPC Revue)
Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 218 millisecondes et consultée 3721 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.