Subversion Repositories Games.Chess Giants

Rev

Rev 108 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 108 Rev 154
Line 1... Line 1...
1
#include "chess.h"
1
#include "chess.h"
2
/* *INDENT-OFF* */#if !defined(INLINEASM)
2
/* *INDENT-OFF* */#if !defined(INLINEASM)
3
unsigned char msb[65536];
3
unsigned char msb[65536];
4
unsigned char lsb[65536];
4
unsigned char lsb[65536];
5
#endif
5
#endif
6
unsigned char msb_8bit[256];
6
unsigned char msb_8bit[256];
7
unsigned char lsb_8bit[256];
7
unsigned char lsb_8bit[256];
8
unsigned char pop_cnt_8bit[256];
8
unsigned char pop_cnt_8bit[256];
Line 41... Line 41...
41
char pgn_black[128] = {"Crafty " VERSION};
41
char pgn_round[128] = {"?"};
42
char pgn_black_elo[128] = {""};
42
char pgn_white[128] = {"unknown"};
43
char pgn_result[128] = {"*"};
43
char pgn_white_elo[128] = {""};
44
char *B_list[128];
44
char pgn_black[128] = {"Crafty " VERSION};
45
char *AK_list[128];
45
char pgn_black_elo[128] = {""};
46
char *GM_list[128];
-
 
47
char *IM_list[128];
46
char pgn_result[128] = {"*"};
48
char *SP_list[128];
47
char *B_list[128];
49
char *SP_opening_filename[128];
48
char *AK_list[128];
50
char *SP_personality_filename[128];
49
char *GM_list[128];
51
int output_format = 0;
50
char *IM_list[128];
52
#if !defined(NOEGTB)
51
char *SP_list[128];
53
int EGTBlimit = 0;
-
 
54
int EGTB_use = 0;
-
 
55
int EGTB_draw = 0;
52
char *SP_opening_filename[128];
56
int EGTB_depth = 6;
53
char *SP_personality_filename[128];
57
size_t EGTB_cache_size = 4096 * 4096;
54
int output_format = 0;
58
void *EGTB_cache = (void *) 0;
55
#if defined(SYZYGY)
59
int EGTB_setup = 0;
56
int EGTBlimit = 0;
Line 443... Line 440...
443
  magic_rook_mobility_table + 71680, magic_rook_mobility_table + 35840,
440
  magic_rook_mobility_table + 28672, magic_rook_mobility_table + 5120,
444
  magic_rook_mobility_table + 39936, magic_rook_mobility_table + 13312,
441
  magic_rook_mobility_table + 8192, magic_rook_mobility_table + 1024,
445
  magic_rook_mobility_table + 17408, magic_rook_mobility_table + 54272,
442
  magic_rook_mobility_table + 3072, magic_rook_mobility_table + 20480,
446
  magic_rook_mobility_table + 60416, magic_rook_mobility_table + 83968,
443
  magic_rook_mobility_table + 23552, magic_rook_mobility_table + 65536,
447
  magic_rook_mobility_table + 90112, magic_rook_mobility_table + 75776,
444
  magic_rook_mobility_table + 30720, magic_rook_mobility_table + 34816,
448
  magic_rook_mobility_table + 40960, magic_rook_mobility_table + 45056,
445
  magic_rook_mobility_table + 9216, magic_rook_mobility_table + 12288,
449
  magic_rook_mobility_table + 49152, magic_rook_mobility_table + 55296,
446
  magic_rook_mobility_table + 16384, magic_rook_mobility_table + 21504,
450
  magic_rook_mobility_table + 79872, magic_rook_mobility_table + 98304
447
  magic_rook_mobility_table + 59392, magic_rook_mobility_table + 67584,
451
};
448
  magic_rook_mobility_table + 71680, magic_rook_mobility_table + 35840,
452
const uint64_t magic_rook[64] = {
449
  magic_rook_mobility_table + 39936, magic_rook_mobility_table + 13312,
453
  0x0080001020400080ull, 0x0040001000200040ull, 0x0080081000200080ull,
450
  magic_rook_mobility_table + 17408, magic_rook_mobility_table + 54272,
454
  0x0080040800100080ull, 0x0080020400080080ull, 0x0080010200040080ull,
451
  magic_rook_mobility_table + 60416, magic_rook_mobility_table + 83968,
455
  0x0080008001000200ull, 0x0080002040800100ull, 0x0000800020400080ull,
452
  magic_rook_mobility_table + 90112, magic_rook_mobility_table + 75776,
456
  0x0000400020005000ull, 0x0000801000200080ull, 0x0000800800100080ull,
453
  magic_rook_mobility_table + 40960, magic_rook_mobility_table + 45056,
457
  0x0000800400080080ull, 0x0000800200040080ull, 0x0000800100020080ull,
454
  magic_rook_mobility_table + 49152, magic_rook_mobility_table + 55296,
-
 
455
  magic_rook_mobility_table + 79872, magic_rook_mobility_table + 98304
458
  0x0000800040800100ull, 0x0000208000400080ull, 0x0000404000201000ull,
456
};
-
 
457
const uint64_t magic_rook[64] = {
459
  0x0000808010002000ull, 0x0000808008001000ull, 0x0000808004000800ull,
458
  0x0080001020400080ull, 0x0040001000200040ull, 0x0080081000200080ull,
460
  0x0000808002000400ull, 0x0000010100020004ull, 0x0000020000408104ull,
459
  0x0080040800100080ull, 0x0080020400080080ull, 0x0080010200040080ull,
-
 
460
  0x0080008001000200ull, 0x0080002040800100ull, 0x0000800020400080ull,
461
  0x0000208080004000ull, 0x0000200040005000ull, 0x0000100080200080ull,
461
  0x0000400020005000ull, 0x0000801000200080ull, 0x0000800800100080ull,
462
  0x0000080080100080ull, 0x0000040080080080ull, 0x0000020080040080ull,
462
  0x0000800400080080ull, 0x0000800200040080ull, 0x0000800100020080ull,
463
  0x0000010080800200ull, 0x0000800080004100ull, 0x0000204000800080ull,
463
  0x0000800040800100ull, 0x0000208000400080ull, 0x0000404000201000ull,
464
  0x0000200040401000ull, 0x0000100080802000ull, 0x0000080080801000ull,
464
  0x0000808010002000ull, 0x0000808008001000ull, 0x0000808004000800ull,
465
  0x0000040080800800ull, 0x0000020080800400ull, 0x0000020001010004ull,
465
  0x0000808002000400ull, 0x0000010100020004ull, 0x0000020000408104ull,
Line 474... Line 474...
474
  0x0001FFFAABFAD1A2ull
474
  0x0000204000800080ull, 0x0000200040008080ull, 0x0000100020008080ull,
475
};
475
  0x0000080010008080ull, 0x0000040008008080ull, 0x0000020004008080ull,
476
const uint64_t magic_rook_mask[64] = {
476
  0x0000800100020080ull, 0x0000800041000080ull, 0x00FFFCDDFCED714Aull,
477
  0x000101010101017Eull, 0x000202020202027Cull, 0x000404040404047Aull,
477
  0x007FFCDDFCED714Aull, 0x003FFFCDFFD88096ull, 0x0000040810002101ull,
478
  0x0008080808080876ull, 0x001010101010106Eull, 0x002020202020205Eull,
478
  0x0001000204080011ull, 0x0001000204000801ull, 0x0001000082000401ull,
479
  0x004040404040403Eull, 0x008080808080807Eull, 0x0001010101017E00ull,
479
  0x0001FFFAABFAD1A2ull
480
  0x0002020202027C00ull, 0x0004040404047A00ull, 0x0008080808087600ull,
480
};
481
  0x0010101010106E00ull, 0x0020202020205E00ull, 0x0040404040403E00ull,
481
const uint64_t magic_rook_mask[64] = {
482
  0x0080808080807E00ull, 0x00010101017E0100ull, 0x00020202027C0200ull,
482
  0x000101010101017Eull, 0x000202020202027Cull, 0x000404040404047Aull,
483
  0x00040404047A0400ull, 0x0008080808760800ull, 0x00101010106E1000ull,
483
  0x0008080808080876ull, 0x001010101010106Eull, 0x002020202020205Eull,
484
  0x00202020205E2000ull, 0x00404040403E4000ull, 0x00808080807E8000ull,
484
  0x004040404040403Eull, 0x008080808080807Eull, 0x0001010101017E00ull,
485
  0x000101017E010100ull, 0x000202027C020200ull, 0x000404047A040400ull,
485
  0x0002020202027C00ull, 0x0004040404047A00ull, 0x0008080808087600ull,
486
  0x0008080876080800ull, 0x001010106E101000ull, 0x002020205E202000ull,
486
  0x0010101010106E00ull, 0x0020202020205E00ull, 0x0040404040403E00ull,
487
  0x004040403E404000ull, 0x008080807E808000ull, 0x0001017E01010100ull,
487
  0x0080808080807E00ull, 0x00010101017E0100ull, 0x00020202027C0200ull,
488
  0x0002027C02020200ull, 0x0004047A04040400ull, 0x0008087608080800ull,
488
  0x00040404047A0400ull, 0x0008080808760800ull, 0x00101010106E1000ull,
489
  0x0010106E10101000ull, 0x0020205E20202000ull, 0x0040403E40404000ull,
489
  0x00202020205E2000ull, 0x00404040403E4000ull, 0x00808080807E8000ull,
490
  0x0080807E80808000ull, 0x00017E0101010100ull, 0x00027C0202020200ull,
490
  0x000101017E010100ull, 0x000202027C020200ull, 0x000404047A040400ull,
491
  0x00047A0404040400ull, 0x0008760808080800ull, 0x00106E1010101000ull,
491
  0x0008080876080800ull, 0x001010106E101000ull, 0x002020205E202000ull,
492
  0x00205E2020202000ull, 0x00403E4040404000ull, 0x00807E8080808000ull,
-
 
493
  0x007E010101010100ull, 0x007C020202020200ull, 0x007A040404040400ull,
492
  0x004040403E404000ull, 0x008080807E808000ull, 0x0001017E01010100ull,
494
  0x0076080808080800ull, 0x006E101010101000ull, 0x005E202020202000ull,
493
  0x0002027C02020200ull, 0x0004047A04040400ull, 0x0008087608080800ull,
495
  0x003E404040404000ull, 0x007E808080808000ull, 0x7E01010101010100ull,
494
  0x0010106E10101000ull, 0x0020205E20202000ull, 0x0040403E40404000ull,
496
  0x7C02020202020200ull, 0x7A04040404040400ull, 0x7608080808080800ull,
495
  0x0080807E80808000ull, 0x00017E0101010100ull, 0x00027C0202020200ull,
497
  0x6E10101010101000ull, 0x5E20202020202000ull, 0x3E40404040404000ull,
496
  0x00047A0404040400ull, 0x0008760808080800ull, 0x00106E1010101000ull,
498
  0x7E80808080808000ull
497
  0x00205E2020202000ull, 0x00403E4040404000ull, 0x00807E8080808000ull,
499
};
498
  0x007E010101010100ull, 0x007C020202020200ull, 0x007A040404040400ull,
500
const unsigned magic_rook_shift[64] = {
499
  0x0076080808080800ull, 0x006E101010101000ull, 0x005E202020202000ull,
501
  52, 53, 53, 53, 53, 53, 53, 52,
500
  0x003E404040404000ull, 0x007E808080808000ull, 0x7E01010101010100ull,
502
  53, 54, 54, 54, 54, 54, 54, 53,
501
  0x7C02020202020200ull, 0x7A04040404040400ull, 0x7608080808080800ull,
503
  53, 54, 54, 54, 54, 54, 54, 53,
502
  0x6E10101010101000ull, 0x5E20202020202000ull, 0x3E40404040404000ull,
504
  53, 54, 54, 54, 54, 54, 54, 53,
503
  0x7E80808080808000ull
505
  53, 54, 54, 54, 54, 54, 54, 53,
504
};
Line 547... Line 546...
547
const int rank4[2] = {RANK5, RANK4};
546
  A7, B7, C7, D7, E7, F7, G7, H7,
548
const int rank5[2] = {RANK4, RANK5};
547
  A8, B8, C8, D8, E8, F8, G8, H8}
549
const int rank6[2] = {RANK3, RANK6};
548
};
550
const int rank7[2] = {RANK2, RANK7};
549
const int rank1[2] = {RANK8, RANK1};
551
const int rank8[2] = {RANK1, RANK8};
550
const int rank2[2] = {RANK7, RANK2};
552
const int epdir[2] = {8, -8};
551
const int rank3[2] = {RANK6, RANK3};
553
const int csq[2] = {C8, C1};
552
const int rank4[2] = {RANK5, RANK4};
554
const int dsq[2] = {D8, D1};
553
const int rank5[2] = {RANK4, RANK5};
555
const int esq[2] = {E8, E1};
554
const int rank6[2] = {RANK3, RANK6};
556
const int fsq[2] = {F8, F1};
555
const int rank7[2] = {RANK2, RANK7};
557
const int gsq[2] = {G8, G1};
556
const int rank8[2] = {RANK1, RANK8};
Line 574... Line 573...
574
    {0,  5<<21,  4<<21,  4<<21,  3<<21,  2<<21,  1<<21},
573
const int capleft[2] = {+9, -7};
575
    {0, 10<<21,  9<<21,  9<<21,  8<<21,  7<<21,  6<<21},
574
const int capright[2] = {+7, -9};
576
    {0, 15<<21, 14<<21, 14<<21, 13<<21, 12<<21, 11<<21},
575
const char empty_sqs[9] = {0, '1', '2', '3', '4', '5', '6', '7', '8'};
577
    {0, 15<<21, 14<<21, 14<<21, 13<<21, 12<<21, 11<<21},
576
const int pcval[7] = {0, 100, 300, 300, 500, 900, 9900};
578
    {0, 20<<21, 19<<21, 19<<21, 18<<21, 17<<21, 16<<21},
577
const int p_vals[7] = {0, 1, 3, 3, 5, 9, 99};
-
 
578
const int MVV_LVA[7][7] = {
579
    {0, 25<<21, 24<<21, 24<<21, 23<<21, 22<<21, 21<<21},
579
    {0,  5<<21,  4<<21,  4<<21,  3<<21,  2<<21,  1<<21},
580
    {0, 30<<21, 29<<21, 29<<21, 28<<21, 27<<21, 26<<21}};
580
    {0, 10<<21,  9<<21,  9<<21,  8<<21,  7<<21,  6<<21},
581
const int pieces[2][7] = {
581
    {0, 15<<21, 14<<21, 14<<21, 13<<21, 12<<21, 11<<21},
582
  {0, -1, -2, -3, -4, -5, -6},
582
    {0, 15<<21, 14<<21, 14<<21, 13<<21, 12<<21, 11<<21},
583
  {0, +1, +2, +3, +4, +5, +6}
583
    {0, 20<<21, 19<<21, 19<<21, 18<<21, 17<<21, 16<<21},
584
};
584
    {0, 25<<21, 24<<21, 24<<21, 23<<21, 22<<21, 21<<21},
-
 
585
    {0, 30<<21, 29<<21, 29<<21, 28<<21, 27<<21, 26<<21}};
585
const int lower_n = 16;
586
const int pieces[2][7] = {
-
 
587
  {0, -1, -2, -3, -4, -5, -6},
-
 
588
  {0, +1, +2, +3, +4, +5, +6}
-
 
589
};
-
 
590
const int lower_n = 16;
586
const int lower_b = 10;
591
const int lower_b = 10;
587
const int mobility_score_n[4] = {1, 2, 3, 4};
592
const int mobility_score_n[4] = {1, 2, 3, 4};
588
const int mobility_score_b[4] = {1, 2, 3, 4};
593
const int mobility_score_b[4] = {1, 2, 3, 4};
589
const int mobility_score_r[4] = {1, 2, 3, 4};
594
const int mobility_score_r[4] = {1, 2, 3, 4};
590
const int mob_curve_r[48] = {
595
const int mob_curve_r[48] = {
Line 653... Line 658...
653
658
654
659
655
660
656
661
657
662
658
-
 
659
663
660
664
661
665
662
666
663
667
Line 670... Line 674...
670
674
671
675
672
676
673
677
674
678
675
-
 
676
-
 
677
679
678
680
679
681
680
682
681
683
Line 1054... Line 1056...
1054
1056
1055
1057
1056
1058
1057
1059
1058
1060
1059
-
 
1060
-
 
1061
-
 
1062
-
 
1063
-
 
1064
-
 
1065
-
 
1066
-
 
1067
1061
1068
1062
1069
1063