Skip to content
ict edited this page Oct 16, 2026 · 1 revision

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.

Board

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.

Search

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.

Evaluation

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.

Robustness

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.

Clone this wiki locally