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には画面アジャスト機能が付いていたことです。
これは画面の位置を上下左右に16dotの範囲で調節出来る機能なのですが、これをGRAPHIC1〜3でソフトウェアで行う8dotスクロールと組み合わせることで、横方向の(見た目の上では)1dot単位のスクロールが可能となるのです。
画面アジャストの機能を使うのに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年)にも感じていました。しかし、同じ設計者の手によるものだったとは。
以上、世間話として聞いて面白かった、というだけで、情報の裏は取れていません。情報提供者の勘違いなどが入っている可能性もありますし、僕が勘違いしている点もあるかもしれません。