6502のエミュを実装した

GitHub - naari3/emu6502: Implementation 6502 emulator in Rust for hobby

完全な状態かというと全くそうではなく、ただ単にここに書いてある情報を実装した*1

ファミコンのエミュというわけでもないので達成しなければならない要件はとてもシンプルで、そのため難易度は全然高くなく、全体を通してとてもすんなりと通った。

言うことのないレベルでシンプルだったが、現状使ったことのなかった割り込み処理の鱗片*2が見れたこと、各PSの正しい使われ方、ほか詳細な動きを知ることができたところだった。

今回は実装のための言語としてなんとなくRustを使用したが、

  • パターンマッチがかなりおいしかった(コンパイルエラーになってくれるのは精神衛生上良かった)
  • 静的コンパイラの推論がすごくよかった
  • 再束縛が良かった

くらいの恩恵を受けられた。あまりRustらしい使い方が出来たかというと正直微妙なところがある。

CPUみたいな名前のtraitを用意すれば、各所でimplを作ることで「コントローラーを受け付けるような特殊IOを用意したCPUを実装」、みたいなのもやりやすくなるんだろうなと妄想した。

実装として、

  • あまり処理の棲み分けが出来ていない
    • CPU structとInstructionの実装を行き来しているなど
  • 通化がちょっと微妙っぽい
  • &mut selfが多すぎる
    • そんなものなんでしょうか

などが上げられる気がする もっと綺麗にできそう

*1:BRKとResetの情報は他のサイトを確認したがどこだったかわすれました

*2:BRK, RTI