mirror of
https://github.com/SK8-ENGINE/skate-3-rust-engine.git
synced 2026-10-26 19:47:44 +00:00
- Ped speech plays: speech manager -> library -> the living world's two streams, with queue / interrupts and the near / far lines by distance; levels and filters from the retail mechanism (filters equal to the recomp's, gain median within 0.5 %). Silent and logged when the opt-in speech decode is absent. - NPC skater: wheels and clothing on its own instance and a bail grunt; tricks, treatment and footsteps stay off for NPCs as in retail. - Per-model ped data (shoe class, voice, far threshold) and traffic engine records per model exported by setup; traffic relative-speed input and front / rear sound points; world hosts process before the mixer tick. - Test mod: opt-in (off by default), higher world-object limits (48 per mod, 128 total), a per-second summary log. - Specs published in docs/hails-additions/audio-specs/; code comments point at them; test data paths behind env vars (no .local defaults).
5.0 KiB
5.0 KiB
Audio specs
Behavioural specifications behind the native audio port (doc 11) and the world audio
hook-in (doc 15). Code comments in crates/skate-audio and
crates/skate-game/src/game_audio cite them as audio-specs/<name>.md §n; the section numbers are kept
stable for that reason.
What these are
- Written in our own words from reading the Skate 3 TU 3.0.3.0 recompilation, the disc data and the
attribute database, then checked against traces of the running recompilation. Function addresses
(
sub_8xxxxxxx), object offsets and image constants are given as references so a reader can find the same code; no game code or game data is copied here. - Measured values (levels, rates, timings, counts) come from the recompilation unless a line says otherwise. The recompilation is not the console: its frame rate, timing and threading differ, so its program logic is the strong evidence and its timings are weaker.
- Upstream PR #4 and PR #1 (@andrewnakas) and the other prior work were read for behaviour only; see
rwaudio-prior-work.mdand the credit tables in the specs. - These are working notes. Tags such as [R] (our reading of the code), [IMG] (image constant), [TR] / [T] (trace-checked), [I] (inference) and UNCERTAIN say how firm each statement is. Later findings are added as dated sections; superseded text is marked rather than removed.
- Session names (
all_20261002_164620,state_20261003_084712.tsv, …) are labels of recordings made during the work; the recordings themselves are local and not published. Scripts named as "local" are not published either; the published ones are undertools/(doc 14).
Index
| Spec | Covers |
|---|---|
aems-reference.md |
Overview: ABKC bank / program layout, evaluator tick, opcode list, sources, corrections; index of the specs below |
aems-evaluator-spec.md |
AEMS patch-program evaluator: bank and MOIR layouts, runtime, all 40 opcodes, timing, RNG, test plan |
aems-voice-graph-spec.md |
Voice graph and output mix: SndPlayer1, resample, filters, gain, pan, sends, buses, output stage |
aems-env-bus-spec.md |
Environment (reverb) bus: send routing, reverb / delay sub-mixes, presets, zones |
aems-eqchain-buses-spec.md |
eEQChain material buses, EQ jitter, LFO task, owner send buses |
aems-bus-leftovers-spec.md |
FlangeSub returns, sense_of_speed FXWET0, Splice Send A, Collision SubMix, reverb zones |
mixmap-spec.md |
MixMap (MixMapSK8.mxb): format, evaluation, ambience / emitter outputs, ducking, validation |
grain-player-spec.md |
Granular rolling bed: grains.big, surface → grain map, GrainPlayer pick / scheduler / fades, chains |
aems-grain-chain-spec.md |
Board grain bus chain (sub_824C8878): FSS, shelf, clip, sends; listening-report evidence |
aems-board-layers-spec.md |
SFXObj_SkateBoard rolling layers: Class_rolling, rattles, board slide |
aems-tricks-treatment-spec.md |
Tricks component (Class_Flips, cloth_trick) and Class_Treatment |
aems-offboard-clothing-spec.md |
Off-board footsteps, clothing, hands-on-deck |
ragdoll-contact-spec.md |
Ragdoll contact response and the bail-sound gap (research) |
ems-emitters-re.md |
World emitters (.ems), random one-shot sets, zone ambience beds |
npc-livingworld-re.md |
The living world: census, traffic, pedestrians, security, AI skaters, NPC speech (background for the world audio) |
world-audio-hookin-spec.md |
Design of the engine-facing world audio API and mod surface (doc 15) |
world-traffic-audio.md |
Traffic audio: retail mechanism, port state, hook points |
world-ped-audio.md |
Pedestrian audio: retail mechanism, port state, hook points |
world-speech.md |
Pedestrian speech: data, mechanism, port state |
world-npc-skater-audio.md |
NPC (AI) skaters' board sounds |
rwaudio-prior-work.md |
Prior work on RenderWare Audio and Snd9 AEMS, licences, applicability |
Credits
skate3recomp by @mchughalex, built on the rexglue SDK and Xenia's Xbox 360 research; upstream PR #4 and PR #1 by @andrewnakas; sk8Audio (andrewnakas/skate3-audio); BurnoutDecomp's b5-decomp and BP-Decomp_Workflow; dbalatoni13/nfsmw; mitsevox/tw2004; vgmstream. Details and licences per source are in each spec.