MSXの画面 - 画面モードがいっぱい
MSXで規格として統一された仕様の中で、一番大事なのは画面周りです。後期の8ビットパソコンの常として、CPUがアクセスできる64Kのメモリ空間の中にVRAMをおかずに、VDPと呼ばれる画面制御チップがVRAMを持ち、CPUから直接アクセスすることは出来ませんでした。原則として画面とのやり取りはBIOSコールを呼ぶ形となり、ハードウェア的にはI/Oポートからやり取りします。
ここで画面側の処理にFMシリーズのように汎用的なCPUを使わずに専用チップとしたことで、メイン側からVDPを直接制御することはできるものの、メイン側からプログラムを送るようなテクニックは出来なくなりました。汎用CPUと違い、VDPはスプライト機能など特にゲームで威力を発揮する機能を持つので、これを活かすことが腕の見せ所になりました。
まず、どのような画面構成を選べるのかから整理しておきます。大きな分類ではテキスト・モードとグラフィック・モードがあります。グラフィック・モードには1ドットずつ点が打てる高解像度モードと、簡易グラフィックのように扱われるマルチカラーモードがあります。
スプライトというのは、8✕8または16✕16画素のパターンを文字やグラフィックに重ねて自由な位置に表示する機能です。ゲームで使われるような移動するオブジェクトを背景の事を考えずに使えるので、大変に便利なものです。スプライトはたくさん表示できるのでスプライト同士が重なった場合は番号が小さいものが表示されます。
【MSX】
SCREEN0:テキスト40×24文字(1文字6×8ピクセル)
SCREEN1:テキスト32×24文字(1文字8×8ピクセル)
SCREEN2:グラフィック256×192ピクセル 固定16色(横8ドット内2色まで)
SCREEN3:グラフィック64×48ピクセル 固定16色
MSX2ではVDPが進化したことにより、より大きなVRAMを持つことができて、解像度が増え、色もパレットが使えます。
【MSX2】
SCREEN0:テキスト40×24文字(1文字6×8ピクセル)またはテキスト80×24文字
SCREEN1:テキスト32×24文字(1文字8×8ピクセル)
SCREEN2:グラフィック256×192ピクセル パレットから16色(横8ドット内2色まで)
SCREEN3:グラフィック64×48ピクセル パレットから16色
SCREEN4:グラフィック256×192ピクセル パレットから16色(横8ドット内2色まで)※SCREEN2とはスプライトモードに違いがある
SCREEN5:グラフィック256x212ピクセル(1ドットごとにパレットからの1色)
SCREEN6:グラフィック512x212ピクセル(1ドットごとにパレットからの4色)
SCREEN7:グラフィック512x212ピクセル(1ドットごとにパレットからの16色※VRAM128K搭載機種のみ
SCREEN8:グラフィック256x212ピクセル(1ドットごとに256色)※VRAM128K搭載機種のみ
他にも一部のローカライズでしか使えないSCREEN9やMSX2+以降で拡張されたSCREEN10~12もあるようですが省略します。
これらの画面モードで注意する必要があるのは、表示される画面はレイヤーというか重ねられていて、スプライト画面の後ろにキャラクタ画面があり、さらに後ろの背景画面(文字やグラフィックの外側)があることです。
高解像度の画面を使えば、よりきめ細かな表示が出来ますが、扱うデータ量が増えることで、処理速度は落ちます。ゲームなどで速度が重要な場面では、あまり細かな表示を行うことよりスプライトを活用することが大切です。テレビをディスプレイとして使っている限り、あまり細かな表示は正確に出力されないので、むしろ色を上手に使った方が表現力は上がります。
画面モードごとに扱いが大きく異なるので、それぞれの使い方を覚えなくてはいけないのですが、基本はSCREEN1と2だったようです。
それぞれのSCREENモードの具体的な使い方は、またの機会に。
MSXの情報は MSXのZ80で何か作る さんの記事にたくさんあります。
MSXの画面まわりの基礎知識
ヘッダ画面は、80桁のテキストモード表示(MSX2以上でないとダメなやつ)。80桁モードにすると1文字が圧縮されてしまうので ひらがな は使い物になりません。