仮想マシン上のWinXPでDirectX使用のゲームを試す [VMP / VirtualBox]
いい加減、XPの実機を解体してソフト資産を仮想マシンに移行できないかと検討していたんだけど、仮想マシンのDirectXサポートが思ったより貧弱だったのと、現行のWindows 10で動くソフトが結構あった。Win98機を残せば、実機の廃止自体は可能なんじゃないかと思っているところ。
まず、ライセンス認証の手間がないWindows 2000を仮想マシンに入れてみたんだけど、Direct3Dを満足に動かすにはVMwareもVirtualBoxもXPが最低ラインになっているようなので、結局XPにせざるを得なかった。
VirtualBox上のXPでDirect3Dを有効にする
VirtualBoxでDirect3Dを有効にするにも一苦労。XPで3Dアクセラレーションを有効にするには現行最新のバージョン6.2系列ではダメで、5.2系か6.0系が必要になるらしい。仮想化ソフトの間ですら、もはやXPのサポートは過去のものとなりつつあるのか。
Guest AdditionsでDirect3Dサポートをインストールするには、XPをセーフモードで起動する必要がある。Windowsのシステムファイルに改変を加える必要があるためらしい。なので、後からService Packをインストールする場合は、その後にGuest Additionsを再インストールする必要がある。
ソフト検証結果
ホストPCのCPUはRyzen 5 3600 (3.9GHz)、メモリは16GB、グラボはRadeon RX 580 8GB、OSはWindows 10 (21H1)。仮想化ソフトはVMware Workstation 16 Player (16.1.2) とVirtualBox 5.2.44。ゲストOSはWindows XP Professional Service Pack 3 日本語版。
タイトル | リリース年 | 使用ライブラリ | VMware | VirtualBox | Win10実機 |
---|---|---|---|---|---|
らじおぞんで | 2003年 | ddraw.dll | ×崩れ | ×崩れ | ○※ |
飛翔鮎 | 2003年 | ddraw.dll | ×崩れ | ○ | ×暗転 |
GUNDEADLIGNE | 2004年 | ddraw.dll | ×崩れ | ×崩れ | ○ |
Diadra Empty | 2004年 | DXL (ddraw.dll) | ×崩れ | ○ | ○ |
Hellsinker Ver.1.008f (DX8) | 2008年 | ddraw.dll | △崩れ | △遅 | ○ |
Hellsinker Ver.1.009 (DX9) | 2012年 | d3d9.dll | △崩れ | △全画面 | ○ |
東方紅魔郷 | 2002年 | d3d8.dll | △遅 | △全画面 | △全画面 |
東方妖々夢 | 2003年 | d3d8.dll | ○ | ○ | ○ |
空飛ぶ赤いワイン樽 | 2007年 | DXL (d3d8.dll) | △崩れ | ○ | ○ |
∀kashicverse Ver.1.31 | 2013年 | DXL (d3d9.dll) | ○ | ×暗転 | ×暗転 |
ゆめりあベンチ | 2003年 | d3d9.dll | ○ | ○ | ○※ |
タイムリープぶーとべんち | 2007年 | d3d9.dll | ○ | △HDR | ○ |
タイトルはさておき、比較の上で見るべきは使用ライブラリ。この点に注意すると、以下のような問題が見えてきた。
DirectDraw (DirectX 7以前) の互換性の低さ
ddraw.dllはDirectX 7以前で使われるライブラリだが、VMwareではテクスチャの表示が崩れて正しく表示できず、VirtualBoxでも正しく表示できないソフトがあった。一方、実機のWindows 10では正常に動作するものが多かった。この中で動作しなかった2本について、らじおぞんでは実機ではd3drm.dllを補うことで正常に動作。飛翔鮎は画面モードの切り替えに失敗してグラフィックだけ暗転したままになってしまう。
古いWindowsゲームがWindows 10実機で動くかどうかはソフトが要求する画面モードのサポートに左右されるところが多い。その要求の厳しいものはXP世代の実機でもハードウェア次第で動くとは限らないので、XPよりもさらに古い世代のPCがあった方が確実という話になる。
DirectX 8以前のソフトで描画処理が重くなる問題
DirectX 8以降のサポートはホスト環境に依存するところが大きい。d3d8.dllはDirectX 8対応ソフトで、現行のWindowsやグラボではソフトウェアエミュレーションによるサポートとなっているためか、特にオーバーヘッドが大きいVMwareでは描画オブジェクトの数が多いと処理が遅い。ホストで使用しているCPU (Ryzen) は現行世代でも速い方だと思うが、Hellsinker (DirectX 8版) はシーンによってはかなり重くなる。Hellsinkerについては作者サイトにあるDirectX 9対応パッチを使用することで、表示の仕様が若干変わるが、問題は解決する。
DirectX 8以前のソフトでフレームレートが高速になる問題
一方、Windows 10での仕様変更(というか互換性低下)によりDirectX 8以前のソフトはVsyncと同期が取れない。このため、ソフトによっては動作が速すぎるという問題が生じる。ウィンドウモードにすることで解決可能だが、仮想マシン上でのウィンドウモードは動作速度への影響が大きい。設定から同期方法をVsyncとタイマーで選べるソフトであれば、タイマーでの同期に切り替えることで解決できる。上記の表ではゲーム内設定の変更で解決可能であれば「○」としている。東方紅魔郷にはそのような設定はないが、幸いにも知名度が高いだけに非公式パッチがいくつか出ている。
その他の互換性問題
ゆめりあベンチはWindows 10では実行ファイルのプロパティで互換性タブ中「全画面表示の最適化を無効にする」にチェックを入れると正常に実行できる。
∀kashicverseはもともとWindows 8非推奨として公開されたソフトで、実際Windows 8.1では動作しなかった。幸い、現在も開発者が同人活動を続けており、2020年にWindows 8.1, 10に対応したSteam版がリリースされた。
VMwareでは一部のソフトで負荷が掛かったときに画面が崩れることがあった。特に画面崩壊が著しい場合は×とした。
解決方針
実機の現行Windowsで動作するソフトは意外に多い。ちゃんと動作検証するには時間を要するが、起動だけ確認した限りでは、XP世代の同人ゲームの半数以上はWindows 10でも動作した。
ddraw.dllに依存するゲームというのは、Win98がまだサポートされていた世代のものがほとんどなので、Win98が動作するPCを用意してしまえば解決する。Win98世代はスペックが心許ないので、Win2000からXP初期の世代(2000年から2003年)のマシンが狙い目だろうか。
商業ソフトでは事情がやや異なり、コピープロテクトがXPに依存していることが多い。日本で商業PCゲームと言えばギャルゲー等が大半を占める。VMwareやVirtualBoxのDirectXへの対応は不完全だが、ギャルゲーで3Dスペックを要求するものなんて指折り数えるくらいじゃなかろうか。それくらいは仮想マシンでカバーできる。
互換性や使用感に問題がなければ、XPのソフト資産は仮想環境、Win10、Win98のいずれかに移行していきたい。