デバッグ
なんかバグがとれないんですよねー!デバッグがやたら困難です。
マリオが宇宙空間を漂っているかのように、ゆーっくり落ちてくるようになってしまいました。
フラグ操作除去の最適化をOFFにしたら直ったので、この最適化の処理にバグがあるみたいです。
おおざっぱなバグの原因をつかむだけに昨日の夜の時間を潰してしまいました。
もっと簡単にデバッグできる仕組みが必要な感じです。
リコンパイルしたコードにデバッグ出力としてレジスタ変化をログ出力するコードを埋め込んだりするのはできそうです。
でもフラグレジスタは最適化によって、エミュレータで実行したときとは違う状態になったりするので、単純にログを比較したりするのは難しいかもです。
それと、6502の1命令分の変換コードごとにログ出力のメソッドを埋め込むのと、まともな速度で動かなくなりそうです。
ログファイルになるべく高速に書き込むにはどうすればいいのでしょうか。
この場合、確実にログに書かれることが保証されてなくても別にいいわけです。
例外が発生したとか、電源が落ちたとかで、ログが無くなったりしても、デバッグ用でしかないので、出力が速ければそれでいいわけです。
メモリ中に大きめにバッファリングして、ある程度まとまった単位でファイルに書いた方がなんとなく速そうな気がします。そういう機能は.netにありそうなもんなので調べてみます。