MSX-VIDEO
MSX2への仕様拡張で一番の目玉は、新しく開発されたVDP(VideoDisplayProcessor:画面表示用回路)V-9938、通称MSX-VIDEOの採用でした。
今でも根強く残るMSXのファンのなかでも、MSX-VIDEOの性能については賛否両論です。もっと性能が欲しかった、という人もいれば、ホームユースには十分以上の性能だ、という人もいます。
MSX-VIDEOとは、いったいどのような性能を持ったLSIだったのでしょう?
今回はそのお話しです。
目次
互換性
MSX-VIDEOにまず求められたものは、MSXで使用されたVDPである、TM9918との互換性です。
TM9918は、性能の低いLSIだとはいえ、少ないメモリで効率良くカラーを表現する仕組や、用途にあわせて4つの画面モードを選択できるなど、十分に複雑な構造を持っています。MSX-VIDEOはこれらの画面モードを内包し、さらに性能を上げなくてはならないのです。
自然と、だれでも考え付くのが画面モードをさらに増やすことです。
実際MSX-VIDEOはそのように拡張されています。従来互換の4つの画面モードに加えて、まったく新しい画面モードが4つ、従来のものを拡張したものが2つ、合計10もの画面モードを持ちます。
従来からあった画面モード | |
---|---|
TEXT1 | 1行40文字のテキスト |
MULTI COLOR | 1文字を4分割した大きさを単位とする、ローレゾグラフィック |
GRAPHIC1 | 1行32文字のテキスト。文字を32のグループにわけ、それぞれグループごとに文字に色がつけられる。 |
GRAPHIC2 | 256×192、横8dotについて2色が使えるグラフィックモード |
新設された画面モード | |
---|---|
GRAPHIC4 | 256×212、ドットごとに16色を指定可能なグラフィックモード |
GRAPHIC5 | 512×212、ドットごとに4色を指定可能なグラフィックモード |
GRAPHIC6 | 512×212、ドットごとに16色を指定可能なグラフィックモード |
GRAPHIC7 | 256×212、ドットごとに256色を指定可能なグラフィックモード |
拡張された画面モード | |
---|---|
TEXT2 | TEXT1の拡張。1行80文字まで表示可能。文字ブリンク可能 |
GRAPHIC3 | GRAPHIC2の拡張。スプライト機能が強化されている |
これらのうち、GRAPHICモードではスプライトが使用できます。GRAPHIC1〜2ではスプライトモード1が、3〜7ではモード2が使用されます。
また、GRAPHIC4〜7のモードではインターレース出力をサポートしました。
これは、テレビへの出力の際に1/60秒ごとに縦に半分ドットをずらす機能で、実質的な解像度は変わりません。しかし、ドットずらしと同期して2画面(VRAM上には複数の画面を持てました)を切り替えることで、見ための上で縦方向の解像度を倍に出来ます。
従来からあったモードでも、表示色だけは16色固定からパレット方式の512色中16色に変更されました。従来との互換性を考え、画面モードを切り替えたときにはパレットは従来の色で初期化されます。
こんなに画面モードがあると、当然、ほとんど使われないモードが出来てきます。たとえば、私はGRAPHIC5で作られたソフトを見たことがありません。たった4色でなにをしろというのでしょう?
また、GRAPHIC3もほとんど使われていませんでした。このモードはグラフィックモードとはいえ、実質的にはテキストなので高速な処理が可能なのですが・・・
わずかに、コナミの隠れた名作、「スペースマンボウ」や、ヘルツの「サイコワールド」が使用していたくらいではないでしょうか。おそらく他にも使用されているはずですが、詳しくは後述します。
スプライトモード2
MSXの本領発揮、ゲームに使用されるスプライトは、モード1(従来)の単色から、モード2では1ライン毎に色を変えられるようになりました。
さらに、2枚のスプライトを重ねて使用するように設定すると、重なったスプライトの色は論理和がとられ、1ライン毎に3色まで表示出来ます。これで、ライバルであったファミコンの「1枚に3色」よりも多くの色が出せるようになりました。
画面の横にスプライトを並べたときに一定の枚数以上表示出来ない、いわゆる「ちらつき」の起こるスプライト数は、モード1の4枚にたいしてモード2では8枚となっています。モード2ではスプライトは2枚単位で使うのが普通ですから、事実上は色数が増えただけで表示出来る枚数は同じです。
しかし、画面全体での表示枚数は、どちらのモードも32枚です。結果として、モード2を使う場合は実質半分のスプライトしか表示出来ないことになります。
このため、MSX2が発売された直後は、色数は多いがなんか画面が寂しい・・・というソフトが多数ありました。これは後に技術でカバーされることになります。
他の機種にはない特色として、スプライトモード2ではスプライト同士の重なりをドット単位で検知することが出来ました。
|
これを利用したのが初期のMSX2ゲーム、T&Eの「レイドック」でした。 「魅せてあげよう 1ドットのエクスタシー」 というゲーム史に残るキャッチコピーで登場したゲームですが、かなり展開の激しいゲームなので、本当に1ドット単位で当たっていたのかどうかはだれにもわかりません(笑) 画面写真を紹介しようと思ったのですが、残念ながらディスクが壊れたようで起動できません。そこで、雑誌から取り込んだロゴと、問題のキャッチコピーを載せておきます。 のちにレイドックはFM-77AVやMZ-2500にも移植されるのですが、そのときにはキャッチコピーから「1ドットのエクスタシー」は無くなっており、「被弾の判定もドット単位」の説明もなくなっています。 |
グラフィック
新設されたグラフィックモードは、従来のものがビットマップ(VRAMの1ビットを1ドットに割り当てる)だったのに対し、ピクセルマップ(複数ビットを1ドットに割り当てる)となっています。
ピクセルマップでは多色の表現が可能な反面、非常に多くの資源(VRAM、CPUパワー)を必要とします。そこで、MSX2ではVRAMを最低64K、性能をちゃんと活かすためには128Kを搭載することになっています。(ちなみに、MSX-VIDEO自体のVRAM最大搭載量は192Kです)
VRAMを節約するモード・・・16色モードや、4色モードでは、複数の画面ページを持つことが出来ます。同時に表示出来る画面ページは1枚だけですが、表示しない裏の画面で絵を書き、完成した絵を表示するようにすることで、書換による画面のちらつきを抑えることが出来ます。
ところで、MSXのCPUである、Z80は64Kのメモリ空間しか持ちません。そこで、MSX1の時からVRAMは直接VDPに接続され、CPUがVRAMをアクセスするときはVDPが仲介するようになっています。
この方式は、メモリ空間を節約できる反面、非常に遅いという欠点を持ちます。128KものVRAMを自在にあやつるというのは、事実上無理な話でしょう。
そこで、MSX-VIDEOではVDPコマンドと呼ばれるいくつかのサービスを提供しています。このサービスを使用するのは非常に簡単、かつ強力なために、画面関係の処理はBASICからでもアセンブラ並のことが出来ました。
逆にいえば、アセンブラを使っても画面処理に関してはBASIC以上の速度を上げられないということでもありますが・・・
MSX2の仕様では、BASICでスクリーンモードを変更したときには、その最初のページ(ページ0)しか内容がクリアされず、リセットしてもVRAMの内容は変更を受けません。また、次の章で解説するように、画像データの転送はVRAM-VRAM間で行うのが最も高速となります。
このため、しばしば「VRAMのページ1以降に絵のデータを置いている」市販ソフトで、グラフィックのデータが容易に手に入れられました。
これらの絵のデータはBASICからもアセンブラ並みの速度で書換が行えたので、さまざまな「ゲームのデモを模倣する」プログラムが作られました。 ここに表示しているアニメーションGIFデータは、それらのデモプログラムのなかで最も有名だと思われる「リリアの振り向き」です。 |
このプログラムはBASICでだいたい20行程度で作ることができ、少しでもプログラムを作ったことがあり、イース2をもっていたMSX2ユーザーはほとんどがこのプログラムにチャレンジしていたのではないかと思います。
(このGIFデータ自体、日本ファルコム製のMSX2ソフト「イース2」より、リセットによって入手した絵を加工したものです。著作権は日本ファルコムに帰属します。)
当時このアニメーションはPC88などでは「最高技術」と誉めたたえられていたもので、その水準にBASICからでも簡単に至ることが出来るMSX2の技術の高さを、当時のユーザーは自慢したものでした。