anchor.diff:      procedure LoadGameFromScratch(aSizeX, aSizeY: Integer; aGameMode: TKMGameMode);
       function SaveName(const aName, aExt: UnicodeString; aIsMultiplayer: Boolean): UnicodeString;
   
  -    procedure GameStart(aGameMode: TKMGameMode);
  -    procedure GameEnd(aGameMode: TKMGameMode);
  -    procedure GameDestroy;
  -    procedure GamePlayed;
  +    procedure GameStarted(aGameMode: TKMGameMode);
  +    procedure GameEnded(aGameMode: TKMGameMode);
  +    procedure GameDestroyed;
  +    procedure GameFinished;
     public
       constructor Create(aRenderControl: TKMRenderControl; aScreenX, aScreenY: Word; aVSync: Boolean; aOnLoadingStep: TEvent; aOnLoadingText: TUnicodeStringEvent; aOnCursorUpdate: TIntegerStringEvent; NoMusic: Boolean = False);
       destructor Destroy; override;
  
positive.code: end;
  
  
  procedure TKMGameApp.GameDestroy;
  begin
    if gMain <> nil then
      gMain.FormMain.SetExportGameStats(False);
  end;
  
  
  procedure TKMGameApp.GamePlayed;
  begin
    if CompareDate(fGameSettings.LastDayGamePlayed, Today) < 0 then
      fGameSettings.DayGamesCount := 0;
  
negative.code:   if gMain <> nil then
      gMain.FormMain.ControlsReset;
  
    gGame := TKMGame.Create(aGameMode, fRender, fNetworking, GameDestroyed);
    try
      gGame.Load(aFilePath);
    except
  