Le scribe hexadécimal et la table de craft

Le but de ce tutoriel est de créer un mauvais oeuf spécial permettant de facilement écrire n'importe quelle séquence hexadécimal dans le stockage du PC. Lorsque ce mauvais oeuf sera placé dans le slot 29 de la boite 14, il interprètera le nom des boites PC comme étant des nombres hexadécimaux et écrira les 56 octets correspondants dans le slot 28 de la boite 14. Cet emplacement sera changé par la suite avec la table de craft, permettant d'écrire de longues séquences d'octets consécutifs.

Les mauvais oeufs créés dans ce tutoriel ne doivent pas être marqués ni récupérés dans l'équipe, cela risquerait de les corrompre.

Avant de suivre ce tutorial, veuillez vous assurer d'avoir mis en place le bootstrap de code de sortie, et vérifiez que votre boite 14 a toujours le nom adéquat.

Création du scribe hexadécimal

La création de ce mauvais oeuf est plutôt longue: vous devrez exécuter 10 codes ACE les uns après les autres. Heureusement, vous pouvez sauvegarder entre sans risque de corrompre votre sauvegarde. Chacun des codes ACE suivant va écrire 8 octets dans l'emplacement 19 de la boite 10, pour un total de 80 octets (l'emplacement entier). Veuillez vous assurer que l'emplacement 19 de votre boite 10 est vide avant de commencer. Notez que, à la différence de certains codes ACE, vous pouvez sans problème regarder votre boite 10 durant ce processus, cela ne va pas corrompre les données que vous êtes en train d'écrire.

CODE 1:

  • 4CUn…»Qn
  • ___F❛!n_
  • __lT…o__
  • _❜FQm___
  • 8R…o0SRn
  • ___VGRn_
  • __…FQm__
  • _rR…o___
  • hURn»FQm
  • ___rU?n_
  • __0U?n__
  • _VH?n___
  • ♀FQm____

CODE 2:

  • 4CUn_…Qn
  • ___dU…o_
  • __1F?n__
  • _…FQm___
  • LS…oUF?n
  • ___♀FQm_
  • __FR…o__
  • _xG?n___
  • ?G?n❜FQm
  • ___lR…o_
  • __cU?n__
  • _»FQm___
  • ___…____

CODE 3:

  • 4CUn…»!n
  • ___F❛Qn_
  • __zT…o__
  • _zF?n___
  • xG?n…FQm
  • ___7F?n_
  • __❜FQm__
  • _oR…o___
  • –FRn♀FQm
  • ___zU?n_
  • __zF?n__
  • _mF?n___
  • »FQm____

CODE 4:

  • 4CUnF»!n
  • ___F❛!n_
  • __dT…o__
  • _3U?n___
  • …FQmMS…o
  • ___WF?n_
  • __»FQm__
  • _zS…o___
  • ?T?n0T?n
  • ___JG?n_
  • __♀FQm__
  • _»R…o___
  • …H?n❜FQm

CODE 5:

  • 4CUnF»!n
  • ___…»!n_
  • __VH…o__
  • _…HRn___
  • ❜FQmzS…o
  • ___0T?n_
  • __FH?n__
  • _»FQm___
  • …R…o…FQm
  • ___pR…o_
  • __qFRn__
  • _♀FQm___
  • ___…____

CODE 6:

  • 4CUn?«!n
  • ___…»Qn_
  • __uT…o__
  • _2U?n___
  • 0U?n♀FQm
  • ___zF?n_
  • __xG?n__
  • _FI?n___
  • »FQm…R…o
  • ___❜FQm_
  • __VH?n__
  • _…HRn___
  • …FQm____

CODE 7:

  • 4CUn?«!n
  • ___F❛Qn_
  • __…H…o__
  • _FIRn___
  • …FQmMS…o
  • ___PF?n_
  • __♀FQm__
  • _0R…o___
  • ZFRn3GRn
  • ___❜FQm_
  • __pR…o__
  • _4FRn___
  • »FQm____

CODE 8:

  • 4CUnB«!n
  • ___❜S…o_
  • __3TRn__
  • _ZGRn___
  • ♀FQmzF?n
  • ___3G?n_
  • __»FQm__
  • _/R…o___
  • 4SRnCFRn
  • ___❜FQm_
  • __mS?n__
  • _0SRn___
  • …FQm____

CODE 9:

  • 4CUnh«!n
  • ___7F…o_
  • __3GRn__
  • _❜FQm___
  • /R…o4SRn
  • ___CFRn_
  • __…FQm__
  • _mR…o___
  • tF?n0F?n
  • ___»FQm_
  • __VF?n__
  • _♀FQm___
  • ___…____

CODE 10:

  • 4CUnV«!n
  • ___…»!n_
  • __lS…o__
  • _1T?n___
  • BG?n»FQm
  • ___mR…o_
  • __BG?n__
  • _♀FQm___
  • zT?nJG?n
  • ___…FQm_
  • __yT?n__
  • _❜FQm___
  • ___…____

Si vous avez entré ces codes correctement, votre emplacement 19 de la boite 10 devrait contenir un mauvais oeuf (et aucun autre emplacement ne devrait avoir été corrompu): il s'agit du scribe hexadécimal. Si c'est le cas, alors vous avez presque fini. Allez capturer n'importe quel Pokémon et appelez-le _F…o’’kl__. Déplacez-le sur l'emplacement juste après votre bootstrap de code de sortie. Maintenant, déplacez le scribe hexadécimal (le mauvais oeuf que vous venez de générer) dans l'emplacement 29 de la boite 14 et assurez-vous que l'emplacement 30 (le tout dernier emplacement) est vide. Notez que le bootstrap de code de sortie et le Pokémon juste après doivent toujours être placé au moins deux emplacements avant le scribe hexadécimal lorsque vous comptez l'utiliser. Lorsque vous ne souhaitez pas utiliser le scribe hexadécimal (si vous souhaitez exécuter un code ACE traditionnel à la place), déplacez-le simplement quelque part avant la dernière rangée de la boite 11 afin qu'il ne soit pas exécuté.

Tester votre scribe hexadécimal

Sauvegardez votre jeu et essayer de déclencher l'ACE avec le scribe hexadécimal dans l'emplacement 29 de la boite 14 (pas besoin de renommer vos boites, dans un premier nous ne nous occupons pas des données à écrire). Si le jeu ne crash pas et que des données (probablement interprétées comme un mauvais oeuf) ont été écrites dans l'emplacement juste avant le scribe hexadécimal, alors votre scribe hexadécimal est probablement fonctionnel. Dans le cas inverse, rechargez votre sauvegarde et référez vous à l'annexe.

Si vous souhaitez tester entièrement votre scribe hexadécimal, rechargez votre sauvegarde afin de vider l'emplacement 28 de la boite 14 et entrez les noms de boite suivants (cette fois, vous devez également renommer la boite 14):

  • 00000000
  • 00000000
  • BDDCD5E6
  • E0D9E7FF
  • FFFF0002
  • 00000000
  • 00000000
  • 01000000
  • 01000000
  • 00000000
  • 00000000
  • 00000000
  • 00000000
  • 00000000

L'emplacement 28 dans votre boite 14 devrait désormais contenir un Bulbizarre nommé Charles. Si ce n'est pas le cas, vérifiez les noms des boites, et si elles sont correctes alors référez vous à l'annexe. Si tout est bon, bravo, vous pouvez passer à la création de la table de craft.

Création de la table de craft

Dans cette section nous allons créer un autre mauvais oeuf qui sera utilisé en conjonction du scribe afin de mieux contrôler l'endroit où écrire les données. En effet, un problème du scribe que l'on vient de faire est que par défaut il écrit toujours au début de l'emplacement précédent, c-a-d du premier octet de l'emplacement au 56ème. Un emplacement faisant 80 octets, il n'est donc pas possible d'écrire de données dans les 24 derniers octets d'un emplacement. Le mauvais oeuf table de craft que nous allons créer va changer ce comportement: il définira une zone de 30 emplacements consécutifs (la zone de craft), commençant à l'emplacement suivant, telle que:

  • Le scribe écrira dans la première séquence de 56 octets vides à l'intérieur de la zone de craft. Ainsi, une première écriture aura lieu dans les 56 premiers octets du premier emplacement de la zone de craft, puis l'écriture suivante aura lieu de l'octets 57 du premier emplacement à l'octet 32 du second emplacement, etc.
  • Les données à l'intérieur de la zone de craft ne seront pas exécutées lorsque vous déclencherez un ACE (et ce même si cette zone se situe après la boite 12). Cela permet de stocker ce que vous voulez dans cette zone sans pour autant perturber l'exécution de vos codes ACE.

Afin de créer ce mauvais oeuf, entrez simplement ces noms de boite et exécutez l'ACE (assurez vous d'avoir votre scribe dans l'emplacement 29 de la boite 14, et rien dans le slot juste avant et juste après):

  • 46C08FE2
  • 0080A0E3
  • 08909CE7
  • 048088E2
  • 000000FF
  • 000059E3
  • 08C08C10
  • 20F04F12
  • 380058E3
  • 000000FF
  • 28F04F32
  • 02901FE5
  • 09F08FE0
  • 74090000

Un mauvais oeuf devrait être apparu dans l'emplacement 28 de la boite 14. Afin que la zone de craft soit active, vous devez placer ce mauvais oeuf n'importe où après votre bootstrap Thumb->ARM (en revanche pas besoin qu'il soit après votre bootstrap de code de sortie). Comme les 30 emplacements suivant ce mauvais oeuf seront ignorés lorsque vous déclencherez un ACE, vous devriez le positionner au moins 31 emplacements avant votre bootstrap de code de sortie afin que ce dernier soit toujours exécuté. Veuillez également enlever le Pokémon juste après le bootstrap de code de sortie, il n'est plus requis désormais et intereferait avec la table de craft (vous pouvez le relâcher). Nous recommandons de placer vos différents éléments comme suit (le positionnement de la table de craft est importante si vous comptez mettre en place l'éditeur hexadécimal par la suite):

BOITE 12:
-  -  -  -  -  -
A  -  C  +  +  +
+  +  +  +  +  +
+  +  +  +  +  +
+  +  +  +  +  +

BOITE 13:
+  +  +  +  +  +
+  +  +  -  -  -
-  -  -  -  -  -
-  -  -  -  -  -
-  -  -  -  -  -

BOITE 14:
S  -  -  -  -  -
-  -  -  -  -  -
-  -  -  -  -  -
-  -  -  -  -  -
-  -  -  -  H  -

-: Emplacement vide
A: Bootstrap Thumb->ARM
C: Mauvais oeuf table de craft
+: Zone de craft
S: Bootstrap de code de sortie
H: Mauvais oeuf scribe hexadécimal

Si vous souhaitez exécuter un code ACE traditionnel, vous devrez déplacer la table de craft (et le contenu qui était dans sa zone) quelque part avant la dernière rangée de la boite 11, tout comme le scribe hexadécimal. Si vous souhaitez éviter d'avoir à déplacer la table de craft et son contenu avant d'exécuter un code ACE (pour gagner du temps et de la place dans le PC), vous pouvez générer ce Pokémon (exécutez l'ACE avec ces noms de boite et en ayant la table de craft et le scribe hexadécimal comme ci-dessus):

  • 00B0A0E3
  • 01B09BE2
  • 40F08FE2
  • 00000000
  • 00000002
  • 00000000
  • 00000000
  • D00E0000
  • 00000000
  • 00000000
  • 00000000
  • 00000000
  • 00000000
  • 00000000

Vous devriez obtenir un Bulbizarre (pas Charles, un autre) dans l'emplacement juste après la table de craft. Déplacez le comme suis:

BOITE 12:
-  -  -  -  -  -
A  -  C  +  +  +
+  +  +  +  +  +
+  +  +  +  +  +
+  +  +  +  +  +

BOITE 13:
+  +  +  +  +  +
+  +  +  B  -  -
-  -  -  -  -  -
-  -  -  -  -  -
-  -  -  -  -  -

BOITE 14:
S  -  -  -  -  -
-  -  -  -  -  -
-  -  -  -  -  -
-  -  -  -  -  -
-  -  -  -  H  -

-: Emplacement vide
A: Bootstrap Thumb->ARM
C: Mauvais oeuf table de craft
+: Zone de craft
B: Bulbizarre
S: Bootstrap de code de sortie
H: Mauvais oeuf scribe hexadécimal

Désormais, vous pourrez exécuter des codes ACE traditionnels sans avoir à bouger la table de craft ni son contenu. Pensez tout de même à déplacer le scribe hexadécimal lorsque vous ne souhaitez pas vous en servir: vous pouvez par exemple le déplacer dans la zone de craft, comme ces emplacements ne sont pas exécutés par l'ACE.

Annexe: en cas d'erreur dans votre scribe hexadécimal

Referez-vous à cette section si, après avoir rentré les 10 codes de création du scribe hexadécimal, il ne fonctionne pas (il fait crasher le jeu, il n'écrit rien…).

Mettez votre scribe défecteux dans l'emplacement 19 de la boite 10. Assurez vous que votre boite 14 possède le nom adéquat pour fonctionner avec le bootstrap de code de sortie (si besoin, restaurez le bon nom). Prenez dans votre équipe votre $40ED, et assurez-vous d'avoir en seconde position de votre équipe un Pokémon non-glitché différent de Deoxys. Nous vous suggérons de sauvegarder maintenant. Puis, écrivez ces noms de boite:

  • x«Un…Fgm
  • ___,G?n_
  • __3GRn__
  • _…FQm___
  • 4CUnF«Qn
  • ___A…Bm_
  • ___0!n__
  • _»…hm___
  • 8M…o0NRn
  • ___/RRn_
  • __.FRn__
  • _/4Rm___
  • B♂Rm____

Ce code vous permettra de lire les données de l'emplacement 19 de la boite 10. Pour cela, procédez ainsi:

  1. Déclenchez l'ACE en regardant le résumé de votre $40ED.
  2. Regardez le résumé du second Pokémon de votre équipe. Son attaque et sa défense devraient avoir été modifiés en fonction de la valeur de 4 premiers octets de l'emplacement 19 de la boite 10. Comparez ces valeurs à celles de la table ci-dessous, et si ca ne correspond pas, souvenez-vous en.
  3. Revenez à l'étape 1 et répétez ce processus 19 fois, en vous souvenant toujours des itérations qui ne correspondent pas.

N. Attack: Defense:
1. 32906 57999
2. 3584 59576
3. 1026 58204
4. 49254 12879
5. 4105 59352
6. 4273 57937
7. 4112 12945
8. 45579 20609
9. 45056 17820
10. 1 58138
11. 45057 5324
12. 45056 5024
13. 7 58202
14. 40961 12938
15. 40960 9120
16. 36865 8841
17. 36865 57993
18. 126 58201
19. 61504 16975
20. 65296 57647

NOTE: Si vous avez manqué une étape et souhaitez recommencer à l'étape une, déplacez un Pokémon dans le dernier slot de la boite 14 puis remettez le à sa place (cela à pour effet d'effacer des données cachées de cet emplacement).

Une fois cela fait, nous vous recommandons de recharger votre sauvegarde. Maintenant, vous êtes en mesure de déterminer quelles parties de votre scribe hexadécimal sont défectueuses et quels codes parmi les 10 il va falloir refaire en conséquence. Pour chaque itérations N (entre 1 et 20) pour lesquels l'attaque ou la défense ne correspondait pas, vous devez réexécuter le code numéro (N-1)/2 + 1. Par exemple, si il s'agit des itérations 5 et 6, vous devez seulement réexécuter le code 3 (car (5-1)/2 + 1 = 3 et (6-1)/2 + 1 = 3 également).

Une fois cela fait, vous pouvez sauvegarder, remettre votre scribe hexadécimal dans le slot 29 de la boite 14, et le tester de nouveau (n'oubliez pas de remettre le Pokémon adéquat à coté du bootstrap de code de sortie, si jamais vous l'aviez enlevé).


Page Précédente : Arbitrary Code Execution
Page suivante : Glitches 4G