• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

1.30 Campaign Fix for Missing Sounds

Level 2
Joined
Oct 5, 2023
Messages
2
The campaign on patch 1.30 has plenty of voice lines and sounds not working, such as Maiev's Tor ilisar'thera'nal! on the 4th Night Elf X mission; footmen shouting Attack! on the 5th Human mission; meat wagon sounds during the intro cinematic and Tichondrius's voice lines when you meet him at the southern part of the 2th Undead mission; etc.

I believe to have found the needed modifications for the campaign files that restore those sounds and I have attached the end result as a zip file. Extracting the archive inside your WarCraft III folder and allowing Local Files in your registry is all you need. Unfortunately, your current saves for the campaign won't work, but all your items and hero progression will be kept.

What I've done is that I extracted the war3map.j files from each campaign map and replaced all mentions of
JASS:
    call SetSoundParamsFromLabel( gg_snd_MaievWarcry1, "MaievWarcry" )
    call SetSoundDuration( gg_snd_MaievWarcry1, 1585 )
with
JASS:
    call SetSoundDuration( gg_snd_MaievWarcry1, 1585 )
    call SetSoundChannel( gg_snd_MaievWarcry1, 0 )
    call SetSoundVolume( gg_snd_MaievWarcry1, 127 )
    call SetSoundPitch( gg_snd_MaievWarcry1, 1.0 )

SetSoundParamsFromLabel() seems to be causing the issues and the Frozen Throne campaign files on patch 1.32 and later seem to try and avoid this function and instead use SetSoundChannel( x, 0 ), SetSoundVolume( x, 127 ), and SetSoundPitch( x, 1.0 ). It appears that sound channel 0 is always being used on patch 1.32 and later. From my initial testing on 1.30, it's voice lines and sounds that are stored inside of UnitAckSounds.slk and AmbienceSounds.slk that don't work. Removing MaievWarcry1 from UnitAckSounds.slk would restore her voice line in the cinematic, but would stop it from working during gameplay. It sounds to me that SetSoundParamsFromLabel() somehow creates a duplicate of the MaievWarcry1 variable and that somehow corrupts the sound.

It's a shame since I consider patch 1.30 to be the best way to play the classic campaign. Patch 1.29 introduced native widescreen resolutions but still had ambient sounds disabled (which add a lot to the immersion while playing the campaign! Maybe not so much during mutiplayer or custom games...). Patch 1.30 migrated the sound system to FMOD and restored the ambient sounds, but apparently caused some sounds to not play - which I hope my fix resolved. Patch 1.31, the last non-Reforged one, added a lot of campaign bugs, such as missing hero inventories. Also, patch 1.30 reaches much higher FPS easily, running close to 200 FPS on my laptop while older version barely manage 60 FPS (I assume because of older DirectX versions and the pre-FMOD sound system? Not sure.).

I'm wondering if there's a cleaner fix for this, but from my absolutely non-exhaustive testing everyting seems good so far.
 

Attachments

  • 130 Sound Fixes.zip
    22.7 MB · Views: 8
Top