@@ -5,6 +5,7 @@ use super::magic::{self, Magic};
5
5
use crate :: evaluation:: psqt_evaluation:: {
6
6
psqt_incremental_add_piece, psqt_incremental_delete_piece, psqt_incremental_move_piece,
7
7
} ;
8
+ use crate :: search:: GradedMove ;
8
9
9
10
//Move GEn
10
11
//King- Piece-Wise by lookup
@@ -2094,9 +2095,9 @@ pub fn calculate_additionalbitboards(
2094
2095
}
2095
2096
2096
2097
pub struct AdditionalGameStateInformation {
2097
- stm_incheck : bool ,
2098
- stm_haslegalmove : bool ,
2099
- additional_bitboards : AdditionalBitBoards ,
2098
+ pub stm_incheck : bool ,
2099
+ pub stm_haslegalmove : bool ,
2100
+ pub additional_bitboards : AdditionalBitBoards ,
2100
2101
}
2101
2102
#[ inline( always) ]
2102
2103
pub fn add_pin_moves_to_movelist (
@@ -2264,11 +2265,16 @@ pub fn add_normal_moves_to_movelist(
2264
2265
capture_mask : u64 ,
2265
2266
only_captures : bool ,
2266
2267
depth : usize ,
2268
+ stm_color_iswhite : bool ,
2267
2269
) -> bool {
2268
2270
let mut stm_haslegalmove = false ;
2269
2271
let mut index = 0 ;
2270
2272
while piece_board != 0u64 {
2271
- let piece_index = piece_board. trailing_zeros ( ) as usize ;
2273
+ let piece_index = if stm_color_iswhite {
2274
+ 63 - piece_board. leading_zeros ( ) as usize
2275
+ } else {
2276
+ piece_board. trailing_zeros ( ) as usize
2277
+ } ;
2272
2278
let piece = 1u64 << piece_index;
2273
2279
if piece & pinned_pieces == 0u64 {
2274
2280
let piece_target = if let PieceType :: Knight = piece_type {
@@ -2423,12 +2429,14 @@ pub fn add_move_to_movelist(
2423
2429
}
2424
2430
pub struct MoveList {
2425
2431
pub move_list : [ [ Option < GameMove > ; 128 ] ; 100 ] ,
2432
+ pub graded_moves : [ [ Option < GradedMove > ; 128 ] ; 100 ] ,
2426
2433
pub counter : [ usize ; 100 ] ,
2427
2434
}
2428
2435
impl MoveList {
2429
2436
pub fn new ( ) -> Self {
2430
2437
MoveList {
2431
2438
move_list : [ [ None ; 128 ] ; 100 ] ,
2439
+ graded_moves : [ [ None ; 128 ] ; 100 ] ,
2432
2440
counter : [ 0 ; 100 ] ,
2433
2441
}
2434
2442
}
@@ -2742,21 +2750,23 @@ pub fn generate_moves2(
2742
2750
stm_haslegalmove |= stm_pawns_single_push != 0u64 ;
2743
2751
let stm_pawn_promotions =
2744
2752
stm_pawns_single_push & bitboards:: RANKS [ if stm_color_iswhite { 7 } else { 0 } ] ;
2745
- add_pawn_moves_to_movelist (
2746
- movelist,
2747
- stm_pawn_promotions,
2748
- 8 ,
2749
- stm_color_iswhite,
2750
- enemy_pawns,
2751
- enemy_knights,
2752
- enemy_bishops,
2753
- enemy_rooks,
2754
- enemy_queens,
2755
- false ,
2756
- true ,
2757
- pinned_pieces,
2758
- depth,
2759
- ) ;
2753
+ if !only_captures {
2754
+ add_pawn_moves_to_movelist (
2755
+ movelist,
2756
+ stm_pawn_promotions,
2757
+ 8 ,
2758
+ stm_color_iswhite,
2759
+ enemy_pawns,
2760
+ enemy_knights,
2761
+ enemy_bishops,
2762
+ enemy_rooks,
2763
+ enemy_queens,
2764
+ false ,
2765
+ true ,
2766
+ pinned_pieces,
2767
+ depth,
2768
+ ) ;
2769
+ }
2760
2770
if !only_captures {
2761
2771
let stm_pawns_quiet_single_push = stm_pawns_single_push & !stm_pawn_promotions;
2762
2772
add_pawn_moves_to_movelist (
@@ -2977,12 +2987,13 @@ pub fn generate_moves2(
2977
2987
capture_mask,
2978
2988
only_captures,
2979
2989
depth,
2990
+ stm_color_iswhite,
2980
2991
) ;
2981
- //6.2 Bishops
2992
+ //6.4 Queens
2982
2993
stm_haslegalmove |= add_normal_moves_to_movelist (
2983
2994
movelist,
2984
- PieceType :: Bishop ,
2985
- stm_bishops ,
2995
+ PieceType :: Queen ,
2996
+ stm_queens ,
2986
2997
pinned_pieces,
2987
2998
enemy_pawns,
2988
2999
enemy_knights,
@@ -2996,12 +3007,14 @@ pub fn generate_moves2(
2996
3007
capture_mask,
2997
3008
only_captures,
2998
3009
depth,
3010
+ stm_color_iswhite,
2999
3011
) ;
3000
- //6.3 Rooks
3012
+
3013
+ //6.2 Bishops
3001
3014
stm_haslegalmove |= add_normal_moves_to_movelist (
3002
3015
movelist,
3003
- PieceType :: Rook ,
3004
- stm_rooks ,
3016
+ PieceType :: Bishop ,
3017
+ stm_bishops ,
3005
3018
pinned_pieces,
3006
3019
enemy_pawns,
3007
3020
enemy_knights,
@@ -3015,12 +3028,13 @@ pub fn generate_moves2(
3015
3028
capture_mask,
3016
3029
only_captures,
3017
3030
depth,
3031
+ stm_color_iswhite,
3018
3032
) ;
3019
- //6.4 Queens
3033
+ //6.3 Rooks
3020
3034
stm_haslegalmove |= add_normal_moves_to_movelist (
3021
3035
movelist,
3022
- PieceType :: Queen ,
3023
- stm_queens ,
3036
+ PieceType :: Rook ,
3037
+ stm_rooks ,
3024
3038
pinned_pieces,
3025
3039
enemy_pawns,
3026
3040
enemy_knights,
@@ -3034,6 +3048,7 @@ pub fn generate_moves2(
3034
3048
capture_mask,
3035
3049
only_captures,
3036
3050
depth,
3051
+ stm_color_iswhite,
3037
3052
) ;
3038
3053
//----------------------------------------------------------------------
3039
3054
//**********************************************************************
0 commit comments