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