Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # FSF_Rider - unlimited riders XX/X0 or riders with limited number of steps X1/X9
- # Added Camelrider/Jamal, Dabbabarider and Alfilrider into Fairy Stockfish
- -------------------------------------------------------------------------------------------------------------------------------------
- # types.h, lines 453-478
- enum RiderType : int {
- NO_RIDER = 0,
- RIDER_BISHOP = 1 << 0,
- RIDER_ROOK_H = 1 << 1,
- RIDER_ROOK_V = 1 << 2,
- RIDER_CANNON_H = 1 << 3,
- RIDER_CANNON_V = 1 << 4,
- RIDER_LAME_DABBABA = 1 << 5,
- RIDER_HORSE = 1 << 6,
- RIDER_JAMAL = 1 << 7,
- RIDER_ELEPHANT = 1 << 8,
- RIDER_JANGGI_ELEPHANT = 1 << 9,
- RIDER_CANNON_DIAG = 1 << 10,
- RIDER_NIGHTRIDER = 1 << 11,
- RIDER_CAMELRIDER = 1 << 12,
- RIDER_ALFILRIDER = 1 << 13,
- RIDER_DABBABARIDER = 1 << 14,
- RIDER_GRASSHOPPER_H = 1 << 15,
- RIDER_GRASSHOPPER_V = 1 << 16,
- RIDER_GRASSHOPPER_D = 1 << 17,
- HOPPING_RIDERS = RIDER_CANNON_H | RIDER_CANNON_V | RIDER_CANNON_DIAG | RIDER_GRASSHOPPER_H | RIDER_GRASSHOPPER_V | RIDER_GRASSHOPPER_D,
- LAME_LEAPERS = RIDER_LAME_DABBABA | RIDER_HORSE | RIDER_JAMAL | RIDER_ELEPHANT | RIDER_JANGGI_ELEPHANT,
- ASYMMETRICAL_RIDERS = RIDER_HORSE | RIDER_JANGGI_ELEPHANT | RIDER_GRASSHOPPER_H | RIDER_GRASSHOPPER_V | RIDER_GRASSHOPPER_D,
- NON_SLIDING_RIDERS = HOPPING_RIDERS | LAME_LEAPERS | RIDER_NIGHTRIDER | RIDER_CAMELRIDER | RIDER_ALFILRIDER | RIDER_DABBABARIDER,
- };
- -------------------------------------------------------------------------------------------------------------------------------------
- # bitboard.h, lines 147-163
- extern Magic RookMagicsH[SQUARE_NB];
- extern Magic RookMagicsV[SQUARE_NB];
- extern Magic BishopMagics[SQUARE_NB];
- extern Magic CannonMagicsH[SQUARE_NB];
- extern Magic CannonMagicsV[SQUARE_NB];
- extern Magic LameDabbabaMagics[SQUARE_NB];
- extern Magic HorseMagics[SQUARE_NB];
- extern Magic JamalMagics[SQUARE_NB];
- extern Magic ElephantMagics[SQUARE_NB];
- extern Magic JanggiElephantMagics[SQUARE_NB];
- extern Magic CannonDiagMagics[SQUARE_NB];
- extern Magic NightriderMagics[SQUARE_NB];
- extern Magic CamelriderMagics[SQUARE_NB];
- extern Magic AlfilriderMagics[SQUARE_NB];
- extern Magic DabbabariderMagics[SQUARE_NB];
- extern Magic GrasshopperMagicsH[SQUARE_NB];
- extern Magic GrasshopperMagicsV[SQUARE_NB];
- extern Magic GrasshopperMagicsD[SQUARE_NB];
- # bitboard.h, lines 407-430
- template<RiderType R>
- inline Bitboard rider_attacks_bb(Square s, Bitboard occupied) {
- static_assert(R != NO_RIDER && !(R & (R - 1))); // exactly one bit
- const Magic& m = R == RIDER_ROOK_H ? RookMagicsH[s]
- : R == RIDER_ROOK_V ? RookMagicsV[s]
- : R == RIDER_CANNON_H ? CannonMagicsH[s]
- : R == RIDER_CANNON_V ? CannonMagicsV[s]
- : R == RIDER_LAME_DABBABA ? LameDabbabaMagics[s]
- : R == RIDER_HORSE ? HorseMagics[s]
- : R == RIDER_JAMAL ? JamalMagics[s]
- : R == RIDER_ELEPHANT ? ElephantMagics[s]
- : R == RIDER_JANGGI_ELEPHANT ? JanggiElephantMagics[s]
- : R == RIDER_CANNON_DIAG ? CannonDiagMagics[s]
- : R == RIDER_NIGHTRIDER ? NightriderMagics[s]
- : R == RIDER_CAMELRIDER ? CamelriderMagics[s]
- : R == RIDER_ALFILRIDER ? AlfilriderMagics[s]
- : R == RIDER_DABBABARIDER ? DabbabariderMagics[s]
- : R == RIDER_GRASSHOPPER_H ? GrasshopperMagicsH[s]
- : R == RIDER_GRASSHOPPER_V ? GrasshopperMagicsV[s]
- : R == RIDER_GRASSHOPPER_D ? GrasshopperMagicsD[s]
- : BishopMagics[s];
- return m.attacks[m.index(occupied)];
- }
- -------------------------------------------------------------------------------------------------------------------------------------
- # bitboard.cpp, lines 43-62
- Magic RookMagicsH[SQUARE_NB];
- Magic RookMagicsV[SQUARE_NB];
- Magic BishopMagics[SQUARE_NB];
- Magic CannonMagicsH[SQUARE_NB];
- Magic CannonMagicsV[SQUARE_NB];
- Magic LameDabbabaMagics[SQUARE_NB];
- Magic HorseMagics[SQUARE_NB];
- Magic JamalMagics[SQUARE_NB];
- Magic ElephantMagics[SQUARE_NB];
- Magic JanggiElephantMagics[SQUARE_NB];
- Magic CannonDiagMagics[SQUARE_NB];
- Magic NightriderMagics[SQUARE_NB];
- Magic CamelriderMagics[SQUARE_NB];
- Magic AlfilriderMagics[SQUARE_NB];
- Magic DabbabariderMagics[SQUARE_NB];
- Magic GrasshopperMagicsH[SQUARE_NB];
- Magic GrasshopperMagicsV[SQUARE_NB];
- Magic GrasshopperMagicsD[SQUARE_NB];
- Magic* magics[] = {BishopMagics, RookMagicsH, RookMagicsV, CannonMagicsH, CannonMagicsV, LameDabbabaMagics, HorseMagics, JamalMagics, ElephantMagics, JanggiElephantMagics, CannonDiagMagics, NightriderMagics, CamelriderMagics, AlfilriderMagics, DabbabariderMagics, GrasshopperMagicsH, GrasshopperMagicsV, GrasshopperMagicsD};
- # bitboard.cpp, lines 66-116
- #ifdef LARGEBOARDS
- Bitboard RookTableH[0x11800]; // To store horizontal rook attacks
- Bitboard RookTableV[0x4800]; // To store vertical rook attacks
- Bitboard BishopTable[0x33C00]; // To store bishop attacks
- Bitboard CannonTableH[0x11800]; // To store horizontal cannon attacks
- Bitboard CannonTableV[0x4800]; // To store vertical cannon attacks
- Bitboard LameDabbabaTable[0x500]; // To store lame dabbaba attacks
- Bitboard HorseTable[0x500]; // To store horse attacks
- Bitboard JamalTable[0x500]; // To store jamal attacks
- Bitboard ElephantTable[0x400]; // To store elephant attacks
- Bitboard JanggiElephantTable[0x1C000]; // To store janggi elephant attacks
- Bitboard CannonDiagTable[0x33C00]; // To store diagonal cannon attacks
- Bitboard NightriderTable[0x70200]; // To store nightrider attacks
- Bitboard CamelriderTable[0x5400]; // To store camelrider attacks
- Bitboard AlfilriderTable[0x880]; // To store alfilrider attacks
- Bitboard DabbabariderTable[0x5400]; // To store dabbabarider attacks
- Bitboard GrasshopperTableH[0x11800]; // To store horizontal grasshopper attacks
- Bitboard GrasshopperTableV[0x4800]; // To store vertical grasshopper attacks
- Bitboard GrasshopperTableD[0x33C00]; // To store diagonal grasshopper attacks
- #else
- Bitboard RookTableH[0xA00]; // To store horizontal rook attacks
- Bitboard RookTableV[0xA00]; // To store vertical rook attacks
- Bitboard BishopTable[0x1480]; // To store bishop attacks
- Bitboard CannonTableH[0xA00]; // To store horizontal cannon attacks
- Bitboard CannonTableV[0xA00]; // To store vertical cannon attacks
- Bitboard LameDabbabaTable[0x240]; // To store lame dabbaba attacks
- Bitboard HorseTable[0x240]; // To store horse attacks
- Bitboard JamalTable[0x240]; // To store jamal attacks
- Bitboard ElephantTable[0x1A0]; // To store elephant attacks
- Bitboard JanggiElephantTable[0x5C00]; // To store janggi elephant attacks
- Bitboard CannonDiagTable[0x1480]; // To store diagonal cannon attacks
- Bitboard NightriderTable[0x1840]; // To store nightrider attacks
- Bitboard CamelriderTable[0x640]; // To store camelrider attacks
- Bitboard AlfilriderTable[0x140]; // To store alfilrider attacks
- Bitboard DabbabariderTable[0x640]; // To store dabbabarider attacks
- Bitboard GrasshopperTableH[0xA00]; // To store horizontal grasshopper attacks
- Bitboard GrasshopperTableV[0xA00]; // To store vertical grasshopper attacks
- Bitboard GrasshopperTableD[0x1480]; // To store diagonal grasshopper attacks
- #endif
- // Rider directions
- const std::map<Direction, int> RookDirectionsV { {NORTH, 0}, {SOUTH, 0}};
- const std::map<Direction, int> RookDirectionsH { {EAST, 0}, {WEST, 0} };
- const std::map<Direction, int> BishopDirections { {NORTH_EAST, 0}, {SOUTH_EAST, 0}, {SOUTH_WEST, 0}, {NORTH_WEST, 0} };
- const std::map<Direction, int> LameDabbabaDirections { {2 * NORTH, 0}, {2 * EAST, 0}, {2 * SOUTH, 0}, {2 * WEST, 0} };
- const std::map<Direction, int> HorseDirections { {2 * SOUTH + WEST, 0}, {2 * SOUTH + EAST, 0}, {SOUTH + 2 * WEST, 0}, {SOUTH + 2 * EAST, 0}, {NORTH + 2 * WEST, 0}, {NORTH + 2 * EAST, 0}, {2 * NORTH + WEST, 0}, {2 * NORTH + EAST, 0} };
- const std::map<Direction, int> JamalDirections { {3 * NORTH + EAST, 0}, {3 * NORTH + WEST, 0}, {3 * SOUTH + EAST, 0}, {3 * SOUTH + WEST, 0}, {NORTH + 3 * EAST, 0}, {NORTH + 3 * WEST, 0}, {SOUTH + 3 * EAST, 0}, {SOUTH + 3 * WEST, 0} };
- const std::map<Direction, int> ElephantDirections { {2 * NORTH_EAST, 0}, {2 * SOUTH_EAST, 0}, {2 * SOUTH_WEST, 0}, {2 * NORTH_WEST, 0} };
- const std::map<Direction, int> JanggiElephantDirections { {NORTH + 2 * NORTH_EAST, 0}, {EAST + 2 * NORTH_EAST, 0}, {EAST + 2 * SOUTH_EAST, 0}, {SOUTH + 2 * SOUTH_EAST, 0}, {SOUTH + 2 * SOUTH_WEST, 0}, {WEST + 2 * SOUTH_WEST, 0}, {WEST + 2 * NORTH_WEST, 0}, {NORTH + 2 * NORTH_WEST, 0} };
- # bitboard.cpp, line 141
- is_ok(s) && distance(s, s - (c == WHITE ? d : -d)) <= 3; // Distance 3 for jamal
- # bitboard.cpp, lines 255-284
- for (auto const& [d, limit] : pi->steps[initial][modality])
- {
- if (limit && LameDabbabaDirections.find(d) != LameDabbabaDirections.end())
- riderTypes |= RIDER_LAME_DABBABA;
- if (limit && HorseDirections.find(d) != HorseDirections.end())
- riderTypes |= RIDER_HORSE;
- if (limit && JamalDirections.find(d) != JamalDirections.end())
- riderTypes |= RIDER_JAMAL;
- if (limit && ElephantDirections.find(d) != ElephantDirections.end())
- riderTypes |= RIDER_ELEPHANT;
- if (limit && JanggiElephantDirections.find(d) != JanggiElephantDirections.end())
- riderTypes |= RIDER_JANGGI_ELEPHANT;
- }
- for (auto const& [d, limit] : pi->slider[initial][modality])
- {
- if (BishopDirections.find(d) != BishopDirections.end())
- riderTypes |= RIDER_BISHOP;
- if (RookDirectionsH.find(d) != RookDirectionsH.end())
- riderTypes |= RIDER_ROOK_H;
- if (RookDirectionsV.find(d) != RookDirectionsV.end())
- riderTypes |= RIDER_ROOK_V;
- if (HorseDirections.find(d) != HorseDirections.end())
- riderTypes |= RIDER_NIGHTRIDER;
- if (JamalDirections.find(d) != JamalDirections.end())
- riderTypes |= RIDER_CAMELRIDER;
- if (ElephantDirections.find(d) != ElephantDirections.end())
- riderTypes |= RIDER_ALFILRIDER;
- if (LameDabbabaDirections.find(d) != LameDabbabaDirections.end())
- riderTypes |= RIDER_DABBABARIDER;
- }
- # bitboard.cpp, lines 348-386
- #ifdef PRECOMPUTED_MAGICS
- init_magics<RIDER>(RookTableH, RookMagicsH, RookDirectionsH, RookMagicHInit);
- init_magics<RIDER>(RookTableV, RookMagicsV, RookDirectionsV, RookMagicVInit);
- init_magics<RIDER>(BishopTable, BishopMagics, BishopDirections, BishopMagicInit);
- init_magics<HOPPER>(CannonTableH, CannonMagicsH, RookDirectionsH, CannonMagicHInit);
- init_magics<HOPPER>(CannonTableV, CannonMagicsV, RookDirectionsV, CannonMagicVInit);
- init_magics<LAME_LEAPER>(LameDabbabaTable, LameDabbabaMagics, LameDabbabaDirections, LameDabbabaMagicInit);
- init_magics<LAME_LEAPER>(HorseTable, HorseMagics, HorseDirections, HorseMagicInit);
- init_magics<LAME_LEAPER>(JamalTable, JamalMagics, JamalDirections, JamalMagicInit);
- init_magics<LAME_LEAPER>(ElephantTable, ElephantMagics, ElephantDirections, ElephantMagicInit);
- init_magics<LAME_LEAPER>(JanggiElephantTable, JanggiElephantMagics, JanggiElephantDirections, JanggiElephantMagicInit);
- init_magics<HOPPER>(CannonDiagTable, CannonDiagMagics, BishopDirections, CannonDiagMagicInit);
- init_magics<RIDER>(NightriderTable, NightriderMagics, HorseDirections, NightriderMagicInit);
- init_magics<RIDER>(CamelriderTable, CamelriderMagics, JamalDirections, CamelriderMagicInit);
- init_magics<RIDER>(AlfilriderTable, AlfilriderMagics, ElephantDirections, AlfilriderMagicInit);
- init_magics<RIDER>(DabbabariderTable, DabbabariderMagics, LameDabbabaDirections, DabbabariderMagicInit);
- init_magics<HOPPER>(GrasshopperTableH, GrasshopperMagicsH, GrasshopperDirectionsH, GrasshopperMagicHInit);
- init_magics<HOPPER>(GrasshopperTableV, GrasshopperMagicsV, GrasshopperDirectionsV, GrasshopperMagicVInit);
- init_magics<HOPPER>(GrasshopperTableD, GrasshopperMagicsD, GrasshopperDirectionsD, GrasshopperMagicDInit);
- #else
- init_magics<RIDER>(RookTableH, RookMagicsH, RookDirectionsH);
- init_magics<RIDER>(RookTableV, RookMagicsV, RookDirectionsV);
- init_magics<RIDER>(BishopTable, BishopMagics, BishopDirections);
- init_magics<HOPPER>(CannonTableH, CannonMagicsH, RookDirectionsH);
- init_magics<HOPPER>(CannonTableV, CannonMagicsV, RookDirectionsV);
- init_magics<LAME_LEAPER>(LameDabbabaTable, LameDabbabaMagics, LameDabbabaDirections);
- init_magics<LAME_LEAPER>(HorseTable, HorseMagics, HorseDirections);
- init_magics<LAME_LEAPER>(JamalTable, JamalMagics, JamalDirections);
- init_magics<LAME_LEAPER>(ElephantTable, ElephantMagics, ElephantDirections);
- init_magics<LAME_LEAPER>(JanggiElephantTable, JanggiElephantMagics, JanggiElephantDirections);
- init_magics<HOPPER>(CannonDiagTable, CannonDiagMagics, BishopDirections);
- init_magics<RIDER>(NightriderTable, NightriderMagics, HorseDirections);
- init_magics<RIDER>(CamelriderTable, CamelriderMagics, JamalDirections);
- init_magics<RIDER>(AlfilriderTable, AlfilriderMagics, ElephantDirections);
- init_magics<RIDER>(DabbabariderTable, DabbabariderMagics, LameDabbabaDirections);
- init_magics<HOPPER>(GrasshopperTableH, GrasshopperMagicsH, GrasshopperDirectionsH);
- init_magics<HOPPER>(GrasshopperTableV, GrasshopperMagicsV, GrasshopperDirectionsV);
- init_magics<HOPPER>(GrasshopperTableD, GrasshopperMagicsD, GrasshopperDirectionsD);
- #endif
- -------------------------------------------------------------------------------------------------------------------------------------
- # magic.h, add precomputed magics
- constexpr Bitboard JamalMagicInit[SQUARE_NB] = {
- B(0xC502282200061400, 0x2D07081241D90200),
- B(0x402014624005200, 0x400000201040),
- B(0x402014624005200, 0x400000201040),
- B(0x203000214000510, 0x800088800081000),
- B(0x104120804040050, 0x228008000400008),
- B(0x300021100814590, 0xC4010140002000),
- B(0x4040442202200141, 0x4082008649),
- B(0x40288040223200, 0x2600408020080049),
- B(0x104120804040050, 0x228008000400008),
- B(0x40008244804008, 0x2004000080018A40),
- B(0x41104D1810100050, 0x8141002010910),
- B(0x4142280080C0118, 0x42400400002001),
- B(0x461003008941102, 0x201000140200100),
- B(0x1001000881400408, 0x420208808008040),
- B(0xA020A09001200004, 0x8080000408140440),
- B(0x100E040200200023, 0x38018001A0180098),
- B(0x1080080814003, 0x218810050001420),
- B(0x100810102286018, 0x4040048000),
- B(0x1080080814003, 0x218810050001420),
- B(0x1014004000C022, 0x88002C140),
- B(0x883401048005202C, 0x30001044005200),
- B(0x2000029240120000, 0x8008002000000060),
- B(0x8011022010002, 0x200290004002208),
- B(0x50014070008C00, 0x242001002602),
- B(0x102400818154000, 0x2200A0980010),
- B(0x20300040608E008, 0x28001008100800),
- B(0x200A221100225C, 0x8A810008002),
- B(0x20820201020242, 0x8000208),
- B(0x1600000102802906, 0xA500120048182800),
- B(0x1020008480090408, 0x4802000040000E10),
- B(0x8800840040204, 0xC080080401880210),
- B(0xD80000141028040, 0xC8404004000000),
- B(0x11000010080412, 0x898100000040410),
- B(0x203010080148E30, 0x4080000000000082),
- B(0x2290180C2008204, 0x2842403111E0C001),
- B(0x4400004408810048, 0x2004061024800),
- B(0x6000682011018, 0x8108041004010100),
- B(0x4000801200844000, 0x40A1240800100080),
- B(0x2021100812800426, 0x2448411088000040),
- B(0x821000200200, 0x8480200025088004),
- B(0x12000202000C2, 0x4510100100200000),
- B(0x1000200206040040, 0x800000440A0060),
- B(0x1000200206040040, 0x800000440A0060),
- B(0x200040202040088, 0x2143010500003100),
- B(0x8020420424004040, 0x4000000C5811888),
- B(0x140088340048410, 0x2101280A0208001),
- B(0x244A00500A040004, 0x1088200820000A98),
- B(0x8030000A40808030, 0x2882400C03000010),
- B(0x802010408085000, 0x8430000008802040),
- B(0x310040600520804, 0x128240030048002),
- B(0x2840021401802800, 0x10120A2800000004),
- B(0x2400000028080400, 0x4404000020C0801C),
- B(0x100C00040041009, 0x1016001002040800),
- B(0x1422000021038900, 0x111042000080001),
- B(0x19046008880, 0x801101A01602000),
- B(0x8201108A424040, 0x480400080200004),
- B(0xA4008298B040208, 0x802088480008001),
- B(0x1028401084004041, 0x320400840423044),
- B(0x114A00003800D040, 0x44026888000800),
- B(0x284000240102A120, 0x8A1C1041802052),
- B(0x8440001024000, 0x2021080000004504),
- B(0x204202419, 0x8040448801A00004),
- B(0x1400000004400450, 0x3005128024224000),
- B(0x4054500871008401, 0x808908000100001),
- B(0x1000000C00020801, 0x201041001088003),
- B(0x4200040008220608, 0x1002109000000020),
- B(0x6212200224, 0x1400484C20110108),
- B(0x404050000033140, 0x4400080640500001),
- B(0x4A50010C02003A, 0x200044790800041),
- B(0x1006020040002, 0x612142208420203),
- B(0x8020044000108002, 0x2410110440004021),
- B(0x4100200A00410002, 0x22004004002C000),
- B(0x400410100040A1AA, 0x1008004028100408),
- B(0x103200000001024, 0x282020A22002052),
- B(0x400410100040A1AA, 0x1008004028100408),
- B(0x2000000200210400, 0x1224000402800002),
- B(0x601150E228104200, 0x424200C100440000),
- B(0x150000A00100080, 0x80804051101120),
- B(0x150000A00100080, 0x80804051101120),
- B(0x4208108468, 0x500A680808404200),
- B(0x100004082040010, 0x800301115022164),
- B(0x4180880842, 0x119500200200042),
- B(0x8000800200003024, 0x28400284090440),
- B(0x2005044000200801, 0x66200228241428),
- B(0xA00800004008, 0x209801018E406094),
- B(0x8000808804, 0xC2004A300000004),
- B(0xB16016C0580A0405, 0x10110025901802A0),
- B(0x200200100800120, 0xA4C00C010201A00),
- B(0x8C00910024040141, 0x300E0D0200000810),
- B(0x3004010C000004, 0x1804000824804208),
- B(0x100000140002801, 0x2020400400040008),
- B(0x60100000000480, 0x100022220B100000),
- B(0x1800002, 0x4F008001040002C0),
- B(0x20008040400241, 0xB00828802A0220),
- B(0x20008040400241, 0xB00828802A0220),
- B(0x958808402025, 0x5020022241090000),
- B(0x2000020000158000, 0x190480810804411),
- B(0x2240100800002000, 0x2E128084003100),
- B(0x416000820020080, 0x100500814800204D),
- B(0x6080000002844005, 0x21000204E088400),
- B(0x40808000C202020, 0x408001248200080),
- B(0x60000A001001842, 0x80C010800404),
- B(0x2600000002880118, 0x20080010080184C),
- B(0x201080C00A0A208, 0x4040400882400082),
- B(0x2002002001200000, 0xA18820006420220A),
- B(0x201080C00A0A208, 0x4040400882400082),
- B(0x2002002001200000, 0xA18820006420220A),
- B(0x2000342084000000, 0x1020030040A04000),
- B(0x1000803C84200005, 0x10A3010820322000),
- B(0x800000010400240, 0x240820805200),
- B(0x904200010180, 0x5A00A104818200),
- B(0x4901080210000419, 0x2840100C200200C),
- B(0x44000000800010, 0x8420A0201248A042),
- B(0x4208000600109002, 0x3101002A7001008),
- B(0x1028000088086405, 0x8023020130800801),
- B(0x4090400C0284000, 0x4800411420206045),
- B(0xC00100101001000, 0x8000000CAE03040),
- B(0x80200A080006, 0xA108100880819),
- B(0x4000000000100080, 0x35040084270C04),
- B(0x280001002088, 0x21200228010C181),
- };
- constexpr Bitboard CamelriderMagicInit[SQUARE_NB] = {
- B(0x380044001500, 0x6010004000908A20),
- B(0xA800041081010, 0x901223001242020),
- B(0x80084414021, 0x8804229800000288),
- B(0x20100041108400, 0x4090401080000620),
- B(0x180005220840080, 0xA3800120140200),
- B(0x180005220840080, 0xA3800120140200),
- B(0x80084414021, 0x8804229800000288),
- B(0x8040808002348900, 0x200201502000001),
- B(0x102C20005812000, 0x4100920800800),
- B(0x8084425000224400, 0x10A1808400105500),
- B(0x8004084940050002, 0x8C00180010000200),
- B(0x8004084940050002, 0x8C00180010000200),
- B(0x11008810200490, 0x43401648000C40),
- B(0x4100040202100400, 0x4091C8101800122),
- B(0x2003200054100, 0xA00090000000A000),
- B(0x1000400102100211, 0x296118180A04014),
- B(0x10840080, 0x40020801840020),
- B(0x10840080, 0x40020801840020),
- B(0x2003200054100, 0xA00090000000A000),
- B(0x1C00240A00010604, 0x60A0010000400),
- B(0x4000451040611, 0xA000284000040008),
- B(0x100810102286018, 0x4040048000),
- B(0x1000400102100211, 0x296118180A04014),
- B(0x30040020, 0x244020000840000A),
- B(0x909203000028, 0xC000004C00200041),
- B(0x2001810020400110, 0xA0100800000480E2),
- B(0x520040800080044, 0x8220000080001402),
- B(0x20140042849501, 0x2003080800010150),
- B(0x1108220088010810, 0x4000002190080000),
- B(0x900002404480011, 0x880000000824402),
- B(0x9011200100400, 0x3801010500040088),
- B(0x8001A20061410000, 0x14008499A000000),
- B(0x800010AC1600006, 0x400008500042000),
- B(0x100051000A140800, 0x2200000C0004A04),
- B(0x206140210900410, 0x4200001050008C),
- B(0x2080B40050544300, 0x424A04000000002),
- B(0x1002042C00000102, 0x4110000610000284),
- B(0x40281060800800, 0x406000201260022),
- B(0x8000809100400020, 0x182802A00B020081),
- B(0x1802C00214003200, 0x94902001040000),
- B(0x200080102010020, 0x380201A00040504),
- B(0x808C42400C0020, 0x3028100840801000),
- B(0xC405009000730B00, 0xA008840000020005),
- B(0x84109040003800, 0x800480200014A42),
- B(0x2400002042010300, 0x642200000A0810D),
- B(0x1800024A2C418, 0xA040200000342600),
- B(0x81180900004010, 0xD00200400000001),
- B(0x8000448011000D80, 0x1080150280048080),
- B(0xA00000800D0000, 0x1001008000C08014),
- B(0x200004022140000, 0x2A0820000094420),
- B(0x5010904000, 0x81140048205012),
- B(0xA0028020000AA800, 0x401C00082001804),
- B(0x402000100001090, 0x4240A40000440000),
- B(0x402000100001090, 0x4240A40000440000),
- B(0x10840101820880, 0xA800008000020020),
- B(0x24004101908094, 0x4000180100002001),
- B(0x24004101908094, 0x4000180100002001),
- B(0x44040100424A0002, 0x68804100008180),
- B(0x20028100028, 0x82080080210800),
- B(0x402000100001090, 0x4240A40000440000),
- B(0x1000100000200C00, 0x403842088000100),
- B(0x200000008088, 0xC62000200488428),
- B(0x4001040000040026, 0x1004880041021),
- B(0x102000000010, 0x8000040140010020),
- B(0xC020200088014, 0x422094000000480),
- B(0x2019004504820001, 0x4008020220003083),
- B(0x800800000100, 0xB111820100000002),
- B(0x289001200000400, 0x49211008000A000),
- B(0x40200E1080241401, 0x2000A04006000000),
- B(0x20008040A0, 0xA0142003000000),
- B(0x501002000080100, 0x400863400000020),
- B(0x11000600000A0201, 0x8C80001A802),
- B(0x41000005A000016, 0x1118010080804104),
- B(0x880802042000108, 0x2800000801200800),
- B(0x44088500004200C0, 0x4008840834040150),
- B(0x1540008800400400, 0x6200082800020120),
- B(0x1000C0100080050, 0x110181100000940),
- B(0x180800004201007, 0x40800500018010),
- B(0x490804B140040011, 0x100040080410A022),
- B(0x1000C0100080050, 0x110181100000940),
- B(0xC08120050288082, 0x24002A1414400104),
- B(0x20004002910500, 0x200890484C820120),
- B(0xC011000002200, 0x1001008124800000),
- B(0x33008000001044C, 0x4100A803814080),
- B(0x6000000000004800, 0x204022060C10000),
- B(0x808010004020100, 0x350201220A001410),
- B(0x1001000310018200, 0x84120007001000),
- B(0x20001000040204, 0x948110C0B2081),
- B(0x8000000002080225, 0x110060400900),
- B(0x2600000008018740, 0x8A0020300044060),
- B(0x4001880060028029, 0x204040002401000),
- B(0x4401100000000202, 0x8000100110000),
- B(0x88400040080820, 0x1240101025120098),
- B(0x24200541001090, 0x1002500002000004),
- B(0x600C000801000004, 0x8015084010200020),
- B(0x8401040000400124, 0x2000081288202200),
- B(0x480011020000180, 0x5402802000150000),
- B(0x480011020000180, 0x5402802000150000),
- B(0x480011020000180, 0x5402802000150000),
- B(0x0, 0x84000002A200400C),
- B(0x0, 0x84000002A200400C),
- B(0x0, 0x84000002A200400C),
- B(0x81040800200, 0x1044002000180108),
- B(0x0, 0x84000002A200400C),
- B(0x81040800200, 0x1044002000180108),
- B(0x300200090800409, 0x444202000038000),
- B(0x804008000040050, 0x41044890228000),
- B(0x804008000040050, 0x41044890228000),
- B(0x18041020028C4020, 0x40248020820804C0),
- B(0x200002021083002, 0x1002001325000000),
- B(0x1001048080880000, 0x990001400A10410),
- B(0x80A40800C4040800, 0x2001000001001041),
- B(0x420004281000, 0x408880200088404),
- B(0x40340880000C0008, 0x47011107808048C0),
- B(0xE0010000240004, 0x80202010001000),
- B(0x100004040101100, 0x700000804200),
- B(0x100011510031403, 0x100004000680),
- B(0x2000C800040802A0, 0x8000690004400080),
- B(0x8100010310520200, 0x1005A1000100000),
- B(0x5000000100208100, 0x28100504808220),
- };
- constexpr Bitboard AlfilriderMagicInit[SQUARE_NB] = {
- B(0x8002004D10144403, 0x400080411008C110),
- B(0x50E008010000A0, 0x31004080008049),
- B(0x8000288101080A00, 0x608820828090C004),
- B(0x42A10240400B00, 0x420A100004200001),
- B(0x20011C0040080, 0x1220082000060004),
- B(0x420200830180090, 0xC00008100402000),
- B(0x2000200814205000, 0x1002010020000041),
- B(0x880000421002600, 0x1000050000040812),
- B(0xA22000520A20A00, 0x4080401820000),
- B(0xA22000520A20A00, 0x4080401820000),
- B(0x800302098404080, 0x4983020000000001),
- B(0x300440080424, 0x112302002A0044),
- B(0x4050400020C04201, 0xC802002148024883),
- B(0x2400803000890A00, 0x4404C04400000AC0),
- B(0x2001820520308201, 0x2008003404349000),
- B(0xC000004200AC, 0x8448010081D08000),
- B(0x840010200480040, 0x801020002608000),
- B(0x8000104080280040, 0x100A20112000000),
- B(0x4B82200001542410, 0x800007C022000010),
- B(0x6802018080929080, 0x9014400404820002),
- B(0x4B82200001542410, 0x800007C022000010),
- B(0x2400803000890A00, 0x4404C04400000AC0),
- B(0x42110608320020, 0x9010538028204018),
- B(0x20030232442, 0x880004C956008020),
- B(0x422001002020B80, 0x100B021200040080),
- B(0x1000200008410C84, 0x1024108400000151),
- B(0x82A080200000845, 0x1518A040080020),
- B(0x80400040400484, 0x5618400C00A0204),
- B(0x820080A080006140, 0x8000100250009180),
- B(0x20140042849501, 0x2003080800010150),
- B(0x94080C0120000480, 0x2044412202002000),
- B(0x400006054200C10, 0x2104400188010),
- B(0x20140042849501, 0x2003080800010150),
- B(0x80400040400484, 0x5618400C00A0204),
- B(0x80400040400484, 0x5618400C00A0204),
- B(0x20004044000023, 0x800D000400034B82),
- B(0xD0000200000, 0x8004014C00600400),
- B(0xD0000200000, 0x8004014C00600400),
- B(0x200180040008200, 0xA411602045000100),
- B(0xC200001220108000, 0x4091100402445000),
- B(0x4000088280442, 0x908420140008041),
- B(0xC200001220108000, 0x4091100402445000),
- B(0x50B5000180000400, 0x8080184000021040),
- B(0x4000000500508008, 0x120000A202210010),
- B(0x200800041000000, 0x602400100448040A),
- B(0x282000001020F20, 0x1A04171106001108),
- B(0x484918C8A6080841, 0x200409004100040),
- B(0x8000000002C008, 0x205499408008100),
- B(0x808000C04000200, 0x3112204C00110080),
- B(0x808000C04000200, 0x3112204C00110080),
- B(0x808000C04000200, 0x3112204C00110080),
- B(0x44040100424A0002, 0x68804100008180),
- B(0x8A008300AC0004, 0x806110000008008),
- B(0x80500023320, 0x4018900000014804),
- B(0x243804068200504, 0x481084080110008),
- B(0x81088040820000, 0x80A02000011448),
- B(0x44040100424A0002, 0x68804100008180),
- B(0x44040100424A0002, 0x68804100008180),
- B(0x44040100424A0002, 0x68804100008180),
- B(0x140C0041044000, 0x80114290002002),
- B(0x900004802400221, 0x4000809081800203),
- B(0x900004802400221, 0x4000809081800203),
- B(0x900004802400221, 0x4000809081800203),
- B(0xA1808E0100108000, 0x2008000505000002),
- B(0x880A8000020A0400, 0x2324008460012300),
- B(0x4440008008A08006, 0x9800610041D2120),
- B(0x400000100380000, 0x8702000100),
- B(0x826002101050042, 0x48081081000241),
- B(0x7000000200040422, 0x8040000202101000),
- B(0x20064101200, 0x40C0C428080),
- B(0x8104868204040412, 0x22244202000081),
- B(0x4408600010011028, 0x7222409160),
- B(0x8000281403004, 0x14208B0001040010),
- B(0x80A080038246C880, 0x404E008082042020),
- B(0x840000320004200, 0x408000120580811),
- B(0x320400010C041060, 0x4100900080000202),
- B(0x320400010C041060, 0x4100900080000202),
- B(0x8000080, 0x2820004000042090),
- B(0x700A021029818832, 0x440022001800),
- B(0x818802844140, 0xA0410902C8000000),
- B(0x440200100114060, 0x2012040400C1420),
- B(0xA1008454108080, 0x120101000480000),
- B(0x440200100114060, 0x2012040400C1420),
- B(0x3000020490A00040, 0x8052300000101014),
- B(0x140C0282022, 0x120200C090000),
- B(0x68483020A0101804, 0x8010200440080045),
- B(0x84008002041081C0, 0x8080500200000000),
- B(0x3040000200080000, 0x400D012800000908),
- B(0x182500482004, 0x8C10120100000000),
- B(0x4001880060028029, 0x204040002401000),
- B(0x800704010804022, 0x4810A00000020000),
- B(0x800000101040001, 0x1240400408800410),
- B(0x10208900103000, 0xC19000040000008),
- B(0x182500482004, 0x8C10120100000000),
- B(0x182500482004, 0x8C10120100000000),
- B(0x182500482004, 0x8C10120100000000),
- B(0xA0010A0250430, 0x20100006002004),
- B(0x1800001108142282, 0x9414002004400000),
- B(0x8020031500100, 0xE588D01000044000),
- B(0x501C40008228104, 0x3044000020400),
- B(0x10494088050090, 0x12300000A020204),
- B(0x60404008041440A, 0x208408C28000042),
- B(0x60404008041440A, 0x208408C28000042),
- B(0x300200090800409, 0x444202000038000),
- B(0x480011020000180, 0x5402802000150000),
- B(0x4010588440181A0, 0xC09008200210002),
- B(0x204000944041080, 0x1032400086101000),
- B(0x12010164412080, 0x2100402002020040),
- B(0x4280058840000, 0x4042028C081910A0),
- B(0x4280058840000, 0x4042028C081910A0),
- B(0x4000B0C0021, 0xC410402440200000),
- B(0x4000B0C0021, 0xC410402440200000),
- B(0x8000003100100002, 0x8B00806110138180),
- B(0x940001000400, 0x2180264C8010020),
- B(0x4000B0C0021, 0xC410402440200000),
- B(0x24004000144D05, 0x4000500A08000010),
- B(0x4358000401122000, 0x616001040040000C),
- B(0x4001142500, 0xA00690800040700),
- B(0xA011008901888400, 0x2820100104008001),
- B(0xA011008901888400, 0x2820100104008001),
- };
- constexpr Bitboard DabbabariderMagicInit[SQUARE_NB] = {
- B(0x4880201415114000, 0x801050500040000),
- B(0x8480A1408004001, 0x3280000000C0902),
- B(0x20100041108400, 0x4090401080000620),
- B(0x12400080011110, 0x128022500000403),
- B(0x80114110000010, 0x400000255C051),
- B(0x2200110000CA10, 0x900020208C000048),
- B(0x40006209000881, 0x4022009280001005),
- B(0x2200110000CA10, 0x900020208C000048),
- B(0x80042003060010, 0x4100050A410),
- B(0x40000040005460, 0xD0028011000048),
- B(0x2104004108000011, 0x1048048202000084),
- B(0x10800020841020, 0x2000082002000040),
- B(0x40080004000101, 0x4020D109080080),
- B(0x414440420800018, 0x2209220000700000),
- B(0x8E690102004249, 0x8000145800200130),
- B(0x6088010620086401, 0x2100148000002811),
- B(0x4140C0000804020, 0xD804800400100820),
- B(0x8070040090120000, 0x2000000408400803),
- B(0xD01A8010100E000, 0x800000108108402),
- B(0x142C042808040000, 0x200400800000804),
- B(0x4040100000089800, 0x2000C08011A00B0),
- B(0x40010020000, 0x2020808406402804),
- B(0x4019080801010000, 0x8010040040000A19),
- B(0xC400040001010602, 0x7860106080000210),
- B(0x1480A4840000214, 0x890314400000A000),
- B(0x400006054200C10, 0x2104400188010),
- B(0x2001810020400110, 0xA0100800000480E2),
- B(0x2080B40050544300, 0x424A04000000002),
- B(0x9000420008840, 0x4881300000000210),
- B(0x5401832090020400, 0x300010020001),
- B(0x820080A080006140, 0x8000100250009180),
- B(0x2080B40050544300, 0x424A04000000002),
- B(0x28281100028002, 0x240040008E00),
- B(0x28281100028002, 0x240040008E00),
- B(0x4040090840240020, 0x8008000600),
- B(0x9000420008840, 0x4881300000000210),
- B(0x10000008210000, 0x4218406180100400),
- B(0x41802000840102, 0x80440A400C00000),
- B(0x2000000088080408, 0x1000013080002080),
- B(0x810286000041001, 0x100018000800020),
- B(0x10000008210000, 0x4218406180100400),
- B(0x214000010A850008, 0x10150C0A0E02144),
- B(0x214000010A850008, 0x10150C0A0E02144),
- B(0x80800030120900, 0xA02C1024005028),
- B(0x4000088280442, 0x908420140008041),
- B(0x8020000008054000, 0x400001120001880),
- B(0x4400280000240080, 0x8208240080000400),
- B(0x6021080010024080, 0x6107002014042060),
- B(0x8000208000000881, 0x110000800084240),
- B(0x420402820040084, 0x400000002140C0),
- B(0x2009810080430080, 0x4104000100005000),
- B(0x20608840000020, 0x1110000000010120),
- B(0x4048100200090090, 0x2008090100000900),
- B(0x218000200121408, 0x14000410104C80),
- B(0x2000010221020, 0x200040000220),
- B(0x2000010221020, 0x200040000220),
- B(0x2000010221020, 0x200040000220),
- B(0x82000018868040, 0x120640200402),
- B(0x100010044480, 0x4901C5A0005002A),
- B(0x82000018868040, 0x120640200402),
- B(0x4080182A21410008, 0x6800130421082000),
- B(0x10020006080400, 0x410002002241009),
- B(0x808403080080200, 0x802601000000500),
- B(0x101000000740800, 0x4208004001000816),
- B(0x808403080080200, 0x802601000000500),
- B(0x501002000080100, 0x400863400000020),
- B(0x808403080080200, 0x802601000000500),
- B(0x501002000080100, 0x400863400000020),
- B(0x22100024003004, 0x1000444880012050),
- B(0x66108040, 0x10000C0120000002),
- B(0x8010000088401D, 0x2901000101100004),
- B(0x80000058001000, 0xD080141440000012),
- B(0x401040400064010, 0x841804010802490),
- B(0x8000402000000804, 0x64040880001051),
- B(0xE00000840000080, 0x1010400400200282),
- B(0x400840200D02904, 0x61011400000000),
- B(0x1000C0100080050, 0x110181100000940),
- B(0x2000000601001020, 0x10040200000602),
- B(0x400806614800B041, 0x2004800280800000),
- B(0x320400010C041060, 0x4100900080000202),
- B(0x1590804810880C40, 0x2310810271000040),
- B(0x700A021029818832, 0x440022001800),
- B(0x2820220402800020, 0x2100880100000),
- B(0x2508000800804888, 0x41008002800018),
- B(0x12006002C804000, 0x2381100400204004),
- B(0x12006002C804000, 0x2381100400204004),
- B(0x80A1005001546000, 0x8830000800020100),
- B(0x800151002000, 0x2002900422013008),
- B(0x80A1005001546000, 0x8830000800020100),
- B(0x400400A200020, 0x8022100C0000100),
- B(0x2600000008018740, 0x8A0020300044060),
- B(0x800000101040001, 0x1240400408800410),
- B(0x800100040108, 0x600020000841C1),
- B(0x38180020988208, 0x21141000040928),
- B(0x38000050001220, 0x9200010200145900),
- B(0x100000140002801, 0x2020400400040008),
- B(0x160004580C04000, 0x1004182800800),
- B(0x4800882002004800, 0x641002405022010),
- B(0x1020040108285000, 0x4200200200032),
- B(0x1020040108285000, 0x4200200200032),
- B(0x1000820080A0C900, 0x402C001012801200),
- B(0x200000096042200, 0x208209080410028),
- B(0x800808201400108, 0x8050100640010A),
- B(0x6082004808040100, 0x1000800000502440),
- B(0x2300004282201004, 0x48501000824020C0),
- B(0x40024012005008, 0x1000604000408000),
- B(0x2425000001001010, 0x1010240008080080),
- B(0x40A11500210000, 0x8100080080400C00),
- B(0x10001004080100, 0x4880C40088060800),
- B(0x408200, 0x1080040104002088),
- B(0x4140008000B01032, 0x8000100C003240),
- B(0x42A0010922400400, 0x200022020100300),
- B(0x8818014040100000, 0x402804011108800),
- B(0x1450000000480040, 0x89081020001080),
- B(0x400000004048005, 0x110802440002802),
- B(0x880080040500C140, 0x94890120410610),
- B(0x2200020010490, 0x8401245048044800),
- B(0x148080000043200A, 0x80548100000244),
- B(0x8600000030000410, 0x4100C104000820),
- B(0x5004000000002040, 0x8120000180110840),
- };
Advertisement
Add Comment
Please, Sign In to add comment