diff --git a/src/move.c b/src/move.c index e479c78..e240a82 100644 --- a/src/move.c +++ b/src/move.c @@ -24,6 +24,7 @@ #include "piece.h" #include "move.h" #include "eval.h" +#include "eval-simple.h" static pool_t *moves_pool; @@ -226,6 +227,8 @@ void move_del(struct list_head *ptr) FILE2C(F88(move->to)), RANK2C(R88(move->to))); # endif + if (move->pos) + pos_del(move->pos); list_del(ptr); pool_add(moves_pool, move); return; @@ -670,7 +673,7 @@ static int moves_cmp_eval(__unused void *data, const struct list_head *h1, const { move_t *m1 = list_entry(h1, move_t, list); move_t *m2 = list_entry(h2, move_t, list); - return m1->eval > m2->eval ? -1: m1->eval < m2->eval? 1: 0; + return m2->eval_simple - m1->eval_simple; } /** @@ -698,12 +701,13 @@ void moves_gen_eval_sort(pos_t *pos) list_for_each_entry(move, &pos->moves[pos->turn], list) { newpos = move_do(pos, move); - moves_gen_all(newpos); move->pos = newpos; - move->eval = eval(newpos); - //log(1, "eval=%d\n", move->eval); + //move_print(0, move, 0); + move->eval_simple = eval_simple(newpos); + newpos->eval_simple = move->eval_simple; } moves_sort(pos); + //moves_print(pos, 0); } /** @@ -716,7 +720,7 @@ void moves_gen_all(pos_t *pos) { //log_f(1, "turn=%d opponent=%d\n", pos->turn, OPPONENT(pos->turn)); if (!pos->moves_generated) { - if (!pos->moves_counted) + if (!pos->moves_counted) {} moves_gen(pos, OPPONENT(pos->turn), false, false); moves_gen(pos, pos->turn, true, true); if (!pos->moves_counted) @@ -761,8 +765,6 @@ pos_t *move_do(pos_t *pos, move_t *move) square_t from = move->from, to = move->to; u64 bb_from = SQ88_2_BB(from), bb_to = SQ88_2_BB(to); - pos->node_count++; - if (move->capture || piece == PAWN) /* 50 moves */ new->clock_50 = 0; else diff --git a/src/move.h b/src/move.h index 2667064..2e706e2 100644 --- a/src/move.h +++ b/src/move.h @@ -48,6 +48,7 @@ typedef struct move_s { move_flags_t flags; eval_t negamax; eval_t eval; + eval_t eval_simple; pos_t *pos; struct list_head list; /* next move */ } move_t;