mirror of
https://github.com/imjasonh/nescript
synced 2026-07-08 08:55:38 +00:00
audio: triangle and noise sfx channels
Adds `channel: triangle` / `channel: noise` to the `sfx` declaration form. The existing pulse-1 / pulse-2 driver is unchanged (and is still byte-identical for programs that don't use the new channels) — when a program declares a triangle or noise sfx the runtime splices in an additional per-channel slot that writes to $4008- $400B (triangle) or $400C-$400F (noise) on play. Includes a new `examples/noise_triangle_sfx.ne` demo with committed golden PNG + audio hash. https://claude.ai/code/session_01MaNVcDmK9gsspRkdxowQAM
This commit is contained in:
parent
8610aecdac
commit
201664ea04
18 changed files with 1116 additions and 52 deletions
|
|
@ -418,8 +418,10 @@ impl Linker {
|
|||
// `__audio_tick` — so we emit it alongside the math
|
||||
// routines, well before the NMI handler below.
|
||||
let has_audio = has_label(user_code, "__audio_used");
|
||||
let has_noise = has_label(user_code, "__noise_used");
|
||||
let has_triangle = has_label(user_code, "__triangle_used");
|
||||
if has_audio {
|
||||
all_instructions.extend(runtime::gen_audio_tick());
|
||||
all_instructions.extend(runtime::gen_audio_tick(has_noise, has_triangle));
|
||||
all_instructions.extend(runtime::gen_period_table());
|
||||
// Emit one data block per sfx blob: a label followed by
|
||||
// the envelope bytes. `play Name` codegen emits a
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue