When making a move, like when UCI gives "moves" after a position command, be sure to update the root hash key in the history.
Draw detection wasn't working very well, since it couldn't see back in the previous game history. To fix this, I'm keeping track of the game history.
In UCI mode, when we get a FEN position. Assume it's a move on the current game, unless we get ucinewgame beforehand.
In UCI mode, getting the startpos position behaves similarly to ucinewgame.
Test the legality of every move until we find a legal one.
Test for checkmate/stalemate only if no legal moves were found.
When a repetition is detected, don't just return 0, that's dumb. We need to have 0 as just an option, instead of unconditionally returning it.
Make the draw score a variable. Currently set to -100cp to avoid drawing in self-matches.
Tweak the knight piece-square tables. This doesn't seem to have much effect.
Remove the queen's piece-square table.
Add the null move heuristic. This is currently disabled because I haven't programmed any logic to prevent it from running in cases where it messes up.