X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=backend.c;h=3179ecef2d8993d0c063d3c1e3e565ade819e47d;hb=20c445baafd24d2e66f3157f11b7022fdbd56b75;hp=db04b8e23be40db3e3aefd03f356f8378cd94b88;hpb=31f98bb9be6f40551d4dd66252c4b4579ecdbe83;p=xboard.git diff --git a/backend.c b/backend.c index db04b8e..3179ece 100644 --- a/backend.c +++ b/backend.c @@ -18007,9 +18007,9 @@ PositionToFEN (int move, char *overrideCastling, int moveCounts) /* [HGM] write true castling rights */ if( nrCastlingRights == 6 ) { int q, k=0; - if(boards[move][CASTLING][0] == BOARD_RGHT-1 && + if(boards[move][CASTLING][0] != NoRights && boards[move][CASTLING][2] != NoRights ) k = 1, *p++ = 'K'; - q = (boards[move][CASTLING][1] == BOARD_LEFT && + q = (boards[move][CASTLING][1] != NoRights && boards[move][CASTLING][2] != NoRights ); if(handW) { // for S-Chess with pieces in hand, list virgin pieces between K and Q for(i=BOARD_RGHT-1-k; i>=BOARD_LEFT+q; i--) @@ -18018,9 +18018,9 @@ PositionToFEN (int move, char *overrideCastling, int moveCounts) } if(q) *p++ = 'Q'; k = 0; - if(boards[move][CASTLING][3] == BOARD_RGHT-1 && + if(boards[move][CASTLING][3] != NoRights && boards[move][CASTLING][5] != NoRights ) k = 1, *p++ = 'k'; - q = (boards[move][CASTLING][4] == BOARD_LEFT && + q = (boards[move][CASTLING][4] != NoRights && boards[move][CASTLING][5] != NoRights ); if(handB) { for(i=BOARD_RGHT-1-k; i>=BOARD_LEFT+q; i--) @@ -18311,10 +18311,10 @@ ParseFEN (Board board, int *blackPlaysFirst, char *fen, Boolean autoSize) } if(gameInfo.variant == VariantTwoKings || gameInfo.variant == VariantKnightmate) whiteKingFile = blackKingFile = BOARD_WIDTH >> 1; // for these variant scanning fails - if(whiteKingFile == NoRights || board[0][whiteKingFile] != WhiteUnicorn - && board[0][whiteKingFile] != WhiteKing) whiteKingFile = NoRights; - if(blackKingFile == NoRights || board[BOARD_HEIGHT-1][blackKingFile] != BlackUnicorn - && board[BOARD_HEIGHT-1][blackKingFile] != BlackKing) blackKingFile = NoRights; + if(whiteKingFile == NoRights || board[castlingRank[2]][whiteKingFile] != WhiteUnicorn + && board[castlingRank[2]][whiteKingFile] != WhiteKing) whiteKingFile = NoRights; + if(blackKingFile == NoRights || board[castlingRank[5]][blackKingFile] != BlackUnicorn + && board[castlingRank[5]][blackKingFile] != BlackKing) blackKingFile = NoRights; switch(c) { case'K': for(i=BOARD_RGHT-1; board[castlingRank[2]][i]!=WhiteRook && i>whiteKingFile; i--);