} UndoInfo;\r
\r
char *array, fenArray[4000], *reason;\r
-int bWidth, bHeight, bsize, zone, currentVariant;\r
-int stm, xstm, hashKeyH, hashKeyL, framePtr, msp, nonCapts, rootEval, retMSP, retFirst, retDep, pvPtr, level, cnt50, chuFlag=1, tenFlag, mobilityScore;\r
+int bWidth, bHeight, bsize, zone, currentVariant, chuFlag, tenFlag, chessFlag;\r
+int stm, xstm, hashKeyH, hashKeyL, framePtr, msp, nonCapts, rootEval, retMSP, retFirst, retDep, pvPtr, level, cnt50, mobilityScore;\r
int nodes, startTime, tlim1, tlim2, repCnt, comp;\r
Move retMove, moveStack[10000], path[100], repStack[300], pv[1000], repeatMove[300];\r
\r
bsize = bWidth*bHeight;\r
chuFlag = (currentVariant == V_CHU);\r
tenFlag = (currentVariant == V_TENJIKU);\r
+ chessFlag = (currentVariant == V_CHESS);\r
\r
for(i= -1; i<9; i++) { // board steps in linear coordinates\r
kStep[i] = STEP(direction[i&7].x, direction[i&7].y); // King\r
}\r
} else\r
if(r == M) { // FIDE Pawn; check double-move\r
- if(!NewNonCapture(x, x+v, pFlag) && promoBoard[x-v])\r
- NewNonCapture(x, x+2*v+DEFER, pFlag); // use promoSuppress flag as e.p. flag\r
+ if(!NewNonCapture(x, x+v, pFlag) && chessFlag && promoBoard[x-v])\r
+ NewNonCapture(x, x+2*v, pFlag), moveStack[msp-1] |= DEFER; // use promoSuppress flag as e.p. flag\r
}\r
continue;\r
}\r