Lexique des tricheurs
Petit lexique pour comprendre le jargon des tricheurs et hackers de jeux vidéo.
L'informatique est née des mathématiques, c'est pourquoi dès que nous touchons aux entrailles d'une machine, certaines notions sont indispensables à la compréhension du système. Les consoles de jeu font partie de ces machines. Et pour tricher, il faut mettre les mains dedans, si je puis dire. Alors voici un rapide tour des notions qu'il vous faudra connaître si vous souhaitez apprendre à tricher, voire hacker, des jeux.
```
Lorsque nous trichons, nous sommes forcément confrontés un jour ou l'autre à l'hexadécimal. D'ailleurs, vous rencontrerez ça dès lors que vous chercherez des codes pour vos Action Replay en tout genre. L'hexadécimal nous sert aussi à comprendre, lire et modifier les sauvegardes des jeux, et les jeux eux-mêmes.
Base et Modulo
En primaire, vous apprenez tous la notion d'unité, et simultanément de dizaine, centaine et millier. C'est le chiffre le plus à droite d'un nombre lorsqu'on écrit de gauche à droite. Une base) définie le nombre de valeurs qui peut être utilisées dans les unités d'un nombre. Nous comptons régulièrement en base 10, autrement dit en décimal. Cela signifie que lorsque j'écrirais les unités d'un nombre, je n'aurai le choix qu'entre 10 valeurs, que vous connaissez tous : les chiffres arabes, qui vont de 0 à 9. Ces valeurs sont obligatoirement ordonnées. Lorsque nous sommes à la valeur maximale pour les unités et que nous souhaitons continuer de compter, nous devons ajouter 1 aux dizaines. Si on reprend le décimal, après 9, j'ai 10, puisque 9 équivaut à 09 et 1 + 0 = 1. Et pour les unités ? Eh bien nous n'avons pas plus grand, alors il faut repartir de 0. C'est là que l'opérateur modulo) intervient, ce terme résume en fait le retour à la valeur initiale de la base. L'opérateur modulo, souvent représenté par % ou MOD, vous donne le reste de la division euclidienne d'un nombre par une base donnée. Si vous divisez 13 par 10, le quotient sera 1 (il y a 1 fois 10 dans 13), et le reste sera 3 (il faut ajouter 3 à 1 × 10 pour avoir 13). Donc 13 % 10 = 3. Pourquoi vous parler de cet opérateur ? Parce que les machines standards ne peuvent pas compter jusqu'à l'infini. Lorsque vous atteignez le maximum, si vous continuez, soit la machine plante, soit elle repart de zéro. C'est aussi pour cette raison que dans certains jeux mal programmés, lorsque vous atteignez le score maximal, vous revenez à zéro.Décimal
C'est la base 10, la numérotation de notre vie de tous les jours. Les chiffres vont de 0 à 9. Vous connaissez sûrement déjà très bien. Vaut-il la peine que je m'attarde dessus ?Binaire
C'est la base 2, la base de l'informatique. Les chiffres sont 0 et 1. Une valeur en binaire est couramment précédée de la notation 0b. Le vrai et le faux, l'allumé et l'éteint, ou tout autre sorte d'opposés absolus. Les processeurs des premiers ordinateurs étaient en fait composés d'ampoules. ``` Ampoule éteinte = 0 Ampoule allumé = 1 ``` Connaître le binaire vous sera utile, par exemple, lorsque vous manipulerez des drapeaux. Pour presque tout le reste, vous devrez penser à l'hexadécimal.Hexadécimal
C'est la base 16, la plus utilisée dans les outils électroniques, notamment les consoles. Les chiffres vont de 0 à 9, suivi de A, B, C, D, E et F. Une valeur en hexadécimal est couramment précédée des notations 0x ou $. Tout peut être représenté par l'hexadécimal. Des valeurs numériques, dans un premier temps, mais aussi des lettres selon les encodages normalisés, des couleurs, et plein d'autres choses que vous découvrirez avec l'expérience. ```jsx| Décimal : | |
| Binaire : | |
| Hexadécimal : |
Mémoire vive
La mémoire vive, ou RAM, est le système de stockage des données dynamiques. Par exemple, l'affichage à l'écran passe par la RAM, ainsi que vos Pokémon, vos objets, le lieu où vous vous trouvez, ou encore le temps de jeu. Pour vous donner une représentation plus simple de la RAM, imaginez que la RAM est une très longue rue, dont les adresses commencent au numéro 0, où habitent des valeurs que l'on peut appeler des familles. Les valeurs sont stockées dans ce qu'on appelle des octets, que l'on représentera par des maisons. Et chacun de ces octets a une adresse. Un octet peut contenir une valeur comprise entre 0 et 255, ce qui donne de 00 à FF en hexadécimal, comme si chaque maison pouvait contenir jusqu'à 255 habitants. Les valeurs plus grandes que 255 sont stockées sur plusieurs octets. Un octet est une somme de valeurs binaires, aussi nommées bits. C'est ici que la notion de drapeau prend son sens, puisqu'un drapeau peut être stocké sur un ou plusieurs bits. Une valeur sur 4 octets est appelée un mot (ou word). Une valeur sur 2 octets est appelée un demi-mot (ou halfword).Adresse relative
Vous trouverez ce mot plus souvent que d'autres, sous sa traduction anglaise Offset. Un Offset définit une adresse dont on doit se servir comme point de départ pour en calculer d'autres. C'est-à-dire que si nous cherchons une adresse à partir d'un Offset, il faudra réaliser le calcul suivant pour trouver l'adresse réelle (ou absolue) :adresse absolue = adresse + Offset.
Boutisme
Le boutisme, plus connu sous le nom d'Endianness, est ce qui définie l'ordre de lecture des octets. Le boutisme dépend du processeur, mais certains systèmes forcent le boutisme, notamment pour la compression de données. Dans notre cas, il faut retenir deux boutismes : le gros-boutisme et le petit-boutisme. Le gros-boutisme n'est pas courant, mais il arrive de le rencontrer dans des données particulières. La lecture des octets d'une valeur se fait de gauche à droite, comme nous lisons un livre ou un nombre. Si, par exemple, la valeur0x0428AE1F est stockée en dur dans le programme d'un jeu, alors quand on ouvrira le jeu dans un éditeur hexadécimal, les octets s'afficheront comme suit : 04 28 AE 1F.
Le petit-boutisme quant à lui est bien plus courant. La RAM a la plupart du temps une architecture petit-boutiste. C'est-à-dire que la lecture des octets se fait de droite à gauche. Quand on recherche des données dans la RAM, avec un outil de suivi de celle-ci, les valeurs numériques, et parfois d'autres, s'affichent ainsi. Reprenons la valeur 0x0428AE1F. Lorsque vous lirez cette valeur, les octets seront alors dans l'ordre suivant : 1F AE 28 04. C'est un peu difficile à interpréter au début, mais avec le temps, vous devriez vous habituer.
Drapeau(anglais)
Un drapeau, ou plutôt un flag, est une variable qui est contrôlée régulièrement avant l'exécution d'actions. C'est utile dans le cas des événements in-game, comme la rencontre d'un légendaire ou les combats contre les dresseurs. Pour éviter de pouvoir recommencer indéfiniment ces événements, la valeur du flag est modifiée une fois l'événement terminé. Comme dit plus haut, c'est souvent stocké sur un bit. Un octet peut contenir jusqu'à 8 flags. Notez que l'ordre de lecture des bits est de droite à gauche. Si je dis le 1er bit, je parle de celui le plus à droite. Un octet peut être représenté en hexadécimal, mais aussi en binaire. Voici un exemple : `0x46 = 0b01000110` Disons que 0 veut dire que vous n'avez pas battu un dresseur, et 1 que vous l'avez battu. Vous allez combattre un dresseur quelconque. Dans la RAM, le flag du combat est le 4ème bit de l'octet dont la valeur est 0x46. Le jeu va vérifier que le flag ne soit pas à 1.0b01000110. Le flag est à 0, je n'ai pas battu ce dresseur, le jeu m'autorise à le combattre. Je l'ai battu. Juste après la fin du combat, le jeu va modifier le flag pour le passer à 1. J'aurai donc 0b01001110. Maintenant, si je réessaye de combattre le dresseur, le jeu refusera.
Des événements sur plusieurs étapes seront stockés sur plusieurs bits. Pour un événement en 3 étapes, le flag utilisera deux bits avec les possibilités suivantes : 0b00, 0b01, 0b10 et 0b11.

