NESRGBで驚愕

この前、
NESRGBというボードが海外で開発されていたことを知りました。
これは、NESをRGB化するためのボードです。
このボードがすげーのです。
そもそもRGB化とはなんぞや?ということから考察したいと思います。

きれいな画質で遊ぶにはRGBだ!

昔のゲーム機にて、
最高の画質で
ゲームを遊びたいとなれば、

「21ピンRGB端子」

これで接続するのが常識でした。


RF端子や
コンポジットビデオ端子で
接続したのとは段違いで、
くっきり
はっきり
ドットの粒立ちが見えるかのような画質になります。


しかし、常識とはいえど、21ピンRGBは高嶺の花でもありました。
21ピンRGB端子を備えたテレビは一般的ではありませんでしたし、
ゲーム機自体も、
標準で21ピンRGBに対応するものは少なかったのです。

ファミコンと21ピンRGB

特筆すべきなのが我らが「ファミコン」です。


ファミコンの場合、
グラフィックスを担当するチップである「PPU」から
直接的にコンポジットビデオ信号を出力しているため、
RGB信号を取り出すことができなかったのです。


ファミコンをRGB対応にするためには、
本体を改造する必要があるのですが、
その方法が非常にハードルの高いものだったのです。


PPU自体を、
RGB対応の別のものに
載せ変えてしまうという方法が採られました。

ファミコンをRGB対応にするためには

アーケード基板の「VSシステム」や、
ファミコンをベースとしたビデオタイトラーである「ファミコンタイトラー」等から、
RGB対応のPPUを摘出し
ファミコンへ移植するという
臓器移植手術
が必要とされました。


また、
RGB対応のPPUが入っている「VSシステム」や「ファミコンタイトラー」は、
入手が困難であるため、
これらの機器、および、これらから取り外したPPUは
オークションでも高値で取引されています。
この状況はずっと前から、今でも続いています。

そして、NESRGB

しかし、こんな状況を打破したボードがついに現れました。
これです。
http://etim.net.au/nesrgb/


これを見て衝撃を受けました。
おいおい
まじかよ、

思うのと同時に、
昔、考えていたことを思い出したからです。

私も考えるには考えた

5年ぐらい前、
私も、
PPU乗せ換えを行わずに、
なんとかRGB信号を作り出せないかと考えていました。

そこで、コンポジット信号から、クリアなRGB信号を復元する回路ができないかと考察しました。
そのときのアプローチはNESRGBとは別なものです。


ファミコンは一度に使える色数が少ないことを利用します。
ファミコンビデオ信号を普通にRGBへ変換してからAD変換したときの値と、
正しいパレットのRGB値を比べたときに
最も近いものを選ぶという方法でした。


できなくはなさそうでしたが、
ADコンバータとDAコンバータが3組と、
4MB程度のSRAMが必要となり、
作るのが大変そうだったため、実際に製作するところまでは行きませんでした。


このようなアプローチをとったのには理由があります。
NESRGBではPPUから出力される、EXT0からEXT3という4ビットの信号を使用しています。
これが実は映像信号だったらしいのですが、
その当時の私はこのことを知らなかったのです。

NESRGBは何がすごいか

EXT0〜EXT3から映像信号が出ているならば、
なぜ今まで
ファミコンをRGB化する
ハードが出てこなかったのでしょうか。
ファミコンが世に出てから
31年が経過しているというのに。


EXT0〜EXT3というピンから出力されるのは、通常の映像信号ではなく
パレットのインデックス値なのです。
これをRGBに変換するためには、EXT0〜EXT3の値で、パレットRAMの値を参照する必要がありますが、
パレットRAMはPPU内部に存在するので、外付けの回路からはアクセスできません。


どうするか?
NESRGBでは、CPUバスに流れるPPUへの信号を横取りして、
パレットRAMの状態を拾っているようです。
これはすごい。
ここまでやるかって感じです。


まあ、
ここまではわかりました。
わかったことにします。
しかし、ひとつの疑問が生まれます。


ファミコンのパレットは
バックグラウンド用と
スプライト用で分かれていて、
それぞれが16個づつ、
合計で32個あるのです。


EXT0〜EXT3から出力されるのは4bitの信号だと
さっき書きました。
4bitで表現できるのは0から15までの16通りの値です。


あれ?
信号は16通りしかないのに、パレットは32個あるのです。
これはどういうことでしょう?


実は、EXT0〜EXT3から出力される4bitの信号だけでは、
パレットのデータを参照できたとしても、
あるピクセルにおいて、
それがバックグラウンドとスプライトのどちらのパレットを参照しているのかが不明なので、
そこからRGB信号を作り出すには情報が不足しているのです。


これをNESRGBでは
どうにか工夫をして、
どうにかしているようなのです。


その辺が、サイトのほうにもはっきり書いてありません。
また次回で、この辺を考察してみたいと思います。

続きです