Audio (DirectSound + WAV)#
Purpose#
DirectSound initialization, WAV loading via MMIO, streaming playback with multimedia timer callbacks.
Key entry points#
| Symbol | Address | Role |
|---|---|---|
lotr2_audio_init_directsound |
0x42fc90 | DirectSoundCreate, primary buffer |
lotr2_audio_lpds |
0x4ef810 | IDirectSound* global |
lotr2_audio_dsound_hr |
0x531028 | HRESULT for vtable calls |
lotr2_audio_load_wav_mmio |
0x4d4110 | mmioOpenA / RIFF-WAVE load |
lotr2_audio_parse_wav_chunk |
0x4d43ea | Parse fmt chunk |
lotr2_audio_create_buffer_from_wav |
0x4306b4 | Create secondary buffer from WAV |
lotr2_audio_start_stream_timer |
0x430d12 | timeSetEvent playback pump |
lotr2_audio_stop_stream_timer |
0x430e91 | timeKillEvent |
lotr2_audio_stream_timer_proc |
0x401cdf | Timer callback address |
lotr2_audio_play_wav |
0x431b10 | One-shot WAV playback (SFX / speech) |
lotr2_audio_load_wav_file |
0x4d467f | Load WAV into GlobalAlloc buffers |
lotr2_audio_mmio_read_chunk |
0x4d4482 | Read WAVE data chunk via MMIO |
lotr2_audio_buffer_is_playing |
0x431e1b | Query secondary buffer play status |
lotr2_audio_release_secondary_buffer |
0x431e99 | Stop + release one-shot buffer |
lotr2_audio_start_stream_from_name |
0x43052d | Start streaming channel from path |
lotr2_audio_hresult_to_code |
0x431ef2 | Map DSERR HRESULTs to error codes |
lotr2_audio_dsb_playback |
0x53102c | IDirectSoundBuffer* for one-shot playback |
lotr2_audio_shutdown_directsound |
0x42feb5 | Release DirectSound; stop streams and preloaded slots |
lotr2_audio_init_primary_waveformat |
0x42ff6d | Seed primary-buffer WAVEFORMATEX |
lotr2_audio_preload_wav_bank |
0x42ffcb | Load path table into preloaded SFX slots |
lotr2_audio_play_preloaded |
0x4302a0 | Play preloaded slot if not already playing |
lotr2_audio_restart_preloaded |
0x430396 | Stop + replay preloaded slot |
lotr2_audio_play_preloaded_slot |
0x43044f | Wrapper around lotr2_audio_play_preloaded |
lotr2_audio_release_preloaded |
0x43046b | Stop + release preloaded slot buffer |
lotr2_audio_stop_preloaded |
0x4304e0 | Stop preloaded slot without release |
lotr2_audio_stream_channel_enabled |
0x43062c | Stream channel enable gate |
lotr2_audio_stream_refill |
0x430f55 | Streaming buffer refill from MMIO WAV |
Dependencies#
dsound.dll—DirectSoundCreatewinmm.dll—mmioOpenA,mmioRead,timeSetEvent,timeKillEventio/MODULE.md— alternate raw file reads for some.wav
Data files#
*.wav— sound effects and speech (e.g.ff_msg.wav,s080_01.wav)
Open questions#
- Two streaming channels (
DAT_00531020/DAT_005310e0arrays, size 2).