From 691289ca35f4c66c51f1e5a97d202bdc3003c48e Mon Sep 17 00:00:00 2001 From: Hails <26784904+Hailey-Ross@users.noreply.github.com> Date: Sun, 4 Oct 2026 10:03:26 -0600 Subject: [PATCH 1/2] Docs: traffic lights answered (Skate 3 has no traffic-light or crossing sounds) --- docs/hails-additions/audio-specs/world-audio-hookin-spec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hails-additions/audio-specs/world-audio-hookin-spec.md b/docs/hails-additions/audio-specs/world-audio-hookin-spec.md index d7e29d2f..5fd1486b 100644 --- a/docs/hails-additions/audio-specs/world-audio-hookin-spec.md +++ b/docs/hails-additions/audio-specs/world-audio-hookin-spec.md @@ -42,7 +42,7 @@ Legend: **done** = ported and harness-tested headless; **partial**; **missing**. | Skids | SFXObj_TrafficSkids, `TRAFFIC_SKID` | **done**: plays on the skid flag | the AI's skid flag (hard braking / swerve) | | Woosh | SFXObj_TrafficWoosh (4.3) | n/a: no MixMap E record writes its outputs, so retail leaves it unused | nothing | | Doppler / drive-by | MixMap Traffic B lookups | **done** (ObjPos rates) | velocity must be continuous: a teleporting proxy needs `AudioVelocity` (§3.2) | -| Traffic lights | `sub_826B1540` phases 7 / 1 / 0.5 / 0.4 s | no audio object found in the traces | **ask the user** whether retail has crossing / light sounds (Q7). Probably none. | +| Traffic lights | `sub_826B1540` phases 7 / 1 / 0.5 / 0.4 s | no audio object found in the traces | **none:** Skate 3 has no traffic-light or crossing sounds; nothing to build. | | Instance assignment (4 traffic, 15 peds) | retail's SFX object manager | **partial**: nearest-N (`owners::Pool`) | **confirmed 2026-10-03 (§7.3):** peds = the first 15 of a nearest-first list cut at 50 m (manager `sub_824F2890`); traffic holders were the 4 nearest (horizontal) in 311 / 311 holder-seconds, list cut at 40 m (horizontal). Add the 50 m / 40 m cuts | | Ped footsteps | PedestrianSFX (5.1): `livingword_footstep` × 2 + `sk8_foley` steps | **done**: 97 % of retail's `fstep_livingworld` starts fall in our sample groups | **settled 2026-10-03 (§7.3 G2), to port:** per model (= voice id) shoe class / kind / type / variant / far threshold from `aud_characteristics`; `+68` = the 3 nearest peds. Still open: `[obj+28]+144` (dynamic 1–5, not a model weight), `sub_824D8E60` flag, the 3 % of slots (w9 / w11 / jump / collision combinations) | | Ped speech request | PedestrianSpeech (5.0) | **done**: value change → request, 7 / 8 remap, near / far flag. **Not done**: value 49 (`sub_824D9C70`), the value 29 photographer timer | | From bf948cc4821cf58a9db26324cb544f45de1ac59c Mon Sep 17 00:00:00 2001 From: Hails <26784904+Hailey-Ross@users.noreply.github.com> Date: Sun, 4 Oct 2026 18:56:51 -0600 Subject: [PATCH 2/2] Audio: no dead-code warnings (test-only surface map and prefetch query) Library::surface_map and PrefetchPool::contains are only read by tests; mark them cfg(test) (the manifest field stays, read by the vault check). No behaviour change. --- crates/skate-game/src/game_audio/library.rs | 3 +++ crates/skate-game/src/game_audio/native/prefetch.rs | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/crates/skate-game/src/game_audio/library.rs b/crates/skate-game/src/game_audio/library.rs index 06e23811..36655634 100644 --- a/crates/skate-game/src/game_audio/library.rs +++ b/crates/skate-game/src/game_audio/library.rs @@ -87,7 +87,9 @@ pub(crate) struct GrainTuningJson { #[serde(default)] owner: OwnerJson, /// Collision material (tag − 1) → rolling surface 1–14 (`Sk8::AudioSurfaceMap`). + /// Read only by the vault check (`grain_for_matches_the_vault_surface_map_and_the_bed_loads`). #[serde(default)] + #[cfg_attr(not(test), allow(dead_code))] pub surface_map: Vec, } @@ -991,6 +993,7 @@ impl Library { /// Collision material → rolling surface (`Sk8::AudioSurfaceMap`, 95 entries; empty before /// 2026-10-02 installs). + #[cfg(test)] pub(crate) fn surface_map(&self) -> &[u32] { &self.manifest.grain_player.surface_map } diff --git a/crates/skate-game/src/game_audio/native/prefetch.rs b/crates/skate-game/src/game_audio/native/prefetch.rs index bcb80261..3b8da4b7 100644 --- a/crates/skate-game/src/game_audio/native/prefetch.rs +++ b/crates/skate-game/src/game_audio/native/prefetch.rs @@ -100,7 +100,8 @@ impl Prefetch { } } - /// Whether the bank was requested and not taken or dropped since. + /// Whether the bank was requested and not taken or dropped since (tests). + #[cfg(test)] pub(crate) fn contains(&self, stem: &str) -> bool { self.slots.contains_key(stem) }