mirror of
https://github.com/sockspls/badfish
synced 2025-04-29 16:23:09 +00:00
Do not update king tables when we skip king safety
No functional change. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
fa2478a81f
commit
1a2768705a
1 changed files with 15 additions and 7 deletions
|
@ -45,6 +45,11 @@ namespace {
|
||||||
// Pointer to pawn hash table entry
|
// Pointer to pawn hash table entry
|
||||||
PawnInfo* pi;
|
PawnInfo* pi;
|
||||||
|
|
||||||
|
// updateKingTables[color] is set to true if we have enough material
|
||||||
|
// to trigger the opponent's king safety calculation. When is false we
|
||||||
|
// skip the time consuming update of the king attackers tables.
|
||||||
|
bool updateKingTables[2];
|
||||||
|
|
||||||
// attackedBy[color][piece type] is a bitboard representing all squares
|
// attackedBy[color][piece type] is a bitboard representing all squares
|
||||||
// attacked by a given color and piece type, attackedBy[color][0] contains
|
// attacked by a given color and piece type, attackedBy[color][0] contains
|
||||||
// all squares attacked by the given color.
|
// all squares attacked by the given color.
|
||||||
|
@ -451,9 +456,13 @@ namespace {
|
||||||
Bitboard b = ei.attackedBy[Them][KING] = pos.attacks_from<KING>(pos.king_square(Them));
|
Bitboard b = ei.attackedBy[Them][KING] = pos.attacks_from<KING>(pos.king_square(Them));
|
||||||
ei.kingZone[Us] = (b | (Us == WHITE ? b >> 8 : b << 8));
|
ei.kingZone[Us] = (b | (Us == WHITE ? b >> 8 : b << 8));
|
||||||
ei.attackedBy[Us][PAWN] = ei.pi->pawn_attacks(Us);
|
ei.attackedBy[Us][PAWN] = ei.pi->pawn_attacks(Us);
|
||||||
b &= ei.attackedBy[Us][PAWN];
|
ei.updateKingTables[Us] = pos.piece_count(Us, QUEEN) && pos.non_pawn_material(Us) >= QueenValueMidgame + RookValueMidgame;
|
||||||
ei.kingAttackersCount[Us] = b ? count_1s_max_15<HasPopCnt>(b) / 2 : EmptyBoardBB;
|
if (ei.updateKingTables[Us])
|
||||||
ei.kingAdjacentZoneAttacksCount[Us] = ei.kingAttackersWeight[Us] = EmptyBoardBB;
|
{
|
||||||
|
b &= ei.attackedBy[Us][PAWN];
|
||||||
|
ei.kingAttackersCount[Us] = b ? count_1s_max_15<HasPopCnt>(b) / 2 : EmptyBoardBB;
|
||||||
|
ei.kingAdjacentZoneAttacksCount[Us] = ei.kingAttackersWeight[Us] = EmptyBoardBB;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -515,7 +524,7 @@ namespace {
|
||||||
ei.attackedBy[Us][Piece] |= b;
|
ei.attackedBy[Us][Piece] |= b;
|
||||||
|
|
||||||
// King attacks
|
// King attacks
|
||||||
if (b & ei.kingZone[Us])
|
if (ei.updateKingTables[Us] && (b & ei.kingZone[Us]))
|
||||||
{
|
{
|
||||||
ei.kingAttackersCount[Us]++;
|
ei.kingAttackersCount[Us]++;
|
||||||
ei.kingAttackersWeight[Us] += KingAttackWeights[Piece];
|
ei.kingAttackersWeight[Us] += KingAttackWeights[Piece];
|
||||||
|
@ -666,9 +675,8 @@ namespace {
|
||||||
|
|
||||||
// King safety. This is quite complicated, and is almost certainly far
|
// King safety. This is quite complicated, and is almost certainly far
|
||||||
// from optimally tuned.
|
// from optimally tuned.
|
||||||
if ( ei.kingAttackersCount[Them] >= 2
|
if ( ei.updateKingTables[Them]
|
||||||
&& pos.non_pawn_material(Them) >= QueenValueMidgame + RookValueMidgame
|
&& ei.kingAttackersCount[Them] >= 2
|
||||||
&& pos.piece_count(Them, QUEEN) >= 1
|
|
||||||
&& ei.kingAdjacentZoneAttacksCount[Them])
|
&& ei.kingAdjacentZoneAttacksCount[Them])
|
||||||
{
|
{
|
||||||
// Find the attacked squares around the king which has no defenders
|
// Find the attacked squares around the king which has no defenders
|
||||||
|
|
Loading…
Add table
Reference in a new issue