int MaxDepth;\r
int Post;\r
int Fifty;\r
-int UnderProm;\r
int GameNr;\r
int Resign;\r
int Cambodian;\r
int pv[10000],*sp=pv; // triangular array\r
int margin;\r
\r
-pboard()\r
+void pboard()\r
{int i;\r
i=-1;W(++i<128)printf(" %c",(i&15)==BW&&(i+=15-BW)?10:n[b[i]&31]);\r
}\r
{ /* e=score, z=prev.dest; J,Z=hashkeys; return score*/\r
int j,r,m,v,d,h,i,F,G,P,V,f=J,g=Z,C,s,flag,FF,*ps=sp,kk=S;\r
signed char t,p,u,x,y,X,Y,H,B,gt;\r
- struct _*a=A+(J+(k+S)*E&U-1); /* lookup pos. in hash table*/\r
+ struct _*a=A+(J+(k+S)*E&U); /* lookup pos. in hash table*/\r
*sp++=0;\r
q-=q<e;l-=l<=e; /* adj. window: delay bonus */\r
d=a->D;m=a->V;X=a->F;Y=a->Y; /* resume at stored depth */\r
\r
int PrintResult(int s)\r
{\r
- int i, j, k, cnt=0;\r
+ int j, k, cnt=0;\r
\r
/* search last 50 states with this stm for third repeat */\r
for(j=2; j<=100 && j <= HistPtr; j+=2)\r
}\r
\r
\r
-InitEngine()\r
+void InitEngine()\r
{\r
- int i, j;\r
-\r
N=32*S+7;W(N-->S+3)T[N]=rand()>>9;\r
srand(GetTickCount());\r
}\r
\r
-InitGame()\r
+void InitGame()\r
{\r
- int i,j,k=0;\r
+ int i,k=0;\r
\r
Side = WHITE; Q=0; O=S;\r
Fifty = 0; R = 0;\r
if(w[oo[i]] < 0) k = w[oo[i]];\r
}\r
R -= 2*(-k/FAC);\r
- UnderProm = -1; pl[WHITE] = pl[BLACK] = 2*BW; \r
+ pl[WHITE] = pl[BLACK] = 2*BW; \r
pm = !pl[BLACK+7] && pl[BLACK+9] && pl[WHITE+7] ? 2 : 0; // Unlike white, black has no 'Q', so promote to 9, which he does have.\r
if(gating) pl[14] = pl[15] = pl[30] = pl[31] = 1, R += 2*(w[9]/FAC + w[10]/FAC);\r
}\r
\r
void CopyBoard(int s)\r
{\r
- int i, j, k, cnt=0;\r
+ int i, j;\r
\r
/* copy game representation of engine to HistoryBoard */\r
/* don't forget castling rights and e.p. state! */\r
\r
void PrintVariants(int combo)\r
{\r
- int i, j, count=0, total=0; char c=EOF+1, buf[80];\r
+ int count=0, total=0; char c=EOF+1, buf[80];\r
FILE *f;\r
\r
f = fopen(INI_FILE, "r");\r
printf("feature done=1\n");\r
}\r
\r
-int LoadGame(char *name)\r
+void LoadGame(char *name)\r
{\r
int i, j, ptc, count=0; char c, buf[80], pieceToChar[80];\r
static int currentVariant;\r
\r
f = fopen(inifile, "r");\r
if(f==NULL)\r
- { printf("telluser piece-desription file '%s' not found\n", inifile);\r
+ { printf("telluser piece-description file '%s' not found\n", inifile);\r
exit(0);\r
}\r
if(fscanf(f, "version 4.8(%c)", &c)!=1 || c != 'w')\r
\r
int main(int argc, char **argv)\r
{\r
- int Computer, MaxTime, MaxMoves, TimeInc, sec, i, j;\r
- char line[256], command[256], c, cc;\r
- int m, nr, hh;\r
+ int Computer, MaxTime, MaxMoves, TimeInc, sec, i;\r
+ char line[256], command[256], c;\r
+ int m, nr;\r
double cpuT;\r
- FILE *f;\r
\r
if(argc>1 && sscanf(argv[1], "%d", &m)==1)\r
{ U = (1<<m)-1; argc--; argv++; }\r
N=0;K=I;\r
if (D(Side,-I,I,Q,O,LL|S,3)==I) {\r
Side ^= BLACK^WHITE;\r
- if(UnderProm>=0 && UnderProm != L)\r
- { printf("tellics I hate under-promotions!\n");\r
- printf("resign { underpromotion } \n");\r
- Computer = EMPTY;\r
- continue;\r
- } else UnderProm = -1;\r
m = GetTickCount() - Ticks;\r
printf("# times @ %u: real=%d cpu=%1.0f\n", m + Ticks, m,\r
(CPUtime() - cpuT)/CLOCKS_PER_SEC);\r
continue;\r
}\r
if (!fgets(line, 256, stdin))\r
- return;\r
+ return 1;\r
if (line[0] == '\n')\r
continue;\r
sscanf(line, "%s", command);\r
}\r
if (!strcmp(command, "quit"))\r
/* exit engine */\r
- return;\r
+ return 0;\r
if (!strcmp(command, "force")) {\r
/* computer plays neither */\r
Computer = EMPTY;\r
if(sscanf(line+7, "Ini File=%s", filename) == 1) {\r
inifile = filename; continue;\r
}\r
- if(sscanf(line+7, "Clear Hash") == 1) for(i=0; i<U; i++) A->K = 0;\r
+ if(sscanf(line+7, "Clear Hash%c", &c) == 1) for(i=0; i<=U; i++) A->K = 0;\r
if(sscanf(line+7, "MultiVariation Margin=%d", &margin) == 1) continue;\r
if(sscanf(line+7, "Variant fairy selects=%s", selectedFairy+6) == 1) continue;\r
if(sscanf(line+7, "Cambodian Makruk rules=%d", &Cambodian) == 1) continue;\r