How sacrappy/heylisten works
HeyListen is a Windows native port of a specific Switch 2 Ocarina of Time build. The user supplies their own game dump to the Builder, which fetches and verifies local tools, builds the game, and launches it; subsequent runs prepare shaders and render through the Vulkan backend. The graph also preserves documented runtime capabilities including saves, in-game controls, frame generation, and pipeline reuse. Several engine internals are represented at their enclosing directories because their implementation files were not sampled; their detailed call relationships therefore remain unverified.
Main entry points: hos.h Host runtime · core.py Build orchestration · vk_draw.cpp Vulkan renderer · window.py HeyListen Builder
Components 23
Build and launch
- HeyListen Builder
engine/builder/py/hookshot_builder/window.py - Build orchestration
engine/builder/py/hookshot_builder/core.py - Tool setup
engine/builder/py/hookshot_builder/setup_parts.py - Game build
engine/nx2
Recompiler
- Maxwell decode
engine/gpu/vk/eden/shader_recompiler/frontend/maxwell - IR translation
engine/gpu/vk/eden/shader_recompiler/frontend/ir/program.cpp - IR optimization
engine/gpu/vk/eden/shader_recompiler/ir_opt - SPIR-V emission
engine/gpu/vk/eden/shader_recompiler/backend/spirv/spirv_emit_context.cpp
Game runtime
- HeyListen game
engine/host/hos_main.c - Host runtime
engine/host/hos.h
Graphics
- Native NVN
engine/host/nvn_native.c - Graphics bridge
engine/native/include/hl/bridge/GfxBridge.h - Graphics front end
engine/native/src/c/hl_gfx.cpp - Vulkan renderer
engine/gpu/vk/vk_draw.cpp - Renderer backend
engine/gpu/render - Pipeline cache
engine/gpu/render/rx_pipecache.cpp
Player features
- Save import/export
engine/builder/HookshotBuilder/Saves.cs - Game saves
engine/host - In-game menu
engine/gpu/vk - Upscaling and framegen
engine/gpu/vk/shaders
Other components
- Player
- Own game dump
- Emulator save sources
Connections 25
- Player → HeyListen Builder: chooses dump
- Own game dump → HeyListen Builder: supplies dump
- HeyListen Builder → Build orchestration: starts build
engine/builder/py/hookshot_builder/window.py - Build orchestration → Tool setup: fetches tools
engine/builder/py/hookshot_builder/core.py - Build orchestration → Game build: builds game
- Tool setup → Game build: provides tools
- Game build → HeyListen game: produces executable
- Player → HeyListen game: launches game
- HeyListen game → Host runtime: runs on
engine/host/hos_main.c - Host runtime → Maxwell decode: dispatches shaders
- Maxwell decode → IR translation: builds IR
- IR translation → IR optimization: optimizes IR
- IR optimization → SPIR-V emission: emits shaders
- Host runtime → Native NVN: issues NVN calls
engine/host/nvn_native.c - Native NVN → Renderer backend: records and replays
engine/host/nvn_native.c - Host runtime → Graphics front end: uses native graphics
- Graphics front end → Graphics bridge: creates bridge
engine/native/src/c/hl_gfx.cpp - Renderer backend → Vulkan renderer: renders with Vulkan
- Vulkan renderer → Pipeline cache: reuses pipelines
- Player → Save import/export: imports or exports
- Emulator save sources → Save import/export: provides save
- Save import/export → Game saves: backs up and writes
- Player → In-game menu: opens controls
- In-game menu → Upscaling and framegen: configures graphics
- Vulkan renderer → Upscaling and framegen: runs shader effects