Files
skate-3-rust-engine/docs/hails-additions
Hails 2fcbcc3002 New audio who dis
Native port of Skate 3's retail audio runtime (AEMS) behind SKATE_AEMS=1, plus the world audio work:
- skate-audio crate: formats, patch-program evaluator, voice graph, mixer, MixMap, granular rolling bed and its
  bus chain, Splice contacts, the buses (env reverb network, eEQChain, flanger returns, collision and footstep
  submixes, reverb zones) and the player components (rolling layers, seams on the console's 30 fps cadence,
  grinds, skids, squeaks, tricks, treatment, footsteps, clothing, hands on deck, wind, wheels, collision manager).
- game_audio host: native runtime, player audio state from our physics, world emitters from the maps' .ems files,
  random distant one-shots, zone ambience, state log, e2e render harness, timing.
- Setup: audio export of the banks, grains, MixMap, vault tuning and reverb zones.
- skate-core: per-wheel / per-part audio surfaces and seam patterns (additive).
- Docs: docs/hails-additions/11-audio.md and the PR plan.
2026-10-02 22:58:17 -06:00
..
2026-10-02 22:58:17 -06:00
2026-10-02 22:58:17 -06:00
2026-10-02 22:58:17 -06:00
2026-10-02 22:58:17 -06:00
2026-10-02 22:58:17 -06:00

Hails' additions

Changes made in the Hailey-Ross fork of SK8-ENGINE/skate-3-rust-engine, documented so upstream maintainers have the full context when reviewing a pull request: what broke, why, what changed, how it was verified, and what is still open.

Each document stands alone. File paths are relative to the repository root.

# Change Area Status
1 ISO extraction argument order Setup (Python) Superseded: upstream fixed it the same way (713fe70, 7ae67f2, 2026-10-02); dropped from PR A
2 Windows long paths during setup Setup (Python) Done; UAC prompt and frozen relaunch tested end to end (2026-10-02)
3 SDL3 gamepad input Game (Rust), build scripts, vendored sdl3-sys Done, verified in play with an Xbox Elite Series 2
4 Authored map spawns Asset pipeline (Python) Done, all 10 maps confirmed in play
5 Invisible collision volumes Game data loader (Rust) Done, all four affected maps confirmed in play
9 Water Game physics, camera and rendering (Rust), setup, diagnostics Matched to retail footage (RPCS3): shallow water solid, deep water floats, board floats, water camera + vignette, entry splash, canal water look matched, small bodies calmer
10 Sky shader validation test Game tests (Rust) Done; all six shader validation tests pass
11 Game audio Setup (Python, vgmstream), game audio (Rust) Work in progress (draft #32). Player cues tuned against retail traces; retail world audio done: .ems emitters, location-set one-shots (sirens; 1,859/1,859 retail match over 15 locations), zone ambience beds. Native AEMS runtime (crates/skate-audio: evaluator + voice graph) implemented behind SKATE_AEMS=1 for the world emitters; 234/235 PoC-oracle scripts identical, DSP kernels bit-exact; MixMap + granular rolling bed; player MixMap inputs and the first native player components (grind, wind/rattle, foot drag; wind level within 0.5 dB of retail); needs a listening check.
12 Board solver: 50 constraint iterations Game physics (Rust) Done; maps identical, water traces as expected; one asset-gated customiser test fails (open question)

Environment used for verification

  • Windows 11, Intel i7-14700KF, NVIDIA RTX 4080 SUPER (Vulkan).
  • Rust 1.98.1 (MSVC), Visual Studio 2026 C++ tools, Windows SDK 10.0.26100, LLVM 23.1.2, Python 3.13.15.
  • Skate 3 Xbox 360 disc image (103 files, 6,404,940,920 bytes).
  • Xbox Elite Series 2 controller over Bluetooth LE.

Conventions

  • Upstream behaviour is preserved unless a document says otherwise; where a behaviour changes on purpose (for example, a map's default spawn), the document lists the old and new values.
  • Project choices that are not dictated by retail data are called out as such, so maintainers can overrule them.