LJY2HRZ3XGWIDIBYPOZFKC3555AZEROKSVDNELII6UQIUMGLOVEQC HRBTW56Y6C576MF5L7QVHJSFBE6O27SLV7WS4GS2UCH673635SQAC IFTGZLOBWFXQPOKZFLNKDMFBQJLDI5BC5UXICLHKVHZB5LEVLEIQC 7ULXFB7Y3R3PR5IS3MPHQDLJ3S2SXLGXGCW243HQJBHAU6EIIFGAC A23ETUI3HMBQKCAROPWHAJ36CRQ3QFR27ZVRNJWDKAIPOBXYUAOAC X3FYJUNL5ORLRC7TW3C5OMNZOX4JEWL73RXOQZLRKLAUBVNARIMAC BK7OPY3AMLE5HAXOXODT2CSVPIBAYVIL2GEVLDBMWGEFMFDKYSAQC XRCSCQWQKVYASIMAJO7JVUJXHXE44FZROCJPBW2BR7EE4RPEIBKAC CU3XNAGXZHXACBEDPM3THFT6AWAJ4HC5PXZM3Z72WWVMSHPOOXFQC G4HJL4QLASCZBWYGCEXYYRBYL7UVX6ENELHRRBFB5UAXXGVVGZGQC 4B26P4BBEABLLGDY4IQS7QK6OW67EROEIQMHS36D2Z4TWDEK5Z2AC M5SO7SVRCGI7G2DC43GNVFQB2IFEIXT62AFDB3CVGTCOCUKHPF5AC MNOKFKILALKVYLKMM4RDMPZGGU43JWKY3JP6Y4YGLRNPXIAFIXAQC DKK2G2S3X7KFEJBHGLUEVTBBW6UBR36XR7ZBUWG5GO6JYXWGJOOAC BQP2M5YIF2R53XJSJXTZRSXMOAJ4UEJBCLFCZ2OHF27T4DOGWJJQC HSGLIJUNOPRWGA53IQNV7G2BOOPHI23WVYJSF5RE3HLEL63Z3OHQC RNEXG5IFDKMHSUR6RMNTI3Y32ORLVMZ6UJYKHLV2XBMT2QONBTVQC UUI7ECK3K4GHZIJU6JU4WNKWIFAH7CMP4ZG5KQYLZH6YQMJXLCVAC R5F5KMWWZ4VS67CSIWRNRM4LNPPXVXSQZLHEZMT6XZODV4AK2MBQC TB4YBE4CMWCLSKJ43QF6IU5HVYUUO33BLXVG7XDRLJS3IFIBQLYAC 2CU67A3QXXPH722WBAL74O6P2N2RRXFBQVPT3A5QAXTUCQ3UUU5AC FRUDIRWXGFOZERET3DNUNAZ5HSA3G32JZX6WMIXNGZOACTTCRIQAC GDHXEMN5IXJDS63G3DUZH5PR2XH2SSXISABF2JHCYA3JSRXDPLMQC XHCMZF25YBLNQLVKKBJJWWJ3G24VFUSLE3LAT2DRWL52RJX4Z3EAC 3QZ5Y55BFUIRG5HZNURRD5Y5SY3VD5CYEZEXCZHBIDEME6MIQQBQC CWEVCXXC3D5NLLIFIYEWTXHPLX4EU5XH3YUUTMV7GYBLSQXT5VPQC 6S6HHKOXBQ5ARL7S7PKMPDIAH3VTPOAPWWSMGY37RP2R2U662FBAC VFH3EJPYSVGK6HYH4B3SVYG7LPBSHEPRRGRH2QRAC4KYWAV3SSIQC 3H3DSWLBWCE7C43W6LHICCPJ5KQDLASLQPIKJOK2KAE6OFF2L6WAC FOORIA7SEZCLKDBNMV6KEDTQOJJVAH57BQFBRSQMET6FERJPHCVQC V34YWVR66ERHUV6SOYQWJQLYMPLWEIJDXCR44B3SLPN2CRYIR45QC LWF4H4TMNZYUKTCVDALXQLBE3U5AXQJ3LLNUJJ7YGTLG6T2O33JAC WTTQGET65BQV7NSFOI75JGCTWFS6R73OFZE4V63JYWAODNIOUAHQC BL3ZR4OWJM54HFXUNMUZKB5YQYVBT7ETFIXCOXWL6S5SZFM6IFDQC NYVHTMLLUMBKBQSWO6SQDQ5KFACQLNCBRDDM5BH3OU6WWT54KC2AC IBUD4SUGA4IS6HUQIHVJJOFS4CMTWJMTMXS4LWGFVK4PFUFKE5LAC ET37VV7TCQDN6RWF46EUJB6EPNSDOX5TI25NW4P4H5HI4VOTARZQC XARNBDT4A5X6F3WFC5YNZBV5RNZ5GBRYOWKAK5R6HSTPBNIXTHDAC FR6N5DIUYYWT5BBOIBOX3GCSEKZIINSGT4F4CWM6YA2XLQEOU4ZQC GZPVUGLJGD3VGLIK7JDABQ24E5SWN5CYRDGI6PIAFZ2BIMRDMANQC TDHJSFFSJZBEZFMDHPLRSVB6CIVJ7AWGGNIC3WUCADQLQSIQKXDAC move.source = @enumFromInt(Square, (in[0] - 'a' + (8 - (in[1] - '0')) * SIZE));move.target = @enumFromInt(Square, (in[2] - 'a' + (8 - (in[3] - '0')) * SIZE));
move.source = @as(Square, @enumFromInt((in[0] - 'a' + (8 - (in[1] - '0')) * SIZE)));move.target = @as(Square, @enumFromInt((in[2] - 'a' + (8 - (in[3] - '0')) * SIZE)));
const square = @intCast(SquareType, rank * SIZE + file);const mask: usize = if (@bitCast(BoardType, self) & (@as(BoardType, 1) << square) != 0) 1 else 0;
const square = @as(SquareType, @intCast(rank * SIZE + file));const mask: usize = if (@as(BoardType, @bitCast(self)) & (@as(BoardType, 1) << square) != 0) 1 else 0;
return @bitCast(BoardType, self.occupancies[@intFromEnum(Chess.Colors.white)]) |@bitCast(BoardType, self.occupancies[@intFromEnum(Chess.Colors.black)]);
return @as(BoardType, @bitCast(self.occupancies[@intFromEnum(Chess.Colors.white)])) |@as(BoardType, @bitCast(self.occupancies[@intFromEnum(Chess.Colors.black)]));
if (@bitCast(BoardType, bb) & (@as(BoardType, 1) << square) != 0) {std.debug.print("{c} ", .{@enumFromInt(Chess.PE, idx).char()});
if (@as(BoardType, @bitCast(bb)) & (@as(BoardType, 1) << square) != 0) {std.debug.print("{c} ", .{@as(Chess.PE, @enumFromInt(idx)).char()});
.white => @enumFromInt(Square, @intFromEnum(move.target) + 8),.black => @enumFromInt(Square, @intFromEnum(move.target) - 8),
.white => @as(Square, @enumFromInt(@intFromEnum(move.target) + 8)),.black => @as(Square, @enumFromInt(@intFromEnum(move.target) - 8)),
self.occupancies[@intFromEnum(Chess.Colors.white)] = @bitCast(BitBoard, white);self.occupancies[@intFromEnum(Chess.Colors.black)] = @bitCast(BitBoard, black);
self.occupancies[@intFromEnum(Chess.Colors.white)] = @as(BitBoard, @bitCast(white));self.occupancies[@intFromEnum(Chess.Colors.black)] = @as(BitBoard, @bitCast(black));
.white => @enumFromInt(Square, @ctz(@bitCast(BoardType, self.bitboards[@intFromEnum(Chess.PE.K)]),)),.black => @enumFromInt(Square, @ctz(@bitCast(BoardType, self.bitboards[@intFromEnum(Chess.PE.k)]),)),
.white => @as(Square, @enumFromInt(@ctz(@as(BoardType, @bitCast(self.bitboards[@intFromEnum(Chess.PE.K)])),))),.black => @as(Square, @enumFromInt(@ctz(@as(BoardType, @bitCast(self.bitboards[@intFromEnum(Chess.PE.k)])),))),
const rank = @intCast(isize, square.rank());const file = @intCast(isize, square.file());
const rank = @as(isize, @intCast(square.rank()));const file = @as(isize, @intCast(square.file()));