The entire Simontacchi package is divided into two parts: the engine and the controller. The engine is the actual code that comes up with moves. It implements the search routine and all the features listed below. It is not responsible for things like clock management, pondering, or basic protocol requirements.
Simontacchi is completely open source. The Simontacchi area on SourceForge can be traveled to by clicking on the SourceForge banner on the left pane. Go there to post bugs/feature requests and discuss the engine.
* Aspiration Principle Variation Search (an optimized version of the traditional alpha-beta algorithm)
* Iterative Deepening
* Rotated Bitboard based move generation and evaluation
* Transposition Tables
o Always-Replace Main Table
o Pawn Evaluation Table
o Evaluation Cache
* Null-move forward pruning
* History and Killer Heuristics
* Lazy Evaluation
* Futility Pruning, Razoring
* Quiescence Search guided by the MVV/LVA heuristic with futility pruning
* Repetition Detection
* Search Extensions (Check, Single Move, Recapture, Passed Pawn push (not yet implemented))
* Static Evaluation
o Pawn Structure
o King Safety
o King Attack
o Piece Placement
o Castling Bonus
o Queen management in the opening
The control portion of Simontacchi is what implements the protocol communicating with the main engine. There are two controllers, the WinboardController and the UCIController. The WinboardController is the layer that sits between the main engine and the Winboard protocol and is in effect in console mode as well. Below is a list of what this means.