Créer un émulateur en JS et l’interfacer avec plusieurs UI
(taniarascia.com)-
Implémentation en JS de l’interpréteur Chip-8 utilisé sur les machines 8 bits des années 1970
-
Intégration avec le web / la CLI / des applications natives
-
En pratique, c’est un interpréteur, mais comme il se rapproche d’un émulateur, il convient à celles et ceux qui veulent apprendre à créer un émulateur.
-
Déclaration sous forme de variables de la mémoire (4 KB), du compteur ordinal, des registres, du registre d’index, de la pile, du pointeur de pile, des timers, etc.
Construction du CPU, puis implémentation d’un clavier HEX 4x4 et d’un affichage 64x32
-
Exécutable dans divers environnements natifs via les bindings Node.js de Raylib à partir de code JavaScript
3 commentaires
Comme il s’agit d’une architecture 8 bits, le code n’est pas très complexe, donc c’est assez agréable à lire.
Le code ci-dessous m’a particulièrement marqué.
class CPU {
constructor() {
this.memory = new Uint8Array(4096)
this.registers = new Uint8Array(16)
this.stack = new Uint16Array(16)
this.ST = 0
this.DT = 0
this.I = 0
this.SP = -1
this.PC = 0x200
}
}
Je trouvais que la pile de 16 octets était beaucoup trop petite, mais comme la mémoire ne fait que 4k, ça semble possible.
Ah~ 16 mots, 16 mots