PCエンジンを720pで映す計画

PCE 本体の背面コネクタ(EXTBUS)から出ている信号を利用することによって、アナログに変換する前のデジタル信号を 720p で映すことができました。これによって、本物のハードウェアから改造なしにほぼ鮮明な映像を液晶モニタに映すことが出来ます。

このハードウェアに御賛同者が多ければ、完成度を上げていって販売したいと思っています。


Super桃鉄のタイトル画面. 黄色ケーブルやエミュレータだと下が切れてる場合がありますが上下とも多めに映ります。左右端の白い枠は座標確認用で独自に追加してあります。


拡大したところ。


R-TYPE 2面。

動作原理と開発の理由

EXTBUS には普通のゲームハードでは省略するような信号が豊富に出ています。PCE ハードウェアを調べている Ki さんのご協力により、分解や改造なしにアナログに変換する直前のデジタル映像信号(color RAM address と dotclock)がでていることが判明しました。

映像の中間処理の信号はゲーム機内部に IC の端子としてでていることはあるのですが、コネクタに都合がいい信号が完全にでていることは珍しいです。

PCE エンジンには未だ拡張性があることが判明したので、EXTBUS につなげるハードウェアを作る開発を始めました。相当な苦労が予想されますが、 CD のゲームの互換システムを作ることは理論上可能です。

対応機種

EXTBUS がついている PCE 本体で利用可能です。

  • 白いPCエンジン, CoreGrafx シリーズは利用可能です。
  • SuperGrafx は専用ソフトと対応ソフトの絵が不完全です。
    • 通常ソフトであれば表示は問題ありませんが、SuperGrafx の機能は使えないので無駄に大きいだけの状態になってしまいます。
    • SuperGrafx 本来の絵がでない原因は EXTBUS への配線の都合なので改造すれば表示できると思われます。
  • LT は動くと思われますが現在動作確認が出来ていません。
  • 資料を見る限り TurboGrafx16 は利用可能だと思われます。Databus の並びが逆なので個別の対応が必要です。

非対応機種

EXTBUS がついていない機種が使えません。

  • DUO シリーズ
  • GT
  • シャトル (端子数が少ないので不可能)

映像信号の拡大

PCE の映像はソフトウェアによって横解像度を3段階に切り替えることができます。この仕様はアナログの特性を生かしたものであり、デジタルで映す場合には縦方向に3倍拡大する必要があります。

このため XGA (1024x768) と 720p (1280x720)の2通りを実装しました。様々なソフトでの挙動をみると 720p が良いと思います。一番の理由は R-TYPE を動かすと横幅 1024 では両端が切れてしまいました。
ほとんどのゲームは 1 pixel の横縦比は 4:3 (アナログだと1.333:1)で動いており、この場合の横解像度は 256 x 4 で 1024 にぴったり収まります。

R-TYPE のような Irem のアーケードゲームを移植したものは 1 pixel の横縦比を 3:3 に設定していて、横解像度が 346 x3 ぐらいあるようです。(ぐらいと書いたのは実際には厳密な仕様がよくわかっていないらしい...)


桃鉄(pixel比4:3)では白いマスに収まって 1024 pixel になる。


R-TYPE (pixel比3:3) はマスからはみでる。

白黒モード対応

資料を見ていると、 PCE 本体から出力される analog RGB には白黒機能が適用されないようです。PCE のソフトでこの機能を演出として有効に使ったゲームはないようなので、いままで指摘されていないようです。今回はこのモードも対応しました。


メソポタミアの白黒になる裏技

「ほぼ」鮮明な映像 (ちょっと難しい話)

ここまでは理想的なことを書いていましたが、アナログの特性をいかした映像信号をデジタルにするにはどうしてもうまくいかないことが判明しています。
PCE の VSync 周波数は 59.82Hz か 60.05Hz をソフトで設定出来ますが、デジタル信号のそれは 60.00Hz なので完全に同期が出来ません。このため、フレームのずれが約6秒に1度発生して、スクロールに違和感を感じる場面がでてしまいます。(場面によっては気付かない場所も結構あります)

完全に同期してフレームのずれを防ぐ方法があるかいろいろ試しましたが、アナログの特性をいかしている設計では中間のデジタル信号があっても、完全に安定+同期したデジタル映像の出力はおそらく不可能だと思います。少なくとも本体に改造が必要で、それが解決出来てもきれいに映るモニターがあるのかはわかりません。

教えて欲しいこと

筆者は実はPCEのソフトを遊んだのはそんなに多くないし、内部仕様もそれほど詳しくありません。もし下記のことを詳しく知っていたら教えてください。

  • VCE レジスタ(絶対アドレス 0x1fe400.write)の bit1:0 を頻繁に書き換えるソフトと VDC 側のレジスタの切り替え手順
    • CD では龍虎の拳あすか120%が書き換えているのは Mednafen の changelog からわかったのだが、いまのところ HuCard だけが使えるのでできれば HuCard であれば確認したい
  • (解決) VCE レジスタの bit2 の挙動の日本語と図示での説明、それを使っているソフトの名前
    • http://archaicpixels.com/HuC6260 の Notes.Display artifact にそれについて詳しく書いてあるのだが、目的がわからないので英文を読んでも全然わからない
    • この記事のコメントと nesdev forum に投稿したところに説明をいただきました。これは NTSC encode 特有の処理ということがわかりましたので、細かい部分や NTSC 以外に影響する部分を調査する予定です。
  • その他映像処理が特別なことをやっているソフトの名前と発生条件
    • VDC の機能は全て本物を使ってるので問題は発生しないと思われる。VCE のレジスタ周りで特殊なことをやっている場合は対応する必要があるため.

ご質問などもコメント欄までお願いいたします。承認制なので非公開希望と書いていただければ個別にお答え出来ます。