Fix sd command
[hachu.git] / hachu.c
diff --git a/hachu.c b/hachu.c
index 84f7249..3bffac4 100644 (file)
--- a/hachu.c
+++ b/hachu.c
@@ -10,7 +10,7 @@
 // promotions by pieces with Lion power stepping in & out the zone in same turn\r
 // promotion on capture\r
 \r
-#define VERSION "0.17"\r
+#define VERSION "0.18"\r
 \r
 //define PATH level==0 /*|| path[0] == 0x3490a &&  (level==1 || path[1] == 0x285b3 && (level == 2 || path[2] == 0x8710f && (level == 3 /*|| path[3] == 0x3e865 && (level == 4 || path[4] == 0x4b865 && (level == 5)))))*/\r
 #define PATH 0\r
@@ -437,10 +437,10 @@ typedef enum { V_CHESS, V_SHO, V_CHU, V_DAI, V_DADA, V_MAKA, V_TAI, V_KYOKU, V_T
 #define SAME (-1)\r
 \r
 VariantDesc variants[] = {\r
-  { 16,  8,  8, 1, V_CHESS,  "normal", chessArray }, // FIDE\r
+  { 24, 12, 12, 4, V_CHU,     "chu",     chuArray }, // Chu\r
+  { 16,  8,  8, 1, V_CHESS,  "nocastle", chessArray }, // FIDE\r
   { 18,  9,  9, 3, V_SHO, "9x9+0_shogi", shoArray }, // Sho\r
   { 18,  9,  9, 3, V_SHO,     "sho",     shoArray }, // Sho duplicat\r
-  { 24, 12, 12, 4, V_CHU,     "chu",     chuArray }, // Chu\r
   { 30, 15, 15, 5, V_DAI,     "dai",     daiArray }, // Dai\r
   { 32, 16, 16, 5, V_TENJIKU, "tenjiku", tenArray }, // Tenjiku\r
   { 16,  8,  8, 1, V_SHATRANJ,"shatranj",shatArray}, // Shatranj\r
@@ -1122,7 +1122,7 @@ GenNonCapts (int promoSuppress)
          }\r
        } else\r
        if(r == M) { // FIDE Pawn; check double-move\r
-         if(!NewNonCapture(x, x+v, pFlag) && chessFlag && promoBoard[x-v])\r
+         if(!NewNonCapture(x, x+v, pFlag) && chessFlag && promoBoard[x-v] & LAST_RANK)\r
            NewNonCapture(x, x+2*v, pFlag), moveStack[msp-1] |= DEFER; // use promoSuppress flag as e.p. flag\r
        }\r
        continue;\r
@@ -2476,7 +2476,7 @@ printf("# SearchBestMove\n");
 printf("# s=%d\n", startTime);fflush(stdout);\r
 MapFromScratch(attacks);\r
   retMove = INVALID; repCnt = 0;\r
-  score = Search(-INF-1, INF+1, rootEval, maxDepth, 0, sup1, sup2, INF);\r
+  score = Search(-INF-1, INF+1, rootEval, maxDepth + QSdepth, 0, sup1, sup2, INF);\r
   *move = retMove;\r
   *ponderMove = pv[1];\r
 printf("# best=%s\n", MoveToText(pv[0],0));\r
@@ -2664,6 +2664,7 @@ pboard(board);
         }\r
         if(!strcmp(command, "sd"))      { sscanf(inBuf, "sd %d", &maxDepth);    continue; }\r
         if(!strcmp(command, "st"))      { sscanf(inBuf, "st %d", &timePerMove); continue; }\r
+\r
         if(!strcmp(command, "memory"))  { SetMemorySize(atoi(inBuf+7)); continue; }\r
         if(!strcmp(command, "ping"))    { printf("pong%s", inBuf+4); continue; }\r
     //  if(!strcmp(command, ""))        { sscanf(inBuf, " %d", &); continue; }\r