도면 번호: 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개 검증된 결함 시트를 검색하거나 필터링하고, 세 가지 진단 패널(증상, 환경 플래그, 해결 방법)을 확인한 뒤 알맞은 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 해결 방법 등 세 개의 구분선 패널과 상호 연결된 관련 결함을 함께 보여줍니다.

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 // 관찰된 증상
데쿠나무 내부에 진입할 때 오디오가 무한 반복되며 화면이 멈춤
패널 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-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 타이틀 ID 0400486024DEC000가 아닌 N64/3DS ROM을 입력하거나 v2.0.11 이전 버전에서 비-ASCII 문자가 포함된 Windows 경로를 사용할 경우 에셋 빌더가 중단됩니다.

패널 01 // 관찰된 증상
Builder에서 지원되지 않는 ExeFS Build ID 오류가 보고되거나 99% RomFS 재패키징 단계에서 실패함
패널 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 플랫폼

하나 이상의 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

출력 로그 상세도를 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 널 렌더러와 RX_BOOT_DIRECT=1을 초기화합니다.

패널 01 // 관찰된 증상
구형 GPU에서 Vulkan 초기화가 VK_ERROR_EXTENSION_NOT_PRESENT 오류와 함께 실패함
패널 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)

On 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 인터프리터에서 게스트 함수를 실행해 보세요.

오류 경로 스케치 // 주요 3대 ISSUES

시각적 실패 경로 개요도 (#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 커뮤니티 지원 문의의 대부분은 하드웨어별 특이 이슈 세 가지에 기인합니다. 첫째, Issue #1161(VK_ERROR_DEVICE_LOST)은 두 가지 상황에서 발생합니다. 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 고갈을 방지할 수 있습니다.

둘째, Issue #817은 24.3 이전 버전 Mesa를 실행하는 Steam Deck LCD/OLED 및 Linux AMD RADV 시스템에 영향을 줍니다. 데쿠나무 내부나 거미줄 방에 진입하면 오디오는 계속 재생되지만 GPU 커맨드 버퍼가 멈춥니다. 이 멈춤 현상은 NVN2 메시 셰이더 2c56dc1006942f74 내부의 서브그룹 메시렛 컬링으로 인해 유발됩니다. Steam 실행 옵션을 RX_VK_MESH_NOCULL=2c56dc1006942f74 %command%로 설정하면 성능 저하(FPS) 없이 해당 셰이더의 컬링을 우회할 수 있습니다. 셋째, AMD Radeon RX 6000 / RX 7000 GPU에서 발생하는 Issues #57 및 #1006은 컴퓨트 ASTC->BC7 트랜스코더의 드라이버 컴파일 오류로 인해 초목과 HUD 아이콘에 무지개색 4x4 블록이 나타나는 현상입니다. RX_VK_ASTC_RGBA8=1을 export하면 무손실 소프트웨어 RGBA8 디코딩으로 전환됩니다.

HookshotBuilder 추출 오류 (#1176 / #990) 및 개발자용 RX_* 진단 플래그

에셋 추출이나 C 컴파일 도중 HookshotBuilder가 실패할 경우 다음 세 가지 전제 조건을 verify하세요. (1) 덤프가 베이스 v0 덤프나 N64/3DS ROM이 아니라 패치 v131072이 적용된 Switch 2 타이틀 ID 0400486024DEC000 및 ExeFS main NSO SHA-1 접두사 e0f3ccfa(e0f3ccfa56256410941279ef0b2501356be2222c)와 일치하는지 확인; (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은 어디에 설정하나요?

On Steam Deck 또는 Linux Steam의 경우, Hookshot 우클릭 -> 속성 -> 시작 옵션에 RX_VK_MESH_NOCULL=2c56dc1006942f74 %command%를 입력하세요(또는 %command% 앞에 여러 변수를 조합). On 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)를 실행하여 Hookshot가 헤더 오프셋 0x0008의 필수 CRC32C 체크섬을 다시 계산하도록 하세요.

1차 출처 및 검증

공식 NotRexed/Hookshot 진단 및 Issue 참조 자료