JSでエミュレータを作り、マルチUIと連携する
(taniarascia.com)-
1970年代の8ビットマシンで使われていた Chip-8 インタープリタを JS で実装
-
Web / CLI / ネイティブアプリと連携
-
実際にはインタープリタだが、エミュレータに近いため、エミュレータの作り方を学びたい人に適している。
-
Memory(4KB)、Program Counter、Register、Index Register、Stack、Stack Pointer、Timer などを変数として宣言
CPU を構成し、4x4 の HEX キーボードと 64x32 ディスプレイを実装
-
JavaScript コードで Raylib の Node.js バインディングを利用し、さまざまなネイティブ環境で実行可能
3件のコメント
8ビット構造なのでコードは複雑ではなく、かなり読んでいて面白いです。
下のコードが印象的でした。
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
}
}
スタックが16バイトでは小さすぎると思っていましたが、メモリが4KBなので可能そうですね。
あ〜16ワード、ワード16個