The implementation of Transposition tables are taking a whole lot of time, I am struggling with just about everything. :) From wrong values in the table, to incomplete principal variations, to weird cut offs and wrong evaluations.
Yesterday I finally got the basics working without bugs. Mediocre stores the positions in the transposition tables and recognizes repeated positions in the search. It also searches the hash table move first in every alpha-beta search.
What is left is using non-exact values (i.e. values from failing high (beta cut off) and failing low (not reaching alpha). These values can not be used as exact values since they are only estimated (we did not search all moves in the line).
When trying to use the non-exact values I get weird results, but I am homing in on the problem atleast. It should have something to do with the positive and negative values received from the evaluation based on who is moving.
Anyway I am getting closer. :) You can start looking forward to a big guide to transposition tables as soon as I am ready.