.WAV in IGI 2 -- High-Fidelity Audio Samples

1. Architectural Role & Engine Purpose

The WAV (Covert Strike Spatial 3D Audio Sample) format delivers high-fidelity positional audio, environmental acoustic reverberations, and weapon soundscapes in I.G.I. 2: Covert Strike.

In IGI 2, the audio engine integrated Creative Labs EAX 2.0 (Environmental Audio Extensions) and DirectSound3D hardware buffers. Audio assets include specialized metadata chunks defining acoustic reverb presets (concrete bunker echoes, open snow valleys, metallic hangar reverberations).

2. Binary File Layout & Memory Map Diagram

An IGI 2 WAV file contains RIFF format chunks, EAX acoustic parameters, and 16-bit PCM audio samples:

IGI 2 WAV — EAX 2.0 3D POSITIONAL AUDIO LAYOUT 0x00: RIFF WAVE Master Header (12 Bytes) RIFF WAVE FourCC "RIFF" | Total File Size - 8 | Format FourCC "WAVE" riff[4], file_size, wave[4] fmt Chunk: 44.1 kHz 16-Bit PCM AUDIO FORMAT Audio Format (1=PCM), Channels (1=Mono Positional), Sample Rate (44100 Hz), BitsPerSample (16) High-fidelity tactical weapon sounds eax Chunk: EAX 2.0 Reverb Parameters EAX 2.0 REVERB Environmental Reverb Preset ID, Room Volume, Decay Time, High-Frequency Damping Direct hardware environmental acoustics data Chunk: Contiguous 16-Bit Signed PCM Audio Samples DATA CHUNK Raw 16-bit signed PCM audio data streamed into DirectSound3D hardware secondary buffers Weapon gunshots, silenced pistol taps, footsteps, and guard voice radio calls

3. DirectSound3D & EAX 2.0 Environmental Reverb Pipeline Diagram

When gunshot sounds are triggered, the engine applies real-time environmental reverberation:

IGI 2 WAV — EAX 2.0 ENVIRONMENTAL REVERBERATION PIPELINE 1. SOUND EVENT • SOCOM Pistol Fired • World Coordinate XYZ • Inside Concrete Bunker 2. EAX PRESET • Query Room Acoustics • Set EAX: CONCRETE_ROOM • Decay = 1.8s, Damping 3. DSP REVERB • DirectSound3D Matrix • Simulate Hard Echoes • Early Reflections DSP 4. SURROUND OUT • Positional Panning • Sound Card Mixer • Immersive Audio

4. C++ Struct Definitions

#pragma pack(push, 1)
struct WavEaxChunk {
    char     eax_id[4];     // "eax "
    uint32_t chunk_size;    // Size
    uint32_t environment;   // EAX Environment Preset (e.g. Hangar, Tunnel)
    float    room_volume;   // Master reverb volume
    float    decay_time;    // Reverb decay time in seconds
    float    damping;       // High frequency damping ratio
};
#pragma pack(pop)