Update piece counts on all (game-level) promotions
[fairymax.git] / changelog
1 /***************************************************************************/
2 /* micro-Max version 4.8 (~1950 characters) features:                      */
3 /* - recursive negamax search                                              */
4 /* - all-capture quiescence search with MVV/LVA priority                   */
5 /* - (internal) iterative deepening                                        */
6 /* - best-move-first 'sorting'                                             */
7 /* - a hash table storing score and best move                              */
8 /* - futility pruning                                                      */
9 /* - king safety through magnetic frozen king                              */
10 /* - null-move pruning                                                     */
11 /* - Late-move reductions                                                  */
12 /* - full FIDE rules (expt minor promotion) and move-legality checking     */
13 /* - keep hash + rep-draw detect                                           */
14 /* - end-game Pawn-push bonus, new piece values, gradual promotion         */
15 /***************************************************************************/
16 /* The Fairy-Max version reads the piece description from a file fmax.ini  */
17 /* The format supports many fairy pieces, including hoppers.               */
18 /* f) now supports 15 piece types, by requisitioning WHITE bit             */
19 /* g) supports larger board width.                                         */
20 /* h) castling bug ('in-check by non-captures') corrected                  */
21 /* i) rep-draw bug ('side-to-move') corrected                              */
22 /* k) allow user underpromotions, recognize & ignore 'variant' command     */
23 /* l) edit bug corrected (i & j file clear)                                */
24 /* m) piece values no longer quantized, game-stage counting bug corrected  */
25 /* n) edit-menu K-side castling bug corrected.                             */
26 /* o) retrieve the requested variant from the .ini file                    */
27 /* p) clear hash table on variant switch                                   */
28 /* q) reduced piece-material count for better Pawn push                    */
29 /* r) hash-table bug corrected (X still ORed with flags)                   */
30 /* s) Bug that prevented initialization center points corrected            */
31 /* t) castling bug after edit fixed                                        */
32 /* u) converted to protocol 2; ping implemented                            */
33 /* v) white e.p. rights hash bug fixed;                                    */
34 /* w) piece indicators programable, multi-path support                     */
35 /* x) e.p. changed to support Berolina Pawns                               */
36 /* y) capture value of 6-7th-rank Pawn reduced in Shatranj                 */
37 /* z) bug in promotion input corrected                                     */
38 /* A) stalemate-detection bug in printResult fixed                         */
39 /* B) Invalidate hash on game-level promotion (might be under-promotion!)  */
40 /* C) King move evaluation based on negative piece value in stead of nr    */
41 /* D) WB memory command added, undo fixed                                  */
42 /* E) 15th piece read in                                                   */
43 /* F) accepts ini fileargument                                             */
44 /* G) bug in calculation ASCII promotion character fixed                   */
45 /* H) unified normal and shatranj source                                   */
46 /* J) rewrite under-promotion code, fixes persistent bug there             */
47 /* K) o[] and oo[] made int to make fairymax work on big-endian machines   */
48 /* L) added Resign option feature (using new WB protocol)                  */
49 /* M) char -> signed char for better portability                           */
50 /* N) add PV printing and multi-PV support                                 */
51 /* O) non-Rook castling, 6th-rank promotion, independent B/W piece naming  */
52 /***************************************************************************/
53
54 4/6/2009 Unified source of ShaMax and Fairy-Max into single fmax.c file, and
55          created this ChangeLog from the until then self-documenting source.
56
57 6/2/2009 Promotion code rewitten to not refer to default piece characters.
58
59 9/3/2009 Fixed big-endian bug in reading inifile (char with int format),
60          and added some option features to make Fairy-Max useful as test
61          engine for GUIs that want to implement the WB protocol extensions.
62
63 9/16/2009 Made signedness of char in AI explicit
64
65 27/12/2009 Added PV updating through the triangular-array method. Also added
66            a multi-PV option to print lines within a certain sccore margin.
67
68 15/1/2010 Improved Makefile, updated docs
69           Implement independent naming of white and black pieces. (So mirror-
70           image pieces can use same letter.) 
71           Change castling code to allow castling with any corner piece type.
72           Implement 6th-rank promotion based on 'Queen' value.
73           Makruk added as new variant to the fmax.ini file.
74
75 16/1/2010 Fixed bug in Shatranj result claims.
76           Flip eval sign when side-to-move changes through WB color command.
77           
78 17/1/2010 Removed Shatranj stalemate claim again, as it was never triggered.
79
80 1/11/2010 Implement counting of pieces, and extinction win condition.
81           Add engine option to allow subdivision of variant fairy.
82           Add FIDE vs Nutty Knights as variant fairy/FIDE-Nutters
83           Allow white and black to promote to a different piece type.
84
85 2/11/2010 Implement duple-check rule.
86           Add Spartan Chess as variant to fmax.ini.
87           Update docs.
88
89 1/12/2010 Version 4.8Q, implementing a reverse setup command for sending
90           pieceToCharTable and initial position to the GUI, sub-specification
91           of variant fairy through an engine-defined option, allowing Seirawan-
92           type gating moves in search. Seirawan Chess is added as new variant,
93           plus several new combinations of Chess with different armies
94
95 7/10/2011 Version 4.8R, keeping better track of which pieces are virgin in a
96           setup position, and have a better distinction between use of the '4'
97           move-rights code between an initial double-step jump without e.p.
98           rights (as could so far only be used for Pawns, as the Spartan
99           Hoplite), and castlings. As a result even royal pieces can now get
100           an initial double-step other than castling, which has been used to
101           implement Cambodian Chess as a sub-variant of Makruk (selected
102           through a new option). Falcon Chess was added as a new variant.
103
104 12/2/2013 Version 4.8S. Fixes a lot of bugs:
105           * Setting up Seirawan positions with ungated pieces
106           * Making Seirawan gating with already gated pieces illegal
107           * Fix undo in Seirawan (by remembering gatings)
108           * Recognizing drop moves as illegal moves
109           * Hash-table was only half used
110           * Spurious result claims after under-promotion
111           * False mate claims in Spartan when promotion to K was possible
112           * Fix bug in Berolina e.p. capture that is actually non-capture
113           * Fix Clear Hash option, which did not work at all
114           * Fix addition of 6th & 7th-rank Pawn bonus when setting up position
115           In addition it prints msec-accurate timing info.
116