You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Track running noise mode through pitch envelope on channel 0
The MOS writes the noise control register with the running pitch byte (low
3 bits) on every envelope tick, so PI/PN walk the noise type+rate over time
— that's what gives Elite hyperspace its warble. Previously expand() short-
circuited stepPitch on noise channel and the audio engine treated noise
mode as a single fixed value for the whole note. Now expand() runs pitch
envelope on all channels, the audio engine builds a one-shot noise buffer
matching the sample stream, and the LFSR is reset to 0x4000 only when the
running noise mode actually changes (matching jsbeeb's noisePoked).
UI: pitch envelope inputs are no longer greyed on noise channel since
they're meaningful there. Visualiser replaces the static noise caption
with a coloured strip showing how the mode evolves cs-by-cs (warm = white,
cool = periodic; brighter = faster shift rate).
Game presets: added Elite explosion / missile / hyperspace and Thrust
engine, decoded from the SFX tables in markmoxon/elite-source-code-bbc-
micro-cassette and the kieranhj/thrust-disassembly app_init.asm.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
description: "Elite — hyperspace drive engaged; SFX entry 56 — channel 0 noise with envelope 2 (the same envelope used for laser hits) and pitch 96 (P&7 = 0 → periodic noise, high rate)",
description: "Thrust — engine-thrust noise blip retriggered every frame while thrusting; channel 0 white noise medium rate (P=5), originally static amp -10",
263
+
// Original sound block: $10,$00,$F6,$FF,$05,$00,$03,$00 → channel 0,
264
+
// amp -10, pitch 5, duration 3. Converted to an envelope holding at
265
+
// ~84/126 (the BBC level corresponding to static -10) for the duration.
0 commit comments