3 years agoImplement input of under-promotion master
H.G.Muller [Thu, 1 Oct 2015 18:54:16 +0000]
Implement input of under-promotion

All under-promotions are now generated, and the comparison of an
input move with a promotion suffix to the generated move now also
takes the flags into account.

3 years agoFix TakeBack of moves
H.G.Muller [Thu, 1 Oct 2015 11:34:54 +0000]
Fix TakeBack of moves

Now that MakeMove() changes the global stm, rather than returning the
new stm as in the example CECP driver, stm must not be a local variable
in TakeBack() to have it return the correct stm. In fact there is no reason
to return it at all.

3 years agoSilence some warnings
H.G.Muller [Wed, 30 Sep 2015 21:52:28 +0000]
Silence some warnings

3 years agoFix drawishness recognition with single pawn
H.G.Muller [Wed, 30 Sep 2015 21:28:04 +0000]
Fix drawishness recognition with single pawn

No defined value was returned when no drawishness was detected with a
single Pawn, where a 0 value would be the correct return.

3 years agoFix KPKdraw for rook pawns
H.G.Muller [Wed, 30 Sep 2015 21:22:29 +0000]
Fix KPKdraw for rook pawns

The case where the King is trapped on the edge in front of its own Pawn
was ignored, because of a missing return.

3 years agoAdd Makefile
H.G.Muller [Wed, 30 Sep 2015 07:59:26 +0000]
Add Makefile

A Makefile that uses standard symbolic directory definitions is added.
It also contains (un)install and dist targets.

3 years agoAdd Change Log
H.G.Muller [Wed, 30 Sep 2015 07:58:43 +0000]
Add Change Log

3 years agoAdd README file
H.G.Muller [Wed, 30 Sep 2015 07:58:29 +0000]
Add README file

3 years agoAdd man page
H.G.Muller [Wed, 30 Sep 2015 07:11:59 +0000]
Add man page

3 years agoAdd logo
H.G.Muller [Wed, 30 Sep 2015 07:05:04 +0000]
Add logo

A 130 x 65 PNG logo is added in compliance with the pluging standard.

3 years agoAdd plugin-spec file
H.G.Muller [Wed, 30 Sep 2015 06:53:22 +0000]
Add plugin-spec file

A .eng file is added to the project to comply with the plugin standard.

3 years agoFix sigint and sigterm
H.G.Muller [Wed, 30 Sep 2015 06:50:55 +0000]
Fix sigint and sigterm

On Linux XBoard would kill the engine after every move by sending SIGINT.
With 'feature sigint=0 sigterm=0' XBoard is now prevented from sending
such signals.

3 years agoIncrease startAlpha to static eval in QS
H.G.Muller [Tue, 29 Sep 2015 18:20:18 +0000]
Increase startAlpha to static eval in QS

If current eval was higher than startAlpha, but not than beta, we failed
to increase startAlpha, so that subsequent captures were unnecessary
difficult to refute.

3 years agoFix crippling null-move bug
H.G.Muller [Thu, 3 Sep 2015 13:08:03 +0000]
Fix crippling null-move bug

The threshold and mobilityGuess arguments were swapped in the call to
Search() the null move. This effectively disabled null-move pruning.

3 years agoIncrease bonus for hindering passers with King
H.G.Muller [Thu, 3 Sep 2015 13:02:52 +0000]
Increase bonus for hindering passers with King

We did not give enough priority to stopping passer advance. We now not
only give a bonus for decreasing distance to the square to steps in front
of the Pawn, but also for decreasing that to th epromotion square,
effectively doubling the bonus for being somewhere in front of the enemy

3 years agoFix detection of white backward Pawns
H.G.Muller [Thu, 3 Sep 2015 13:00:14 +0000]
Fix detection of white backward Pawns

The test was for forward poins instead of backward, which in particular
caused it to have many isolated doubled aPawns as white against Joker.

3 years agoPut evaluation in a separate routine
H.G.Muller [Sat, 29 Aug 2015 10:08:22 +0000]
Put evaluation in a separate routine

The evaluation code does not really draw on any of the local variables
of Search(), so it might as well be moved to a separate routine to enhance
readability of the code.

3 years agoImprove logic of in-check detection
H.G.Muller [Sat, 29 Aug 2015 09:58:08 +0000]
Improve logic of in-check detection

The in-check section has been moved to the code section that treats
the hash miss, as on a hit the in-check info is always taken from the
hash table.

3 years agoFix opening piece values
H.G.Muller [Fri, 28 Aug 2015 22:04:13 +0000]
Fix opening piece values

A factor 2 was accidentally left in the initialization of the PST with
piece values, from when the interpolation involved division by 16 rather
than by 8. This caused the opening piece values to be much too small,
leading to unsound sacrifices for positional gain.

3 years agoImplement KBNK checkmating
H.G.Muller [Fri, 28 Aug 2015 10:33:24 +0000]
Implement KBNK checkmating

The bare King in KBNK is driven to the correct corner by using the
drawishness discounting for faking drawishness when it is in the
wrong corner.

3 years agoFix hashing of QS nodes
H.G.Muller [Fri, 28 Aug 2015 07:02:51 +0000]
Fix hashing of QS nodes

The patch to make the search abort-proof had broken hashing of QS nodes,
as the pseudo hash store would use iterDepth instead of depth. Normally
this is correct in aborted nodes, as iterDepth did not make it to depth
before the abort. But in QS nodes depth=0 while iterDepth starts at 1,
so that these (when not aborted) were all hashed as 1-ply searches.

3 years agoFix self-deepening of late moves in PV nodes
H.G.Muller [Fri, 28 Aug 2015 06:57:56 +0000]
Fix self-deepening of late moves in PV nodes

The self-deepening would only add extra iterations when the move in the
parent node would truly fail high (i.e. score >= beta). But in PV nodes
late moves that score between alpha and beta already have to add extra
iterations to undo their LMR. Failing to do that led to PVs that were
not as deep as promised.

3 years agoPrevent overflow of Pawn-shield score
H.G.Muller [Fri, 28 Aug 2015 06:50:04 +0000]
Prevent overflow of Pawn-shield score

The score for the Pawn shield is stored in a char in the Pawn hash,
so we better see to it that it does not get out of the range {-128, 127}.
The old score could go below -128, however. Now we halved all bonuses,
and multiply with 2 in the return value of KingSafety, after retrieaval
from the Pawn hash.

3 years agoFix KPK and KBPK recognizers
H.G.Muller [Fri, 28 Aug 2015 06:42:58 +0000]
Fix KPK and KBPK recognizers

The recognizers are called before legality of the preceding move is tested.
This is a pain, as it means they must avoid flagging a draw in positions
where the weak King can be captured, so that we have to explicitly test
for that. KBPK now only works when the weak side is to move, to avoid this.

3 years agoFix e.p. capture
H.G.Muller [Thu, 27 Aug 2015 08:44:57 +0000]
Fix e.p. capture

In the root e.p. capture would not be considered legal in reply to a
double-push entered by the opponent, as the latter would lack proper
setting of the flags field. A new variable gameMove now always holds
the last move performed by MakeMove(), with the flags field added to it
by the call to Search() in that same MakeMove().
In addition a left-over debug printf was removed.

3 years agoCheck in source of first working version
H.G.Muller [Wed, 26 Aug 2015 08:10:42 +0000]
Check in source of first working version

This version has most evaluation features switched off by default, and is
completely untuned. The code for them seems to work, though, although
switching them on makes the engine play weaker. (This probably has to do
something with not being tuned...) In a test match it beat Fairy-Max,
but still gives an occasional false illegal-move claim.