UNE BELLE LEÇON D’ARCHITECTURE LOGICIELLE
Une belle leçon d’architecture logicielle
MAIS QU'EST-CE DONC ?
Cultissime même !



WTF ?!?!





LE MAGICIEN
La bio express



LES OUTILS
Le top de l'époque







Créé pour l'occasion

Pour certaines animations

Pour inventer tout un monde


ENTRONS DANS LE VIF DU SUJET
Mais très efficace











LA PIERRE ANGULAIRE
La pierre angulaire

Sept types différents
1 index, 13 banques, 146 ressources

Dans le fichier MEMLIST.BIN






En bref ...
Son fonctionnement







Quelques détails techniques

Quelques détails techniques

Tout le monde aime les stats

LE COEUR DU RÉACTEUR
Le cœur du réacteur

En bref
Architecture de type Harvard
Stockage des données en big-endian
64 threads, 256 registres, 1 pile
Multithreading coopératif
5 groupes d'instructions
29 instructions de base
219 opcodes
À la loupe

Le cerveau de la VM

La mémoire de travail

En bref
Chaque instruction a un/plusieurs opcode(s)
Chaque opcode est codé sur un octet
Chaque instruction/opcode peut avoir des paramètres
Le jeu d'instruction n'est pas orthogonal
Cinq groupes d'instructions
Les vingt-neuf instructions

Charger et stocker des valeurs
Calculer et manipuler les bits
Gérer les branchements de code
Les sauts conditionnels

Gérer les fils d'exécution
Exploiter les resources
Dessiner des polygones avec contrôle

Dessiner des polygones simplement

AFFICHER LE JEU
Afficher le jeu

Quatre pages et double buffering


Une hiérarchie de polygones

Dessiner les polygones









Pipeline de rendu
Les scènes sont rendues de l'arrière vers l'avant
Les scènes rendues sont mises en cache
Le cache est utilisé pour afficher les scènes
Les objets sont ensuite rendus
L'algorithme du peintre
Mise en cache et rendu global
Colorer le monde
Chaque niveau dispose d'un groupe de palettes
Chaque groupe contient deux sous-groupes de palettes
・・・
🢂 32 palettes de 16 couleurs
RGB444 (12 bits)
🢂 32 palettes de 16 couleurs
index + RGB444 (4 bits + 12 bits)
Colorer le monde


En images





Un trick simple et efficace
Si couleur(polygone) == 16
Alors couleur(pixel) = couleur(pixel) | 8
En images





Un autre trick simple et efficace
Si couleur(polygone) > 16
Alors couleur(pixel) = couleur(pixel[page_source])
En images





AMBIANCER LE JEU
Ambiancer le jeu

Quatre canaux PCM 8-bits

L'ambiance sonore






Les génériques
Utilisation d'un tracker
PILOTER LE JEU
Piloter le jeu

Interagir avec la VM



LA BIG PICTURE
Et assez audacieuse pour l'époque !

Il y a beaucoup à découvrir

EN VRAI
MON IMPLÉMENTATION C++, SDL ET WASM
POUR ALLER PLUS LOIN
Another World

Rewrite Of Another World

The Polygons Of Another World

Another World Bytecode Interpreter

Another World Suite

Another World Interpreter

Another World In Your Browser

UN PEU DE PERSONAL BRANDING
Retrouvez-moi sur les réseaux
![]() |
||
| @ponceto91 | emaxilde.net | |
| @ponceto91 | github.com/ponceto/ | |
| @ponceto91 | gitlab.com/ponceto/ | |
| @ponceto91 | bitbucket.org/ponceto/ |
