IvanHoe 999946 Beta code
ComradesTarBall-999946a.tar.bz2 released.
+ updated RobboBase Library and Comrade GUI
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[b] & POSITION->DYN->
< wAtt & ~POSITION->DYN->bAtt) == 0)
---
> if ((OpenFileB[b] & 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)
An exe should be available later today...