{ /* [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
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
}\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
#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
}\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