updated INSTALL, NEWS and other files for new release
[xboard.git] / moves.c
diff --git a/moves.c b/moves.c
index 0def075..eb0701c 100644 (file)
--- a/moves.c
+++ b/moves.c
@@ -171,6 +171,9 @@ ChessMove PromoCharToMoveType(whiteOnMove, promoChar)
 {      /* [HGM] made dependent on CharToPiece to alow alternate piece letters */\r
        ChessSquare piece = CharToPiece(whiteOnMove ? ToUpper(promoChar) : ToLower(promoChar) );\r
 \r
+
+       if(promoChar == NULLCHAR) return NormalMove;\r
+\r
        switch(piece) {\r
                case WhiteQueen:\r
                        return WhitePromotionQueen;\r
@@ -577,7 +580,7 @@ void GenPseudoLegal(board, flags, epfile, callback, closure)
                      if (board[rt][ft] != EmptySquare) break;\r
                  }\r
                 if(m==1) goto mounted;\r
-                if(m==2) goto walking;\r
+                if(m==2) goto finishGold;\r
              break;\r
 \r
            case WhiteQueen:\r
@@ -1085,6 +1088,7 @@ ChessMove LegalityTest(board, flags, epfile, castlingRights, rf, ff, rt, ft, pro
         }\r
     } else\r
     if (promoChar != NULLCHAR && promoChar != 'x') {\r
+       if(promoChar == '=') cl.kind = IllegalMove; else // [HGM] shogi: no deferred promotion outside Shogi\r
        if (cl.kind == WhitePromotionQueen || cl.kind == BlackPromotionQueen) {\r
            cl.kind = \r
              PromoCharToMoveType((flags & F_WHITE_ON_MOVE) != 0, promoChar);\r
@@ -1265,7 +1269,7 @@ void Disambiguate(board, flags, epfile, closure)
 #endif\r
     /* [HGM] returns 'q' for optional promotion, 'n' for mandatory */\r
     if(closure->promoCharIn != '=')\r
-        closure->promoChar = ToLower(PieceToChar(PromoPiece(closure->kind)));\r
+        closure->promoChar = ToLower(closure->promoCharIn);\r
     else closure->promoChar = '=';\r
     if (closure->promoChar == 'x') closure->promoChar = NULLCHAR;\r
     if (closure->count > 1) {\r
@@ -1280,7 +1284,7 @@ void Disambiguate(board, flags, epfile, closure)
     }\r
     if(closure->kind == IllegalMove)\r
     /* [HGM] might be a variant we don't understand, pass on promotion info */\r
-        closure->promoChar = closure->promoCharIn;\r
+        closure->promoChar = ToLower(closure->promoCharIn);\r
     if (appData.debugMode) {\r
         fprintf(debugFP, "Disambiguate out: %d(%d,%d)-(%d,%d) = %d (%c)\n",\r
         closure->piece,closure->ff,closure->rf,closure->ft,closure->rt,closure->promoChar,\r