Toute la logique du jeu Another World est écrite dans un langage que Eric Chahi a développé pour l'occasion (une sorte d'assembleur avec quelques instructions de haut-niveau pour les sprites et le son).
Pour exécuter les scripts du jeu, il suffit donc d'écrire une machine virtuelle capable d'exécuter les scripts du jeu. Cela a l'avantage de faciliter le portage du jeu puisqu'une fois cette partie écrite, le jeu tourne directement.
Concernant la version Jaguar, j'ai écrit 3 versions différentes du coeur de la machine virtuelle : un interprète en C, un interprète en ASM et un compilateur just-in-time en ASM. J'ai fait ça essentiellement pour me faire plaisir car la version C aurait très bien pu convenir, étant entendu que les routines critiques (c'est-à-dire tout ce qui concerne l'affichage ou le son) sont écrites en assembleur RISC et utilisent en bonne partie le hard de la Jaguar. En fait, la différence de vitesse se voit lorsque l'on met le jeu en mode speed-run (c'est assez visible dans les grottes quand les rochers tombent sur le joueur).
Pour prendre un exemple concret, dans le jeu d'instruction du langage développé par Eric Chahi, il y a par exemple une opération d'addition immédiate: ADDI #n, R[i] (la machine dispose de 256 registres de R[0] à R[255]) qui ajoute n au registre R[i].
Un interprète va simplement faire quelque chose comme (en gros à la louche)
uint8_t *opcode;
while(true) {
switch(*opcode++) {
case ADDI: {
int imm = *opcode++;
int regno = *opcode++;
R[regno] += imm;
break;
}
case ... : { ... } }
}
Le JIT va fonctionner de manière un peu différente, il va d'abord compiler petit à petit le script en langage machine de la machine cible (en l'occurence ici du code exécutable par un 68000) puis va sauter sur le code ainsi généré. Je ne rentre pas plus dans les détails. Il y a surement plein d'endroit où l'on peut se documenter si on le souhaite et ça sera surement mieux expliqué qu'ici à l'arrache

Voilà, voilà.
Pour info, la machine virtuelle qui tourne dans la version produite sur cartouche repose sur le compilateur just-in-time.