Windowsで動くゲームは昔のWindows95/98用ゲームから始まり、ちょっと前のWindowsまで大半のゲームは32bitコードのプログラムです。
今のWindowsを64bit環境で使っている人が多いと思いますが、そのままでは32bitコードのプログラムは動きません。Windows側で「WOW64」というエミュレーションがされます。
WOW64を理解しておくことで昔のゲームを今のパソコンで動かせる可能性が高まります。
参考にしたWEBページ
32bitアプリを64bit Windows 7で動かす「WOW64」(ASCII.jp)
第2回 Win32アプリケーションを実行するWOW64(@IT)
WOW64とは
Windows 32bit On Windows 64bitの略。64bitのWindowsで32bitコードのプログラムを動かすエミュレーションの仕組みです。
CPU自体だとx86の64bit化自体は32bitとの互換性が高い状態で拡張されています。加えてWindows側は32bitコードのプログラムの互換性を維持するためにWOW64の仕組みが動いて対応します。
64bit環境で32bitコードのプログラムは以下のような動き、制限があります。
- 32bitコードのプログラム向けに32bitで扱える仮想メモリ空間が割り当てられる
- 32bitコードのプログラムと64bitコードのプログラムは1つのプロセス内に混在できない
- DLLも32bitコードのプログラムは32bitコードのDLLを呼び出す必要がある。32bitコードのプログラムから64bitコードのDLLを呼び出せない
- Windowsのシステムフォルダやレジストリは32bitコード用に用意されたものにアクセスするようにリダイレクトする
32bitのゲームを64bit環境で動かすときのポイント
古いゲームのインストール先は標準のProgam Filesフォルダにしない
64bit環境では64bitコードのプログラムは C:¥Program Files に、32bitコードのプログラムは C:¥Program Files(x86) にインストールされます。Program Files(x86)やProgram FilesフォルダはWindowsの管理下になっています。
Win95/98向けのような古いゲームをこれらのフォルダにセットアップしようとしても、セットアップが途中で失敗したり、入ってもゲームが動かなかったりします。
古いゲームをセットアップするとき、手動でファイルをコピーしたり、ゲーム付属のインストーラを使うならCドライブ直下にフォルダを作って入れる方が動くことが多いです。
システムフォルダのアクセス先がSysWOW64になる
32bitコードのゲームがWindowsシステムフォルダにアクセスするとき、64bit環境だとWindowsシステムフォルダ(C:¥Windows¥System32)ではなく、SysWOW64(C:¥Windows¥SysWOW64)に自動的に切り替えられます。
SysWOW64フォルダには32bit版のアプリケーションやDLLが保存されています。
ゲームを起動してもDLLが見つからなくてエラーになったり、DLLがうまく配置できない場合は確認しましょう。なお、DLLの問題なら遊ぶゲームの実行プログラムと同じ場所に置くことでもDLLの参照が最優先される仕組みもあります。
レジストリのアクセス先がWow6432Node配下になる
WOW64により HKEY_LOCAL_MACHINE¥Software¥Wow6432Node が用意されています。64bit環境では32bitコードのプログラムがレジストリを使うときは自動的にこの下に作られます。
もし32bit環境にインストールしたゲーム一式を64bit環境にコピーするとき、レジストリの保存先を変えてみましょう。