Fork me on GitHub
Missile fire
This sound effect is produced by the routine at do_fire when the player fires the missile. It plays 8 speaker pulses (~1.3 ms) per interrupt for 7 interrupts (~140 ms total), with ~18.7 ms gaps between calls.
The call count comes from missile physics: the missile spawns at Y=126 and moves 6 pixels per animate pass, with the sound flag cleared when Y drops to 112 (after 3 passes: 126→120→114→108). At 50 Hz with 2 animate passes per frame at ~12 FPS: 3 × 50 / (2 × 12) = 6.25, rounded to 7.
Engine (normal speed)
This sound effect is produced by the routine at beep_engine_normal during normal speed flight (player not pressing up or down). Called once per interrupt (~50 Hz); each call plays 8 speaker pulses (~9.5 kHz).
Note: the period parameter is sound_flags AND $0F, which equals 2 during normal speed gameplay. With period = 2, the ON and OFF delays are 49T and 63T respectively. At 44,100 Hz, 49T converts to 0.62 samples and 63T to 0.79 samples — both round to 1 sample, producing alternating single-sample pulses at 22 kHz (the Nyquist limit), which are effectively inaudible as PCM. The delays here use period = 10 (177/191 T-states, ~2.2/2.4 samples each) to produce a representable, audible illustration.
Engine (fast speed)
This sound effect is produced by the routine at beep_engine_fast when the player holds up to accelerate. Called once per interrupt (~50 Hz); each call plays 8 speaker pulses (~16.6 kHz).
Engine (slow speed)
This sound effect is produced by the routine at beep_engine_slow when the player holds down to decelerate. Called once per interrupt (~50 Hz); each call plays 8 speaker pulses (~10.3 kHz).
Explosion
This sound effect is produced by the routine at beep_explosion when the player's plane is destroyed. The ON delay varies semi-randomly between frames because the DE register is not intentionally set by the caller, giving the explosion its noisy character. Each frame plays 4 cycles of waveform with a decreasing OFF delay, making the sound more rapid and urgent as the explosion progresses.
Low fuel warning
This sound effect is produced by the routine at do_low_fuel when the fuel level drops below the warning threshold. The pitch warbles by decrementing the period each frame, creating an urgent rising tone that resets after reaching zero.
Bonus life
This sound effect is produced by the routine at do_bonus_life when the player earns an extra life. It generates a rising pitch over 63 frames by calling the ROM BEEPER routine at $03B5 with decreasing pitch values.
Tank full
This sound effect is produced by the routine at signal_fuel_level_excessive when the fuel tank is already full and cannot accept more fuel. Called once per game frame (~12 FPS); plays a short beep (~1450 Hz, ~6 ms) via the ROM BEEPER routine.
Refueling
This sound effect is produced by the routine at 6E50 while the plane is actively receiving fuel. Called once per game frame (~12 FPS); uses the ROM BEEPER routine with DE=$0007, HL=$0333 (8 cycles, ~516 Hz, ~14.6 ms per call).
Helicopter missile launch
This sound effect is produced by the routine at 73EB when an advanced helicopter fires a missile. Uses the ROM BEEPER routine with DE=$0001, HL=$2800 (2 cycles, ~43 Hz, ~35 ms).
Tank shell whistle
This sound effect is produced by the routine at 7457 once per game frame while a tank shell is in flight. The pitch parameter is HL = step × 256 (DE=$0002, 3 cycles per step), producing a descending whistle over trajectory steps 1–7. Step 8 triggers an explosion and plays no sound.