Repository navigation
Design
Lite Blue is classic symbolic chess: alpha-beta search over a hand-tuned evaluation. It is deliberately single-node, written for one 250 MHz PowerPC 604e.
An 0x88 mailbox — board[128], a square is valid iff (sq & 0x88) == 0 —
rather than bitboards. The 604e is a 32-bit machine with no fast 64-bit integer
path, so the usual bitboard advantage inverts. Zobrist keys (splitmix64, fixed
seed) are maintained incrementally and recomputed at every perft leaf to prove
them.
Negamax alpha-beta with:
- iterative deepening;
- a transposition table of 16-byte entries, sized to the 604e's 1 MiB L2 so probes stay off the slow DRAM path;
- quiescence search over captures and promotions;
- principal-variation search;
- null-move pruning, late-move reductions, and killer/history move ordering.
Not MCTS. On one scalar core with a slow memory hierarchy, a method that needs a strong evaluation at every node starves; alpha-beta with good ordering fits the machine. Repetition is detected against the game history; mate, stalemate and the fifty-move rule are handled.
Hand-tuned, in centipawns, tapered between middlegame and endgame by a material phase:
- material and piece-square tables, with a tapered king;
- a pawn-shield king-safety term;
- pawn structure: bonuses for passed pawns by rank, penalties for doubled and isolated pawns;
- a bishop-pair bonus and a tempo bonus.
Each addition was made on measurement, not intuition — see Measuring.
Move generation is perft-verified against the standard suite, with the Zobrist key recomputed and compared at every internal node, and the search is deterministic across XL C 5.0.2 and GCC 2.95.3. A code review found and fixed a repetition-buffer overrun, a zeroed-limit time bug, a case where the search could return no move, and a transposition-table leak.