anchor.diff:    if not fIsSoundInitialized then Exit;
   
     //Set default Listener orientation
  -  fListener.Ori[1]:=0; fListener.Ori[2]:=0; fListener.Ori[3]:=-1; //Look-at vector
  -  fListener.Ori[4]:=0; fListener.Ori[5]:=1; fListener.Ori[6]:=0; //Up vector
  +  fListener.Ori[1] := 0; fListener.Ori[2] := 0; fListener.Ori[3] := -1; //Look-at vector
  +  fListener.Ori[4] := 0; fListener.Ori[5] := 1; fListener.Ori[6] := 0; //Up vector
     AlListenerfv(AL_ORIENTATION, @fListener.Ori);
     fSoundGain := aVolume;
   
  
positive.code:     procedure UpdateStateIdle;
    end;
  
    TKMScriptSoundsManager = class
    private
      fListener: TKMPointF;
      fLastScriptIndex: Integer;
      fCount: Integer;
      fScriptSounds: array of record
                          PlayingIndex: Integer; //Index into gSoundPlayer, or -1 if not playing
                          //Fields below are saved
                          Looped: Boolean;
                          FadeMusic: Boolean;
                          ScriptIndex: Integer;
                          SoundName: AnsiString; //Just sound name, not the path
                          AudioFormat: TKMAudioFormat;
                          Volume: Single;
                          Radius: Single;
                          Attenuate: Boolean;
                          Loc: TKMPoint;
                          HandIndex: TKMHandID;
                        end;
      function CanPlay(aIndex: Integer): Boolean;
      procedure StartSound(aIndex: Integer);
      procedure StopSound(aIndex: Integer);
    public
      destructor Destroy; override;
      property Count: Integer read fCount;
  
      procedure Save(SaveStream: TKMemoryStream);
      procedure Load(LoadStream: TKMemoryStream);
      procedure UpdateState;
  
      function AddSound(aHandIndex: TKMHandID; const aSoundName: AnsiString; aSoundFormat: TKMAudioFormat; aLoc: TKMPoint;
                            aAttenuate: Boolean; aVolume: Single; aRadius: Single; aFadeMusic, aLooped: Boolean): Integer;
      procedure RemoveLoopSound(aScriptIndex: Integer);
      procedure RemoveSound(aScriptIndex: Integer; aLoopedOnly: Boolean = False);
      procedure UpdateListener(X,Y: Single);
    end;
  
  
  
negative.code:   I: Integer;
  begin
    LoadStream.CheckMarker('ScriptSoundsManager');
    LoadStream.Read(fLastScriptUID);
    LoadStream.Read(fCount);
    SetLength(fScriptSounds, fCount);
    for I := 0 to fCount - 1 do
    begin
      LoadStream.Read(fScriptSounds[I].ScriptUID);
      LoadStream.ReadA(fScriptSounds[I].SoundName);
      LoadStream.Read(fScriptSounds[I].Volume);
      LoadStream.Read(fScriptSounds[I].Radius);
  