ZoomMultistompZDL

Airwindows Porting Context for Future Agents

The goal is not to paste desktop Airwindows code directly into a pedal build. The goal is to make flash-safe ZDLs first, then approach the original DSP in hardware-tested increments.

Important naming rule: if the DSP is not the Airwindows DSP, the build is an experiment, not a port. See docs/AIRWINDOWS-EXACT-PORTS.md.

Required Port Shape

Each effect directory should have:

DSP Safety Baseline

For first hardware tests:

Compiler Rules

Airwindows-Specific Trap

Many Airwindows plugins are state-heavy. StereoChorus has two int[65536] delay buffers; reverbs and tape effects often have similar state. Do not port those buffers into .fardata. For StereoChorus, hardware probes have now proven enough per-instance space in ctx[3]; use that arena for large state and keep .fardata tiny. Record the exact source parameter laws in the manifest and document any math substitutions.

ToTape9 is the current warning case and success case: the full ctx[3] kernel builds with .fardata: 0 bytes, T9InitOnly proves lazy ctx[3] init is safe, and the no-divide release build now loads and runs on the test MS-70CDR. VerbTiny and Galactic extend the same approach into reverb-sized state. Before deepening another 9-parameter or helper-heavy port, prove the final UI/descriptor/edit-handler shape with audio-NOP and tiny DSP builds, then add DSP helpers only in isolated increments. For ToTape9 specifically, keep watching parameter-default and preset lifecycle behavior.

Any beta core that is not source DSP is only for ABI probing. It must not be described as a finished Airwindows port unless it runs the source algorithm.

See docs/SAFE-DSP-RULES.md and build/ABI.md before making a port more ambitious. See docs/TI-PDF-NOTES.md for the underlying TI manual notes.