1---- Version 0.8 -> 0.8.1
2o Added reasonable intelligence based on
3  - Finishing the game
4  - Check
5  - Capture
6  - Castling and Promotion
7  - Proximity to end of board.
8  These are very basic and frequently wrong guesses, but they are
9  better than previous versions.  All possible moves are checked.
10  There is almost no lookahead but there is a little asynchronicity
11  (stuff can happen while the computer is working).  It's very easy
12  to win, but it does teach moves.  Watch out for the computer's
13  cannons; it knows how to use them...
14
15o Fixed problem concerning PieceThreatened and promoted pieces,
16  simplified the routine hugely, and renamed it to SquareThreatened.
17
18o Optimised TraverseDir by stopping checking in a direction if a piece
19  is hit or the edge of the board is encountered.  Macroized many
20  of the complexities of directions.
21
22o Discovered that Solaris has function prototypes, so took that into
23  consideration in mahine.h
24
25o Moved back to X11R5 compatibility.  Using XlibSpecificationRelease
26  to determine which version is being compiled.
27
28o Fixed problem which allowed promotion if the pawn's king was in check.
29
30o Fixed bug re: bishop, which allowed it to move diagonally in *any* two
31  directions, even though it can actually move diagonally in only two
32  way: strictly on the one board (a la chess) or like this and between
33  boards.  That is, a move from Yc1 to Zc2 is illegal.  Additionally
34  fixed bug which prevented it from changing levels.
35
36o Fixed bug with knights which meant that the computer thought that it
37  move them from row 7 to row 0 via an ABS() oversight.
38
39o Arranged board windows so that they tend not to overlap at startup.
40
41o Minor editing of the docs.
42
43---- Version 0.7.6 -> 0.8
44o No changes.  I just decided that enough was done in 0.7.6 (which was
45  never released) to justify the version bump.
46
47---- Version 0.7.5 -> 0.7.6
48
49o Some minor new functionality; slightly more descriptive messages;
50  beeps are less frequent.
51
52o Reduced the size of xif.c by putting some code into callbaks.c and
53  some into xnet.c.  Moved the X stuff in 3Dc.h into x3Dc.h
54
55o Networking code is eliminated.  It was causing portability problems.
56  "What!" I hear you exclaim---"No more network 3Dc?!"  Don't worry,
57  I've merely realised what a plonker I really am and moved over to
58  X; after all, it is a networking GUI so why not use it?  See the new
59  "-ad" command-line option.
60
61o All the AI code is now in ai.c; it has changed quite a bit.
62  Several bugs in the AI code found and fixed.  The
63  associated global variables (DontMove) are now module
64  variables, local to their respective files.  Only Board and bwToMove
65  are global now.
66
67o Move some of the code from pieceThreatened and similar functions into
68  the new function TraverseDir, added a DIR macro and added direction defines.
69  This was primarily to reduce function sizes and reduce nesting.
70
71o Added a make install (how did I miss putting this in ages ago?)
72  Got rid of that dodgy make config code in favour of a user-modifyable
73  Makefile.  Made an undo option configurable from the Makefile.
74
75o Fixed a few bugs in engine.c and piece.c which allowed a few dodgy
76  things when moving a king out of check and another bug in engine.c,
77  which caused a seg fault if you moved into one of eight spaces on the
78  top board.  At least one precompiler bug was found and fixed.
79
80o Changed function names to all start with capital letters.  Variables
81  still start with small letter.
82
83---- Version 0.7.4 -> 0.7.5
84
85Only few (tiny) changes this time
86
87 o namelen in net.c is now set to sizeof(SOCKADDR) before calling accept.
88   Thanks Robert.
89
90 o string.h is now included by xif.c and main.c, and references to strdup
91   and sprintf put into machine.h
92
93---- Version 0.7.3 -> 0.7.4
94
95o Investigated the use of pixmap cursors again, and came up with the following
96  on the way:
97
98  - Put in pixmap cursors (you can go back to using the cursor font by defining
99    FONTCURSOR in xif.c).
100
101  - Memory leak; only need to call XCreateFontCursor once (I don't call
102    XFreeCursor, as it should be autofreed on quitting.  Bad practice, I
103    know, but it means that I don't have to make cursor a global.  This
104    bug doesn't apply to pixmap cursors, as I create the cursor each time,
105    rather than maintain 22 cursors).
106
107  - Fixed bug whereby the cursor would only be changed for the current board
108    and any above it; boards below wouldn't have it changed (this one applies
109    to both the new pixmap cursors and the older font cursors).
110
111  - Fixed bug where the cursor would change even if nothing was picked up.
112    This wasn't serious for FONTCURSOR, but segfaulted with pixmap cursors.
113
114o Halved the number of masks required (thus saving the space required for
115  11 32x32x1 pixmaps and the relevant pointers and IDs - talk about
116  conscientious..)
117
118o Fixed redrawing of muster window during restart (i.e. now it gets redrawn).
119
120o Fixed a bug with undo - the undone piece thought that it was in both its
121  original place and the place from which it was undone.
122
123o Made the "Resign Game?" dialog pop up in a more sensible position.  It
124  doesn't check to see if some of the dialog has gone missing off the edge of
125  the screen, but I don't care - do you?
126
127o Improved the net play a bit.  Now restart and resign work over the net.
128  There's no verification by the other player, but the whole net stuff is
129  hanging together by a thread anyway.  I'll totally rewrite it one year.
130
131---- Version 0.7.2 -> 0.7.3
132
133o Fixed the problem whereby the game would crash when trying to put up the
134  promotion callback.  So now you can have 25 Queens..
135
136o Taking En Passant would remove the piece from the board, but not from the
137  game (this could be seen by examining the muster window while taking en
138  passant - nothing would change).  This is now fixed.
139
140o Fixed bug whereby a pawn taking a piece on the final rank would destroy
141  the piece utterly, even unto undos.
142
143o Removed some dependance on the shape of the boards; this will simplify
144  extending the game to arbitrarily sized boards, with arbitrarily many
145  players.
146
147o Discovered that my fix to the makefile only works for GNU make; the real
148  fix is to create an empty file .config, and to change the -f in the test
149  to a -s; now it works.
150
151---- Version 0.7.1 -> 0.7.2
152Small changes, again.  The muster window got most of the attention.
153
154o The following changes were made in the muster window:
155
156  - The black royalty had the count of the black nobility, and vice versa.
157  - The black royalty and nobility were too far to the left.
158  - The Pawns' count vertical position was dependant on the width of the muster
159    window - a silly mistake.
160
161o Fixed memory leak in Err3Dc.
162
163o Fixed bug with pawn allowing it to move 2 forward, 1 sideways (like a knight)
164  on its first move.
165
166o Got the make working properly, so that you don't have to make config first;
167  now it'll do it for you automatically.
168
169o Really got that truncated status line bug fixed.  It now auto-centres (sic)
170  the status line, too.
171
172---- Version 0.7 -> 0.7.1
173Not too much, this time.
174
175o Muster window added, showing how many pieces of each type and colour are
176  still in play.
177
178o Improved exposure-handling; now only exposed squares get drawn.  It's too
179  complicated to draw just exposed pixels.  Also, it's not worth doing the
180  same in the muster window; there's not much in there.
181
182o Bug fixes, including truncated status line, and bad redrawing of enlarged
183  boards (that one had me stumped for a while..)
184
185---- Version 0.6 -> 0.7
186Big changes this time, deserving the creation of this file.
187
188o Changed from Xm to Xaw (with DrawingArea widget; see ACKNOWLEDGEMENTS),
189  which involved a lot of necessary (and usually highly cool) changes:
190
191  - Changed from one DrawnButton per square to one DrawingArea per level.
192  - Can trap ButtonPress and ButtonRelease much easier, so implemented
193    drag-and-drop moving instead of src-dest-ok clicking.
194  - Removed the Source and Dest fields in the main window.
195  - Reduced size of internal representations of the muster and graphics.
196
197o Now change cursor while move is in progress (I'm working on changing
198  the cursor to a pixmap of the piece being moved, but getting Xpm to
199  generate monochrome pixmaps is harder than I thought..)
200
201o Removed last message from message-box if it is no longer applicable.
202
203o Got rid of that irritating beep all the time - now it only happens
204  on the events which are both "interesting" and need your attention
205  (such as your opponent moving).
206
207o Added some measure of machine configuration and autodetection.
208
209o Fixed an undo bug, a bug with kings and checking them, and one or two
210  others.
211
212