Chess Engine
C++ chess engine with movegen, bitboards, and Arduino-friendly docs
Loading...
Searching...
No Matches
defs.h
Go to the documentation of this file.
1#pragma once
2
3#include "stdlib.h"
4#include "stdio.h"
5
6#include "board/board_data.h"
7
8
9// #define DEBUG
10
11#define MAX_HASH 1024
12
13#ifndef DEBUG
14#define ASSERT(n)
15#else
16#define ASSERT(n) \
17if(!(n)) { \
18printf("%s - Failed",#n); \
19printf("On %s ",__DATE__); \
20printf("At %s ",__TIME__); \
21printf("In File %s ",__FILE__);
22printf("At Line %d\n",__LINE__); \
23exit(1);}
24#endif
25
26typedef unsigned long long U64;
27
28#define NAME "Vice 1.1"
29#define BRD_SQ_NUM 120
30
31#define MAXGAMEMOVES 2048
32#define MAXPOSITIONMOVES 256
33#define MAXDEPTH 64
34
35#define START_FEN "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"
36
37#define INF_SCORE 30000
38#define ISMATE (INF_SCORE - MAXDEPTH)
39
40enum { EMPTY, wP, wN, wB, wR, wQ, wK, bP, bN, bB, bR, bQ, bK };
43
44enum { WHITE, BLACK, BOTH };
46enum {
47 A1 = 21, B1, C1, D1, E1, F1, G1, H1,
48 A2 = 31, B2, C2, D2, E2, F2, G2, H2,
49 A3 = 41, B3, C3, D3, E3, F3, G3, H3,
50 A4 = 51, B4, C4, D4, E4, F4, G4, H4,
51 A5 = 61, B5, C5, D5, E5, F5, G5, H5,
52 A6 = 71, B6, C6, D6, E6, F6, G6, H6,
53 A7 = 81, B7, C7, D7, E7, F7, G7, H7,
54 A8 = 91, B8, C8, D8, E8, F8, G8, H8, NO_SQ, OFFBOARD
55};
56
57enum { FALSE, TRUE };
58
59enum { WKCA = 1, WQCA = 2, BKCA = 4, BQCA = 8 };
60
61typedef struct {
62 int move;
63 int score;
64} S_MOVE;
65
66typedef struct {
68 int count;
70
72
73typedef struct {
75 int move;
76 int score;
77 int depth;
78 int flags;
80
81typedef struct {
86 int hit;
87 int cut;
89
90typedef struct {
91
92 int move;
94 int enPas;
97
98} S_UNDO;
99
100typedef struct {
101
104
105 int KingSq[2];
106
107 int side;
108 int enPas;
110
111 int ply;
113
115
117
118 int pceNum[13];
119 int bigPce[2];
120 int majPce[2];
121 int minPce[2];
122 int material[2];
123
125
126 // piece list
127 int pList[13][10];
128
131
134
135} S_BOARD;
136
137typedef struct {
138
141 int depth;
144
145 long nodes;
146
147 int quit;
149
150 float fh;
151 float fhf;
153
156
158
159typedef struct {
161} S_OPTIONS;
162
163
164#define FROMSQ(m) ((m) & 0x7F)
165#define TOSQ(m) (((m)>>7) & 0x7F)
166#define CAPTURED(m) (((m)>>14) & 0xF)
167#define PROMOTED(m) (((m)>>20) & 0xF)
168
169#define MFLAGEP 0x40000
170#define MFLAGPS 0x80000
171#define MFLAGCA 0x1000000
172
173#define MFLAGCAP 0x7C000
174#define MFLAGPROM 0xF00000
175
176#define NOMOVE 0
177
178
179/* MACROS */
180
181#define FR2SQ(f,r) ( (21 + (f) ) + ( (r) * 10 ) )
182#define SQ64(sq120) (square120To64[(sq120)])
183#define SQ120(sq64) (square64To120[(sq64)])
184#define CLRBIT(bb,sq) ((bb) &= clearBitMask[(sq)])
185#define SETBIT(bb,sq) ((bb) |= setBitMask[(sq)])
186
187#define IsBQ(p) (isBishopQueen[(p)])
188#define IsRQ(p) (isRookQueen[(p)])
189#define IsKn(p) (isKnight[(p)])
190#define IsKi(p) (isKing[(p)])
191
192#define MIRROR64(sq) (Mirror64[(sq)])
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
#define MAXDEPTH
Definition defs.h:33
@ FILE_H
Definition defs.h:41
@ FILE_D
Definition defs.h:41
@ FILE_E
Definition defs.h:41
@ FILE_C
Definition defs.h:41
@ FILE_NONE
Definition defs.h:41
@ FILE_A
Definition defs.h:41
@ FILE_G
Definition defs.h:41
@ FILE_F
Definition defs.h:41
@ FILE_B
Definition defs.h:41
unsigned long long U64
Definition defs.h:26
@ bQ
Definition defs.h:40
@ wN
Definition defs.h:40
@ EMPTY
Definition defs.h:40
@ bN
Definition defs.h:40
@ wR
Definition defs.h:40
@ bP
Definition defs.h:40
@ bR
Definition defs.h:40
@ bB
Definition defs.h:40
@ wB
Definition defs.h:40
@ bK
Definition defs.h:40
@ wP
Definition defs.h:40
@ wK
Definition defs.h:40
@ wQ
Definition defs.h:40
@ WHITE
Definition defs.h:44
@ BOTH
Definition defs.h:44
@ BLACK
Definition defs.h:44
@ HFNONE
Definition defs.h:71
@ HFBETA
Definition defs.h:71
@ HFEXACT
Definition defs.h:71
@ HFALPHA
Definition defs.h:71
#define MAXPOSITIONMOVES
Definition defs.h:32
#define MAXGAMEMOVES
Definition defs.h:31
#define BRD_SQ_NUM
Definition defs.h:29
@ WQCA
Definition defs.h:59
@ BQCA
Definition defs.h:59
@ WKCA
Definition defs.h:59
@ BKCA
Definition defs.h:59
@ RANK_8
Definition defs.h:42
@ RANK_1
Definition defs.h:42
@ RANK_NONE
Definition defs.h:42
@ RANK_7
Definition defs.h:42
@ RANK_6
Definition defs.h:42
@ RANK_5
Definition defs.h:42
@ RANK_3
Definition defs.h:42
@ RANK_4
Definition defs.h:42
@ RANK_2
Definition defs.h:42
@ CONSOLEMODE
Definition defs.h:45
@ UCIMODE
Definition defs.h:45
@ XBOARDMODE
Definition defs.h:45
@ B3
Definition defs.h:49
@ D7
Definition defs.h:53
@ B6
Definition defs.h:52
@ F3
Definition defs.h:49
@ D4
Definition defs.h:50
@ E8
Definition defs.h:54
@ E4
Definition defs.h:50
@ E6
Definition defs.h:52
@ C4
Definition defs.h:50
@ A6
Definition defs.h:52
@ F5
Definition defs.h:51
@ C5
Definition defs.h:51
@ D1
Definition defs.h:47
@ H4
Definition defs.h:50
@ G5
Definition defs.h:51
@ B8
Definition defs.h:54
@ E7
Definition defs.h:53
@ E3
Definition defs.h:49
@ A2
Definition defs.h:48
@ A3
Definition defs.h:49
@ C7
Definition defs.h:53
@ H5
Definition defs.h:51
@ B7
Definition defs.h:53
@ F1
Definition defs.h:47
@ C2
Definition defs.h:48
@ C8
Definition defs.h:54
@ G6
Definition defs.h:52
@ E5
Definition defs.h:51
@ B4
Definition defs.h:50
@ F7
Definition defs.h:53
@ A1
Definition defs.h:47
@ A7
Definition defs.h:53
@ H1
Definition defs.h:47
@ D2
Definition defs.h:48
@ NO_SQ
Definition defs.h:54
@ F4
Definition defs.h:50
@ G3
Definition defs.h:49
@ B2
Definition defs.h:48
@ D5
Definition defs.h:51
@ OFFBOARD
Definition defs.h:54
@ G8
Definition defs.h:54
@ F6
Definition defs.h:52
@ F2
Definition defs.h:48
@ H6
Definition defs.h:52
@ A5
Definition defs.h:51
@ G1
Definition defs.h:47
@ E1
Definition defs.h:47
@ H7
Definition defs.h:53
@ H3
Definition defs.h:49
@ D6
Definition defs.h:52
@ H2
Definition defs.h:48
@ F8
Definition defs.h:54
@ E2
Definition defs.h:48
@ B1
Definition defs.h:47
@ A4
Definition defs.h:50
@ C3
Definition defs.h:49
@ H8
Definition defs.h:54
@ D3
Definition defs.h:49
@ C6
Definition defs.h:52
@ G7
Definition defs.h:53
@ C1
Definition defs.h:47
@ D8
Definition defs.h:54
@ G2
Definition defs.h:48
@ G4
Definition defs.h:50
@ B5
Definition defs.h:51
@ A8
Definition defs.h:54
@ FALSE
Definition defs.h:57
@ TRUE
Definition defs.h:57
int pList[13][10]
Definition defs.h:127
S_HASHTABLE HashTable[1]
Definition defs.h:129
int pieces[BRD_SQ_NUM]
Definition defs.h:102
int castlePerm
Definition defs.h:114
int pceNum[13]
Definition defs.h:118
int majPce[2]
Definition defs.h:120
int enPas
Definition defs.h:108
U64 pawns[3]
Definition defs.h:103
int KingSq[2]
Definition defs.h:105
int fiftyMove
Definition defs.h:109
int bigPce[2]
Definition defs.h:119
U64 posKey
Definition defs.h:116
int side
Definition defs.h:107
int hisPly
Definition defs.h:112
int searchKillers[2][MAXDEPTH]
Definition defs.h:133
int ply
Definition defs.h:111
int searchHistory[13][BRD_SQ_NUM]
Definition defs.h:132
int material[2]
Definition defs.h:122
int minPce[2]
Definition defs.h:121
int PvArray[MAXDEPTH]
Definition defs.h:130
S_UNDO history[MAXGAMEMOVES]
Definition defs.h:124
int move
Definition defs.h:75
int score
Definition defs.h:76
U64 posKey
Definition defs.h:74
int flags
Definition defs.h:78
int depth
Definition defs.h:77
int hit
Definition defs.h:86
int newWrite
Definition defs.h:84
int overWrite
Definition defs.h:85
S_HASHENTRY * pTable
Definition defs.h:82
int numEntries
Definition defs.h:83
int cut
Definition defs.h:87
Definition defs.h:61
int score
Definition defs.h:63
int move
Definition defs.h:62
int count
Definition defs.h:68
S_MOVE moves[MAXPOSITIONMOVES]
Definition defs.h:67
int UseBook
Definition defs.h:160
int nullCut
Definition defs.h:152
int POST_THINKING
Definition defs.h:155
int timeset
Definition defs.h:142
int movestogo
Definition defs.h:143
long nodes
Definition defs.h:145
int stoptime
Definition defs.h:140
int GAME_MODE
Definition defs.h:154
int depth
Definition defs.h:141
int quit
Definition defs.h:147
float fhf
Definition defs.h:151
int starttime
Definition defs.h:139
int stopped
Definition defs.h:148
float fh
Definition defs.h:150
Definition defs.h:90
U64 posKey
Definition defs.h:96
int enPas
Definition defs.h:94
int castlePerm
Definition defs.h:93
int move
Definition defs.h:92
int fiftyMove
Definition defs.h:95