mirror of
https://github.com/sockspls/badfish
synced 2025-07-11 19:49:14 +00:00
Move legal check out of MovePicker
No functional change. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
45ce92b89c
commit
4b232f5ddc
3 changed files with 11 additions and 17 deletions
|
@ -64,8 +64,6 @@ MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const History& h,
|
||||||
|
|
||||||
assert(d > DEPTH_ZERO);
|
assert(d > DEPTH_ZERO);
|
||||||
|
|
||||||
pinned = p.pinned_pieces(pos.side_to_move());
|
|
||||||
|
|
||||||
if (p.in_check())
|
if (p.in_check())
|
||||||
{
|
{
|
||||||
ttMoves[1].move = killers[0].move = killers[1].move = MOVE_NONE;
|
ttMoves[1].move = killers[0].move = killers[1].move = MOVE_NONE;
|
||||||
|
@ -98,8 +96,6 @@ MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const History& h)
|
||||||
|
|
||||||
assert(d <= DEPTH_ZERO);
|
assert(d <= DEPTH_ZERO);
|
||||||
|
|
||||||
pinned = p.pinned_pieces(pos.side_to_move());
|
|
||||||
|
|
||||||
if (p.in_check())
|
if (p.in_check())
|
||||||
phasePtr = EvasionTable;
|
phasePtr = EvasionTable;
|
||||||
else if (d >= DEPTH_QS_CHECKS)
|
else if (d >= DEPTH_QS_CHECKS)
|
||||||
|
@ -275,16 +271,14 @@ Move MovePicker::get_next_move() {
|
||||||
case PH_TT_MOVES:
|
case PH_TT_MOVES:
|
||||||
move = (curMove++)->move;
|
move = (curMove++)->move;
|
||||||
if ( move != MOVE_NONE
|
if ( move != MOVE_NONE
|
||||||
&& pos.move_is_pl(move)
|
&& pos.move_is_pl(move))
|
||||||
&& pos.pl_move_is_legal(move, pinned))
|
|
||||||
return move;
|
return move;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PH_GOOD_CAPTURES:
|
case PH_GOOD_CAPTURES:
|
||||||
move = pick_best(curMove++, lastMove).move;
|
move = pick_best(curMove++, lastMove).move;
|
||||||
if ( move != ttMoves[0].move
|
if ( move != ttMoves[0].move
|
||||||
&& move != ttMoves[1].move
|
&& move != ttMoves[1].move)
|
||||||
&& pos.pl_move_is_legal(move, pinned))
|
|
||||||
{
|
{
|
||||||
// Check for a non negative SEE now
|
// Check for a non negative SEE now
|
||||||
int seeValue = pos.see_sign(move);
|
int seeValue = pos.see_sign(move);
|
||||||
|
@ -302,7 +296,6 @@ Move MovePicker::get_next_move() {
|
||||||
move = (curMove++)->move;
|
move = (curMove++)->move;
|
||||||
if ( move != MOVE_NONE
|
if ( move != MOVE_NONE
|
||||||
&& pos.move_is_pl(move)
|
&& pos.move_is_pl(move)
|
||||||
&& pos.pl_move_is_legal(move, pinned)
|
|
||||||
&& move != ttMoves[0].move
|
&& move != ttMoves[0].move
|
||||||
&& move != ttMoves[1].move
|
&& move != ttMoves[1].move
|
||||||
&& !pos.move_is_capture(move))
|
&& !pos.move_is_capture(move))
|
||||||
|
@ -318,8 +311,7 @@ Move MovePicker::get_next_move() {
|
||||||
if ( move != ttMoves[0].move
|
if ( move != ttMoves[0].move
|
||||||
&& move != ttMoves[1].move
|
&& move != ttMoves[1].move
|
||||||
&& move != killers[0].move
|
&& move != killers[0].move
|
||||||
&& move != killers[1].move
|
&& move != killers[1].move)
|
||||||
&& pos.pl_move_is_legal(move, pinned))
|
|
||||||
return move;
|
return move;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -330,15 +322,13 @@ Move MovePicker::get_next_move() {
|
||||||
case PH_EVASIONS:
|
case PH_EVASIONS:
|
||||||
case PH_QCAPTURES:
|
case PH_QCAPTURES:
|
||||||
move = pick_best(curMove++, lastMove).move;
|
move = pick_best(curMove++, lastMove).move;
|
||||||
if ( move != ttMoves[0].move
|
if (move != ttMoves[0].move)
|
||||||
&& pos.pl_move_is_legal(move, pinned))
|
|
||||||
return move;
|
return move;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PH_QCHECKS:
|
case PH_QCHECKS:
|
||||||
move = (curMove++)->move;
|
move = (curMove++)->move;
|
||||||
if ( move != ttMoves[0].move
|
if ( move != ttMoves[0].move)
|
||||||
&& pos.pl_move_is_legal(move, pinned))
|
|
||||||
return move;
|
return move;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,6 @@ private:
|
||||||
|
|
||||||
const Position& pos;
|
const Position& pos;
|
||||||
const History& H;
|
const History& H;
|
||||||
Bitboard pinned;
|
|
||||||
MoveStack ttMoves[2], killers[2];
|
MoveStack ttMoves[2], killers[2];
|
||||||
int badCaptureThreshold, phase;
|
int badCaptureThreshold, phase;
|
||||||
const uint8_t* phasePtr;
|
const uint8_t* phasePtr;
|
||||||
|
|
|
@ -880,6 +880,7 @@ split_point_start: // At split points actual search starts from here
|
||||||
// Initialize a MovePicker object for the current position
|
// Initialize a MovePicker object for the current position
|
||||||
MovePickerExt<SpNode, Root> mp(pos, ttMove, depth, H, ss, (PvNode ? -VALUE_INFINITE : beta));
|
MovePickerExt<SpNode, Root> mp(pos, ttMove, depth, H, ss, (PvNode ? -VALUE_INFINITE : beta));
|
||||||
CheckInfo ci(pos);
|
CheckInfo ci(pos);
|
||||||
|
Bitboard pinned = pos.pinned_pieces(pos.side_to_move());
|
||||||
ss->bestMove = MOVE_NONE;
|
ss->bestMove = MOVE_NONE;
|
||||||
futilityBase = ss->eval + ss->evalMargin;
|
futilityBase = ss->eval + ss->evalMargin;
|
||||||
singularExtensionNode = !Root
|
singularExtensionNode = !Root
|
||||||
|
@ -908,7 +909,7 @@ split_point_start: // At split points actual search starts from here
|
||||||
moveCount = ++sp->moveCount;
|
moveCount = ++sp->moveCount;
|
||||||
lock_release(&(sp->lock));
|
lock_release(&(sp->lock));
|
||||||
}
|
}
|
||||||
else if (move == excludedMove)
|
else if (move == excludedMove || !pos.pl_move_is_legal(move, pinned))
|
||||||
continue;
|
continue;
|
||||||
else
|
else
|
||||||
moveCount++;
|
moveCount++;
|
||||||
|
@ -1325,6 +1326,7 @@ split_point_start: // At split points actual search starts from here
|
||||||
// be generated.
|
// be generated.
|
||||||
MovePicker mp(pos, ttMove, depth, H);
|
MovePicker mp(pos, ttMove, depth, H);
|
||||||
CheckInfo ci(pos);
|
CheckInfo ci(pos);
|
||||||
|
Bitboard pinned = pos.pinned_pieces(pos.side_to_move());
|
||||||
|
|
||||||
// Loop through the moves until no moves remain or a beta cutoff occurs
|
// Loop through the moves until no moves remain or a beta cutoff occurs
|
||||||
while ( alpha < beta
|
while ( alpha < beta
|
||||||
|
@ -1332,6 +1334,9 @@ split_point_start: // At split points actual search starts from here
|
||||||
{
|
{
|
||||||
assert(move_is_ok(move));
|
assert(move_is_ok(move));
|
||||||
|
|
||||||
|
if (!pos.pl_move_is_legal(move, pinned))
|
||||||
|
continue;
|
||||||
|
|
||||||
givesCheck = pos.move_gives_check(move, ci);
|
givesCheck = pos.move_gives_check(move, ci);
|
||||||
|
|
||||||
// Futility pruning
|
// Futility pruning
|
||||||
|
|
Loading…
Add table
Reference in a new issue