VMware Workstation 6.5 RC で動作した Direct3D (DirectX) 対応ソフト......
先月, VMware Workstation 6.5 RC で動作するようになったり動作が改善したりしたソフトについて いくつか画像を上げましたが, 今回は, 以前試したことのある Diablo II などを再び試してみました。 当時は VMware Workstation 6 等だった上にホストも dynabook Satellite TXW/69AW と, 現在 (VMware 6.5 + Satellite WXW/78DW) とは環境が異なっていましたので。
というわけで, VMware 6.5 上で既に試したものを含め, 備忘録代わりとして一覧しておきます。 ちなみにホストの概要は, Core 2 Duo T7500, 4 GB (3 GB) メモリー, NVIDIA GeForce 8700M GT (256MB), Windows Vista Ultimate SP1, …といった感じですので, 能力については推し量ってください。(笑) ゲストは基本的に Windows XP MCE 2005 SP3 ですが, 一部 Windows XP Home Edition SP3 や Windows 2000 Professional SP4 といった例外が存在します。
まず, 動作しなかったのは『3DMark99 MAX』と『エヴァベンチ』です。 前者については そもそも Win9x 系でないと動作しませんので, 何かの間違いで Win9x 系での Direct3D 対応化が図られでもしない限り VMware 上での動作は不可能です。 一方, 後者は Build 110068 でも動作しませんでした。 描画がおかしいですしロード画面から (表示のみが) 切り替わらなかったりと不具合満載です。 そして, ESC 等で動作を止めようとすると漏れなく (ゲスト OS が) ブルーサンダーとなります。 GPU やドライバーの対応状況に関係なく機能を使いまくっているのが原因なのではないかと…。
さて, 本命の動作組ですが, まずは「動作して当然。 してくれないと悲しい」と言えそうな方々から:
この 2 つは Direct3D を使っていませんので, 動作しない場合は DirectX レベル (若しくは それ以前の仮想 PC レベル) において相当不安定になっていることを示します。 ただ, 当時 (ターゲットが Win9x 系。) のソフトは古い DirectX でないと動作しない場合も多々ありますけれど。 例えば『ファーランドサーガ』は DirectX 8.0 以降で動作しない場合があります。 紆余曲折を経て今は DirectX 9.0c 上で動作していますが…。 あと, ゲームに限らず MIDI や CD-DA を多用している点がネックとなるかもしれません。 上述のファーランドサーガでは, 当初は Windows 98 上の『S-YXG 100 Plus』を使用した MIDI で動作させていましたが, ES1371 上での S-YXG 100 Plus (要はソフトウェア MIDI。) が使い物にならず, 今では Windows 2000 上の CD-DA での実行を余儀なくされています。
余談ですが, このファーランドサーガ。 キャラデザが山本和枝氏なのですが, シナリオや SRPG の仕様, BGM, イベント画・立ち絵等の線画, …といった辺りの改変を伴わない, 解像度と塗りとエフェクト方面のみを向上した, 現 OS 対応版の登場を個人的に切望しています。 プログラム資産的にも技術は受け継がれているでしょうから, 何かの間違いで Studio e.go! から出てくれないかしら? (爆)
次に DirectX 8.1 系までの方々:
以前と異なり『Age of Empires II (AOK)』 『Diablo II』共に製品版での動作となっています。 「VMware 上では AOK のプロテクト CD を扱えない」というネタを見かけたので今回製品版を試してみたのですが, 少なくとも (私の使っている環境での) VMware 6.5 では大丈夫のようです。 といいますか, 今までプロテクト CD を使えなかった試しが無かったりします。 (^^;) 動作も軽く『FORTUNE ARTERIAL』共々 VMware での使用に何ら問題は有りません。 それに対して Diablo II は, フルスクリーンの排他動作でも意外と重くプレーするのが少々辛い状況となっていて, 2 章で早くも破綻しそうな気配です。 VMware 6.0 の頃はウインドウモードでもプレーが可能だったのですが, 新たにエフェクト等の有効となった点が仇となってしまっているのかもしれません。 ちなみに, SVGA 表示となっているのは Lord of Destruction 状態だからです。
続いて, エフェクト方面などに小出しで Direct3D を使用している DirectX 9.0c 系ソフトの方々:
『プリミティブリンク』と『Wiz Anniversary』については製品版です。 これらのソフトでは, 画面の拡大・縮小・スクロール, 特定領域でのクリッピングや座標変換を伴っての複数動画再生, エフェクト, そして それらの透過を伴った重ね合わせ, …といった特定用途のため (だけ) に DirectX 9.0c や Direct3D が必要とされています。 また, 密かにピクセルシェーダーが使われていたりもします。 そのため, 見かけに反して VMware 6.0 まででは動作しないものとなっています。 (除く 検証版魔女っ娘ア・ラ・モードII。)
小出しでしか Direct3D の機能を使わないことと, ピクセルシェーダーなどオーバーヘッドの小さい処理が (たまたま) 多いことから, 総じて VMware 上でも重さが気にならないものとなっています。 一方, この辺りの (VMware 6.5 を必要とする) ソフトから小さな不具合も発生し始め, 例えば Wiz Anniversary 辺りではセーブ・ロード画面でのサムネイルが黒抜きとなってしまっています。 もっとも, この現象は実機でも GPU やドライバーの版によって発生しますけれど。
続いて, アクション系には ほど遠いものの, 一応清く正しい Direct3D 使用ソフトと言えそうな方々:
『聖なるかな』だけが製品版で残りは一応全て「ベンチ」と銘打たれています。 これらは, アクション系とは比べようがないものの Direct3D を使いまくっている類のソフトです。 Direct3D への依存度とオーバーヘッドの大きい処理の含み具合で動作状況が大きく異なってくる傾向にあり, 比較的依存度の低い 聖なるかな と『ゆめりあベンチ』以外では「動いているだけ」と言えそうなほど非常に動作が重いものとなっています。 この辺り (後ろ 3 つの重い組。) になると, (基本的に) AGP メモリーが前提となっているなど VMware では能力不足に陥ってしまっていて, その辺りも影響して そこかしこで正常に描画されなかったりもしているのですが, そもそもホストで動作させるべきソフトですから, あまり大きな問題とはなりません。
VMware の対応具合や重さなどのチェックに都合の良いのが この辺りのソフトです。ちなみに, (恐らく) Build 99530 以降では異方性フィルターが使えます。 オーバーヘッドの関係か重さに違いはありませんので, バイリニアよりは こちらを指定しておいたほうが良いでしょう。
最後は, 正統派 3D ベンチマークの方々:
VMware の Direct3D 対応度 (だけ) を見るのであれば, 基本となりそうなのが これらのソフトです。 この中で一番重いのは『GL Excess』です。 OpenGL ソフトである点が影響しているのかどうかは定かではありませんが, 恐らく影響しているのでしょう。 (^^;) 予想に反して非常に重いのが『FINAL REALITY』です。 Win9x 系のソフトである点がオーバーヘッドに大きく影響しているのか『N-Bench3』よりも重いくらいなのですが, ソフトウェア 3D を指定すると一部描画がおかしくなるものの非常に軽くなります。 これらは もはや「動くだけ」状態に陥っています。
それに対して どこまで行っても (新作となっても。) 比較的軽めのまま推移しているのが 3DMark 系です。 『3DMark2000』辺りは ともかく, 『3DMark05』辺りでも, FINAL REALITY や GL Excess 辺りと比べて随分軽い印象を受けます。 さすがに 3DMark05 ともなると VMware の能力不足が露呈して正常描画されなくなっていますが…。 3D ベンチマークは「重い・軽い」の両極端という印象がありますので, 「重さ」のチェックには あまり向かない気がします。 余談ですが, 3DMark99 MAX の動作不可だった点が非常に残念です。 (^^;)
VMware 6.0 で行われた OpenGL 系での内部処理共通化により, ハード要件でのハードルの高さは伴ったものの, VMware 6.5 へ掛けて Direct3D への対応度が大きく向上しました。 が, 実用度という点では, 少なくとも現状は「?」という気がします。 短期的には「DirectX 10.0 と WDDM への対応」という目標が存在する (であろう) わけですが, 現在の大きなオーバーヘッドを伴った構造では対応したところで意味がありません。 (実質使い物にならない。) それがゲーム等のアプリではなく OS の基本機能として使われるだけに…。 VMware Workstation 7 では無理でしょうが, VMware 7.5 か 8.0 辺りで VT-d への対応化が始まるでしょうから, 「ホストと同じハードのドライバーが用意されているゲストでしか使えない」といった仕様にしてしまわない限りは, Windows ホストでは DirectX, Linux ホストでは OpenGL と, 内部処理が分かれて行くのかもしれません。
Sep.6,2008 追記
Diablo II ですが, Direct3D の場合は何をどうやっても重くなってしまうようです。 グラフィックテストのダイアログで DirectDraw を選択するとサクサクになります。 どうやら, 体験版は強制 DirectDraw で動作していただけのようです。 確かに, エフェクト等の設定可能項目が DirectDraw の場合と同様になっていた気がします。
Sep.12,2008 追記
Diablo II を含めて, DirectX 6.0 まで (7.0 未満) のソフトが遅くなってしまうようです。 6.0 レベルと言えばハードウェア T&L 未対応が真っ先に思い浮かびますが, ソフトウェアで処理させても大きな速度低下には繋がっていないことから あまり関係なさそうです。 その 6.0 レベルの処理にしても, ドライバーが HAL に対応していない…というよりも, むしろ強制的に HEL で処理されているといった感じが強いです。 本当のところはよく分かりませんけれど。
Oct.11,2008 追記
一応リンクは存在するものの辿り着くのに難儀するかも…ということで, この項目の内容を『VMware 上で動作した DirectX 使用ソフト (DirectX のバージョン別)』ページに纏めました。 基本的に内容は同じですが随時更新されるのが, こことの違いです。
Oct.14,2008 追記
VMware 7.0 の動作確認テストへ向けて VMware 6.5 用として新たに Windows Vista ゲストを作成しましたので, 3DMark99 Max の動作確認も行えるようになりました。 (笑)
Jun.21,2010 追記
『Wiz Anniversary』のサムネイル表示不具合ですが, ForceWare を 257.21 へ上げたところ解消されました。
先日, UNLHA32.DLL での お遊び (実装実験) 予定について書きましたが, まずは暗号化で遊んでみることにしました。 時間的余裕がありませんので, (UNLHA32.DLL としての) 正式対応が いつになるかは全く判りませんけれど。 そこへ至るまでには紆余曲折が予想されますし, 新版・旧版での非互換 (旧版で掛けた暗号が新版で復号できない等。) も発生することでしょう。 それはともかく, まずは叩き台としての仕様概要覚え書きなぞ:
- 暗号化については前に書いたとおり AES-256 を予定。 モードは CBC を使用。 とりあえず Salt は無しで IV については 7-Zip 同様前半 64 ビットをヘッダーに記録する。 ただし, 初期実装では IV を記録しない。 後半 64 ビットは何らかの形でヘッダーの内容が影響を及ぼすようにする予定。 (ヘッダー改竄防止の足しにならないかなぁ~と。 ^^;) 7-Zip の暗号化形式を採用するわけではありません, 念のため。 (笑)
- 初期実装では圧縮イメージの暗号化しか行わない。 従って, 各種参考情報はヘッダーから読み放題。 (^^;;
- 暗号化の情報を扱うプロテクト情報ヘッダー (ID 0x47) を追加。 サブ ID で暗号形式を示し, 以降のデーターはサブ ID によって異なっても良い。 初期実装である上記 AES-256 形式のサブ ID は 0x01。 0x00 と 0xFF については特殊 ID として予約しておく。
- サブ ID 0x01 用としては, パスワード検証用データーと IV 情報を記録可能とする。 ただし, 上述のとおり初期実装では IV は記録されない。 また, パスワード検証用データーは仕様が存在するだけで今のところ使用予定が無い。
- 互換性は失われるもののヘッダーの暗号化は行えたほうが良いでしょう…ということで, とりあえず それを示すメソッド ID として "ph1" を予約。 暗号化を行う場合は, 上述のプロテクト情報ヘッダーに実際の圧縮メソッド (例えば "lh5"。) を記録する。
- 拡張ヘッダーを使用できる Level 1 ("h1") 以降のヘッダーのみで暗号化が可能。
- 暗号化ヘッダーでは基本ヘッダーの 8 バイト目 ("-lh7-" のメソッド ID の直後。) から拡張ヘッダーの最後 (終端を示す 0x0000 若しくは 0x00000000。) までを暗号化する。
- Level 1 ヘッダーではヘッダー全体のサイズが記録されないことから, Level 3 ヘッダーと同様の位置に付加情報としてサイズを記録するようにする。
- 上記の処理を行うことで事前 (若しくは必ず読み込まれるサイズ内で) のサイズ取得が可能となることから, ヘッダーの暗号化についても AES-256 を使用する。 上記の処理を行わない上で Level 1 ヘッダーに対応する必要があるのであれば, 何らかのストリーム暗号を使用することになると思われる。
|