- Artiste: Ben Fry
- Lien: http://acg.media.mit.edu/people/fry/mariosoup/
Mariosoup est une collection des « briques » de 8 x 8 pixels qui composent les figures de divers jeux vidéos classiques : Super Mario Bros., « Galaga », « Bump n’ Jump », Joust, « Punch-Out », « Burger Time », etc. On appelle souvent ces jeux vidéos des jeux à « 8-bit » (1 octet), car les consoles de l’époque étaient programmés laplupart du temps avec de tout petits chiffres qui ne comptait que jusqu’à 256 (cf. bitmask) pour des raisons d’économie d’espace (cf. spatialisation) et de vitesse de traitement (le jeu doit aller vite). Mais en réalité, beaucoup de jeux vidéos de cette époque étaient encore plus économes, et n’utilisaient que 2 « bit », c’est-à-dire 4 couleurs, pour représenter les figures. « 2-bit » signifie que les combinaisons ne pouvaient être que « 00 », « 01 », « 10 », ou « 11 » (pour la machine), c’est-à-dire « 0 », « 1 », « 2 », ou « 3 » (pour nous). Mariosoup associe une couleur à chacun de ces « bit » — le rouge et le bleu — et mélange l’ensemble pour composer des images à quatre couleurs (0 = blanc, 1 = bleu, 2 = rouge, 3 = violet).
Il est important de comprendre que ces couleurs ne corréspondent pas aux couleurs de la représentation finale des figures. Elles sont uniquement diagrammatiques de la façon dont la machine transforme un ensemble d’interrupteurs (cf. bitmask) en des valeurs fonctionelles. On pourrait même parler d’une image intermédiaire ou transitionnelle entre les codes sources du programme et le résultat figurative sur l’écran. Entre les « instructions » de la machine et la mimésis finale du produit, voici une image intermédiare.
Cette image a été construite pour une installation appelée « Visually Deconstructing Code » et a été exposé lors de l’exposition CODE, The Language of Our Time. Dans le catalogue de l’exposition, Benjamin Fry explique le rôle de Mariosoup dans sa tentative de rendre visible les relations entre le code et son usage :
Any piece of executable code is also commingled with data, ranging from simple sentences of text for error messages to entire sets of graphics for the application. In older cartridge-based console games, the images for each of the small on-screen images (the « sprites ») were often stored as raw data embedded after the actual program’s instructions. [This piece] examines the unpacking of a Nintendo game cartidge, decoding the program as a four-color image, revealing a beautiful soup of the thousands of individual elements that make up the game screen.
–; CODE: The Language of Our Time ; pp. 195 Benjamin Fry
Il est intéressant de noter ici, comme le fait Benjamin Fry, qu’il existe dans la programmation des endroits « bruts », demi-codés, c’est-à-dire incompréhensibles comme « instructions » pour la machine, mais compréhensibles pour les instructions de la machine. C’est du numérique non-structuré algorithmiquement, ou structuré de mannière figurative. On appelle cela communément des données, mais il est important d’insister qu’au début de la programmation des jeux vidéos, ce code était inséré directemment dans les « sources » du programme. Ce qui permettait au programmeur ou à la programmeuse non seulement d’accéder à ces données, mais de les orienter et de les agencer de sorte qu’elles soient structurantes pour les images générées par le code. Car dans certains cas, ces données pouvait à leur tour générer de nouvelles figures, comme dans le cas des « maps », c’est-à-dire des données brutes qui orientent d’autres données brutes. C’est l’introduction des logiques d’abstraction et de récursion : la donnée peut être une « brique » pour composer un mur, mais elle peut également être le « patron » (« map ») qui instruit la construction de ce même mur.
On voit les prémices d’une telle structuration des données dans le tableau du jeu « Dr. Mario » :
Dans ce tableau de valeurs on voit des centaines de petits sous-tableaux, mais qui peuvent — comme dans le cas de l’arbre — être associés ensemble pour construire un plus grand tableau. Il y a là une illustration de la récursivité potentielle des données : celles-ci peuvent être des composants de composants plus importants.