anchor.diff:  
     //Start playing
     AlSourcePlay(fALSounds[FreeBuf].ALSource);
  -  if SoundID <> sfxNone then
  -    fALSounds[FreeBuf].Name := GetEnumName(TypeInfo(TSoundFX), Integer(SoundID))
  +  if aSoundID <> sfxNone then
  +    fALSounds[FreeBuf].Name := GetEnumName(TypeInfo(TSoundFX), Integer(aSoundID))
     else
       fALSounds[FreeBuf].Name := ExtractFileName(aFile);
     fALSounds[FreeBuf].Position := Loc;
     fALSounds[FreeBuf].Duration := WAVDuration;
     fALSounds[FreeBuf].PlaySince := TimeGet;
  -  fALSounds[FreeBuf].Volume := Volume;
  +  fALSounds[FreeBuf].Volume := aVolume;
     fALSounds[FreeBuf].FromScript := aFromScript;
     fALSounds[FreeBuf].Looped := aLooped;
  -  fALSounds[FreeBuf].FadesMusic := FadeMusic;
  +  fALSounds[FreeBuf].FadesMusic := aFadeMusic;
   
     Result := FreeBuf;
   end;
  
positive.code:   //Set source properties
    AlSourcei(fALSounds[FreeBuf].ALSource, AL_BUFFER, fALSounds[FreeBuf].ALBuffer);
    AlSourcef(fALSounds[FreeBuf].ALSource, AL_PITCH, 1);
    AlSourcef(fALSounds[FreeBuf].ALSource, AL_GAIN, 1 * Volume * fSoundGain);
    if Attenuated then
    begin
      Dif[1]:=Loc.X; Dif[2]:=Loc.Y; Dif[3]:=0;
      AlSourcefv(fALSounds[FreeBuf].ALSource, AL_POSITION, @Dif[1]);
  
negative.code:       fLastMessageNoticeTime := TimeGet;
    end;
  
    Play(aSoundID, KMPOINTF_ZERO, false, aVolume); //Redirect
  end;
  
  
  procedure TKMSoundPlayer.Play(aSoundID: TSoundFXNew; aVolume: Single = 1; aFadeMusic: Boolean = False);
  begin
    if SKIP_SOUND or not fIsSoundInitialized then Exit;
    Play(aSoundID, KMPOINT_ZERO, False, aVolume, aFadeMusic);
  end;
  
  
  procedure TKMSoundPlayer.Play(aSoundID: TSoundFXNew; aLoc: TKMPoint; aAttenuated: Boolean = True; aVolume: Single = 1; aFadeMusic: Boolean = False);
  begin
    if SKIP_SOUND or not fIsSoundInitialized then Exit;
    PlayWave(gRes.Sounds.FileOfNewSFX(aSoundID), KMPointF(aLoc), gRes.Sounds.GetSoundType(aSoundID), aAttenuated, aVolume, aFadeMusic);
  end;
  
  
  {Wrapper for TSoundFX}
  procedure TKMSoundPlayer.Play(aSoundID: TSoundFX; aLoc: TKMPoint; aAttenuated: Boolean = True; aVolume: Single = 1);
  begin
    if SKIP_SOUND or not fIsSoundInitialized then Exit;
    PlaySound(aSoundID, '', KMPointF(aLoc), gRes.Sounds.GetSoundType(aSoundID), aAttenuated, aVolume, MAX_DISTANCE, False, False); //Redirect
  end;
  
  
  procedure TKMSoundPlayer.Play(aSoundID: TSoundFX; aLoc: TKMPointF; aAttenuated: Boolean = True; aVolume: Single = 1);
  begin
    if SKIP_SOUND or not fIsSoundInitialized then Exit;
    PlaySound(aSoundID, '', aLoc, gRes.Sounds.GetSoundType(aSoundID), aAttenuated, aVolume, MAX_DISTANCE, False, False); //Redirect
  end;
  
  
  {Wrapper WAV files}
  function TKMSoundPlayer.PlayWave(const aFile: UnicodeString; const aLoc: TKMPointF; aSoundType: TKMSoundType; aAttenuated: Boolean = True;
                                   aVolume: Single = 1; aFadeMusic: Boolean = False; aLoop: Boolean = False): Integer;
  begin
    Result := -1;
    if not fIsSoundInitialized then Exit;
    Result := PlaySound(sfxNone, aFile, aLoc, aSoundType, aAttenuated, aVolume, MAX_DISTANCE, aFadeMusic, aLoop); //Redirect
  end;
  
  
  