Steam版Biohazard 0 HD Remaster と Biohazard 1 HD Remaster が起動しない件を解決した話(resident evil 0, 1 HD)
いつものようにネットサーフィンをしているときに、ふとsteamを見てみると「原作バイオハザード1~3が発売されている…?! 買うしかない!!」と思いバイオハザード作品を爆買いしてしまったのですが、バイオ0と1のHD版が起動しない不具合が発生…
せっかく購入したのに…と試行錯誤すること半日、やっとのことで起動することができたので、
どのような設定が必要だったか
をご紹介します。
PC環境
参考までに、事象発生時のPCスペックです。
CPU:AMD Ryzen 9 9950X
GPU:NVIDIA RTX 5070 ti(ドライバ:595.97)
RAM: DDR5 32GB
SSD:NVMe Gen5 SSD 2TB
HDD:10TB
OS:Windows 11 Home 64bit 25H2
モニターには「ROG Strix XG27ACS」を使用しています。
状況確認
事象について
Steamのゲーム選択画面でプレイボタンを押す
新しい黒塗りのゲームウィンドウが立ち上がる
5秒程度待機した後に2.のウィンドウが勝手に閉じる
Steam側でゲームが停止し、1.の状態に戻る
ログ確認
まず「イベントビューアー」のWindows > Applicationを確認しました。
障害が発生しているアプリケーション名: re0hd.exe、バージョン: 1.1.0.0、タイム スタンプ: ***
障害が発生したモジュール名: re0hd.exe、 バージョン: 1.1.0.0、タイム スタンプ: ***
例外コード: 0xc0000005
「障害が発生したモジュール名」がexe本体なので、その他のライブラリは関係なさそう?
でも本体側から何か参照してるかも…?
とりあえず、いろいろ調べてみることにしました。
例外コードについて
今回のアプリケーションエラーの例外コードはプログラムが許可されていないメモリ領域にアクセスした際に発生する
「アクセス違反(Access Violation)」
とのこと。
これが表示される原因は、
ドライバーの互換性の問題
レジストリの破損
DLLファイルの無効化
メモリ(RAM)の不具合や障害
ソフトウェアの不具合
など多岐にわたります。
ほーん…わからん()
勘のいいひとはこれで気づけるんですかねぇ…
情報収集
まずは生成AIやウェブ検索で情報収集してみます。
調べるにつれ先人が意外に多いことに驚きつつ、主な原因の候補としてこれらがあることがわかりました。
DirectXのモジュール不足
Steam側のアプリ設定
グラフィック/ディスプレイの設定
試行
1.DirectXのモジュール不足
バイオハザード HD の 0, 1のどちらも2015~2016年と約10年前の作品になるため、 DirectXも当然古いバージョンを使用して開発されています。
Steam版の必須・推奨環境項目には
DIRECTX: Version 9.0c
の記載があり、Windows 11では「DirectX 12」が標準搭載されていますが、旧バージョンについては下位互換があるものの、一部の拡張ライブラリについては別途インストールする必要があるとのこと。
〇最新版の DirectX をインストールする方法
サポート -最新版の DirectX をインストールする方法
念のためランタイムをインストールしたものの、基本的には明示的に「~.dllが不足している」ようなメッセージが表示されない限りは不要だったかもしれません。
原因であれば、少なくともログの「障害が発生したモジュール名」に表示されていたと思います。
〇DirectX エンドユーザー ランタイム
https://www.microsoft.com/ja-jp/download/details.aspx?id=8109
Visual C++ 再頒布可能パッケージも2010までインストールしましたが、影響があったかは不明です。
〇サポートされている最新の Visual C++ 再頒布可能パッケージのダウンロード
https://learn.microsoft.com/ja-jp/cpp/windows/latest-supported-vc-redist?view=msvc-170
これらは直接的な解決とはなりませんでした。
2.Steam側のアプリ設定
いわゆる「オーバーレイ」の設定です。
一部のゲームでは競合などの不具合が発生し、ゲームがクラッシュする事象があるようですね。
Steam全体またはアプリ個別の設定が可能です。
○Steam全体
Steamウィンドウの左上にあるSteamの文字 > 設定 > ゲーム中 > ゲーム中にSteamオーバーレイを有効にする をオフ
○アプリ個別
ライブラリのアプリ一覧 > 対象のアプリを右クリック > プロパティ > 一般 > ゲーム中にSteamオーバーレイを有効にする をオフ
で無効化することができます。
ですが、私の環境ではこれで解決には至りませんでした…
3.グラフィック/ディスプレイの設定
生成AIからの情報では、旧バージョンのDirectXでは対応できないスケーリングや解像度、リフレッシュレートが設定されている場合に、ゲーム起動時の処理ができず、クラッシュする場合があるそう。
特に「GPUスケーリング」や「G-SYNC」はGPUを介してスケーリングやモニター出力を行うことにより、GPUにて変更されたスケーリング後の解像度、G-SYNCによる動的なリフレッシュレートに対応できないようです。
技術が日々進歩する昨今、至極当然な事象ですね。
これらは下記手順で変更、無効化できます。
○スケーリング設定
インジケーターまたはデスクトップを右クリック > NVIDIA コントロールパネルを開く。
左メニューの「ディスプレイ」> 「デスクトップのサイズと位置の調整」を選択。
「スケーリング モードを選択してください」を 「スケーリングなし」 に変更する。
「スケーリングを実行するデバイス」を 「ディスプレイ」に設定する。
「適用」を押して設定を保存する。
○G-SYNC無効化
NVIDIA コントロールパネルを開く。
左メニューの「ディスプレイ」> 「G-SYNCの設定」を選択。
「G-SYNC、G-SYNCとの互換性を有効化」のチェックをはずす。
「適用」を押して設定を保存する。
私の環境では、
G-SYNC
こいつが原因でしたね…
おわりに
気になったので、クラッシュ時のダンプファイルを覗いてみると、
原因モジュール:nvlddmkm.sys
エラーコード:VIDEO_ENGINE_TIMEOUT_DETECTED (141)
というのが確認できました。
このsysファイルはNVIDIAのデバイスドライバーで、エラーコードの意味は
GPUが特定の処理(ゲーム、動画編集、ブラウザのハードウェアアクセラレーションなど)を処理する際、Windowsは「2秒以内(デフォルト設定)」に応答が返ってくるのを待ちます。返ってこない場合、Windowsはグラフィックドライバーをリセットしようと試みます。
とのこと。
仕組みとしては、
①IDirect3D9::EnumAdapterModes を使用して、そのPCとモニターが対応し
ている解像度とリフレッシュレートのリストを取得する。
②リストの中から最適な(または config.ini で指定された)値を選択する。
③FullScreen_RefreshRateInHz にその値をセットし、ハードウェア側に
「この速度で画面を更新せよ」と命令を送る。
クラッシュの原因: ここでリストにない(サポート外の)数値を渡すと、関数がエラーを返し、例外処理が不十分なプログラムは即座に終了します。
だそうです。
そういえば試行欄に記載していませんが、.iniに関してはお手製のものを入れてみたりしましたが、効果はありませんでした。
初回起動すらできておらず、ゲームフォルダやappdata内にもconfig.iniも作成されていませんでしたので…
(作成方法や設置場所が誤っている可能性大です)
今回は無駄足を踏んだので、次は先にログやダンプファイルの調査を徹底しようと思います。
何はともあれ、ようやくゲームで遊べそうです。
皆さんも良きゲームライフを!!
