From ad32fc54b2869c0bbedcabea6274b0e3732ec893 Mon Sep 17 00:00:00 2001 From: Aargh Rai Date: Tue, 26 May 2026 14:22:55 +0530 Subject: bishop & queen --- src/search/rook_moves.c | 47 ++++++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 19 deletions(-) (limited to 'src/search/rook_moves.c') diff --git a/src/search/rook_moves.c b/src/search/rook_moves.c index 749210e..778c6a1 100644 --- a/src/search/rook_moves.c +++ b/src/search/rook_moves.c @@ -1,24 +1,14 @@ #include "search.h" -void get_rook_moves(moves_t* moves, position_t position) { - assert_valid_position(position); - - bitboard_t friendly_rooks; - bitboard_t friendly_pieces; - bitboard_t enemy_pieces; - if (position.turn == WHITE_TURN) { - friendly_pieces = whites(position); - enemy_pieces = blacks(position); - friendly_rooks = position.bitboards[WHITE_ROOK]; - } else { - friendly_pieces = blacks(position); - enemy_pieces = whites(position); - friendly_rooks = position.bitboards[BLACK_ROOK]; - } - - while (friendly_rooks) { - int from = __builtin_ctzll(friendly_rooks); - friendly_rooks &= friendly_rooks - 1; +void __forloop_rook_moves_gen( + moves_t* moves, + bitboard_t friendly_type, + bitboard_t friendly_pieces, + bitboard_t enemy_pieces +) { + while (friendly_type) { + int from = __builtin_ctzll(friendly_type); + friendly_type &= friendly_type - 1; int og_rank = from / 8; // range: [0, 7] int og_file = from % 8; // range: [0, 7] @@ -61,3 +51,22 @@ void get_rook_moves(moves_t* moves, position_t position) { } } } + +void get_rook_moves(moves_t* moves, position_t position) { + assert_valid_position(position); + + bitboard_t friendly_rooks; + bitboard_t friendly_pieces; + bitboard_t enemy_pieces; + if (position.turn == WHITE_TURN) { + friendly_pieces = whites(position); + enemy_pieces = blacks(position); + friendly_rooks = position.bitboards[WHITE_ROOK]; + } else { + friendly_pieces = blacks(position); + enemy_pieces = whites(position); + friendly_rooks = position.bitboards[BLACK_ROOK]; + } + + __forloop_rook_moves_gen(moves, friendly_rooks, friendly_pieces, enemy_pieces); +} -- cgit v1.2.3