anchor.diff:    // Check is done after gGameApp creating because we want to load texts first to shw traslated error message
     //todo: refactor. Separate folder permissions check and render initialization
     // Locale and texts could be loaded separetely to show proper translated error message
  -  if (gLog = nil)
  -    or (not aReturnToOptions and not DoHaveGenericPermission) then
  -    Exit(False); // Will show 'You have not enough permissions' message to the player
  +  try
  +    if (gLog = nil)
  +      or (not aReturnToOptions and not DoHaveGenericPermission) then
  +    begin
  +      ShowPermissionsError;
  +      Exit(False); // Stop the app
  +    end;
  +  except
  +    // but it seems like Exit alone doesn't work - try-except block does
  +    ShowPermissionsError;
  +    Exit(False); // Stop the app
  +  end;
   
     gGameApp.OnGameSpeedActualChange := GameSpeedChange;
     gGameApp.AfterConstruction(aReturnToOptions);
  
positive.code:   {$IFDEF USE_MAD_EXCEPT} KM_Exceptions, {$ENDIF}
    KromUtils, KM_FileIO,
    KM_GameApp, KM_VclHelpers,
    KM_System, KM_ResExporter,
    KM_Log, KM_CommonUtils, KM_Defaults, KM_Points, KM_DevPerfLog,
    KM_CommonExceptions,
    KromShellUtils, KM_MapTypes;
  
negative.code: 
  
  function TKMMain.ReinitRender(aReturnToOptions: Boolean): Boolean;
  
    procedure ShowPermissionsError;
    begin
      SKIP_RENDER := True; // Skip render, since gGameApp will show panels on FullScreen mode
      fFormLoading.Hide; //Will close the form on Full Screen mode
      fFormMain.Hide;
      gMusic.Stop;
      fFormMain.ShowFolderPermissionError; // Show localized error message
      Stop(nil); // Stop the app
    end;
  
  begin
    Result := True;
    if fMainSettings.FullScreen then
  