diff -abBdEHrw IvanHoe-Beta-999947c/evaluation.c IvanHoe-Beta-999946a/evaluation.c 164c164 < if ((wBitboardP & ~FILEh) == 0 --- > if (!(wBitboardP & ~FILEh) 167c167,171 < if ((wBitboardP & ~FILEa) == 0 --- > if (!(wBitboardP & ~FILEa) > && (bBitboardK | AttK[POSITION->bKsq]) & SqSet[A8]) > POSITION->DYN->Value = 0; > if (POSITION->sq[B6] == wEnumP && POSITION->sq[B7] == bEnumP > && !(wBitboardP & ~FILEb) 169a174,177 > if (POSITION->sq[G6] == wEnumP && POSITION->sq[G7] == bEnumP > && !(wBitboardP & ~FILEg) > && (bBitboardK | AttK[POSITION->bKsq]) & SqSet[H8]) > POSITION->DYN->Value = 0; 190a199,206 > if (POSITION->sq[B3] == bEnumP && POSITION->sq[B2] == wEnumP > && !(bBitboardP & ~FILEb) > && (wBitboardK | AttK[POSITION->wKsq]) & SqSet[A1]) > POSITION->DYN->Value = 0; > if (POSITION->sq[G3] == bEnumP && POSITION->sq[G2] == wEnumP > && !(bBitboardP & ~FILEg) > && (wBitboardK | AttK[POSITION->wKsq]) & SqSet[H1]) > POSITION->DYN->Value = 0; 304a321,328 > if (POSITION->sq[B6] == wEnumP && POSITION->sq[B7] == bEnumP > && !(wBitboardP & ~FILEb) > && (bBitboardK | AttK[POSITION->bKsq]) & SqSet[A8]) > POSITION->DYN->Value = 0; > if (POSITION->sq[G6] == wEnumP && POSITION->sq[G7] == bEnumP > && !(wBitboardP & ~FILEg) > && (bBitboardK | AttK[POSITION->bKsq]) & SqSet[H8]) > POSITION->DYN->Value = 0; 325a350,357 > if (POSITION->sq[B3] == bEnumP && POSITION->sq[B2] == wEnumP > && !(bBitboardP & ~FILEb) > && (wBitboardK | AttK[POSITION->wKsq]) & SqSet[A1]) > POSITION->DYN->Value = 0; > if (POSITION->sq[G3] == bEnumP && POSITION->sq[G2] == wEnumP > && !(bBitboardP & ~FILEg) > && (wBitboardK | AttK[POSITION->wKsq]) & SqSet[H1]) > POSITION->DYN->Value = 0; 364a397 > boolean STORE_EVAL_HASH = TRUE; 389a423,428 > if (!(wBitboardOcc ^ (wBitboardBL | wBitboardK | wBitboardP)) || > !(wBitboardOcc ^ (wBitboardBD | wBitboardK | wBitboardP))) > POSITION->DYN->flags |= 32; > if (!(bBitboardOcc ^ (bBitboardBL | bBitboardK | bBitboardP)) || > !(bBitboardOcc ^ (bBitboardBD | bBitboardK | bBitboardP))) > POSITION->DYN->flags |= 64; 417,418c456 < int va; < /* boolean PROBING_WEAK = (HEIGHT (POSITION) >= TRIPLE_WEAK_HEIGHT); */ --- > int va, v; 420,421c458,460 < if (TRIPLE_VALUE (POSITION, &va, depth < TRIPLE_DEFINITE_PROBE_DEPTH && < HEIGHT (POSITION) > TRIPLE_DEFINITE_PROBE_HEIGHT, FALSE)) --- > if ((v = TRIPLE_VALUE > (POSITION, &va, depth < TRIPLE_DEFINITE_PROBE_DEPTH && > HEIGHT (POSITION) > TRIPLE_DEFINITE_PROBE_HEIGHT, FALSE)) == TRUE) 439a479,480 > if (v == FALSE) /* mere */ > STORE_EVAL_HASH = FALSE; 465,466c506,507 < #define WHITE_MINOR_ONLY (8 << 2) < #define BLACK_MINOR_ONLY (16 << 2) --- > #define WHITE_MINOR_ONLY (POSITION->DYN->flags & 32) > #define BLACK_MINOR_ONLY (POSITION->DYN->flags & 64) 468,469c509 < if ((POSITION->DYN->flags & WHITE_MINOR_ONLY < || POSITION->DYN->flags & BLACK_MINOR_ONLY) --- > if ((WHITE_MINOR_ONLY || BLACK_MINOR_ONLY) 473,476c513,514 < if ((POSITION->DYN->flags & WHITE_MINOR_ONLY < && PAWN_INFO->wPfile_count <= 1) < || (POSITION->DYN->flags & BLACK_MINOR_ONLY < && PAWN_INFO->bPfile_count <= 1) --- > if ((WHITE_MINOR_ONLY && PAWN_INFO->wPfile_count <= 1) > || (BLACK_MINOR_ONLY && PAWN_INFO->bPfile_count <= 1) 1351,1352c1389 < if ((OpenFileB & POSITION->DYN-> < wAtt & ~POSITION->DYN->bAtt) == 0) --- > if ((OpenFileB & POSITION->DYN->wAtt & ~POSITION->DYN->bAtt) == 0) 1415d1451 < #define WHITE_HAS_PIECE (POSITION->DYN->flags & 2) 1417c1453,1468 < #define BLACK_HAS_PIECE (POSITION->DYN->flags & 1) --- > #define WHITE_HAS_PIECE (wBitboardOcc ^ (wBitboardK | wBitboardP)) > #define BLACK_HAS_PIECE (bBitboardOcc ^ (bBitboardK | bBitboardP)) > #define BitBoard3(x, y, z) ((1ULL << (x)) | (1ULL << (y)) | (1ULL << (z))) > #define BitBoard4(w, x, y, z) ((1ULL << (w)) | (1ULL << (x)) | (1ULL << (y)) | (1ULL << (z))) > #define A7A8B8 BitBoard3 (A7, A8, B8) > #define F8G8H8 BitBoard3 (F8, G8, H8) > #define E8F8G8H8 BitBoard4 (E8, F8, G8, H8) > #define H7G8H8 BitBoard3 (H7, G8, H8) > #define A8B8C8D8 BitBoard4 (A8, B8, C8, D8) > #define A8B8C8 BitBoard3 (A8, B8, C8) > #define A1B1A2 BitBoard3 (A1, B1, A1) > #define F1G1H1 BitBoard3 (F1, G1, H1) > #define E1F1G1H1 BitBoard4 (E1, F1, G1, H1) > #define G1H1H2 BitBoard3 (G1, H1, H2) > #define A1B1C1D1 BitBoard4 (A1, B1, C1, D1) > #define A1B1C1 BitBoard3 (A1, B1, C1) 1427c1478 < Value = 0; --- > Value = 0; /* patt */ 1455c1506,1532 < if (!wBitboardP) --- > if (wBitboardBL) > { > if (POSITION->sq[B6] == wEnumP && POSITION->sq[B7] == bEnumP > && !(wBitboardP & ~SqSet[B6]) && !(bBitboardP & ~FILEb) > && !((bBitboardP >> 8) & ~POSITION->OccupiedBW) > && !(wBitboardBL & (wBitboardBL - 1)) /* one bit */ > && (bBitboardK & B8C8D8) && !(wBitboardK & A7A8B8)) > Value = 0; > if (POSITION->sq[G6] == wEnumP && POSITION->sq[G7] == bEnumP > && !((wBitboardP | bBitboardP) & ~FILEg) > && (bBitboardK & E8F8G8H8) && !(wBitboardK & H7G8H8)) > Value = 0; > } > if (wBitboardBD) > { > if (POSITION->sq[B6] == wEnumP && POSITION->sq[B7] == bEnumP > && !((wBitboardP | bBitboardP) & ~FILEb) > && (bBitboardK & A8B8C8D8) && !(wBitboardK & A7A8B8)) > Value = 0; > if (POSITION->sq[G6] == wEnumP && POSITION->sq[G7] == bEnumP > && !(wBitboardP & ~SqSet[G6]) && !(bBitboardP & ~FILEg) > && !((bBitboardP >> 8) & ~POSITION->OccupiedBW) > && !(bBitboardBL & (bBitboardBL - 1)) /* one bit */ > && (bBitboardK & F8G8H8) && !(wBitboardK & H7G8H8)) > Value = 0; > } > if (!wBitboardP) /* valid ? */ 1468c1545 < Value = 0; --- > Value = 0; /* patt */ 1496c1573,1599 < if (!bBitboardP) --- > if (bBitboardBL) > { > if (POSITION->sq[B3] == bEnumP && POSITION->sq[B2] == wEnumP > && !((bBitboardP | wBitboardP) & ~FILEb) > && (wBitboardK & A1B1C1D1) && !(bBitboardK & A1B1A2)) > Value = 0; > if (POSITION->sq[G3] == bEnumP && POSITION->sq[G2] == wEnumP > && !(bBitboardP & ~SqSet[G3]) && !(wBitboardP & ~FILEg) > && !((wBitboardP << 8) & ~POSITION->OccupiedBW) > && !(bBitboardBL & (bBitboardBL - 1)) /* one bit */ > && (wBitboardK & F1G1H1) && !(bBitboardK & G1H1H2)) > Value = 0; > } > if (bBitboardBD) > { > if (POSITION->sq[B3] == bEnumP && POSITION->sq[B2] == wEnumP > && !(bBitboardP & ~SqSet[B3]) && !(wBitboardP & ~FILEb) > && !((wBitboardP << 8) & ~POSITION->OccupiedBW) > && !(bBitboardBD & (bBitboardBD - 1)) /* one bit */ > && (wBitboardK & A1B1C1) && !(bBitboardK & A1B1A2)) > Value = 0; > if (POSITION->sq[G3] == bEnumP && POSITION->sq[G2] == wEnumP > && !((bBitboardP | wBitboardP) & ~FILEg) > && (wBitboardK & E1F1G1H1) && !(bBitboardK & G1H1H2)) > Value = 0; > } > if (!bBitboardP) /* valid ? */ 1523a1627 > if (STORE_EVAL_HASH)
Time permitting, a build should be available soon...