Skip to content

Commit 78fa794

Browse files
author
Oliver Brausch
committed
5.9.8a Half sized bitboards
1 parent 1410937 commit 78fa794

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

src/olithink.c

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* OliThink5 (c) Oliver Brausch 06.Jun.2021, ob112@web.de, http://brausch.org */
2-
#define VER "5.9.8"
2+
#define VER "5.9.8a"
33
#include <stdio.h>
44
#include <string.h>
55
#ifdef _WIN64
@@ -44,14 +44,14 @@ const int fval[] = {0, 0, 2, 0, 0, 3, 5, 9};
4444
#define _CAP(x) ((x) << 19)
4545
#define PREMOVE(f, p) ((f) | _ONMV(c) | _PIECE(p))
4646

47-
#define RATT1(f) rays[((f) << 7) | key000(BOARD, f)]
48-
#define RATT2(f) rays[((f) << 7) | key090(BOARD, f) | 0x2000]
49-
#define BATT3(f) rays[((f) << 7) | key045(BOARD, f) | 0x4000]
50-
#define BATT4(f) rays[((f) << 7) | key135(BOARD, f) | 0x6000]
51-
#define RXRAY1(f) rays[((f) << 7) | key000(BOARD, f) | 0x8000]
52-
#define RXRAY2(f) rays[((f) << 7) | key090(BOARD, f) | 0xA000]
53-
#define BXRAY3(f) rays[((f) << 7) | key045(BOARD, f) | 0xC000]
54-
#define BXRAY4(f) rays[((f) << 7) | key135(BOARD, f) | 0xE000]
47+
#define RATT1(f) rays[((f) << 6) | key000(BOARD, f)]
48+
#define RATT2(f) rays[((f) << 6) | key090(BOARD, f) | 0x1000]
49+
#define BATT3(f) rays[((f) << 6) | key045(BOARD, f) | 0x2000]
50+
#define BATT4(f) rays[((f) << 6) | key135(BOARD, f) | 0x3000]
51+
#define RXRAY1(f) rays[((f) << 6) | key000(BOARD, f) | 0x4000]
52+
#define RXRAY2(f) rays[((f) << 6) | key090(BOARD, f) | 0x5000]
53+
#define BXRAY3(f) rays[((f) << 6) | key045(BOARD, f) | 0x6000]
54+
#define BXRAY4(f) rays[((f) << 6) | key135(BOARD, f) | 0x7000]
5555

5656
#define RMOVE1(f) (RATT1(f) & ~BOARD)
5757
#define RMOVE2(f) (RATT2(f) & ~BOARD)
@@ -99,7 +99,7 @@ int wstack[0x400];
9999

100100
static u64 BIT[64];
101101
static u64 hashxor[4096];
102-
static u64 rays[0x10000];
102+
static u64 rays[0x8000];
103103
static u64 pmoves[128];
104104
static u64 pcaps[384];
105105
static u64 nmoves[64];
@@ -305,8 +305,8 @@ void _init_rays(u64* ray, u64 (*rayFunc) (int, u64, int), int (*key)(u64, int))
305305
u64 occ = (*rayFunc)(f, board, 2);
306306
u64 xray = (*rayFunc)(f, board, 3);
307307
int index = (*key)(board, f);
308-
ray[(f << 7) + index] = occ | move;
309-
ray[(f << 7) + index + 0x8000] = xray;
308+
ray[(f << 6) + index] = occ | move;
309+
ray[(f << 6) + index + 0x4000] = xray;
310310
}
311311
}
312312
}
@@ -396,18 +396,18 @@ int identPiece(int f) {
396396
}
397397

398398
int key000(u64 b, int f) {
399-
return (int) ((b >> (f & 56)) & 0x7E);
399+
return (int) ((b >> ((f & 56) + 1)) & 0x3F);
400400
}
401401

402402
int key090(u64 b, int f) {
403403
u64 _b = (b >> (f&7)) & 0x0101010101010101LL;
404404
_b = _b * 0x0080402010080400LL;
405-
return (int)(_b >> 57);
405+
return (int)(_b >> 58);
406406
}
407407

408408
int keyDiag(u64 _b) {
409409
_b = _b * 0x0202020202020202LL;
410-
return (int)(_b >> 57);
410+
return (int)(_b >> 58);
411411
}
412412

413413
u64 bmask135[64], bmask45[64];
@@ -1412,9 +1412,9 @@ int main(int argc, char **argv) {
14121412
crevoke[56] ^= BIT[9];
14131413

14141414
_init_rays(rays, _rook0, key000);
1415-
_init_rays(rays + 0x2000, _rook90, key090);
1416-
_init_rays(rays + 0x4000, _bishop45, key045);
1417-
_init_rays(rays + 0x6000, _bishop135, key135);
1415+
_init_rays(rays + 0x1000, _rook90, key090);
1416+
_init_rays(rays + 0x2000, _bishop45, key045);
1417+
_init_rays(rays + 0x3000, _bishop135, key135);
14181418
_init_shorts(nmoves, _knight);
14191419
_init_shorts(kmoves, _king);
14201420
_init_pawns(pmoves, pcaps, pawnfree, pawnfile, pawnhelp, 0);

0 commit comments

Comments
 (0)