だいぶ前から細々とファミコンエミュレータを作っていてそれなりに動くようになっているんだけど、ここらで処理をメモっておく。 特にBG(背景)の処理に関しては結構トリッキーで、実装に戸惑ったことを書いてみる。 画面表示の処理方法ファミコンのハードは(オーディオとかはひとまず置いておくとして)大まかにCPUという命令を処理する部分と、PPUという画像を処理する部分があって、これらを実装すれば絵が出るようになる。 エミュレータがインタラクティブに動くようにするためには、経過時間を測ってそれに対応するクロック数だけCPUとPPUを動かしてやればよい。 自作エミュレータの処理的にはCPUはクロックに従って動かすけど、PPUはそういうことはしてない。 エミュレート側で画面表示を行うタイミングでPPUのレジスタやVRAMの内容から画面を構築して表示している。 実際にはファミコンでは表示期間中は固定の内容が