Summary: | Pawn Promotion Is Incorrect In Xboard Protocol | ||
---|---|---|---|
Product: | [Applications] knights | Reporter: | Dave Kaye <d_k> |
Component: | general | Assignee: | Alexander Semke <alexander.semke> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | kde-games-bugs |
Priority: | NOR | ||
Version: | 2.6.211190 | ||
Target Milestone: | --- | ||
Platform: | Other | ||
OS: | Other | ||
Latest Commit: | https://invent.kde.org/games/knights/commit/d7880a9ab4643d2800e4a918b6b0f8aa93d89999 | Version Fixed In: | 22.08 |
Sentry Crash Report: | |||
Attachments: | Patch file Bug 447665 |
Description
Dave Kaye
2021-12-29 21:15:52 UTC
Created attachment 147654 [details] Patch file Bug 447665 Knights utilizes code found in xboardprotocol.cpp to create a move string. The string describes the chess move in Xboard protocol to be sent to an Xboard compliant chess engine. 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. A patch was developed based upon the UCI code to generate the correct Xboard move string. That patch is attached to this note. When applied to the Knights code, **ALL** of the above engines accept the pawn promotion move and continue to play. Git commit d7880a9ab4643d2800e4a918b6b0f8aa93d89999 by Alexander Semke, on behalf of David Kaye. Committed on 15/04/2022 at 08:05. Pushed by asemke into branch 'master'. Fixed incorrect promotion in the XBoard protocol. 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. FIXED-IN: 22.08 M +2 -2 src/proto/xboardprotocol.cpp https://invent.kde.org/games/knights/commit/d7880a9ab4643d2800e4a918b6b0f8aa93d89999 |