summaryrefslogtreecommitdiff
path: root/include/engine/ttable.h
diff options
context:
space:
mode:
authorAargh Rai <aargh.rai+git@gmail.com>2026-07-19 17:52:26 +0530
committerAargh Rai <aargh.rai+git@gmail.com>2026-07-19 17:52:26 +0530
commita0970bddbd9f6b97b6a12ba7f73fd1810a2e1e1b (patch)
tree9aa71decf96b43242e98c1b864ba9c6d9b5017f3 /include/engine/ttable.h
parentc9d9bddf3df97ef7987c9824747ec1602522b542 (diff)
ttable lookup & probe
Diffstat (limited to 'include/engine/ttable.h')
-rw-r--r--include/engine/ttable.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/include/engine/ttable.h b/include/engine/ttable.h
new file mode 100644
index 0000000..2ee1a5c
--- /dev/null
+++ b/include/engine/ttable.h
@@ -0,0 +1,43 @@
+#ifndef TTABLE_H
+#define TTABLE_H
+
+#include "bitboard.h"
+
+#define TABLE_BITS 24
+#define TABLE_SIZE (1ULL << TABLE_BITS)
+#define MASK (TABLE_SIZE - 1)
+#define TT_BUCKET_SIZE 4
+
+static struct zobrist_keys {
+ u64 piece[PIECE_TYPE_COUNT][64];
+ u64 castle[CASTLE_COUNT];
+ u64 turn[TURN_COUNT];
+ u64 en_passant[64];
+} zobrist_keys;
+
+enum { TT_EXACT, TT_LOWERBOUND, TT_UPPERBOUND };
+typedef struct {
+ atomic_uint_fast64_t key;
+ move_t best_move;
+ i16 score; // depth analysed
+ i16 eval; // non-depth analysed
+ u16 depth;
+ u16 generation;
+ u8 flag;
+} tentry_t;
+
+typedef struct {
+ tentry_t entries[TT_BUCKET_SIZE];
+} tbucket_t;
+
+typedef tbucket_t* ttable_t;
+
+void ttable_init();
+u64 zobrist_hash(position_t position);
+void ttable_store(
+ ttable_t *ttable, u64 key, move_t move, i16 score,
+ i16 eval, u16 depth, u16 generation, u8 flag
+);
+tentry_t *ttable_probe(ttable_t *table, u64 key);
+
+#endif // TTABLE_H