[1chipMSX改]

V9958調査資料 〜GRAPHIC1〜

MSX-BASIC でいうところの SCREEN1 に相当するモードである。

画面は 256x192画素 または 256x212画素 になる。
TMS9918互換は 256x192画素の表示で、MSX-BASIC の SCREEN1 もその設定になっている。
256x212画素のモードに切り替えるには、R#9 の LN ビットを 1 にする。

画面は、8x8画素のブロック単位に分割され、そのブロック内は 256種類のパターンから選択して表示する。
256x192画素のモードでは、ブロックは 32x24 = 768ブロック存在するが、パターンとして用意できるのは、
256種類だけである。従って、全画面をすべて異なるパターンで埋め尽くすことは出来ない。
この「256種類のどのパターンを表示するか」を示すテーブルを pattern name table と呼ぶ。

256種類のパターンの形状は変更できるが、8x8画素内で使える色数は2色のみである。
また、隣接する 8種類のパターンで同一色を指定しなければならない制約があり、色に関する自由度は極めて低い。
その代わりに、少ない情報量で多くの表示を変更できるため、色の自由度よりも処理速度を重視する場合に好まれる
画面モードである。
パターンの形状を定義しているテーブルを pattern generator table
パターンの色を定義しているテーブルを color table
と呼ぶ。

基本的に TMS9918互換のために用意されているモードだが、各table に指定できる VRAMアドレスは 17bit まで拡張
されており、VRAM64KB/128KB を搭載する V9938/V9958 では非常に多くの裏画面を使える魅力がある。
また、データ量が少ないこともあり、初期の MSX1ゲームや、海外の滑らかアニメーション重視のゲームなどで好まれている。

CPU からの VRAMリード・ライトアクセスのアドレスオートインクリメント機能は、TMS9918互換のため、上位3bit(R#14)
には効果がない。16KB を超えるアドレスに CPUリード・ライトする場合は、明示的に R#14 を書き換えなければならない。


TH9958 にこの機能を実装するにあたり、ポイントをまとめておく。
・pattern name table, pattern generator table, color table から必要な情報を 1byte ずつ読み出してしまえば
 連続する 8pixel に出力すべきパレット番号が確定する。
・pattern generator table のパターンは MSB first の並び(MSB が左端の画素)である。
・他の画面モードと遅延をあわせるため YJK を考慮して 4dot/clock (16cycle) の遅延は必要である。

これらを踏まえて、タイミングチャートを作成した。
※大きいので、画像ではなく PDF にした。
タイミングチャート

このタイミングは、他の画面モードとの兼ね合いで変化する可能性がある暫定版である。


[▲上へ]