IRQ問題は解消したけれど

ずーっと前に,誰だったかに「ファミコンAIRがどこそこのエミュレータで動かないから修正しる!」って英語でメールもらってたんだけど,当時は俺が悪いのかエミュレータが悪いのか自分には判断がつかないし,実機で試す時間も機材もなかったので,そのままになってました.
でも,今回,NintendulatorとかNestopiaで動くようになったら実機で動かせたっていう報告があるんで,やっぱりエミュレータのが正しかったんだなぁという判断で修正をしてるんですが,どうにも原因がわからなかったと.


で,上に書いたメールを必死に探してみたわけです._oldとかいうディレクトリの中に入ったBeckyディレクトリの中にメールデータありましたよ.しかもアカウントいっぱいあるから探すのに時間かかったよ.
そしたらちゃんと書いてあった.

Audio frame IRQs need to be turned off (by doing "LDA #$40 | STA $4017")
before interrupts are enabled (via "CLI").

しかも,Nintendulatorの作者からのメールだった.記憶曖昧すぎだなー俺.まあ2004年のことなので….
というわけで$4017に書いたらすぐに動きました.
タイミングがズレまくってて画面は依然としてぶっ壊れてるけど,IRQ起きっぱなしはなくなった.
てか$4017って何なのよ…っていうか,手元にある「手元にあっちゃまずい資料」には,Write Registerだとすら書いてないよ….
別の「手元にあっちゃまずい資料」(上のよりも後で手に入れた)には,それっぽいことが書かれていた.
…ちゃんとこっちも読めばよかったわけですね.


ってことで,残るはIRQタイミングの修正だけ…かと思ったらPPUの初期化に失敗することがあるので,そこも直さないと.どうせどっかでVBlank待たないとダメなんだろうな.


てかIRQタイミング調整もめんどくさいなぁ.HBlankの中で処理を終わらせるタイミングに調整しないと…
HBlankって何クロックあるんだっけ…もう何もかも覚えてないよ…
これは実機で動作させてみてから調節する方がいいかなぁ.

っていうか誰かG-NES並のデバッグ機能つけてくれよ!
この程度のデバッガじゃ物足りないよ!