static void AddWhitePawnCapMove(const S_BOARD *pos, const int from, const int to, const int cap, S_MOVELIST *list) { ASSERT(PieceValidEmpty(cap)); ASSERT(SqOnBoard(from)); ASSERT(SqOnBoard(to)); if(RanksBrd[from] == RANK_7) { AddCaptureMove(pos, MOVE(from, to, cap, wQ, 0), list); AddCaptureMove(pos, MOVE(from, to, cap, wR, 0), list); AddCaptureMove(pos, MOVE(from, to, cap, wB, 0), list); AddCaptureMove(pos, MOVE(from, to, cap, wN, 0), list); } else { AddCaptureMove(pos, MOVE(from, to, cap, EMPTY, 0), list); } }
static void AddBlackPawnCapMove(const CHESS_BOARD *pos, const int from, const int to, const int cap, MOVELIST *list) { ASSERT(PieceValidEmpty(cap)); ASSERT(SqOnBoard(from)); ASSERT(SqOnBoard(to)); ASSERT(CheckBoard(pos)); if (RanksBrd[from] == RANK_2) { AddCaptureMove(pos, MOVE(from, to, cap, bQ, 0), list); AddCaptureMove(pos, MOVE(from, to, cap, bR, 0), list); AddCaptureMove(pos, MOVE(from, to, cap, bB, 0), list); AddCaptureMove(pos, MOVE(from, to, cap, bN, 0), list); } else { AddCaptureMove(pos, MOVE(from, to, cap, EMPTY, 0), list); } }
int PceValidEmptyOffbrd(const int pce) { return (PieceValidEmpty(pce) || pce == OFFBOARD); }