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 short ahead
= true, hash
= true;
41 short FROMsquare
, TOsquare
;
43 small_short ChkFlag
[MAXDEPTH
], CptrFlag
[MAXDEPTH
], TesujiFlag
[MAXDEPTH
];
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 TCflag
, TCmoves
, TCminutes
, TCseconds
, OperatorTime
;
102 short XCmoves
[3] = { 0, 0, 0 };
103 short XCminutes
[3] = { 0, 0, 0 };
104 short XCseconds
[3] = { 0, 0, 0 };
105 short XC
= 0, XCmore
= 0;
106 const short otherside
[3] = { white
, black
, neutral
};
108 short TOflag
; /* force search re-init if we backup search */
110 unsigned short killr0
[MAXDEPTH
], killr1
[MAXDEPTH
];
111 unsigned short killr2
[MAXDEPTH
], killr3
[MAXDEPTH
];
112 unsigned short PV
, SwagHt
, Swag0
, Swag1
, Swag2
, Swag3
, Swag4
, sidebit
;
114 small_short HasPiece
[2][NO_PIECES
];
116 const short kingP
[3] =
119 const small_short relative_value
[NO_PIECES
] =
131 const long control
[NO_PIECES
] =
136 ctlS
, ctlG
, ctlB
, ctlR
,
141 ctlSp
, ctlBp
, ctlRp
, ctlK
};
150 unsigned int starttime
;
152 int timeopp
[MINGAMEIN
], timecomp
[MINGAMEIN
];
156 struct leaf
*Tree
= NULL
;
158 hashcode_array
*hashcode
= NULL
;
159 drop_hashcode_array
*drop_hashcode
= NULL
;
161 struct leaf
*root
= NULL
;
163 struct GameRec
*GameList
= NULL
;
165 value_array
*value
= NULL
;
166 fscore_array
*fscore
= NULL
;
168 #ifndef SAVE_DISTDATA
169 short use_distdata
= true;
170 distdata_array
*distdata
= NULL
;
173 #ifndef SAVE_PTYPE_DISTDATA
174 short use_ptype_distdata
= true;
175 distdata_array
*ptype_distdata
[NO_PTYPE_PIECES
];
178 #if !defined SAVE_NEXTPOS
179 next_array
*nextdir
[NO_PTYPE_PIECES
];
180 next_array
*nextpos
[NO_PTYPE_PIECES
];
181 short use_nextpos
= true;
185 short use_history
= true;
186 unsigned short *history
= NULL
;
190 short use_etable
= true;
191 etable_field
*etab
[2] = { NULL
, NULL
};
195 short use_ttable
= true;
196 unsigned int ttblsize
= ttblsz
;
197 struct hashentry
*ttable
[2] = { NULL
, NULL
};
201 char *DRAW_REPETITION
= "Repetition";
202 char *DRAW_MAXMOVES
= "Max Moves";
203 char *DRAW_JUSTDRAW
= "Drawn game!";