1.1 --- a/src/rules/pawn.c Sat Mar 29 14:46:33 2014 +0100 1.2 +++ b/src/rules/pawn.c Sat Mar 29 16:53:58 2014 +0100 1.3 @@ -32,6 +32,22 @@ 1.4 1.5 _Bool pawn_chkrules(Board board, Move *move) { 1.6 int8_t d = ((move->piece & COLOR_MASK) == WHITE ? -1 : 1); 1.7 + 1.8 + if (move->torow == (d < 0 ? 7 : 0)) { 1.9 + if (move->promotion) { 1.10 + uint8_t promopiece = move->promotion & PIECE_MASK; 1.11 + if (!promopiece || promopiece == PAWN || promopiece == KING) { 1.12 + return FALSE; 1.13 + } 1.14 + } else { 1.15 + return FALSE; 1.16 + } 1.17 + } else { 1.18 + if (move->promotion) { 1.19 + return FALSE; 1.20 + } 1.21 + } 1.22 + 1.23 if (move->capture) { 1.24 if (move->fromrow == move->torow + d && ( 1.25 move->fromfile == move->tofile + 1 ||