internal void CreateCheckInfo(Position pos) { Color them = pos.sideToMove ^ 1; ksq = pos.pieceList[them][PieceTypeC.KING][0]; pinned = pos.pinned_pieces(); dcCandidates = pos.discovered_check_candidates(); checkSq[PieceTypeC.PAWN] = Utils.StepAttacksBB[((them << 3) | PieceTypeC.PAWN)][ksq]; checkSq[PieceTypeC.KNIGHT] = Utils.StepAttacksBB_KNIGHT[ksq]; #if X64 checkSq[PieceTypeC.BISHOP] = Utils.BAttacks[ksq][(((pos.occupied_squares & Utils.BMasks[ksq]) * Utils.BMagics[ksq]) >> Utils.BShifts[ksq])]; checkSq[PieceTypeC.ROOK] = Utils.RAttacks[ksq][(((pos.occupied_squares & Utils.RMasks[ksq]) * Utils.RMagics[ksq]) >> Utils.RShifts[ksq])]; #else checkSq[PieceTypeC.BISHOP] = pos.attacks_from_BISHOP(ksq); checkSq[PieceTypeC.ROOK] = pos.attacks_from_ROOK(ksq); #endif checkSq[PieceTypeC.QUEEN] = checkSq[PieceTypeC.BISHOP] | checkSq[PieceTypeC.ROOK]; checkSq[PieceTypeC.KING] = 0; }