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/ |