4 * ----------------------------------------------------------------------
5 * Copyright (c) 1993, 1994, 1995 Matthias Mutz
6 * Copyright (c) 1999 Michael Vanier and the Free Software Foundation
7 * Copyright (c) 2008, 2013, 2014 Yann Dirson and the Free Software Foundation
9 * GNU SHOGI is based on GNU CHESS
11 * Copyright (c) 1988, 1989, 1990 John Stanback
12 * Copyright (c) 1992 Free Software Foundation
14 * This file is part of GNU SHOGI.
16 * GNU Shogi is free software; you can redistribute it and/or modify it
17 * under the terms of the GNU General Public License as published by the
18 * Free Software Foundation; either version 3 of the License,
19 * or (at your option) any later version.
21 * GNU Shogi is distributed in the hope that it will be useful, but WITHOUT
22 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
23 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
26 * You should have received a copy of the GNU General Public License along
27 * with GNU Shogi; see the file COPYING. If not, see
28 * <http://www.gnu.org/licenses/>.
29 * ----------------------------------------------------------------------
36 bool ahead
= true, hash
= true; /* default values for CLI flags -a and -h */
41 short FROMsquare
, TOsquare
;
43 bool ChkFlag
[MAXDEPTH
], CptrFlag
[MAXDEPTH
], TesujiFlag
[MAXDEPTH
]; /* FIXME: turn into bitfields ? */
44 short Pscore
[MAXDEPTH
], Tscore
[MAXDEPTH
];
45 small_short Pindex
[NO_SQUARES
];
47 short mtl
[2], hung
[2];
48 small_short PieceCnt
[2];
50 const char* ColorStr
[2] = {"Black", "White"};
57 extern char *binbookfile
;
60 extern char *bookfile
;
62 unsigned long hashkey
, hashbd
;
67 short rpthash
[2][256];
68 short TrPnt
[MAXDEPTH
];
69 small_short PieceList
[2][NO_SQUARES
];
70 small_short PawnCnt
[2][NO_COLS
];
71 small_short Captured
[2][NO_PIECES
];
72 small_short Mvboard
[NO_SQUARES
];
74 #if !defined SAVE_SVALUE
75 short svalue
[NO_SQUARES
];
80 short opponent
, computer
, WAwindow
, WBwindow
, BAwindow
, BBwindow
, dither
,
82 long ResponseTime
= 0, ExtraTime
= 0, MaxResponseTime
= 0,
83 et
= 0, et0
= 0, time0
= 0, ft
= 0;
89 long GenCnt
, NodeCnt
, ETnodes
, EvalNodes
, HashCnt
, HashAdd
,
90 FHashCnt
, FHashAdd
, HashCol
, THashCol
, filesz
, hashmask
, hashbase
;
92 short HashDepth
= HASHDEPTH
, HashMoveLimit
= HASHMOVELIMIT
;
95 short Sdepth
, Game50
, MaxSearchDepth
;
99 struct TimeControlRec TimeControl
;
101 short TCmoves
, TCminutes
, TCseconds
, OperatorTime
;
103 short XCmoves
[3] = { 0, 0, 0 };
104 short XCminutes
[3] = { 0, 0, 0 };
105 short XCseconds
[3] = { 0, 0, 0 };
106 short XC
= 0, XCmore
= 0;
107 const short otherside
[3] = { white
, black
, neutral
};
109 short TOflag
; /* force search re-init if we backup search */
111 unsigned short killr0
[MAXDEPTH
], killr1
[MAXDEPTH
];
112 unsigned short killr2
[MAXDEPTH
], killr3
[MAXDEPTH
];
113 unsigned short PV
, SwagHt
, Swag0
, Swag1
, Swag2
, Swag3
, Swag4
, sidebit
;
115 small_short HasPiece
[2][NO_PIECES
];
117 const short kingP
[3] =
120 const small_short relative_value
[NO_PIECES
] =
132 const long control
[NO_PIECES
] =
137 ctlS
, ctlG
, ctlB
, ctlR
,
142 ctlSp
, ctlBp
, ctlRp
, ctlK
};
151 unsigned int starttime
;
153 int timeopp
[MINGAMEIN
], timecomp
[MINGAMEIN
];
157 struct leaf
*Tree
= NULL
;
159 hashcode_array
*hashcode
= NULL
;
160 drop_hashcode_array
*drop_hashcode
= NULL
;
162 struct leaf
*root
= NULL
;
164 struct GameRec
*GameList
= NULL
;
166 value_array
*value
= NULL
;
167 fscore_array
*fscore
= NULL
;
169 #ifndef SAVE_DISTDATA
170 bool use_distdata
= true;
171 distdata_array
*distdata
= NULL
;
174 #ifndef SAVE_PTYPE_DISTDATA
175 bool use_ptype_distdata
= true;
176 distdata_array
*ptype_distdata
[NO_PTYPE_PIECES
];
179 #if !defined SAVE_NEXTPOS
180 next_array
*nextdir
[NO_PTYPE_PIECES
];
181 next_array
*nextpos
[NO_PTYPE_PIECES
];
182 bool use_nextpos
= true;
186 bool use_history
= true;
187 unsigned short *history
= NULL
;
191 bool use_etable
= true;
192 etable_field
*etab
[2] = { NULL
, NULL
};
196 bool use_ttable
= true;
197 unsigned int ttblsize
= ttblsz
;
198 struct hashentry
*ttable
[2] = { NULL
, NULL
};
202 char *DRAW_REPETITION
= "Repetition";
203 char *DRAW_MAXMOVES
= "Max Moves";
204 char *DRAW_JUSTDRAW
= "Drawn game!";