- Missile fire
- Engine (normal speed)
- Engine (fast speed)
- Engine (slow speed)
- Explosion
- Low fuel warning
- Bonus life
- Tank full
- Refueling
- Helicopter missile launch
- Tank shell whistle
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.