static int move_value(int move, const board_t * board, int height, int trans_killer, int ThreadId) { int value; ASSERT(move_is_ok(move)); ASSERT(board!=NULL); ASSERT(height_is_ok(height)); ASSERT(trans_killer==MoveNone||move_is_ok(trans_killer)); if (false) { } else if (move == trans_killer) { // transposition table killer value = TransScore; } else if (move_is_tactical(move,board)) { // capture or promote value = capture_value(move,board); } else if (move == Killer[ThreadId][height][0]) { // killer 1 value = KillerScore; } else if (move == Killer[ThreadId][height][1]) { // killer 2 value = KillerScore - 2; } else if (height > 2 && move == Killer[ThreadId][height-2][0]) { // killer 1 value = KillerScore - 1; } else if (height > 2 && move == Killer[ThreadId][height-2][1]) { // killer 2 value = KillerScore - 3; } else { // quiet move value = quiet_move_value(move,board,ThreadId); } return value; }
static void note_quiet_moves(list_t * list, const board_t * board, bool in_pv, int ThreadId) { int size; int i, move; int move_piece; ASSERT(list_is_ok(list)); ASSERT(board!=NULL); size = LIST_SIZE(list); if (size >= 2) { for (i = 0; i < size; i++) { move = LIST_MOVE(list,i); list->value[i] = quiet_move_value(move,board,ThreadId); if (TryQuietKingAttacks && in_pv) { move_piece = MOVE_PIECE(move,board); if (!(PIECE_IS_PAWN(move_piece) || PIECE_IS_KING(move_piece))) { if (narrow_piece_attack_king(board,move_piece,MOVE_TO(move),KING_POS(board,COLOUR_OPP(board->turn)))) { if (see_move(move,board) >= 0) { // if (1 == NumberThreadsInternal) print_board(board); list->value[i] += 16; } } } } } } }
static void note_quiet_moves(list_t * list, const board_t * board) { int size; int i, move; ASSERT(list_is_ok(list)); ASSERT(board!=NULL); size = LIST_SIZE(list); if (size >= 2) { for (i = 0; i < size; i++) { move = LIST_MOVE(list,i); list->value[i] = quiet_move_value(move,board); } } }
static int move_value_simple(int move, const board_t * board, int trans_killer) { int value; ASSERT(move_is_ok(move)); ASSERT(board!=NULL); ASSERT(trans_killer==MoveNone||move_is_ok(trans_killer)); if (false) { } else if (move == trans_killer) { // transposition table killer value = TransScore; } else if (MOVE_IS_TACTICAL(move,board)) { // capture or promote value = GoodScore + mvv_lva(move,board); } else { // quiet move value = quiet_move_value(move,board); } return value; }