En 1985, le game designer japonais Shigeru Miyamoto crée Super Mario Bros. Développé sur la Nintendo Entertainment System (abrégée NES) le jeu iconique s’est vendu à plus de 40 millions d’exemplaires au cours de ses 30 premières années de distribution. Ce n’est qu’à partir de 2006, à la sortie du jeu Wii Sports, que le plombier aux bretelles perd son statut de meilleur vente de tous les temps. Super Mario Bros est aussi réputé pour avoir mis fin au krach du jeu vidéo de 1983.
La taille mémoire du jeu est d’exactement 31 ko (soit presque 3 fois moins que la taille de la vignette de l’article). Cette taille mémoire peut se comprendre pour les consoles de l’époque (dont les cartouches étaient limitées à 32 ko). Le titre est pourtant consistant : il est découpé en 8 mondes de 4 niveaux chacun pour un total de 32 niveaux de jeu.
Mais alors comment Super Mario Bros fait seulement 31 ko ?
Tout d’abord, il faut savoir que ce qui prend le plus de place dans un jeu vidéo sont les ressources multimédia (appelées assets). Le code informatique ne représente qu’une partie négligeable de la mémoire par rapport aux images, aux musiques et aux modèles 3D puisqu’il est très souvent compilé en langage machine.
Ensuite, les concepteurs ont eu recours à plusieurs procédés ingénieux encore utilisés aujourd’hui.
Le Tile Mapping
Super Mario Bros est constitué de tuiles (ou tiles en anglais).
La NES permet de charger uniquement des images de taille 8×8 (8 pixels de longueur et 8 pixels de largeur) ou de taille 8×16.
De ce fait, la plupart des tuiles du jeu sont composées de 4 images 8×8. Une tuile faisant ainsi 16×16 pixels.
On estime que le niveau 1-1 de Super Mario Bros est composé de 212 tuiles de longueur et 14 tuiles de hauteurs. Cela représente (212 x 14 =) 2968 tuiles soit (2968 x 4 =) 11872 images 8×8 pour dessiner 1 seul niveau.
Même avec des images 8×8, on a vite fait de remplir la mémoire d’une cartouche de jeu. C’est là qu’intervient le Tile Mapping.

Le Tile Mapping est une méthode qui établit la correspondance entre les tuiles et leurs positions dans un niveau. Ce principe peut être établi techniquement par un tableau à deux dimensions de nombres entiers, ou par une image (où chaque pixel coloré correspond à une tuile). Ainsi, chaque case d’un niveau est associé à une tuile.
Combiné avec un Tile Set qui regroupe le jeu de tuiles uniques d’un environnement, ces techniques permettent de concevoir un niveau de jeu entier avec seulement quelques images.
Ainsi, il est possible de charger une tuile qu’une seule fois en mémoire, mais de pouvoir l’afficher plusieurs fois.

Le but est de réutiliser les tuiles déjà existantes pour dessiner un niveau plutôt que de charger autant d’images que le niveau a de cases.
D’autres façons de réutiliser les assets
Si vous êtes observateur, vous avez probablement remarqué que les nuages et les buissons de Super Mario Bros se ressemblent fortement. En fait, ces éléments du décor ont exactement la même texture. Les programmeurs ont simplement appliqué un filtre, changeant ainsi la palette de couleur de l’image, pour les différencier.

À la manière du Tile Mapping, les pixels d’une certaine couleur changent selon la correspondance établit.
Le jeu réutilise aussi les mêmes tuiles pour former des éléments de décors différents. C’est le cas pour les nuages allongés et le château de Bowser.
Ce principe ne se limite pas qu’aux images. Le son utilisé lorsque Mario rétrécie après s’être fait toucher par un ennemi est également le même que celui émis lorsqu’il descend un tuyau. (Avez-vous été convaincu par cette illusion auditive ?)
En plus d’économiser la mémoire et de conserver une cohérence artistique, ce procédé permet aussi aux concepteurs de réduire le temps de production. En effet, il est inutile de créer beaucoup de ressources, il suffit de bien savoir les réutiliser.
Et pour la petite histoire, ce n’est que 20 ans après la sortie du jeu que le grand public a remarqué la supercherie des buissons-nuages !
Conclusion
Nous savons que l’essentiel de la mémoire d’un jeu est composé par ses assets.
Pour la partie graphique, un jeu optimisé charge en mémoire qu’une seule fois une texture, mais il est capable de la dessiner plusieurs fois.
Pour certains ennemis ou éléments du décor, les concepteurs réutilisent la même image et filtrent la couleur.
Ces subterfuges peuvent être réalisés par un Tile Mapping.
Bonjour, effectivement on peu aussi utiliser le fameux terme « Swap color » qui est énormément utiliser également dans les RPG d’époque sur les même monstres avec la seul différence qui change comme le design et les stat qui change, en gros quelques octets en plus à peine, on peu donc avoir un gros bestiaire avec ce détail, dans la plupard des jeux NES et autres consoles, l’arrière plan reste le même au final, quelques légère subtilité ajouter en quelques pixels qui prennet presque rien en capacité de stokage, vu que ça se répète
Le jeu Antartic Adventure qui est un jeu en pseudo 3D est une simple image qui bouge et les décors reste le même sur la trame qui défile, le jeu pèse que 12000 octets (12 ko) par exemple, je comprenais pas au début pourquoi le jeu pèse quedals au final.
Les musiques au format midi se joue sur quelques ko de mémoire, 2 ou trois notes musicals suffisent pour en faire une OST de plusieurs minutes.
En tout cas très bonne explication avec le contre exemple de Super Mario Bros
Bonsoir,
Ton article est très intéressant ! Justement je m’étais posé cette question pour ce type de jeu un jour). Un grand merci !
des buissons nuages :/