Criando um emulador em JS e integrando com múltiplas UIs
(taniarascia.com)-
Implementação em JS do interpretador Chip-8, usado em máquinas de 8 bits dos anos 1970
-
Integração com web/CLI/apps nativos
-
Na prática é um interpretador, mas como se aproxima de um emulador, é adequado para quem quer aprender a criar emuladores.
-
Declara variáveis para Memory (4 KB), Program Counter, Register, Index Register, Stack, Stack Pointer, Timer etc.
Monta a CPU e implementa um teclado HEX 4x4 e um display 64x32
-
O código JavaScript pode ser executado em vários ambientes nativos usando bindings do Raylib para Node.js
3 comentários
Por ser uma arquitetura de 8 bits, o código não é complicado, então é bem divertido de ler.
O trecho abaixo me impressionou.
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
}
}
Eu achei que a pilha de 16 bytes fosse pequena demais, mas como a memória é de 4k, parece que dá para ser assim mesmo.
Ah~ 16 palavras, 16 palavras