MSX-VIDEO

MSX2への仕様拡張で一番の目玉は、新しく開発されたVDP(VideoDisplayProcessor:画面表示用回路)V-9938、通称MSX-VIDEOの採用でした。


今でも根強く残るMSXのファンのなかでも、MSX-VIDEOの性能については賛否両論です。もっと性能が欲しかった、という人もいれば、ホームユースには十分以上の性能だ、という人もいます。

MSX-VIDEOとは、いったいどのような性能を持ったLSIだったのでしょう?

今回はそのお話しです。

目次

互換性

スプライトモード2 グラフィック

VDPコマンド その他の機能


互換性

MSX-VIDEOにまず求められたものは、MSXで使用されたVDPである、TM9918との互換性です。

TM9918は、性能の低いLSIだとはいえ、少ないメモリで効率良くカラーを表現する仕組や、用途にあわせて4つの画面モードを選択できるなど、十分に複雑な構造を持っています。MSX-VIDEOはこれらの画面モードを内包し、さらに性能を上げなくてはならないのです。


自然と、だれでも考え付くのが画面モードをさらに増やすことです。

実際MSX-VIDEOはそのように拡張されています。従来互換の4つの画面モードに加えて、まったく新しい画面モードが4つ、従来のものを拡張したものが2つ、合計10もの画面モードを持ちます。

従来からあった画面モード
TEXT11行40文字のテキスト
MULTI COLOR1文字を4分割した大きさを単位とする、ローレゾグラフィック
GRAPHIC11行32文字のテキスト。文字を32のグループにわけ、それぞれグループごとに文字に色がつけられる。
GRAPHIC2256×192、横8dotについて2色が使えるグラフィックモード

新設された画面モード
GRAPHIC4256×212、ドットごとに16色を指定可能なグラフィックモード
GRAPHIC5512×212、ドットごとに4色を指定可能なグラフィックモード
GRAPHIC6512×212、ドットごとに16色を指定可能なグラフィックモード
GRAPHIC7256×212、ドットごとに256色を指定可能なグラフィックモード

拡張された画面モード
TEXT2TEXT1の拡張。1行80文字まで表示可能。文字ブリンク可能
GRAPHIC3GRAPHIC2の拡張。スプライト機能が強化されている

これらのうち、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の技術の高さを、当時のユーザーは自慢したものでした。


VDPコマンド

それでは、そのVDPコマンドにどんなものがあったのか、ざっと紹介しましょう。

まず、多くの機能についていえることは、画面操作を行う際に論理演算機能が使えるということです(使えないものもあります)。

この論理演算は非常に多彩で、演算なし、AND、OR、XOR、NOTといったごくあたりまえのものに加え、さらにこれらの機能を「転送元が0でないとき」のみ行うことも出来るようになっています。0の時は画面の書換を行わないので、これはスプライトの様な透明色を持ったパターンとして使えます。


コマンドは、大きく分けて

  • 矩型の高速転送
  • 矩型の論理転送
  • 描線
  • 描点
  • 探索
  • 色検査

にわかれています。


このうち矩型の転送は、元画像と転送先の組み合わせで数種類に分類されます。VRAMからCPUに転送を行ったり、VRAM間で移動を行ったり、たんに塗りつぶしを行ったりも出来ます。

なお、高速転送は論理演算なし、論理転送は論理演算ありとなります。


描線は、指定された2点間に直線を引きます。描点は指定された座標に点をうちます。どちらも論理演算の指定が可能です。

探索は、指定された座標から右方向に、指定された色(もしくは、指定されなかった色)が存在するかどうかを調べます。これはペイントルーチンなどに使用されることを想定した機能のようです。

色検査は、指定された点の色コードを返します。


これらのコマンドを実行中は、CPUは解放され、別の作業を行うことが可能です。

 もっとも、CPUが別の作業を行っているほどの暇が出来るのは、VRAM-VRAM間の矩型転送を行った場合のみです。転送以外の作業はすぐに終了しますし、VRAM-CPU間の転送を行うと、CPUはデータの受け渡しを行わなくてはなりませんから。


その他の機能

このほかにもMSX-VIDEOはいくつかの細かな機能を持ちますが、重要なのはスクロール機能くらいです。

MSX-VIDEOは表示エリアの縦スクロールが可能です。この場合、仮想画面は縦256dotになっており、表示画面外で書換を行うことで、延々と絵が続いているような感じを演出できました。これにより、ゼビウスに代表される縦スクロールゲームの移植は簡単に行うことが出来ます。


一方、横スクロール機能は持っていません。横スクロールは依然としてソフトウェアで行う必要があり、ピクセルマップのグラフィック画面では処理が重すぎるためにMSXとの互換モードで作られる場合がほとんどです。

商業的にはMSX2ユーザー専用にゲームを作るよりも、MSX、MSX2ユーザー両方が使えるMSXソフトを作る方がリスクが少なくなります。そのためもあり、横スクロールゲームのほとんどはMSX用のまま発売されています。


しかし、MSXとほとんど見た目が変わらないにもかかわらず、MSX2でしか使えない画面モード・・・GRAPHIC3を使うことには、それなりのメリットがありました。

MSX2が十分に普及してからは、このモードを使ったゲームもいくつか発売されるようになりますが、その代表が先に上げた「スペースマンボウ」であり、「サイコワールド」であります。


そのメリットとは、MSX-VIDEOとは直接関係ないのですが、MSX2には画面アジャスト機能が付いていたことです。

これは画面の位置を上下左右に16dotの範囲で調節出来る機能なのですが、これをGRAPHIC1〜3でソフトウェアで行う8dotスクロールと組み合わせることで、横方向の(見た目の上では)1dot単位のスクロールが可能となるのです。


画面アジャスト機能はMSX-VIDEOと無関係であることからもわかるように、別にこの機能を使うのにGRAPHIC3に限定する必要はありません。

しかし、ソフトウェアで扱うには遅すぎるGRAPHIC4以降を使う理由も、どうせMSX2でしか動かないのにGRAPHIC1〜2を使う必要もないのです。必然的に、このタイプのゲームにはGRAPHIC3が使われていたようです。


以上が、MSX-VIDEOの全貌です。

時代背景をみると、当時のグラフィックは通常デジタルRGBの8色、色数の多い機種でやっと16色が出てきたという段階でしたので、256色というのは驚異的でした。

その一方で、依然として解像度が低いこと、VRAMがI/Oポートを通じたアクセスのために画面の書換が遅いこと、など、問題点も多いVDPだったことは否めません。

しかし、速度が遅いとはいえ、VRAMの転送機能や、透明色つき色演算機能など、先進的な試みがなされていたことは賞賛に値します。

これらの機能はPC機ではWindows以降やっと開発され始め、透明色つきの転送機能にいたっては、その概念が登場したのはごく最近のことです。


ちなみに、プレイステーションのスプライト/ポリゴン機能とは、VRAM-VRAM間の透明色つき変形メモリ転送に他なりません。セガサターンはちょっと違うけど、似たようなものです。


MSX-VIDEO自体はMSX2専用ではなく、汎用性を持っているためにごく最近までさまざまな場所に利用されていました。ビデオテックス端末(キャプテン端末)や、ビデオタイトラーなどでは、どうもMSX-VIDEOではないかと思われる性能を持つものが少なくありません。

また、Oh!FMの記事で、FM-7にMSX-VIDEOを接続して画面機能を強化させる改造を見たことがあります。この時は、MSXですら搭載していなかった192KのVRAMをフル実装していましたが、実はこの場合は128Kと64KのVRAMは連続しておらず、VDPコマンドに制限が生じるのだそうです。

2011.3.29追記

MSX 開発に携わった、とある方とお話をする機会がありました。そこで MSX-VIDEO に関する面白い話を聞いたので、追記します。

ただし、情報源を明かせないので以下は「怪情報」扱いとします。


MSX-VIDEO では、VDP コマンドと呼ばれる方法で、非常に高速なグラフィック処理が可能でした。

この回路を作った方は、その後転職して NEC に入り、PC-9801 に途中(1987年)から搭載された高速グラフィックチップである EGC (Enhanced Graphic Charger) の設計を行ったそうです。

その後、技術を買われてさらに転職し、アメリカで S3 社に入り、世界初の「ウィンドウアクセラレータ」(現在で言うところの、グラフィックボード)である、S3-911 (1989年発売)の設計に携わったそうです。


…MSX-VIDEO が、ウィンドウアクセラレータよりも早く類似機能を搭載していた、ということは、上記記事の執筆時(1997年)にも感じていました。しかし、同じ設計者の手によるものだったとは。

以上、世間話として聞いて面白かった、というだけで、情報の裏は取れていません。情報提供者の勘違いなどが入っている可能性もありますし、僕が勘違いしている点もあるかもしれません。

(ページ作成 1997-01-12)
(最終更新  2011-03-29)

前へ     戻る     次へ
トップページへ

このページの誤字脱字発見・情報提供・意見などありましたら、下の一行掲示板へどうぞ。樫樹の広場から全体を見ることも出来ます。

名前 内容

あきよし】 画面アジャストはMSX-VIDEOの機能でした。MSX2テクニカルハンドブックで確認。MSX-VIDEOとは関係ない、と書きながら「そのほかの機能」で語っていたり、どうも「画面モードとは関係ない」といおうとしていた節があるのですが、書いたのが10年以上前なのでどういうつもりで書いたのか忘れました。しかし、誤解を招くのは事実で、近いうちに記事内容を訂正したいと思います。 (2011-10-17 11:06:25)

【_】 画面アジャスト機能を「MSX-VIDEOとは直接関係ない」とされていますが、画面アドジャストはMSX-VIDEOの機能のはずですが…。 (2011-10-16 18:18:56)

【??】 V-9938はYAMAHAとASCIIの共同開発で、YAMAHAから販売されてました。ちなみにSONYからもセカンドソースとして販売してました。(周辺チップとしてデジタイズLSIとスーパーインポーズLSIも) (2005-06-27 02:31:02)

東京電力 輪番停電
第5Dグループ地域で サーバーを運用して
おります。
停電時の停止を
御了承ください。
(当面掲示を残します)

Loading