放浪猫

主に技術ネタとか同人とかの雑記

Windows95/98/Me/XP版の遙か2をWindows10/11上のWindowsMe仮想環境で起動するためのメモ

遙かなる時空の中で2というPCゲームをご存じだろうか。2001年9月頃の製品である。

何をとち狂ったか、Windows10/11でやれたらいいなぁと漠然と思った。

きっかけはそれだけだった。

もうすごい色々と大変だったので自分用に端的にここに書き残す。

去年のメモなのでぐちゃぐちゃである。整理したいし更新もしたいけどちょっと時間がないので一旦書くだけ書く。懇切丁寧な解説は、別途冊子にしてまとめたい。

動いた組み合わせ

・ホストOS:Windows10
・仮想環境:VMWare Workstation 16Player
・ゲストOS:WindowsMe
・動作:◎

画像

ポイント
・画面サイズ - スタンダードVGAモードが要求される。(解像度640×480)
WindowsMeがデフォルトでDirectX7.1が入っているからDirectX7.0aは入れなくていい
WindowsMeはメモリサイズ512MBくらいにする(1GB以上にしない)
・dxdiagのテストが通れば動く。仮想環境に16bitハイカラー設定を追加する。
・音割れが発生するので解消する必要がある。
・仮想環境はVMWareに入れる。
 - Hyper-VWindowsMeのインストールをサポートしていないようで途中で死んだ。
 - VirtualBoxWindowsMeのインストールはできるが音が鳴らず、
       光学ドライブをマウントするとフリーズする。
 - VMWareWindowsMeを入れて起動できた唯一の環境。

1.Windows10/11の仮想マシンを有効化する

 1.BIOSで仮想化支援機能を有効化。再起動。
 2.Windowsの機能の追加で.NET Framework 3.5 を有効化。再起動。

2.Windows10/11にVMWareをインストールする(非営利なら無料)

VMWareBroadcomに買収されたので、アカウントを登録してインストールする。

  1. Broadcom に登録する。
  2. VMwareのサイトにアクセスする。

    https://support.broadcom.com/group/ecx/productdownloads?subfamily=VMware+Workstation+Pro

  3. 「for Windows」を選択する。
  4. 最新版を選ぶ。
  5. 「Terms and Conditions」をよく読んで確認する。
  6. ダウンロード用のボタンをクリックすると、ダウンロードが始まる。
  7. ダウンロードしたインストーラ(VMware-player-full-17.x.x-yyyy.exe)を右クリックし、セキュリティブロックを解除する。その後、右クリックから「管理者として実行」を選択してインストールを開始する。
    ユーザーアカウント制御(UAC)の確認ダイアログが表示された場合は「はい」をクリックしてインストーラの実行を許可する。
  8. インストールウィザードの実行
    使用許諾契約書を注意深く確認し、同意する場合は「I accept the terms in the License Agreement」にチェックを入れ、「Next」をクリックして次に進む.
    インストールオプション画面では,拡張キーボードドライバ(Enhanced Keyboard Driver)のインストールを選択する。
  9. インストール先フォルダを確認する。デフォルトのパス(C:\Program Files (x86)\VMware\VMware Player)から変更が必要な場合は,「Change」をクリックして適切な場所を指定する。
  10. 「Install」をクリックしてインストールを開始する.
  11. インストール完了画面が表示されたら,「Finish」をクリックする。
  12. システムの再起動を要求された場合は,実行中のアプリケーションをすべて終了し「Yes」をクリックしてシステムを再起動する。
    システム再起動後、デスクトップに新しく作成された「VMware Player」アイコンをダブルクリックして起動する。
  13. 初回起動時のライセンス選択画面では、個人利用の場合は「Use VMware Player for free for non-commercial use」を選択する。(企業での商用利用を予定している場合は,正規のライセンスキーを購入して入力する)

3.WindowsMeのインストールディスクを作る

※正規OSのDISKがある前提。
WindowsMeはブートがフロッピーなので仮想イメージを作る必要がある。
1.所有OS(Win95/98/Me/XP)のDISKからImgBurnとかで.isoを作成する。
  (国内版との互換性で今回はMe。
   98からのアップグレード版の場合は98でもisoを作る)
2.作成ツールなどでDOS用起動ディスクを作成。
  (DL後propertyからsecurity block解除して解凍)
    https://radioc.web.fc2.com/soflib/mkw9ximg/mkimage.htm
  ・mkw9ximg\WinMe必要ファイル展開.bat実行。
  ・DISKドライブのパス指定(E:\win9x)して実行。完了したらfilesができる。
  ・mkw9ximg\makeBootDisk.exeをそのまま実行。
  bootdisk.imgができるので、拡張子をvfdにリネーム。
3.物理ディスクを抜いておもむろにケースに入れる。


(注意:2024年頃 VMWare Workstation 16Playerのときは正常に動いたが、最新のVMWare Workstationにしたらディスク読み込み周りがうまくいかなくなったのでやっぱりだめかもしれない。)

4.VMWareWindowsMeをインストールする

VirtualBoxでもVMWareでもだいたい同じなのでVirtualBoxで書いてた手順を残す。

1.仮想マシンを新規作成。
  ※ハイスぺすぎると起動不可。
 ・名前:WindowsMe
 ・ISOイメージ:作成したisoを指定
 ・タイプ:Microsoft Windows
 ・バージョン:Windows ME
 次へ
 ・メインメモリー:512MB
 ・プロセッサー数:1
 次へ
 ・仮想ハードディスクを作成する:4GB
 ・全サイズ事前割り当てのチェックON
 次へ
2.設定確認
 ・システム>起動順序:フロッピーが一番上になっていることを確認。
 ・ストレージ>フロッピー:作成したbootdisk.vfd。コントローラIDE:作成したiso。
 ・ネットワーク:設定しなくていい
 → 起動。ブート選択のDOS窓が出れば成功。
3.DOS窓の指示に従いStart Computer with CD-ROM support。使用キーボードを指定。
4.ストレージにFAT32パーティションがないので怒られる。fdiskコマンド実行
  A:\> fdisk
  全部エンター。終わったらメニューから再起動する。
5.フォーマットコマンド叩いてCドライブをフォーマットする。
 A:\> format c:
 フォーマットしますか?→ Y
 エンター
6. isoが入っているドライブを選択してsetupを実行。Meをインストールする。
 A:\> E:
 E:\> setup
 ※コンベンショナル メモリが足りないって怒られる場合は省略オプション付けて実行。
  setup /is /im
7. Windowsのインストール画面が開始される。(右Ctrlキー長押しで抜ける)
プロダクトキーを入れてインストールをする。
(アップグレード版で98ディスクを求められたらメニューのメディアから一旦Meのisoを取り出し、
 98のisoに差し替える(tabで展開する)。画面指示に従ってMeのisoに戻す。)
正常に終了すれば、WinMeの仮想イメージ(.vhdx)ができる。
8. 終わったら一旦終了して、起動順序をハードディスク一番上に変更。
9. WindowsMeが正常に起動することを確認する。

画像

WindowsMeのディスプレイ設定を追加してテストを通す

ここから遙か2を遊ぶためにdxdiagのディスプレイテストを通す必要がある。
普通にインストールすると起動で以下のエラー画面でもれなく死ぬ。
画像

起動しようとすると、dxdiagのテストが通らない。DirectX関係のエラーが発生する。
フルスクリーンで描画しようとして失敗している。2001年当時のゲームは多くが DirectDraw 5〜7 を使用し、SetDisplayMode(640,480,16bit) のように直接解像度を変更してフルスクリーン化していた。
VMware Tools が提供する仮想グラフィックドライバは
・16bitカラー(HighColor)モードをサポートしていない
・640×480 固定モードをエミュレートしない
ため、失敗する。

画像
そもそも設定に16bitHighColorがないため、設定を追加する必要がある。
起動にはスタンダードVGAが要求される(=解像度640×480で16bitカラー(65536色ハイカラー))
ここが足りないので仮想マシンの設定から追加する。

.vmxファイルをメモ帳で開いて、「svga.spoof16bppHost = "TRUE"」を追加する。
これで32bitカラーが無効になる代わりに16bitカラーが使えるようになる。

画像
dxdiagのディスプレイタブのDirectDrawテスト。
全画面リサイズでの白ブロックぽよぽよテストが表示されれば描画系は大丈夫。

画像

PC版遙か2をインストールする

インストールディスクからゲームをインストールする。
WindowsMeがデフォルトでDirectX7.1が入っているからDirectX7.0aをインストールしようとしてはじかれるのは正常なので、これは特に問題ないエラー画面。気にしなくていい。
画像

Windows Me のデスクトップを右クリック → [プロパティ] → [設定]

「色」= HighColor(16ビット)
「画面の領域」= 640×480 に変更

再起動後、ゲームを起動。これで起動するはず。


※依存関係で問題があるのはおそらくkernel32.dllのAPI参照エラー。それとOSの互換性エラーで、起動時の内部ファイル生成の処理が失敗してる。これを解決するのはWindows10/11では不可能と思われる。したがって仮想環境に95/98/Meをインストールして、ゲーム動くように設定変え、音割れ問題解決が妥当。

VMWare上のWindowsMeの音割れ問題を解消する

そのままだとすっごいバリバリした音割れが発生する。
ホストOSがWin11かつゲストOSがXPならタイマーのレジストリで直るっぽい。Win10の場合は以下の手順で解消する。
VMAudioBackHost単一実行では解消しない。

1.レジストリ修正(Windows10/11両方)
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel]
"GlobalTimerResolutionRequests"=dword:1 追加


2.VMAudioBackHostをVMWare起動後に実行する(Windows10) ※1回だけで良さそう

開発者リンク・ダウンロード
https://github.com/Raymai97/VMAudioBackHost/
ダウンロードリンク「VMAudioBackHost_1.0.0.zip」
https://github.com/Raymai97/VMAudioBackHost/releases/tag/1.0.0

作者メモより

仮想マシンではなく、ホストマシン上でプログラムを実行してください。
仮想マシンを起動した後、「Start」ボタンを押してください。
・うまくいかない場合は、"Set timer resolution of current process "にチェックを入れて、再度実行してください。
・このプログラムはレジストリキー:HKEY_CURRENT_USERを使用します。
・このプログラムはVMwareプロセスにDLLを注入するので、アンチウイルスソフトはパニックを起こすかもしれません。

 

ここまですればWindows10+VMWare Workstation 16Playerでなら動いた。
Windows11+VMWare Workstation 17系だと光学ドライブのマウントでゲームディスクが読み込めない問題が発生した。

Windows11でどうにか直接起動する方法はないか?

ゲームディスクをホストに外付けしたUSB先のディスクドライブから読み込んでいたが、VMWareの更新に伴い、ドライブをうまく読み込んでくれなくなってしまった。USBのドライバを当てても駄目だった。インストールできてもゲーム起動できないのは本末転倒である。

なんとか直接起動する方法がないか模索中である。
Windows XPの正規OSもライセンスを持っているため、WindowsMeではなくそちらをHyper-Vあたりで利用するほうが無難かもしれない。別途記述する。