Simplify man production rule in Makefile
[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 conditions for check extension on capture of checker
114           * Fix Clear Hash option, which did not work at all
115           * Fix addition of 6th & 7th-rank Pawn bonus when setting up position
116           * Adapt score by true piece value in case of (under-)promotion
117           In addition it prints msec-accurate timing info,
118           and can implement limited range sliders of range up to 5.
119           Some game definitions using the Remarkable Rookies army (which
120           uses a range-4 Rook) have been added as sub-variants of fairy.
121
122 8/9/2014  Version 4.8T. Three bug fixes, some enhancements, two new variants:
123           * mark Rook non-virgin after castling, so it cannot gate in Seirawan
124           * Fix printing of variants feature in MaxQi
125           * Sending the setup command now also works with 3rd-rank Pawns
126           * Allow sending a parent variant with 'setup'
127           * Implement new method for indicating promo-zone width = 3
128           * Implement new variant nocastle
129           * Implement new variant ASEAN Chess
130           * Add option to play Makruk with Ai-Wok in stead of Met
131
132 17/10/2014 Version 4.8U. Four new variants were added:
133           * Charge of the Light Brigade
134           * King of the Hill
135           * Bifurcator Chess
136           * Team-Mate Chess
137           General game-playing enhancements:
138           * Hoppers can now be specified as hopping over friendly pieces
139           only, and the point where the second move leg starts can be
140           moved to the step just before hitting the platform.
141           * Sliders will now toggle to their secondary move only once,
142           allowing bent riders at the expense of crooked ones.
143           * Code is added to recognize the situation 'bare King', and
144           give higher award for cornering it in that case, to make mating
145           with many weak pieces (as regularly occurs in Makruk) easier.
146           * When a mate of the bare King in one corner cannot be found,
147           points will be awarded to drive the King out of that corner to
148           another one, allowing it to successfully perform KBNK-like mates.
149           * Make it possible to mark pieces as invalid promotion choice
150           Embracement of new standards:
151           * Add logo, and install it according to new 'plugin standard'
152           * Install a (new) .eng file to comply with the plugin standard
153           * Issue the (new) XBoard 'piece' command for all non-standard pieces
154           New options:
155           * Fifty-move claiming can be adapted to the need of the variant
156           * A comment line can now be displayed with each variant through
157           an 'Info' button in the engine options
158           Bugfixes, two of fatal bugs:
159           * Fix printing of Seirawan gating moves
160           * Correct the moves of the Marshal in the Rookies army of CWDA
161           * suppress emission of a spurious (garbled) setup command at startup
162           * Fix positioning of Pawns in ASEAN Chess in setup command
163
164 22/10/2014 Version 4.8V. Bugfix release for 4.8U:
165           * Fixes null move, which was broken by the bare King patch, as that
166           always set material (R) to 4, not just when bare King was detected.