
https://talkchess.com/forum3/viewtopic.php?f=2&t=75718

Fairy-Max 4.8 never really crashes, but it can fall into excessively long thinking (like 30 min in a bullet game) at the moment it switches off null move (in the root), and then tries to improve the search depth it finds in the hash entry for the root by 1 ply without null move. This of course makes it forfeit on time. I never bothered to fix that, because it almost exclusively happens in lost positions, so that no Elo would be gained by the fix.

This should be cured in version 5, which invalidates its hash table before any search where the use of null move was switched.

The latest source of Fairy-Max can be found in my git repository:

http://hgm.nubati.net/cgi-bin/gitweb.cgi

Just download the latest snapshot of the main branch. Same for KingSlayer / simple.


Thank you for the new version of Fairy-Max. I could compile and test it successfully on Linux and on Windows.

I don't want to bore you but, unless I did something wrong, there is still a little issue (for CuteChess users) with the missing promotion suffix. If ever you had time to fix it...

Code: Select all

Finished game 9 (Hippocampe vs Fairy-Max 5.0): 1-0 {Black makes an illegal move: b2b1}

Maybe Oliver didn't see it because he opposed (I guess) Fairy-Max to stronger engines, where Fairy-Max hadn't occasions to promote.


Do you have the entire game? I could not reproduce this in a KPK position. Fairy-Max should print promotion suffixes; when it 'confirms' a move at game level (i.e. refrains from its UnMake in the root), it checks if the piece at the to-square is different from the piece it was moving, and if so, it possibly corrects that piece to conform to a promotion choice given as input (and leaves it at Queen if it was his own move), and remembers the resulting piece code (which for non-promotions would be left at 0).

Code: Select all

          // here prom = 0, and PromPiece a possible correction to the default promotion choice Q
          if(board[toSqr]-piece & 15) prom = board[toSqr] -= PromPiece,   /* (under-)promotion:       */

After return from the root the move-printing code then does

Code: Select all

			    if(prom) printf("%c", piecename[prom]+'a'-1);

I don't see how this could ever omit the promotion suffix. Even if the piecename[] table is not properly initialized (which depends on the variant definition in the fmax.ini file) it should print something.
