Swift でファミコンの CPU エミュレータを作った
[前回]({{ref . “swiftneskit_v002.md” }})ファミコンソフトの逆アセンブラの記事を書きました。
その続きとしてファミコンのCPUのエミュレータを作りました。
homebrew でインストールできるようになっています。
$ brew tap takuyaohashi/SwiftNesKit https://github.com/takuyaohashi/SwiftNesKit
$ brew install SwiftNesKit
$ nes-cpu sample.nes
nes-cpu
コマンドを実行するとリセットベクタにあるアドレスに飛んで、入力を受け付けるようになります。今は下記の3つのコマンドを使うことができます。短縮コマンドも対応しているので、ステップ実行するときはs
でもstep
でもいいようになっています。
コマンド | 意味 |
---|---|
s or step | ステップ実行 |
r or reg | レジスタダンプ |
q or quit | 終了 |
一応全部の命令セットを実装したつもりなんですけど、まだNES研究室のサンプルくらいしか動かしたことないのでバグってる可能性もあります。
ちゃんとテストを書いたほうがいいんですけど、まだそこまで手を付けられてません。
リポジトリはgithubにあります。興味ある人は見てみてください。
次はPPU(Picture Processing Unit)
と呼ばれる画像を処理する部分を作っていきます。これができるとファミコンの画面を出力することができます。
Read other posts