はじめに
サイバーフロント版の「Never7 -the end of infinity-」(Infinity Plus)をWindows 11で起動しようとしたところ、エラー表示もなく落ちてしまった。(アフィリエイトリンクじゃないヨ)

結果としてdgVoodoo2の導入とXP互換モードの設定で動くようになったので、手順をメモしておく。
環境
- Windows 11 Pro(Build 26300)のミニPC(Intel UHD Graphics)
- 別のPCからリモートデスクトップ(RDP)で接続して操作
- ゲームの実行ファイルは
Never7win_3d.exe(2001年ビルド)
症状
起動メニューで「開始」を押すと、ゲーム画面が出ないまま落ちる。エラーメッセージは出ないが、イベントビューアーのアプリケーションログには毎回同じ内容が記録されていた。
- 例外コード:
0xc0000005(アクセス違反) - エラーの発生場所:
Never7win_3d.exeのオフセット0x0000594b
原因
該当箇所をClaudeに分析させたところ、グローバル変数に入っているCOMオブジェクトのポインタを、NULLのまま参照して落ちていたとのこと。呼び出しの形から、IDirect3DDevice7::Clear と見られる。つまり3Dデバイスの作成に失敗しているのに、そのまま描画しようとしているようだった。
そこで、RDP接続中に dxdiag で確認すると次のようになっていた。
| アダプター | DirectDraw | Direct3D |
|---|---|---|
| Microsoft Remote Display Adapter(RDPの画面) | 使用不可 | 有効 |
| Intel UHD Graphics | 有効 | 使用不可 |
このゲームが使うDirectDrawとDirect3Dの両方が使えるアダプターがないことが原因で落ちていたと考えられる。RDPを使わなければ動くが、RDP経由で外からスマホでプレイしたいので対処する。
対処1:dgVoodoo2を導入する
dgVoodoo2は、古いDirectDrawやDirect3Dの命令を新しいDirect3Dに変換するツールだ。インストールは不要で、ファイルをゲームフォルダーにコピーするだけで使える。今回は2.87.6を使った。
dgVoodoo2_87_6.zipをダウンロードして展開するMS\x86\DDraw.dll、MS\x86\D3DImm.dll、dgVoodoo.confを、Never7win_3d.exeと同じフォルダーにコピーする- ゲームを起動し、起動メニューで「窓モード」を選んで「開始」を押す。確認のメッセージが出たら「OK」を押す
ゲームが32ビットなので、64ビット用ではなく x86 のDLLを使う。元に戻すときは、コピーした3つのファイルを消すだけでよい。
これでタイトル画面まで表示された。ただ、右下に「dgVoodoo」のロゴが出る。消すには dgVoodoo.conf の次の行を false に変更して、ゲームを起動し直せばおk。
dgVoodooWatermark = false
対処2:XP互換モードを設定する(音が出ないとき)
exeのXP互換モードが外れた状態で起動すると、音が出なかった。Windowsの音量やミュートに問題はなく、ゲームの音声出力がゼロになっていた。互換モードを戻すと音が出るようになった。
Never7win_3d.exeを右クリックして「プロパティ」を開く- 「互換性」タブで「互換モードでこのプログラムを実行する」にチェックを入れる
- 「Windows XP (Service Pack 2)」を選んで「OK」を押す
互換モードで音が直る理由は不明。動けばよかろうなのだ。
まとめ
エラーなしで落ちる古いゲームでも、イベントログと dxdiag を見れば原因の見当がつくことがある。RDP環境で古いDirectX 7のゲームが動かないときは、dgVoodoo2を試す価値がありそうだ。
ちなみに、Ever17、Remember11、12Rivenは同じ環境で互換モード無しでも普通に起動した。な~ぜ~。
まあ、Never7とEver17に関してはSteamで販売されているので、こっちを買った方が手っ取り早い。SteamLinkで遊べるし。


おしり。

コメント