改造が必要な実験で、製品化とは関係ありません。
EXTBUS は豊富な信号が出ていますが、今のところ非同期で 720p を出すところまででした。基板の設計が1息ついたので、完全に同期した映像を出してみました。
改造点
PCE 本体が使用している master clock の 21.47727MHz を外に出します。理由は4つぐらい有り、これを得る以外に安定動作が出来ませんでした。
EXTBUS で使っていない信号が3つぐらいあるので CSync を切断して master clock の線にしてあります。(他の候補は composite video か CEK か HSM)
映像信号
master clock を 3 倍にすると XGA@60Hz の映像規格に似ているので、モニターが映してくれると期待します。
ORIGNAL 仕様:
- dot clock: master / 2, 3, 4 をソフトで選ぶ (除数で割り切れない場合は調整する ← 曲者)
- horizonal master clock count: 1365
- horizonal line count: 263, 262 をソフトで選ぶ
- vsync frequency: ソフトの設定において 59.82Hz か 60.05Hz
upscan 仕様:
- pixel clock: master clock * 3 (64.43181MHz)
- horizonal pixel clock count: 1365
- horizonal line count: 263 * 3, 262 * 3 をソフトで選ぶ
- vsync frequency: ソフトの設定において 59.82Hz か 60.05Hz
利点と欠点
利点:
- ティアリングや遅延がありません
- この実装では Hsync レベルで同期していますのでフレームバッファがいりません。
欠点:
- 改造が必要です
- 標準規格にそれるためモニターに映るかはそのモニターがどこまで規格外に付き合ってくれるか個体差があります (いわゆる相性という残念な言葉を使うことになる)
- 家電は多分すぐに out of range と出て映らないでしょう
- 映ったとしても変な拡大が入って鮮明ではないかもしれません
- 標準規格にそれるため録画機器でも同様の問題が発生します
720p や XGA などの標準規格と利点と欠点が反転してしまいます。実機で本物の動作をやると、こういうことになりまして、両立は不可能です。
実際に動かしてみた
COLOR RAM を実装せず VDC の出力をそのまま RGB にして出してます。色が変ですが、手抜きの状態なだけです。
- 16:9 の家電: 映らない
- 4:3 の PC モニタ: 映るが 1308x772 という謎の解像度を出した。変な拡大処理は入らなかったので横縦比が変な以外は問題なかった (意外)
- 16:9 の PC モニタ: きれいに映った
ティアリングがないのはとてもいいです!予想通り規格外にどれくらいモニターが付き合ってくれるかが問題でしたが、利用しているモニターが1つきれいに映ったのは予想外でした。
DE のピンで可視領域は決められ最初は 1024x768 にしていましたが、映ったモニタの両方とも余裕があるみたいで試しに 1040x768 にしたらなんと映りました。 XGA だと横が切れてしまいますが、この方式だと切れずに全部表示できそうです。
VSync レベルで完全同期できるか
過度の改造になってしまいますが、PCE の master clock を別の周波数に交換すれば VSync レベルで同期できますので、1フレーム固定で遅延しますがティアリングが一切なくなる可能性もあります。
VSync を 60.00Hz にする場合, 60.0*(1365*262) -> 21.457800MHz か 60.0*(1365*263) -> 21.539700MHz に交換することで動くと思われます。これによって 720p でティアリングなしということもできるし、モニターや録画機器の相性問題も解決できると思われます。
ただし、NTSC (黄色ケーブル) では映らなくなったり、微妙なタイミングを保って動いていたソフトなどの互換性が保証出来なくなるため、やはり理想の状態を作り出すのは不可能だと思います。