2023年10月24日の日記を表示中
2023年10月24日 (火)
■基板
ワンダー3で実験をしている中で、ふとゲームセレクト画面などでの色化けを解消させる改造の存在を思い出し、あわよくば同じことをCPicS1上で実現できないかと考えて原理を調べてみることに。
既に元のページは消えているようですが、Internet Archive上で情報を参照することができました。 ざっくりこういうことのようです。
- 表示機器側は、映像信号の垂直・水平同期期間のRGBの信号レベルを基準に黒のレベルを決定するらしく、この期間にRGBがゼロに近い状態になっていないと色がおかしくなる
- CPS1のハードには、色情報の出力をマスクする (ゼロが出るようにする) 仕組みがあるが、マスクしているのは垂直同期期間の直後の一瞬だけに限られる
- 垂直・水平同期期間中に色情報を黒にしていれば良いが、書き換えなどを行っていたり、色を出しっぱなしにしていたりすると、黒以外の色が基準として使われてしまい、画面の色が異常になる
- マスク処理を行う(実際には色情報を出しているD-FFをリセットする) 信号にCSYNC信号を混ぜ込むことで、垂直・水平同期期間に色情報が出てしまうのを防ぐことができる
このマスク期間を示す信号としてLUTOEという信号名が記載されていますが、同じ名前の信号がCボードの101番ピンから出ています。また、CSYNC自体はBボード上で作られていますが、その元となるVSYNCとHSYNCはCボードから出ています (Bボード上でこれらをANDしているだけ) 。なので、(LUTOEが同じものであれば) 理屈の上ではCボードとBボードの間に割り込む形でLUTOEを加工してやることで、M/B側を改造しなくても近いことができるはずです。
というわけで、さっそく実験開始。とりあえずLUTOEと、反転させたVSYNCのORを取って、これを元のLUTOEの代わりにBボード側に出してみました。
うおお、なんじゃこりゃ。ゲーム画面が出ない上に、画面下部に謎の模様が・・・。
・・・って、VSYNCの反転とLUTOEをNORした後、反転させるのを忘れていた(汗)。なので逆に画面外の領域に映像が出ちゃっていたのか。まあ、これで変化があったということは、CボードとBボードの間に割り込むことで対策ができる可能性が高いということになりますな。
NORした結果を、再度NORゲートで反転させてみました。
おお、今度は映像が出ました。
ただ、VSYNC期間のマスクを広げただけでは色化けの症状は改善せず。
まあ、まずはちゃんとHSYNC期間もマスクするようにするところからですね。続きはまた明日。
2023年10月24日の日記を表示中
[コメントを書く]