X-Git-Url: http://winboard.nl/cgi-bin?p=bonanza.git;a=blobdiff_plain;f=ponder.c;h=eeb54513e0731f5c7f60c3f006cc44651c0b5641;hp=2eb8b7a27d3261a64fe4e19aab948e8500958532;hb=cygwin;hpb=18b507e1b20fc6c32ee50f00fb910a59110c1a1d diff --git a/ponder.c b/ponder.c index 2eb8b7a..eeb5451 100644 --- a/ponder.c +++ b/ponder.c @@ -15,15 +15,20 @@ ponder( tree_t * restrict ptree ) || ! record_game.moves || sec_limit_up == UINT_MAX ) { return 1; } - ponder_nmove = gen_legal_moves( ptree, ponder_move_list ); + ponder_nmove = gen_legal_moves( ptree, ponder_move_list, 1 ); if ( get_elapsed( &time_start ) < 0 ) { return -1; } Out( "\nSearch a move to ponder\n\n" ); OutCsaShogi( "info ponder start\n" ); +#if defined(XBOARD) + // [HGM] for converting to CSA move during ponder + for( iret = 0; iret < nsquare; iret++ ) root_pos[iret] = BOARD[iret]; +#endif + game_status |= flag_puzzling; - iret = iterate( ptree, 0 ); + iret = iterate( ptree ); game_status &= ~flag_puzzling; if ( iret < 0 ) { return iret; } @@ -44,7 +49,7 @@ ponder( tree_t * restrict ptree ) Out( "\nPonder on %c%s (%+.2f)\n\n", ach_turn[root_turn], str, (double)last_root_value / 100.0 ); - iret = make_move_root( ptree, move, ( flag_rep | flag_rejections ) ); + iret = make_move_root( ptree, move, flag_rep ); if ( iret < 0 ) { OutCsaShogi( "info ponder end\n" ); @@ -54,15 +59,14 @@ ponder( tree_t * restrict ptree ) if ( game_status & mask_game_end ) { OutCsaShogi( "info ponder end\n" ); - unmake_move_root( ptree, move ); - return 1; + return unmake_move_root( ptree ); } if ( get_elapsed( &time_start ) < 0 ) { return -1; } game_status |= flag_pondering; - iret = iterate( ptree, 0 ); + iret = iterate( ptree ); if ( game_status & flag_thinking ) { game_status &= ~flag_thinking; @@ -75,30 +79,37 @@ ponder( tree_t * restrict ptree ) } OutCsaShogi( "info ponder end\n" ); game_status &= ~flag_pondering; - unmake_move_root( ptree, move ); - - return iret; + return unmake_move_root( ptree ); } -#if defined(MNJ_LAN) +#if defined(MNJ_LAN) || defined(USI) int analyze( tree_t * restrict ptree ) { int iret; - if ( game_status & mask_game_end ) { return 1; } +#if defined(MNJ_LAN) + if ( game_status & mask_game_end ) + { + MnjOut( "pid=%d move=%%TORYO v=%de n=0 final%s\n", + mnj_posi_id, -score_bound, + ( mnj_depth_stable == INT_MAX ) ? "" : " stable" ); + return 1; + } +#endif iret = get_elapsed( &time_start ); if ( iret < 0 ) { return iret; } - game_status |= flag_pondering; - iret = iterate( ptree, 0 ); + game_status |= flag_pondering; + iret = iterate( ptree ); game_status &= ~flag_pondering; if ( abs(last_root_value) > score_max_eval ) { - MnjOut( "pid=%d confident\n", mnj_posi_id ); + MnjOut( "pid=%d final%s\n", mnj_posi_id, + ( mnj_depth_stable == INT_MAX ) ? "" : " stable" ); } return iret;