X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fbitbase.cpp;h=0f274c8aeb82a7d1d7ab0ddf3cfc6833d6f7b570;hp=b73b72c4c17506f2e2dc7da58ada30a7caa93ccb;hb=15e21911110f9d459c4fef2bb17903d97345d0b9;hpb=5f12069cbfc882fdf989d04618ad9c33e603c419 diff --git a/src/bitbase.cpp b/src/bitbase.cpp index b73b72c4..0f274c8a 100644 --- a/src/bitbase.cpp +++ b/src/bitbase.cpp @@ -107,14 +107,16 @@ namespace { KPKPosition::KPKPosition(unsigned idx) { - wksq = Square((idx >> 0) & 0x3F); - bksq = Square((idx >> 6) & 0x3F); - us = Color ((idx >> 12) & 0x01); - psq = make_square(File((idx >> 13) & 0x03), Rank(RANK_7 - (idx >> 15))); - result = UNKNOWN; + wksq = Square((idx >> 0) & 0x3F); + bksq = Square((idx >> 6) & 0x3F); + us = Color ((idx >> 12) & 0x01); + psq = make_square(File((idx >> 13) & 0x3), RANK_7 - Rank((idx >> 15) & 0x7)); + result = UNKNOWN; // Check if two pieces are on the same square or if a king can be captured - if ( square_distance(wksq, bksq) <= 1 || wksq == psq || bksq == psq + if ( square_distance(wksq, bksq) <= 1 + || wksq == psq + || bksq == psq || (us == WHITE && (StepAttacksBB[PAWN][psq] & bksq))) result = INVALID;