FAMIRGBの映像が乱れる原因

ファミコンのPPUからデジタル映像信号を無理矢理吐き出させて、それを元にアナログRGB信号を出力可能にするという夢のボードである「NESRGB」ですが 、私はそれをCPLDとかを使わずに74シリーズの標準ロジックICだけで作り上げようという、無謀な誰得チャレンジを最近やっとります。

まあ、前のブログエントリでカラーの映像がモニターに出せたところまでは報告いたしましたが、実はぜんぜんイケてないところがありまして、写真ではまともっぽく写ってますが、コントローラーのボタンを押すとコンボイの謎のオープニングのように画面全体が激しくフラッシュするのです。
テスト用にはハイドライドスペシャルを使っていたのですが、このゲームって勇者が攻撃してても画面上ほとんど変化ないじゃないですか。でも私のボードを通した映像ではAボタンを押すたびにコンボイの謎フラッシュですからね。攻撃してることが激しく分かりやすくて最高です。私の目への攻撃性もかなりありますが。


そんなわけで、映像がおかしくなる原因を考えてたんですが、なかなかわからなかったんです。
ボタンを押すとおかしくなるのだから、PAD I/Oへのアクセスでも私が追加した回路が勘違いして、それをパレットRAMへ書き込んじゃっているのじゃないかと考えたんです。
PAD I/OのアドレスはPPU I/Oのアドレスの次なので、アドレスデコーダがしくじっているなら、有り得なくないかなと推理しました。
でも、アドレスデコーダ部はべつにおかしくなさそうです。


そこで悩むこと3日ぐらいして、設計書眺めていたら、キャラクタRAMへの書き込みとかアトリビュートRAMへの書きこみでも、それをパレットRAMに書き込んでしまう回路になっていたことに気がつきました。

なるほど、Aボタンを押すと画面上のどっかのキャラクタが書き換えられるから、それがパレットに書き込まれてしまい、激しくフラッシュしてたんですね。


今日は、山形の某所でシステムテストをやってて、激しく暇だったんでそんなことをボンヤリ考えてました。