Skip to content
  • Dave Kaye's avatar
    Fixed incorrect promotion in the XBoard protocol. · d7880a9a
    Dave Kaye authored and Alexander Semke's avatar Alexander Semke committed
    To generate a move string including a pawn promotion, the Knights code starts out with a generic call to move.cpp to create a string.
    An example string returned is:
    e7e8=Q
    Then the string is modified in xboardprotocol.cpp to remove all capitals:
    e7e8=q
    This string is then sent to the chess engine.  But the xboard protocol documentation requires the string to be:
    e7e8q
    
    Early on in chess engine development there were multiple formats to communicate with chess engines.
    Some utilzed an = sign between move and promotion piece.  But the Xboard system slowly became the standard for communication.
    Some chess engines will also accept the = sign in Xboard mode to be historically compatable.
    Specifically, the following engines will accept the = sign and will run:
    GNUchess6, Crafty, Phalanx XXV and Gully2.
    
    Other (usually newer) engines require the correct Xboard protocol. They will stop play with an illegal move response if the move contains the = sign.
    Some examples are:
    Greko, Dreamer, Sloppy, Beowulf and Prophet4.
    
    With this fix the behavior is more correct and all of the above engines accept the pawn promotion move and continue to play.
    
    BUG: 447665
    FIXED-IN: 22.08
    d7880a9a