H.G. Muller [Tue, 12 Feb 2013 18:47:55 +0000]
Adapt fmax.ini file to Pair-o-Max
To have the recognition of drawish end-games work, the royal piece must
be mentioned last. In adition Bishop values had to be reduced to account
for the pair bonus, and Knights were marked as 'deficient pairs'.
H.G. Muller [Mon, 11 Feb 2013 22:00:22 +0000]
Discount score when mating potential in jeopardy
A new routine is added to the search, to determine the right-shift of
the score when the leading side does nor have mating potential, its last
Pawn is in jeopardy and no mating potential will be left, or when it has
no Pawns to begin with (even with mating potential). The heuristic for
mating potential can be fine-tuned by hiding some flags in the pair bonus
field, for 'mating minor', 'deficient pair' or 'tough defender'.
H.G. Muller [Mon, 11 Feb 2013 21:41:51 +0000]
Auto-determine pair bonus
Color-binding is determined for simple moves (if there is no secondary step),
and a pair bonus of 1/8 of the base value is awarded by default.
H.G. Muller [Mon, 11 Feb 2013 21:27:12 +0000]
Keep track of total piece count always
So far this was only done in ShaMax to implement the baring rule,
but it will come in handy for determination of mating potential.
H.G. Muller [Mon, 11 Feb 2013 21:20:45 +0000]
Update piece counts on all (game-level) promotions
The piece count was only updated for entered moves in case of promotion
to royalty (which only occurs in Spartan, as underpromotion, so Fairy-Max
would never do it by itself). This is now moved to the 'first-floor exit',
where it is done for any game move and any piece type, so that piece count
pl[] are completely reliable in the root. (Preparing their use for
determination of mating potential.)
H.G. Muller [Mon, 11 Feb 2013 21:12:49 +0000]
Keep track of piece pairs, with configurable bonus
A new array bp[] is added, indexed by piece type, to store the pair
bonuses for each piece type. The bonus is awarded on capture when the
piece count kept in pl[] for that type becomes odd.
The value can be specified as the 'move rights' of a step vector 0,
appended to the piece description.
H.G. Muller [Tue, 12 Feb 2013 09:32:56 +0000]
Change name to Pair-o-Max
H.G. Muller [Wed, 13 Feb 2013 19:02:13 +0000]
Add 6th and 7th rank Pawn bonus when setting up position
Both the bonuses hidden in the board, as well as the total material
evaluation had to be added.
H.G. Muller [Tue, 12 Feb 2013 15:38:38 +0000]
Update changelog
H.G. Muller [Mon, 11 Feb 2013 21:30:26 +0000]
Bump version number to 4.8S
H.G. Muller [Tue, 12 Feb 2013 15:03:36 +0000]
Fix bug in Berolina e.p. capture
A move to the e.p. square in Berolina is not always an attempt to
capture e.p., but can also be a normal non-capture. The latter were
refused, however, because the capture square was always shifted for
Pawn moves to the e.p. square. Now it is only done when the move
has capture rights associated with it.
H.G. Muller [Tue, 12 Feb 2013 08:43:20 +0000]
Fix spurious result claims in Spartan Chess
Fairy-Max sometimes sees phantom mates, where evasion is possible through
promotion to royalty. The possibility for this is now detected based on
presence of expendable royalty in the list of participating pieces,
and this is used to suppress loss claims. (Checking if promotion is
indeed possible is limited to presence of 2nd-rank Pawn.)
In addition promotion to royalty is now rejected as illegal in variants
without expendable royalty.
H.G. Muller [Mon, 11 Feb 2013 21:38:13 +0000]
Remove under-promotion resign
This was legacy code from micro-Max, and is no longer used, as Fairy-Max
allows the opponent every under-promotion.
H.G. Muller [Mon, 11 Feb 2013 20:51:30 +0000]
Correct typo in error message
H.G. Muller [Mon, 11 Feb 2013 13:12:48 +0000]
Fix some warnings
H.G. Muller [Mon, 11 Feb 2013 13:05:46 +0000]
Fix Clear Hash option
The Clear Hash option was not properly tested for, and was thus ignored.
H.G. Muller [Mon, 11 Feb 2013 13:02:05 +0000]
Fix hash-address bug
The lowest bit of the address was clipped off by wrong use of the mask.
Because of this only even entries could be used, and spoiling of the
key after underpromotion to the 'nearest' alternative would lead to an
enormous number of false hash hits, leading to false result claims.
H.G. Muller [Tue, 24 Apr 2012 12:57:12 +0000]
Recognize drop moves as illegal move
An @-sign as second character now makes Fairy-Max recognize the input
as a move, so that the Illegal-move response is given rather than the
Unknown-command response. It is not really checked if the encoding of
the drop move accidentally coincide with that of a legal move.
H.G. Muller [Mon, 13 Feb 2012 12:37:28 +0000]
Let Fairy-Max print timing info
Before and after search a time stamp are printed, and after the search
the real and cpu time used for it. The time stamp can be compared to
that of the opponent, to calculate communication delay through the GUI.
H.G. Muller [Wed, 28 Dec 2011 13:28:18 +0000]
Fix illegal-move message on seirawan gating from gated pieces
Entering a gating move hen an already-gated piece left the back rank
as interpreted as a on-gating move, rather than rejected. This because
gating moves with non-virgin pieces were interpreted as non-gating
promotions. The test for true promotions is now done on piece type
rather than virginity.
H.G. Muller [Tue, 27 Dec 2011 14:39:42 +0000]
Fix undo in variant seirawan
The gated pieces were not remembered in the game history, so that
replaying it when tking bck a move did not work properly.
H.G. Muller [Tue, 27 Dec 2011 14:02:30 +0000]
Add setting up of holdings in variant seirawan
In WB edit mode lines of the form P@N put N copies of piece type P
in the Seirawan holdings, and the xedit=1 feature lets WB send it
this way. Should not be used for other pieces than H or E!
H.G. Muller [Thu, 3 Nov 2011 16:37:34 +0000]
Fix under-promotion hash mixup
The hash table was invalidated on under-promotion by adding the promotion
'deficit' to the J hash key. But for some fairy-pieces (in particular
Spartan G vs W) this difference apparently caused false hits in the
null-move search, leading to misqualification of positions as stalemate.
Presumably because the J key is also modified by stm, and different
stm and promo-deficit could cancel each other. In stead we now modify
the Z hash key with the promo-deficit.
H.G. Muller [Sat, 8 Oct 2011 17:29:29 +0000]
Update explanations inf max.ini file
H.G. Muller [Sat, 8 Oct 2011 13:37:24 +0000]
Update and improve manual page
H.G. Muller [Sat, 8 Oct 2011 12:45:54 +0000]
Slight improvements in Makefile
On request the Makefile is made more BSD friendly, and now also uses
DESTDIR in constructing the name of the ini files.
H.G. Muller [Fri, 7 Oct 2011 15:17:27 +0000]
Bump version number to 4.8R
Also update changelog.
H.G. Muller [Fri, 7 Oct 2011 15:44:06 +0000]
Adapt make-dist for Ubuntu crippling of md5
md5 apparently is not provided anymore in Ubuntu 10.04, and is replaced
by md5sum, which causes an error when it sees a directory, which
apparently cannot be suppressed by an option. A work-around is now
provided in the Makefile, through ignoring the result.
H.G. Muller [Fri, 7 Oct 2011 15:10:30 +0000]
Add variant falcon
The description of Falcon Chess is added again to the ini file,
now the patent on that variant has expired.
H.G. Muller [Fri, 7 Oct 2011 14:28:00 +0000]
Fix virginity of pieces in setup position
Only royal and corner pieces got their virginity bits set when they
started on the original location, because these bits were only used
for castling. But this caused problems for the Met move in Cambodian Chess.
There was in fact no reason not to extend this to all pieces.
It might even solve a so far undetected problem in Seirawan.
But in Makruk it isextra important, because WinBoard always considers
that played from a setup position, because of the non-standard Pawn rank.
H.G. Muller [Fri, 7 Oct 2011 14:22:33 +0000]
Select Cambodian Chess by separate option
A -check option is added to select Cambodian rules in Makruk, so that
this can now be played as Makruk under WinBoard. (This was needed to get
the promotion rules right.) The Cambodian Chess definition in the ini file
is changed from fairy/Cambodian to cambodian, and special code makes this
substitution for makruk.
H.G. Muller [Sat, 1 Oct 2011 21:04:13 +0000]
Add Cambodian Chess
The extra moves of virgin K and M had to be exempted from the castling
test, for which the 128-bit in th eflags is used. This bit also indicates
the intermediate square is a dummy, (which makes the move a jump), and
is thus never set on genuine castlings.
H.G. Muller [Sat, 1 Oct 2011 18:29:29 +0000]
Reorder pieces for Makruk
Makruk had many duplicate pieces, to provide B and F/Q as alternatives
for S and M. The piece ordering was also bad from the LVA point of view,
partly because the promotion piece has to be number 7 by convention.
The problem is now solved by using the B/F/Q aliases as filler pieces,
and moving the default pieces all behind M, in order of increasing value.
H.G. Muller [Mon, 10 Jan 2011 17:17:53 +0000]
Add Spartan Chess as a major variant
For now we leave in the definition of fairy/Spartan as well, for
compatibility with older WinBoard versions that do not support spartan.
H.G. Muller [Mon, 10 Jan 2011 17:15:28 +0000]
Fix phantom castlings in Spartan Chess
Spartan Kings sometimes attempted to move 2 squares laterally, because
they thought they could castle. This becuase white andblack where
sharing the King definition. Now a separate definition for the black
King is added, without castling rights.
H.G. Muller [Mon, 10 Jan 2011 16:56:04 +0000]
Fix legality of promotion to King
The count for a piece type was not increased on promotion, with a result
that in variants with an extinction win condition phantom mates and
illegal moves (when in check) were called. The count is now increased at
game level when under-promotion to an extinction piece takes place.
This is done even befor the move is performed by the legality search,
because that search would only search promotion to 'Queen', so that
a promotion would not be considered legal if it leaves the last-remaining
'King' in check. While such a promotion is a valid way to resolve the
extinction threat.
This leaves a minor problem in Spartan Chess: the King from the
promotion could also be in check, leading to a forbidden duple check,
and this is not detected. So an illegal move could be accepted here.
(Promotion to 'King' in other variants is accepted as well, btw.)
H.G. Muller [Wed, 8 Dec 2010 09:03:32 +0000]
Fix Makefile make-dist
The md5sums were copied to the distribution folder, while they were
generated later from it anyway, and this caused an error in 'make
dist' after 'make dist-clean', as the latter removes md5sums.
dist-clean,
H.G. Muller [Sat, 4 Dec 2010 12:41:31 +0000]
Fix in-file EOF problem
Because of use of an uninitialized variable in PrintVariants, some
compiles were thinking that there were no game definitions in the
fmax.ini file.
H.G. Muller [Wed, 1 Dec 2010 16:28:01 +0000]
Bump version number to 4.8Q
Also update change log
H.G. Muller [Wed, 1 Dec 2010 23:39:28 +0000]
Update man file
H.G. Muller [Thu, 2 Dec 2010 19:21:48 +0000]
Fix watch-tower in Superchess
This piece was accidentally replaced by another one.
H.G. Muller [Wed, 1 Dec 2010 16:12:27 +0000]
Better implementation of Seirawan Chess
The previous implementation gated 'blindly', without gating being
considered in the search. Now the gating is put in the search, by
assigning the variable gt (initialized to 0) to the from square in
stead of a straight 0 (= empty square), when making the move. An extra
loop (alas, goto-based) then steps gt through the available pieces
(removing and putting them back into the holdings) when the moved piece
is a virgin non-Pawn and the variant allows gating.
In the root the value of gt for the best move is remembered in the
global variable GT, while searching (i.e. K==I). This can also be set
from the promoChar of an input move. The pass to perform the move (with
K != I) then compares gt to GT when testing for legality.
fix
H.G. Muller [Mon, 22 Nov 2010 12:20:37 +0000]
Allow Seirawan gating on Rook square when castling
The reverse castling notation (RxK) can be used to indicate this, as WB
protocol prescribes. Implemented by simply moving the contents of the
old K square to the old R square when a KxR notation is detected.
H.G. Muller [Mon, 22 Nov 2010 11:52:02 +0000]
Allow RxK notation for entering castling
This notation is detected on input, and translated to the corresponding
King move, where the to-square is derved from the entered 'Rook'
position, so that capturing with wrongly positioned pieces would be
rejected as illegal. (They might be accepted as normal King moves,
though.)
H.G. Muller [Mon, 22 Nov 2010 11:33:44 +0000]
Add more CDA combinations
Game definitions for Chess with Different Armies combinations
Nutters-FIDE, Clobberers-Nutters and Nutters-Clobberers were added.
H.G. Muller [Mon, 22 Nov 2010 09:59:59 +0000]
Tune piece values of Nutters army
H.G. Muller [Fri, 19 Nov 2010 18:27:19 +0000]
Make Spartan Chess primary fairy variant
H.G. Muller [Fri, 19 Nov 2010 18:22:00 +0000]
Change representation of Nutters pieces
The Nutters (officially: 'Nutty Knights') now use Knight-like symbols
for all their knightish pieces: the Unicorn for the Charging Knights
(which is both Knight-like and King-like), the Nightrider for the
Fibnif and the Vortex Chancellor for the Colonel. The Charging Rook is
represented by the promoted Rook symbol.
H.G. Muller [Fri, 19 Nov 2010 17:51:53 +0000]
Let Clobberers use Dragon Horse for Bede
The corner piece of the Clobberers array now is represented by Dragon
Horse rather than Lance, but 'L' is still used for notation (rather than
the default 'I'),for 'Lama'. This requires even FIDE vs Clobberers
to define a -pieceToChar string.
H.G. Muller [Wed, 17 Nov 2010 15:30:57 +0000]
Make undo work in Seirawan Chess
The holdings were not restored before replaying the game. This has now
been moved to InitGame(), which does it based on a gating flag set in
LoadGame() if the variant name is "seirawan".
H.G. Muller [Wed, 17 Nov 2010 15:07:23 +0000]
Account for Elephant and Hawk in Seirawan game stage
The holdings pieces were not counted when initializing R.
H.G. Muller [Wed, 17 Nov 2010 14:43:30 +0000]
Fix the moves of the Colonel in the Nutters army
There was a spurious backward Knight moveon this piece, and some moves
were considered twice.
H.G. Muller [Wed, 17 Nov 2010 14:35:45 +0000]
Suppress bad gatings in variant seirawan
For moves done by the engine, the QS score after gating is compared to
the original score of the move (which did not consider gating), and if
it is much lower, the gating is cancelled.
H.G. Muller [Tue, 16 Nov 2010 11:36:31 +0000]
Implement variant seirawan, and add it
The gating is implemented through a kludge: the search is not aware that
pieces can be gated in, but any move that evacuates the back rank when
there are pieces to be gated available, will gate one (first Hawk, then
Elephant.
H.G. Muller [Tue, 16 Nov 2010 10:15:52 +0000]
Remember promotion char in game history
Undo did not work when there were under-promotions in the game.
H.G. Muller [Fri, 12 Nov 2010 17:29:56 +0000]
Shape up Nutters army
Better piece order
H.G. Muller [Fri, 12 Nov 2010 17:23:09 +0000]
Add Clobberers vs FIDE game definition
H.G. Muller [Fri, 12 Nov 2010 16:41:17 +0000]
Shape up the Clobberers army
The pieces are defined in a better order (for MVV/LVA), and the
Clobberers are made to promote to Archbishop.
H.G. Muller [Sun, 7 Nov 2010 20:51:36 +0000]
Let edit command switch to force mode
Fairy-Max stayed playing the side it was playing before 'edit'. Now it
switches to 'force' mode, so that it won't start to play automatically
on receiving a move after setting up a position.
H.G. Muller [Sun, 7 Nov 2010 20:46:33 +0000]
Properly calculate material eval in asymmetric setups
InitGame assumed that Q=0 in the opening position, but with different
armies this needs not be true. Now it is properly calculated. In the
calculation of R it as also no longer assumed that piece 3 is royal, and
spare Kings are accounted for.
H.G. Muller [Sat, 6 Nov 2010 20:45:16 +0000]
Implement rule change in Spartan Chess
The General now moves as Crowned Rook, and the default promotion piece
has been changed to Warlord. Also adjust some piece values.
H.G. Muller [Sat, 6 Nov 2010 20:39:56 +0000]
Send setup command to GUI
After receiving the variant command for variant fairy, Fairy-Max
responds with a setup command to inform the GUI about the piece names
and opening array of the actually selected variant.
The piece names are defeined (in the format of a WinBoard
-pieceToCharTable string) after the variant name in the fmax.ini file,
separated from it by a '#' sign.
H.G. Muller [Tue, 2 Nov 2010 10:44:24 +0000]
Update docs and version number (4.8P)
H.G. Muller [Tue, 2 Nov 2010 10:38:21 +0000]
Remove stalemate claim from MaxQi
This was code that could not be triggered.
H.G. Muller [Tue, 2 Nov 2010 11:02:49 +0000]
Switch back to absolute royalty when value = -1
This is achieved by simulating we only have one such piece
H.G. Muller [Tue, 2 Nov 2010 10:22:45 +0000]
Limit duple-check rule to piece types above 7
This to allow implementation of normal extinction variants.
The definition of Spartan Chess had to be adapted to maintain the
duple-check rule there, moving the King definition to the end.
The piece ordering was further changed so that the black pieces now
also are ordered low to high, which gives better move ordering in QS,
as Fairy-Max' idea of MVV/LVA orders attacker on piece-type number,
rather than the defined value.
H.G. Muller [Mon, 1 Nov 2010 22:19:25 +0000]
Add FIDE vs Nutty Knights game definition
H.G. Muller [Mon, 1 Nov 2010 21:19:05 +0000]
Allow different default promo piece for black and white
If black lacks the 'Queen' (piece #7) that white has, but has a piece #9
in the initial setup, it will promote to that in stead.
H.G. Muller [Mon, 1 Nov 2010 21:16:58 +0000]
Convert to DOS line ends
H.G. Muller [Mon, 1 Nov 2010 12:54:10 +0000]
Add game definition of Spartan Chess
H.G. Muller [Mon, 1 Nov 2010 12:42:30 +0000]
Switch to extinction-Chess win condition
Normal Chess is of course a form of extinction Chess where you have to
exterminate the King piece type, since you only have a single one.
Royalty is still indicated by negative piece value, bt a win now only
occurs if you capture the last royal piece of its kind, rather than the
first.
The 'duple check' of Spartan Chess is treated as an exception, however:
when there is choice between royal pieces to capture, this is sufficient
for a win.
H.G. Muller [Mon, 1 Nov 2010 12:27:17 +0000]
Keep count of all on-board piece types
The array pl[] is used to keep track of the number of pieces of each
type. It is updated when the piece is captured. For now, it ignores
promotions.
H.G. Muller [Mon, 1 Nov 2010 12:09:34 +0000]
Save total material with setup position
The total-material counter R, which determines the game stage, was not
saved with a setup position, so that 'undo' could mess it up. The piece
counters for each side, in pl[], are now saved in a loop, rather than
just the WHITE and BLACK element, and is extended to 32 elements.
H.G. Muller [Mon, 1 Nov 2010 11:41:36 +0000]
Implement e.p.-less initial double-moves
The leaper bit in the secondary rights (in combination with primary
rights = 4, the double-push code) is used to indicate the e.p. square
should not be set. In this case the secondary hopper bit indicates if
the double push can even be made if the intermediate square is occupied
(to make it a rank-dependent leaper move rather than a true double-
push). In al cases these secondary bits are cleared.
H.G. Muller [Mon, 1 Nov 2010 10:54:08 +0000]
Allow sub-specification of variant fairy
If game definitions in the fmax.ini file now have a name starting with
"fairy/", they are not mentioned in the variants feature, but in stead
the part after the '/' will appear in a combobox engine option for
choosing the actual variant to play when the GUI says "fairy".
H.G. Muller [Mon, 1 Nov 2010 10:18:44 +0000]
Print promotion characterwith move
We cannot rely on the WinBoard default of Queen, as in some variants the
Queen might not participate.
H.G. Muller [Thu, 6 May 2010 14:00:50 +0000]
Fix macro for MaxQi ini-file name to conform to Makefile
It was defined as QINI_file in stead of INI_FILE.
H.G. Muller [Fri, 22 Jan 2010 16:53:54 +0000]
Put all files in tar ball in a directory
The dist target in the Makefile was changed to first copy everything to
temporary directory, and then pack that in a tar ball.
H.G. Muller [Sun, 17 Jan 2010 21:04:24 +0000]
Let Makefile pay attention to $(DESTDIR)
Patch requested by Debian
H.G. Muller [Sun, 17 Jan 2010 20:57:15 +0000]
Delete md5sums with make dist-clean
H.G. Muller [Sun, 17 Jan 2010 20:53:28 +0000]
Rename manual source file
The file fmax.6.pod was renamed to fairymax.pod to automatically produce
proper headers after running pod2man on it, and the Makefile was updated
to accomodate this change.
H.G. Muller [Sun, 17 Jan 2010 14:20:34 +0000]
Remove Shatranj stalemate claim
As the search of Shamax does not distinguish checkmate and stalemate, it
could never be triggered.
H.G. Muller [Sat, 16 Jan 2010 13:48:21 +0000]
Update changelog
H.G. Muller [Sat, 16 Jan 2010 13:26:36 +0000]
Fix eval flip on WB color commands
The differential eval Q was not flipped when the WB-protocol command
black or white did change the side to move.
H.G. Muller [Sat, 16 Jan 2010 13:09:58 +0000]
Fix Shatranj game-end messages
Because stalemate was tested before the conditionally included shatranj
bare-king code, it was not effective. Furthermore, the stalemate code
was still claiming a draw. Now ShaMax has its own stalemate code, put
after the bare-king test.
H.G. Muller [Fri, 15 Jan 2010 21:15:54 +0000]
Use MSDOS line endings in fmax.ini consistently
H.G. Muller [Fri, 15 Jan 2010 21:12:06 +0000]
Change game description af -variant fairy
Use Chess with Different Armies, FIDE army vs. Color-bound Clobberers.
H.G. Muller [Fri, 15 Jan 2010 21:01:58 +0000]
Bugfix on new castling method
Copying the Rook square in stead of growing a Rook was done after the
Rook square had already been cleared. In addition the Rook ended up on
d1 for e1b1 castling. To fix that, the alternated step vector had to be
calculated in advance, before being sure it would be applied, to be
available in the castling code. The variable v is now used as a
temporary for that, as it was available after the score is minimaxed.
H.G. Muller [Fri, 15 Jan 2010 16:32:29 +0000]
Bump version number
H.G. Muller [Fri, 15 Jan 2010 16:30:53 +0000]
Let make dist also create file with md5 sums
H.G. Muller [Fri, 15 Jan 2010 11:28:04 +0000]
Implement variant Makruk
Add Makruk support in the form of 6th-rank promotion (enabled through a
kludge based on the 'Queen' piece value). Add Makruk as new variant to
the fmax.ini file, and mention it in the man page.
H.G. Muller [Fri, 15 Jan 2010 10:19:27 +0000]
Suppress spurious Thinking Output on MakeMove
In the new location the printing of PVs happened for any legal move at
d<1, also when checking legality of an input move. So printing is now
limited to d>0, and to the true search.
H.G. Muller [Fri, 15 Jan 2010 10:05:25 +0000]
Allow castling with any original corner piece
Before, castling was only possible with piece type 6, but this
restrction is now lifted, and castling is accepted if the type of the
piece in the corner corresponds to that specified in the initial setup.
For setup positions the rules for the WB-prtocol edit command are
applied with respect to this setup: a royal piece or a corner piece that
starts in the opening position is assumed to not have moved.
H.G. Muller [Fri, 15 Jan 2010 08:39:16 +0000]
Update description in fmax.ini file
H.G. Muller [Fri, 15 Jan 2010 08:32:25 +0000]
Allow different white and black pieces to use same name
White and black pieces must sometimes be programmed separately, because
they have asymmetric moves (e.g. Pawns), but when they are each other's
mirror imge, we want them to go by the same name. To allow that, the
first piece of any name is now used for white, the last for black.
H.G. Muller [Fri, 15 Jan 2010 06:44:23 +0000]
Fix King name for Knightmate in fmax.ini
Change the letter for the Royal Knight of Knightmate from U to K, to
conform to the XBoard standard piece naming for this variant.
H.G. Muller [Fri, 15 Jan 2010 06:07:54 +0000]
Updated changelog
H.G. Muller [Fri, 15 Jan 2010 06:02:29 +0000]
Fix typo in README file
H.G. Muller [Fri, 15 Jan 2010 05:59:52 +0000]
Update man file for multi-PV
H.G. Muller [Fri, 15 Jan 2010 05:57:16 +0000]
Change name of multi-PV option and version number