Code: Select all
void Initialize() {
s32 i, fs120, ts120, fs64, ts64;
s32 dir[8] = {9, 11, -9, -11, 1, 10, -1, -10};
s32 din[8] = {8, 12, 19, 21, -8, -12, -19, -21};
s32 isOnBoard[120] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1,
1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1,
1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1,
1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
for (fs64 = 63; fs64 >= 0; fs64--) {
fs120 = SQUARE120(fs64);
for (i = 0; i < 8; i++) {
ts120 = fs120 + din[i];
if (isOnBoard[ts120]) {
dirKn[fs64] |= BIT64(SQUARE64(ts120));
}
}
for (i = 0; i < 8; i++) {
ts120 = fs120 + dir[i];
if (isOnBoard[ts120]) {
dirKi[fs64] |= BIT64(SQUARE64(ts120));
do {
dirPtr[i][fs64] |= BIT64(SQUARE64(ts120));
ts120 += dir[i];
} while (isOnBoard[ts120]);
}
}
}
}