GitHub - naari3/emu6502: Implementation 6502 emulator in Rust for hobby
6502のエミュ実装したhttps://t.co/NvQYHK8lgm
— 名有り (@naari_) 2021年2月21日
ちゃんとフィボナッチ数を計算してくれてよかった pic.twitter.com/wp1Y02cUNA
完全な状態かというと全くそうではなく、ただ単にここに書いてある情報を実装した*1。
ファミコンのエミュというわけでもないので達成しなければならない要件はとてもシンプルで、そのため難易度は全然高くなく、全体を通してとてもすんなりと通った。
言うことのないレベルでシンプルだったが、現状使ったことのなかった割り込み処理の鱗片*2が見れたこと、各PSの正しい使われ方、ほか詳細な動きを知ることができたところだった。
今回は実装のための言語としてなんとなくRustを使用したが、
くらいの恩恵を受けられた。あまりRustらしい使い方が出来たかというと正直微妙なところがある。
CPUみたいな名前のtraitを用意すれば、各所でimplを作ることで「コントローラーを受け付けるような特殊IOを用意したCPUを実装」、みたいなのもやりやすくなるんだろうなと妄想した。
実装として、
- あまり処理の棲み分けが出来ていない
- CPU structとInstructionの実装を行き来しているなど
- 共通化がちょっと微妙っぽい
- &mut selfが多すぎる
- そんなものなんでしょうか
などが上げられる気がする もっと綺麗にできそう