図面番号: HS-2011-06 // 版: v2.0.11 // 縮尺: FAULT-ATLAS // 6枚中6枚目
検証済み障害シート10件(#1161 · #817 · #57)診断用オーバーライド: RX_VK_MESH_NOCULL · RX_VK_ASTC_RGBA8 · RX_FORCE_INTERP

Hookshot トラブルシューティング・VK_ERROR_DEVICE_LOST 対策

文書化されたすべてのHookshot v2.0.11ランタイムクラッシュ、GPUドライバーハング、テクスチャ異常、ビルダー抽出エラーを診断・解決します。問題タグ(#1161、#817、#57、#1176)や症状で以下の10件の検証済み障害シートを検索・絞り込み、3つの診断ペイン(症状、環境変数フラグ、解決策)を確認して、適切なRX_*環境変数を適用してください。

FIG 6.0 // FAULT DECISION FLOWNotRexed/Hookshot · v2.0.14
VK_ERROR_DEVICE_LOST #1161、Steam Deck デクの樹 #817、およびAMD ASTC #57 向けHookshot トラブルシューティング判断フロー図
図6.0 — Hookshot 障害トリアージとRX_*環境変数の判断フロー(v2.0.11)
分割障害アトラス // 10件の検証済み診断シート

インタラクティブ障害インデックス&3ペイン診断ワークベンチ

代表的な問題タグ(#1161、#817、#57、#1176、RX_*診断)で絞り込むか、症状のキーワードで検索してください。各障害シートには、関連する障害へのリンクとともに、確認された症状、環境変数/起動フラグ、検証済みのv2.0.11解決策の3つの区分ペインが表示されます。

Issue #1161VK_ERROR_DEVICE_LOST GPU TimeoutまたはVRAMの枯渇(#1161)
4 GB〜6 GBのVRAM GPU、またはオーバークロックされたVulkanドライバー

ハイラル平原や神殿への重いエリア遷移時に、ASTCテクスチャプールとシャドウカスケードが物理VRAMをオーバーフローするか、ドライバーのTDRタイムアウトをトリガーすると発生します。

ペイン 01 // 確認された症状
エリアロード中に致命的なVK_ERROR_DEVICE_LOSTポップアップが表示されデスクトップにクラッシュする
ペイン 02 // 環境変数またはフラグ
graphics_preset=Low/Medium または RX_SKIP_SHADERS=<hash>
ペイン 03 // 検証済み解決策
Insert/F1メニューのグラフィックプリセットをLow(4 GB)またはMedium(6 GB)に下げ、レンダースケールを1.0xに下げ、v2.0.11記述子プール修正版にアップデートします。
Issue #817Steam Deck / Linux RADV での「デクの樹サマの中」フリーズ (#817)
Steam Deck LCD/OLED&Linux AMD RADV(Mesa < 24.3)

Steam Deck(Mesa RADV)環境でデクの樹の中や蜘蛛の巣の部屋に入ると、シェーダー2c56dc1006942f74のメッシュレットサブグループカリングが原因でGPUコマンドバッファがハングすることがあります。

ペイン 01 // 確認された症状
デクの樹の中に入ると画面がフリーズし、BGM/音声がループ再生され続ける
ペイン 02 // 環境変数またはフラグ
RX_VK_MESH_NOCULL=2c56dc1006942f74
ペイン 03 // 検証済み解決策
Steam の起動オプションに RX_VK_MESH_NOCULL=2c56dc1006942f74 %command% を設定してください(または RX_VK_MESH_NOCULL=1 でメッシュレットカリングを一括無効化)。
Issues #57&#1006AMD RDNA 2 / RDNA 3 における草木のブロック化 & HUD テクスチャ乱れ (#57 / #1006)
AMD Radeon RX 6000 / RX 7000シリーズ(Windows&Linux)

一部のAMD Windows AdrenalinおよびLinuxドライバーがコンピュートASTC-to-BC7トランスコーダを誤コンパイルし、HUDアイコンやコキリの草木にカラフルな4x4マクロブロックノイズを発生させます。

ペイン 01 // 確認された症状
UIアイコン、草、水面に市松模様や虹色の4x4ブロックノイズが発生する
ペイン 02 // 環境変数またはフラグ
RX_VK_ASTC_RGBA8=1
ペイン 03 // 検証済み解決策
Hookshot の起動前に RX_VK_ASTC_RGBA8=1 をエクスポートし、コンピュート BC7 トランスコードではなく可逆のソフトウェア RGBA8 展開を強制してください。
Issues #1176&#990HookshotBuilder アセット展開の失敗または NSO ハッシュ不一致 (#1176 / #990)
Windows x64 & Linux x86_64 HookshotBuilder

パッチ v131072 が適用されていないベース v0 ダンプ、Switch 2 Title ID 0400486024DEC000 以外の N64/3DS ROM、または v2.0.11 より前のバージョンで非ASCII文字を含む Windows パスが指定された場合、アセットビルダーは処理を中断します。

ペイン 01 // 確認された症状
Builder が Unsupported ExeFS Build ID を出力するか、RomFS 再パックの 99% 時点で失敗する
ペイン 02 // 環境変数またはフラグ
タイトルID 0400486024DEC000 v131072(e0f3ccfa)が必須
ペイン 03 // 検証済み解決策
Hookshot v2.0.11にUpdateし(UTF-8 Windowsパスバグ #1176を修正)、SHA-1接頭辞e0f3ccfaに一致するマージ済みSwitch 2 v131072ダンプを指定します。
docs/DEVELOPMENT.md破損したカスタムまたは Driver 固有の Shaders の切り分け(RX_SKIP_SHADERS)
すべてのVulkan 1.3 プラットフォーム

1つ以上の64ビットNVN2シェーダーハッシュのドローコールをスキップし、プレイヤーや開発者がどのSPIR-Vパイプラインがドライバーのクラッシュや描画異常を引き起こしているかを特定できるようにします。

ペイン 01 // 確認された症状
特定のパーティクルエフェクトまたはポストプロセスパスでクラッシュするか、画面が真っ白/真っ黒になる
ペイン 02 // 環境変数またはフラグ
RX_SKIP_SHADERS=<hash1>,<hash2>
ペイン 03 // 検証済み解決策
RX_LOG_LEVEL=debugを指定して実行し、クラッシュ直前のアクティブなシェーダーハッシュをログに記録した後、RX_SKIP_SHADERS=<hash>を渡してそのパイプラインを迂回してください。
docs/DESIGN.md&docs/DEVELOPMENT.mdARM64 Interpreter によるリフト済み C 関数のリグレッション回避(RX_FORCE_INTERP)
Windows x64&Linux x86_64

個別のゲスト関数アドレス(`0x7100xxxxxx`)またはバイナリ全体を、静的 C 変換コードではなくソフトウェア ARM64 インタプリタ経由で実行します。

ペイン 01 // 確認された症状
リフトされたARM64関数内でアクターの物理挙動異常または進行不能が疑われる場合
ペイン 02 // 環境変数またはフラグ
RX_FORCE_INTERP=0x7100123450 または RX_FORCE_INTERP=all
ペイン 03 // 検証済み解決策
疑わしいゲストアドレスに RX_FORCE_INTERP を設定し、不具合の原因が nx2/ 静的 C リフターにあるかを verify します。
docs/DEVELOPMENT.md詳細なVulkanおよびHLEシステムコールログの有効化(RX_LOG_LEVEL&RX_TRACE_FUNC)
Windows x64&Linux x86_64

stdout/stderrの出力詳細度をtraceからerrorまで制御し、GitHubで不具合を報告する際に対象ゲスト関数の開始/終了レジスタ状態(`X0`~`X7`)を記録します。

ペイン 01 // 確認された症状
起動時にエラー表示なく終了するか、未実装のHLEサービススタブトラップで停止する
ペイン 02 // 環境変数またはフラグ
RX_LOG_LEVEL=debug / RX_ABORT_ON_UNIMPL=1
ペイン 03 // 検証済み解決策
端末からRX_LOG_LEVEL=debug(および必要に応じてRX_TRACE_FUNC=0x7100xxxxxx)を指定して起動し、完全な診断ログを取得してください。
docs/DEVELOPMENT.mdメッシュシェーダーなしでのアセットロード&ブート処理テスト(RX_GPU_BACKEND=null)
ヘッドレスCIランナーおよびメッシュシェーダー非対応テスト環境

メッシュシェーダー非対応環境の開発者がRomFSのマウント、オーディオ、およびセーブデータの解析をverifyできるよう、no-op nullレンダラーおよびRX_BOOT_DIRECT=1を初期化します。

ペイン 01 // 確認された症状
旧型のGPU環境でVK_ERROR_EXTENSION_NOT_PRESENTによりVulkan初期化が失敗する
ペイン 02 // 環境変数またはフラグ
RX_GPU_BACKEND=null RX_BOOT_DIRECT=1
ペイン 03 // 検証済み解決策
ヘッドレスブートやセーブデータ検証にはRX_GPU_BACKEND=nullを使用してください。実際の3DゲームプレイにはハードウェアVK_EXT_mesh_shader GPUが必須です。
README.md Linux SetupLinux AppImageが起動しない(chmod +xまたはlibfuse2の欠落)
Linux x86_64 (Ubuntu, Debian, Fedora, Arch)

Ubuntu 22.04/24.04またはlibfuse2のない最小構成ディストリビューションでは、実行権限を付与するか--appimage-extractを使用しない限り、Hookshot-v2.0.11-Linux-x86_64.AppImageのダブルクリックは警告なく失敗します。

ペイン 01 // 確認された症状
AppImageが開かない、または「dlopen(): error loading libfuse.so.2」と出力される
ペイン 02 // 環境変数またはフラグ
chmod +x *.AppImage または --appimage-extract-and-run
ペイン 03 // 検証済み解決策
chmod +x Hookshot-v2.0.11-Linux-x86_64.AppImageを実行し、libfuse2t64をインストールするか、または--appimage-extract-and-runを指定してください。
docs/SAVES.mdセーブスロット破損または手動セーブパス指定(RX_SAVE_PATH&oot_saves.py)
Windows x64&Linux x86_64

書き込み中断からの復旧のため、autosave.savへフォールバックするか、scripts/oot_saves.pyを用いてCRC32Cヘッダーチェックサム(`0x0008`)を再計算します。

ペイン 01 // 確認された症状
停電や手動バイナリエディタ編集の後、セーブスロットが空と表示されるか「データが壊れています」と表示される
ペイン 02 // 環境変数またはフラグ
python3 scripts/oot_saves.py verify save_00.sav / RX_SAVE_PATH
ペイン 03 // 検証済み解決策
python3 scripts/oot_saves.py export-jsonおよびimport-jsonを実行してCRC32Cを再計算するか、autosave.savをsave_00.savに上書きコピーしてください。
診断オーバーライド // RX_FORCE_INTERP&RX_SKIP_SHADERSリフト済み ARM64 コードと SPIR-V Shader リグレッションの切り分け

VRAM プリセットを下げてもクラッシュや進行不能(ソフトロック)が解決しない場合は、RX_LOG_LEVEL=debug と RX_SKIP_SHADERS=<hash> を組み合わせて特定の NVN2 SPIR-V パイプラインに原因があるかをテストするか、RX_FORCE_INTERP=0x7100xxxxxx(または RX_FORCE_INTERP=all)を設定してゲスト関数を静的 C ではなくソフトウェア ARM64 インタプリタ上で実行してください。

障害パスクロッキー // 主要障害 ISSUES トップ3

視覚的障害パス構成図(#1161 · #817 · #57)

ISSUE #1161
VK_ERROR_DEVICE_LOST Queue Timeoutハイラル平原/神殿のロード遷移時、または NVIDIA 621 での Driver 発行時

ASTC テクスチャプールとシャドウカスケードが物理 VRAM を超過、または分離型プレゼントキューが TDR タイムアウトを誘発 → Insert/F1 プリセットを Low/Medium に下げ、Hookshot v2.0.11 を実行してください。

ISSUE #817
Steam Deck RADV デクの樹フリーズMesa RADV サブグループメッシュレットカリングによるデッドロック

デクの樹の中に入るとメッシュシェーダー2c56dc1006942f74が実行され、RADVのwave64 ballotがGPUコマンドバッファをストールさせます → RX_VK_MESH_NOCULL=2c56dc1006942f74 %command%を指定してください。

ISSUES #57 および #1006
AMD RDNA 2/3 ブロック状 4×4 ASTC 描画異常コンピュートASTCからBC7へのトランスコーダ誤コンパイル

Adrenalin / RADVコンピュートシェーダーがコキリの森の木々やHUDアイコン上の4×4 BC7ブロックを破壊します → RX_VK_ASTC_RGBA8=1をエクスポートしてCPU/ソフトウェアRGBA8テクスチャ復号を強制してください。

完全版10件のトラブルシューティング&RX_*フラグレファレンス台帳

障害名および Issue 参照影響を受けるプラットフォーム環境変数 / フラグ関連する障害
VK_ERROR_DEVICE_LOST GPU TimeoutまたはVRAMの枯渇(#1161)
Issue #1161
4 GB〜6 GBのVRAM GPU、またはオーバークロックされたVulkanドライバーgraphics_preset=Low/Medium または RX_SKIP_SHADERS=<hash>
Steam Deck / Linux RADV での「デクの樹サマの中」フリーズ (#817)
Issue #817
Steam Deck LCD/OLED&Linux AMD RADV(Mesa < 24.3)RX_VK_MESH_NOCULL=2c56dc1006942f74
AMD RDNA 2 / RDNA 3 における草木のブロック化 & HUD テクスチャ乱れ (#57 / #1006)
Issues #57&#1006
AMD Radeon RX 6000 / RX 7000シリーズ(Windows&Linux)RX_VK_ASTC_RGBA8=1
HookshotBuilder アセット展開の失敗または NSO ハッシュ不一致 (#1176 / #990)
Issues #1176&#990
Windows x64 & Linux x86_64 HookshotBuilderタイトルID 0400486024DEC000 v131072(e0f3ccfa)が必須
破損したカスタムまたは Driver 固有の Shaders の切り分け(RX_SKIP_SHADERS)
docs/DEVELOPMENT.md
すべてのVulkan 1.3 プラットフォームRX_SKIP_SHADERS=<hash1>,<hash2>
ARM64 Interpreter によるリフト済み C 関数のリグレッション回避(RX_FORCE_INTERP)
docs/DESIGN.md&docs/DEVELOPMENT.md
Windows x64&Linux x86_64RX_FORCE_INTERP=0x7100123450 または RX_FORCE_INTERP=all
詳細なVulkanおよびHLEシステムコールログの有効化(RX_LOG_LEVEL&RX_TRACE_FUNC)
docs/DEVELOPMENT.md
Windows x64&Linux x86_64RX_LOG_LEVEL=debug / RX_ABORT_ON_UNIMPL=1
メッシュシェーダーなしでのアセットロード&ブート処理テスト(RX_GPU_BACKEND=null)
docs/DEVELOPMENT.md
ヘッドレスCIランナーおよびメッシュシェーダー非対応テスト環境RX_GPU_BACKEND=null RX_BOOT_DIRECT=1
Linux AppImageが起動しない(chmod +xまたはlibfuse2の欠落)
README.md Linux Setup
Linux x86_64 (Ubuntu, Debian, Fedora, Arch)chmod +x *.AppImage または --appimage-extract-and-run
セーブスロット破損または手動セーブパス指定(RX_SAVE_PATH&oot_saves.py)
docs/SAVES.md
Windows x64&Linux x86_64python3 scripts/oot_saves.py verify save_00.sav / RX_SAVE_PATH
KPI-TRB-01 // ISSUE #1161
VK_DEVICE_LOST
NVIDIA 621 / VRAM Timeout
v2.0.9〜v2.0.11 で修正済み · 4〜6 GB GPU では Insert/F1 プリセットを下げてください
KPI-TRB-02 // ISSUE #817
2c56dc1006942f74
Steam Deck デクの樹フリーズ
RX_VK_MESH_NOCULL=2c56dc1006942f74 %command% を使用した Bypass
KPI-TRB-03 // ISSUES #57 & #1006
RX_VK_ASTC_RGBA8=1
AMD RDNA 2/3 ブロック状テクスチャ異常
BC7コンピュートの代わりに可逆ソフトウェアRGBA8展開を強制
KPI-TRB-04 // LIFTER FALLBACK
RX_FORCE_INTERP
ARM64 Interpreter Bypass
問題のある 0x7100xxxxxx 関数を実行時変換された C シャードから除外
技術仕様 // クラッシュ対策と診断用環境変数

VK_ERROR_DEVICE_LOST(#1161)、Steam Deck デクの樹フリーズ(#817)、AMD ASTC 描画異常(#57)の解決

Hookshot におけるコミュニティサポート報告の大半は、ハードウェア固有の3つの問題に起因しています。第1に、Issue #1161(VK_ERROR_DEVICE_LOST)は2つの明確な状況で発生します。NVIDIA 621系ドライバー環境において独立した Vulkan プレゼントキューが有効な状態で起動時シェーダー準備を完了した直後(v2.0.9 で緩和され、v2.0.11 で独立プレゼントキューを無効にしつつ RX_VK_WB_DIFF=1 を再有効化して改善)、あるいは 4 GB〜6 GB GPU 環境でハイラル平原や神殿の大規模なエリア遷移時に ASTC テクスチャプールとシャドウカスケードが物理 VRAM を超過した場合です。Insert / F1 メニュー内の Graphics Preset を Low(1.5 GB プール)または Medium(2.5 GB プール)に下げることで、VRAM の枯渇を防止できます。

第2に、Issue #817 はバージョン 24.3 未満の Mesa を実行している Steam Deck LCD/OLED および Linux AMD RADV 環境に影響します。デクの樹の中やクモの巣の部屋に入ると、BGM はループ再生され続けるものの GPU コマンドバッファがハングアップします。このハングは NVN2 メッシュシェーダー 2c56dc1006942f74 内のサブグループメッシュレットカリングに起因します。Steam の起動オプションに RX_VK_MESH_NOCULL=2c56dc1006942f74 %command% を設定することで、測定可能な FPS 低下なしに該当シェーダーのカリングを回避できます。第3に、AMD Radeon RX 6000 / RX 7000 GPU における Issues #57 および #1006 では、コンピュート ASTC-to-BC7 トランスコーダーのドライバー誤コンパイルにより、草木や HUD アイコン上に 4x4 の虹色ブロックノイズが発生します。RX_VK_ASTC_RGBA8=1 をエクスポートすることで、可逆なソフトウェア RGBA8 伸張へと切り替わります。

HookshotBuilder 抽出エラー(#1176 / #990)&開発者向けRX_*診断フラグ

アセット抽出またはCコンパイル中にHookshotBuilderが失敗する場合、次の3つの前提条件をverifyしてください:(1) ダンプがベースv0ダンプやN64/3DS ROMではなく、アップデートv131072・ExeFS main NSO SHA-1プレフィックスe0f3ccfa(e0f3ccfa56256410941279ef0b2501356be2222c)のSwitch 2 Title ID 0400486024DEC000と一致していること;(2) 非ASCII Windowsユーザーパスによるエラー(#1176)、古い生成済みC変換の競合(#1197)、不足していたLinux AppImageヘッダー(#990)が修正されたHookshot v2.0.11を実行していること;(3) 展開された26.2 GBのRomFSと、生成される1.4 GBのCソース用に、最低30 GBの空きディスク容量があること。

高度なデバッグのために、Hookshotにはdocs/DEVELOPMENT.mdで文書化された詳細な環境変数が用意されています。RX_LOG_LEVEL=debugおよびRX_ABORT_ON_UNIMPL=1は未実装のHorizon OS HLEサービスコールを浮き彫りにし、RX_SKIP_SHADERS=<hash1>,<hash2>は描画破壊を切り分けるために特定の64ビットNVN2シェーダーパイプラインを無効化します。RX_FORCE_INTERP=0x7100xxxxxxは問題の疑われるゲスト関数をソフトウェアARM64インタプリタ経由で実行し、RX_GPU_BACKEND=nullはRX_BOOT_DIRECT=1と組み合わせてヘッドレスブート検証に使用できます。

技術 FAQ // トラブル対策とセーブ復旧

トラブルシューティング&環境変数フラグ FAQ

WindowsとSteam Deckでは、どこでRX_VK_MESH_NOCULLやRX_VK_ASTC_RGBA8を設定すればよいですか?

Steam DeckまたはLinux Steamでは、Hookshotを右クリックして「プロパティ」→「起動オプション」を開き、RX_VK_MESH_NOCULL=2c56dc1006942f74 %command%と入力します(複数の変数を指定する場合は%command%の前に並べます)。Windows PowerShellでは、ビルドディレクトリから$env:RX_VK_ASTC_RGBA8=1; .\hookshot.exeを実行するか、Windowsの「Systemのプロパティ」→「環境変数」に変数を追加してください。

v2.0.7からv2.0.9へのアップグレード時、未定義のg_module_bまたはf_8シンボルエラー(#1176 / #1197)で失敗するのはなぜですか?

v2.0.10 より前のバージョンでは、中断やバージョン間のアップデートにより work/sa/gen/ 内に古い生成済み C ファイルが残り、clang/lld のリンクエラーが発生することがありました。Hookshot v2.0.11 にアップデートすると、コンパイル前に古い中間生成コードが自動的に破棄され、旧バージョンの変換シャードがクリーンアップされます。

クラッシュ後にHookshotで「データが壊れています」と表示された場合、セーブスロットを復旧するにはどうすればよいですか?

まずセーブディレクトリでautosave.savを確認し、それをsave_00.savに上書きコピーしてください。手動でセーブファイルを編集した場合は、「python -m nx2.oot_saves verify save_00.sav」(またはexport-jsonに続けてimport-json)を実行し、ヘッダーオフセット0x0008に必要なCRC32CチェックサムをHookshotに再計算させてください。

一次情報源と検証

公式 NotRexed/Hookshot 診断および Issue リファレンス