mirror of
https://github.com/sockspls/badfish
synced 2025-07-12 03:59:15 +00:00
Sync with master
bench: 8069601
This commit is contained in:
commit
2dbb1adf2a
1 changed files with 14 additions and 12 deletions
|
@ -50,8 +50,8 @@ namespace {
|
||||||
{ S(20, 28), S(29, 31), S(33, 31), S(33, 31),
|
{ S(20, 28), S(29, 31), S(33, 31), S(33, 31),
|
||||||
S(33, 31), S(33, 31), S(29, 31), S(20, 28) } };
|
S(33, 31), S(33, 31), S(29, 31), S(20, 28) } };
|
||||||
|
|
||||||
// Connected pawn bonus by opposed, phalanx flags and rank
|
// Connected pawn bonus by opposed, phalanx, twice supported and rank
|
||||||
Score Connected[2][2][RANK_NB];
|
Score Connected[2][2][2][RANK_NB];
|
||||||
|
|
||||||
// Levers bonus by rank
|
// Levers bonus by rank
|
||||||
const Score Lever[RANK_NB] = {
|
const Score Lever[RANK_NB] = {
|
||||||
|
@ -110,9 +110,9 @@ namespace {
|
||||||
const Square Right = (Us == WHITE ? DELTA_NE : DELTA_SW);
|
const Square Right = (Us == WHITE ? DELTA_NE : DELTA_SW);
|
||||||
const Square Left = (Us == WHITE ? DELTA_NW : DELTA_SE);
|
const Square Left = (Us == WHITE ? DELTA_NW : DELTA_SE);
|
||||||
|
|
||||||
Bitboard b, p, doubled, connected;
|
Bitboard b, p, doubled, connected, supported;
|
||||||
Square s;
|
Square s;
|
||||||
bool passed, isolated, opposed, phalanx, backward, unsupported, lever;
|
bool passed, isolated, opposed, phalanx, backward, lever;
|
||||||
Score score = SCORE_ZERO;
|
Score score = SCORE_ZERO;
|
||||||
const Square* pl = pos.list<PAWN>(Us);
|
const Square* pl = pos.list<PAWN>(Us);
|
||||||
const Bitboard* pawnAttacksBB = StepAttacksBB[make_piece(Us, PAWN)];
|
const Bitboard* pawnAttacksBB = StepAttacksBB[make_piece(Us, PAWN)];
|
||||||
|
@ -143,7 +143,7 @@ namespace {
|
||||||
// Flag the pawn
|
// Flag the pawn
|
||||||
connected = ourPawns & adjacent_files_bb(f) & (rank_bb(s) | p);
|
connected = ourPawns & adjacent_files_bb(f) & (rank_bb(s) | p);
|
||||||
phalanx = connected & rank_bb(s);
|
phalanx = connected & rank_bb(s);
|
||||||
unsupported = !(connected & p);
|
supported = connected & p;
|
||||||
isolated = !(ourPawns & adjacent_files_bb(f));
|
isolated = !(ourPawns & adjacent_files_bb(f));
|
||||||
doubled = ourPawns & forward_bb(Us, s);
|
doubled = ourPawns & forward_bb(Us, s);
|
||||||
opposed = theirPawns & forward_bb(Us, s);
|
opposed = theirPawns & forward_bb(Us, s);
|
||||||
|
@ -183,7 +183,7 @@ namespace {
|
||||||
if (isolated)
|
if (isolated)
|
||||||
score -= Isolated[opposed][f];
|
score -= Isolated[opposed][f];
|
||||||
|
|
||||||
if (unsupported && !isolated)
|
if (!supported && !isolated)
|
||||||
score -= UnsupportedPawnPenalty;
|
score -= UnsupportedPawnPenalty;
|
||||||
|
|
||||||
if (doubled)
|
if (doubled)
|
||||||
|
@ -193,7 +193,7 @@ namespace {
|
||||||
score -= Backward[opposed][f];
|
score -= Backward[opposed][f];
|
||||||
|
|
||||||
if (connected)
|
if (connected)
|
||||||
score += Connected[opposed][phalanx][relative_rank(Us, s)];
|
score += Connected[opposed][phalanx][more_than_one(supported)][relative_rank(Us, s)];
|
||||||
|
|
||||||
if (lever)
|
if (lever)
|
||||||
score += Lever[relative_rank(Us, s)];
|
score += Lever[relative_rank(Us, s)];
|
||||||
|
@ -223,11 +223,13 @@ void init()
|
||||||
|
|
||||||
for (int opposed = 0; opposed <= 1; ++opposed)
|
for (int opposed = 0; opposed <= 1; ++opposed)
|
||||||
for (int phalanx = 0; phalanx <= 1; ++phalanx)
|
for (int phalanx = 0; phalanx <= 1; ++phalanx)
|
||||||
for (Rank r = RANK_2; r < RANK_8; ++r)
|
for (int apex = 0; apex <= 1; ++apex)
|
||||||
{
|
for (Rank r = RANK_2; r < RANK_8; ++r)
|
||||||
int v = (Seed[r] + (phalanx ? (Seed[r + 1] - Seed[r]) / 2 : 0)) >> opposed;
|
{
|
||||||
Connected[opposed][phalanx][r] = make_score( 3 * v / 2, v);
|
int v = (Seed[r] + (phalanx ? (Seed[r + 1] - Seed[r]) / 2 : 0)) >> opposed;
|
||||||
}
|
v += (apex ? v / 2 : 0);
|
||||||
|
Connected[opposed][phalanx][apex][r] = make_score(3 * v / 2, v);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue