How gandalf887/oreo works
Oreo is a bitboard-based chess engine with two documented ways to play: a Raylib graphical interface and a terminal UCI protocol. Both lead to engine move selection, which can consult the opening book or search positions, then return a move to the active interface. The engine’s internal work spans position loading, move generation and legality, evaluation, and iterative search with transposition support. The graph reflects README capabilities and sampled call sites; some implementation details, especially display and search internals, were not fully sampled.
Main entry points: search.cpp Iterative search · main.cpp Engine startup · gui.cpp Graphical interface · fen.cpp FEN position loading
Components 15
User interfaces
- Graphical interface
Main Files/gui.cpp - Board display
Main Files/display.cpp - UCI protocol
Main Files/uci.cpp - Engine startup
Main Files/main.cpp
Position and rules
- FEN position loading
Main Files/fen.cpp - Board representation
Main Files/position.h - Move generation
Main Files/movegen.cpp - Move legality
Main Files/legal.cpp - Make and undo
Main Files/makeunmake.cpp
Move selection
- Position evaluation
Main Files/eval.cpp - Iterative search
Main Files/search.cpp - Opening book
Main Files/book.cpp
Engine state
- Transposition table
Main Files/transposition.cpp - Position hashing
Main Files/zobrist.cpp
Other components
- Player or GUI client
Connections 19
- Player or GUI client → Graphical interface: plays through
- Player or GUI client → UCI protocol: sends protocol
- Engine startup → FEN position loading: loads start
- Engine startup → Graphical interface: starts
- Engine startup → UCI protocol: starts
- FEN position loading → Board representation: creates
- Graphical interface → Board display: renders board
- Graphical interface → Iterative search: requests move
- UCI protocol → Iterative search: requests move
- Engine startup → Opening book: initializes
- Iterative search → Opening book: probes
- Iterative search → Move generation: generates moves
- Iterative search → Move legality: checks legality
- Iterative search → Make and undo: applies and reverts
- Iterative search → Position evaluation: evaluates
- Iterative search → Transposition table: probes and stores
- Make and undo → Position hashing: updates hash
- FEN position loading → Position hashing: hashes position
- Move generation → Move legality: checks attacks