******* History of Major Changes *******
          (Console version)

* Dates in parentheses are the starting dates


001alpha1 (Thanksgiving, 2003)
- First the version

001alpha2 (Dec, 2003)
- Rewrote minimax and added move ordering, so it is much faster. No change is made to evaluation function.

001alpha3
- Probably added quiescence search. (not exactly sure)

001b
- Started to give negative weight to disc count in beginning and mid game.

001c
(don't remember exactly..., need to check the code)

001d
- Added seperate end-of-game solver, still slow but better than before.

001e (abandoned)
- Experimented with counting for certain edge configuration, but didn't work out well at all.

001f
- Added save/load game and more options.

001g
- Added counting for stable discs to evaluation function.

001h
- Corrected some non-critical errors in stable disc counting. 
- Some improvement on quiescence search (speed & accuracy), but it is still far from good enough.

001i
- Now in mid-game search, empty squares are manitained in a linked list in a fixed best-to-worst order.

001j
- Switched to 91-square board for mid-game search.
- Fixed a critical bug in stable disc count.
- Improvement on quiescence search. It is now much better, i.e. less likely to be harmed by horizon effect, but probably still far from perfect.
- Changed the evaluation function a little. It now calculate mobility for both players from the same (current) board position. (Used to use previous board position for one of the player.)
- Adjusted corner weight, stable disc weight and ceiling value for disc difference.

001k (Jan 19, 2004)
- Added evaluation for edge configuration (e.g. unbalance edges). It is still very experimental at the moment though.
- Re-adjusted disc difference weight and stage division.

001m (skipping letter 'l' since it can get confusing with '1' and 'I'!)
- User can change the AI level during the game
- Removed some unused code

001n (Jan 24, 2004)
- Made own version or end game solver based on the idea of Andersson's end game solver. The external one is now disable (no longer part of the program) by default. It can still be enabled by modifying the source code and the Makefile.

001o (Feb 12, 2004)
- Minor modifications on quiescence search conditions; removed a few lines that are no longer (and likely never going to be) needed; adjusted corner and irreversible disc weights a bit lower.
- Added "--mindless" and "--stooge" option (low difficulty).
- Stopped using getchar().

001p (Mar 16, 2004)
- Reduced the weight of stable disc on edge. (experimenting)
- Fixed a tiny bug in printing out the help message.
- Updated Makefile so it can now be compiled with Borland C++ Compiler with "make bcc".

001q (Sep 26, 2004)
- Changed AI default setting to depth 8, end-game 16.
- Added option for user to change the symbol used represent possible moves.
- Used fgets() to replace gets()


-------- 0.02 version --------

002a (Feb 15, 2005)
- Support GUI though command-line input and stdout.
- Corrected a minor bug in the keeping of past moves record.
- Added time-dependent cutoff (to support time-constraint play from the GUI version)

002b (Mar 22, 2005)
- Added a min limit on smallest value (currently == 1) of mobility (used in evaluation), so as to avoid mistake, e.g. giving away corner, due to extreme mobility values.
- Corrected a evaluation value display error.

002c (April 10, 2005)
- Change quiescence search start to after 12 moves
- Added pure-mobility auxiliary move ordering, some 10% speed up - nothing substantial though.
- Took out the top-level a-b pruning in move ordering. Ordering takes a little longer, but has better result. Seem to give some non-substantial speedup (may 10%?).
- Add move ordering using search+eval for end game solver. Some 10%-30% speedup.
- Prints one additional value to STDOUT, i.e. the explicit WDL result.

002d (April 14, 2005)
- Fixed a bug in stable disc counting
- Modified and enabled Multi Prob-Cut (MPC). *Seems* safe enough now. Produce 30%-50% speedup. Probably worth it even if it is not abolutely safe.

002d_2 (April 14, 2005)
- No externally visible difference from 0.02d, but reduces redundancy. getMin() is taken out and - getMax(...) is called instead.

002e

