Progress On Bricabrac

Discussion of chess software programming and technical issues.

Moderators: hgm, chrisw, Rebel

Mike Sherwin
Posts: 925
Joined: Fri Aug 21, 2020 1:25 am
Location: Planet Earth, Sol system
Full name: Michael J Sherwin

Re: Progress On Bricabrac

Post by Mike Sherwin »

+1, looking forward to the outcome. :D
Mike Sherwin
Posts: 925
Joined: Fri Aug 21, 2020 1:25 am
Location: Planet Earth, Sol system
Full name: Michael J Sherwin

Re: Progress On Bricabrac

Post by Mike Sherwin »

I have not done much in the last couple of days. Today I did a little bit.

Code: Select all

void InitSearch(Thread* t) {
  u64 bb, cc, b, a, pieces, allPieces;
  u32 sq;
  u64 i, col, cenCol, row, cenRow;
  SplitBB blocks;

  allPieces = piece[WHITE] | piece[BLACK];

  for (i = A1; i <= H8; i++) {
    col = i & 7;
    row = i >> 3;
    cenCol = col < 4 ? col : 7 - col;
    cenRow = row < 4 ? row : 7 - row;

    // white pawns
    wpPST[i] = 0;
    
    // black pawns
    bpPST[i] = 0;

    // white knights
    wnPST[i] = 0;
    bb = knightMoves[i] & ~piece[WHITE];
    while (bb) {
      _BitScanForward64(&sq, bb);
      bb ^= one << sq;
      if (!AtkByBlack(t, one << sq)) {
        cc = knightMoves[sq] & ~piece[WHITE];
        while (cc) {
          _BitScanForward64(&sq, cc);
          cc ^= one << sq;
          wnPST[i] += (one - AtkByBlack(t, one << sq)) * (one + cenCol * cenRow);
        }
      }
    }
    wnPST[i] /= 2;

    // black knights
    bnPST[i] = 0;
    bb = knightMoves[i] & ~piece[BLACK];
    while (bb) {
      _BitScanForward64(&sq, bb);
      bb ^= one << sq;
      if (!AtkByWhite(t, one << sq)) {
        cc = knightMoves[sq] & ~piece[BLACK];
        while (cc) {
          _BitScanForward64(&sq, cc);
          cc ^= one << sq;
          bnPST[i] += (one - AtkByWhite(t, one << sq)) * (one + cenCol * cenRow);
        }
      }
    }
    bnPST[i] /= 2;

    // bishops
    blocks.bb = allPieces & b7e[i];
    blocks.bb = ((blocks.l32 >> 8) | blocks.h32);
    bb = bss[i][blocks.r1][0]
       & bss[i][blocks.r2][1]
       & bss[i][blocks.r3][2];

    // white bishops
    wbPST[i] = 0;
    b = bb & ~piece[WHITE];
    while (b) {
      _BitScanForward64(&sq, b);
      b ^= one << sq;
      if (!AtkByBlack(t, one << sq)) {
        blocks.bb = allPieces & b7e[sq];
        blocks.bb = ((blocks.l32 >> 8) | blocks.h32);
        cc = bss[sq][blocks.r1][0]
           & bss[sq][blocks.r2][1]
           & bss[sq][blocks.r3][2]
           & ~piece[WHITE];
        while (cc) {
          _BitScanForward64(&sq, cc);
          cc ^= one << sq;
          wbPST[i] += (one - AtkByBlack(t, one << sq)) * (one + cenCol * cenRow);
        }
      }
    }
    wbPST[i] /= 4;

    // black bishops
    bbPST[i] = 0;
    b = bb & ~piece[BLACK];
    while (b) {
      _BitScanForward64(&sq, b);
      b ^= one << sq;
      if (!AtkByWhite(t, one << sq)) {
        blocks.bb = allPieces & b7e[sq];
        blocks.bb = ((blocks.l32 >> 8) | blocks.h32);
        cc = bss[sq][blocks.r1][0]
           & bss[sq][blocks.r2][1]
           & bss[sq][blocks.r3][2]
           & ~piece[BLACK];
        while (cc) {
          _BitScanForward64(&sq, cc);
          cc ^= one << sq;
          bbPST[i] += (one - AtkByWhite(t, one << sq)) * (one + cenCol * cenRow);
        }
      }
    }
    bbPST[i] /= 4;

    // rooks
    blocks.bb = allPieces & rob[i];
    bb = qss[i][(blocks.bb >> (i & 56)) & 127][0]
       & qss[i][blocks.r2][1]
       & qss[i][blocks.r3][2]
       & qss[i][blocks.r4][3]
       & qss[i][blocks.r5][4]
       & qss[i][blocks.r6][5]
       & qss[i][blocks.r7][6]
       & rob[i];

    // white rooks
    wrPST[i] = 0;
    b = bb & ~piece[WHITE];
    while (b) {
      _BitScanForward64(&sq, b);
      b ^= one << sq;
      if (!AtkByBlack(t, one << sq)) {
        blocks.bb = allPieces & rob[sq];
        cc = qss[sq][(blocks.bb >> (i & 56)) & 127][0]
          & qss[sq][blocks.r2][1]
          & qss[sq][blocks.r3][2]
          & qss[sq][blocks.r4][3]
          & qss[sq][blocks.r5][4]
          & qss[sq][blocks.r6][5]
          & qss[sq][blocks.r7][6]
          & rob[sq]
          & ~piece[WHITE];
        while (cc) {
          _BitScanForward64(&sq, cc);
          cc ^= one << sq;
          wrPST[i] += (one - AtkByBlack(t, one << sq)) * (one + cenCol + (row == 6));
        }
      }
    }
    wrPST[i] /= 6;

    // black rooks
    brPST[i] = 0;
    b = bb & ~piece[BLACK];
    while (b) {
      _BitScanForward64(&sq, b);
      b ^= one << sq;
      if (!AtkByWhite(t, one << sq)) {
        blocks.bb = allPieces & rob[sq];
        cc = qss[sq][(blocks.bb >> (i & 56)) & 127][0]
          & qss[sq][blocks.r2][1]
          & qss[sq][blocks.r3][2]
          & qss[sq][blocks.r4][3]
          & qss[sq][blocks.r5][4]
          & qss[sq][blocks.r6][5]
          & qss[sq][blocks.r7][6]
          & rob[sq]
          & ~piece[BLACK];
        while (cc) {
          _BitScanForward64(&sq, cc);
          cc ^= one << sq;
          brPST[i] += (one - AtkByWhite(t, one << sq)) * (one + cenCol + (row == 1));
        }
      }
    }
    brPST[i] /= 6;

    // queens
    blocks.bb = allPieces & rob[i];
    bb = qss[i][(blocks.bb >> (i & 56)) & 127][0]
      & qss[i][blocks.r2][1]
      & qss[i][blocks.r3][2]
      & qss[i][blocks.r4][3]
      & qss[i][blocks.r5][4]
      & qss[i][blocks.r6][5]
      & qss[i][blocks.r7][6];

    // white queens
    wqPST[i] = 0;
    b = bb & ~piece[WHITE];
    while (b) {
      _BitScanForward64(&sq, b);
      b ^= one << sq;
      if (!AtkByBlack(t, one << sq)) {
        blocks.bb = allPieces & (rob[sq] | bob[sq]);
        cc = qss[sq][(blocks.bb >> (i & 56)) & 127][0]
          & qss[sq][blocks.r2][1]
          & qss[sq][blocks.r3][2]
          & qss[sq][blocks.r4][3]
          & qss[sq][blocks.r5][4]
          & qss[sq][blocks.r6][5]
          & qss[sq][blocks.r7][6]
          & ~piece[WHITE];
        while (cc) {
          _BitScanForward64(&sq, cc);
          cc ^= one << sq;
          wqPST[i] += (one - AtkByBlack(t, one << sq)) * (one + cenCol * cenRow);
        }
      }
    }
    wqPST[i] /= 16;

    // black queens
    bqPST[i] = 0;
    b = bb & ~piece[BLACK];
    while (b) {
      _BitScanForward64(&sq, b);
      b ^= one << sq;
      if (!AtkByWhite(t, one << sq)) {
        blocks.bb = allPieces & (rob[sq] | bob[sq]);
        cc = qss[sq][(blocks.bb >> (i & 56)) & 127][0]
          & qss[sq][blocks.r2][1]
          & qss[sq][blocks.r3][2]
          & qss[sq][blocks.r4][3]
          & qss[sq][blocks.r5][4]
          & qss[sq][blocks.r6][5]
          & qss[sq][blocks.r7][6]
          & ~piece[BLACK];
        while (cc) {
          _BitScanForward64(&sq, cc);
          cc ^= one << sq;
          bqPST[i] += (one - AtkByWhite(t, one << sq)) * (one + cenCol * cenRow);
        }
      }
    }
    bqPST[i] /= 16;

    // white king
    wkPST[i] = (s32)(((2000 - mat[BLACK]) / 200) * cenCol * cenRow);

    // black king
    bkPST[i] = (s32)(((2000 - mat[WHITE]) / 200) * cenCol * cenRow);
  }

  // white pawn specifics
  wpPST[E2] -= (board[F1] == WB) * 20;
  wpPST[D2] -= (board[C1] == WB) * 20;
  wpPST[D4] += (board[F1] == WB) * 20;
  wpPST[E4] += (board[C1] == WB) * 20;

  // black pawn 
  bpPST[E7] -= (board[F8] == BB) * 20;
  bpPST[D7] -= (board[C8] == BB) * 20;
  bpPST[D5] += (board[F8] == BB) * 20;
  bpPST[E5] += (board[C8] == BB) * 20;

  // white knight specifics
  wnPST[G1] -= (board[E1] == WC) * 20;
  wnPST[B1] -= (board[E1] == WC) * 20;

  // black knight specifics
  bnPST[G8] -= (board[E8] == BC) * 20;
  bnPST[B8] -= (board[E8] == BC) * 20;

  // white bishop specifics
  wbPST[E3] -= (board[E2] == WP) * 20;
  wbPST[D3] -= (board[D2] == WP) * 20;
  wbPST[G2] += (((board[E2] == WP) + (board[D3] == WP) + (board[C4] == WP)) > 1) * 20;
  wbPST[B2] += (((board[D2] == WP) + (board[E3] == WP) + (board[F4] == WP)) > 1) * 30;

  // black bishop specifics
  bbPST[E6] -= (board[E7] == BP) * 20;
  bbPST[D6] -= (board[D7] == BP) * 20;
  bbPST[G8] += (((board[E8] == BP) + (board[D6] == BP) + (board[C5] == BP)) > 1) * 20;
  bbPST[B8] += (((board[D8] == BP) + (board[E6] == BP) + (board[F5] == BP)) > 1) * 30;

  // white rook specifics

  // black rook specifics

  // white queen specifics
  wqPST[D1] += (board[G1] == WN) * 8;
  wqPST[D1] += (board[F1] == WB) * 8;
  wqPST[D1] += (board[B1] == WN) * 8;
  wqPST[D1] += (board[C1] == WB) * 8;

  // black queen specifics
  bqPST[D1] += (board[G8] == BN) * 8;
  bqPST[D1] += (board[F8] == BB) * 8;
  bqPST[D1] += (board[B8] == BN) * 8;
  bqPST[D1] += (board[C8] == BB) * 8;
  // white king specifics
  wkPST[G1] += (board[E1] == WC) * 40;
  wkPST[C1] += (board[E1] == WC) * 30;

  // black king specifics
  bkPST[G8] += (board[E8] == BC) * 40;
  bkPST[C8] += (board[E8] == BC) * 30;

  pos[WHITE] = 0;
  pos[BLACK] = 0;
  mat[WHITE] = 0;
  mat[BLACK] = 0;

  pieces = piece[WHITE];
  while (pieces) {
    _BitScanForward64(&sq, pieces);
    pieces ^= one << sq;
    mat[WHITE] += value[board[sq]];
    pos[WHITE] += pcePST[board[sq]][sq];
  }

  pieces = piece[BLACK];
  while (pieces) {
    _BitScanForward64(&sq, pieces);
    pieces ^= one << sq;
    mat[BLACK] += value[board[sq]];
    pos[BLACK] += pcePST[board[sq]][sq];
  }
}
This game really shows well the good, the bad and the ugly of the current state of the evaluator.
[pgn][Event "Computer chess game"]
[Site "DESKTOP-HFVHK2B"]
[Date "2021.05.16"]
[Round "?"]
[White "Bricabrac"]
[Black "Tscp181"]
[Result "0-1"]
[BlackElo "2200"]
[ECO "D01"]
[Opening "Richter-Veresov, 3.Nf3"]
[Time "10:54:01"]
[Variation "2.Nf3 Nf6"]
[WhiteElo "2000"]
[TimeControl "0+30"]
[Termination "normal"]
[PlyCount "162"]
[WhiteType "program"]
[BlackType "program"]

1. d4 {(d2d4 g8f6 b1c3 d7d5 c1f4 c8f5 g1f3 b8c6 e2e3 f6e4 f3e5) +0.52/11
29} d5 {(d7d5 b1c3 g8f6 g1f3 b8c6 e2e3 e7e6 f1d3) -0.25/8 29} 2. Nf3 {(g1f3
g8f6 b1c3 d8d6 f3e5 b8d7 c1f4 d6b4 a1b1 d7e5) +0.36/10 29} Nf6 {(g8f6 e2e3
e7e6 f1b5 c8d7 b1c3 f8b4 c1d2 b4c3 b5d7 b8d7 d2c3) -0.05/7 29} 3. Nc3
{(b1c3 e7e6 e2e3 f8d6 f1e2 e8g8 e1g1 b8c6 c1d2 e6e5) +0.24/10 29} e6 {(e7e6
e2e3 f8b4 f1d3 b4c3 b2c3 e8g8 e1g1) +0.08/7 29} 4. e3 {(e2e3 f8b4 c1d2 e8g8
f1e2 b8c6 e1g1 d8d7 e2b5 f8d8) +0.10/10 29} Bb4 {(f8b4 c1d2 e8g8 f1d3 b4c3
d2c3 b8c6) +0.11/7 29} 5. Bd3 {(f1d3 e8g8 e1g1 b8c6 c3e2 f8e8 a2a3 b4d6
e2f4 e6e5) +0.37/10 29} Bxc3+ {(b4c3 b2c3 e8g8 e1g1 b8c6 c1a3 f8e8 a3c5)
+0.18/7 29} 6. bxc3 {(b2c3 d8d6 a2a4 b8d7 c1a3 d6c6 a3b4 a7a5 d3b5 c6b6
b4c5) 0.00/11 29} O-O {(e8g8 e1g1 b8c6 a1b1 f8e8 c1d2 e6e5) +0.31/7 29} 7.
Ba3 {(c1a3 f8e8 a1b1 b8c6 e1g1 e6e5 f3e5 c6e5 d4e5 e8e5) +0.62/10 29} Re8
{(f8e8 c3c4 b8d7 c4d5 e6d5 e1g1 f6e4 c2c4) +0.24/8 29} 8. O-O {(e1g1 b8d7
a1b1 f6e4 b1b3 d8f6 d1e2 e6e5 f1b1 f6c6) +0.63/10 29} Nbd7 {(b8d7 a1b1 e6e5
d3e2 e5e4 f3d2 a7a5 c3c4) +0.41/8 29} 9. Qb1 {(d1b1 f6e4 b1b3 d8f6 c3c4
d7b6 f1b1 d5c4 d3c4 b6c4) +0.19/10 29} e5 {(e6e5 f3d2 e5e4 d3b5 c7c6 b5e2
d7b6) +0.63/7 29} 10. dxe5 {(d4e5 d7e5 f3d4 a7a6 b1b4 e5c6 d4c6 b7c6 a1b1
c8d7) +0.29/10 29} Nxe5 {(d7e5 f3e5 e8e5 c3c4 f6e4 c4d5 e4d2 b1b2 e5d5)
+0.50/8 29} 11. Nxe5 {(f3e5 e8e5 b1b4 e5g5 f1b1 g5g4 f2f4 b7b6 h2h3 a7a5)
+0.27/10 29} Rxe5 {(e8e5 c3c4 e5g5 f2f4 g5h5 c4d5 h5d5 e3e4) +0.39/8 29}
12. Qb4 {(b1b4 b7b6 b4f4 d8e8 c3c4 d5c4 f4c4 e5a5 a3b4 c8e6) +0.23/10 29}
a5 {(a7a5 b4b2 e5e6 c3c4 e6b6 b2d4 c8e6 c4d5 f6d5) +0.72/7 29} 13. Qd4
{(b4d4 d8e8 a1e1 c8d7 f2f4 e5e6 d3f5 e6c6 f5d7 e8d7) +0.32/10 29} Rg5
{(e5g5 f2f4 g5h5 e3e4 f6g4 e4d5 h5d5) +0.71/7 29} 14. f4 {(f2f4 g5h5 a1e1
c8e6 d3e2 h5h4 g2g3 h4h6 d4d3) +0.35/9 29} Rh5 {(g5h5 f1b1 f6g4 e3e4 d8h4
h2h3 g4f6 e4e5) +0.62/8 29} 15. Rae1 {(a1e1 b7b6 a3b2 c7c5 d4a4 c8e6 f4f5
d8d7 a4f4) +0.58/9 29} Bf5 {(c8f5 e1b1 b7b6 c3c4 f5e4 c4d5 h5d5) +0.81/7
29} 16. Bxf5 {(d3f5 h5f5 e1b1 b7b6 a3b2 d8d6 f1e1 a8d8 b1d1 d6e6) +0.57/10
29} Rxf5 {(h5f5 c3c4 b7b6 a3b2 c7c5 d4d3 f6e4 c4d5 d8d5) +0.71/8 29} 17. h3
{(h2h3 f5h5 e1b1 b7b6 a3b2 d8d6 f1e1 c7c5 d4d3 d6e6) +0.59/10 29} Rh5
{(f5h5 e1b1 b7b6 c3c4 c7c5 d4b2 a8a6 c4d5 h5d5) +0.95/7 29} 18. Rb1 {(e1b1
b7b6 a3b2 a5a4 f1f3 c7c5 d4d3 d8d6 g2g4 c5c4) +0.53/10 29} b6 {(b7b6 c3c4
d8e8 c4d5 h5d5 d4c3 a8d8 c3c7 e8e3) +0.86/8 29} 19. Bb2 {(a3b2 c7c5 d4d3
d8e7 b1d1 a8e8 d1e1 e7e4 d3e4 f6e4) +0.43/10 29} Qe7 {(d8e7 f1e1 c7c5 d4a4
e7e8 a4e8 a8e8 c3c4) +1.06/7 29} 20. Rbe1 {(b1e1 a8d8 a2a3 f6e4 c3c4 f7f6
g2g4 c7c5 d4d3 h5h3) +0.06/10 29} c5 {(e7e4 d4e4 f6e4 e1d1 a8e8 f4f5 c7c6)
+1.15/7 29} 21. Qd1 {(d4d1 g7g6 d1d3 f6e4 f1f3 a8d8 g2g4 h5h4 c3c4 d5c4)
0.00/10 29} c4 {(c5c4 d1d4 a8b8 f4f5 b6b5 e1d1 b8e8 f1f3) +1.15/8 29} 22.
Rf3 {(f1f3 a8d8 d1d4 e7d6 f3g3 g7g6 b2a3 d6e6 e1b1 f6d7) -0.46/10 29} Qb7
{(e7b7 d1d4 a8e8 f3g3 h5f5 e1b1 b6b5) +1.20/7 29} 23. Qd4 {(d1d4 b7c6 e1d1
a8d8 g2g4 h5h4 d4e5 f6e4 e5e7 c6f6) -0.19/10 29} Re8 {(a8e8 e1d1 b6b5 f3g3
h5f5 a2a3 e8e7) +1.19/7 29} 24. g4 {(g2g4 h5h4 e1d1 b7c6 a2a3 h7h6 g1f1
b6b5 f1e1 c6d6) +0.18/10 29} Rh6 {(h5h6 g4g5 h6g6 g1h1 e8e4 d4d1 f6d7 h1g1)
+1.19/8 29} 25. g5 {(g4g5 h6g6 e1d1 h7h6 h3h4 h6g5 h4g5 b7c6 g1f1 f6g4)
+0.34/10 29} Rg6 {(h6g6 h3h4 f6g4 e1d1 b7e7 h4h5 g6d6 b2a3) +1.13/8 29} 26.
Rd1 {(e1d1 b7c7 d1e1 c7d6 h3h4 e8e4 d4d2 e4e8 e1d1 g8f8) +0.19/10 29} Re4
{(e8e4 d4d2 e4e6 h3h4 e6d6 f4f5 f6e4) +1.11/7 29} 27. Qd2 {(d4d2 e4e8 d2d4
b7c7 f3f1 c7c6 f1f3 h7h6 h3h4 h6g5 f4g5) +0.04/11 29} Qe7 {(h7h6 h3h4 h6g5
h4g5 b7d7 a2a3 b6b5) +1.10/7 29} 28. Kf2 {(g1f2 f6e8 f4f5 g6g5 d2d5 e8c7
d5d8 e7d8 d1d8) +0.23/9 29} Ne8 {(f6e8 f2e2 e8c7 h3h4 b6b5 h4h5 g6e6 f4f5)
+1.25/8 29} 29. f5 {(f4f5 g6g5 d2d5 g7g6 d5c6 g6f5 c6b6 e7e5 f2e1 e8c7)
+0.18/10 29} Rxg5 {(g6g5 d2d5 e4e5 d5c4 g5f5 f3f5 e5f5 f2e2 e8d6 c4d3)
+1.27/9 29} 30. Qxd5 {(d2d5 e4e5 d5c4 e5f5 c4d4 f5f3 f2f3 g5g6 f3f2 e7d6)
-0.23/10 29} Re5 {(e4e5 d5c4 g5f5 f3f5 e5f5 f2e2 b6b5 c4d3 f5e5) +1.32/8
29} 31. Qxc4 {(d5c4 g5f5 f3f4 f5f4 e3f4 e7c5 c4c5 e5c5 f2e1 e8c7) +0.17/10
29} Rgxf5 {(g5f5 f3f5 e5f5 f2e2 f5e5 c4d4 b6b5 c3c4) +1.29/7 29} 32. Rxf5
{(f3f5 e5f5 f2e2 e7e5 e3e4 b6b5 c4d4 e5d4 c3d4 f5f6) +0.18/10 29} Rxf5+
{(e5f5 f2e2 f5c5 c4b3 c5c6 d1d3 e8f6 e2e1 f6e4) +1.31/8 29} 33. Ke2 {(f2e2
f5f6 c4a4 e7e5 d1d5 e5h2 e2d3 f6e6 a4g4 e6d6 d5d4) +0.14/11 29} Rc5 {(f5c5
c4b3 c5c6 d1d3 e8f6 e2e1 f6e4) +1.31/7 29} 34. Qg4 {(c4g4 e7e5 g4f4 e5e6
d1d8 c5h5 f4g4 h5h6 g4e6 h6e6) -0.01/10 29} Rb5 {(c5b5 b2a1 b5e5 g4g3 e5g5
g3f2 e8d6) +1.37/7 29} 35. Ba1 {(b2a1 b5c5 a2a4 e7e5 c3c4 e5h2 e2d3 h2d6
d3e2 f7f5) +0.23/10 29} Rg5 {(b5e5 d1d3 b6b5 g4c8 f7f5 a1b2 f5f4) +1.36/7
29} 36. Qf3 {(g4f3 e7e5 d1d8 g5g6 f3f4 g6e6 f4e5 e6e5 d8d1 e8c7) +0.14/10
29} Qc7 {(e7c7 e2d2 c7d6 d2e2 d6h2 e2d3 b6b5 d1d2 h2d6) +1.43/7 29} 37. Qe4
{(f3e4 c7h2 e2d3 e8c7 d1b1 h2d6 d3e2 d6d5 e4d5 c7d5) -0.04/10 29} Qh2+
{(c7h2 e2d3 e8c7 d1h1 h2f2 c3c4 g5g2 d3d4) +1.75/7 29} 38. Kd3 {(e2d3 h2d6
d3e2 d6h2 e2d3 h2d6 d3e2 d6h2 c4d4 d6d4 c3d4) 0.00/12 29} Re5 {(g5e5 e4f3
e5e6 c3c4 h2d6 d3e2 d6c5 d1d4 e8d6) +1.44/8 29} 39. Qh1 {(e4h1 h2g3 d1e1
g3g6 e3e4 g6d6 d3e3 e8c7 c3c4 e5e6 h1f3) -0.54/11 29} Qg3 {(h2g3 d1e1 g3g6
d3d2 g6d6 d2e2 d6e6 a2a3 e6e7 a1b2 e5e3) +2.21/8 29} 40. Re1 {(d1e1 g3g6
d3d2 g6d6 d2c1 d6e6 c1b1 e5e3 e1e3 e6e3 h1c6) -0.90/11 29} Qg6+ {(g3g6 d3d2
g6d6 d2e2 d6e6 a2a3 e6e7 a1b2 e5e3) +2.21/7 29} 41. Kd2 {(d3d2 g6e6 h1b7
e5h5 e1b1 e6a2 b7b6 a2d5 d2c1 h5h3 b6d4) -0.92/11 29} Qd6+ {(g6d6 d2e2 d6e6
a2a3 e6a2 c3c4 a2c2 e2f3 e5e4) +2.44/7 29} 42. Kc1 {(d2c1 d6e6 c1b1 e5e3
e1e3 e6e3 h1c6 g7g5 c3c4 e3e6 c6e6) -0.92/11 29} Qa3+ {(d6a3 a1b2 a3a2 h1c6
e5e6 c6a8 a5a4 e3e4 b6b5) +2.78/8 29} 43. Bb2 {(a1b2 a3a2 c3c4 e5e6 h1d5
e8d6 e1g1 a2c4 d5c4 d6c4 g1g7) -1.08/11 29} Qxa2 {(a3a2 h1c6 e5e6 c6a8 a5a4
e3e4 a2c4 e4e5) +2.72/8 29} 44. c4 {(c3c4 e5c5 h1a8 g8f8 a8e4 a2c4 e4h7
f7f5 h7h8 f8f7) -1.17/10 29} Re6 {(e5e6 h1d5 a5a4 e1f1 a4a3 b2e5 e6e7 e3e4)
+2.76/8 29} 45. Qd5 {(h1d5 a2a4 b2d4 e8d6 e1g1 g7g6 g1d1 a4c4 d4b6 c4d5
d1d5) -0.74/11 29} a4 {(a5a4 e1f1 a4a3 b2d4 e6e7 d5b5 e8d6 b5b6 d6c4)
+2.60/8 29} 46. Qd4 {(d5d4 e6c6 d4d7 c6e6 d7d5 e8c7 d5d4 f7f6 b2c3 g8f7)
-0.25/10 29} f6 {(a4a3 b2c3 e6d6 d4e5 d6d8 e5b5 d8b8 e3e4) +2.81/8 29} 47.
Qd5 {(d4d5 e8c7 d5d8 c7e8 d8d5 g8f7 e1g1 a4a3 b2c3 e8c7 d5d4) -0.26/11 29}
Kf7 {(g8f7 d5h5 f7f8 c4c5 a4a3 b2d4 b6c5 h5c5 e8d6 c2c3) +2.18/8 29} 48.
Rg1 {(e1g1 f7e7 g1g3 g7g5 g3f3 e8c7 d5d4 a4a3 b2c3 b6b5 c4b5) -0.19/11 29}
Ke7 {(f7e7 g1g3 e6d6 d5e4 e7f7 c4c5 b6c5 e4h7 a4a3) +2.09/8 29} 49. Rg3
{(g1g3 e6d6 d5b7 e7d8 b7e4 g7g6 b2c3 f6f5 e4h4 d8c8 h4f4) -0.25/11 29} Rd6
{(e6d6 d5e4 e7f7 c4c5 b6c5 e4h7 a4a3 b2c3) +2.04/7 29} 50. Qe4+ {(d5e4 e7f7
g3f3 e8c7 f3f1 f7g8 f1f2 b6b5 c4b5 c7b5 c2c4) -0.11/11 29} Kf8 {(e7f8 c4c5
b6c5 e4h7 a2d5 h7h8 f8e7 h3h4 c5c4) +2.11/7 29} 51. Rg4 {(g3g4 h7h6 g4f4
d6d7 e4e6 d7b7 e6d5 b7e7 b2e5 a2a3 c1d2) -0.51/11 29} a3 {(a4a3 b2c3 g7g6
e4a8 f6f5 g4h4 d6d7 e3e4) +2.53/8 29} 52. Bc3 {(b2c3 h7h6 g4f4 d6d7 e4c6
d7d6 c6e4 d6d7 c3e5 f8g8 e5c3) -0.52/11 29} h5 {(h7h5 g4h4 e8c7 h4h5 d6e6
e4f4 e6c6 h5h4) +1.66/8 29} 53. Rh4 {(g4h4 e8c7 h4h5 c7e6 h5f5 e6c5 e4g4
d6c6 g4f3 c6e6 f3f4) +0.28/11 29} Nc7 {(e8c7 h4h5 d6e6 h5h8 f8f7 e4d4 c7a6
d4d7 e6e7 d7d4) +1.56/8 29} 54. Qb7 {(e4b7 c7d5 c4d5 a2d5 b7d5 d6d5 c3b4
f8f7 b4a3 f7e6 h4f4) +2.21/11 29} Nd5 {(c7d5 c4d5 a2d5 b7d5 d6d5 h4a4 f8e7
a4a3) -1.37/8 29} 55. cxd5 {(c4d5 a2d5 b7d5 d6d5 c3b4 f8f7 b4a3 d5e5 a3d6
e5e3 h4h5) +2.14/11 29} Qxd5 {(a2d5 b7d5 d6d5 h4a4 f8e7 e3e4 d5d7 a4a3
g7g6) -1.45/9 29} 56. Qxd5 {(b7d5 d6d5 c3b4 f8f7 b4a3 f7e6 h4e4 d5e5 e4e5
e6e5 a3b4) +2.11/11 29} Rxd5 {(d6d5 h4a4 f8e7 a4a3 e7e6 a3b3 b6b5 e3e4 d5c5
c1d2) -1.63/10 29} 57. Ra4 {(h4a4 f8e7 a4a3 b6b5 a3a7 d5d7 a7d7 e7d7 c1d2
d7d6 d2d3 d6d5) +2.09/12 29} Rg5 {(d5g5 a4a3 g5g3 c3b4 f8f7 e3e4 g3a3 b4a3
f7e6 c1d2) -1.50/9 29} 58. Rxa3 {(a4a3 f8e7 a3a6 b6b5 c3b4 e7f7 b4d6 g5d5
e3e4 d5d4 a6b6 f7e6) +2.36/12 29} Rg3 {(g5g3 e3e4 f8f7 c3b4 g3a3 b4a3 f7e6
c1d2 g7g6) -1.40/9 29} 59. Kd2 {(c1d2 g3h3 a3b3 h3h2 d2d3 h2h1 b3b6 h1d1
d3e4 f8f7 c3b4 f7g6) +2.50/12 29} Rxh3 {(g3h3 a3b3 h5h4 b3b6 h3h2 d2d3 h4h3
b6b7 h2f2 e3e4) -1.19/9 29} 60. Rb3 {(a3b3 h3g3 b3b6 f8e8 d2d3 e8d7 c3b4
g3g5 b6d6 d7c7 d3d4 g5e5) +2.53/12 29} h4 {(h5h4 b3b6 h3g3 c3b4 f8f7 b6b7
f7e8 c2c4 g7g5 b7e7 e8d8 e3e4) -1.22/9 29} 61. Rxb6 {(b3b6 h3g3 d2d3 g3g5
b6d6 f8f7 d6d4 h4h3 c3b4 h3h2 d4d7 f7e6) +2.60/12 29} Rg3 {(h3g3 c3b4 f8e8
c2c4 h4h3 b6e6 e8f7 e6e7 f7g6 e7a7 h3h2 a7a1) -1.01/9 29} 62. Rb7 {(b6b7
g3g5 c3b4 f8e8 c2c4 f6f5 b4d6 g5g6 b7e7 e8d8 c4c5 g6g5) +3.03/12 29} h3
{(h4h3 c3b4 f8e8 b7b8 e8d7 b8h8 g7g5 h8h7 d7e6 d2d3 g5g4 c2c4) -0.61/9 29}
63. Bb4+ {(c3b4 f8e8 b4d6 h3h2 b7b1 g3g2 d2d3 e8d7 d6f4 d7e6 b1e1) +3.02/11
29} Kg8 {(f8g8 b7b5 g3g2 d2d3 g7g5 b4d6 h3h2 b5b1 g2g1 b1b8) -0.46/8 29}
64. Rb5 {(b7b5 g8f7 b5b7 f7e6 b7e7 e6d5 d2d3 g3g5 e7d7 d5e6 d7d6 e6e5)
+2.71/12 29} Rg4 {(g3g4 b4c3 h3h2 b5h5 g4g2 d2d3 g7g6 h5h3 g8f7 h3h7)
-0.35/9 29} 65. Bc3 {(b4c3 g4g2 d2d3 h3h2 b5h5 g8f7 c3d4 f7e6 h5h8 e6f5
h8h5) +2.68/11 29} g5 {(g7g5 b5b1 h3h2 b1h1 g4g2 d2d3 g8f7 c3d4 g5g4 c2c4)
-0.30/9 29} 66. Rb1 {(b5b1 h3h2 b1h1 g4g2 d2d3 g8f7 h1f1 g2f2 f1e1 f7e6
c3d4 e6d5) +2.73/12 29} Kf7 {(g8f7 b1h1 g4h4 c3d4 g5g4 c2c4 h3h2 c4c5 g4g3)
-0.41/9 29} 67. Rb6 {(b1b6 g4g2 d2d3 g2f2 c3d4 h3h2 b6b1 f7e6 c2c4 e6f5
e3e4) +2.70/11 29} h2 {(h3h2 b6f6 f7e8 f6h6 g4h4 h6g6 h2h1q g6g8 e8e7 g8g7
e7e6 g7g5) +4.48/9 29} 68. Rxf6+ {(b6f6 f7e7 f6h6 g4h4 h6g6 h2h1q g6g5 h1c6
g5e5 e7d6 d2d3 h4h2) -4.04/12 29} Ke8 {(f7e8 f6h6 g4h4 h6g6 h2h1q g6g8 e8d7
g8g7 d7e6 g7g5 h4h2) +4.68/8 29} 69. Rh6 {(f6h6 g4h4 h6g6 h2h1q g6g8 e8d7
g8g5 h1e4 c3e5 h4h7 c2c3 h7e7) -4.08/12 29} Rh4 {(g4h4 h6h4 g5h4 c3e5 h2h1q
c2c4 h1e4 e5d4 e4g2 d2d3 h4h3) +4.98/10 29} 70. Rg6 {(h6g6 h2h1q g6g5 h4h2
d2d3 h1d1 d3c4 d1c2 g5e5 e8d7 c4d4 h2f2) -4.07/12 29} h1=Q {(h2h1q g6g5
h4h2 d2d3 h1d1 d3c4 d1e2 c4b4 e2c2 g5g7 c2b1 b4c5 h2c2) +5.78/9 29} 71.
Rg8+ {(g6g8 e8e7 g8g7 e7e6 g7g6 e6f5 g6f6 f5e4 c3d4 h1g2 d2c3) -4.67/11 29}
Kd7 {(e8d7 g8g5 h4h2 d2d3 h1d1 d3c4 d1e2 c4b4 e2e3 g5d5 d7c6 c3d4 e3e4)
+6.07/8 29} 72. Rxg5 {(g8g5 h4h2 d2d3 h1d1 d3c4 d1e2 c4b4 h2h4 b4b3 e2e3
g5d5) -5.04/11 29} Rh2+ {(h4h2 d2d3 h1d1 d3c4 d1e2 c4b4 e2e3 g5d5 d7c6 c3d4
e3e4) +6.07/7 29} 73. Kd3 {(d2d3 h1f1 d3d4 f1f6 g5e5 h2h4 e3e4 h4h5 d4d5
f6d6 d5c4 h5e5 c3e5) -7.40/13 29} Qf1+ {(h1f1 d3d4 h2h4 e3e4 f1f6 g5e5 h4h5
d4c4 h5e5 c3e5 f6e5) +6.42/7 29} 74. Kd4 {(d3d4 f1f6 g5e5 h2h5 d4d3 h5e5
c3e5 f6e5 e3e4 d7d6 c2c3 e5c5 c3c4) -7.48/13 29} Rh4+ {(h2h4 e3e4 f1f6 g5e5
h4h5 d4c4 h5e5 c3e5 f6e5) +6.42/7 29} 75. e4 {(e3e4 f1f6 g5e5 h4h5 d4d5
f6d6 d5c4 h5e5 c3e5 d6e5 c4d3 d7d6) -7.66/12 29} Qd1+ {(f1d1 d4c5 d1d6 c5c4
d6e6 c4b5 e6e4 g5g7 d7e6 b5b6 e4c2) +6.88/7 29} 76. Kc4 {(d4c4 h4e4 c4b5
d1c2 g5g7 d7d6 g7g6 d6d5 g6g5 d5e6 g5g6 e6d5 g6g5) -6.16/13 29} Rxe4+
{(h4e4 c4b3 d1b1 c3b2 e4e3 c2c3 e3e2 g5g7 d7d6 b3c4 e2b2 c4d4) +8.54/8 29}
77. Kb5 {(c4b5 d1e2 b5a5 e2c2 g5g7 d7d6 g7g6 d6d5 g6g5 d5e6 g5g6 e6d5)
-6.41/12 29} Qf1+ {(d1f1 b5a5 f1c4 c3d2 c4c7 a5a6 c7d6 a6b7 d6d2 g5g7)
+8.77/7 29} 78. Ka5 {(b5a5 f1c4 c3d2 c4c7 a5a6 c7d6 a6b5 d6d2 g5g7 d7d6
g7g6 d6d5) -8.75/12 29} Qc4 {(f1c4 c3d2 c4a4 a5b6 e4e6 b6c5 a4c2 c5b5 c2d2
g5g7 d7d6 b5a4) +9.93/8 29} 79. Bd2 {(c3d2 c4c7 a5a6 e4e6 a6b5 e6b6 b5a4
c7c2 a4a5 c2d2 a5b6) -9.23/11 29} Qa4+ {(c4a4 a5b6 e4e6 b6c5 e6c6 c5d5 a4c4
d5e5 c6e6 e5f5 c4e4) +M5/7 4} 80. Kb6 {(a5b6 a4c6 b6a7 e4e7 g5e5 e7e5 c2c4
e5e8 d2c3 e8a8 h6g7 c4e4) -M5/13 29} Re6+ {(e4e6 b6c5 e6c6 c5d5 a4c4 d5e5
c6e6 e5f5 c4e4) +M4/6 0} 81. Kc5 {(b6c5 e6c6 c5d5 a4c4 d5e5 c6e6 e5f5 c4e4
f7f1 d6d5) -M4/12 29} Rc6 {(e6c6 c5d5 a4c4 d5e5 c6e6 e5f5 c4e4) +M3/5 0
White resigns} 0-1
[/pgn]
Mike Sherwin
Posts: 925
Joined: Fri Aug 21, 2020 1:25 am
Location: Planet Earth, Sol system
Full name: Michael J Sherwin

Re: Progress On Bricabrac

Post by Mike Sherwin »

The dynamically created piece square tables are slowly improving. Here is a nice win by Bric with the black pieces.
[pgn][Event "Computer chess game"]
[Site "DESKTOP-HFVHK2B"]
[Date "2021.05.16"]
[Round "?"]
[White "Tscp181"]
[Black "Bricabrac"]
[Result "0-1"]
[BlackElo "2000"]
[ECO "C10"]
[Opening "French"]
[Time "22:50:45"]
[Variation "Rubinstein, 4...Nf6"]
[WhiteElo "2200"]
[TimeControl "0+30"]
[Termination "normal"]
[PlyCount "128"]
[WhiteType "program"]
[BlackType "program"]

1. e4 {(e2e4 e7e5 g1f3 g8f6 b1c3 b8c6 d2d4 d7d6) +0.18/8 29} e6 {(e7e6 g1f3
d7d5 e4d5 e6d5 d2d4 g8e7 b1d2 d8d6 f1e2 b8d7) -1.11/11 29} 2. d4 {(d2d4
d7d5 b1d2 c8d7 g1f3 b8c6 f1d3 g8f6) +0.18/8 29} d5 {(d7d5 e4d5 e6d5 b1d2
b8d7 g1f3 f8b4 f1e2 b4d2 f3d2) -1.56/10 29} 3. Nd2 {(b1d2 d5e4 d2e4 g8f6
c1g5 f8b4 c2c3 b4e7) +0.26/7 29} dxe4 {(d5e4 d2e4 g8f6 f1b5 c8d7 b5d3 f8b4
c1d2 f6e4 d2b4) -0.86/10 29} 4. Nxe4 {(d2e4 b8c6 f1b5 d8d5 d1d3 f8b4 c2c3
b4d6 b5c6 d5c6) +0.26/7 29} Nf6 {(g8f6 c1g5 b8d7 g1e2 f8b4 c2c3 b4e7 g5f6
d7f6 e4d2) -1.03/10 29} 5. Nxf6+ {(e4f6 d8f6 g1f3 b8c6 c1g5 f6g6 f1d3 f8b4)
+0.43/7 29} Qxf6 {(d8f6 g1f3 b8d7 c1g5 f6f5 f1d3 f5a5 g5d2 a5b6 d2f4 f8d6)
-1.37/11 29} 6. Nf3 {(g1f3 b8c6 f1b5 c8d7 c1g5 f6f5 c2c4) +0.44/7 29} h6
{(h7h6 f1d3 b8d7 e1g1 f8d6 c1e3 e8g8 f3d2 e6e5 d2e4) -0.88/10 29} 7. Bc4
{(f1c4 f8b4 c2c3 b4d6 c1e3 b8c6 e1g1 e8g8) +0.54/7 29} Bd6 {(f8d6 e1g1 b8d7
c4d3 e8g8 c2c4 e6e5 d4e5 d7e5 f3d4) -0.35/10 29} 8. O-O {(e1g1 b8c6 f1e1
c8d7 d4d5 c6e5 f3e5 d6e5) +0.38/7 29} O-O {(e8g8 c1e3 c8d7 f1e1 b8c6 e1e2
a8d8 g1f1 c6e7) +0.16/9 29} 9. Be3 {(c1e3 b8c6 c4d3 c8d7 d3e4 f8d8 f1e1)
+0.36/7 29} Nd7 {(b8d7 f3d2 e6e5 d2e4 f6f5 d1d3 f8e8 f1d1 e5d4) -0.02/9 29}
10. Re1 {(f1e1 e6e5 c4d3 f8d8 c2c4 c7c6 d3e4) +0.46/7 29} a6 {(a7a6 a2a4
d6b4 c2c3 b4d6 f3d2 e6e5 d1c2 g8h8) -0.08/9 29} 11. Bd3 {(c4d3 e6e5 c2c4
f8d8 d3e4 d7b6 d1c1) +0.48/7 29} b5 {(b7b5 f3d2 e6e5 c2c3 g7g5 d4e5 f6e5
d1h5 e5d5 h5e2) -0.20/10 29} 12. a4 {(a2a4 b5b4 d3e4 a8b8 e4c6 f8d8 c6e4)
+0.72/7 29} bxa4 {(b5a4 a1a4 a8b8 d1a1 c8b7 f3d2 e6e5 b2b3 b8a8) -0.14/9
29} 13. Rxa4 {(a1a4 a8b8 b2b3 c8b7 d3a6 b7f3 g2f3) +0.69/7 29} c5 {(c7c5
c2c4 c5d4 f3d4 e6e5 d4b3 a8b8 d1c2 c8b7) -0.17/9 29} 14. dxc5 {(d4c5 d6c5
c2c3 c5e3 e1e3 f8d8 f3d4) +1.11/7 29} Bxc5 {(d6c5 a4a2 c5e3 e1e3 e6e5 b2b3
a8a7 f3d2 d7c5) -0.29/9 29} 15. c3 {(c2c3 f8d8 a4f4 f6e7 e3c5 d7c5 f4d4
c5d3 d1d3) +1.05/7 29} Bxe3 {(c5e3 e1e3 e6e5 b2b4 f6e6 f3d4 e6b6 d4f5 b6e6)
-0.02/9 29} 16. Rxe3 {(e1e3 c8b7 d3h7 g8h7 d1d7 a8b8 b2b3 h7g8) +0.95/7 29}
Nc5 {(d7c5 a4d4 c5d3 d1d3 a8b8 b2b4 f6f5 f3d2 f5d3) -0.28/9 29} 17. Ra2
{(a4a2 f8d8 c3c4 c8b7 f3e5 c5e4 e5f3) +0.99/7 29} Rd8 {(f8d8 d1e2 c5d3 e3d3
c8b7 f3e5 d8d3 e5d3 b7d5) +0.11/9 29} 18. c4 {(c3c4 c8b7 f3e5 a8c8 d1c2
f6g5 d3h7) +0.84/7 29} Bb7 {(c8b7 f3e5 a8c8 a2a3 b7e4 d1c2 f6e5 d3e4 d8d7
c2c3) +0.22/10 29} 19. Ne5 {(f3e5 a8c8 d1c2 c5d3 e5d3 f6g6 e3g3 g6e4)
+0.83/8 29} Rac8 {(a8c8 b2b3 b7e4 d1c2 f6e5 d3e4 c5e4 c2e4 e5e4) +0.07/9
29} 20. Ra3 {(a2a3 f6g5 g2g3 b7e4 f2f4 g5f5 d1c2 c5d3 e5d3) +0.69/7 29} Be4
{(b7e4 d1c2 f6e5 d3e4 c5e4 e3e4 d8d1 c2d1 e5e4) +0.08/9 29} 21. Qe2 {(d1e2
f6e5 d3e4 e5b2 e4h7 g8h7 e2b2 d8d1 e3e1 d1e1) +0.58/8 29} Qxe5 {(f6e5 d3e4
c5e4 e3e4 d8d1 e2d1 e5e4 d1b3 c8c6) +0.18/9 29} 22. Bxe4 {(d3e4 c5e4 g2g3
d8d4 f2f3 c8c4 f3e4 a6a5) -1.34/8 29} Nxe4 {(c5e4 f2f3 c8c4 e3e4 e5c5 e2e3
d8d1 g1f2 d1d2) +1.22/9 29} 23. Rad3 {(g2g3 d8d4 f2f3 c8c4 f3e4 c4c1 g1f2
a6a5) -1.70/7 29} Rxd3 {(d8d3 e2d3 e4c5 d3c3 e5d6 b2b4 c5d7 c3d3 d6e7 e3e2)
+3.27/10 29} 24. Rxd3 {(e3d3 c8b8 d3d2 f7f5 d2c2 e5d4 g1f1 e6e5 f1g1)
-2.38/9 29} Rb8 {(c8b8 f2f3 e5c5 g1f1 e4d6 b2b3 b8b7 e2e3 c5e3 d3e3)
+3.35/10 29} 25. f3 {(f2f3 e5c5 g1f1 e4d6 b2b3 d6f5 e2f2 c5a3 f2c2) -2.35/8
29} Qc5+ {(e5c5 g1f1 e4d6 b2b3 b8c8 e2f2 c5c6 f2d4 d6f5 d4e4 c6c5) +3.51/11
29} 26. Kf1 {(g1f1 e4d6 b2b3 d6b7 e2a2 c5b6 b3b4 b6b4 a2a6) -2.68/8 29} Nf6
{(e4f6 g2g3 c5f5 d3d1 f5c5 d1e1 f6d7 h2h3 b8c8 b2b3) +3.49/10 29} 27. b3
{(b2b3 a6a5 e2f2 c5a3 f2c2 a3a1 f1f2 a1h1 c2d2) -2.36/8 29} Qc7 {(c5c7 f1g1
f6d7 e2e3 d7c5 d3d1 b8b3 e3d4 e6e5 d4d2) +3.86/10 29} 28. Qd1 {(e2d1 c7h2
d3d8 f6e8 d8b8 h2b8 c4c5 e6e5) -2.92/7 29} Qxh2 {(c7h2 d3d8 f6e8 d1d4 e6e5
d4d2 b8d8 d2d8 h2h1 f1f2) +4.03/10 29} 29. Rd8+ {(d3d8 f6e8 d8b8 h2b8 d1d3
e8f6 c4c5 b8b5 d3b5 a6b5) -2.92/8 29} Ne8 {(f6e8 d8b8 h2b8 g2g4 e8f6 d1d3
b8e5 f1f2 e5b2 f2g1 b2e5 g1h1 g8f8) +4.32/13 29} 30. Rxb8 {(d8b8 h2b8 f1f2
e6e5 c4c5 b8b5 d1c2 e8f6) -2.97/8 29} Qxb8 {(h2b8 d1d3 b8e5 b3b4 e8d6 c4c5
d6b5 d3e2 e5d4 e2e4 d4e4 f3e4) +4.06/12 29} 31. Qc2 {(d1c2 g8f8 c4c5 f8e7
f1e2 b8e5 e2d3 e5f5 d3d2 e8f6) -2.99/8 29} Nf6 {(e8f6 c2c3 b8f4 f1e2 f4g3
e2f1 g3f4 f1e2 f6d7 c3e3 f4e5) +4.57/11 29} 32. c5 {(c4c5 b8b5 c2c4 b5c6
f1e2 f6d7 b3b4 a6a5 b4a5 d7c5) -3.08/8 29} Qe5 {(b8e5 c2c4 f6d5 c4a6 d5e3
f1e2 e5c5 g2g3 c5e5 a6d3 e3d5) +4.87/11 29} 33. Qc4 {(c2c4 f6d5 f1g1 e5e3
g1h2 e3f2 c5c6 d5e3 c4a6 f2g2) -3.07/8 29} Qe3 {(e5e3 c5c6 f6h5 c4h4 e3c1
f1f2 c1d2 f2f1 h5f4 h4f2 d2d5) +4.49/11 29} 34. Qxa6 {(c4a6 e3c1 f1e2 c1c2
e2f1 c2c5 a6c4 c5d6 b3b4 e6e5) -3.65/8 29} Qxc5 {(e3c5 a6c4 c5e5 c4c8 g8h7
c8c4 g7g5 c4e2 e5f5 e2c4 f6d5) +5.01/11 29} 35. Qc4 {(a6c4 c5d5 c4c8 g8h7
c8c2 g7g6 f1e2 e6e5 c2d3 d5d3 e2d3 h7g7) -3.61/9 29} Qd6 {(c5d6 f1f2 f6d5
c4c8 g8h7 c8c4 h7g6 c4d4 e6e5 d4e4 g6f6) +4.80/11 29} 36. b4 {(b3b4 d6d1
f1f2 d1d2 f2g1 f6d5 c4c8 g8h7 b4b5 d2e1 g1h2 h7g6) -3.60/8 29} Nd5 {(f6d5
c4c8 g8h7 c8c2 f7f5 c2c5 d6e5 g2g4 h7g6 f1f2 g6f6) +4.70/11 29} 37. Qc8+
{(c4c8 d6f8 c8f8 g8f8 b4b5 e6e5 g2g3 f8e7 f1e2 e7e6) -3.58/8 29} Qf8 {(d6f8
c8c5 d5b4 c5d4 b4d5 g2g3 f7f5 f1e2 f8f6 d4f6 g7f6 e2d3 g8f7 d3d4) +5.51/14
29} 38. Qxf8+ {(c8f8 g8f8 b4b5 f8e7 g2g3 e7d6 f1e2 d5c3 e2d3 c3b5 d3c4
b5c7) -4.86/10 29} Kxf8 {(g8f8 b4b5 f8e7 f1e2 e7d6 e2d3 d6c5 d3e4 c5b5 e4d4
b5c6 d4e4 c6c5 e4e5) +5.75/14 29} 39. b5 {(b4b5 f8e7 g2g3 e7d6 f1e2 d5c3
e2d3 c3b5 d3c4 b5c7 c4d3 d6e5 d3c4) -4.96/12 29} Ke7 {(f8e7 f1e2 e7d6 e2d3
d6c5 d3e4 c5b5 e4d4 b5c6 d4e4 c6c5 e4e5 c5c4) +6.59/13 29} 40. g3 {(g2g3
e7d6 f1e1 d6c5 e1d2 e6e5 d2d3 f7f5 b5b6 d5b6 d3e3) -5.02/11 29} Kd7 {(e7d7
f1e2 d7d6 e2d3 d6c5 d3e4 c5b5 e4d4 b5c6 g3g4 c6d6 d4e4 d6c5) +6.24/13 29}
41. Ke1 {(f1e1 d7d6 e1d2 d6c5 d2d3 f7f5 b5b6 d5b6 f3f4 b6d5) -4.91/10 29}
Kd6 {(d7d6 e1d2 d6c5 d2d3 c5b5 d3d4 b5c6 d4e4 c6c5 e4e5 c5c4 e5e4 c4c5)
+6.24/13 29} 42. Kd2 {(e1d2 d6c5 d2d3 h6h5 b5b6 d5b6 d3e4 g7g5 e4e3 h5h4
e3f2 h4g3 f2g3) -5.23/11 29} f5 {(f7f5 g3g4 f5g4 f3g4 d5f6 d2e3 f6g4 e3d4
g4e5 d4e4 h6h5 e4d4 h5h4 d4e4) +6.04/14 29} 43. Kc2 {(d2c2 d6c5 c2d3 e6e5
b5b6 d5b6 d3d2 g7g5 d2e3 f5f4 e3f2 f4g3 f2g3) -5.62/11 29} h5 {(h6h5 c2d2
d6c5 d2d3 e6e5 b5b6 c5b6 f3f4 e5f4 d3c4 b6c6 g3f4 c6d6 c4d4) +6.43/14 29}
44. Kd3 {(c2d3 d6c5 b5b6 d5b6 d3e2 e6e5 e2f2 g7g5 f2e2 f5f4 e2f2 f4g3 f2g3)
-5.91/11 29} Kc5 {(d6c5 f3f4 g7g6 b5b6 d5b6 d3e3 b6d5 e3f3 c5d4 f3f2 d4e4
f2e2 e6e5 f4e5) +6.34/14 29} 45. b6 {(b5b6 d5b6 d3e2 c5d4 e2f2 e6e5 f2e2
e5e4 f3e4 f5e4 e2d2) -6.04/11 29} Nxb6 {(d5b6 d3e3 g7g5 e3f2 b6c4 f3f4 g5f4
g3f4 c5d4 f2f3 e6e5 f3g3 d4e4 g3h4) +6.52/14 29} 46. Ke2 {(d3e2 c5d4 e2f2
b6d5 f2e2 d5c3 e2f2 e6e5 f2f1 e5e4 f3e4 f5e4) -6.29/11 29} Kd4 {(c5d4 e2d2
b6d5 d2e2 g7g5 e2d2 d5b4 d2e2 b4d3 e2d2 d3e5 d2e2 f5f4 g3f4) +6.98/14 29}
47. Kf2 {(e2f2 e6e5 f2e2 b6d5 e2f2 d4d3 f2g2 d3e3 g2h3 e3f3 h3h4) -7.06/11
29} Nc4 {(b6c4 f2e2 g7g5 e2f2 f5f4 g3f4 g5f4 f2e2 h5h4 e2f2 c4e5 f2e2 d4d5
e2d2) +7.33/14 29} 48. f4 {(f3f4 d4e4 f2e2 c4d6 e2f2 h5h4 g3h4 e4f4 f2e2
f4g4 e2d3 g4h4) -6.85/11 29} Nd2 {(c4d2 f2e2 d2e4 e2f3 g7g6 f3e2 e4g3 e2f3
g3e4 f3e2 h5h4 e2f3 h4h3 f3e2) +8.43/14 29} 49. Ke2 {(f2e2 d2e4 e2f3 g7g6
f3g2 d4e3 g2h3 e3f3 h3h4 f3g2 g3g4 f5g4) -7.16/12 29} Ne4 {(d2e4 e2f3 d4d3
f3g2 d3e3 g2h2 e3f3 h2h3 e4g3 h3h4 g3e4 h4h5 f3f4 h5g6) +7.92/14 29} 50.
Kf3 {(e2f3 g7g6 f3e2 e4g3 e2f3 g3e4 f3e2 e4c3 e2f3 c3d5 f3f2 d5f4 f2f3)
-9.09/11 29} g6 {(g7g6 f3g2 d4d3 g2f3 d3d4 f3e2 e4g3 e2f3 g3e4 f3e2 h5h4
e2f3 h4h3 f3e2) +8.03/14 29} 51. Kg2 {(f3g2 d4e3 g2h3 e3f2 h3h4 f2f3 g3g4
f5g4 f4f5 g6f5 h4h5 e6e5) -8.40/12 29} Ke3 {(d4e3 g2h3 e3f2 h3h4 f2f3 g3g4
f5g4 f4f5 g6f5 h4h5 f3e3 h5g6 e3d4 g6f7) +8.09/14 29} 52. Kh3 {(g2h3 e4d2
h3g2 e3e2 g2g1 e2f3 g1h2 d2e4 h2h3 e4g3 h3h4 f3f4) -9.04/11 29} Kf2 {(e3f2
h3h4 e4d2 h4g5 f2g3 g5g6 h5h4 g6f6 h4h3 f6e6 h3h2 e6f5 d2c4 f5e4) +11.76/14
29} 53. Kh4 {(h3h4 e4d2 h4g5 f2g3 g5g6 h5h4 g6f6 h4h3 f6e6 h3h2 e6f5 h2h1q)
-10.34/12 29} Nd2 {(e4d2 h4g5 f2g3 g5g6 h5h4 g6f6 h4h3 f6e5 d2e4 e5e6 g3f4
e6d5 h3h2 d5d4) +14.57/14 29} 54. Kg5 {(h4g5 f2g3 g5g6 h5h4 g6g7 g3f4 g7f7
h4h3 f7e6 h3h2 e6d5 h2h1q) -13.36/12 29} Kxg3 {(f2g3 g5g6 h5h4 g6f6 h4h3
f6e6 g3f4 e6d6 d2e4 d6d5 h3h2 d5d4 h2h1q d4d5) +14.44/14 29} 55. Kxg6
{(g5g6 h5h4 g6f7 g3f4 f7e6 f4e4 e6d6 h4h3 d6c5 h3h2 c5b4 e4d4 b4b5 h2h1q)
-13.66/13 29} h4 {(h5h4 g6g7 g3f4 g7f6 e6e5 f6e6 d2e4 e6d7 h4h3 d7e6 h3h2
e6d7 h2h1q d7e6) +15.63/14 29} 56. Kf6 {(g6f6 g3f4 f6e6 f4e4 e6e7 f5f4 e7d6
h4h3 d6c5 h3h2 c5b4 e4d4 b4b5 h2h1q) -13.89/13 29} Kxf4 {(g3f4 f6e6 h4h3
e6d5 h3h2 d5d4 h2h1q d4c5 h1e4 c5d6 d2c4 d6c5 c4e5 c5d6) +16.76/14 29} 57.
Kxe6 {(f6e6 f4e4 e6e7 f5f4 e7d6 h4h3 d6c5 h3h2 c5b4 h2h1q b4c3 d2f3)
-13.94/12 29} h3 {(h4h3 e6d5 h3h2 d5d4 h2h1q d4c3 h1d5 c3b4 d2e4 b4a4 f4e5
a4a3 d5d4 a3b3) +17.08/14 29} 58. Kd5 {(e6d5 f4e3 d5c6 f5f4 c6b7 f4f3 b7c7
h3h2 c7d6 f3f2 d6d5 h2h1q) -14.05/11 29} h2 {(h3h2 d5d4 h2h1q d4c5 h1e4
c5d6 d2c4 d6d7 c4e3 d7d6 e3d5 d6c5 f4e5) +17.06/13 29} 59. Kd4 {(d5d4 h2h1q
d4c3 h1c1 c3d3 d2b3 d3e2 c1d2 e2f1 f4e5 f1g1 f5f4) -14.19/10 29} h1=Q
{(h2h1q d4d3 f4g3 d3d2 f5f4 d2d3 f4f3 d3e3 f3f2 e3e2 h1g2 e2d3) +18.20/12
29} 60. Kc3 {(d4c3 h1c1 c3d3 d2b3 d3e2 c1d2 e2f1 f4e5 f1g1 f5f4) -14.19/8
29} Ke3 {(f4e3 c3b4 f5f4 b4c5 f4f3 c5d5 f3f2 d5d6 h1e4 d6c5 f2f1q)
+23.74/11 29} 61. Kb4 {(c3b4 h1d5 b4a4 d5b3 a4a5 d2c4 a5a6 b3b6) -M4/7 0}
Qd5 {(h1d5 b4a4 d5b3 a4a5 d2c4 a5a6 b3b6 e5d6 d2f3 d6c5) +M4/11 29} 62. Ka4
{(b4a4 d5b3 a4a5 d2c4 a5a6 b3b6) -M3/5} Qb3+ {(d5b3 a4a5 d2c4 a5a6 b3b6
a4b4 d2e4 b4a4) +M3/11 29} 63. Ka5 {(a4a5 d2c4 a5a6 b3b6) -M2/3} Nc4+
{(d2c4 a5a6 b3b6 a6b6) +M2/11 29} 64. Ka6 {(a5a6 b3b6) -M1/2} Qb6# {(b3b6
a6a5) +M1/12 29} 0-1
[/pgn]

With only this code.

Code: Select all

void InitSearch(Thread* t) {
  u64 bb, cc, b, a, pieces, allPieces;
  u32 sq;
  u64 i, col, cenCol, row, cenRow;
  SplitBB blocks;

  allPieces = piece[WHITE] | piece[BLACK];

  for (i = A1; i <= H8; i++) {
    col = i & 7;
    row = i >> 3;
    cenCol = col < 4 ? col : 7 - col;
    cenRow = row < 4 ? row : 7 - row;

    // white pawns
    wpPST[i] = 0;
    
    // black pawns
    bpPST[i] = 0;

    // white knights
    wnPST[i] = 0;
    bb = knightMoves[i] & ~piece[WHITE];
    while (bb) {
      _BitScanForward64(&sq, bb);
      bb ^= one << sq;
      if (!AtkByBlack(t, one << sq)) {
        cc = knightMoves[sq] & ~piece[WHITE];
        while (cc) {
          _BitScanForward64(&sq, cc);
          cc ^= one << sq;
          wnPST[i] += (one - AtkByBlack(t, one << sq)) * (one + cenCol * cenRow);
        }
      }
    }
    wnPST[i] /= 2;

    // black knights
    bnPST[i] = 0;
    bb = knightMoves[i] & ~piece[BLACK];
    while (bb) {
      _BitScanForward64(&sq, bb);
      bb ^= one << sq;
      if (!AtkByWhite(t, one << sq)) {
        cc = knightMoves[sq] & ~piece[BLACK];
        while (cc) {
          _BitScanForward64(&sq, cc);
          cc ^= one << sq;
          bnPST[i] += (one - AtkByWhite(t, one << sq)) * (one + cenCol * cenRow);
        }
      }
    }
    bnPST[i] /= 2;

    // bishops
    blocks.bb = allPieces & b7e[i];
    blocks.bb = ((blocks.l32 >> 8) | blocks.h32);
    bb = bss[i][blocks.r1][0]
       & bss[i][blocks.r2][1]
       & bss[i][blocks.r3][2];

    // white bishops
    wbPST[i] = 0;
    b = bb & ~piece[WHITE];
    while (b) {
      _BitScanForward64(&sq, b);
      b ^= one << sq;
      if (!AtkByBlack(t, one << sq)) {
        blocks.bb = allPieces & b7e[sq];
        blocks.bb = ((blocks.l32 >> 8) | blocks.h32);
        cc = bss[sq][blocks.r1][0]
           & bss[sq][blocks.r2][1]
           & bss[sq][blocks.r3][2]
           & ~piece[WHITE];
        while (cc) {
          _BitScanForward64(&sq, cc);
          cc ^= one << sq;
          wbPST[i] += (one - AtkByBlack(t, one << sq)) * (one + cenCol * cenRow);
        }
      }
    }
    wbPST[i] /= 4;

    // black bishops
    bbPST[i] = 0;
    b = bb & ~piece[BLACK];
    while (b) {
      _BitScanForward64(&sq, b);
      b ^= one << sq;
      if (!AtkByWhite(t, one << sq)) {
        blocks.bb = allPieces & b7e[sq];
        blocks.bb = ((blocks.l32 >> 8) | blocks.h32);
        cc = bss[sq][blocks.r1][0]
           & bss[sq][blocks.r2][1]
           & bss[sq][blocks.r3][2]
           & ~piece[BLACK];
        while (cc) {
          _BitScanForward64(&sq, cc);
          cc ^= one << sq;
          bbPST[i] += (one - AtkByWhite(t, one << sq)) * (one + cenCol * cenRow);
        }
      }
    }
    bbPST[i] /= 4;

    // rooks
    blocks.bb = allPieces & rob[i];
    bb = qss[i][(blocks.bb >> (i & 56)) & 127][0]
       & qss[i][blocks.r2][1]
       & qss[i][blocks.r3][2]
       & qss[i][blocks.r4][3]
       & qss[i][blocks.r5][4]
       & qss[i][blocks.r6][5]
       & qss[i][blocks.r7][6]
       & rob[i];

    // white rooks
    wrPST[i] = 0;
    b = bb & ~piece[WHITE];
    while (b) {
      _BitScanForward64(&sq, b);
      b ^= one << sq;
      if (!AtkByBlack(t, one << sq)) {
        blocks.bb = allPieces & rob[sq];
        cc = qss[sq][(blocks.bb >> (i & 56)) & 127][0]
          & qss[sq][blocks.r2][1]
          & qss[sq][blocks.r3][2]
          & qss[sq][blocks.r4][3]
          & qss[sq][blocks.r5][4]
          & qss[sq][blocks.r6][5]
          & qss[sq][blocks.r7][6]
          & rob[sq]
          & ~piece[WHITE];
        while (cc) {
          _BitScanForward64(&sq, cc);
          cc ^= one << sq;
          wrPST[i] += (one - AtkByBlack(t, one << sq)) * (one + cenCol + (row == 6));
        }
      }
    }
    wrPST[i] /= 6;

    // black rooks
    brPST[i] = 0;
    b = bb & ~piece[BLACK];
    while (b) {
      _BitScanForward64(&sq, b);
      b ^= one << sq;
      if (!AtkByWhite(t, one << sq)) {
        blocks.bb = allPieces & rob[sq];
        cc = qss[sq][(blocks.bb >> (i & 56)) & 127][0]
          & qss[sq][blocks.r2][1]
          & qss[sq][blocks.r3][2]
          & qss[sq][blocks.r4][3]
          & qss[sq][blocks.r5][4]
          & qss[sq][blocks.r6][5]
          & qss[sq][blocks.r7][6]
          & rob[sq]
          & ~piece[BLACK];
        while (cc) {
          _BitScanForward64(&sq, cc);
          cc ^= one << sq;
          brPST[i] += (one - AtkByWhite(t, one << sq)) * (one + cenCol + (row == 1));
        }
      }
    }
    brPST[i] /= 6;

    // queens
    blocks.bb = allPieces & rob[i];
    bb = qss[i][(blocks.bb >> (i & 56)) & 127][0]
      & qss[i][blocks.r2][1]
      & qss[i][blocks.r3][2]
      & qss[i][blocks.r4][3]
      & qss[i][blocks.r5][4]
      & qss[i][blocks.r6][5]
      & qss[i][blocks.r7][6];

    // white queens
    wqPST[i] = 0;
    b = bb & ~piece[WHITE];
    while (b) {
      _BitScanForward64(&sq, b);
      b ^= one << sq;
      if (!AtkByBlack(t, one << sq)) {
        blocks.bb = allPieces & (rob[sq] | bob[sq]);
        cc = qss[sq][(blocks.bb >> (i & 56)) & 127][0]
          & qss[sq][blocks.r2][1]
          & qss[sq][blocks.r3][2]
          & qss[sq][blocks.r4][3]
          & qss[sq][blocks.r5][4]
          & qss[sq][blocks.r6][5]
          & qss[sq][blocks.r7][6]
          & ~piece[WHITE];
        while (cc) {
          _BitScanForward64(&sq, cc);
          cc ^= one << sq;
          wqPST[i] += (one - AtkByBlack(t, one << sq)) * (one + cenCol * cenRow);
        }
      }
    }
    wqPST[i] /= 16;

    // black queens
    bqPST[i] = 0;
    b = bb & ~piece[BLACK];
    while (b) {
      _BitScanForward64(&sq, b);
      b ^= one << sq;
      if (!AtkByWhite(t, one << sq)) {
        blocks.bb = allPieces & (rob[sq] | bob[sq]);
        cc = qss[sq][(blocks.bb >> (i & 56)) & 127][0]
          & qss[sq][blocks.r2][1]
          & qss[sq][blocks.r3][2]
          & qss[sq][blocks.r4][3]
          & qss[sq][blocks.r5][4]
          & qss[sq][blocks.r6][5]
          & qss[sq][blocks.r7][6]
          & ~piece[BLACK];
        while (cc) {
          _BitScanForward64(&sq, cc);
          cc ^= one << sq;
          bqPST[i] += (one - AtkByWhite(t, one << sq)) * (one + cenCol * cenRow);
        }
      }
    }
    bqPST[i] /= 16;

    // white king
    wkPST[i] = (s32)(((2000 - mat[BLACK]) / 200) * cenCol * cenRow);

    // black king
    bkPST[i] = (s32)(((2000 - mat[WHITE]) / 200) * cenCol * cenRow);
  }

  // white pawn specifics
  wpPST[E2] -= (board[F1] == WB) * 30;
  wpPST[D2] -= (board[C1] == WB) * 30;
  wpPST[D4] += (board[F1] == WB) * 20;
  wpPST[E4] += (board[C1] == WB) * 30;
  wpPST[C4] += (board[D4] == WP) * 30;

  // black pawn specifics
  bpPST[E7] -= (board[F8] == BB) * 30;
  bpPST[D7] -= (board[C8] == BB) * 30;
  bpPST[D5] += (board[F8] == BB) * 20;
  bpPST[E5] += (board[C8] == BB) * 30;
  bpPST[C5] += (board[D5] == BP) * 30;

  // white knight specifics
  wnPST[G1] -= (board[E1] == WC) * 30;
  wnPST[B1] -= (board[E1] == WC) * 20;
  wnPST[C3] -= (board[C2] == WP) * 20;
  wnPST[D2] += (board[C2] == WP) * 20;

  // black knight specifics
  bnPST[G8] -= (board[E8] == BC) * 30;
  bnPST[B8] -= (board[E8] == BC) * 20;
  bnPST[C6] -= (board[C7] == BP) * 20;
  bnPST[D7] += (board[C7] == BP) * 20;

  // white bishop specifics
  wbPST[F1] -= (board[E1] == WC) * 20;
  wbPST[E3] -= (board[E2] == WP) * 20;
  wbPST[D3] -= (board[D2] == WP) * 20;
  wbPST[G2] += (((board[E2] == WP) + (board[D3] == WP) + (board[C4] == WP)) > 1) * 20;
  wbPST[B2] += (((board[D2] == WP) + (board[E3] == WP) + (board[F4] == WP)) > 1) * 30;

  // black bishop specifics
  bbPST[F8] -= (board[E8] == BC) * 20;
  bbPST[E6] -= (board[E7] == BP) * 20;
  bbPST[D6] -= (board[D7] == BP) * 20;
  bbPST[G8] += (((board[E8] == BP) + (board[D6] == BP) + (board[C5] == BP)) > 1) * 20;
  bbPST[B8] += (((board[D8] == BP) + (board[E6] == BP) + (board[F5] == BP)) > 1) * 30;

  // white rook specifics

  // black rook specifics

  // white queen specifics
  wqPST[D1] += (board[G1] == WN) * 20;
  wqPST[D1] += (board[F1] == WB) * 20;
  wqPST[D1] += (board[B1] == WN) * 20;
  wqPST[D1] += (board[C1] == WB) * 20;

  // black queen specifics
  bqPST[D1] += (board[G8] == BN) * 20;
  bqPST[D1] += (board[F8] == BB) * 20;
  bqPST[D1] += (board[B8] == BN) * 20;
  bqPST[D1] += (board[C8] == BB) * 20;
  // white king specifics
  wkPST[G1] += (board[E1] == WC) * 40;
  wkPST[C1] += (board[E1] == WC) * 30;

  // black king specifics
  bkPST[G8] += (board[E8] == BC) * 40;
  bkPST[C8] += (board[E8] == BC) * 30;

  pos[WHITE] = 0;
  pos[BLACK] = 0;
  mat[WHITE] = 0;
  mat[BLACK] = 0;

  pieces = piece[WHITE];
  while (pieces) {
    _BitScanForward64(&sq, pieces);
    pieces ^= one << sq;
    mat[WHITE] += value[board[sq]];
    pos[WHITE] += pcePST[board[sq]][sq];
  }

  pieces = piece[BLACK];
  while (pieces) {
    _BitScanForward64(&sq, pieces);
    pieces ^= one << sq;
    mat[BLACK] += value[board[sq]];
    pos[BLACK] += pcePST[board[sq]][sq];
  }
}
While I am working on the eval all reductions have been removed from the search. The following 30 second search is without any reductions or extensions.
r n b q k b n r
p p p p p p p p
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
P P P P P P P P
R N B Q K B N R

Hash Key = 7f1909a61f366a6b
Hash Sig = 18ad3ae65ae07f66
Pawn Sig = 1e34638761d25930
Reps = 1
Enter Command(w):
st 30
r n b q k b n r
p p p p p p p p
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
P P P P P P P P
R N B Q K B N R

Hash Key = 7f1909a61f366a6b
Hash Sig = 18ad3ae65ae07f66
Pawn Sig = 1e34638761d25930
Reps = 1
Enter Command(w):
go

Begin Depth 1
1 140 0 40 e2e4

Begin Depth 2
2 80 0 466 e2e4 e7e5

Begin Depth 3
3 138 0 3364 d2d4 g8f6 b1d2

Begin Depth 4
4 79 0 27519 d2d4 d7d5 b1d2 d8d6

Begin Depth 5
5 139 1 95545 d2d4 d7d5 b1d2 d8d6 e2e4

Begin Depth 6
6 72 3 279938 d2d4 d7d5 b1d2 d8d6 e2e4 b8d7

Begin Depth 7
7 119 8 740638 g1f3 g8f6 d2d3 d7d5 b1d2 d8d6 e2e4

Begin Depth 8
8 52 23 2108442 g1f3 g8f6 d2d3 d7d5 b1d2 d8d6 e2e4 b8d7

Begin Depth 9
9 105 86 7870267 g1f3 g8f6 d2d4 d7d5 c1f4 b8d7 b1d2 e7e6 f3e5

Begin Depth 10
10 71 357 33201011 d2d4 g8f6 g1f3 d7d5 c1f4 b8d7 b1d2 e7e6 f3e5 f8e7

Begin Depth 11
11 101 1754 161255692 d2d4 g8f6 g1f3 d7d5 c1f4 b8d7 b1d2 e7e6 e2e3 f8d6 f1e2

Begin Depth 12

Move Played: D2D4 Score: 101
r n b q k b n r
p p p p p p p p
. . . . . . . .
. . . . . . . .
. . . P . . . .
. . . . . . . .
P P P . P P P P
R N B Q K B N R

Hash Key = 48253709139775da
Hash Sig = 4a8c4afe51a00eb7
Pawn Sig = 1f1b4f1933b872df
Reps = 1
ep square = 19
Enter Command(b):

All the hash signatures including the pawn evaluation signatures are correctly being maintained. The pawn hash table and the main hash table have not been created yet. Nor has null move been implemented. They will be added soon! The node rate has taken a hit but it is still above 9 million nodes per second on a 3950x at 4.2 GHz. :D
Mike Sherwin
Posts: 925
Joined: Fri Aug 21, 2020 1:25 am
Location: Planet Earth, Sol system
Full name: Michael J Sherwin

Re: Progress On Bricabrac

Post by Mike Sherwin »

I have not done much except tuning what I had so far. Well, I did normalize the range for each piece type which seemed to help. After I started the current match I had to leave for a couple of hours. When I got back I was expecting the usual -131 give or take. Only 23 games have been played so far but also this is the first time with the new eval Bric has been even with TSCP, Bricabrac - Tscp181 : 11.5/23 10-10-3 (11000=001=1001110100=11) 50% ±0 ! I'll show the longest win by Bric and the shortest.
[pgn][Event "BPz2"]
[Site "DESKTOP-HFVHK2B"]
[Date "2021.05.20"]
[Round "18"]
[White "Tscp181"]
[Black "Bricabrac"]
[Result "0-1"]
[BlackElo "2200"]
[ECO "B52"]
[Opening "Sicilian"]
[Time "14:49:14"]
[Variation "3.Bb5+ Bd7"]
[WhiteElo "2200"]
[TimeControl "0+2"]
[Termination "normal"]
[PlyCount "280"]
[WhiteType "human"]
[BlackType "human"]

1. e4 c5 2. Nf3 d6 3. Bb5+ Bd7 {(c8d7 b5c4 e7e5 d2d3 f8e7 e1g1 g8f6 b1c3
e8g8 c1g5) -0.80/10 1} 4. Bc4 {(b5c4 e7e5 b1c3 b8c6 e1g1 g8f6 d2d3) +0.47/7
1} Nf6 {(g8f6 b1c3 b7b5 c3b5 f6e4 b5c3 d7f5 c3d5) -0.50/8 1} 5. Nc3 {(b1c3
b8c6 e1g1 d7g4 d2d3 e7e5) +0.47/6 1} b5 {(b7b5 c3b5 f6e4 d2d4 d8a5 c1d2
e4d2 d1d2) -1.08/8 1} 6. Nxb5 {(c3b5 f6e4 d2d3 e4f6 e1g1 e7e5) +0.89/6 2}
Nxe4 {(f6e4 d1e2 d7c6 d2d3 d8a5 c2c3 d6d5 c4d5) -0.72/8 1} 7. O-O {(e1g1
e7e5 d1e2 f7f5 d2d3 e4f6) +0.83/6 1} e6 {(e7e6 b5c3 d6d5 c3e4 d5e4 f3e5
b8c6 f2f4) +0.28/8 1} 8. d3 {(d2d3 e4f6 c1f4 e6e5 f1e1 b8c6) +0.89/6 1} Nf6
{(e4f6 c1f4 d8b6 a2a4 f6d5 c4d5 e6d5 f1e1) +0.19/8 1} 9. Bf4 {(c1f4 e6e5
f1e1 f8e7 f4g5 d7b5 c4b5) +0.90/6 1} Qb6 {(d8b6 a2a4 f6h5 a4a5 b6c6 f3d4
c5d4 d1h5) -0.57/8 1} 10. a4 {(a2a4 f8e7 a4a5 b6c6 d3d4 e8g8 d4c5 d6c5)
+0.87/6 1} a6 {(a7a6 a4a5 b6c6 b5c3 f6h5 d1d2 h5f4 d2f4) -0.45/8 1} 11. a5
{(a4a5 b6c6 b5c3 f8e7 d3d4 e8g8) +0.89/6 1} Qc6 {(b6c6 b5c3 c6b7 f1e1 b7b2
c3e4 f6e4 e1e4) -0.90/8 1} 12. Nc3 {(b5c3 d6d5 c4b3 f8d6 f3e5 d6e5 f4e5)
+0.84/6 1} Be7 {(f8e7 f1e1 f6d5 c4d5 e6d5 d3d4 d7e6 e1e2) -0.57/8 1} 13.
Bg5 {(f4g5 e8g8 c3e4 f6e4 d3e4 e7g5 f3g5) +0.79/5 1} Qb7 {(c6b7 a1a3 b8c6
a3b3 b7c8 f1e1 c6a5) -0.10/7 1} 14. Bxf6 {(g5f6 e7f6 c3e4 b7b2 e4d6)
+0.84/5 1} Bxf6 {(e7f6 c3e4 f6e7 c4b3 f7f5 e4g5 d6d5 c2c4) +0.35/8 2} 15.
Ne4 {(c3e4 f6e7 a1a3 e8g8 a3b3 b7c6) +0.76/6 1} Be7 {(f6e7 c4b3 e8g8 d1d2
f8e8 d2f4 d6d5 e4c3) +0.80/8 1} 16. Bb3 {(c4b3 e8g8 f1e1 d6d5 e4c3) +0.58/5
1} Nc6 {(b8c6 d1d2 d6d5 e4g3 e8c8 g3h5 g7g6 h5f4) +0.85/8 1} 17. Re1 {(f1e1
d6d5 e4c3 e8g8 d3d4 c5d4 f3d4 c6d4 d1d4) +0.39/5 1} O-O {(e8g8 d3d4 f7f5
e4g3 f5f4 g3e4 f8e8) +1.08/7 1} 18. d4 {(d3d4 c5c4 b3c4 d6d5 c4a6 a8a6)
+0.27/5 2} Rad8 {(a8d8 d4d5 e6d5 d1d5 d7e6 d5d3 d6d5) +1.00/7 2} 19. dxc5
{(d4c5 d6d5 e4d6 b7b4 d1d2 b4c5) +0.39/5 1} d5 {(d6d5 e4d6 b7c7 c2c4 c6a5
c4d5 a5b3 d1b3) +0.43/8 1} 20. Nd6 {(e4d6 e7d6 c5d6 d7e8 c2c4 d8d6 c4d5
e6d5 b3d5 b7b2 d5f7) +1.06/6 1} Qa7 {(b7a7 d1d3 e7f6 d3e3 f6b2 a1a2 d5d4
e3f4) +0.13/8 1} 21. Qd3 {(d1d3 d7c8 b3d5 e6d5 d3d5 c8b7) +1.30/6 1} Rb8
{(d8b8 d3e3 a7c7 f3d4 c6d4 e3d4 e7d6) -0.53/7 1} 22. Qe3 {(d3e3 a7c7 e3f4
b8b5 a1d1 b5c5) +0.39/5 1} Bf6 {(e7f6 g2g4 f6b2 a1a2 d5d4 e3f4) -0.10/6 2}
23. Red1 {(e1d1 f6b2 a1a2 d5d4 e3d3) +0.39/5 2} Bxb2 {(f6b2 a1a2 b2f6 g2g4
d5d4 f3d4 f6d4) +0.29/7 1} 24. Ra2 {(a1a2 b2f6 a2a4 d5d4 f3d4 c6d4 a4d4
f6d4 e3d4) -0.21/6 1} Bf6 {(b2f6 g2g4 c6b4 g4g5 b4a2 g5f6 a2b4 c2c3)
+1.06/8 2} 25. Ra3 {(a2a3 d5d4 f3d4 c6d4 d1d4 f6d4 e3d4) -0.36/5 1} d4
{(d5d4 f3d4 c6d4 d6e4 d4b3 e4f6 g7f6) +0.61/7 1} 26. Qc1 {(e3c1 a7c5 d6e4
c5f5 e4f6 f5f6 b3c4) -1.20/6 2} Be7 {(f6e7 a3a2 a7c5 d6e4 c5f5 e4g3 f5c5
g3e4) +0.86/8 1} 27. Ra4 {(a3a2 a7c5 d6e4 c5f5 d1e1) -1.15/5 1} Qxc5 {(a7c5
d6e4 c5f5 e4g3 f5c5 f3d4 c6a5) +0.74/7 2} 28. Ne4 {(d6e4 c5a7 f3d4 e6e5
d4c6 d7c6) -0.01/6 1} Qa7 {(c5a7 f3d4 e7b4 d4f3 c6a5 a4a2 f7f5 e4d2)
+1.60/8 1} 29. Nxd4 {(f3d4 e7b4 d4f3 c6a5 a4a1) -0.76/5 1} Bb4 {(e7b4 d4e6
f7e6 c1g5 c6d4 a4a2 d4b3) +2.05/7 1} 30. Nf3 {(d4f3 c6a5 a4a2 d7c6 c1f4
f8d8) -0.96/6 2} Nxa5 {(c6a5 a4a2 f7f5 e4d6 a5b3 c2b3 f5f4) +2.71/7 1} 31.
Ra1 {(a4a1 d7c6 c1f4 c6e4 f4e4 f8c8) -0.96/6 1} Bc6 {(d7c6 c1f4 a5b3 c2b3
f7f5 e4d2 c6d5 f4e5) +2.06/8 2} 32. Qf4 {(c1f4 c6e4 f4e4 b4c3 a1a3 f8c8)
-1.01/6 1} Nxb3 {(a5b3 c2b3 a7b7 d1d4 f7f5 e4d6 b4d6 d4d6) +2.30/8 1} 33.
cxb3 {(c2b3 c6e4 f4e4 b4c3 a1a3 f8d8) -0.89/6 1} Qb7 {(a7b7 d1d4 f7f5 e4d6
b4d6 d4d6 f8e8) +1.78/7 1} 34. Rd4 {(d1d4 f7f5 e4d6 b4d6 d4d6 c6f3 g2f3
b7b3 d6a6) -1.40/6 1} f5 {(f7f5 e4d6 b4d6 d4d6 c6f3 g2f3 b7b3 d6a6) +1.71/8
1} 35. Nd6 {(e4d6 b4d6 f4d6 c6f3 d6e6 b7f7 e6f7 g8f7 g2f3 b8b3 a1a6 b3f3)
-1.36/6 1} Bxd6 {(b4d6 f4d6 c6f3 d6e6 b7f7 e6f7 f8f7 g2f3) +1.36/8 1} 36.
Qxd6 {(f4d6 c6f3 d6e6 g8h8 g2f3 f8f6 e6e2 b7b3 a1a6 f6a6 e2a6 b3f3) -1.38/6
1} Bxf3 {(c6f3 d6e6 b7f7 e6f7 g8f7 g2f3 b8b3 f3f4) +1.05/8 1} 37. gxf3
{(g2f3 b7b3 a1a6 f8e8 f3f4 b3f3) -1.37/6 1} Qxb3 {(b7b3 a1a6 f8f6 d6e5 b8c8
f3f4 c8c2 a6a1) +1.06/8 1} 38. Rxa6 {(a1a6 f8f6 d4d3 f6g6 g1h1 b3b1 d3d1
b1b2) -1.52/6 1} Qxf3 {(b3f3 d6e6 g8h8 a6a1 b8b2 a1f1 b2c2 d4c4 f3b3)
+1.45/9 2} 39. Qxe6+ {(d6e6 g8h8 e6e1 f8f7 d4b4 f7b7 b4d4) -1.34/6 2} Kh8
{(g8h8 a6a1 b8b2 a1f1 b2c2 d4d7 f3e4 e6e7 e4e7 d7e7) +1.40/10 1} 40. Qe1
{(e6e1 f8e8 e1f1 b8b2 a6a7 e8e2) -1.54/6 1} Rfe8 {(f8e8 e1d1 f3c3 d1d3 e8e1
g1g2 e1c1 d3c3) +1.49/8 1} 41. Qd1 {(e1f1 b8b2 a6a7 e8a8 a7a8 f3a8 d4d7)
-1.38/6 1} Qc3 {(f3c3 d1d3 c3e1 g1g2 e1e5 d3c4 b8c8 c4d5) +1.39/8 1} 42.
Rd2 {(d4d2 b8b2 d2b2 c3b2 a6a7 e8e2) -1.38/6 1} Rb4 {(b8b4 a6a7 b4e4 g1g2
e4e1 d1c2 c3c2 d2c2) +1.66/8 1} 43. Re6 {(a6e6 e8g8 d2d7 b4b2 e6e7 g8b8)
-1.14/6 1} Re4 {(b4e4 e6e8 e4e8 g1h1 c3c5 h1g1 f5f4 d2d7) +1.43/8 2} 44.
Rxe4 {(e6e4 f5e4 d2d8 c3c6 d8d6 c6b5 d6d7) -0.91/7 1} fxe4 {(f5e4 d2d8 c3e5
d8e8 e5e8 d1d5 e4e3 f2f4 e3e2) +1.32/9 1} 45. Rd8 {(d2d8 c3c6 d8d6 c6a8
d6d7 e8c8 d1d2) -1.06/7 1} Qe5 {(c3e5 d1d2 e8g8 d8d5 e5e6 d5d6 e6g4 g1f1
g4h3 f1g1) +1.22/10 1} 46. Qd5 {(d8e8 e5e8 d1d5 g7g6 g1f1 h8g7 f1e2)
-1.06/6 1} Qxd5 {(e5d5 d8d5 g7g6 d5c5 e4e3 f2e3 e8e3 c5c8 h8g7 c8c7)
+1.41/10 2} 47. Rxd5 {(d8d5 h8g8 d5d7 g8f8 g1f1 e8e7 d7d4 e4e3 f1e2 e3f2
e2f2) -1.10/9 1} Kg8 {(h8g8 d5d7 g8f8 d7c7 e8e7 c7c3 f8f7 f2f4 e4e3 f4f5)
+1.43/10 1} 48. Rd7 {(d5d7 g8f8 g1f1 e8e7 d7d4 e4e3 f1e2 e3f2 e2f2) -1.10/7
1} e3 {(e4e3 f2e3 e8e3 g1f2 e3c3 h2h4 c3c4 d7d8 g8f7 d8d7) +1.38/10 1} 49.
fxe3 {(f2e3 e8e3 g1f2 e3h3 f2g2 h3c3 g2f2 c3c2) -1.00/8 1} Rxe3 {(e8e3 g1f2
e3c3 h2h4 c3c4 f2g3 g7g6 d7d2 g8h8 d2d7 c4c2) +0.92/11 1} 50. Kf2 {(g1f2
e3c3 h2h4 c3h3 d7d4 h3h2 f2e3 g8f7) -1.03/7 1} Rc3 {(e3c3 d7b7 c3c2 f2g3
g7g5 h2h3 h7h5 g3f3 c2c3 f3e4 c3h3) +1.01/11 2} 51. h4 {(h2h4 g8f8 f2g2
c3e3 g2f2 e3e7 d7d2) -1.08/7 1} Rh3 {(c3h3 d7d4 g8f7 f2g2 h3c3 d4d7 f7f6
g2f2 c3c4 f2g3) +0.82/10 1} 52. Rd4 {(d7d4 g8f7 d4b4 f7e6 b4b6 e6e7 b6b7
e7f6 b7b6 f6e5 b6b7) -1.13/8 2} Kf7 {(g8f7 f2e2 f7e6 d4e4 e6d6 e4d4 d6e6
d4e4 e6d5 e4e7) +1.05/10 1} 53. Rb4 {(d4b4 f7f6 b4b6 f6e5 b6b5 e5d6 b5b7
h7h5 f2e2 h3h4 b7g7) -1.17/7 1} Kf6 {(f7f6 b4e4 f6f5 e4e7 f5f6 e7e4 h3d3
f2e2 d3d6 e2e3) +1.18/10 1} 54. Rb6+ {(b4b6 f6e5 h4h5 h3c3 b6b7 e5f6 f2e2
c3c2) -1.17/7 1} Kf5 {(f6f5 b6b7 f5g6 b7b4 g6f5 b4c4 f5e5 c4c7 h3h4 c7g7
h4f4 f2e3) +1.14/12 1} 55. Rb5+ {(b6b5 f5f4 b5b4 f4e5 b4b5 e5d4 b5b7 h7h5
b7d7 d4e5 d7e7 e5d6 e7e4) -1.17/8 1} Kg6 {(f5g6 b5b6 g6f5 b6b5 f5e4 b5b4
e4d5 b4b7 h3h4 b7d7 d5e4) +1.23/11 1} 56. Rb4 {(b5b4 h7h6 b4g4 g6f7 g4f4
f7e6 f4e4 e6f6 f2g2 h3b3 g2f2) -1.21/8 1} Kf6 {(g6f6 b4e4 g7g6 f2g2 h3d3
e4e2 d3d7 g2f3 f6f5 f3e3) +1.14/10 1} 57. Rb6+ {(b4b6) 0.00/8 1} Ke5 {(f6e5
b6b7 h3h4 b7g7 h7h6 g7e7 e5d6 e7a7 h4c4 f2e3 c4c2 e3d4) +1.06/12 1} 58.
Rb5+ {(b6b5 e5d6 h4h5 d6e7 f2e2 h3h2 e2d3 g7g6 b5b7 e7e6 b7b6) -1.16/8 1}
Kf4 {(e5f4 b5b7 h3h2 f2f1 f4e4 b7g7 h2h4 f1g2 h7h5 g7e7 e4d4) +1.11/11 1}
59. Rb4+ {(b5b4 f4e5 b4b5) 0.00/8 1} Kf5 {(f4f5 b4b7 f5g6 b7b6 g6f7 b6b7
f7g6 b7b6 g6f5 b6b7 f5e4 b7e7) +0.99/12 1} 60. Rb5+ {(b4b5) 0.00/8 1} Kg6
{(f5g6 b5b6 g6h5 b6b7 h5h6 b7b6 g7g6 b6b4 h3d3 f2e2 d3d7 e2e3) +1.01/12 2}
61. Rb4 {(b5b4) 0.00/8 1} h6 {(h7h6 b4g4 g6f6 g4d4 f6e5 d4g4 e5f6 g4d4 f6e5
d4d7 h3h4) +1.24/11 1} 62. Kg2 {(f2g2 h3a3 b4b7 g6f6 g2f2 a3a2 f2e3 g7g5
b7b6) -1.25/8 1} Rd3 {(h3d3 g2f2 g6f5 b4b7 g7g5 f2e2 d3d8 h4g5 d8e8 e2d3
h6g5) +1.26/11 1} 63. Rb7 {(b4b7 g6f6 g2f2 d3d4 h4h5 d4d5 b7b6) -1.20/7 1}
Kf6 {(g6f6 b7c7 d3e3 g2f2 e3e4 h4h5 e4e5 c7c6 f6f5 f2f3 e5e4) +1.29/11 1}
64. Kf2 {(g2f2 d3d4 h4h5 d4d5 b7b6 f6e5 f2e3 d5d7) -1.20/7 1} Rc3 {(d3c3
f2e2 c3c4 h4h5 c4c5 e2d3 c5h5 d3d4 h5h4 d4d5) +1.28/10 1} 65. Rb6+ {(b7b6
f6f5 h4h5 c3c7 f2e3 f5g4 b6b5 c7c2) -1.20/7 1} Ke5 {(f6e5 b6b7 e5f6 b7d7
c3h3 d7d4 f6e5 d4g4 h3h1 g4g7 h1h4) +1.26/11 1} 66. h5 {(h4h5 c3c5 f2e3
c5a5 b6b3 a5a7 e3d3) -1.20/7 1} Rc2+ {(c3c2 f2e3 c2c3 e3e2 c3c7 b6b5 e5e4
b5b4 e4d5 e2d3) +1.35/10 1} 67. Ke3 {(f2e3 c2c5 e3e2 e5d4 b6b4 c5c4 b4b7
c4c2 e2f3 c2c3) -1.10/7 1} Rc3+ {(c2c3 e3f2 c3c2 f2f3 c2c7 f3e3 c7d7 b6b5
e5e6 e3e4 d7d2) +1.35/11 2} 68. Kf2 {(e3f2) 0.00/8 1} Rc7 {(c3c7 f2e3 e5d5
b6b1 c7c3 e3d2 c3a3 b1d1 a3a2 d2e3 d5e5) +1.31/11 1} 69. Ke3 {(f2e3 e5d5
e3d3 c7a7 b6b5 d5e6 d3d4 a7a2) -1.20/7 1} Rc5 {(c7c5 b6g6 c5c7 g6g1 c7c3
e3d2 c3c7 g1e1 e5d4 e1d1) +1.07/10 1} 70. Kd3 {(e3d3 c5d5 d3e3 d5d7 b6b5
e5d6 b5a5 d7e7 e3d3 e7e6) -1.10/7 1} Rd5+ {(c5d5 d3e3 d5d7 b6b5 d7d5 b5b8
d5d7 b8e8 e5d5 e8f8 d5e5) +1.21/11 1} 71. Ke3 {(d3e3 d5a5 e3d3 a5a3 d3c4
a3a7 b6b5 e5e4 b5b2 e4e5) -1.20/7 1} Ra5 {(d5a5 b6b2 a5a3 e3d2 a3h3 b2b7
e5f6 b7b5 h3h2 d2d3 h2f2) +1.41/11 1} 72. Rb7 {(e3d2 a5a2 d2d3 a2a3 d3d2
a3a7 d2e3 e5d5 b6b5) -1.20/7 1} Kf6 {(e5f6 b7b6 f6f7 b6b7 f7g8 b7b8 g8h7
b8b7 a5h5 e3d4 h5h2) +1.23/11 1} 73. Rb6+ {(b7b6 f6f7 b6b7 f7g8 b7b8 g8h7
e3d4 a5h5 b8b7 h5h4 d4d5 h6h5) -1.89/8 1} Kf7 {(f6f7 b6b7 f7f6 b7b6 f6e5
b6b3 a5c5 b3b7 c5c3 e3d2 c3g3) +1.41/11 2} 74. Rb7+ {(b6b7 f7g8 b7b8 g8h7
e3d4 a5h5 b8b7 h5h2 d4d5 h6h5) -2.09/8 1} Kg8 {(f7g8 b7b8 g8h7 b8c8 a5h5
c8c2 h7g6 e3e4 h5h4 e4e5 h4h5 e5d4) +1.30/12 1} 75. Rb8+ {(b7b8 g8h7 b8b7
a5h5 e3d4 h5h2 d4d3 h6h5 d3d4) -2.09/8 1} Kh7 {(g8h7 b8b7 a5h5 b7c7 h5d5
e3e4 d5d2 e4e3 d2g2 e3d3 h7g6 d3d4) +1.40/12 1} 76. Rb7 {(b8b7 a5h5 e3d4
h5h2 d4d3 h6h5 d3d4 h5h4) -2.30/8 1} Rxh5 {(a5h5 b7c7 h5d5 e3e4 d5d2 e4e3
d2g2 e3d3 h7g6 d3d4) +1.39/10 1} 77. Kf4 {(e3d4 h5h2 d4e3 h6h5 b7a7 h5h4
e3d4) -2.30/7 1} Rh2 {(h5h2 b7d7 h7g6 d7c7 h2d2 f4e3 d2a2 e3e4 g6f6 c7d7
a2c2) +1.66/11 2} 78. Kg3 {(f4g3 h2c2 g3g4 h7g6 g4f4 h6h5 b7b6 g6f7 b6b7)
-2.54/8 1} Re2 {(h2e2 g3f4 h7g6 f4f3 e2e1 f3f2 e1e5 b7d7 g6f6 f2f3 g7g5)
+1.88/11 1} 79. Kf3 {(g3f3 e2a2 f3g4 h7g6 g4f4 h6h5 b7b6 g6f7 b6b7) -2.54/8
1} Re8 {(e2e8 b7d7 h7g6 d7d4 g6f6 d4f4 f6g5 f4d4 g5f5 d4d7 g7g5) +1.88/11
1} 80. Kg4 {(f3g4 h7g6 b7b6 g6f7 g4f5 h6h5 b6b7 e8e7 b7e7 f7e7 f5e4)
-2.54/8 1} Rf8 {(e8f8 b7d7 h7g6 d7d2 f8f6 d2d7 f6f2 g4g3 f2c2 g3f4 g6f6)
+1.84/11 1} 81. Kh5 {(g4h5 h7g8 b7b5 f8f7 b5b8 g8h7 b8b6 f7f5 h5g4 g7g6)
-2.53/8 1} Rf2 {(f8f2 h5g4 h7g6 b7d7 g6f6 g4g3 f2e2 g3f3 e2e7 d7d5 f6e6)
+1.97/11 2} 82. Re7 {(b7e7 f2h2 h5g4 h6h5 g4g3 h2b2 g3f3 h7g6 e7e2 b2e2
f3e2) -2.64/8 1} Rg2 {(f2g2 e7d7 g2g5 h5h4 h7g6 h4h3 g6f5 d7e7 f5f6 e7d7
f6e5) +2.08/11 1} 83. Rc7 {(e7c7 g2h2 h5g4 h6h5 g4g3 h2a2 g3f4 h7h6 c7c6
g7g6 c6c7) -2.66/8 1} Rg5+ {(g2g5 h5h4 h7g6 h4h3 g6f5 c7e7 f5f6 e7d7 g5e5
h3g4 e5e2) +2.11/11 1} 84. Kh4 {(h5h4 g5b5 h4g4 h6h5 g4f4 h7h6 f4e4 g7g6
c7a7 g6g5) -2.66/8 1} Kg6 {(h7g6 c7c2 g6f5 c2c7 f5e6 c7c2 e6d5 c2d2 d5e4
d2e2 e4d4) +2.19/11 2} 85. Rc6+ {(c7c6 g6f7 c6c7 f7e6 c7a7 g7g6 a7h7 g5h5
h4g4 h5h2 g4f4) -2.73/8 1} Kf5 {(g6f5 c6c5 f5g6 c5c6 g6f5 c6c7 g7g6 c7f7
f5e5 f7e7 e5d5 e7d7) +2.05/12 1} 86. Rc5+ {(c6c5 f5f4 c5g5 h6g5 h4h5 g5g4
h5g6 g4g3 g6g7 g3g2) -2.40/8 1} Kf4 {(f5f4 c5c4 f4e3 c4c7 g7g6 c7e7 e3d4
h4h3 g5d5 h3g4 g6g5 g4f3) +2.19/12 1} 87. Rc4+ {(c5c4 f4f3 c4c3 f3e4 c3c4
e4e3 c4c3 e3d4 c3f3 g7g6 f3f4 d4d5 f4f7) -2.78/8 1} Ke3 {(f4e3 c4b4 g5g2
b4b7 g7g6 h4h3 g2f2 b7d7 f2e2 d7e7 e3d3 e7e2) +2.25/12 1} 88. Rc3+ {(c4c3
e3d4 c3c7 g7g6 c7h7 g5h5 h4g4 h5h2 g4g3 h2h5) -2.83/8 1} Ke4 {(e3e4 c3c4
e4d5 c4c7 g7g6 c7d7 d5e4 d7e7 e4d4 e7b7 g5d5) +2.26/11 1} 89. Rc7 {(c3c7
g7g6 c7h7 g5h5 h4g4 e4d4 h7f7 h5g5 g4f4 g5g2) -2.78/8 1} g6 {(g7g6 h4h3
g5d5 c7e7 e4f4 e7f7 f4e4 f7e7 e4d4 e7c7) +2.25/10 1} 90. Rc4+ {(c7c4 e4d5
c4a4 g5g2 a4a5 d5e4 a5a4 e4d3 a4a3 d3d4 a3a7) -2.98/7 1} Kf3 {(e4f3 c4c3
f3e4 c3c7 g5g2 c7h7 h6h5 h7d7 e4e5 d7e7 e5d4 e7d7) +2.27/12 1} 91. Rc3+
{(c4c3 f3f4 c3c4 f4e3 c4c7 g5g2 c7e7 e3d4 e7d7 d4c4 d7c7 c4d4 c7b7) -2.98/8
1} Ke4 {(f3e4 c3c7 g5g2 c7e7 e4f4 e7f7 f4e4 f7e7 e4f4 e7d7 g2e2) +2.46/11
1} 92. Rc4+ {(c3c4) 0.00/10 2} Kf3 {(e4f3 c4c3 f3f4 c3c4 f4e3 c4c7 g5g2
c7e7 e3d4 e7d7 d4e4 h4h3) +2.27/12 1} 93. Rc3+ {(c4c3) 0.00/9 1} Kf4 {(f3f4
c3c4 f4e5 c4c5 e5f4 c5c4 f4e5 c4c7 g5g2 c7e7 e5d4) +2.43/11 1} 94. Rc4+
{(c3c4 f4e3 c4c2 e3d4 c2d2 d4c4 d2e2 g5f5 e2e4 c4d5 e4e7) -2.93/8 1} Ke3
{(f4e3 c4c7 e3d4 c7d7 g5d5 d7e7 d5e5 e7d7 e5d5 d7e7 h6h5 h4g3) +2.26/12 1}
95. Rc7 {(c4c2 e3d4 c2d2 d4c4 d2e2 g5f5 e2c2 c4d4 c2c7) -2.93/7 1} Rf5
{(g5f5 h4g4 f5f2 c7c6 f2f4 g4g3 f4f3 g3g4 f3f4 g4g3) +2.33/10 1} 96. Kg4
{(c7g7 f5h5 h4g4 h5g5 g4h4 e3f4 g7f7 g5f5 f7e7 g6g5) -2.97/7 1} Rg5+ {(f5g5
g4h3 g5d5 h3g3 d5d1 g3h3 d1d2 c7c6 e3d4 c6g6) +2.17/10 1} 97. Kh4 {(g4h4)
0.00/10 1} Rf5 {(g5f5 h4g4 f5f2 c7c6 f2f4 g4g3 f4f3 g3g4 f3f4 g4g3)
+2.33/10 1} 98. Kg4 {(h4g4) 0.00/9 1} h5+ {(h6h5 g4g3 g6g5 c7e7 e3d4 e7b7
f5d5 b7c7 d4e4 g3f2) +2.17/10 2} 99. Kh4 {(g4h4 f5f2 c7e7 e3d4 h4g5 f2g2
g5h6 h5h4 e7g7 h4h3 g7g6) -2.44/7 1} Rf2 {(f5f2 h4g5 f2g2 g5f6 e3f4 c7c4
f4e3 c4c7 e3d4 f6e6) +1.91/10 1} 100. Re7+ {(h4g5 f2g2 g5f6 h5h4 c7g7 h4h3
g7g6 h3h2) -2.35/7 1} Kd4 {(e3d4 h4g5 f2g2 g5f6 d4d5 e7c7 d5d4 c7d7 d4e4
d7e7 e4d5 e7c7) +1.78/12 1} 101. Kg5 {(h4g5 f2g2 g5f6 h5h4 e7h7 g2g4 h7g7
h4h3 g7g6 g4g6 f6g6) -2.14/8 1} Rg2+ {(f2g2 g5f6 g6g5 f6g6 h5h4 g6f5 h4h3
e7b7 d4c4 b7d7 g5g4) +1.85/11 1} 102. Kf6 {(g5f6 h5h4 e7h7 g6g5 f6f5 d4d5
h7h5 g2f2 f5g5) -2.08/7 1} g5 {(g6g5 e7h7 g5g4 f6g5 g2c2 h7d7 d4e5 g5h5
g4g3 h5g5) +1.83/10 2} 103. Rh7 {(e7h7 g5g4 h7h5 g2f2 f6e6 g4g3 h5h4 d4e3
h4h3 e3f4) -2.08/8 1} h4 {(h5h4 h7h5 h4h3 h5h3 g5g4 h3h7 g2f2 f6e6 f2e2
e6f5 g4g3) +1.75/11 1} 104. Kf5 {(f6f5 g2g3 h7h6 h4h3 h6h5 g5g4 h5h4 g3g2
h4g4) -2.14/8 1} Kd5 {(d4d5 h7h5 d5d4 h5g5 h4h3 g5g6 g2f2 f5g4 h3h2 g6d6)
+1.55/10 1} 105. Rh8 {(h7h8 g2g3 h8d8 d5c6 d8c8 c6d6 c8d8 d6c5 d8g8 h4h3
g8g5 g3g5 f5g5) -1.94/8 1} Kc4 {(d5c4 h8h5 c4d4 h5h8 d4d5 h8d8 d5c4 d8g8
h4h3 g8g5 g2c2) +1.72/11 1} 106. Rc8+ {(h8c8 c4d4 c8d8 d4c5 d8h8 g2g3 h8g8
h4h3 g8g5 g3g5 f5g5) -1.94/7 1} Kb3 {(c4b3 f5e5 h4h3 c8b8 b3c4 b8c8 c4d3
c8d8 d3e3 d8d7) +1.78/10 1} 107. Rb8+ {(c8b8 b3c3 b8c8 c3d3 c8h8 g2g3 h8g8
h4h3 g8g5 g3g5 f5g5) -1.94/7 1} Kc4 {(b3c4 b8c8 c4d4 c8h8 d4d5 h8h7 g5g4
h7h4 g4g3 f5f4 d5d4) +1.83/11 1} 108. Rc8+ {(b8c8) 0.00/8 1} Kb4 {(c4b4
c8b8 b4c5 b8h8 c5d4 h8d8 d4e3 d8g8 g2d2 g8g5) +1.73/10 1} 109. Rb8+ {(c8b8
b4c5 b8c8 c5d4 c8d8 d4e3 d8h8 g2g3 h8g8 h4h3 g8g5 g3g5 f5g5) -1.94/8 1} Kc3
{(b4c3 b8e8 c3d4 e8e7 g5g4 e7e4 d4d5 e4g4 g2f2 g4f4) +1.63/10 1} 110. Rc8+
{(b8c8 c3d4 c8d8 d4c5 d8c8 c5d6 c8h8 g2g3 h8g8 h4h3 g8g5 g3g5 f5g5) -1.94/8
1} Kd4 {(c3d4 c8h8 d4c5 h8h5 c5d4 h5g5 h4h3 g5g4 d4d5 g4g2 h3g2) +1.63/11
1} 111. Rd8+ {(c8d8 d4e3 d8e8 e3f2 e8h8 f2e2 h8h7 e2d3 h7h5 g2f2 f5g5)
-1.98/8 1} Kc5 {(d4c5 d8c8 c5d4 c8d8 d4e3 d8h8 e3d3 h8g8 g2c2 g8d8 d3e3)
+1.72/11 2} 112. Rc8+ {(d8c8 c5d6 c8d8 d6e7 d8h8 g2g3 h8g8 h4h3 g8g7 e7d6
g7g5 g3g5 f5g5) -1.94/8 1} Kd4 {(c5d4 c8d8 d4e3 d8a8 e3d3 a8g8 h4h3 g8g5
h3h2 g5h5 g2d2) +1.75/11 1} 113. Rd8+ {(c8d8) 0.00/9 1} Kc5 {(d4c5 d8h8
c5d5 h8h6 d5d4 h6d6 d4e3 d6g6 g2c2 f5g5 h4h3) +1.79/11 1} 114. Rc8+ {(d8c8)
0.00/8 1} Kb4 {(c5b4 c8b8 b4c3 b8h8 c3d3 h8h5 d3d4 h5g5 g2f2 f5e6) +1.65/10
1} 115. Rb8+ {(c8b8) 0.00/8 1} Kc3 {(b4c3 b8h8 c3d3 h8h7 d3d4 h7d7 d4e3
d7g7 e3d4 g7g5) +1.59/10 1} 116. Rc8+ {(b8c8) 0.00/9 1} Kd3 {(c3d3 c8h8
d3e3 h8h5 e3d4 h5g5 h4h3 g5g4 d4d5 g4g2 h3g2) +1.63/11 1} 117. Rd8+ {(c8d8
d3e2 d8e8 e2f1 e8h8 f1f2 h8h7 f2e3 h7h5 g2f2 f5g5) -1.98/8 1} Ke2 {(d3e2
d8h8 e2d3 h8h5 d3d4 h5g5 h4h3 g5g4 d4d5 g4g2 h3g2) +1.63/11 1} 118. Re8+
{(d8e8 e2f3 e8h8 g2g3 h8h5 h4h3 h5g5 g3g5 f5g5 h3h2) -2.05/8 1} Kd3 {(e2d3
e8h8 g2g3 h8g8 g3f3 f5e5 f3g3 e5f5 g3g2 g8g7 g2d2) +1.56/11 1} 119. Rd8+
{(e8d8) 0.00/9 1} Ke2 {(d3e2 d8h8 e2e3 h8h5 e3d4 h5g5 h4h3 g5g4 d4d5 g4g2
h3g2) +1.63/11 1} 120. Re8+ {(d8e8) 0.00/9 1} Kf1 {(e2f1 e8b8 h4h3 b8b1
f1e2 b1b2 e2d3 b2b3 d3d4 b3h3 g5g4) +1.51/11 1} 121. Rh8 {(e8h8 f1f2 h8h7
f2e2 h7h6 e2e3 h6h5 g2f2 f5g5) -1.98/8 1} Kf2 {(f1f2 h8h5 f2e3 h5g5 h4h3
g5g4 e3d3 g4h4 h3h2 h4h7 g2d2) +1.49/11 1} 122. Rh5 {(h8h5 g2g3 f5f6 h4h3
h5g5 h3h2 g5h5 g3g2) -2.20/8 1} Rg3 {(g2g3 h5h7 h4h3 f5e5 f2e3 h7e7 g3f3
e5d5 e3f4 e7d7 f3d3) +1.71/11 1} 123. Rh7 {(h5h7 h4h3 f5e5 g5g4 e5d4 g3g2
h7f7 f2e2 f7e7) -3.47/8 1} h3 {(h4h3 f5e5 g3d3 e5f5 f2g2 h7g7 d3d5 f5e4
h3h2 g7h7) +1.66/10 1} 124. Rb7 {(h7b7 g3g2 b7b2 f2e1 b2b1 e1d2 b1b2 d2c3
b2b7 h3h2 b7c7) -3.56/8 1} h2 {(h3h2 b7b2 f2g1 b2b1 g1f2 b1b2 f2g1 b2b1
g1g2 b1b2) +1.79/10 1} 125. Rb2+ {(b7b2 f2g1 b2b1 g1g2 b1b2 g2h3 b2b7 h2h1q
b7h7 h3g2 h7h1 g2h1) -5.94/8 1} Kg1 {(f2g1 b2b1 g1f2 b1b2 f2g1 b2b1 g1g2
b1b2 g2h3 b2b1 h3g2 b1b2) +1.84/12 1} 126. Rb1+ {(b2b1 g1g2 b1b2 g2h3 b2b7
h2h1q b7h7 h3g2 h7h1 g2h1 f5e5) -5.84/8 1} Kg2 {(g1g2 b1b2 g2h3 b2b7 h2h1q
b7h7 h3g2 h7h1 g2h1 f5e4 g3c3 e4d4) +5.79/12 1} 127. Rc1 {(b1c1 h2h1q c1h1
g2h1 f5e5 g5g4 e5d5 g3g2) -6.26/8 1} h1=Q {(h2h1q c1h1 g2h1 f5g6 g3g2 g6f6
g5g4 f6f5 g4g3 f5e5) +5.95/10 1} 128. Rxh1 {(c1h1 g2h1 f5e5 g5g4 e5f5 g3g2
f5e5 g4g3) -6.48/8 1} Kxh1 {(g2h1 f5e5 h1g2 e5e4 g3f3 e4d4 f3f2 d4e4 g2g3
e4d4 f2d2) +6.30/11 2} 129. Ke4 {(f5e4 h1g2 e4e5 g2f3 e5d4 g5g4 d4d5 g3g2
d5e5) -6.66/9 1} Kg2 {(h1g2 e4d4 g2f3 d4d5 g3g2 d5e5 g2c2 e5f5 g5g4 f5e5
f3e3) +6.83/11 1} 130. Ke5 {(e4e5 g2f3 e5d4 g5g4 d4e5 g3g2 e5f6 f3e4 f6e6)
-6.96/9 1} Kf3 {(g2f3 e5f5 g3g2 f5e5 g2d2 e5f5 d2d5 f5e6 f3e4 e6f6 g5g4)
+7.04/11 1} 131. Kd4 {(e5d4 g5g4 d4c3 g3h3 c3d2 g4g3 d2d1 g3g2 d1e1 g2g1q)
-14.68/9 1} g4 {(g5g4 d4d5 g3h3 d5d4 g4g3 d4d5 g3g2 d5d4 h3h2 d4d5 g2g1q)
+14.33/11 2} 132. Kd5 {(d4d5 g3g2 d5c6 g4g3 c6d6 g2d2 d6e6 g3g2 e6e5 g2g1q)
-15.06/9 1} Rg2 {(g3g2 d5d4 g2e2 d4d5 g4g3 d5c5 g3g2 c5d4 g2g1q d4d5 g1e3)
+14.92/11 1} 133. Ke5 {(d5e5 g4g3 e5d6 f3e4 d6e6 g2e2 e6f7 g3g2 f7e8 g2g1q)
-15.26/9 1} Rd2 {(g2d2 e5f5 g4g3 f5e6 f3e4 e6f6 d2c2 f6e6 g3g2 e6d6 g2g1q)
+15.19/11 1} 134. Ke6 {(e5e6 g4g3 e6e7 g3g2 e7e8 g2g1q e8f8 d2e2 f8f7)
-15.38/9 1} Ke4 {(f3e4 e6f6 g4g3 f6e7 g3g2 e7f6 g2g1q f6e7 g1d4 e7e6)
+15.72/10 1} 135. Kf6 {(e6f6 g4g3 f6e6 g3g2 e6f7 g2g1q f7f8 e4d5 f8e7)
-15.26/9 1} g3 {(g4g3 f6e7 g3g2 e7f6 g2g1q f6e7 g1d4 e7e6 d4e5 e6f7)
+15.88/10 1} 136. Ke6 {(f6e6 g3g2 e6f7 g2g1q f7f8 g1c5 f8e8 c5c7 e8f8 d2e2)
-15.58/9 1} g2 {(g3g2 e6f6 g2g1q f6e7 g1d4 e7f7 d2c2 f7e6 c2d2 e6e7)
+15.89/10 1} 137. Ke7 {(e6e7 g2g1q e7f8 e4d5 f8e8 d2e2 e8d8 g1a7 d8c8)
-15.58/8 1} g1=Q {(g2g1q e7e6 g1g5 e6f7 d2d7 f7e8 g5e7 f7e8 d4e4 e8e7)
+M4/10 1} 138. Kf8 {(e7f8 g1a7 f8e8 d2h2 e8f8 h2h8) -M3/7 1} Rd7 {(d2d7
f8e8 g1d4 e8f8 d4h8 f8e7) +M3/9 1} 139. Ke8 {(f8e8 g1a7 e8f8 d7d8) -M2/5}
Qd4 {(g1d4 e8f8 d4h8 e7e6) +M2/9 1} 140. Kf8 {(e8f8 d4h8) -M1/3} Qh8#
{(d4h8 f8e8) +M1/9 1} 0-1

[Event "BPz2"]
[Site "DESKTOP-HFVHK2B"]
[Date "2021.05.20"]
[Round "15"]
[White "Bricabrac"]
[Black "Tscp181"]
[Result "1-0"]
[BlackElo "2200"]
[ECO "B56"]
[Opening "Sicilian"]
[Time "14:36:54"]
[Variation "Open, 2...d6 5.Nc3 Nc6"]
[WhiteElo "2200"]
[TimeControl "0+2"]
[Termination "normal"]
[PlyCount "65"]
[WhiteType "human"]
[BlackType "human"]

1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 d6 6. Bb5 {(f1b5 c8d7
b5c4 e7e5 d4c6 b7c6 c1g5 f8e7) +1.08/8 1} Bd7 {(c8d7 b5c6 d7c6 d4c6 b7c6
e1g1 e7e5) -0.59/7 1} 7. Bg5 {(c1g5 c6d4 d1d4 e7e5 d4e3 d7b5 c3b5 f8e7)
+1.13/8 1} e5 {(c6d4 d1d4 e7e5 d4a4 d7b5 a4b5) -0.38/6 1} 8. Nf5 {(d4f5
h7h6 g5f6 d8f6 c3d5 f6g5 d1f3) +0.83/7 1} Bxf5 {(d7f5 e4f5 h7h6 b5c6 b7c6
g5f6 d8f6 d1g4) -0.42/7 2} 9. exf5 {(e4f5 h7h6 g5h4 a7a6 b5c4 c6d4 d1d3
a8c8) +0.59/8 1} Be7 {(f8e7 g5f6 e7f6 d1d5 a8c8 e1c1) -0.30/6 1} 10. O-O
{(e1g1 e8g8 g5f6 e7f6 c3e4 d6d5 e4f6 d8f6) +0.56/8 1} Rc8 {(a8c8 b5c6 c8c6
g5f6 e7f6 c3b5 d8b6) -0.22/6 1} 11. Bxf6 {(g5f6 e7f6 c3e4 d6d5 e4f6 d8f6
d1d5 f6f5) -0.02/8 1} Bxf6 {(e7f6 f1e1 e8g8 b5c6 c8c6 c3e4) -0.14/6 1} 12.
Ne4 {(c3e4 f6e7 d1d5 e8g8 c2c4 a7a6 b5c6 c8c6) +0.41/8 1} Be7 {(f6e7 f1e1
d6d5 e4c3 d5d4 c3e4) -0.16/6 1} 13. Qd5 {(d1d5 e8g8 c2c3 d8d7 g2g4 g7g6
f5g6 d7g4) +0.87/8 1} O-O {(e8g8 c2c3 d8d7 e4c5 d7f5 c5b7) -0.18/6 1} 14.
c3 {(c2c3 a7a6 b5c4 b7b5 c4d3 d8d7 g2g4 g7g5) +1.72/8 1} Qd7 {(d8d7 e4c5
d7c7 c5d3 e7f6 a1d1) -0.07/6 1} 15. g4 {(g2g4 g7g6 e4c5 d7c7 c5e4 c7d7 f5g6
d7g4) +1.29/8 1} h5 {(h7h5 f2f4 e5f4 f1f4 h5g4 f4g4) 0.00/6 1} 16. f3
{(f2f3 h5h4 a1d1 a7a6 b5c4 b7b5 c4d3 g8h7) +1.50/8 2} hxg4 {(h5g4 f3g4 d7d8
a1d1 d8b6 f1f2 f8d8 b5c6 c8c6) +0.44/6 1} 17. fxg4 {(f3g4 a7a6 b5d3 b7b5
a1d1 d7a7 f1f2 a7e3) +2.34/8 1} Qd8 {(d7d8 a1d1 d8b6 g1h1 a7a6 b5c6 c8c6)
+0.51/6 1} 18. b4 {(b2b4 a7a6 b5d3 d8b6 g1h1 a6a5 b4b5 c6a7) +2.30/8 1}
Qb6+ {(d8b6 g1h1 a7a6 b5d3 b6d8 h1g1 b7b5) +0.65/6 1} 19. Kh1 {(g1h1 a7a6
b5c4 c6a7 a1d1 b6c6 d5c6 a7c6 c4d5) +1.68/9 1} a6 {(a7a6 b5d3 b6d8 h1g1
a6a5 b4b5) +0.60/6 2} 20. Bc4 {(b5c4 c6a7 a1d1 b6c6 c4b3 a7b5 c3c4 c6d5)
+1.57/8 1} Qc7 {(b6c7 c4d3 c7d8 h1g1 b7b5) +0.65/5 2} 21. Bb3 {(c4b3 c6d8
a1e1 b7b5 e1e2 c7c6 d5d3 e7g5) +1.87/8 1} a5 {(a6a5 b4b5 c6a7 a1d1 c7b6
b3c4) +0.51/6 1} 22. b5 {(b4b5 c6d8 g4g5 f8e8 a1d1 c7b6 f5f6 e7f8) +2.17/8
1} Nd8 {(c6d8 a1d1 f8e8 f5f6 g7f6 e4f6 e7f6 f1f6 c7c3 f6d6) +0.32/6 1} 23.
g5 {(g4g5 a5a4 b3a4 c7c4 a4b3 c4d5 b3d5 b7b6) +2.25/8 1} Re8 {(f8e8 f5f6
g7f6 g5f6 e7f8 h2h4) +0.07/6 1} 24. f6 {(f5f6 g7f6 g5f6 e7f8 a1d1 d8e6 d1d2
e6c5) +2.42/8 1} gxf6 {(g7f6 g5f6 e7f8 f1g1 g8h8 h2h4 d8e6) -0.09/6 2} 25.
gxf6 {(g5f6 e7f8 a1d1 d8e6 d1d2 b7b6 c3c4 e6f4) +2.02/8 1} Ne6 {(d8e6 f6e7
e8e7 f1g1 e6g7 e4d6 c8d8) -2.16/6 1} 26. fxe7 {(f6e7 e8e7 e4d6 e6f4 d5c4
c7c4 b3c4 c8d8) +3.82/8 1} Rxe7 {(e8e7 e4d6 e6f4 f1g1 g8f8 d5c4 c7c4 b3c4)
-2.57/6 1} 27. Nf6+ {(e4f6 g8g7 d5g2 g7h8 f6d5 c7d8 d5e7 d8e7) +4.41/8 1}
Kf8 {(g8f8 d5g2 e7e8 g2g8 f8e7 f6e8 c8e8 f1f7) -4.70/5 1} 28. Qg2 {(d5g2
e7e8 g2g8 f8e7 f6e8 c8e8 f1f7 e7d8) +8.18/8 1} Ng5 {(e6g5 g2g5 e7e6 b3e6
f7e6 a1d1) -6.91/6 1} 29. Qxg5 {(g2g5 e7e6 b3e6 c8d8 f6e4 f8e8 g5g8 e8e7)
+12.48/8 1} Re6 {(e7e6 g5g8 f8e7 f6d5 e7d7 f1f7 e6e7 f7e7) -M4/6} 30. Qg8+
{(g5g8 f8e7 f6d5 e7d7 f1f7 e6e7 f7e7 c7c3) +M4/8 1} Ke7 {(f8e7 f6d5 e7d7
f1f7 e6e7 f7e7) -M3/4} 31. Nd5+ {(f6d5 e7d7 f1f7 e6e7 d5f6 e6e7 c7e6) +M3/9
1} Kd7 {(e7d7 f1f7 e6e7 f7e7) -M2/3} 32. Rxf7+ {(f1f7 e6e7 f7e7 e6h6) +M2/9
1} Re7 {(e6e7 f7e7) -M1/2} 33. Rxe7# {(f7e7) +M1/9 1} 1-0
[/pgn]

Code: Select all

void InitSearch(Thread* t) {
  u64 bb, cc, b, a, pieces, allPieces;
  u32 sq;
  u64 i, col, cenCol, wrow, brow, cenRow;
  SplitBB blocks;


  double wpmax = 0;
  double wnmax = 0;
  double wbmax = 0;
  double wrmax = 0;
  double wqmax = 0;
  double wkmax = 0;
  double bpmax = 0;
  double bnmax = 0;
  double bbmax = 0;
  double brmax = 0;
  double bqmax = 0;
  double bkmax = 0;

  allPieces = piece[WHITE] | piece[BLACK];

  for (i = A1; i <= H8; i++) {
    col = i & 7;
    wrow = i >> 3;
    brow = 7 - wrow;
    cenCol = col < 4 ? col : 7 - col;
    cenRow = wrow < 4 ? wrow : 7 - wrow;

    // white pawns
    wpPST[i] = wrow * wrow * cenCol;
    wpmax = std::max((s32)wpmax, wpPST[i]);

    // black pawns
    bpPST[i] = brow * brow * cenCol;
    bpmax = std::max((s32)bpmax, bpPST[i]);

    // white knights
    wnPST[i] = 0;
    bb = knightMoves[i] & ~piece[WHITE];
    while (bb) {
      _BitScanForward64(&sq, bb);
      bb ^= one << sq;
      if (!AtkByBlack(t, one << sq)) {
        cc = knightMoves[sq] & ~piece[WHITE];
        while (cc) {
          _BitScanForward64(&sq, cc);
          cc ^= one << sq;
          wnPST[i] += (one - AtkByBlack(t, one << sq)) * (one + cenCol * wrow * cenRow);
        }
      }
    }
    wnmax = std::max((s32)wnmax, wnPST[i]);

    // black knights
    bnPST[i] = 0;
    bb = knightMoves[i] & ~piece[BLACK];
    while (bb) {
      _BitScanForward64(&sq, bb);
      bb ^= one << sq;
      if (!AtkByWhite(t, one << sq)) {
        cc = knightMoves[sq] & ~piece[BLACK];
        while (cc) {
          _BitScanForward64(&sq, cc);
          cc ^= one << sq;
          bnPST[i] += (one - AtkByWhite(t, one << sq)) * (one + cenCol * brow * cenRow);
        }
      }
    }
    bnmax = std::max((s32)bnmax, bnPST[i]);

    // bishops
    blocks.bb = allPieces & b7e[i];
    blocks.bb = ((blocks.l32 >> 8) | blocks.h32);
    bb = bss[i][blocks.r1][0]
      & bss[i][blocks.r2][1]
      & bss[i][blocks.r3][2];

    // white bishops
    wbPST[i] = 0;
    b = bb & ~piece[WHITE];
    while (b) {
      _BitScanForward64(&sq, b);
      b ^= one << sq;
      if (!AtkByBlack(t, one << sq)) {
        blocks.bb = allPieces & b7e[sq];
        blocks.bb = ((blocks.l32 >> 8) | blocks.h32);
        cc = bss[sq][blocks.r1][0]
          & bss[sq][blocks.r2][1]
          & bss[sq][blocks.r3][2]
          & ~piece[WHITE];
        while (cc) {
          _BitScanForward64(&sq, cc);
          cc ^= one << sq;
          wbPST[i] += (one - AtkByBlack(t, one << sq)) * (one + cenCol * wrow * cenRow);
        }
      }
    }
    wbmax = std::max((s32)wbmax, wbPST[i]);

    // black bishops
    bbPST[i] = 0;
    b = bb & ~piece[BLACK];
    while (b) {
      _BitScanForward64(&sq, b);
      b ^= one << sq;
      if (!AtkByWhite(t, one << sq)) {
        blocks.bb = allPieces & b7e[sq];
        blocks.bb = ((blocks.l32 >> 8) | blocks.h32);
        cc = bss[sq][blocks.r1][0]
          & bss[sq][blocks.r2][1]
          & bss[sq][blocks.r3][2]
          & ~piece[BLACK];
        while (cc) {
          _BitScanForward64(&sq, cc);
          cc ^= one << sq;
          bbPST[i] += (one - AtkByWhite(t, one << sq)) * (one + cenCol * brow * cenRow);
        }
      }
    }
    bbmax = std::max((s32)bbmax, bbPST[i]);

    // rooks
    blocks.bb = allPieces & rob[i];
    bb = qss[i][(blocks.bb >> (i & 56)) & 127][0]
      & qss[i][blocks.r2][1]
      & qss[i][blocks.r3][2]
      & qss[i][blocks.r4][3]
      & qss[i][blocks.r5][4]
      & qss[i][blocks.r6][5]
      & qss[i][blocks.r7][6]
      & rob[i];

    // white rooks
    wrPST[i] = 0;
    b = bb & ~piece[WHITE];
    while (b) {
      _BitScanForward64(&sq, b);
      b ^= one << sq;
      if (!AtkByBlack(t, one << sq)) {
        blocks.bb = allPieces & rob[sq];
        cc = qss[sq][(blocks.bb >> (i & 56)) & 127][0]
          & qss[sq][blocks.r2][1]
          & qss[sq][blocks.r3][2]
          & qss[sq][blocks.r4][3]
          & qss[sq][blocks.r5][4]
          & qss[sq][blocks.r6][5]
          & qss[sq][blocks.r7][6]
          & rob[sq]
          & ~piece[WHITE];
        while (cc) {
          _BitScanForward64(&sq, cc);
          cc ^= one << sq;
          wrPST[i] += (one - AtkByBlack(t, one << sq)) * (one + cenCol + ((wrow == 6) * 4));
        }
      }
    }
    wrmax = std::max((s32)wrmax, wrPST[i]);

    // black rooks
    brPST[i] = 0;
    b = bb & ~piece[BLACK];
    while (b) {
      _BitScanForward64(&sq, b);
      b ^= one << sq;
      if (!AtkByWhite(t, one << sq)) {
        blocks.bb = allPieces & rob[sq];
        cc = qss[sq][(blocks.bb >> (i & 56)) & 127][0]
          & qss[sq][blocks.r2][1]
          & qss[sq][blocks.r3][2]
          & qss[sq][blocks.r4][3]
          & qss[sq][blocks.r5][4]
          & qss[sq][blocks.r6][5]
          & qss[sq][blocks.r7][6]
          & rob[sq]
          & ~piece[BLACK];
        while (cc) {
          _BitScanForward64(&sq, cc);
          cc ^= one << sq;
          brPST[i] += (one - AtkByWhite(t, one << sq)) * (one + cenCol + ((brow == 6) * 4));
        }
      }
    }
    brmax = std::max((s32)brmax, brPST[i]);

    // queens
    blocks.bb = allPieces & rob[i];
    bb = qss[i][(blocks.bb >> (i & 56)) & 127][0]
      & qss[i][blocks.r2][1]
      & qss[i][blocks.r3][2]
      & qss[i][blocks.r4][3]
      & qss[i][blocks.r5][4]
      & qss[i][blocks.r6][5]
      & qss[i][blocks.r7][6];

    // white queens
    wqPST[i] = 0;
    b = bb & ~piece[WHITE];
    while (b) {
      _BitScanForward64(&sq, b);
      b ^= one << sq;
      if (!AtkByBlack(t, one << sq)) {
        blocks.bb = allPieces & (rob[sq] | bob[sq]);
        cc = qss[sq][(blocks.bb >> (i & 56)) & 127][0]
          & qss[sq][blocks.r2][1]
          & qss[sq][blocks.r3][2]
          & qss[sq][blocks.r4][3]
          & qss[sq][blocks.r5][4]
          & qss[sq][blocks.r6][5]
          & qss[sq][blocks.r7][6]
          & ~piece[WHITE];
        while (cc) {
          _BitScanForward64(&sq, cc);
          cc ^= one << sq;
          wqPST[i] += (one - AtkByBlack(t, one << sq)) * (one + cenCol * cenRow * wrow);
        }
      }
    }
    wqmax = std::max((s32)wqmax, wqPST[i]);

    // black queens
    bqPST[i] = 0;
    b = bb & ~piece[BLACK];
    while (b) {
      _BitScanForward64(&sq, b);
      b ^= one << sq;
      if (!AtkByWhite(t, one << sq)) {
        blocks.bb = allPieces & (rob[sq] | bob[sq]);
        cc = qss[sq][(blocks.bb >> (i & 56)) & 127][0]
          & qss[sq][blocks.r2][1]
          & qss[sq][blocks.r3][2]
          & qss[sq][blocks.r4][3]
          & qss[sq][blocks.r5][4]
          & qss[sq][blocks.r6][5]
          & qss[sq][blocks.r7][6]
          & ~piece[BLACK];
        while (cc) {
          _BitScanForward64(&sq, cc);
          cc ^= one << sq;
          bqPST[i] += (one - AtkByWhite(t, one << sq)) * (one + cenCol * cenRow * brow);
        }
      }
    }
    bqmax = std::max((s32)bqmax, bqPST[i]);

    // white king
    wkPST[i] = (s32)(((2000 - mat[BLACK]) / 200) * cenCol * cenRow);

    // black king
    bkPST[i] = (s32)(((2000 - mat[WHITE]) / 200) * cenCol * cenRow);
  }

  // white pawn specifics
  wpPST[F3] -= (board[E1] == WC || board[G1] == WK) * 40;
  wpPST[E2] -= (board[F1] == WB) * 30;
  wpPST[D2] -= (board[C1] == WB) * 30;
  wpPST[D4] += (board[F1] == WB) * 20;
  wpPST[E4] += (board[C1] == WB) * 30;
  wpPST[C4] += (board[D4] == WP) * 30;

  // black pawn specifics
  bpPST[F6] -= (board[E8] == BC || board[G8] == BK) * 40;
  bpPST[E7] -= (board[F8] == BB) * 30;
  bpPST[D7] -= (board[C8] == BB) * 30;
  bpPST[D5] += (board[F8] == BB) * 20;
  bpPST[E5] += (board[C8] == BB) * 30;
  bpPST[C5] += (board[D5] == BP) * 30;

  // white knight specifics
  wnPST[G1] -= (board[E1] == WC) * 40;
  wnPST[B1] -= (board[E1] == WC) * 30;
  wnPST[C3] -= (board[C2] == WP) * 20;
  wnPST[D2] += (board[C2] == WP) * 20;

  // black knight specifics
  bnPST[G8] -= (board[E8] == BC) * 40;
  bnPST[B8] -= (board[E8] == BC) * 30;
  bnPST[C6] -= (board[C7] == BP) * 20;
  bnPST[D7] += (board[C7] == BP) * 20;

  // white bishop specifics
  wbPST[F1] -= (board[E1] == WC) * 40;
  wbPST[C1] -= (board[E1] == WC) * 30;
  wbPST[E3] -= (board[E2] == WP) * 20;
  wbPST[D3] -= (board[D2] == WP) * 20;
  wbPST[G2] += (((board[E2] == WP) + (board[D3] == WP) + (board[C4] == WP)) > 1) * 30;
  wbPST[B2] += (((board[D2] == WP) + (board[E3] == WP) + (board[F4] == WP)) > 1) * 40;

  // black bishop specifics
  bbPST[F8] -= (board[E8] == BC) * 40;
  bbPST[C8] -= (board[E8] == BC) * 30;
  bbPST[E6] -= (board[E7] == BP) * 20;
  bbPST[D6] -= (board[D7] == BP) * 20;
  bbPST[G8] += (((board[E8] == BP) + (board[D6] == BP) + (board[C5] == BP)) > 1) * 30;
  bbPST[B8] += (((board[D8] == BP) + (board[E6] == BP) + (board[F5] == BP)) > 1) * 40;

  // white rook specifics

  // black rook specifics

  // white queen specifics
  wqPST[D1] += (board[G1] == WN) * 20;
  wqPST[D1] += (board[F1] == WB) * 20;
  wqPST[D1] += (board[B1] == WN) * 20;
  wqPST[D1] += (board[C1] == WB) * 20;
  wqPST[D2] -= (board[C1] == WB) * 30;
  wqPST[E2] -= (board[F1] == WB) * 30;

  // black queen specifics
  bqPST[D1] += (board[G8] == BN) * 20;
  bqPST[D1] += (board[F8] == BB) * 20;
  bqPST[D1] += (board[B8] == BN) * 20;
  bqPST[D1] += (board[C8] == BB) * 20;
  wqPST[D7] -= (board[C8] == BB) * 30;
  wqPST[E7] -= (board[F8] == BB) * 30;

  // white king specifics
  wkPST[G1] += (board[E1] == WC) * 40;
  wkPST[C1] += (board[E1] == WC) * 30;

  // black king specifics
  bkPST[G8] += (board[E8] == BC) * 40;
  bkPST[C8] += (board[E8] == BC) * 30;

  wnmax /= 80.0;
  bnmax /= 80.0;
  wbmax /= 80.0;
  bbmax /= 80.0;
  wrmax /= 70.0;
  brmax /= 70.0;
  wqmax /= 60.0;
  bqmax /= 60.0;

  for (i = A1; i <= H8; i++) {
    wnPST[i] /= wnmax;
    bnPST[i] /= bnmax;
    wbPST[i] /= wbmax;
    bbPST[i] /= bbmax;
    wrPST[i] /= wrmax;
    brPST[i] /= brmax;
    wqPST[i] /= wqmax;
    bqPST[i] /= bqmax;
  }

  pos[WHITE] = 0;
  pos[BLACK] = 0;
  mat[WHITE] = 0;
  mat[BLACK] = 0;

  pieces = piece[WHITE];
  while (pieces) {
    _BitScanForward64(&sq, pieces);
    pieces ^= one << sq;
    mat[WHITE] += value[board[sq]];
    pos[WHITE] += pcePST[board[sq]][sq];
  }

  pieces = piece[BLACK];
  while (pieces) {
    _BitScanForward64(&sq, pieces);
    pieces ^= one << sq;
    mat[BLACK] += value[board[sq]];
    pos[BLACK] += pcePST[board[sq]][sq];
  }
}
The score is now Bric +11 -10 =4. Maybe Bric all original will win its first match against TSCP! :D
Mike Sherwin
Posts: 925
Joined: Fri Aug 21, 2020 1:25 am
Location: Planet Earth, Sol system
Full name: Michael J Sherwin

Re: Progress On Bricabrac

Post by Mike Sherwin »

Well, Bric did not win that match. It was a new best but it did not win, -100 iirc. Then and for the next couple of days I was under the weather with an ear infection. Today was the next attempt. And a new best.

Bricabrac - Tscp181 : 42.0/100 39-55-6 (0010010010=00100011010=010001000=001=110101010011101010001110100011000000100101=100111111010=0000101) 42% -56

My initial goal is to rival or at least get close to PeSTO in the strength of just the PST. That is why I have not added end-leaf pawn structure evaluation. Adding end-leaf pawn structure would instantly make Bric much stronger than TSCP. Most games Bric is losing is due to disastrous pawn structure. PeSTO also suffers from poor pawn structure but not nearly as much. I wonder how the PeSTO pawn tables substantially avoids bad pawn structure most of the time?

Code: Select all

void InitSearch(Thread* t) {
  u64 bb, cc, b, a, pieces, allPieces;
  u32 sq;
  u64 i, col, cenCol, wrow, brow, cenRow;
  SplitBB blocks;

  double wpmax = 0;
  double wnmax = 0;
  double wbmax = 0;
  double wrmax = 0;
  double wqmax = 0;
  double wkmax = 0;
  double bpmax = 0;
  double bnmax = 0;
  double bbmax = 0;
  double brmax = 0;
  double bqmax = 0;
  double bkmax = 0;

  allPieces = piece[WHITE] | piece[BLACK];

  for (i = A1; i <= H8; i++) {
    col = i & 7;
    wrow = i >> 3;
    brow = 7 - wrow;
    cenCol = col < 4 ? col : 7 - col;
    cenRow = wrow < 4 ? wrow : 7 - wrow;

    // white pawns
    wpPST[i] = wrow * wrow * 4;
    wpmax = std::max((s32)wpmax, wpPST[i]);

    // black pawns
    bpPST[i] = brow * brow * 4;
    bpmax = std::max((s32)bpmax, bpPST[i]);

    // white knights
    wnPST[i] = 0;
    bb = knightMoves[i] & ~piece[WHITE];
    while (bb) {
      _BitScanForward64(&sq, bb);
      bb ^= one << sq;
      cc = knightMoves[sq] & ~piece[WHITE];
      while (cc) {
        _BitScanForward64(&sq, cc);
        cc ^= one << sq;
        wnPST[i] += (one - AtkByBlack(t, one << sq)) * (one + cenCol * wrow);
      }
    }
    wnmax = std::max((s32)wnmax, wnPST[i]);

    // black knights
    bnPST[i] = 0;
    bb = knightMoves[i] & ~piece[BLACK];
    while (bb) {
      _BitScanForward64(&sq, bb);
      bb ^= one << sq;
      cc = knightMoves[sq] & ~piece[BLACK];
      while (cc) {
        _BitScanForward64(&sq, cc);
        cc ^= one << sq;
        bnPST[i] += (one - AtkByWhite(t, one << sq)) * (one + cenCol * brow);
      }
    }
    bnmax = std::max((s32)bnmax, bnPST[i]);

    // bishops
    blocks.bb = allPieces & b7e[i];
    blocks.bb = ((blocks.l32 >> 8) | blocks.h32);
    bb = bss[i][blocks.r1][0]
      & bss[i][blocks.r2][1]
      & bss[i][blocks.r3][2];

    // white bishops
    wbPST[i] = 0;
    b = bb & ~piece[WHITE];
    while (b) {
      _BitScanForward64(&sq, b);
      b ^= one << sq;
      blocks.bb = allPieces & b7e[sq];
      blocks.bb = ((blocks.l32 >> 8) | blocks.h32);
      cc = bss[sq][blocks.r1][0]
        & bss[sq][blocks.r2][1]
        & bss[sq][blocks.r3][2]
        & ~piece[WHITE];
      while (cc) {
        _BitScanForward64(&sq, cc);
        cc ^= one << sq;
        wbPST[i] += (one - AtkByBlack(t, one << sq)) * (one + cenCol * wrow);
      }
    }
    wbmax = std::max((s32)wbmax, wbPST[i]);

    // black bishops
    bbPST[i] = 0;
    b = bb & ~piece[BLACK];
    while (b) {
      _BitScanForward64(&sq, b);
      b ^= one << sq;
      blocks.bb = allPieces & b7e[sq];
      blocks.bb = ((blocks.l32 >> 8) | blocks.h32);
      cc = bss[sq][blocks.r1][0]
         & bss[sq][blocks.r2][1]
         & bss[sq][blocks.r3][2]
         & ~piece[BLACK];
      while (cc) {
        _BitScanForward64(&sq, cc);
        cc ^= one << sq;
        bbPST[i] += (one - AtkByWhite(t, one << sq)) * (one + cenCol * brow);
      }
    }
    bbmax = std::max((s32)bbmax, bbPST[i]);

    // rooks
    blocks.bb = allPieces & rob[i];
    bb = qss[i][(blocks.bb >> (i & 56)) & 127][0]
      & qss[i][blocks.r2][1]
      & qss[i][blocks.r3][2]
      & qss[i][blocks.r4][3]
      & qss[i][blocks.r5][4]
      & qss[i][blocks.r6][5]
      & qss[i][blocks.r7][6]
      & rob[i];

    // white rooks
    wrPST[i] = 0;
    b = bb & ~piece[WHITE];
    while (b) {
      _BitScanForward64(&sq, b);
      b ^= one << sq;
      blocks.bb = allPieces & rob[sq];
      cc = qss[sq][(blocks.bb >> (i & 56)) & 127][0]
         & qss[sq][blocks.r2][1]
         & qss[sq][blocks.r3][2]
         & qss[sq][blocks.r4][3]
         & qss[sq][blocks.r5][4]
         & qss[sq][blocks.r6][5]
         & qss[sq][blocks.r7][6]
         & rob[sq]
         & ~piece[WHITE];
      while (cc) {
        _BitScanForward64(&sq, cc);
        cc ^= one << sq;
        wrPST[i] += (one - AtkByBlack(t, one << sq)) * (one + cenCol + (wrow == 6));
      }
    }
    wrmax = std::max((s32)wrmax, wrPST[i]);

    // black rooks
    brPST[i] = 0;
    b = bb & ~piece[BLACK];
    while (b) {
      _BitScanForward64(&sq, b);
      b ^= one << sq;
      blocks.bb = allPieces & rob[sq];
      cc = qss[sq][(blocks.bb >> (i & 56)) & 127][0]
         & qss[sq][blocks.r2][1]
         & qss[sq][blocks.r3][2]
         & qss[sq][blocks.r4][3]
         & qss[sq][blocks.r5][4]
         & qss[sq][blocks.r6][5]
         & qss[sq][blocks.r7][6]
         & rob[sq]
         & ~piece[BLACK];
      while (cc) {
        _BitScanForward64(&sq, cc);
        cc ^= one << sq;
        brPST[i] += (one - AtkByWhite(t, one << sq)) * (one + cenCol + (brow == 6));
      }
    }
    brmax = std::max((s32)brmax, brPST[i]);

    // queens
    blocks.bb = allPieces & rob[i];
    bb = qss[i][(blocks.bb >> (i & 56)) & 127][0]
      & qss[i][blocks.r2][1]
      & qss[i][blocks.r3][2]
      & qss[i][blocks.r4][3]
      & qss[i][blocks.r5][4]
      & qss[i][blocks.r6][5]
      & qss[i][blocks.r7][6];

    // white queens
    wqPST[i] = 0;
    b = bb & ~piece[WHITE];
    while (b) {
      _BitScanForward64(&sq, b);
      b ^= one << sq;
      blocks.bb = allPieces & (rob[sq] | bob[sq]);
      cc = qss[sq][(blocks.bb >> (i & 56)) & 127][0]
         & qss[sq][blocks.r2][1]
         & qss[sq][blocks.r3][2]
         & qss[sq][blocks.r4][3]
         & qss[sq][blocks.r5][4]
         & qss[sq][blocks.r6][5]
         & qss[sq][blocks.r7][6]
         & ~piece[WHITE];
      while (cc) {
        _BitScanForward64(&sq, cc);
        cc ^= one << sq;
        wqPST[i] += (one - AtkByBlack(t, one << sq)) * (one + cenCol * wrow);
      }
    }
    wqmax = std::max((s32)wqmax, wqPST[i]);

    // black queens
    bqPST[i] = 0;
    b = bb & ~piece[BLACK];
    while (b) {
      _BitScanForward64(&sq, b);
      b ^= one << sq;
      blocks.bb = allPieces & (rob[sq] | bob[sq]);
      cc = qss[sq][(blocks.bb >> (i & 56)) & 127][0]
         & qss[sq][blocks.r2][1]
         & qss[sq][blocks.r3][2]
         & qss[sq][blocks.r4][3]
         & qss[sq][blocks.r5][4]
         & qss[sq][blocks.r6][5]
         & qss[sq][blocks.r7][6]
         & ~piece[BLACK];
      while (cc) {
        _BitScanForward64(&sq, cc);
        cc ^= one << sq;
        bqPST[i] += (one - AtkByWhite(t, one << sq)) * (one + cenCol * brow);
      }
    }
    bqmax = std::max((s32)bqmax, bqPST[i]);

    // white king
    wkPST[i] = (s32)(((2000 - mat[BLACK]) / 200) * cenCol * cenRow);

    // black king
    bkPST[i] = (s32)(((2000 - mat[WHITE]) / 200) * cenCol * cenRow);
  }

  // white pawn specifics
  wpPST[F3] -= (board[E1] == WC || board[G1] == WK) * 40;
  wpPST[E2] -= (board[F1] == WB) * 30;
  wpPST[D2] -= (board[C1] == WB) * 30;
  wpPST[D4] += (board[F1] == WB) * 20;
  wpPST[E4] += (board[C1] == WB) * 30;
  wpPST[C4] += (board[D4] == WP) * 30;

  // black pawn specifics
  bpPST[F6] -= (board[E8] == BC || board[G8] == BK) * 40;
  bpPST[E7] -= (board[F8] == BB) * 30;
  bpPST[D7] -= (board[C8] == BB) * 30;
  bpPST[D5] += (board[F8] == BB) * 20;
  bpPST[E5] += (board[C8] == BB) * 30;
  bpPST[C5] += (board[D5] == BP) * 30;

  // white knight specifics
  wnPST[G1] -= (board[E1] == WC) * 40;
  wnPST[B1] -= (board[E1] == WC) * 30;
  wnPST[C3] -= (board[C2] == WP) * 20;
  wnPST[D2] += (board[C2] == WP) * 20;

  // black knight specifics
  bnPST[G8] -= (board[E8] == BC) * 40;
  bnPST[B8] -= (board[E8] == BC) * 30;
  bnPST[C6] -= (board[C7] == BP) * 20;
  bnPST[D7] += (board[C7] == BP) * 20;

  // white bishop specifics
  wbPST[F1] -= (board[E1] == WC) * 40;
  wbPST[C1] -= (board[E1] == WC) * 30;
  wbPST[E3] -= (board[E2] == WP) * 20;
  wbPST[D3] -= (board[D2] == WP) * 20;
  wbPST[G2] += (((board[E2] == WP) + (board[D3] == WP) + (board[C4] == WP)) > 1) * 30;
  wbPST[B2] += (((board[D2] == WP) + (board[E3] == WP) + (board[F4] == WP)) > 1) * 40;

  // black bishop specifics
  bbPST[F8] -= (board[E8] == BC) * 40;
  bbPST[C8] -= (board[E8] == BC) * 30;
  bbPST[E6] -= (board[E7] == BP) * 20;
  bbPST[D6] -= (board[D7] == BP) * 20;
  bbPST[G8] += (((board[E8] == BP) + (board[D6] == BP) + (board[C5] == BP)) > 1) * 30;
  bbPST[B8] += (((board[D8] == BP) + (board[E6] == BP) + (board[F5] == BP)) > 1) * 40;

  // white rook specifics

  // black rook specifics

  // white queen specifics
  wqPST[D1] += (board[G1] == WN) * 20;
  wqPST[D1] += (board[F1] == WB) * 20;
  wqPST[D1] += (board[B1] == WN) * 20;
  wqPST[D1] += (board[C1] == WB) * 20;
  wqPST[D2] -= (board[C1] == WB) * 30;
  wqPST[E2] -= (board[F1] == WB) * 30;

  // black queen specifics
  bqPST[D1] += (board[G8] == BN) * 20;
  bqPST[D1] += (board[F8] == BB) * 20;
  bqPST[D1] += (board[B8] == BN) * 20;
  bqPST[D1] += (board[C8] == BB) * 20;
  wqPST[D7] -= (board[C8] == BB) * 30;
  wqPST[E7] -= (board[F8] == BB) * 30;

  // white king specifics
  wkPST[G1] += (board[E1] == WC) * 40;
  wkPST[C1] += (board[E1] == WC) * 30;

  // black king specifics
  bkPST[G8] += (board[E8] == BC) * 40;
  bkPST[C8] += (board[E8] == BC) * 30;

  wnmax /= 80.0;
  bnmax /= 80.0;
  wbmax /= 80.0;
  bbmax /= 80.0;
  wrmax /= 70.0;
  brmax /= 70.0;
  wqmax /= 60.0;
  bqmax /= 60.0;

  for (i = A1; i <= H8; i++) {
    wnPST[i] /= wnmax;
    bnPST[i] /= bnmax;
    wbPST[i] /= wbmax;
    bbPST[i] /= bbmax;
    wrPST[i] /= wrmax;
    brPST[i] /= brmax;
    wqPST[i] /= wqmax;
    bqPST[i] /= bqmax;
  }

  pos[WHITE] = 0;
  pos[BLACK] = 0;
  mat[WHITE] = 0;
  mat[BLACK] = 0;

  pieces = piece[WHITE];
  while (pieces) {
    _BitScanForward64(&sq, pieces);
    pieces ^= one << sq;
    mat[WHITE] += value[board[sq]];
    pos[WHITE] += pcePST[board[sq]][sq];
  }

  pieces = piece[BLACK];
  while (pieces) {
    _BitScanForward64(&sq, pieces);
    pieces ^= one << sq;
    mat[BLACK] += value[board[sq]];
    pos[BLACK] += pcePST[board[sq]][sq];
  }
}
Mike Sherwin
Posts: 925
Joined: Fri Aug 21, 2020 1:25 am
Location: Planet Earth, Sol system
Full name: Michael J Sherwin

Re: Progress On Bricabrac

Post by Mike Sherwin »

One of my many disabilities is fibromyalgia. I suffered for years with it until I figured out the cause. Turns out that I have a mild allergy to Coffee. :evil: Because I love coffee. :evil: When I stopped drinking coffee my fibromyalgia symptoms diminished 99% in about a months time. After that an occasional mild flare-up but nothing serious. And I barely noticed it when it did. On May 7th I got the first Moderna vaccination. The first day or two I did not have any symptoms except a hint of a headache. After that I got what felt like an ear infection that sidelined me for a few days. I thought it was getting a bit better so I tried to do a little work on Bricabrac. But, while it did not seem as bad I noticed it was also starting in my other ear. Then I suspected that it might be a fibromyalgia attack. So I started pressing my finger on the various nerve bundles that are on the head and or face and sure enough it was a fibromyalgia attack. From there it went into my jaw and down my neck, around to my chest and down my back. It was the second worst attack that I have ever experienced. However, it is the longest lasting attack that I have ever had. At times I thought that I was going to die. Or maybe I was wishing that I would die. I guess it makes sense that the vaccine would have that effect on me seeing that my body treated it most likely as an allergy. Anyway, I'm about 70% over the attack and I feel that I can get back to working on Bricabrac.

And oh yeah, there is no way in hell that I am getting the second dose.
User avatar
Gabor Szots
Posts: 1397
Joined: Sat Jul 21, 2018 7:43 am
Location: Budapest, Hungary
Full name: Gabor Szots

Re: Progress On Bricabrac

Post by Gabor Szots »

I have just read about it, terrible disease. I wish you the best recovery.
Gabor Szots
CCRL testing group
User avatar
mvanthoor
Posts: 1784
Joined: Wed Jul 03, 2019 4:42 pm
Location: Netherlands
Full name: Marcel Vanthoor

Re: Progress On Bricabrac

Post by mvanthoor »

Mike Sherwin wrote: Sun Jun 06, 2021 12:41 am ...
That sucks... good luck with the recovery, Mike.

I've got my vaccination invitation in the mail two days ago. I'll see how it's going to be. Difference is obviously that I don't yet have your age, don't have fybromalgia, nor any allergies (at least, not that I know of).
Author of Rustic, an engine written in Rust.
Releases | Code | Docs | Progress | CCRL
User avatar
lithander
Posts: 881
Joined: Sun Dec 27, 2020 2:40 am
Location: Bremen, Germany
Full name: Thomas Jahn

Re: Progress On Bricabrac

Post by lithander »

Never heard of it and just googled it. Sounds really uncomfortable. :( Get well soon!

Are you planning to get a different vaccine as a 2nd shot or none at all?

I got Astra-Zeneca. Flue like symptons for two days, nothing too bad, but worse than any other vaccination I remember. In Germany Astra-Zeneca has a very bad rep and everyone want's the mRNA vaccines instead. Well, good for me otherwise it wouldn't have been my turn yet! ;)
Minimal Chess (simple, open source, C#) - Youtube & Github
Leorik (competitive, in active development, C#) - Github & Lichess
Mike Sherwin
Posts: 925
Joined: Fri Aug 21, 2020 1:25 am
Location: Planet Earth, Sol system
Full name: Michael J Sherwin

Re: Progress On Bricabrac

Post by Mike Sherwin »

Thanks guys! I am getting better. I'd syat 85% recovered. :) I would have grinned bigger but it still hurts a bit, lol.

@Thomas - None at all. The first shot is supposed to be 80% effective and I'm good with that. Besides I'm pretty sure I was already exposed. I had a low grade fever for 4 days a few months ago with no other symptoms. I have B- blood type and I have read that 19 is not very bad for people that have B- blood and many may even be immune. I'm just going to roll the dice. Fibro is worse than death anyway.