https://www.chessprogramming.org/index.php?title=CPW-Engine_stdafx_h&feed=atom&action=history
CPW-Engine stdafx h - Revision history
2024-03-28T19:41:36Z
Revision history for this page on the wiki
MediaWiki 1.30.1
https://www.chessprogramming.org/index.php?title=CPW-Engine_stdafx_h&diff=9322&oldid=prev
GerdIsenberg: Created page with "'''Home * Engines * CPW-Engine * stdafx.h''' <pre> #pragma once #include <iostream> #include <xmmintrin.h> #define INF 10000 #define INVALID 32767 #..."
2018-12-18T14:59:21Z
<p>Created page with "'''<a href="/Main_Page" title="Main Page">Home</a> * <a href="/Engines" title="Engines">Engines</a> * <a href="/CPW-Engine" title="CPW-Engine">CPW-Engine</a> * stdafx.h''' <pre> #pragma once #include <iostream> #include <xmmintrin.h> #define INF 10000 #define INVALID 32767 #..."</p>
<p><b>New page</b></p><div>'''[[Main Page|Home]] * [[Engines]] * [[CPW-Engine]] * stdafx.h'''<br />
<br />
<pre><br />
#pragma once<br />
<br />
#include <iostream><br />
#include <xmmintrin.h><br />
<br />
#define INF 10000<br />
#define INVALID 32767<br />
<br />
<br />
#define U64 unsigned __int64<br />
#define U32 unsigned __int32<br />
#define U16 unsigned __int16<br />
#define U8 unsigned __int8<br />
#define S64 signed __int64<br />
#define S32 signed __int32<br />
#define S16 signed __int16<br />
#define S8 signed __int8<br />
<br />
<br />
<br />
/* Move ordering compiler switches and constants */<br />
<br />
#define USE_HASHMOVE<br />
#define USE_HISTORY<br />
#define USE_KILLERS<br />
<br />
#define SORT_KING 400000000 <br />
#define SORT_HASH 200000000<br />
#define SORT_CAPT 100000000<br />
#define SORT_PROM 90000000<br />
#define SORT_KILL 80000000<br />
<br />
#define STARTFEN "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"<br />
<br />
#define VERSION_STRING "1.1"<br />
#define COMPILE_STRING " compiled 30.12.2014"<br />
<br />
#define BOOK_NONE 0<br />
#define BOOK_NARROW 1<br />
#define BOOK_BROAD 2<br />
<br />
enum epiece {<br />
KING,<br />
QUEEN,<br />
ROOK,<br />
BISHOP,<br />
KNIGHT,<br />
PAWN,<br />
PIECE_EMPTY<br />
};<br />
<br />
enum ecolor {<br />
WHITE,<br />
BLACK,<br />
COLOR_EMPTY<br />
};<br />
<br />
enum esqare {<br />
A1 = 0, B1, C1, D1, E1, F1, G1, H1,<br />
A2 = 16, B2, C2, D2, E2, F2, G2, H2,<br />
A3 = 32, B3, C3, D3, E3, F3, G3, H3,<br />
A4 = 48, B4, C4, D4, E4, F4, G4, H4,<br />
A5 = 64, B5, C5, D5, E5, F5, G5, H5,<br />
A6 = 80, B6, C6, D6, E6, F6, G6, H6,<br />
A7 = 96, B7, C7, D7, E7, F7, G7, H7,<br />
A8 = 112, B8, C8, D8, E8, F8, G8, H8<br />
};<br />
<br />
enum ecastle {<br />
CASTLE_WK = 1,<br />
CASTLE_WQ = 2,<br />
CASTLE_BK = 4,<br />
CASTLE_BQ = 8<br />
};<br />
<br />
enum emflag {<br />
MFLAG_NORMAL = 0,<br />
MFLAG_CAPTURE = 1,<br />
MFLAG_EPCAPTURE = 2,<br />
MFLAG_CASTLE = 4,<br />
MFLAG_EP = 8,<br />
MFLAG_PROMOTION = 16,<br />
MFLAG_NULLMOVE = 32<br />
};<br />
<br />
struct sboard {<br />
U8 pieces[128];<br />
U8 color[128];<br />
char stm; // side to move: 0 = white, 1 = black<br />
char castle; // 1 = shortW, 2 = longW, 4 = shortB, 8 = longB<br />
char ep; // en passant square<br />
U8 ply;<br />
U64 hash;<br />
U64 phash;<br />
int rep_index;<br />
U64 rep_stack[1024];<br />
S8 KingLoc[2];<br />
int PcsqMg[2];<br />
int PcsqEg[2];<br />
int PieceMaterial[2];<br />
int PawnMaterial[2];<br />
U8 PieceCount[2][6];<br />
};<br />
extern sboard b;<br />
<br />
<br />
struct smove {<br />
char id;<br />
char from;<br />
char to;<br />
U8 piece_from;<br />
U8 piece_to;<br />
U8 piece_cap;<br />
char flags;<br />
char castle;<br />
char ply;<br />
char ep;<br />
int score;<br />
};<br />
<br />
<br />
struct sSearchDriver {<br />
int myside;<br />
U8 depth;<br />
int history[128][128];<br />
smove killers[1024][2];<br />
U64 nodes;<br />
S32 movetime;<br />
U64 q_nodes;<br />
unsigned long starttime;<br />
} extern sd;<br />
<br />
enum etimef {<br />
FTIME = 1,<br />
FINC = 2,<br />
FMOVESTOGO = 4,<br />
FDEPTH = 8,<br />
FNODES = 16,<br />
FMATE = 32,<br />
FMOVETIME = 64,<br />
FINFINITE = 128<br />
};<br />
<br />
struct stime {<br />
int time[2];<br />
int inc[2];<br />
int movestogo;<br />
int depth;<br />
int nodes;<br />
int mate;<br />
int movetime;<br />
U8 flags;<br />
} extern chronos;<br />
<br />
<br />
<br />
struct s_eval_data {<br />
<br />
int PIECE_VALUE[6];<br />
int SORT_VALUE[6];<br />
int START_MATERIAL;<br />
<br />
/* Piece-square tables - we use size of the board representation,<br />
not 0..63, to avoid re-indexing. Initialization routine, however,<br />
uses 0..63 format for clarity */<br />
int mgPst[6][2][128];<br />
int egPst[6][2][128];<br />
<br />
/* piece-square tables for pawn structure */<br />
<br />
int weak_pawn[2][128]; // isolated and backward pawns are scored in the same way<br />
int passed_pawn[2][128];<br />
int protected_passer[2][128];<br />
<br />
int sqNearK[2][128][128];<br />
<br />
/* single values - letter p before a name signifies a penalty */<br />
<br />
int BISHOP_PAIR;<br />
int P_KNIGHT_PAIR;<br />
int P_ROOK_PAIR;<br />
int ROOK_OPEN;<br />
int ROOK_HALF;<br />
int P_BISHOP_TRAPPED_A7;<br />
int P_BISHOP_TRAPPED_A6;<br />
int P_KNIGHT_TRAPPED_A8;<br />
int P_KNIGHT_TRAPPED_A7;<br />
int P_BLOCK_CENTRAL_PAWN;<br />
int P_KING_BLOCKS_ROOK;<br />
<br />
int SHIELD_1;<br />
int SHIELD_2;<br />
int P_NO_SHIELD;<br />
<br />
int RETURNING_BISHOP;<br />
int P_C3_KNIGHT;<br />
int P_NO_FIANCHETTO;<br />
int FIANCHETTO;<br />
int TEMPO;<br />
int ENDGAME_MAT;<br />
};<br />
extern s_eval_data e;<br />
<br />
extern char vector[5][8];<br />
extern bool slide[5];<br />
extern char vectors[5];<br />
<br />
void board_display();<br />
void clearBoard();<br />
void fillSq(U8 color, U8 piece, S8 sq);<br />
void clearSq(S8 sq);<br />
int board_loadFromFen(char * fen);<br />
<br />
<br />
int com_send(char * command);<br />
int com_sendmove(smove m);<br />
int com_uci(char * command);<br />
int com_xboard(char * command);<br />
int com_nothing(char * command);<br />
int com();<br />
int com_init();<br />
int com_ismove(char * command);<br />
<br />
<br />
<br />
U8 movegen(smove * moves, U8 tt_move, bool captures = false);<br />
U8 movegen_qs(smove * moves);<br />
void movegen_sort(U8 movecount, smove * m, U8 current);<br />
<br />
<br />
void convert_0x88_a(S8 sq, char * a);<br />
U8 convert_a_0x88(char * a);<br />
char * algebraic_writemove(smove m, char * a);<br />
int algebraic_moves(char * a);<br />
<br />
<br />
int move_make(smove move);<br />
int move_unmake(smove move);<br />
int move_makeNull();<br />
int move_unmakeNull(char ep);<br />
<br />
// the next couple of functions respond to questions about moves or move lists<br />
<br />
int move_iscapt(smove m);<br />
int move_isprom(smove m);<br />
int move_canSimplify(smove m);<br />
int move_countLegal();<br />
int move_isLegal(smove m);<br />
<br />
<br />
smove strToMove(char * a);<br />
<br />
// subsidiary functions used to initialize opening book are hidden in book.h<br />
void initBook();<br />
int getBookMove(int book_type);<br />
<br />
<br />
void search_run(); // interface of the search functions<br />
void clearHistoryTable();<br />
<br />
<br />
void setDefaultEval();<br />
void setBasicValues();<br />
void setSquaresNearKing();<br />
void setPcsq();<br />
void correctValues();<br />
void readIniFile();<br />
void processIniString(char line[250]);<br />
<br />
<br />
int eval(int alpha, int beta, int use_hash);<br />
int isPiece(U8 color, U8 piece, S8 sq);<br />
void printEval();<br />
void printEvalFactor(int wh, int bl);<br />
<br />
<br />
int Quiesce(int alpha, int beta);<br />
int badCapture(smove move);<br />
int pawnRecapture(U8 capturers_color, char sq);<br />
<br />
int isAttacked(char byColor, S8 sq);<br />
int leaperAttack(char byColor, S8 sq, char byPiece);<br />
int straightAttack(char byColor, S8 sq, int vect);<br />
int diagAttack(int btColor, S8 sq, int vect);<br />
<br />
void perft_start(char * command);<br />
U64 perft(U8 depth);<br />
<br />
void util_bench(char * command);<br />
int util_pv(char * pv);<br />
<br />
unsigned int gettime();<br />
int time_uci_ponderhit();<br />
void time_uci_go(char * command);<br />
void time_xboard_go();<br />
void time_nothing_go();<br />
void time_calc_movetime();<br />
bool time_stop_root();<br />
bool time_stop();<br />
<br />
int isRepetition();<br />
<br />
int isDraw();<br />
<br />
void printWelcome();<br />
void printHelp();<br />
void printStats();<br />
void printSearchHeader();<br />
</pre><br />
'''[[CPW-Engine|Up one Level]]'''</div>
GerdIsenberg