mirror of
https://github.com/sockspls/badfish
synced 2025-05-01 09:13:08 +00:00
Small touches to bitbase.cpp
Inspired by Lucas's code: https://github.com/lucasart/chess/blob/master/src/kpk.cc No functional change.
This commit is contained in:
parent
fc17d0de77
commit
8d6d0223bf
1 changed files with 3 additions and 5 deletions
|
@ -93,8 +93,7 @@ void Bitbases::init_kpk() {
|
||||||
// changed to either wins or draws (15 cycles needed).
|
// changed to either wins or draws (15 cycles needed).
|
||||||
while (repeat)
|
while (repeat)
|
||||||
for (repeat = idx = 0; idx < IndexMax; idx++)
|
for (repeat = idx = 0; idx < IndexMax; idx++)
|
||||||
if (db[idx] == UNKNOWN && db[idx].classify(db) != UNKNOWN)
|
repeat |= (db[idx] == UNKNOWN && db[idx].classify(db) != UNKNOWN);
|
||||||
repeat = 1;
|
|
||||||
|
|
||||||
// Map 32 results into one KPKBitbase[] entry
|
// Map 32 results into one KPKBitbase[] entry
|
||||||
for (idx = 0; idx < IndexMax; idx++)
|
for (idx = 0; idx < IndexMax; idx++)
|
||||||
|
@ -113,8 +112,7 @@ namespace {
|
||||||
psq = File ((idx >> 13) & 0x03) | Rank(RANK_7 - (idx >> 15));
|
psq = File ((idx >> 13) & 0x03) | Rank(RANK_7 - (idx >> 15));
|
||||||
|
|
||||||
// Check if two pieces are on the same square or if a king can be captured
|
// Check if two pieces are on the same square or if a king can be captured
|
||||||
if ( wksq == psq || wksq == bksq || bksq == psq
|
if ( square_distance(wksq, bksq) <= 1 || wksq == psq || bksq == psq
|
||||||
|| (StepAttacksBB[KING][wksq] & bksq)
|
|
||||||
|| (us == WHITE && (StepAttacksBB[PAWN][psq] & bksq)))
|
|| (us == WHITE && (StepAttacksBB[PAWN][psq] & bksq)))
|
||||||
return res = INVALID;
|
return res = INVALID;
|
||||||
|
|
||||||
|
@ -162,7 +160,7 @@ namespace {
|
||||||
Square s = psq + DELTA_N;
|
Square s = psq + DELTA_N;
|
||||||
r |= db[index(BLACK, bksq, wksq, s)]; // Single push
|
r |= db[index(BLACK, bksq, wksq, s)]; // Single push
|
||||||
|
|
||||||
if (rank_of(s) == RANK_3 && s != wksq && s != bksq)
|
if (rank_of(psq) == RANK_2 && s != wksq && s != bksq)
|
||||||
r |= db[index(BLACK, bksq, wksq, s + DELTA_N)]; // Double push
|
r |= db[index(BLACK, bksq, wksq, s + DELTA_N)]; // Double push
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue