=-=-=-=-=-= TODO List =-=-=-=-=-= Note, this is a *very* incomplete list. I'm continually making modifications not listed here. Still this list does highlight a number of items that need to be worked on. ============================================================================== [ ] Make the program accept/offer draws. [ ] Add a debug mode that compares the time kept internal to the engine with the time under Xboard. [ ] Add "learning" to the program. [ ] Add the "annotate" and "annotate-html" commands. [ ] Implement a better time-control algorithm [ ] Add a "trapped/entombed-piece" evaluator. [ ] Modify the PV saved when running a test-suite. Done ---- [x] Add Knuth-Moore node typing during the search. [x] Implement a "generate_check_replys()" function that returns check replys that are TRUE legal moves (instead of psuedo-legal moves). The advantage of this approach is that the move count returned by this function could be used to directly to determine if we should do the "one-move" extension. [x] Determine the Hamming Distance for the random numbers used by the hash table. [x] Add an .*rc options file. [x] Add en'passant rights and castling rights to the hash key. [x] Make the program score a penalty to prevent it from capturing an edge pawn (defined as the a/h pawns) residing on its initial when the two adjacent pawns of the same color are also on their initial squares. This should prevent the cases where a bishop or knight can get trapped by pushing the pawn next to the captured pawn thus eventually allowing the other side to snag the bishop or knight. [x] Add a "PASSED/FAILED" statement to the log file for each test position when running a test suite. [x] Modify the perl script "tally-tests.pl" to take advantage of the "PASSED/FAILED" statement in the log file so that it can report on the number of tests that were solved by the various versions of the program. [x] Add endgame tablebases to the program. [x] Make the program recognize all types of draws. 1) Fifty-move rule. 2) Three-fold repetition rule 3) Insufficient material to win [x] Make the program think on the opponent's time (pondering). [x] Sort the moves at the root. [x] Add the "analyze" command. [x] Get the program playing on ICS full-time (need a cable modem or DSL). [x] Implement some form of "Oracle" function to be called once at the root. Most likely it would involve (at a minimum) dynamically set piece- square tables. [x] Make the program recognize "insufficient-material" draws at the root. [x] Implement internal iterative-deepening. [x] Let MATE scores be stored as bounds in the hash table. [x] Make the program resign when behind by a significant amount of material. [x] Add the exclusive-OR trick for updating the chess board bitmaps when moving a piece.