e-tipsmemo

ごった煮

NES Emulator in Rust : 0

以前ファミコンのエミュを書きたいといってROMを読んだ記事を書いた。
e-tipsmemo.hatenablog.com

コミットログを見ると始めてから2か月というところで、
giko00x.nesが動かないが、Donky kongがバグりつつ動いてくれたりと躓いているので。
かわりに雑記を書いていく。
ピーチが欠けている。スプライトが透過していない。など。
f:id:katakanan:20210809220204p:plain:w400

方針

ファミコンエミュレータを製作するとはいっても、すでに多くの人たちが、多くの言語で実装を行っており、
NES emulator [言語]で調べると、日本語・英語で豊富な情報が得られる。
それらの実装ではほとんどが、クロックサイクルを内部でカウントし、実機のものと同じサイクルになったら処理を実行するといったものが多い。

しかし今回は、あるサイトを参考に別の方針でいくことにした。
I made a NES emulator in Rust using generators | ~kylewlacy
ファミコンのRust実装もいくつか見つけたが、
その中でも、このサイトではGeneratorというnightly機能を使用することによって、
タイミングを合わせることが非常に簡単である。(と書いてある)
generators - The Rust Unstable Book

そして、どのNESエミュレータRom読み込み、CPU実装から始まり、
nestestのCPUテストをクリアしてppuへ。。といった手順を踏んでいる。