1 #pragma once 2 extern int scale; 3 extern char version[8]; 4 extern int presult; 5 extern PLAYING_MODE mode; 6 extern int batch_mode; 7 extern int swindle_mode; 8 extern int call_flag; 9 extern int crafty_rating; 10 extern int opponent_rating; 11 extern int time_used; 12 extern int time_used_opponent; 13 extern uint64_t total_moves; 14 extern int allow_cores; 15 extern int allow_memory; 16 extern int initialized; 17 extern int early_exit; 18 extern char *AK_list[128]; 19 extern char *GM_list[128]; 20 extern char *IM_list[128]; 21 extern char *B_list[128]; 22 extern char *SP_list[128]; 23 extern char *SP_opening_filename[128]; 24 extern char *SP_personality_filename[128]; 25 extern FILE *input_stream; 26 extern FILE *book_file; 27 extern FILE *books_file; 28 extern FILE *normal_bs_file; 29 extern FILE *computer_bs_file; 30 extern FILE *history_file; 31 extern FILE *log_file; 32 extern int log_id; 33 extern int output_format; 34 #if defined(SYZYGY) 35 extern int EGTBlimit; 36 extern int EGTB_use; 37 extern int EGTB_draw; 38 extern int EGTB_depth; 39 extern int EGTB_setup; 40 #endif 41 extern int last_mate_score; 42 extern int last_opponent_move; 43 extern int check_depth; 44 extern int null_depth; 45 extern int null_divisor; 46 extern int LMR_rdepth; 47 extern int LMR_min; 48 extern int LMR_max; 49 extern double LMR_db; 50 extern double LMR_mb; 51 extern double LMR_s; 52 extern uint8_t LMR[32][64]; 53 extern int rep_index; 54 extern int pgn_suggested_percent; 55 extern char pgn_event[128]; 56 extern char pgn_date[128]; 57 extern char pgn_round[128]; 58 extern char pgn_site[128]; 59 extern char pgn_white[128]; 60 extern char pgn_white_elo[128]; 61 extern char pgn_black[128]; 62 extern char pgn_black_elo[128]; 63 extern char pgn_result[128]; 64 extern char log_filename[256]; 65 extern char history_filename[256]; 66 extern int number_of_solutions; 67 extern int solutions[10]; 68 extern int solution_type; 69 extern int abs_draw_score; 70 extern int accept_draws; 71 extern int offer_draws; 72 extern int dynamic_draw_score; 73 extern int adaptive_hash; 74 extern size_t adaptive_hash_min; 75 extern size_t adaptive_hash_max; 76 extern size_t adaptive_hashp_min; 77 extern size_t adaptive_hashp_max; 78 extern int over; 79 extern int xboard; 80 extern int xboard_done; 81 extern int pong; 82 extern char book_path[128]; 83 extern char log_path[128]; 84 extern char tb_path[128]; 85 extern char rc_path[128]; 86 extern char cmd_buffer[4096]; 87 extern char *args[512]; 88 extern char buffer[4096]; 89 extern int line_length; 90 extern unsigned char convert_buff[8]; 91 extern int nargs; 92 extern int kibitz; 93 extern int game_wtm; 94 extern int last_search_value; 95 extern int FP_margin[16]; 96 extern int FP_depth; 97 extern int LMP[16]; 98 extern int LMP_depth; 99 extern int LMP_base; 100 extern double LMP_scale; 101 extern double LMP_scale; 102 extern int failhi_delta, faillo_delta; 103 extern int ponder_value; 104 extern int move_actually_played; 105 extern int analyze_mode; 106 extern int annotate_mode; 107 extern int input_status; /* 0=no input; 108 1=predicted move read; 109 2=unpredicted move read; 110 3=something read, not executed. */ 111 extern int resign; 112 extern int resign_counter; 113 extern int resign_count; 114 extern int draw_counter; 115 extern int draw_count; 116 extern int draw_offer_pending; 117 extern int draw_offered; 118 extern char audible_alarm; 119 extern char speech; 120 extern char ponder_text[512]; 121 extern char book_hint[512]; 122 extern int post; 123 extern int search_depth; 124 extern uint64_t search_nodes; 125 extern uint64_t temp_search_nodes; 126 extern int search_move; 127 extern int ponder; 128 extern int ponder_move; 129 extern int force; 130 extern unsigned ponder_moves[256]; 131 extern int num_ponder_moves; 132 extern char initial_position[80]; 133 extern int predicted; 134 extern int trace_level; 135 extern int book_move; 136 extern int book_accept_mask; 137 extern int book_reject_mask; 138 extern int book_random; 139 extern float book_weight_freq; 140 extern float book_weight_eval; 141 extern float book_weight_learn; 142 extern int book_search_trigger; 143 extern int book_selection_width; 144 extern int show_book; 145 extern int learn; 146 extern int learning; 147 extern int learn_value; 148 extern int abort_search; 149 extern int iteration; 150 extern int root_wtm; 151 extern int last_root_value; 152 extern ROOT_MOVE root_moves[256]; 153 extern int n_root_moves; 154 extern int difficulty; 155 extern int time_limit; 156 extern int absolute_time_limit; 157 extern int search_time_limit; 158 extern int burp; 159 extern int quit; 160 extern unsigned opponent_start_time, opponent_end_time; 161 extern unsigned program_start_time, program_end_time; 162 extern unsigned start_time, end_time; 163 extern TREE *block[MAX_BLOCKS + 1]; 164 extern THREAD thread[CPUS]; 165 #if (CPUS > 1) 166 extern lock_t lock_smp, lock_io; 167 # if defined(UNIX) 168 extern pthread_attr_t attributes; 169 # endif 170 #endif 171 extern unsigned int hardware_processors; 172 extern unsigned int smp_max_threads; 173 extern unsigned int smp_split_group; 174 extern unsigned int smp_split_at_root; 175 extern unsigned int smp_min_split_depth; 176 extern unsigned int smp_gratuitous_depth; 177 extern unsigned int smp_gratuitous_limit; 178 extern int smp_nice; 179 extern int smp_affinity; 180 extern int smp_affinity_increment; 181 extern int smp_numa; 182 extern int autotune_params; 183 extern struct autotune tune[16]; 184 extern unsigned smp_split_nodes; 185 extern unsigned parallel_splits; 186 extern unsigned parallel_splits_wasted; 187 extern unsigned parallel_aborts; 188 extern unsigned parallel_joins; 189 extern unsigned busy_percent; 190 extern uint64_t game_max_blocks; 191 extern volatile int smp_split; 192 extern volatile int smp_threads; 193 extern volatile int initialized_threads; 194 extern int crafty_is_white; 195 extern unsigned nodes_between_time_checks; 196 extern unsigned nodes_per_second; 197 extern int next_time_check; 198 extern int transposition_age; 199 extern int thinking; 200 extern int pondering; 201 extern int puzzling; 202 extern int booking; 203 extern int display_options; 204 extern unsigned noise_level; 205 extern int noise_block; 206 extern int tc_moves; 207 extern int tc_time; 208 extern int tc_time_remaining[2]; 209 extern int tc_moves_remaining[2]; 210 extern int tc_secondary_moves; 211 extern int tc_secondary_time; 212 extern int tc_increment; 213 extern int tc_sudden_death; 214 extern int tc_safety_margin; 215 extern int draw_score[2]; 216 extern char kibitz_text[4096]; 217 extern int kibitz_depth; 218 extern int move_number; 219 extern int moves_out_of_book; 220 extern int first_nonbook_factor; 221 extern int first_nonbook_span; 222 #if defined(SKILL) 223 extern int skill; 224 #endif 225 extern int book_learn_eval[LEARN_INTERVAL]; 226 extern int book_learn_depth[LEARN_INTERVAL]; 227 extern int learn_seekto[64]; 228 extern uint64_t learn_key[64]; 229 extern int learn_nmoves[64]; 230 extern uint64_t book_learn_key; 231 extern int learn_positions_count; 232 extern int book_learn_nmoves; 233 extern int book_learn_seekto; 234 extern int usage_level; 235 extern size_t hash_table_size; 236 extern size_t hash_path_size; 237 extern uint64_t hash_mask; 238 extern uint64_t mask_clear_entry; 239 extern uint64_t hash_path_mask; 240 extern size_t pawn_hash_table_size; 241 extern uint64_t pawn_hash_mask; 242 extern HASH_ENTRY *hash_table; 243 extern HPATH_ENTRY *hash_path; 244 extern PAWN_HASH_ENTRY *pawn_hash_table; 245 extern void *segments[MAX_BLOCKS + 32][2]; 246 extern int nsegments; 247 extern const int pcval[7]; 248 extern const int p_vals[7]; 249 extern const int MVV_LVA[7][7]; 250 extern const int pieces[2][7]; 251 extern const int lower_n; 252 extern const int lower_b; 253 extern const int mobility_score_n[4]; 254 extern const int mobility_score_b[4]; 255 extern const int mobility_score_r[4]; 256 extern const int mob_curve_r[48]; 257 extern PATH last_pv; 258 extern int last_value; 259 extern const char translate[13]; 260 extern const char empty_sqs[9]; 261 extern const int mate[64]; 262 extern const uint64_t magic_rook[64]; 263 extern const uint64_t magic_rook_mask[64]; 264 extern const unsigned magic_rook_shift[64]; 265 extern const uint64_t mobility_mask_b[4]; 266 extern const uint64_t mobility_mask_r[4]; 267 extern int16_t *magic_bishop_mobility_indices[64]; 268 extern int16_t magic_bishop_mobility_table[5248]; 269 extern uint64_t *magic_rook_indices[64]; 270 extern uint64_t magic_rook_table[102400]; 271 extern int16_t *magic_rook_mobility_indices[64]; 272 extern int16_t magic_rook_mobility_table[102400]; 273 extern const uint64_t magic_bishop[64]; 274 extern const uint64_t magic_bishop_mask[64]; 275 extern const unsigned magic_bishop_shift[64]; 276 extern uint64_t *magic_bishop_indices[64]; 277 extern uint64_t magic_bishop_table[5248]; 278 extern int16_t *magic_bishop_mobility_indices[64]; 279 extern int16_t magic_bishop_mobility_table[5248]; 280 extern int8_t directions[64][64]; 281 extern uint64_t pawn_attacks[2][64]; 282 extern uint64_t knight_attacks[64]; 283 extern uint64_t rook_attacks[64]; 284 extern uint64_t bishop_attacks[64]; 285 extern POSITION display; 286 extern uint64_t king_attacks[64]; 287 extern uint64_t intervening[64][64]; 288 extern int history[1024]; 289 extern const uint64_t randoms[2][7][64]; 290 extern const uint64_t castle_random[2][2]; 291 extern const uint64_t enpassant_random[65]; 292 extern uint64_t clear_mask[65]; 293 extern uint64_t set_mask[65]; 294 extern uint64_t file_mask[8]; 295 extern uint64_t rank_mask[8]; 296 extern const uint64_t OO[2]; 297 extern const uint64_t OOO[2]; 298 extern const uint64_t mask_efgh, mask_fgh, mask_abc, mask_abcd; 299 extern const uint64_t mask_advance_2_w; 300 extern const uint64_t mask_advance_2_b; 301 extern const uint64_t mask_left_edge; 302 extern const uint64_t mask_right_edge; 303 extern const uint64_t mask_not_edge; 304 extern const uint64_t mask_rook_files; 305 extern const uint64_t dark_squares; 306 extern const uint64_t not_rook_pawns; 307 extern const uint64_t not_rook_files; 308 extern uint64_t plus1dir[65]; 309 extern uint64_t plus7dir[65]; 310 extern uint64_t plus8dir[65]; 311 extern uint64_t plus9dir[65]; 312 extern uint64_t minus1dir[65]; 313 extern uint64_t minus7dir[65]; 314 extern uint64_t minus8dir[65]; 315 extern uint64_t minus9dir[65]; 316 extern uint64_t mask_eptest[64]; 317 #if !defined(INLINEASM) 318 extern unsigned char msb[65536]; 319 extern unsigned char lsb[65536]; 320 #endif 321 extern unsigned char msb_8bit[256]; 322 extern unsigned char lsb_8bit[256]; 323 extern unsigned char pop_cnt_8bit[256]; 324 extern uint64_t mask_pawn_connected[2][64]; 325 extern uint64_t mask_pawn_isolated[64]; 326 extern uint64_t mask_passed[2][64]; 327 extern uint64_t mask_pattacks[2][64]; 328 extern uint64_t pawn_race[2][2][64]; 329 extern BOOK_POSITION book_buffer[BOOK_CLUSTER_SIZE]; 330 extern BOOK_POSITION book_buffer_char[BOOK_CLUSTER_SIZE]; 331 extern const int rankflip[2][8]; 332 extern const int sqflip[2][64]; 333 extern const int rank1[2]; 334 extern const int rank2[2]; 335 extern const int rank3[2]; 336 extern const int rank4[2]; 337 extern const int rank5[2]; 338 extern const int rank6[2]; 339 extern const int rank7[2]; 340 extern const int rank8[2]; 341 extern const int epdir[2]; 342 extern const int csq[2]; 343 extern const int dsq[2]; 344 extern const int esq[2]; 345 extern const int fsq[2]; 346 extern const int gsq[2]; 347 extern const int sign[2]; 348 extern const char square_color[64]; 349 extern uint64_t distance_ring[64][8]; 350 extern const int OOsqs[2][3]; 351 extern const int OOOsqs[2][3]; 352 extern const int OOfrom[2]; 353 extern const int OOto[2]; 354 extern const int OOOto[2]; 355 extern const int epsq[2]; 356 extern const int rook_A[2]; 357 extern const int rook_D[2]; 358 extern const int rook_F[2]; 359 extern const int rook_G[2]; 360 extern const int rook_H[2]; 361 extern const int capleft[2]; 362 extern const int capright[2]; 363 extern const int pawnadv1[2]; 364 extern const int pawnadv2[2]; 365 extern int piece_values[2][7]; 366 extern struct personality_term personality_packet[256]; 367