home *** CD-ROM | disk | FTP | other *** search
/ Dream 57 / Amiga_Dream_57.iso / Amiga / Jeux / Reflexion / Crafty-15.19.lha / crafty-15.19 / src / data.h < prev    next >
C/C++ Source or Header  |  1998-09-13  |  18KB  |  448 lines

  1. #if !defined(DATA_INCLUDED)
  2. #  define DATA_INCLUDED
  3.  
  4.    extern char           version[6];
  5.    extern PLAYING_MODE   mode;
  6.    extern int            batch_mode;
  7.    extern int            call_flag;
  8.    extern int            crafty_rating;
  9.    extern int            opponent_rating;
  10.    extern int            number_auto_kibitzers;
  11.    extern int            number_of_computers;
  12.    extern int            number_of_GMs;
  13.    extern int            number_of_IMs;
  14.    extern int            number_of_specials;
  15.    extern int            time_used;
  16.    extern int            time_used_opponent;
  17.    extern int            cpu_time_used;
  18.    extern int            auto_kibitzing;
  19.    extern int            next_time_check;
  20.    extern int            total_moves;
  21.    extern int            initialized;
  22.    extern int            early_exit;
  23.    extern int            new_game;
  24.    extern char           auto_kibitz_list[64][20];
  25.    extern char           GM_list[512][20];
  26.    extern char           IM_list[512][20];
  27.    extern char           computer_list[512][20];
  28.    extern char           special_list[512][20];
  29.    extern FILE           *input_stream;
  30.    extern FILE           *book_file;
  31.    extern FILE           *books_file;
  32.    extern FILE           *history_file;
  33.    extern FILE           *log_file;
  34.    extern FILE           *auto_file;
  35.    extern FILE           *book_lrn_file;
  36.    extern FILE           *position_file;
  37.    extern FILE           *position_lrn_file;
  38.    extern int            log_id;
  39.    extern int            output_format;
  40.    extern int            EGTBlimit;
  41.    extern int            EGTB_draw;
  42.    extern int            EGTB_use;
  43.    extern char           whisper_text[512];
  44.    extern int            whisper_value;
  45.    extern int            whisper_depth;
  46.    extern int            last_mate_score;
  47.    extern int            last_opponent_move;
  48.  
  49.    extern int            incheck_depth;
  50.    extern int            onerep_depth;
  51.    extern int            pushpp_depth;
  52.    extern int            recap_depth;
  53.    extern int            singular_depth;
  54.    extern int            threat_depth;
  55.  
  56.    extern int            pgn_suggested_percent;
  57.    extern char           pgn_event[32];
  58.    extern char           pgn_date[32];
  59.    extern char           pgn_round[32];
  60.    extern char           pgn_site[32];
  61.    extern char           pgn_white[64];
  62.    extern char           pgn_white_elo[32];
  63.    extern char           pgn_black[64];
  64.    extern char           pgn_black_elo[32];
  65.    extern char           pgn_result[32];
  66.    extern char           log_filename[64];
  67.    extern char           history_filename[64];
  68.  
  69.    extern int            number_of_solutions;
  70.    extern int            solutions[10];
  71.    extern int            solution_type;
  72.    extern int            default_draw_score;
  73.    extern int            accept_draws;
  74.    extern int            over;
  75.    extern int            ics;
  76.    extern int            auto232;
  77.    extern int            auto232_delay;
  78.    extern int            xboard;
  79.    extern int            whisper;
  80.    extern int            channel;
  81.    extern char           channel_title[32];
  82.    extern char           book_path[128];
  83.    extern char           log_path[128];
  84.    extern char           tb_path[128];
  85.    extern char           cmd_buffer[512];
  86.    extern char           *args[32];
  87.    extern char           buffer[512];
  88.    extern int            nargs;
  89.    extern int            kibitz;
  90.    extern int            move_number;
  91.    extern int            wtm;
  92.    extern int            crafty_is_white;
  93.    extern int            iteration_depth;
  94.    extern int            last_search_value;
  95.    extern int            previous_search_value;
  96.    extern int            search_failed_high;
  97.    extern int            search_failed_low;
  98.    extern int            largest_positional_score;
  99.    extern int            root_alpha;
  100.    extern int            root_beta;
  101.    extern int            root_value;
  102.    extern int            root_wtm;
  103.    extern int            root_move;
  104.    extern int            root_total_white_pieces;
  105.    extern int            root_total_white_pawns;
  106.    extern int            root_total_black_pieces;
  107.    extern int            root_total_black_pawns;
  108.    extern int            nodes_per_second;
  109.    extern int            cpu_percent;
  110.    extern int            opening;
  111.    extern int            middle_game;
  112.    extern int            end_game;
  113.    extern int            analyze_mode;
  114.    extern int            annotate_mode;
  115.    extern int            test_mode;
  116.    extern int            analyze_move_read;
  117.    extern signed char    resign;
  118.    extern signed char    resign_counter;
  119.    extern signed char    resign_count;
  120.    extern signed char    draw_counter;
  121.    extern signed char    draw_count;
  122.    extern char           audible_alarm;
  123.    extern char           hint[512];
  124.    extern char           book_hint[512];
  125.    extern int            post;
  126.    extern int            search_depth;
  127.    extern int            search_move;
  128.    extern int            easy_move;
  129.    extern TIME_TYPE      time_type;
  130.    extern int            time_limit;
  131.    extern int            absolute_time_limit;
  132.    extern int            search_time_limit;
  133.    extern int            nodes_between_time_checks;
  134.    extern int            burp;
  135.  
  136.    extern int            time_abort;
  137.    extern signed char    pondering;   /* thinking on opponent's time     */
  138.    extern signed char    thinking;    /* searching on its time           */
  139.    extern signed char    puzzling;    /* puzzling about a move to ponder */
  140.    extern signed char    booking;     /* searching, following book moves */
  141.    extern signed char    abort_search;
  142.    extern int            ponder;
  143.    extern int            ponder_move;
  144.    extern int            made_predicted_move;
  145.    extern int            force;
  146.    extern int            ponder_moves[220];
  147.    extern int            num_ponder_moves;
  148.    extern char           initial_position[80];
  149.  
  150.    extern unsigned int   opponent_start_time, opponent_end_time;
  151.    extern unsigned int   program_start_time, program_end_time;
  152.    extern unsigned int   start_time, end_time;
  153.    extern unsigned int   elapsed_start, elapsed_end;
  154.    extern int            predicted;
  155.    extern signed char    transposition_id;
  156.  
  157.    extern int            ansi;
  158.    extern int            trace_level;
  159.    extern int            max_threads;
  160.    extern int            min_thread_depth;
  161.    extern int            thread_depth;
  162.    extern int            display_options;
  163.    extern unsigned int   noise_level;
  164.  
  165.    extern int            book_move;
  166.    extern int            moves_out_of_book;
  167.    extern int            book_accept_mask;
  168.    extern int            book_reject_mask;
  169.    extern int            book_random;
  170.    extern float          book_weight_freq;
  171.    extern float          book_weight_eval;
  172.    extern float          book_weight_learn;
  173.    extern int            book_search_trigger;
  174.    extern int            book_selection_width;
  175.    extern int            show_book;
  176.    extern int            learning;
  177.    extern int            book_learn_eval[LEARN_INTERVAL];
  178.    extern int            book_learn_depth[LEARN_INTERVAL];
  179.  
  180.    extern int            tc_moves;
  181.    extern int            tc_time;
  182.    extern int            tc_time_remaining;
  183.    extern int            tc_time_remaining_opponent;
  184.    extern int            tc_moves_remaining;
  185.    extern int            tc_secondary_moves;
  186.    extern int            tc_secondary_time;
  187.    extern int            tc_increment;
  188.    extern int            tc_sudden_death;
  189.    extern int            tc_operator_time;
  190.    extern int            tc_safety_margin;
  191.    extern int            no_tricks;
  192.    extern int            computer_opponent;
  193.    extern int            draw_score_normal;
  194.    extern int            usage_level;
  195.    extern int            log_hash;
  196.    extern int            log_pawn_hash;
  197.    extern int            hash_table_size;
  198.    extern int            pawn_hash_table_size;
  199.    extern int            hash_maska;
  200.    extern int            hash_maskb;
  201.    extern unsigned int   pawn_hash_mask;
  202.    extern HASH_ENTRY      *trans_ref_wa;
  203.    extern HASH_ENTRY      *trans_ref_wb;
  204.    extern HASH_ENTRY      *trans_ref_ba;
  205.    extern HASH_ENTRY      *trans_ref_bb;
  206.    extern PAWN_HASH_ENTRY *pawn_hash_table;
  207.  
  208.    extern int            history_w[4096], history_b[4096];
  209.  
  210.    extern int            unblocked_pawns[9];
  211.    extern int            p_values[15];
  212.    extern PATH     last_pv;
  213.    extern int            last_value;
  214.  
  215.    extern char           white_outpost[64];
  216.    extern char           black_outpost[64];
  217.    extern char           square_color[64];
  218.    extern int            passed_pawn_value[8];
  219.    extern int            isolated_pawn_value[9];
  220.    extern int            supported_passer[8];
  221.    extern int            reduced_material_passer[20];
  222.    extern int            pawn_advance[8];
  223.    extern int            outside_passed[128];
  224.    extern int            pawn_value_w[64];
  225.    extern int            pawn_value_b[64];
  226.    extern int            knight_value_w[64];
  227.    extern int            knight_value_b[64];
  228.    extern int            bishop_value_w[64];
  229.    extern int            bishop_value_b[64];
  230.    extern int            rook_value_w[64];
  231.    extern int            rook_value_b[64];
  232.    extern int            queen_value_w[64];
  233.    extern int            queen_value_b[64];
  234.    extern int            king_value_w[64];
  235.    extern int            king_value_b[64];
  236.    extern char           king_defects_w[64];
  237.    extern char           king_defects_b[64];
  238.  
  239.    extern int            b_n_mate_dark_squares[64];
  240.    extern int            b_n_mate_light_squares[64];
  241.    extern int            mate[64];
  242.  
  243.    extern char           push_extensions[64];
  244.  
  245.    extern signed char    directions[64][64];
  246.    extern BITBOARD       w_pawn_attacks[64];
  247.    extern BITBOARD       b_pawn_attacks[64];
  248.    extern BITBOARD       knight_attacks[64];
  249.    extern BITBOARD       bishop_attacks[64];
  250. #if defined(COMPACT_ATTACKS)
  251.   /* Stuff these into a structure to make the addressing slightly cheaper */
  252.   extern struct at at;
  253.  
  254.   extern BITBOARD       diag_attack_bitboards[NDIAG_ATTACKS];
  255.   extern BITBOARD       anti_diag_attack_bitboards[NDIAG_ATTACKS];
  256.   extern DIAG_INFO      diag_info[64];
  257.   extern unsigned char  bishop_shift_rl45[64];
  258.   extern unsigned char  bishop_shift_rr45[64];
  259. #else
  260.   extern BITBOARD       bishop_attacks_rl45[64][256];
  261.   extern BITBOARD       bishop_attacks_rr45[64][256];
  262.   extern int            bishop_mobility_rl45[64][256];
  263.   extern int            bishop_mobility_rr45[64][256];
  264.   extern int            bishop_shift_rl45[64];
  265.   extern int            bishop_shift_rr45[64];
  266. #endif
  267.   extern BITBOARD       rook_attacks[64];
  268. #if !defined(COMPACT_ATTACKS)
  269.   extern BITBOARD       rook_attacks_r0[64][256];
  270.   extern BITBOARD       rook_attacks_rl90[64][256];
  271.   extern int            rook_mobility_r0[64][256];
  272.   extern int            rook_mobility_rl90[64][256];
  273. #endif
  274.  
  275.    extern POSITION display;
  276.  
  277.    extern BITBOARD       queen_attacks[64];
  278.    extern BITBOARD       king_attacks[64];
  279.    extern BITBOARD       king_attacks_1[64];
  280.    extern BITBOARD       king_attacks_2[64];
  281.    extern BITBOARD       obstructed[64][64];
  282.  
  283.    extern unsigned int   w_pawn_random32[64];
  284.    extern unsigned int   b_pawn_random32[64];
  285.    extern BITBOARD       w_pawn_random[64];
  286.    extern BITBOARD       b_pawn_random[64];
  287.    extern BITBOARD       w_knight_random[64];
  288.    extern BITBOARD       b_knight_random[64];
  289.    extern BITBOARD       w_bishop_random[64];
  290.    extern BITBOARD       b_bishop_random[64];
  291.    extern BITBOARD       w_rook_random[64];
  292.    extern BITBOARD       b_rook_random[64];
  293.    extern BITBOARD       w_queen_random[64];
  294.    extern BITBOARD       b_queen_random[64];
  295.    extern BITBOARD       w_king_random[64];
  296.    extern BITBOARD       b_king_random[64];
  297.    extern BITBOARD       enpassant_random[65];
  298.    extern BITBOARD       castle_random_w[2];
  299.    extern BITBOARD       castle_random_b[2];
  300.    extern BITBOARD       wtm_random[2];
  301.    extern BITBOARD       endgame_random_w;
  302.    extern BITBOARD       endgame_random_b;
  303.    extern BITBOARD       w_rooks_random;
  304.    extern BITBOARD       b_rooks_random;
  305.  
  306.    extern BITBOARD       threat_flag;
  307.    extern BITBOARD       clear_mask[65];
  308.    extern BITBOARD       clear_mask_rl45[65];
  309.    extern BITBOARD       clear_mask_rr45[65];
  310.    extern BITBOARD       clear_mask_rl90[65];
  311.    extern BITBOARD       set_mask[65];
  312.    extern BITBOARD       set_mask_rl45[65];
  313.    extern BITBOARD       set_mask_rr45[65];
  314.    extern BITBOARD       set_mask_rl90[65];
  315.    extern BITBOARD       file_mask[8];
  316.    extern BITBOARD       rank_mask[8];
  317.    extern BITBOARD       mask_not_rank8;
  318.    extern BITBOARD       mask_not_rank1;
  319.    extern BITBOARD       right_side_mask[8];
  320.    extern BITBOARD       left_side_mask[8];
  321.    extern BITBOARD       right_side_empty_mask[8];
  322.    extern BITBOARD       left_side_empty_mask[8];
  323.    extern BITBOARD       right_half_mask, left_half_mask;
  324.    extern BITBOARD       mask_abs7_w, mask_abs7_b;
  325.    extern BITBOARD       pawns_cramp_black;
  326.    extern BITBOARD       pawns_cramp_white;
  327.    extern BITBOARD       mask_advance_2_w;
  328.    extern BITBOARD       mask_advance_2_b;
  329.    extern BITBOARD       mask_left_edge;
  330.    extern BITBOARD       mask_right_edge;
  331.    extern BITBOARD       mask_corner_squares;
  332.    extern BITBOARD       promote_mask_w;
  333.    extern BITBOARD       promote_mask_b;
  334.    extern BITBOARD       mask_G2G3;
  335.    extern BITBOARD       mask_B2B3;
  336.    extern BITBOARD       mask_G6G7;
  337.    extern BITBOARD       mask_B6B7;
  338.    extern BITBOARD       mask_A7H7;
  339.    extern BITBOARD       mask_A2H2;
  340.    extern BITBOARD       center;
  341.  
  342.    extern BITBOARD       stonewall_white;
  343.    extern BITBOARD       stonewall_black;
  344.  
  345.    extern BITBOARD       mask_kr_trapped_w[3];
  346.    extern BITBOARD       mask_qr_trapped_w[3];
  347.    extern BITBOARD       mask_kr_trapped_b[3];
  348.    extern BITBOARD       mask_qr_trapped_b[3];
  349.  
  350.    extern BITBOARD       good_bishop_kw;
  351.    extern BITBOARD       good_bishop_qw;
  352.    extern BITBOARD       good_bishop_kb;
  353.    extern BITBOARD       good_bishop_qb;
  354.  
  355.    extern BITBOARD       light_squares;
  356.    extern BITBOARD       dark_squares;
  357.    extern BITBOARD       not_rook_pawns;
  358.  
  359.    extern BITBOARD       plus1dir[65];
  360.    extern BITBOARD       plus7dir[65];
  361.    extern BITBOARD       plus8dir[65];
  362.    extern BITBOARD       plus9dir[65];
  363.    extern BITBOARD       minus1dir[65];
  364.    extern BITBOARD       minus7dir[65];
  365.    extern BITBOARD       minus8dir[65];
  366.    extern BITBOARD       minus9dir[65];
  367.  
  368.    extern BITBOARD       mask_eptest[64];
  369. #  if !defined(CRAY1)
  370.      extern BITBOARD       mask_1;
  371.      extern BITBOARD       mask_2;
  372.      extern BITBOARD       mask_3;
  373.      extern BITBOARD       mask_4;
  374.      extern BITBOARD       mask_8;
  375.      extern BITBOARD       mask_16;
  376.      extern BITBOARD       mask_32;
  377.      extern BITBOARD       mask_72;
  378.      extern BITBOARD       mask_80;
  379.      extern BITBOARD       mask_85;
  380.      extern BITBOARD       mask_96;
  381.      extern BITBOARD       mask_107;
  382.      extern BITBOARD       mask_108;
  383.      extern BITBOARD       mask_112;
  384.      extern BITBOARD       mask_118;
  385.      extern BITBOARD       mask_120;
  386.      extern BITBOARD       mask_121;
  387.      extern BITBOARD       mask_127;
  388. #  endif
  389.    extern BITBOARD       mask_clear_entry;
  390.  
  391. #  if !defined(CRAY1)
  392.      extern unsigned char  first_ones[65536];
  393.      extern unsigned char  last_ones[65536];
  394. #  endif
  395.    extern unsigned char  first_ones_8bit[256];
  396.    extern unsigned char  last_ones_8bit[256];
  397.    extern unsigned char  connected_passed[256];
  398.  
  399.    extern BITBOARD       mask_kingside_attack_w1;
  400.    extern BITBOARD       mask_kingside_attack_w2;
  401.    extern BITBOARD       mask_kingside_attack_b1;
  402.    extern BITBOARD       mask_kingside_attack_b2;
  403.    extern BITBOARD       mask_queenside_attack_w1;
  404.    extern BITBOARD       mask_queenside_attack_w2;
  405.    extern BITBOARD       mask_queenside_attack_b1;
  406.    extern BITBOARD       mask_queenside_attack_b2;
  407.  
  408.    extern BITBOARD       mask_pawn_protected_b[64];
  409.    extern BITBOARD       mask_pawn_protected_w[64];
  410.    extern BITBOARD       mask_pawn_isolated[64];
  411.    extern BITBOARD       mask_pawn_passed_w[64];
  412.    extern BITBOARD       mask_pawn_passed_b[64];
  413.    extern BITBOARD       mask_promotion_threat_w[64];
  414.    extern BITBOARD       mask_promotion_threat_b[64];
  415.    extern BITBOARD       mask_pawn_connected[64];
  416.    extern BITBOARD       mask_no_pawn_attacks_w[64];
  417.    extern BITBOARD       mask_no_pawn_attacks_b[64];
  418.    extern BITBOARD       mask_a1_corner;
  419.    extern BITBOARD       mask_a8_corner;
  420.    extern BITBOARD       mask_h1_corner;
  421.    extern BITBOARD       mask_h8_corner;
  422.    extern BITBOARD       white_minor_pieces;
  423.    extern BITBOARD       black_minor_pieces;
  424.    extern BITBOARD       white_center_pawns;
  425.    extern BITBOARD       black_center_pawns;
  426.    extern BITBOARD       white_pawn_race_wtm[64];
  427.    extern BITBOARD       white_pawn_race_btm[64];
  428.    extern BITBOARD       black_pawn_race_wtm[64];
  429.    extern BITBOARD       black_pawn_race_btm[64];
  430.  
  431.    extern BITBOARD       mask_wk_4th, mask_wq_4th, mask_bk_4th, mask_bq_4th;
  432.    extern BITBOARD       mask_wk_5th, mask_wq_5th, mask_bk_5th, mask_bq_5th;
  433.    extern BOOK_POSITION  book_buffer[BOOK_CLUSTER_SIZE];
  434.    extern BOOK_POSITION  books_buffer[BOOK_CLUSTER_SIZE];
  435.  
  436.    extern unsigned int   thread_start_time[CPUS];
  437. #  if defined(SMP)
  438.    extern TREE               *local[MAX_BLOCKS+1];
  439.    extern TREE               *volatile thread[CPUS];
  440.    extern lock_t             lock_hasha, lock_hashb, lock_pawn_hash, lock_smp, lock_io;
  441.    extern volatile int       smp_idle;
  442.    extern volatile int       smp_threads;
  443.    extern pthread_attr_t     pthread_attr;
  444. #  else
  445.    extern TREE               local_data[1], *local[1];
  446. #  endif
  447. #endif
  448.