A23ETUI3HMBQKCAROPWHAJ36CRQ3QFR27ZVRNJWDKAIPOBXYUAOAC
7ULXFB7Y3R3PR5IS3MPHQDLJ3S2SXLGXGCW243HQJBHAU6EIIFGAC
FOORIA7SEZCLKDBNMV6KEDTQOJJVAH57BQFBRSQMET6FERJPHCVQC
3H3DSWLBWCE7C43W6LHICCPJ5KQDLASLQPIKJOK2KAE6OFF2L6WAC
XHCMZF25YBLNQLVKKBJJWWJ3G24VFUSLE3LAT2DRWL52RJX4Z3EAC
TB4YBE4CMWCLSKJ43QF6IU5HVYUUO33BLXVG7XDRLJS3IFIBQLYAC
CWEVCXXC3D5NLLIFIYEWTXHPLX4EU5XH3YUUTMV7GYBLSQXT5VPQC
2CU67A3QXXPH722WBAL74O6P2N2RRXFBQVPT3A5QAXTUCQ3UUU5AC
Z4PX3GURAMMW55R5KRP5WCO2CXFEI6LBULGBQRYTABBONCOZ5NHQC
3N3FYEBBZ6RLFCFKG2FNHHRDUZBOVBAAXAHBUPSOB3FN5HMWLVDAC
I4AKZYZM5LOD7SNZRNWY34KWOHE34QPEWO6TIGHYMJACXOJKBMPQC
NK6IUUYQENJVKT3SDWOXH7NF6JGCSE66IRFAPJTTYPVVPI34X6RQC
var ret = @bitCast(CastlingType, self.*);
ret &= CASTLING_RIGHTS[@enumToInt(square)];
self.* = @bitCast(Castling, ret);
self.* = @bitCast(Castling, @bitCast(CastlingType, self.*) &
CASTLING_RIGHTS[@enumToInt(square)]);
.white => self.bitboards[@enumToInt(Chess.PE.p)]
.pop(@intToEnum(Square, @enumToInt(move.target) + 8)),
.black => self.bitboards[@enumToInt(Chess.PE.P)]
.pop(@intToEnum(Square, @enumToInt(move.target) - 8)),
.white => {
self.bitboards[@enumToInt(Chess.PE.p)]
.pop(@intToEnum(Square, @enumToInt(move.target) + 8));
// Zobrist
self.hash ^=
zobrist.piece_hashes[@enumToInt(Chess.PE.p)][@enumToInt(move.target) + 8];
},
.black => {
self.bitboards[@enumToInt(Chess.PE.P)]
.pop(@intToEnum(Square, @enumToInt(move.target) - 8));
// Zobrist
self.hash ^=
zobrist.piece_hashes[@enumToInt(Chess.PE.P)][@enumToInt(move.target) - 8];
},
- [Gigantua - fast movegen](https://www.codeproject.com/Articles/5313417/Worlds-fastest-Bitboard-Chess-Movegenerator)