--- /dev/null
+/*\r
+ * JAWS.c -- Code for Windows front end to XBoard to use it with JAWS\r
+ * $Id: winboard.c,v 2.3 2003/11/25 05:25:20 mann Exp $\r
+ *\r
+ * Copyright 1991 by Digital Equipment Corporation, Maynard,\r
+ * Massachusetts. Enhancements Copyright\r
+ * 1992-2001,2002,2003,2004,2005,2006,2007,2008,2009 Free Software\r
+ * Foundation, Inc.\r
+ *\r
+ * XBoard borrows its colors and the bitmaps.xchess bitmap set from XChess,\r
+ * which was written and is copyrighted by Wayne Christopher.\r
+ *\r
+ * The following terms apply to Digital Equipment Corporation's copyright\r
+ * interest in XBoard:\r
+ * ------------------------------------------------------------------------\r
+ * All Rights Reserved\r
+ *\r
+ * Permission to use, copy, modify, and distribute this software and its\r
+ * documentation for any purpose and without fee is hereby granted,\r
+ * provided that the above copyright notice appear in all copies and that\r
+ * both that copyright notice and this permission notice appear in\r
+ * supporting documentation, and that the name of Digital not be\r
+ * used in advertising or publicity pertaining to distribution of the\r
+ * software without specific, written prior permission.\r
+ *\r
+ * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING\r
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL\r
+ * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR\r
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,\r
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,\r
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS\r
+ * SOFTWARE.\r
+ * ------------------------------------------------------------------------\r
+ *\r
+ * The following terms apply to the enhanced version of XBoard\r
+ * distributed by the Free Software Foundation:\r
+ * ------------------------------------------------------------------------\r
+ *\r
+ * GNU XBoard is free software: you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation, either version 3 of the License, or (at\r
+ * your option) any later version.\r
+ *\r
+ * GNU XBoard is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
+ * General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program. If not, see http://www.gnu.org/licenses/. *\r
+ *\r
+ *------------------------------------------------------------------------\r
+ ** See the file ChangeLog for a revision history. */\r
+\r
+// This file collects all patches for the JAWS version, so they can all be included in winboard.c\r
+// in one big swoop. At the bottom of this file you can read instructions for how to patch\r
+// WinBoard to work with JAWS with the aid of this file. Note that the code in this file\r
+// is for WinBoard 4.3 and later; for older WB versions you would have to throw out the\r
+// piece names for all pieces from Guard to Unicorn, #define ONE as '1', AAA as 'a',\r
+// BOARD_LEFT as 0, BOARD_RGHT and BOARD_HEIGHT as 8, and set holdingssizes to 0.\r
+// You will need to build with jaws.rc in stead of winboard.rc.\r
+\r
+// from common.h, but 'extern' added to it, so the actual declaraton can remain in backend.c\r
+\r
+extern long whiteTimeRemaining, blackTimeRemaining, timeControl, timeIncrement;\r
+\r
+#if 0\r
+// from moves.h, but no longer needed, as the new routines are all moved to winboard.c\r
+\r
+extern char* PieceToName P((ChessSquare p, int i));\r
+extern char* SquareToChar P((int Xpos)); \r
+extern char* SquareToNum P((int Ypos));\r
+extern int CoordToNum P((char c));\r
+\r
+#endif\r
+\r
+// from moves.c, added WinBoard_F piece types and ranks / files\r
+\r
+char *squareToChar[] = { "ay", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l" };\r
+\r
+char *squareToNum[] = {"naught", "1", "2", "3", "4", "5", "6", "7", "8", "9" };\r
+\r
+char *ordinals[] = {"zeroth", "first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eighth", "nineth"};\r
+\r
+char *pieceToName[] = {\r
+ "White Pawn", "White Knight", "White Bishop", "White Rook", "White Queen", \r
+ "White Guard", "White Elephant", "White Arch Bishop", "White Chancellor",\r
+ "White General", "White Man", "White Cannon", "White Night Rider",\r
+ "White Crowned Bishop", "White Crowned Rook", "White Grass Hopper", "White Veteran",\r
+ "White Falcon", "White Amazon", "White Snake", "White Unicorn",\r
+ "White King",\r
+ "Black Pawn", "Black Knight", "Black Bishop", "Black Rook", "Black Queen",\r
+ "Black Guard", "Black Elephant", "Black Arch Bishop", "Black Chancellor",\r
+ "Black General", "Black Man", "Black Cannon", "Black Night Rider",\r
+ "Black Crowned Bishop", "Black Crowned Rook", "Black Grass Hopper", "Black Veteran",\r
+ "Black Falcon", "Black Amazon", "Black Snake", "Black Unicorn",\r
+ "Black King",\r
+ "Empty"\r
+ };\r
+\r
+int CoordToNum(c)\r
+ char c;\r
+{\r
+ if(isdigit(c)) return c - ONE;\r
+ if(c >= 'a') return c - AAA;\r
+ return 0;\r
+}\r
+\r
+char* PieceToName(p, i)\r
+ ChessSquare p;\r
+ int i;\r
+{\r
+ if(i) return pieceToName[(int) p];\r
+ return pieceToName[(int) p]+6;\r
+}\r
+\r
+char* SquareToChar(x)\r
+ int x;\r
+{\r
+ return squareToChar[x - BOARD_LEFT];\r
+}\r
+\r
+char* SquareToNum(y)\r
+ int y;\r
+{\r
+ return squareToNum[y + (gameInfo.boardHeight < 10)];\r
+}\r
+\r
+\r
+// from winboard.c: all new routines\r
+\r
+#include "jfwapi.h"\r
+#include "jaws.h"\r
+\r
+typedef JFWAPI BOOL (WINAPI *PSAYSTRING)(LPCTSTR lpszStrinToSpeak, BOOL bInterrupt);\r
+\r
+PSAYSTRING RealSayString;\r
+\r
+VOID SayString(char *mess, BOOL flag)\r
+{ // for debug file\r
+ char buf[MSG_SIZ], *p;\r
+ if(appData.debugMode) fprintf(debugFP, "SAY '%s'\n", mess);\r
+ strcpy(buf, mess);\r
+ if(p = StrCaseStr(buf, "Xboard adjudication:")) {\r
+ int i;\r
+ for(i=19; i>1; i--) p[i] = p[i-1];\r
+ p[1] = ' ';\r
+ }\r
+ RealSayString(buf, flag);\r
+}\r
+\r
+//static int fromX = 0, fromY = 0;\r
+static int oldFromX, oldFromY;\r
+static int timeflag;\r
+static int suppressClocks = 0;\r
+\r
+BOOL\r
+InitJAWS()\r
+{ // to be called at beginning of WinMain, after InitApplication and InitInstance\r
+ HINSTANCE hApi = LoadLibrary("jfwapi32.dll");\r
+ if(!hApi) {\r
+ DisplayInformation("Missing jfwapi32.dll"); \r
+ return (FALSE);\r
+ }\r
+\r
+ RealSayString = (PSAYSTRING)GetProcAddress(hApi, "JFWSayString");\r
+ if(!RealSayString) {\r
+ DisplayInformation("SayString returned a null pointer");\r
+ return (FALSE);\r
+ }\r
+\r
+ {\r
+ // [HGM] kludge to reduce need for modification of winboard.c: mak tinyLayout menu identical\r
+ // to standard layout, so that code for switching between them does not have to be deleted\r
+ HMENU hmenu = GetMenu(hwndMain);\r
+ int i;\r
+\r
+ menuBarText[0][5] = "&JAWS";\r
+ for(i=0; i<7; i++) menuBarText[1][i] = menuBarText[0][i];\r
+ for (i=0; menuBarText[tinyLayout][i]; i++) {\r
+ ModifyMenu(hmenu, i, MF_STRING|MF_BYPOSITION|MF_POPUP, \r
+ (UINT)GetSubMenu(hmenu, i), menuBarText[tinyLayout][i]);\r
+ }\r
+ DrawMenuBar(hwndMain);\r
+ }\r
+\r
+ /* initialize cursor position */\r
+ fromX = fromY = 0;\r
+ SetHighlights(fromX, fromY, -1, -1);\r
+ DrawPosition(FALSE, NULL);\r
+ oldFromX = oldFromY = -1;\r
+\r
+ if(hwndConsole) SetFocus(hwndConsole);\r
+ return TRUE;\r
+}\r
+\r
+VOID\r
+KeyboardEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)\r
+{\r
+ ChessSquare currentPiece;\r
+ char *piece, *xchar, *ynum ;\r
+ int n;\r
+\r
+ if(fromX == -1 || fromY == -1) {\r
+ fromX = BOARD_LEFT; fromY = 0;\r
+ }\r
+ switch(wParam) {\r
+ case VK_LEFT:\r
+ if(fromX == BOARD_RGHT+1) fromX -= 2; else\r
+ if(fromX == BOARD_LEFT) { if(fromY >= BOARD_HEIGHT - gameInfo.holdingsSize) fromX -= 2; } else\r
+ if(fromX > BOARD_LEFT) fromX--;\r
+ break;\r
+ case VK_RIGHT:\r
+ if(fromX == BOARD_LEFT-2) fromX += 2; else\r
+ if(fromX == BOARD_RGHT-1) { if(fromY < gameInfo.holdingsSize) fromX += 2; } else\r
+ if(fromX < BOARD_RGHT-1) fromX++;\r
+ break;\r
+ case VK_UP:\r
+ if(fromX == BOARD_RGHT+1) { if(fromY < gameInfo.holdingsSize - 1) fromY++; } else\r
+ if(fromY < BOARD_HEIGHT-1) fromY++;\r
+ break;\r
+ case VK_DOWN:\r
+ if(fromX == BOARD_LEFT-2) { if(fromY > BOARD_HEIGHT - gameInfo.holdingsSize) fromY--; } else\r
+ if(fromY > 0) fromY--;\r
+ break;\r
+ }\r
+ SetHighlights(fromX, fromY, -1, -1);\r
+ DrawPosition(FALSE, NULL);\r
+ currentPiece = boards[currentMove][fromY][fromX];\r
+ piece = PieceToName(currentPiece,1);\r
+ if(currentPiece != EmptySquare) MessageBeep(currentPiece < (int)BlackPawn ? MB_OK : MB_ICONEXCLAMATION);\r
+ if(fromX == BOARD_LEFT - 2) {\r
+ SayString("black holdings", FALSE);\r
+ if(currentPiece != EmptySquare) {\r
+ char buf[MSG_SIZ];\r
+ n = boards[currentMove][fromY][1];\r
+ sprintf(buf, "%d %s%s", n, piece+6, n == 1 ? "" : "s");\r
+ SayString(buf, TRUE);\r
+ }\r
+ } else\r
+ if(fromX == BOARD_RGHT + 1) {\r
+ SayString("white holdings", FALSE);\r
+ if(currentPiece != EmptySquare) {\r
+ char buf[MSG_SIZ];\r
+ n = boards[currentMove][fromY][BOARD_WIDTH-2];\r
+ sprintf(buf, "%d %s%s", n, piece+6, n == 1 ? "" : "s");\r
+ SayString(buf, TRUE);\r
+ }\r
+ } else\r
+ if(fromX >= BOARD_LEFT && fromX < BOARD_RGHT) {\r
+ char buf[MSG_SIZ];\r
+ xchar = SquareToChar(fromX);\r
+ ynum = SquareToNum(fromY);\r
+ if(currentPiece != EmptySquare) {\r
+// SayString(piece[0] == 'W' ? "white" : "black", TRUE);\r
+ sprintf(buf, "%s %s %s", piece, xchar, ynum);\r
+ } else sprintf(buf, "%s %s", xchar, ynum);\r
+ SayString(buf, TRUE);\r
+ }\r
+ return;\r
+}\r
+\r
+extern char castlingRights[MAX_MOVES][BOARD_SIZE];\r
+int PosFlags(int nr);\r
+\r
+typedef struct {\r
+ int rf, ff, rt, ft;\r
+ int onlyCaptures;\r
+ int count;\r
+} ReadClosure;\r
+\r
+extern void ReadCallback P((Board board, int flags, ChessMove kind,\r
+ int rf, int ff, int rt, int ft,\r
+ VOIDSTAR closure));\r
+\r
+void ReadCallback(board, flags, kind, rf, ff, rt, ft, closure)\r
+ Board board;\r
+ int flags;\r
+ ChessMove kind;\r
+ int rf, ff, rt, ft;\r
+ VOIDSTAR closure;\r
+{\r
+ register ReadClosure *cl = (ReadClosure *) closure;\r
+ ChessSquare possiblepiece;\r
+ char *piece, *xchar, *ynum ;\r
+\r
+//if(appData.debugMode) fprintf(debugFP, "%c%c%c%c\n", ff+AAA, rf+ONE, ft+AAA, rt+ONE);\r
+ if(cl->ff == ff && cl->rf == rf) {\r
+ possiblepiece = board[rt][ft];\r
+ if(possiblepiece != EmptySquare) {\r
+ piece = PieceToName(possiblepiece,1);\r
+ xchar = SquareToChar(ft);\r
+ ynum = SquareToNum(rt);\r
+ SayString(xchar , FALSE);\r
+ SayString(ynum, FALSE);\r
+ SayString(piece, FALSE);\r
+ cl->count++;\r
+ }\r
+ }\r
+ if(cl->ft == ft && cl->rt == rt) {\r
+ possiblepiece = board[rf][ff];\r
+ piece = PieceToName(possiblepiece,1);\r
+ xchar = SquareToChar(ff);\r
+ ynum = SquareToNum(rf);\r
+ SayString(xchar , FALSE);\r
+ SayString(ynum, FALSE);\r
+ SayString(piece, FALSE);\r
+ cl->count++;\r
+ }\r
+}\r
+\r
+VOID\r
+PossibleAttackMove()\r
+{\r
+ ReadClosure cl;\r
+ ChessSquare piece, victim;\r
+ int removedSelectedPiece = 0, swapColor;\r
+\r
+//if(appData.debugMode) fprintf(debugFP, "PossibleAttackMove %d %d %d %d\n", fromX, fromY, oldFromX, oldFromY);\r
+ if(fromY < 0 || fromY >= BOARD_HEIGHT) return;\r
+ if(fromX < BOARD_LEFT || fromX >= BOARD_RGHT) { SayString("holdings",FALSE); return; }\r
+\r
+ piece = boards[currentMove][fromY][fromX];\r
+ if(piece == EmptySquare) { // if square is empty, try to substitute selected piece\r
+ if(oldFromX >= 0 && oldFromY >= 0) {\r
+ piece = boards[currentMove][oldFromY][oldFromX];\r
+ boards[currentMove][oldFromY][oldFromX] = EmptySquare;\r
+ removedSelectedPiece = 1;\r
+ SayString("Your", FALSE);\r
+ SayString(PieceToName(piece, 0), FALSE);\r
+ SayString("would have", FALSE);\r
+ } else { SayString("You must select a piece first", FALSE); return; }\r
+ }\r
+\r
+ victim = boards[currentMove][fromY][fromX];\r
+ boards[currentMove][fromY][fromX] = piece; // make sure piece is actally there\r
+ SayString("possible captures from here are", FALSE);\r
+\r
+ swapColor = piece < (int)BlackPawn && !WhiteOnMove(currentMove) ||\r
+ piece >= (int)BlackPawn && WhiteOnMove(currentMove);\r
+ cl.count = 0; cl.rf = fromY; cl.ff = fromX; cl.rt = cl.ft = -1;\r
+ GenLegal(boards[currentMove], PosFlags(currentMove + swapColor), EP_NONE, \r
+ castlingRights[currentMove], ReadCallback, (VOIDSTAR) &cl);\r
+ if(cl.count == 0) SayString("None", FALSE);\r
+ boards[currentMove][fromY][fromX] = victim; // repair\r
+\r
+ if( removedSelectedPiece ) boards[currentMove][oldFromY][oldFromX] = piece;\r
+}\r
+\r
+\r
+VOID\r
+PossibleAttacked()\r
+{\r
+ ReadClosure cl;\r
+ ChessSquare piece = EmptySquare, victim;\r
+\r
+ if(fromY < 0 || fromY >= BOARD_HEIGHT) return;\r
+ if(fromX < BOARD_LEFT || fromX >= BOARD_RGHT) { SayString("holdings",FALSE); return; }\r
+\r
+ if(oldFromX >= 0 && oldFromY >= 0) { // if piece is selected, remove it\r
+ piece = boards[currentMove][oldFromY][oldFromX];\r
+ boards[currentMove][oldFromY][oldFromX] = EmptySquare;\r
+ }\r
+\r
+ SayString("Pieces that can capture you are", FALSE);\r
+\r
+ victim = boards[currentMove][fromY][fromX]; // put dummy piece on target square, to activate Pawn captures\r
+ boards[currentMove][fromY][fromX] = WhiteOnMove(currentMove) ? WhiteQueen : BlackQueen;\r
+ cl.count = 0; cl.rt = fromY; cl.ft = fromX; cl.rf = cl.ff = -1;\r
+ GenLegal(boards[currentMove], PosFlags(currentMove+1), EP_NONE, \r
+ castlingRights[currentMove], ReadCallback, (VOIDSTAR) &cl);\r
+ if(cl.count == 0) SayString("None", FALSE);\r
+\r
+ SayString("You are defended by", FALSE);\r
+\r
+ boards[currentMove][fromY][fromX] = WhiteOnMove(currentMove) ? BlackQueen : WhiteQueen;\r
+ cl.count = 0; cl.rt = fromY; cl.ft = fromX; cl.rf = cl.ff = -1;\r
+ GenLegal(boards[currentMove], PosFlags(currentMove), EP_NONE, \r
+ castlingRights[currentMove], ReadCallback, (VOIDSTAR) &cl);\r
+ if(cl.count == 0) SayString("None", FALSE);\r
+ boards[currentMove][fromY][fromX] = victim; // put back original occupant\r
+\r
+ if(oldFromX >= 0 && oldFromY >= 0) { // put back possibl selected piece\r
+ boards[currentMove][oldFromY][oldFromX] = piece;\r
+ }\r
+}\r
+\r
+VOID\r
+ReadRow()\r
+{\r
+ ChessSquare currentpiece; \r
+ char *piece, *xchar, *ynum ;\r
+ int xPos, count=0;\r
+ ynum = SquareToNum(fromY);\r
+ \r
+ if(fromY < 0) return;\r
+\r
+ for (xPos=BOARD_LEFT; xPos<BOARD_RGHT; xPos++) {\r
+ currentpiece = boards[currentMove][fromY][xPos]; \r
+ if(currentpiece != EmptySquare) {\r
+ piece = PieceToName(currentpiece,1);\r
+ xchar = SquareToChar(xPos);\r
+ SayString(xchar , FALSE);\r
+ SayString(ynum, FALSE);\r
+ SayString(piece, FALSE);\r
+ count++;\r
+ }\r
+ }\r
+ if(count == 0) {\r
+ SayString("rank", FALSE);\r
+ SayString(ynum, FALSE);\r
+ SayString("empty", FALSE);\r
+ }\r
+}\r
+\r
+VOID\r
+ReadColumn()\r
+{\r
+ ChessSquare currentpiece; \r
+ char *piece, *xchar, *ynum ;\r
+ int yPos, count=0;\r
+ xchar = SquareToChar(fromX);\r
+ \r
+ if(fromX < 0) return;\r
+\r
+ for (yPos=0; yPos<BOARD_HEIGHT; yPos++) {\r
+ currentpiece = boards[currentMove][yPos][fromX]; \r
+ if(currentpiece != EmptySquare) {\r
+ piece = PieceToName(currentpiece,1);\r
+ ynum = SquareToNum(yPos);\r
+ SayString(xchar , FALSE);\r
+ SayString(ynum, FALSE);\r
+ SayString(piece, FALSE);\r
+ count++;\r
+ }\r
+ }\r
+ if(count == 0) {\r
+ SayString(xchar, FALSE);\r
+ SayString("file empty", FALSE);\r
+ }\r
+}\r
+\r
+VOID\r
+SayUpperDiagnols()\r
+{\r
+ ChessSquare currentpiece; \r
+ char *piece, *xchar, *ynum ;\r
+ int yPos, xPos;\r
+ \r
+ if(fromX < 0 || fromY < 0) return;\r
+\r
+ if(fromX < BOARD_RGHT-1 && fromY < BOARD_HEIGHT-1) {\r
+ SayString("The diagnol squares to your upper right contain", FALSE);\r
+ yPos = fromY+1;\r
+ xPos = fromX+1;\r
+ while(yPos<BOARD_HEIGHT && xPos<BOARD_RGHT) {\r
+ currentpiece = boards[currentMove][yPos][xPos]; \r
+ piece = PieceToName(currentpiece,1);\r
+ xchar = SquareToChar(xPos);\r
+ ynum = SquareToNum(yPos);\r
+ SayString(xchar , FALSE);\r
+ SayString(ynum, FALSE);\r
+ SayString(piece, FALSE);\r
+ yPos++;\r
+ xPos++;\r
+ }\r
+ }\r
+ else SayString("There is no squares to your upper right", FALSE);\r
+\r
+ if(fromX > BOARD_LEFT && fromY < BOARD_HEIGHT-1) {\r
+ SayString("The diagnol squares to your upper left contain", FALSE);\r
+ yPos = fromY+1;\r
+ xPos = fromX-1;\r
+ while(yPos<BOARD_HEIGHT && xPos>=BOARD_LEFT) {\r
+ currentpiece = boards[currentMove][yPos][xPos]; \r
+ piece = PieceToName(currentpiece,1);\r
+ xchar = SquareToChar(xPos);\r
+ ynum = SquareToNum(yPos);\r
+ SayString(xchar , FALSE);\r
+ SayString(ynum, FALSE);\r
+ SayString(piece, FALSE);\r
+ yPos++;\r
+ xPos--;\r
+ }\r
+ }\r
+ else SayString("There is no squares to your upper left", FALSE);\r
+}\r
+\r
+VOID\r
+SayLowerDiagnols()\r
+{\r
+ ChessSquare currentpiece; \r
+ char *piece, *xchar, *ynum ;\r
+ int yPos, xPos;\r
+ \r
+ if(fromX < 0 || fromY < 0) return;\r
+\r
+ if(fromX < BOARD_RGHT-1 && fromY > 0) {\r
+ SayString("The diagnol squares to your lower right contain", FALSE);\r
+ yPos = fromY-1;\r
+ xPos = fromX+1;\r
+ while(yPos>=0 && xPos<BOARD_RGHT) {\r
+ currentpiece = boards[currentMove][yPos][xPos]; \r
+ piece = PieceToName(currentpiece,1);\r
+ xchar = SquareToChar(xPos);\r
+ ynum = SquareToNum(yPos);\r
+ SayString(xchar , FALSE);\r
+ SayString(ynum, FALSE);\r
+ SayString(piece, FALSE);\r
+ yPos--;\r
+ xPos++;\r
+ }\r
+ }\r
+ else SayString("There is no squares to your lower right", FALSE);\r
+\r
+ if(fromX > BOARD_LEFT && fromY > 0) {\r
+ SayString("The diagnol squares to your lower left contain", FALSE);\r
+ yPos = fromY-1;\r
+ xPos = fromX-1;\r
+ while(yPos>=0 && xPos>=BOARD_LEFT) {\r
+ currentpiece = boards[currentMove][yPos][xPos]; \r
+ piece = PieceToName(currentpiece,1);\r
+ xchar = SquareToChar(xPos);\r
+ ynum = SquareToNum(yPos);\r
+ SayString(xchar , FALSE);\r
+ SayString(ynum, FALSE);\r
+ SayString(piece, FALSE);\r
+ yPos--;\r
+ xPos--;\r
+ }\r
+ }\r
+ else SayString("There is no squares to your lower left", FALSE);\r
+}\r
+\r
+VOID\r
+SayKnightMoves()\r
+{\r
+ ChessSquare currentpiece, oldpiece; \r
+ char *piece, *xchar, *ynum ;\r
+\r
+ oldpiece = boards[currentMove][fromY][fromX];\r
+ if(oldpiece == WhiteKnight || oldpiece == BlackKnight) \r
+ SayString("The possible squares a Knight could move to are", FALSE);\r
+ else\r
+ SayString("The squares a Knight could possibly attack from are", FALSE);\r
+\r
+ if (fromY+2 < BOARD_HEIGHT && fromX-1 >= BOARD_LEFT) {\r
+ currentpiece = boards[currentMove][fromY+2][fromX-1];\r
+ if(((oldpiece == WhiteKnight) && (currentpiece > WhiteKing))\r
+ || ((oldpiece == BlackKnight) && (currentpiece < BlackPawn || currentpiece == EmptySquare))\r
+ || (oldpiece == EmptySquare) && (currentpiece == WhiteKnight || currentpiece == BlackKnight))\r
+ {\r
+ piece = PieceToName(currentpiece,1);\r
+ xchar = SquareToChar(fromX-1);\r
+ ynum = SquareToNum(fromY+2);\r
+ SayString(xchar , FALSE);\r
+ SayString(ynum, FALSE);\r
+ SayString(piece, FALSE);\r
+ }\r
+ }\r
+\r
+ if (fromY+2 < BOARD_HEIGHT && fromX+1 < BOARD_RGHT) {\r
+ currentpiece = boards[currentMove][fromY+2][fromX+1];\r
+ if(((oldpiece == WhiteKnight) && (currentpiece > WhiteKing))\r
+ || ((oldpiece == BlackKnight) && (currentpiece < BlackPawn || currentpiece == EmptySquare))\r
+ || (oldpiece == EmptySquare) && (currentpiece == WhiteKnight || currentpiece == BlackKnight))\r
+ {\r
+ piece = PieceToName(currentpiece,1);\r
+ xchar = SquareToChar(fromX+1);\r
+ ynum = SquareToNum(fromY+2);\r
+ SayString(xchar , FALSE);\r
+ SayString(ynum, FALSE);\r
+ SayString(piece, FALSE);\r
+ }\r
+ }\r
+ \r
+ if (fromY+1 < BOARD_HEIGHT && fromX+2 < BOARD_RGHT) {\r
+ currentpiece = boards[currentMove][fromY+1][fromX+2];\r
+ if(((oldpiece == WhiteKnight) && (currentpiece > WhiteKing))\r
+ || ((oldpiece == BlackKnight) && (currentpiece < BlackPawn || currentpiece == EmptySquare))\r
+ || (oldpiece == EmptySquare) && (currentpiece == WhiteKnight || currentpiece == BlackKnight))\r
+ {\r
+ piece = PieceToName(currentpiece,1);\r
+ xchar = SquareToChar(fromX+2);\r
+ ynum = SquareToNum(fromY+1);\r
+ SayString(xchar , FALSE);\r
+ SayString(ynum, FALSE);\r
+ SayString(piece, FALSE);\r
+ }\r
+ }\r
+ \r
+ if (fromY-1 >= 0 && fromX+2 < BOARD_RGHT) {\r
+ currentpiece = boards[currentMove][fromY-1][fromX+2];\r
+ if(((oldpiece == WhiteKnight) && (currentpiece > WhiteKing))\r
+ || ((oldpiece == BlackKnight) && (currentpiece < BlackPawn || currentpiece == EmptySquare))\r
+ || (oldpiece == EmptySquare) && (currentpiece == WhiteKnight || currentpiece == BlackKnight))\r
+ {\r
+ piece = PieceToName(currentpiece,1);\r
+ xchar = SquareToChar(fromX+2);\r
+ ynum = SquareToNum(fromY-1);\r
+ SayString(xchar , FALSE);\r
+ SayString(ynum, FALSE);\r
+ SayString(piece, FALSE);\r
+ }\r
+ }\r
+ \r
+ if (fromY-2 >= 0 && fromX+1 < BOARD_RGHT) {\r
+ currentpiece = boards[currentMove][fromY-2][fromX+1];\r
+ if(((oldpiece == WhiteKnight) && (currentpiece > WhiteKing))\r
+ || ((oldpiece == BlackKnight) && (currentpiece < BlackPawn || currentpiece == EmptySquare))\r
+ || (oldpiece == EmptySquare) && (currentpiece == WhiteKnight || currentpiece == BlackKnight))\r
+ {\r
+ piece = PieceToName(currentpiece,1);\r
+ xchar = SquareToChar(fromX+1);\r
+ ynum = SquareToNum(fromY-2);\r
+ SayString(xchar , FALSE);\r
+ SayString(ynum, FALSE);\r
+ SayString(piece, FALSE);\r
+ }\r
+ }\r
+ \r
+ if (fromY-2 >= 0 && fromX-1 >= BOARD_LEFT) {\r
+ currentpiece = boards[currentMove][fromY-2][fromX-1];\r
+ if(((oldpiece == WhiteKnight) && (currentpiece > WhiteKing))\r
+ || ((oldpiece == BlackKnight) && (currentpiece < BlackPawn || currentpiece == EmptySquare))\r
+ || (oldpiece == EmptySquare) && (currentpiece == WhiteKnight || currentpiece == BlackKnight))\r
+ {\r
+ piece = PieceToName(currentpiece,1);\r
+ xchar = SquareToChar(fromX-1);\r
+ ynum = SquareToNum(fromY-2);\r
+ SayString(xchar , FALSE);\r
+ SayString(ynum, FALSE);\r
+ SayString(piece, FALSE);\r
+ }\r
+ }\r
+ \r
+ if (fromY-1 >= 0 && fromX-2 >= BOARD_LEFT) {\r
+ currentpiece = boards[currentMove][fromY-1][fromX-2];\r
+ if(((oldpiece == WhiteKnight) && (currentpiece > WhiteKing))\r
+ || ((oldpiece == BlackKnight) && (currentpiece < BlackPawn || currentpiece == EmptySquare))\r
+ || (oldpiece == EmptySquare) && (currentpiece == WhiteKnight || currentpiece == BlackKnight))\r
+ {\r
+ piece = PieceToName(currentpiece,1);\r
+ xchar = SquareToChar(fromX-2);\r
+ ynum = SquareToNum(fromY-1);\r
+ SayString(xchar , FALSE);\r
+ SayString(ynum, FALSE);\r
+ SayString(piece, FALSE);\r
+ }\r
+ }\r
+ \r
+ if (fromY+1 < BOARD_HEIGHT && fromX-2 >= BOARD_LEFT) {\r
+ currentpiece = boards[currentMove][fromY+1][fromX-2];\r
+ if(((oldpiece == WhiteKnight) && (currentpiece > WhiteKing))\r
+ || ((oldpiece == BlackKnight) && (currentpiece < BlackPawn || currentpiece == EmptySquare))\r
+ || (oldpiece == EmptySquare) && (currentpiece == WhiteKnight || currentpiece == BlackKnight))\r
+ {\r
+ piece = PieceToName(currentpiece,1);\r
+ xchar = SquareToChar(fromX-2);\r
+ ynum = SquareToNum(fromY+1);\r
+ SayString(xchar , FALSE);\r
+ SayString(ynum, FALSE);\r
+ SayString(piece, FALSE);\r
+ }\r
+ }\r
+}\r
+\r
+VOID\r
+SayPieces(ChessSquare p)\r
+{\r
+ ChessSquare currentpiece; \r
+ char *piece, *xchar, *ynum ;\r
+ int yPos, xPos, count = 0;\r
+ char buf[50];\r
+\r
+ if(p == WhitePlay) SayString("White pieces", FALSE); else\r
+ if(p == BlackPlay) SayString("Black pieces", FALSE); else\r
+ if(p == EmptySquare) SayString("Pieces", FALSE); else {\r
+ sprintf(buf, "%ss", PieceToName(p,1));\r
+ SayString(buf, FALSE);\r
+ }\r
+ SayString("are located", FALSE);\r
+ for(yPos=0; yPos<BOARD_HEIGHT; yPos++) {\r
+ for(xPos=BOARD_LEFT; xPos<BOARD_RGHT; xPos++) {\r
+ currentpiece = boards[currentMove][yPos][xPos]; \r
+ if(p == BlackPlay && currentpiece >= BlackPawn && currentpiece <= BlackKing ||\r
+ p == WhitePlay && currentpiece >= WhitePawn && currentpiece <= WhiteKing )\r
+ piece = PieceToName(currentpiece,0);\r
+ else if(p == EmptySquare && currentpiece != EmptySquare)\r
+ piece = PieceToName(currentpiece,1);\r
+ else if(p == currentpiece)\r
+ piece = NULL;\r
+ else continue;\r
+ \r
+ if(count == 0) SayString("at", FALSE);\r
+ xchar = SquareToChar(xPos);\r
+ ynum = SquareToNum(yPos);\r
+ SayString(xchar , FALSE);\r
+ SayString(ynum, FALSE);\r
+ if(piece) SayString(piece, FALSE);\r
+ count++;\r
+ }\r
+ }\r
+ if(count == 0) SayString("nowhere", FALSE);\r
+}\r
+\r
+VOID\r
+SayCurrentPos()\r
+{\r
+ ChessSquare currentpiece;\r
+ char *piece, *xchar, *ynum ;\r
+ if(fromX < BOARD_LEFT) { SayString("You strayed into the white holdings", FALSE); return; }\r
+ if(fromX >= BOARD_RGHT) { SayString("You strayed into the black holdings", FALSE); return; }\r
+ currentpiece = boards[currentMove][fromY][fromX]; \r
+ piece = PieceToName(currentpiece,1);\r
+ ynum = SquareToNum(fromY);\r
+ xchar = SquareToChar(fromX);\r
+ SayString("Your current position is", FALSE);\r
+ SayString(xchar, FALSE);\r
+ SayString(ynum, FALSE);\r
+ SayString(piece, FALSE);\r
+ if((fromX-BOARD_LEFT) ^ fromY)\r
+ SayString("on a dark square",FALSE);\r
+ else \r
+ SayString("on a light square",FALSE);\r
+\r
+ PossibleAttacked();\r
+ return;\r
+}\r
+\r
+VOID\r
+SayAllBoard()\r
+{\r
+ int Xpos, Ypos;\r
+ ChessSquare currentpiece;\r
+ char *piece, *xchar, *ynum ;\r
+ \r
+ if(gameInfo.holdingsWidth) {\r
+ int first = 0;\r
+ for(Ypos=0; Ypos<gameInfo.holdingsSize; Ypos++) {\r
+ int n = boards[currentMove][Ypos][BOARD_WIDTH-2];\r
+ if(n) { char buf[MSG_SIZ];\r
+ if(!first++) SayString("white holds", FALSE);\r
+ currentpiece = boards[currentMove][Ypos][BOARD_WIDTH-1]; \r
+ piece = PieceToName(currentpiece,0);\r
+ sprintf(buf, "%d %s%s", n, piece, (n==1 ? "" : "s") );\r
+ SayString(buf, FALSE);\r
+ }\r
+ }\r
+ first = 0;\r
+ for(Ypos=BOARD_HEIGHT-1; Ypos>=BOARD_HEIGHT - gameInfo.holdingsSize; Ypos--) {\r
+ int n = boards[currentMove][Ypos][1];\r
+ if(n) { char buf[MSG_SIZ];\r
+ if(!first++) SayString("black holds", FALSE);\r
+ currentpiece = boards[currentMove][Ypos][0]; \r
+ piece = PieceToName(currentpiece,0);\r
+ sprintf(buf, "%d %s%s", n, piece, (n==1 ? "" : "s") );\r
+ SayString(buf, FALSE);\r
+ }\r
+ }\r
+ }\r
+\r
+ for(Ypos=BOARD_HEIGHT-1; Ypos>=0; Ypos--) {\r
+ ynum = ordinals[Ypos + (gameInfo.boardHeight < 10)];\r
+ SayString(ynum, FALSE);\r
+ SayString("rank", FALSE);\r
+ for(Xpos=BOARD_LEFT; Xpos<BOARD_RGHT; Xpos++) {\r
+ currentpiece = boards[currentMove][Ypos][Xpos]; \r
+ if(currentpiece != EmptySquare) {\r
+ int count = 0, oldX = Xpos;\r
+ char buf[50];\r
+ piece = PieceToName(currentpiece,1);\r
+ while(Xpos < BOARD_RGHT && boards[currentMove][Ypos][Xpos] == currentpiece)\r
+ Xpos++, count++;\r
+ if(count > 1) { \r
+ sprintf(buf, "%d %ss", count, piece);\r
+ } else sprintf(buf, "%s", piece);\r
+ Xpos--;\r
+ SayString(buf, FALSE);\r
+ } else {\r
+ int count = 0, oldX = Xpos;\r
+ while(Xpos < BOARD_RGHT && boards[currentMove][Ypos][Xpos] == EmptySquare)\r
+ Xpos++, count++;\r
+ if(Xpos == BOARD_RGHT && oldX == BOARD_LEFT)\r
+ SayString("all", FALSE);\r
+ else{\r
+ if(count > 1) { \r
+ char buf[10];\r
+ sprintf(buf, "%d", count);\r
+ SayString(buf, FALSE);\r
+ }\r
+ Xpos--;\r
+ }\r
+ SayString("empty", FALSE);\r
+ }\r
+ }\r
+ }\r
+ \r
+}\r
+\r
+VOID\r
+SayWhosTurn()\r
+{\r
+ if(gameMode == MachinePlaysBlack || gameMode == IcsPlayingBlack) {\r
+ if(WhiteOnMove(currentMove))\r
+ SayString("It is your turn", FALSE);\r
+ else SayString("It is your opponents turn", FALSE);\r
+ } else if(gameMode == MachinePlaysWhite || gameMode == IcsPlayingWhite) {\r
+ if(WhiteOnMove(currentMove))\r
+ SayString("It is your opponents turn", FALSE);\r
+ else SayString("It is your turn", FALSE);\r
+ } else {\r
+ if(WhiteOnMove(currentMove)) \r
+ SayString("White is on move here", FALSE);\r
+ else SayString("Black is on move here", FALSE);\r
+ }\r
+}\r
+ \r
+\r
+VOID\r
+SayMachineMove(int evenIfDuplicate)\r
+{\r
+ int len, xPos, yPos, moveNr, secondSpace = 0, castle = 0, n;\r
+ ChessSquare currentpiece;\r
+ char *piece, *xchar, *ynum, *p;\r
+ char c, buf[MSG_SIZ], comment[MSG_SIZ];\r
+ static char disambiguation[2];\r
+ static int previousMove = 0;\r
+\r
+ if(appData.debugMode) fprintf(debugFP, "Message = '%s'\n", messageText);\r
+ if(gameMode == BeginningOfGame) return;\r
+ if(messageText[0] == '[') return;\r
+ comment[0]= 0;\r
+ if(isdigit(messageText[0])) { // message is move, possibly with thinking output\r
+ int dotCount = 0, spaceCount = 0;\r
+ sscanf(messageText, "%d", &moveNr);\r
+ len = 0;\r
+ // [HGM] show: better extraction of move\r
+ while (messageText[len] != NULLCHAR) {\r
+ if(messageText[len] == '.' && spaceCount == 0) dotCount++;\r
+ if(messageText[len] == ' ') { if(++spaceCount == 2) secondSpace = len; }\r
+ if(messageText[len] == '{') { // we detected a comment\r
+ if(isalpha(messageText[len+1]) ) sscanf(messageText+len, "{%[^}]}", comment);\r
+ break;\r
+ }\r
+ if(messageText[len] == '[') { // we detected thinking output\r
+ int depth; float score=0; char c, lastMover = (dotCount == 3 ? 'B' : 'W');\r
+ if(sscanf(messageText+len+1, "%d]%c%f", &depth, &c, &score) > 1) {\r
+ if(c == ' ') { // if not explicitly specified, figure out source of thinking output\r
+ switch(gameMode) {\r
+ case MachinePlaysWhite:\r
+ case IcsPlayingWhite:\r
+ c = 'W'; break;\r
+ case IcsPlayingBlack:\r
+ case MachinePlaysBlack:\r
+ c = 'B'; \r
+ default:\r
+ break;\r
+ }\r
+ }\r
+ if(c != lastMover) return; // line is thinking output of future move, ignore.\r
+ if(2*moveNr - (dotCount < 2) == previousMove)\r
+ return; // do not repeat same move; likely ponder output\r
+ sprintf(buf, "score %s %d at %d ply", \r
+ score > 0 ? "plus" : score < 0 ? "minus" : "",\r
+ (int) (fabs(score)*100+0.5),\r
+ depth );\r
+ SayString(buf, FALSE); // move + thinking output describing it; say it.\r
+ }\r
+ while(messageText[len-1] == ' ') len--; // position just behind move;\r
+ break;\r
+ }\r
+ if(messageText[len] == '(') { // ICS time printed behind move\r
+ while(messageText[len+1] && messageText[len] != ')') len++; // skip it\r
+ }\r
+ len++;\r
+ }\r
+ if(secondSpace) len = secondSpace; // position behind move\r
+ if(messageText[len-1] == '+' || messageText[len-1] == '#') { /* you are in checkmate */\r
+ len--; // strip off check or mate indicator\r
+ }\r
+ if(messageText[len-2] == '=') { /* promotion */\r
+ len-=2; // strip off promotion piece\r
+ SayString("promotion", FALSE);\r
+ }\r
+\r
+ n = 2*moveNr - (dotCount < 2);\r
+\r
+ if(previousMove != 2*moveNr + (dotCount > 1) || evenIfDuplicate) { \r
+ char number[20];\r
+ previousMove = 2*moveNr + (dotCount > 1); // remember move nr of move last spoken\r
+ sprintf(number, "%d", moveNr);\r
+\r
+ yPos = CoordToNum(messageText[len-1]); /* turn char coords to ints */\r
+ xPos = CoordToNum(messageText[len-2]);\r
+ if(xPos < 0 || xPos > 11) return; // prevent crashes if no coord string available to speak\r
+ if(yPos < 0 || yPos > 9) return;\r
+ currentpiece = boards[n][yPos][xPos]; \r
+ piece = PieceToName(currentpiece,0);\r
+ ynum = SquareToNum(yPos);\r
+ xchar = SquareToChar(xPos);\r
+ c = messageText[len-3];\r
+ if(c == 'x') c = messageText[len-4];\r
+ if(!isdigit(c) && c < 'a' && c != '@') c = 0;\r
+ disambiguation[0] = c;\r
+ SayString(WhiteOnMove(n) ? "Black" : "White", FALSE);\r
+ SayString("move", FALSE);\r
+ SayString(number, FALSE);\r
+// if(c==0 || c=='@') SayString("a", FALSE);\r
+ // intercept castling moves\r
+ p = StrStr(messageText, "O-O-O");\r
+ if(p && p-messageText < len) {\r
+ SayString("queen side castling",FALSE);\r
+ castle = 1;\r
+ } else {\r
+ p = StrStr(messageText, "O-O");\r
+ if(p && p-messageText < len) {\r
+ SayString("king side castling",FALSE);\r
+ castle = 1;\r
+ }\r
+ }\r
+ if(!castle) {\r
+ SayString(piece, FALSE);\r
+ if(c == '@') SayString("dropped on", FALSE); else\r
+ if(c) SayString(disambiguation, FALSE);\r
+ SayString("to", FALSE);\r
+ SayString(xchar, FALSE);\r
+ SayString(ynum, FALSE);\r
+ if(messageText[len-3] == 'x') {\r
+ currentpiece = boards[n-1][yPos][xPos];\r
+ if(currentpiece != EmptySquare) {\r
+ piece = PieceToName(currentpiece,0);\r
+ SayString("Capturing a",FALSE);\r
+ SayString(piece, FALSE);\r
+ } else SayString("Capturing onn passann",FALSE);\r
+ }\r
+ if(messageText[len] == '+') SayString("check", FALSE); else\r
+ if(messageText[len] == '#') {\r
+ SayString("finishing off", FALSE);\r
+ SayString(WhiteOnMove(n) ? "White" : "Black", FALSE);\r
+ }\r
+ }\r
+ }\r
+\r
+ /* say comment after move, possibly with result */\r
+ p = NULL;\r
+ if(StrStr(messageText, " 1-0")) p = "white wins"; else\r
+ if(StrStr(messageText, " 0-1")) p = "black wins"; else\r
+ if(StrStr(messageText, " 1/2-1/2")) p = "game ends in a draw";\r
+ if(comment[0]) {\r
+ if(p) {\r
+ if(!StrCaseStr(comment, "draw") && \r
+ !StrCaseStr(comment, "white") && \r
+ !StrCaseStr(comment, "black") ) {\r
+ SayString(p, FALSE);\r
+ SayString("due to", FALSE);\r
+ }\r
+ }\r
+ SayString(comment, FALSE); // alphabetic comment (usually game end)\r
+ } else if(p) SayString(p, FALSE);\r
+\r
+ } else {\r
+ /* starts not with digit */\r
+ if(StrCaseStr(messageText, "illegal")) PlayIcsUnfinishedSound();\r
+ SayString(messageText, FALSE);\r
+ }\r
+\r
+}\r
+\r
+VOID\r
+SayClockTime()\r
+{\r
+ char buf1[50], buf2[50];\r
+ char *str1, *str2;\r
+ static long int lastWhiteTime, lastBlackTime;\r
+\r
+ suppressClocks = 1; // if user is using alt+T command, no reason to display them\r
+ if(abs(lastWhiteTime - whiteTimeRemaining) < 1000 && abs(lastBlackTime - blackTimeRemaining) < 1000)\r
+ suppressClocks = 0; // back on after two requests in rapid succession\r
+ sprintf(buf1, "%s", TimeString(whiteTimeRemaining));\r
+ str1 = buf1;\r
+ SayString("White's remaining time is", FALSE);\r
+ SayString(str1, FALSE);\r
+ sprintf(buf2, "%s", TimeString(blackTimeRemaining));\r
+ str2 = buf2;\r
+ SayString("Black's remaining time is", FALSE);\r
+ SayString(str2, FALSE);\r
+ lastWhiteTime = whiteTimeRemaining;\r
+ lastBlackTime = blackTimeRemaining;\r
+}\r
+\r
+VOID\r
+Toggle(Boolean *b, char *mess)\r
+{\r
+ *b = !*b;\r
+ SayString(mess, FALSE);\r
+ SayString("is now", FALSE);\r
+ SayString(*b ? "on" : "off", FALSE);\r
+}\r
+\r
+/* handles keyboard moves in a click-click fashion */\r
+VOID\r
+KeyboardMove(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)\r
+{\r
+ ChessSquare currentpiece;\r
+ char *piece;\r
+ \r
+ static BOOLEAN sameAgain = FALSE;\r
+ switch (message) {\r
+ case WM_KEYDOWN:\r
+ sameAgain = FALSE;\r
+ if(oldFromX == fromX && oldFromY == fromY) {\r
+ sameAgain = TRUE;\r
+ /* click on same square */\r
+ break;\r
+ }\r
+ else if(oldFromX != -1) {\r
+ \r
+ ChessSquare pdown, pup;\r
+ pdown = boards[currentMove][oldFromY][oldFromX];\r
+ pup = boards[currentMove][fromY][fromX];\r
+ \r
+ if (gameMode == EditPosition ||\r
+ !((WhitePawn <= pdown && pdown <= WhiteKing &&\r
+ WhitePawn <= pup && pup <= WhiteKing) ||\r
+ (BlackPawn <= pdown && pdown <= BlackKing &&\r
+ BlackPawn <= pup && pup <= BlackKing))) {\r
+ /* EditPosition, empty square, or different color piece;\r
+ click-click move is possible */\r
+ \r
+ if (IsPromotion(oldFromX, oldFromY, fromX, fromY)) {\r
+ if (appData.alwaysPromoteToQueen) {\r
+ UserMoveEvent(oldFromX, oldFromY, fromX, fromY, 'q');\r
+ }\r
+ else {\r
+ toX = fromX; toY = fromY; fromX = oldFromX; fromY = oldFromY;\r
+ PromotionPopup(hwnd);\r
+ fromX = toX; fromY = toY;\r
+ } \r
+ }\r
+ else {\r
+ UserMoveEvent(oldFromX, oldFromY, fromX, fromY, NULLCHAR);\r
+ }\r
+ oldFromX = oldFromY = -1;\r
+ break;\r
+ }\r
+ \r
+ }\r
+ /* First downclick, or restart on a square with same color piece */\r
+ if (OKToStartUserMove(fromX, fromY)) {\r
+ oldFromX = fromX;\r
+ oldFromY = fromY;\r
+ currentpiece = boards[currentMove][fromY][fromX]; \r
+ piece = PieceToName(currentpiece,1);\r
+ SayString(piece, FALSE);\r
+ SayString("selected", FALSE);\r
+ }\r
+ else {\r
+ oldFromX = oldFromY = -1;\r
+ }\r
+ break;\r
+\r
+ case WM_KEYUP:\r
+ if (oldFromX == fromX && oldFromY == fromY) {\r
+ /* Upclick on same square */\r
+ if (sameAgain) {\r
+ /* Clicked same square twice: abort click-click move */\r
+ oldFromX = oldFromY = -1;\r
+ currentpiece = boards[currentMove][fromY][fromX]; \r
+ piece = PieceToName(currentpiece,0);\r
+ SayString(piece, FALSE);\r
+ SayString("unselected", FALSE);\r
+ }\r
+ }\r
+ }\r
+}\r
+\r
+int\r
+NiceTime(int x)\r
+{ // return TRUE for times we want to announce\r
+ if(x<0) return 0;\r
+ x = (x+50)/100; // tenth of seconds\r
+ if(x <= 100) return (x%10 == 0);\r
+ if(x <= 600) return (x%100 == 0);\r
+ if(x <= 6000) return (x%600 == 0);\r
+ return (x%3000 == 0);\r
+}\r
+\r
+#define JAWS_ALT_INTERCEPT \\r
+ if(isalpha((char)wParam)) {\\r
+ /* capitals of any ind are intercepted and distinguished by left and right shift */\\r
+ int mine = GetKeyState(VK_RSHIFT) < 0;\\r
+ if(mine || GetKeyState(VK_LSHIFT) < 0) {\\r
+\\r
+ if(gameMode == IcsPlayingWhite || gameMode == MachinePlaysBlack) mine = !mine;\\r
+\\r
+ if(ToLower((char)wParam) == 'x') {\\r
+ SayPieces(mine ? WhitePlay : BlackPlay);\\r
+ break;\\r
+ } else\\r
+ if(CharToPiece((char)wParam) != EmptySquare) {\\r
+ SayPieces(CharToPiece(mine ? ToUpper((char)wParam) : ToLower((char)wParam)));\\r
+ break;\\r
+ }\\r
+ }\\r
+ }\\r
+ if ((char)wParam == 022 && gameMode == EditPosition) { /* <Ctl R>. Pop up piece menu */\\r
+ POINT pt; int x, y;\\r
+ SquareToPos(fromY, fromX, &x, &y);\\r
+ pt.x = x; pt.y = y;\\r
+ if(gameInfo.variant != VariantShogi)\\r
+ MenuPopup(hwnd, pt, LoadMenu(hInst, "PieceMenu"), -1);\\r
+ else\\r
+ MenuPopup(hwnd, pt, LoadMenu(hInst, "ShogiPieceMenu"), -1);\\r
+ break;\\r
+ }\\r
+\r
+#define JAWS_REPLAY \\r
+ case '\020': /* ctrl P */\\r
+ { char buf[MSG_SIZ];\\r
+ if(GetWindowText(hwnd, buf, MSG_SIZ-1))\\r
+ SayString(buf, FALSE);\\r
+ }\\r
+ return 0;\\r
+\r
+#define JAWS_KB_NAVIGATION \\r
+\\r
+ case WM_KEYDOWN:\\r
+ switch (wParam) {\\r
+ case VK_LEFT:\\r
+ case VK_RIGHT:\\r
+ case VK_UP:\\r
+ case VK_DOWN:\\r
+ KeyboardEvent(hwnd, message, wParam, lParam);\\r
+ break;\\r
+ case VK_SPACE:\\r
+ KeyboardMove(hwnd, message, wParam, lParam);\\r
+ break;\\r
+ }\\r
+ break;\\r
+ case WM_KEYUP:\\r
+ switch (wParam) {\\r
+ case VK_SPACE:\\r
+ KeyboardMove(hwnd, message, wParam, lParam);\\r
+ break;\\r
+ }\\r
+ break;\\r
+\r
+#define JAWS_MENU_ITEMS \\r
+ case IDM_PossibleAttackMove: /*What can I possible attack from here */\\r
+ PossibleAttackMove();\\r
+ break;\\r
+\\r
+ case IDM_PossibleAttacked: /*what can possible attack this square*/\\r
+ PossibleAttacked();\\r
+ break;\\r
+\\r
+ case IDM_ReadRow: /* Read the current row of pieces */\\r
+ ReadRow();\\r
+ break;\\r
+\\r
+ case IDM_ReadColumn: /* Read the current column of pieces */\\r
+ ReadColumn();\\r
+ break;\\r
+\\r
+ case IDM_SayCurrentPos: /* Say current position including color */\\r
+ SayCurrentPos();\\r
+ break;\\r
+\\r
+ case IDM_SayAllBoard: /* Say the whole board from bottom to top */\\r
+ SayAllBoard();\\r
+ break;\\r
+\\r
+ case IDM_SayMachineMove: /* Say the last move made */\\r
+ timeflag = 1;\\r
+ SayMachineMove(1);\\r
+ break;\\r
+\\r
+ case IDM_SayUpperDiagnols: /* Says the diagnol positions above you */\\r
+ SayUpperDiagnols();\\r
+ break;\\r
+\\r
+ case IDM_SayLowerDiagnols: /* Say the diagnol positions below you */\\r
+ SayLowerDiagnols();\\r
+ break;\\r
+\\r
+ case IDM_SayBlackPieces: /*Say the opponents pieces */\\r
+ SayPieces(BlackPlay);\\r
+ break;\\r
+\\r
+ case IDM_SayWhitePieces: /*Say the opponents pieces */\\r
+ SayPieces(WhitePlay);\\r
+ break;\\r
+\\r
+ case IDM_SayClockTime: /*Say the clock time */\\r
+ SayClockTime();\\r
+ break;\\r
+\\r
+ case IDM_SayWhosTurn: /* Say whos turn it its */\\r
+ SayWhosTurn();\\r
+ break;\\r
+\\r
+ case IDM_SayKnightMoves: /* Say Knights (L-shaped) move */\\r
+ SayKnightMoves();\\r
+ break;\\r
+\\r
+ case OPT_PonderNextMove: /* Toggle option setting */\\r
+ Toggle(&appData.ponderNextMove, "ponder");\\r
+ break;\\r
+\\r
+ case OPT_AnimateMoving: /* Toggle option setting */\\r
+ Toggle(&appData.animate, "animate moving");\\r
+ break;\\r
+\\r
+ case OPT_AutoFlag: /* Toggle option setting */\\r
+ Toggle(&appData.autoCallFlag, "auto flag");\\r
+ break;\\r
+\\r
+ case OPT_AlwaysQueen: /* Toggle option setting */\\r
+ Toggle(&appData.alwaysPromoteToQueen, "always promote to queen");\\r
+ break;\\r
+\\r
+ case OPT_TestLegality: /* Toggle option setting */\\r
+ Toggle(&appData.testLegality, "legality testing");\\r
+ break;\\r
+\\r
+ case OPT_HideThinkFromHuman: /* Toggle option setting */\\r
+ Toggle(&appData.hideThinkingFromHuman, "hide thinking");\\r
+ ShowThinkingEvent();\\r
+ break;\\r
+\\r
+ case OPT_SaveExtPGN: /* Toggle option setting */\\r
+ Toggle(&appData.saveExtendedInfoInPGN, "extended P G N info");\\r
+ break;\\r
+\\r
+ case OPT_ExtraInfoInMoveHistory: /* Toggle option setting */\\r
+ Toggle(&appData.showEvalInMoveHistory, "extra info in move histoty");\\r
+ break;\\r
+\\r
+\r
+\r
+#define JAWS_INIT if (!InitJAWS()) return (FALSE);\r
+\r
+#define JAWS_DELETE(X)\r
+\r
+#define JAWS_SILENCE if(suppressClocks) return;\r
+\r
+#define SAY(S) SayString((S), FALSE)\r
+\r
+#define SAYMACHINEMOVE() SayMachineMove(0)\r
+\r
+// After inclusion of this file somewhere early in winboard.c, the remaining part of the patch\r
+// is scattered over winboard.c for actually calling the routines.\r
+//\r
+// * move fromX, fromY declaration to front, before incusion of this file. (Can be permanent change in winboard.c.)\r
+// * call InitJAWS(), after calling InitIntance(). (Using JAWS_INIT macro)\r
+// * add keyboard cases in main switch of WndProc, though JAWS_KB_NAVIGATION above, e.g. before WM_CHAR case.\r
+// * change the WM_CHAR case of same switch from "if(appData.icsActive)" to "if(appData.icsActive JAWS_IF_TAB)"\r
+// * add new menu cases in WM_COMMAND case of WndProc, e.g. before IDM_Forward. (throug macro defined above)\r
+// * add SAYMACHINEMOVE(); at the end of DisplayMessage();\r
+// * add SAY("board"); in WM_CHAR case of ConsoleTextSubclass, just before "SetFocus(buttondesc..."\r
--- /dev/null
+//Microsoft Developer Studio generated resource script.\r
+//\r
+#include "resource.h"\r
+#include "jaws.h"\r
+\r
+#define APSTUDIO_READONLY_SYMBOLS\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Generated from the TEXTINCLUDE 2 resource.\r
+//\r
+#define APSTUDIO_HIDDEN_SYMBOLS\r
+#include "windows.h"\r
+#undef APSTUDIO_HIDDEN_SYMBOLS\r
+#include "dlgs.h"\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+#undef APSTUDIO_READONLY_SYMBOLS\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// English (U.S.) resources\r
+\r
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r
+#ifdef _WIN32\r
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US\r
+#pragma code_page(1252)\r
+#endif //_WIN32\r
+\r
+// moved to "res" subdir to make testing easier-- don't want it in the root\r
+MANIFEST_RESOURCE_ID 24 MOVEABLE PURE "res\\winboard.exe.manifest"\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Dialog\r
+//\r
+\r
+ABOUTBOX DIALOG DISCARDABLE 22, 17, 180, 108\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "About WinBoard"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ DEFPUSHBUTTON "OK",IDOK,126,89,50,14,WS_GROUP\r
+ ICON "icon_white",IDC_STATIC,3,6,20,20\r
+ LTEXT "Chessboard for Windows",400,25,15,121,8\r
+ LTEXT "Copyright 1991 Digital Equipment Corporation",201,6,34,\r
+ 149,8\r
+ LTEXT "Enhancements Copyright 1992-2009 Free Software Foundation",\r
+ OPT_TCtext1,6,45,121,17\r
+ CONTROL "",OPT_TCTime,"Static",SS_BLACKRECT,4,28,159,1\r
+ LTEXT "WinBoard 0.0.0",ABOUTBOX_Version,25,5,160,8\r
+ LTEXT "Enhancements Copyright 2005\r\nAlessandro Scotti",\r
+ IDC_STATIC,6,65,120,24\r
+ LTEXT "Auditory/Keyboard Enhancements By: Ed Rodriguez (sort of)",\r
+ IDC_STATIC,6,85,120,16\r
+END\r
+\r
+DLG_TimeControl DIALOG DISCARDABLE 6, 18, 263, 172\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Time Control"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ LTEXT "Use arrow keys to specify which clock setting type, then press tab to alter values.",\r
+ IDC_STATIC,9,9,231,20\r
+ CONTROL "Conventional chess clock",OPT_TCUseMoves,"Button",\r
+ BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,36,113,10\r
+ CONTROL "Incremental clock",OPT_TCUseInc,"Button",\r
+ BS_AUTORADIOBUTTON | WS_TABSTOP,7,73,107,10\r
+ LTEXT "Number of moves:",OPT_TCtext1,15,52,58,8,NOT WS_GROUP\r
+ EDITTEXT OPT_TCMoves,77,52,22,12,ES_AUTOHSCROLL | WS_GROUP\r
+ LTEXT "Within number of minutes:",OPT_TCtext2,113,54,81,8,NOT \r
+ WS_GROUP\r
+ EDITTEXT OPT_TCTime,197,52,32,12,ES_AUTOHSCROLL\r
+ LTEXT "Initial number of minutes:",405,15,89,106,8,NOT \r
+ WS_GROUP\r
+ EDITTEXT OPT_TCTime2,127,87,32,12,ES_AUTOHSCROLL | WS_GROUP\r
+ LTEXT "Plus number of seconds per move:",406,15,105,109,8,NOT \r
+ WS_GROUP\r
+ EDITTEXT OPT_TCInc,127,103,32,12,ES_AUTOHSCROLL\r
+ LTEXT "",408,185,108,67,8,NOT WS_GROUP\r
+ LTEXT "Time-Odds Factors:",IDC_STATIC,6,118,150,8,NOT WS_GROUP\r
+ EDITTEXT OPT_TCOdds1,47,131,26,12,ES_AUTOHSCROLL | WS_GROUP\r
+ LTEXT "Engine #1:",IDC_STATIC,6,133,41,8,NOT WS_GROUP\r
+ EDITTEXT OPT_TCOdds2,124,131,26,12,ES_AUTOHSCROLL\r
+ LTEXT "Engine #2:",IDC_STATIC,83,133,41,8,NOT WS_GROUP\r
+ PUSHBUTTON "OK",IDOK,29,150,40,14,WS_GROUP\r
+ PUSHBUTTON "Cancel",IDCANCEL,85,150,40,14\r
+END\r
+\r
+DLG_LoadOptions DIALOG DISCARDABLE 10, 18, 136, 55\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Load Game Options"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ CONTROL "Load games with automatic stepping",OPT_Autostep,"Button",\r
+ BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,4,4,130,10\r
+ EDITTEXT OPT_ASTimeDelay,16,16,28,14,ES_AUTOHSCROLL\r
+ LTEXT "seconds per move",OPT_AStext1,46,20,60,8,NOT WS_GROUP\r
+ PUSHBUTTON "OK",IDOK,26,36,50,14,WS_GROUP\r
+ PUSHBUTTON "Cancel",IDCANCEL,82,36,50,14\r
+END\r
+\r
+DLG_SaveOptions DIALOG DISCARDABLE 6, 17, 178, 119\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Save Game Options"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ CONTROL "Save games automatically",OPT_Autosave,"Button",\r
+ BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,4,4,97,10\r
+ CONTROL "Prompt for filename",OPT_AVPrompt,"Button",\r
+ BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,18,75,10\r
+ CONTROL "To file:",OPT_AVToFile,"Button",BS_AUTORADIOBUTTON,16,\r
+ 32,36,10\r
+ EDITTEXT OPT_AVFilename,54,30,97,14,ES_AUTOHSCROLL\r
+ PUSHBUTTON "...",OPT_AVBrowse,156,30,18,14\r
+ GROUPBOX "Save As: ",801,4,48,170,28,WS_GROUP\r
+ CONTROL "PGN",OPT_PGN,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,\r
+ 60,39,10\r
+ CONTROL "Old",OPT_Old,"Button",BS_AUTORADIOBUTTON,54,60,114,10\r
+ CONTROL "Save out of book info in PGN",OPT_OutOfBookInfo,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,4,82,109,10\r
+ PUSHBUTTON "OK",IDOK,68,100,50,14,WS_GROUP\r
+ PUSHBUTTON "Cancel",IDCANCEL,124,100,50,14\r
+END\r
+\r
+1536 DIALOG DISCARDABLE 36, 24, 264, 134\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Open"\r
+FONT 8, "Helv"\r
+BEGIN\r
+ LTEXT "File &Name:",1090,6,6,76,9\r
+ EDITTEXT 1152,6,16,90,12,ES_AUTOHSCROLL | ES_OEMCONVERT\r
+ LISTBOX 1120,6,32,90,68,LBS_SORT | LBS_OWNERDRAWFIXED | \r
+ LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_VSCROLL | \r
+ WS_TABSTOP\r
+ LTEXT "&Directories:",-1,110,6,92,9\r
+ LTEXT "",1088,110,18,92,9,SS_NOPREFIX | NOT WS_GROUP\r
+ LISTBOX 1121,110,32,92,68,LBS_SORT | LBS_OWNERDRAWFIXED | \r
+ LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_VSCROLL | \r
+ WS_TABSTOP\r
+ LTEXT "List Files of &Type:",1089,6,104,90,9\r
+ COMBOBOX 1136,6,114,90,36,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | \r
+ WS_BORDER | WS_VSCROLL | WS_TABSTOP\r
+ LTEXT "Dri&ves:",1091,110,104,92,9\r
+ COMBOBOX 1137,110,114,92,68,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | \r
+ CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | \r
+ WS_VSCROLL | WS_TABSTOP\r
+ DEFPUSHBUTTON "OK",IDOK,208,6,50,14,WS_GROUP\r
+ PUSHBUTTON "Cancel",IDCANCEL,208,24,50,14,WS_GROUP\r
+ PUSHBUTTON "&Help",1038,208,46,50,14,NOT WS_VISIBLE | WS_GROUP\r
+ LTEXT "&Index number:",-1,208,74,48,8\r
+ EDITTEXT OPT_IndexNumberOld,208,84,50,12,ES_AUTOHSCROLL\r
+ PUSHBUTTON "Net&work...",1037,208,113,50,14,WS_GROUP\r
+END\r
+\r
+DLG_CommPort DIALOG DISCARDABLE 25, 30, 220, 79\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Communication Port Settings"\r
+FONT 8, "Helv"\r
+BEGIN\r
+ PUSHBUTTON "OK",IDOK,106,60,50,14\r
+ PUSHBUTTON "Cancel",IDCANCEL,164,60,50,14\r
+ RTEXT "&Port:",-1,4,6,40,10\r
+ COMBOBOX OPT_Port,49,4,55,60,CBS_DROPDOWN | WS_VSCROLL | \r
+ WS_TABSTOP\r
+ RTEXT "Data &Rate:",-1,114,6,40,10,NOT WS_GROUP\r
+ COMBOBOX OPT_DataRate,159,4,55,100,CBS_DROPDOWN | WS_VSCROLL | \r
+ WS_TABSTOP\r
+ RTEXT "Data &Bits:",-1,4,25,40,10,NOT WS_GROUP\r
+ COMBOBOX OPT_Bits,49,22,55,60,CBS_DROPDOWNLIST | CBS_HASSTRINGS | \r
+ WS_VSCROLL | WS_TABSTOP\r
+ RTEXT "P&arity:",-1,114,24,40,10,NOT WS_GROUP\r
+ COMBOBOX OPT_Parity,159,22,55,60,CBS_DROPDOWNLIST | \r
+ CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+ RTEXT "&Stop Bits:",-1,4,42,40,10,NOT WS_GROUP\r
+ COMBOBOX OPT_StopBits,49,40,55,60,CBS_DROPDOWNLIST | \r
+ CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+ RTEXT "F&low:",-1,114,42,40,10,NOT WS_GROUP\r
+ COMBOBOX OPT_Flow,159,40,55,60,CBS_DROPDOWNLIST | CBS_HASSTRINGS | \r
+ WS_VSCROLL | WS_TABSTOP\r
+ PUSHBUTTON "Help",OPT_SerialHelp,4,60,50,14,NOT WS_VISIBLE\r
+END\r
+\r
+DLG_EditComment DIALOG DISCARDABLE 6, 18, 302, 102\r
+STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME\r
+CAPTION "Edit Comment"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ PUSHBUTTON "OK",IDOK,194,84,50,14\r
+ PUSHBUTTON "Cancel",OPT_CancelComment,250,84,50,14\r
+ CONTROL "",OPT_CommentText,"RICHEDIT",ES_MULTILINE | \r
+ ES_AUTOHSCROLL | ES_WANTRETURN | WS_BORDER | WS_VSCROLL | \r
+ WS_HSCROLL | WS_TABSTOP,2,2,298,78\r
+ PUSHBUTTON "&Clear",OPT_ClearComment,2,84,50,14\r
+ PUSHBUTTON "&Edit",OPT_EditComment,58,84,50,14\r
+END\r
+\r
+DLG_PromotionKing DIALOG DISCARDABLE 98, 90, 183, 41\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Promote to:"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ PUSHBUTTON "Chance&llor",PB_Chancellor,49,4,40,14,NOT WS_TABSTOP\r
+ PUSHBUTTON "&Archbishop",PB_Archbishop,94,4,40,14,NOT WS_TABSTOP\r
+ PUSHBUTTON "&Queen",PB_Queen,4,23,40,14,WS_GROUP\r
+ PUSHBUTTON "&Rook",PB_Rook,49,23,40,14,NOT WS_TABSTOP\r
+ PUSHBUTTON "&Bishop",PB_Bishop,94,23,40,14,NOT WS_TABSTOP\r
+ PUSHBUTTON "K&night",PB_Knight,139,23,40,14,NOT WS_TABSTOP\r
+ PUSHBUTTON "&King",PB_King,4,4,40,14,NOT WS_TABSTOP\r
+ PUSHBUTTON "&Cancel",IDCANCEL,139,4,40,14,WS_GROUP\r
+ LTEXT " YES",IDC_Yes,6,25,36,10\r
+ LTEXT " NO",IDC_No,141,25,36,10\r
+ LTEXT "C&entaur",IDC_Centaur,12,6,25,10\r
+END\r
+\r
+ABOUTBOX2 DIALOG DISCARDABLE 22, 17, 281, 223\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "About WinBoard"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ RTEXT "Chessboard for Windows",DLG_TimeControl,196,154,80,8\r
+ LTEXT "Copyright 1991 Digital Equipment Corporation",201,4,168,\r
+ 151,8\r
+ LTEXT "Enhancements Copyright 1992-2003 Free Software Foundation",\r
+ OPT_TCtext1,4,179,126,17\r
+ CONTROL "",OPT_TCTime,"Static",SS_BLACKRECT,4,164,272,1\r
+ LTEXT "WinBoard 0.0.0",ABOUTBOX_Version,4,154,64,8\r
+ CONTROL "galactic",IDC_STATIC,"Static",SS_BITMAP,4,4,15,13\r
+ DEFPUSHBUTTON "OK",IDOK,226,204,50,14\r
+ LTEXT "Enhancements Copyright 2005\r\nAlessandro Scotti",\r
+ IDC_STATIC,4,199,183,20\r
+ LTEXT "(unofficial version ""X"")",IDC_STATIC,68,154,71,8\r
+END\r
+\r
+DLG_GameList DIALOG DISCARDABLE 6, 18, 259, 153\r
+STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME\r
+CAPTION "Game List"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ LISTBOX OPT_GameListText,2,2,254,130,LBS_NOINTEGRALHEIGHT | \r
+ WS_VSCROLL | WS_HSCROLL | WS_TABSTOP\r
+ PUSHBUTTON "&Load",OPT_GameListLoad,2,135,32,15\r
+ PUSHBUTTON "&<",OPT_GameListPrev,38,135,22,15\r
+ PUSHBUTTON "&>",OPT_GameListNext,64,135,24,15\r
+ PUSHBUTTON "&Close",OPT_GameListClose,92,135,32,15\r
+ PUSHBUTTON "Filter",IDC_GameListDoFilter,144,136,30,14\r
+ EDITTEXT IDC_GameListFilter,178,136,78,14,ES_AUTOHSCROLL\r
+END\r
+\r
+DLG_EditTags DIALOG DISCARDABLE 6, 18, 167, 140\r
+STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME\r
+CAPTION "Edit Tags"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ PUSHBUTTON "OK",IDOK,58,122,50,14\r
+ PUSHBUTTON "Cancel",OPT_TagsCancel,114,122,50,14\r
+ CONTROL "",OPT_TagsText,"RICHEDIT",ES_MULTILINE | ES_AUTOVSCROLL | \r
+ ES_AUTOHSCROLL | ES_WANTRETURN | WS_BORDER | WS_VSCROLL | \r
+ WS_HSCROLL | WS_TABSTOP,2,2,162,115\r
+ PUSHBUTTON "&Edit",OPT_EditTags,2,122,50,14\r
+END\r
+\r
+WBCONSOLE DIALOG DISCARDABLE 0, 0, 335, 133\r
+STYLE WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_CAPTION | WS_SYSMENU | \r
+ WS_THICKFRAME\r
+CAPTION "I C S"\r
+CLASS "WBConsole"\r
+FONT 8, "Courier New"\r
+BEGIN\r
+ CONTROL "",OPT_ConsoleText,"RICHEDIT",ES_MULTILINE | \r
+ ES_AUTOVSCROLL | ES_NOHIDESEL | ES_READONLY | ES_NUMBER | \r
+ WS_BORDER | WS_VSCROLL | WS_TABSTOP,0,0,335,119\r
+ CONTROL "",OPT_ConsoleInput,"RICHEDIT",ES_MULTILINE | \r
+ ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_NOHIDESEL | \r
+ ES_NUMBER | WS_BORDER | WS_TABSTOP,0,120,335,13,\r
+ WS_EX_TRANSPARENT\r
+END\r
+\r
+DLG_Analysis DIALOG DISCARDABLE 0, 0, 294, 62\r
+STYLE WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | \r
+ WS_THICKFRAME\r
+CAPTION "Dialog"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ CONTROL "",OPT_AnalysisText,"RICHEDIT",ES_MULTILINE | \r
+ ES_READONLY | ES_WANTRETURN | WS_BORDER | WS_VSCROLL | \r
+ WS_HSCROLL | WS_TABSTOP,4,4,286,54\r
+END\r
+\r
+DLG_Error DIALOG DISCARDABLE 0, 0, 220, 66\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Error"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ ICON 32515,IDC_STATIC,4,4,21,20\r
+ LTEXT "Sorry Charlie",OPT_ErrorText,28,4,188,36\r
+ DEFPUSHBUTTON "OK",IDOK,84,48,50,14\r
+END\r
+\r
+DLG_Colorize DIALOGEX 0, 0, 174, 61\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "I C S Interaction Colors"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ DEFPUSHBUTTON "OK",IDOK,64,42,50,14,WS_GROUP\r
+ PUSHBUTTON "Cancel",IDCANCEL,120,42,50,14\r
+ PUSHBUTTON "&Color...",OPT_ChooseColor,119,4,51,14,WS_GROUP\r
+ CONTROL "&Bold",OPT_Bold,"Button",BS_AUTOCHECKBOX | WS_GROUP | \r
+ WS_TABSTOP,4,24,30,10\r
+ CONTROL "&Italic",OPT_Italic,"Button",BS_AUTOCHECKBOX,40,24,30,\r
+ 10\r
+ CONTROL "&Underline",OPT_Underline,"Button",BS_AUTOCHECKBOX,76,\r
+ 24,45,10\r
+ CONTROL "&Strikeout",OPT_Strikeout,"Button",BS_AUTOCHECKBOX,128,\r
+ 24,42,10\r
+ CONTROL "",OPT_Sample,"RICHEDIT",ES_CENTER | ES_MULTILINE | \r
+ ES_READONLY | WS_GROUP,4,4,106,15,WS_EX_CLIENTEDGE\r
+END\r
+\r
+DLG_Question DIALOG DISCARDABLE 0, 0, 187, 77\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Question"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ EDITTEXT OPT_QuestionInput,4,36,179,14,ES_AUTOHSCROLL\r
+ DEFPUSHBUTTON "OK",IDOK,78,58,50,14,WS_GROUP\r
+ PUSHBUTTON "Cancel",IDCANCEL,134,58,50,14\r
+ LTEXT "Enter a chess engine command or just type something stupid that will completely screw things up.",\r
+ OPT_QuestionText,30,2,153,28\r
+ ICON 32514,IDC_STATIC,4,4,20,20\r
+END\r
+\r
+DLG_Startup DIALOG DISCARDABLE 0, 0, 276, 159\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "WinBoard Startup"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ GROUPBOX "What would you like to do?",IDC_STATIC,4,4,211,56\r
+ CONTROL "&Play against a chess engine or match two engines",\r
+ OPT_ChessEngine,"Button",BS_AUTORADIOBUTTON | WS_GROUP | \r
+ WS_TABSTOP,8,17,193,10\r
+ CONTROL "&Use an Internet Chess Server",OPT_ChessServer,"Button",\r
+ BS_AUTORADIOBUTTON | WS_TABSTOP,8,30,193,10\r
+ CONTROL "Just &view or edit game files",OPT_View,"Button",\r
+ BS_AUTORADIOBUTTON | WS_TABSTOP,8,43,193,10\r
+ LTEXT "Specify Chess &Engines:",IDC_SPECIFY_ENG_STATIC,11,63,\r
+ 102,10\r
+ COMBOBOX OPT_ChessEngineName,17,74,194,129,CBS_DROPDOWN | \r
+ CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
+ COMBOBOX OPT_SecondChessEngineName,17,92,194,129,CBS_DROPDOWN | \r
+ CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
+ LTEXT "Specify Chess &Server:",IDC_SPECIFY_SERVER_STATIC,11,\r
+ 108,102,10\r
+ COMBOBOX OPT_ChessServerName,17,122,194,129,CBS_DROPDOWN | \r
+ CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
+ CONTROL "&Additional options",OPT_AnyAdditional,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,11,142,71,10\r
+ EDITTEXT OPT_AdditionalOptions,85,142,187,13,ES_AUTOHSCROLL\r
+ DEFPUSHBUTTON "OK",IDOK,222,4,50,14\r
+ PUSHBUTTON "Cancel",IDCANCEL,222,21,50,14\r
+ PUSHBUTTON "&Help",IDM_HELPCONTENTS,222,38,50,14\r
+END\r
+\r
+DLG_IndexNumber DIALOG DISCARDABLE 0, 0, 236, 18\r
+STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_CLIPSIBLINGS\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ LTEXT "Inde&x number:",IDC_STATIC,5,2,46,8\r
+ EDITTEXT OPT_IndexNumber,54,0,155,13,ES_AUTOHSCROLL\r
+END\r
+\r
+DLG_TypeInMove DIALOG DISCARDABLE 0, 0, 206, 23\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Type in a move"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ DEFPUSHBUTTON "OK",IDOK,96,4,50,14\r
+ PUSHBUTTON "Cancel",IDCANCEL,152,4,50,14\r
+ EDITTEXT OPT_Move,4,4,86,13,ES_AUTOHSCROLL\r
+END\r
+\r
+DLG_TypeInName DIALOG DISCARDABLE 0, 0, 206, 23\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Type in your name"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ DEFPUSHBUTTON "OK",IDOK,96,4,50,14\r
+ PUSHBUTTON "Cancel",IDCANCEL,152,4,50,14\r
+ EDITTEXT OPT_Name,4,4,86,13,ES_AUTOHSCROLL\r
+END\r
+\r
+DLG_Sound DIALOG DISCARDABLE 0, 0, 242, 105\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Sounds"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ DEFPUSHBUTTON "OK",IDOK,132,86,50,14\r
+ PUSHBUTTON "Cancel",IDCANCEL,188,86,50,14\r
+ LTEXT "Event:",IDC_STATIC,4,7,26,9\r
+ COMBOBOX CBO_Sounds,30,4,208,110,CBS_DROPDOWNLIST | WS_VSCROLL | \r
+ WS_TABSTOP\r
+ CONTROL "No sound",OPT_NoSound,"Button",BS_AUTORADIOBUTTON | \r
+ WS_GROUP | WS_TABSTOP,12,22,47,10\r
+ CONTROL "Default beep",OPT_DefaultBeep,"Button",\r
+ BS_AUTORADIOBUTTON | WS_TABSTOP,12,36,57,10\r
+ CONTROL "Built-in sound:",OPT_BuiltInSound,"Button",\r
+ BS_AUTORADIOBUTTON | WS_TABSTOP,12,51,60,10\r
+ COMBOBOX OPT_BuiltInSoundName,76,48,103,109,CBS_DROPDOWNLIST | \r
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP\r
+ PUSHBUTTON "Play",OPT_PlaySound,188,47,50,14\r
+ CONTROL "WAV file:",OPT_WavFile,"Button",BS_AUTORADIOBUTTON | \r
+ WS_TABSTOP,12,66,45,10\r
+ EDITTEXT OPT_WavFileName,76,65,103,12,ES_AUTOHSCROLL\r
+ PUSHBUTTON "Browse...",OPT_BrowseSound,188,64,50,14\r
+ PUSHBUTTON "Defaults",OPT_DefaultSounds,6,86,50,14\r
+END\r
+\r
+DLG_GeneralOptions DIALOG DISCARDABLE 0, 0, 250, 183\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "General Options"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ DEFPUSHBUTTON "OK",IDOK,110,164,50,14\r
+ PUSHBUTTON "Cancel",IDCANCEL,166,164,50,14\r
+ CONTROL "Always on &Top",OPT_AlwaysOnTop,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,4,6,126,10\r
+ CONTROL "Highlight Last &Move",OPT_HighlightLastMove,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,131,6,126,10\r
+ CONTROL "Always &Queen Ctrl+Shift+Q",OPT_AlwaysQueen,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,4,20,126,10\r
+ CONTROL "Periodic &Updates",OPT_PeriodicUpdates,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,131,20,126,10\r
+ CONTROL "Animate &Dragging",OPT_AnimateDragging,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,4,34,126,10\r
+ CONTROL "Ponder &Next Move Ctrl+Shift+P",OPT_PonderNextMove,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,131,34,126,10\r
+ CONTROL "&Animate Moving Ctrl+Shift+A",OPT_AnimateMoving,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,4,48,126,10\r
+ CONTROL "&Popup Exit Message",OPT_PopupExitMessage,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,131,48,126,10\r
+ CONTROL "Auto &Flag Ctrl+Shift+F",OPT_AutoFlag,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,4,62,126,10\r
+ CONTROL "Popup Move &Errors",OPT_PopupMoveErrors,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,131,62,126,10\r
+ CONTROL "Auto Flip &View",OPT_AutoFlipView,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,4,76,126,10\r
+ CONTROL "Show Butt&on Bar",OPT_ShowButtonBar,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,131,76,126,10\r
+ CONTROL "Auto &Raise Board",OPT_AutoRaiseBoard,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,4,90,71,10\r
+ CONTROL "Show &Coordinates",OPT_ShowCoordinates,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,131,90,126,10\r
+ CONTROL "&Blindfold",OPT_Blindfold,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,4,104,126,10\r
+ CONTROL "&Send Engine Think",OPT_ShowThinking,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,131,104,126,10\r
+ CONTROL "Highlight Dra&gging",OPT_HighlightDragging,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,4,118,126,10\r
+ CONTROL "Test &Legality Ctrl+Shift+L",OPT_TestLegality,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,131,118,126,10\r
+ CONTROL "E&xtended PGN Info Ctrl+Shift+X",OPT_SaveExtPGN,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,4,132,126,10\r
+ CONTROL "&Hide Thinking Ctrl+Shift+H",OPT_HideThinkFromHuman,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,131,132,126,10\r
+ CONTROL "&Info in Move History Ctrl+Shift+I",OPT_ExtraInfoInMoveHistory,\r
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,146,126,10\r
+ CONTROL "Highlight with Arro&w",OPT_HighlightMoveArrow,\r
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,131,145,126,10\r
+END\r
+\r
+DLG_IcsOptions DIALOGEX 0, 0, 302, 255\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "ICS Options"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ DEFPUSHBUTTON "OK",IDOK,194,237,50,15\r
+ PUSHBUTTON "Cancel",IDCANCEL,248,237,50,15\r
+ CONTROL "&Auto Comment",OPT_AutoComment,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,10,12,63,8\r
+ CONTROL "Auto &Observe",OPT_AutoObserve,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,10,25,63,8\r
+ CONTROL "&Get Move List",OPT_GetMoveList,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,10,38,63,8\r
+ CONTROL "&Local Line Editing",OPT_LocalLineEditing,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,10,51,84,8\r
+ CONTROL "&Quiet Play",OPT_QuietPlay,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,10,64,63,8\r
+ CONTROL "&Premove",OPT_Premove,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,160,12,46,10\r
+ CONTROL "&White first move",OPT_PremoveWhite,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,160,26,67,10\r
+ EDITTEXT OPT_PremoveWhiteText,236,22,25,14,ES_AUTOHSCROLL\r
+ CONTROL "&Black first move",OPT_PremoveBlack,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,160,40,66,10\r
+ EDITTEXT OPT_PremoveBlackText,236,38,25,14,ES_AUTOHSCROLL\r
+ CONTROL "&Sound alarm at",OPT_IcsAlarm,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,160,72,63,10\r
+ EDITTEXT OPT_IcsAlarmTime,236,68,26,14,ES_AUTOHSCROLL\r
+ LTEXT "seconds",IDC_STATIC,264,72,28,8\r
+ PUSHBUTTON "Choose...",OPT_ChooseShoutColor,97,101,45,15\r
+ PUSHBUTTON "Choose...",OPT_ChooseSShoutColor,97,121,45,15\r
+ PUSHBUTTON "Choose...",OPT_ChooseChannel1Color,97,141,45,15\r
+ PUSHBUTTON "Choose...",OPT_ChooseChannelColor,97,161,45,15\r
+ PUSHBUTTON "Choose...",OPT_ChooseKibitzColor,97,181,45,15\r
+ PUSHBUTTON "Choose...",OPT_ChooseTellColor,246,101,45,15\r
+ PUSHBUTTON "Choose...",OPT_ChooseChallengeColor,246,121,45,15\r
+ PUSHBUTTON "Choose...",OPT_ChooseRequestColor,246,141,45,15\r
+ PUSHBUTTON "Choose...",OPT_ChooseSeekColor,246,161,45,15\r
+ PUSHBUTTON "Choose...",OPT_ChooseNormalColor,246,181,45,15\r
+ PUSHBUTTON "Background...",OPT_ChooseBackgroundColor,10,208,50,16\r
+ PUSHBUTTON "&Defaults...",OPT_DefaultColors,68,208,50,16\r
+ CONTROL "Do ¬ colorize messages",OPT_DontColorize,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,192,212,97,10\r
+ CONTROL "",OPT_SampleShout,"RICHEDIT",ES_CENTER | ES_MULTILINE | \r
+ ES_READONLY | WS_DISABLED | WS_GROUP,10,101,75,15,\r
+ WS_EX_CLIENTEDGE\r
+ CONTROL "",OPT_SampleSShout,"RICHEDIT",ES_CENTER | ES_MULTILINE | \r
+ ES_READONLY | WS_DISABLED | WS_GROUP,10,121,75,15,\r
+ WS_EX_CLIENTEDGE\r
+ CONTROL "",OPT_SampleChannel1,"RICHEDIT",ES_CENTER | \r
+ ES_MULTILINE | ES_READONLY | WS_DISABLED | WS_GROUP,10,\r
+ 141,75,15,WS_EX_CLIENTEDGE\r
+ CONTROL "",OPT_SampleChannel,"RICHEDIT",ES_CENTER | ES_MULTILINE | \r
+ ES_READONLY | WS_DISABLED | WS_GROUP,10,161,75,15,\r
+ WS_EX_CLIENTEDGE\r
+ CONTROL "",OPT_SampleKibitz,"RICHEDIT",ES_CENTER | ES_MULTILINE | \r
+ ES_READONLY | WS_GROUP,10,181,75,15,WS_EX_CLIENTEDGE\r
+ CONTROL "",OPT_SampleTell,"RICHEDIT",ES_CENTER | ES_MULTILINE | \r
+ ES_READONLY | WS_DISABLED | WS_GROUP,159,101,75,15,\r
+ WS_EX_CLIENTEDGE\r
+ CONTROL "",OPT_SampleChallenge,"RICHEDIT",ES_CENTER | \r
+ ES_MULTILINE | ES_READONLY | WS_DISABLED | WS_GROUP,159,\r
+ 121,75,15,WS_EX_CLIENTEDGE\r
+ CONTROL "",OPT_SampleRequest,"RICHEDIT",ES_CENTER | ES_MULTILINE | \r
+ ES_READONLY | WS_DISABLED | WS_GROUP,159,141,75,15,\r
+ WS_EX_CLIENTEDGE\r
+ CONTROL "",OPT_SampleSeek,"RICHEDIT",ES_CENTER | ES_MULTILINE | \r
+ ES_READONLY | WS_DISABLED | WS_GROUP,159,161,75,15,\r
+ WS_EX_CLIENTEDGE\r
+ CONTROL "",OPT_SampleNormal,"RICHEDIT",ES_CENTER | ES_MULTILINE | \r
+ ES_READONLY | WS_DISABLED | WS_GROUP,159,181,75,15,\r
+ WS_EX_CLIENTEDGE\r
+ GROUPBOX "Interaction Colors",IDC_STATIC,4,90,294,140\r
+ GROUPBOX "Premove",IDC_STATIC,154,0,144,56\r
+ GROUPBOX "General",IDC_STATIC,4,0,146,88\r
+ GROUPBOX "Alarm",IDC_STATIC,154,58,144,30\r
+END\r
+\r
+DLG_BoardOptions DIALOG DISCARDABLE 0, 0, 194, 250\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Board Options"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ DEFPUSHBUTTON "OK",IDOK,84,232,50,14\r
+ PUSHBUTTON "Cancel",IDCANCEL,140,232,50,14\r
+ CONTROL "&Tiny",OPT_SizeTiny,"Button",BS_AUTORADIOBUTTON | \r
+ WS_GROUP | WS_TABSTOP,9,14,50,10\r
+ CONTROL "T&eeny",OPT_SizeTeeny,"Button",BS_AUTORADIOBUTTON,9,24,\r
+ 50,10\r
+ CONTROL "&Dinky",OPT_SizeDinky,"Button",BS_AUTORADIOBUTTON,9,34,\r
+ 50,10\r
+ CONTROL "&Petite",OPT_SizePetite,"Button",BS_AUTORADIOBUTTON,9,\r
+ 44,50,10\r
+ CONTROL "Sl&im",OPT_SizeSlim,"Button",BS_AUTORADIOBUTTON,9,54,50,\r
+ 10\r
+ CONTROL "&Small",OPT_SizeSmall,"Button",BS_AUTORADIOBUTTON,9,64,\r
+ 50,10\r
+ CONTROL "Medi&ocre",OPT_SizeMediocre,"Button",BS_AUTORADIOBUTTON,\r
+ 70,14,50,10\r
+ CONTROL "&Middling",OPT_SizeMiddling,"Button",BS_AUTORADIOBUTTON,\r
+ 70,24,50,10\r
+ CONTROL "&Average",OPT_SizeAverage,"Button",BS_AUTORADIOBUTTON,\r
+ 70,34,50,10\r
+ CONTROL "Mode&rate",OPT_SizeModerate,"Button",BS_AUTORADIOBUTTON,\r
+ 70,44,50,10\r
+ CONTROL "Medi&um",OPT_SizeMedium,"Button",BS_AUTORADIOBUTTON,70,\r
+ 54,50,10\r
+ CONTROL "Bul&ky",OPT_SizeBulky,"Button",BS_AUTORADIOBUTTON,70,64,\r
+ 50,10\r
+ CONTROL "&Large",OPT_SizeLarge,"Button",BS_AUTORADIOBUTTON,134,\r
+ 14,50,10\r
+ CONTROL "&Big",OPT_SizeBig,"Button",BS_AUTORADIOBUTTON,134,24,50,\r
+ 10\r
+ CONTROL "&Huge",OPT_SizeHuge,"Button",BS_AUTORADIOBUTTON,134,34,\r
+ 50,10\r
+ CONTROL "&Giant",OPT_SizeGiant,"Button",BS_AUTORADIOBUTTON,134,\r
+ 44,50,10\r
+ CONTROL "&Colossal",OPT_SizeColossal,"Button",BS_AUTORADIOBUTTON,\r
+ 134,54,50,10\r
+ CONTROL "Tita&nic",OPT_SizeTitanic,"Button",BS_AUTORADIOBUTTON,\r
+ 134,64,50,10\r
+ PUSHBUTTON "...",OPT_ChooseLightSquareColor,110,94,20,15\r
+ PUSHBUTTON "...",OPT_ChooseDarkSquareColor,110,112,20,15\r
+ PUSHBUTTON "...",OPT_ChooseWhitePieceColor,110,130,20,15\r
+ PUSHBUTTON "...",OPT_ChooseBlackPieceColor,110,148,20,15\r
+ PUSHBUTTON "...",OPT_ChooseHighlightSquareColor,110,166,20,15\r
+ PUSHBUTTON "...",OPT_ChoosePremoveHighlightColor,110,184,20,15\r
+ CONTROL "Monochrome",OPT_Monochrome,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,10,210,64,10\r
+ CONTROL "All White",OPT_AllWhite,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,140,180,53,10\r
+ CONTROL "Flip Black",OPT_UpsideDown,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,140,192,53,10\r
+ PUSHBUTTON "Defaults",OPT_DefaultBoardColors,80,206,50,15\r
+ EDITTEXT OPT_DarkSquareColor,80,112,25,15,ES_READONLY | \r
+ WS_DISABLED | NOT WS_BORDER | NOT WS_TABSTOP\r
+ EDITTEXT OPT_LightSquareColor,80,94,25,15,ES_READONLY | \r
+ WS_DISABLED | NOT WS_BORDER | NOT WS_TABSTOP\r
+ EDITTEXT OPT_WhitePieceColor,80,130,25,15,ES_READONLY | \r
+ WS_DISABLED | NOT WS_BORDER | NOT WS_TABSTOP\r
+ EDITTEXT OPT_BlackPieceColor,80,148,25,15,ES_READONLY | \r
+ WS_DISABLED | NOT WS_BORDER | NOT WS_TABSTOP\r
+ EDITTEXT OPT_HighlightSquareColor,80,166,25,15,ES_READONLY | \r
+ WS_DISABLED | NOT WS_BORDER | NOT WS_TABSTOP\r
+ GROUPBOX "Colors",IDC_STATIC,4,84,185,142\r
+ EDITTEXT OPT_PremoveHighlightColor,80,184,25,15,ES_READONLY | \r
+ WS_DISABLED | NOT WS_BORDER | NOT WS_TABSTOP\r
+ LTEXT "Light Squares",IDC_STATIC,10,98,60,10\r
+ LTEXT "Dark Squares",IDC_STATIC,10,116,60,10\r
+ LTEXT "White Pieces",IDC_STATIC,10,134,60,10\r
+ LTEXT "Black Pieces",IDC_STATIC,10,152,60,10\r
+ LTEXT "Square Highlights",IDC_STATIC,10,170,60,10\r
+ LTEXT "Premove Highlights",IDC_STATIC,10,188,70,10\r
+ GROUPBOX "Size",IDC_STATIC,4,4,185,75\r
+ EDITTEXT OPT_SampleLightSquare,144,96,39,36,ES_READONLY | \r
+ WS_DISABLED | NOT WS_BORDER | NOT WS_TABSTOP\r
+ EDITTEXT OPT_SampleDarkSquare,144,138,39,36,ES_READONLY | \r
+ WS_DISABLED | NOT WS_BORDER | NOT WS_TABSTOP\r
+END\r
+\r
+DLG_NewVariant DIALOG DISCARDABLE 0, 0, 194, 250\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Variants"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ DEFPUSHBUTTON "OK",IDOK,84,232,50,14\r
+ PUSHBUTTON "Cancel",IDCANCEL,140,232,50,14\r
+ CONTROL "&normal",OPT_VariantNormal,"Button",BS_AUTORADIOBUTTON | \r
+ WS_GROUP | WS_TABSTOP,9,14,50,10\r
+ CONTROL "&FRC",OPT_VariantFRC,"Button",BS_AUTORADIOBUTTON,9,\r
+ 24,50,10\r
+ CONTROL "&wildcastle",OPT_VariantWildcastle,"Button",BS_AUTORADIOBUTTON,9,34,\r
+ 50,10\r
+ CONTROL "&nocastle",OPT_VariantNocastle,"Button",BS_AUTORADIOBUTTON,9,\r
+ 44,50,10\r
+ CONTROL "&losers",OPT_VariantLosers,"Button",BS_AUTORADIOBUTTON,\r
+ 9,54,50,10\r
+ CONTROL "&giveaway",OPT_VariantGiveaway,"Button",BS_AUTORADIOBUTTON,\r
+ 9,64,50,10\r
+ CONTROL "s&uicide",OPT_VariantSuicide,"Button",BS_AUTORADIOBUTTON,\r
+ 9,74,50,10\r
+ CONTROL "&3Check",OPT_Variant3Check,"Button",BS_AUTORADIOBUTTON,9,84,\r
+ 50,10\r
+ CONTROL "&twokings",OPT_VariantTwoKings,"Button",BS_AUTORADIOBUTTON,9,94,\r
+ 50,10\r
+ CONTROL "&atomic",OPT_VariantAtomic,"Button",BS_AUTORADIOBUTTON,\r
+ 9,104,50,10\r
+ CONTROL "cra&zyhouse",OPT_VariantCrazyhouse,"Button",BS_AUTORADIOBUTTON,70,14,\r
+ 50,10\r
+ CONTROL "&bughouse",OPT_VariantBughouse,"Button",BS_AUTORADIOBUTTON,70,24,50,\r
+ 10\r
+ CONTROL "&Twilight",OPT_VariantBughouse,"Button",BS_AUTORADIOBUTTON,70,34,50,\r
+ 10\r
+ CONTROL "&shogi",OPT_VariantShogi,"Button",BS_AUTORADIOBUTTON,70,\r
+ 44,50,10\r
+ CONTROL "su&per",OPT_VariantSuper,"Button",BS_AUTORADIOBUTTON,70,\r
+ 54,50,10\r
+ CONTROL "&knightmate",OPT_VariantKnightmate,"Button",BS_AUTORADIOBUTTON,\r
+ 70,64,50,10\r
+ CONTROL "&Berolina",OPT_VariantBerolina,"Button",BS_AUTORADIOBUTTON,70,74,\r
+ 50,10\r
+ CONTROL "c&ylinder",OPT_VariantCylinder,"Button",BS_AUTORADIOBUTTON,70,\r
+ 84,50,10\r
+ CONTROL "&fairy",OPT_VariantFairy,"Button",BS_AUTORADIOBUTTON,70,\r
+ 94,50,10\r
+ CONTROL "&gothic",OPT_VariantGothic,"Button",BS_AUTORADIOBUTTON,134,14,\r
+ 50,10\r
+ CONTROL "&capablanca",OPT_VariantCapablanca,"Button",BS_AUTORADIOBUTTON,134,\r
+ 24,50,10\r
+ CONTROL "&Janus",OPT_VariantJanus,"Button",BS_AUTORADIOBUTTON,134,34,\r
+ 50,10\r
+ CONTROL "&CRC",OPT_VariantCRC,"Button",BS_AUTORADIOBUTTON,134,44,\r
+ 50,10\r
+ CONTROL "&Falcon",OPT_VariantFalcon,"Button",BS_AUTORADIOBUTTON,134,\r
+ 54,50,10\r
+ CONTROL "cou&rier",OPT_VariantCourier,"Button",BS_AUTORADIOBUTTON,134,64,\r
+ 50,10\r
+ CONTROL "&Great",OPT_VariantGreat,"Button",BS_AUTORADIOBUTTON,134,74,\r
+ 50,10\r
+ CONTROL "&Shatranj",OPT_VariantShatranj,"Button",BS_AUTORADIOBUTTON,134,\r
+ 84,50,10\r
+ CONTROL "&xiangqi",OPT_VariantXiangqi,"Button",BS_AUTORADIOBUTTON,134,94,50,\r
+ 10\r
+ GROUPBOX "Variant",IDC_STATIC,4,4,185,115\r
+ LTEXT "Board size:",IDC_STATIC,10,135,40,8\r
+ EDITTEXT IDC_Ranks,60,131,14,14,ES_AUTOHSCROLL\r
+ LTEXT "ranks",IDC_STATIC,77,135,22,8\r
+ EDITTEXT IDC_Files,116,131,14,14,ES_AUTOHSCROLL\r
+ LTEXT "files",IDC_STATIC,133,135,37,8\r
+ LTEXT "Holdings with room for:",IDC_STATIC,10,153,90,8\r
+ EDITTEXT IDC_Holdings,93,149,14,14,ES_AUTOHSCROLL\r
+ LTEXT "pieces",IDC_STATIC,110,153,22,8\r
+ LTEXT "('-1' means defaults for selected variant)",IDC_STATIC,10,171,150,8\r
+END\r
+\r
+DLG_Fonts DIALOG DISCARDABLE 0, 0, 266, 226\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Fonts"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ DEFPUSHBUTTON "OK",IDOK,156,208,50,14\r
+ PUSHBUTTON "Cancel",IDCANCEL,212,208,50,14\r
+ PUSHBUTTON "Choose...",OPT_ChooseClockFont,212,15,45,15\r
+ PUSHBUTTON "Choose...",OPT_ChooseMessageFont,212,39,45,15\r
+ PUSHBUTTON "Choose...",OPT_ChooseCoordFont,212,63,45,15\r
+ PUSHBUTTON "Choose...",OPT_ChooseTagFont,212,101,45,15\r
+ PUSHBUTTON "Choose...",OPT_ChooseCommentsFont,212,125,45,15\r
+ PUSHBUTTON "Choose...",OPT_ChooseConsoleFont,212,149,45,15\r
+ PUSHBUTTON "Choose...",OPT_ChooseMoveHistoryFont,212,174,45,15\r
+ PUSHBUTTON "&Defaults",OPT_DefaultFonts,3,208,50,15\r
+ CONTROL "",OPT_SampleCoordFont,"RICHEDIT",ES_READONLY | \r
+ WS_DISABLED | WS_BORDER,67,59,140,20\r
+ CONTROL "",OPT_SampleTagFont,"RICHEDIT",ES_READONLY | \r
+ WS_DISABLED | WS_BORDER,67,97,140,20\r
+ CONTROL "",OPT_SampleCommentsFont,"RICHEDIT",ES_READONLY | \r
+ WS_DISABLED | WS_BORDER,67,121,140,20\r
+ CONTROL "",OPT_SampleConsoleFont,"RICHEDIT",ES_READONLY | \r
+ WS_DISABLED | WS_BORDER,67,145,140,20\r
+ LTEXT "Clocks",OPT_ClockFont,13,16,45,10,NOT WS_GROUP\r
+ LTEXT "Messages",OPT_MessageFont,13,40,45,10,NOT WS_GROUP\r
+ LTEXT "Coordinates",OPT_CoordFont,13,64,45,10,NOT WS_GROUP\r
+ LTEXT "Tags",OPT_EditTagsFont,13,102,45,10,NOT WS_GROUP\r
+ LTEXT "Comments",OPT_CommentsFont,13,126,45,10,NOT WS_GROUP\r
+ LTEXT "I C S Interaction",OPT_MessageFont5,13,150,50,10,NOT \r
+ WS_GROUP\r
+ CONTROL "",OPT_SampleClockFont,"RICHEDIT",ES_READONLY | \r
+ WS_DISABLED | WS_BORDER,67,11,140,20\r
+ CONTROL "",OPT_SampleMessageFont,"RICHEDIT",ES_READONLY | \r
+ WS_DISABLED | WS_BORDER,67,35,140,20\r
+ GROUPBOX "Current Board Size",IDC_STATIC,3,1,259,83\r
+ GROUPBOX "All Board Sizes",IDC_STATIC,3,87,259,109\r
+ CONTROL "",OPT_SampleMoveHistoryFont,"RICHEDIT",ES_READONLY | \r
+ WS_DISABLED | WS_BORDER,67,170,140,20\r
+ LTEXT "Move History, Engine Output",OPT_MessageFont6,13,171,50,20,NOT \r
+ WS_GROUP\r
+END\r
+\r
+DLG_NewGameFRC DIALOG DISCARDABLE 0, 0, 176, 47\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "New Shuffle Game"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ LTEXT "&Start Position Number:",IDC_NFG_Label,4,7,71,8\r
+ EDITTEXT IDC_NFG_Edit,76,4,42,14,ES_AUTOHSCROLL\r
+ PUSHBUTTON "Random",IDC_NFG_Random,122,4,50,14\r
+ DEFPUSHBUTTON "OK",IDOK,64,28,50,14\r
+ PUSHBUTTON "Cancel",IDCANCEL,122,28,50,14\r
+END\r
+\r
+DLG_GameListOptions DIALOG DISCARDABLE 0, 0, 206, 140\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Game List Options"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ LTEXT "PGN &Tags:",IDC_GLT,2,2,36,8\r
+ LISTBOX IDC_GameListTags,2,12,158,102,LBS_USETABSTOPS | \r
+ LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP\r
+ PUSHBUTTON "&Up",IDC_GLT_Up,164,12,38,14\r
+ PUSHBUTTON "&Down",IDC_GLT_Down,164,30,38,14\r
+ PUSHBUTTON "Default",IDC_GLT_Restore,164,82,38,14\r
+ PUSHBUTTON "Factory",IDC_GLT_Default,164,100,38,14\r
+ DEFPUSHBUTTON "OK",IDOK,96,122,50,14\r
+ PUSHBUTTON "Cancel",IDCANCEL,152,122,50,14\r
+ LTEXT "Restore to:",IDC_GLT_RestoreTo,164,70,36,8\r
+END\r
+\r
+DLG_MoveHistory DIALOGEX 0, 0, 225, 130\r
+STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME\r
+EXSTYLE WS_EX_TOOLWINDOW\r
+CAPTION "Move History"\r
+FONT 8, "MS Sans Serif", 0, 0, 0x1\r
+BEGIN\r
+ CONTROL "",IDC_MoveHistory,"RICHEDIT",ES_MULTILINE | ES_READONLY | \r
+ WS_BORDER | WS_VSCROLL | WS_TABSTOP,2,2,222,128\r
+END\r
+\r
+DLG_EvalGraph DIALOGEX 0, 0, 216, 75\r
+STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME\r
+EXSTYLE WS_EX_TOOLWINDOW\r
+CAPTION "Evaluation Graph"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+END\r
+\r
+DLG_EngineOutput DIALOGEX 0, 0, 266, 167\r
+STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME\r
+EXSTYLE WS_EX_TOOLWINDOW\r
+CAPTION "Engine output"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ LTEXT "Engine #1",IDC_EngineLabel1,14,2,84,8\r
+ RTEXT "NPS",IDC_Engine1_NPS,206,2,57,8\r
+ CONTROL "",IDC_EngineMemo1,"RICHEDIT",ES_MULTILINE | \r
+ ES_AUTOVSCROLL | ES_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | \r
+ WS_HSCROLL | WS_TABSTOP,0,10,262,72\r
+ LTEXT "Engine #2",IDC_EngineLabel2,15,84,103,8\r
+ RTEXT "NPS",IDC_Engine2_NPS,210,84,55,8\r
+ CONTROL "",IDC_EngineMemo2,"RICHEDIT",ES_MULTILINE | \r
+ ES_AUTOVSCROLL | ES_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | \r
+ WS_HSCROLL | WS_TABSTOP,2,92,262,74\r
+ ICON IDI_UNKNOWN_14,IDC_Color1,2,4,20,20,SS_REALSIZEIMAGE\r
+ ICON IDI_UNKNOWN_14,IDC_Color2,4,84,20,20\r
+ LTEXT "Static",IDC_StateData1,120,2,83,8\r
+ ICON IDI_TRANS_14,IDC_StateIcon1,98,0,21,20\r
+ LTEXT "Static",IDC_StateData2,186,84,19,8\r
+ ICON IDI_TRANS_14,IDC_StateIcon2,164,84,20,20\r
+END\r
+\r
+DLG_EnginePlayOptions DIALOG DISCARDABLE 0, 0, 208, 202\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Adjudications"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ CONTROL "Ponder Next Move",IDC_EpPonder,"Button",BS_AUTOCHECKBOX |\r
+ WS_TABSTOP,4,4,75,10\r
+ CONTROL "Enable and Show Thinking (recommended)",\r
+ IDC_EpShowThinking,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,\r
+ 4,16,152,10\r
+ CONTROL "Hide Thinking when Playing against Human",\r
+ IDC_EpHideThinkingHuman,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,4,28,153,10\r
+ CONTROL "Periodic Updates (for Analysis Mode)",\r
+ IDC_EpPeriodicUpdates,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,4,40,131,10\r
+ GROUPBOX "Engine-engine matches",IDC_STATIC,4,56,200,98\r
+ LTEXT "Adjudicate draw after:",IDC_STATIC,10,72,70,8\r
+ EDITTEXT IDC_EpDrawMoveCount,116,68,40,14,ES_AUTOHSCROLL\r
+ LTEXT "moves",IDC_STATIC,158,72,22,8\r
+ LTEXT "Win/loss adjudication threshold:",IDC_STATIC,10,90,102,\r
+ 8\r
+ EDITTEXT IDC_EpAdjudicationThreshold,116,86,40,14,ES_AUTOHSCROLL\r
+ LTEXT "centipawns",IDC_STATIC,158,90,37,8\r
+ CONTROL "&Verify Engine Claims",IDC_TestClaims,"Button",BS_AUTOCHECKBOX |\r
+ WS_TABSTOP,10,108,100,10\r
+ CONTROL "Detect &Mates",\r
+ IDC_DetectMates,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,\r
+ 10,118,100,10\r
+ CONTROL "Draw if &Insufficient Material",\r
+ IDC_MaterialDraws,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,10,128,100,10\r
+ CONTROL "Adjudicate &Trivial Draws",\r
+ IDC_TrivialDraws,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,10,138,100,10\r
+ GROUPBOX "Apply",IDC_STATIC,115,102,81,47\r
+ EDITTEXT IDC_RuleMoves,120,113,20,14,ES_AUTOHSCROLL\r
+ LTEXT "-move rule",IDC_STATIC,142,117,35,8\r
+ EDITTEXT IDC_DrawRepeats,120,130,20,14,ES_AUTOHSCROLL\r
+ LTEXT "-fold repeats",IDC_STATIC,142,134,50,8\r
+ CONTROL "Engine #1 Score is Absolute",\r
+ IDC_ScoreAbs1,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,10,156,120,10\r
+ CONTROL "Engine #2 Score is Absolute",\r
+ IDC_ScoreAbs2,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,10,168,120,10\r
+ DEFPUSHBUTTON "OK",IDOK,98,185,50,14\r
+ PUSHBUTTON "Cancel",IDCANCEL,154,185,50,14\r
+END\r
+\r
+DLG_OptionsUCI DIALOG DISCARDABLE 0, 0, 228, 124\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Engine Settings"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+ LTEXT "Polyglot Directory:",IDC_STATIC,2,8,58,8\r
+ EDITTEXT IDC_PolyglotDir,62,4,140,14,ES_AUTOHSCROLL\r
+ PUSHBUTTON "...",IDC_BrowseForPolyglotDir,206,4,17,14\r
+ LTEXT "Hash Size (MB):",IDC_STATIC,2,26,52,8\r
+ EDITTEXT IDC_HashSize,62,22,40,14,ES_AUTOHSCROLL\r
+ LTEXT "EGTB Path:",IDC_STATIC,2,44,39,8\r
+ EDITTEXT IDC_PathToEGTB,62,40,140,14,ES_AUTOHSCROLL\r
+ PUSHBUTTON "...",IDC_BrowseForEGTB,206,40,17,14\r
+ LTEXT "EGTB Size (MB):",IDC_STATIC,2,62,54,8\r
+ EDITTEXT IDC_SizeOfEGTB,62,58,40,14,ES_AUTOHSCROLL\r
+ CONTROL "Use Book:",IDC_UseBook,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,2,80,49,10\r
+ EDITTEXT IDC_BookFile,62,76,140,14,ES_AUTOHSCROLL\r
+ PUSHBUTTON "...",IDC_BrowseForBook,206,76,17,14\r
+ LTEXT "Max nr of CPUs:",IDC_STATIC,106,26,52,8\r
+ EDITTEXT IDC_Cores,162,22,40,14,ES_AUTOHSCROLL\r
+ CONTROL "First has Own Book",IDC_OwnBook1,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,2,94,100,10\r
+ CONTROL "Second has Own Book",IDC_OwnBook2,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,2,107,100,10\r
+ DEFPUSHBUTTON "OK",IDOK,118,106,50,14\r
+ PUSHBUTTON "Cancel",IDCANCEL,174,106,50,14\r
+END\r
+\r
+DLG_Null DIALOG DISCARDABLE 0, 0, 186, 50\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Null"\r
+FONT 8, "MS Sans Serif"\r
+BEGIN\r
+END\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// DESIGNINFO\r
+//\r
+\r
+#ifdef APSTUDIO_INVOKED\r
+GUIDELINES DESIGNINFO DISCARDABLE \r
+BEGIN\r
+ DLG_GameList, DIALOG\r
+ BEGIN\r
+ RIGHTMARGIN, 258\r
+ END\r
+\r
+ DLG_Colorize, DIALOG\r
+ BEGIN\r
+ BOTTOMMARGIN, 32\r
+ END\r
+\r
+ DLG_GeneralOptions, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 213\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 176\r
+ END\r
+\r
+ DLG_IcsOptions, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 295\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 248\r
+ END\r
+\r
+ DLG_BoardOptions, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 187\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 243\r
+ END\r
+\r
+ DLG_Fonts, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 259\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 219\r
+ END\r
+\r
+ DLG_NewGameFRC, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 169\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 40\r
+ END\r
+\r
+ DLG_GameListOptions, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 199\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 133\r
+ END\r
+\r
+ DLG_MoveHistory, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 218\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 123\r
+ END\r
+\r
+ DLG_EvalGraph, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 209\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 68\r
+ END\r
+\r
+ DLG_EngineOutput, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 259\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 160\r
+ END\r
+\r
+ DLG_EnginePlayOptions, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 201\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 122\r
+ END\r
+\r
+ DLG_OptionsUCI, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 221\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 117\r
+ END\r
+\r
+ DLG_Null, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 179\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 43\r
+ END\r
+END\r
+#endif // APSTUDIO_INVOKED\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Icon\r
+//\r
+\r
+// Icon with lowest ID value placed first to ensure application icon\r
+// remains consistent on all systems.\r
+IDI_WHITE_14 ICON DISCARDABLE "bitmaps/white_14.ico"\r
+ICON_BLACK ICON DISCARDABLE "bitmaps/icon_ob.ico"\r
+ICON_BOARD ICON DISCARDABLE "bitmaps/board.ico"\r
+ICON_WHITE ICON DISCARDABLE "bitmaps/icon_whi.ico"\r
+IDI_BLACK_14 ICON DISCARDABLE "bitmaps/black_14.ico"\r
+IDI_PONDER_14 ICON DISCARDABLE "bitmaps/ponder_14.ico"\r
+IDI_TRANS_14 ICON DISCARDABLE "bitmaps/trans_14.ico"\r
+IDI_CLOCK_14 ICON DISCARDABLE "bitmaps/clock_14.ico"\r
+IDI_UNKNOWN_14 ICON DISCARDABLE "bitmaps/unknown_14.ico"\r
+IDI_BALOON_14 ICON DISCARDABLE "bitmaps/baloon_14.ico"\r
+IDI_ANALYZE_14 ICON DISCARDABLE "bitmaps/analyze_14.ico"\r
+IDI_ANALYZE2_14 ICON DISCARDABLE "bitmaps/analyze2_14.ico"\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Menu\r
+//\r
+\r
+WINBOARD MENU DISCARDABLE \r
+BEGIN\r
+ POPUP "&File"\r
+ BEGIN\r
+ MENUITEM "New &Game\tCtrl-N", IDM_NewGame\r
+ MENUITEM "New Shuffle Game...", IDM_NewGameFRC\r
+ MENUITEM "New Variant...\tAlt+Ctrl+V", IDM_NewVariant\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "&Load Game...\tCtrl-O", IDM_LoadGame\r
+ MENUITEM "Load &Next Game\tAlt+PgDn", IDM_LoadNextGame\r
+ MENUITEM "Load &Previous Game\tAlt+PgUp", IDM_LoadPrevGame\r
+ MENUITEM "&Reload Same Game", IDM_ReloadGame\r
+ MENUITEM "&Save Game...\tCtrl-S", IDM_SaveGame\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "&Copy Game To Clipboard\tAlt+C", IDM_CopyGame\r
+ MENUITEM "Paste Game &From Clipboard\tAlt+V", IDM_PasteGame\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Copy Game List to Clipboard", IDM_CopyGameListToClipboard\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "L&oad Position...", IDM_LoadPosition\r
+ MENUITEM "Load N&ext Position\tAlt+Shift+PgDn", IDM_LoadNextPosition\r
+ MENUITEM "Load Pre&vious Position\tAlt+Shift+PgUp", \r
+ IDM_LoadPrevPosition\r
+ MENUITEM "Reload Sa&me Position", IDM_ReloadPosition\r
+ MENUITEM "S&ave Position...\tCtrl+Shift+S",IDM_SavePosition\r
+ MENUITEM "Save &Diagram...", IDM_SaveDiagram\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Cop&y Position To Clipboard\tAlt+Shift+C", \r
+ IDM_CopyPosition\r
+ MENUITEM "Pas&te Position From Clipboard\tAlt+Shift+V", \r
+ IDM_PasteAny\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "E&xit", IDM_Exit\r
+ END\r
+ POPUP "&Mode"\r
+ BEGIN\r
+ MENUITEM "Machine &White\tCtrl+W", IDM_MachineWhite\r
+ MENUITEM "Machine &Black\tCtrl+B", IDM_MachineBlack\r
+ MENUITEM "Two &Machines\tCtrl+T", IDM_TwoMachines\r
+ MENUITEM "Machine Bot&h", IDM_MachineBoth\r
+ MENUITEM "&Analysis Mode\tCtrl+A", IDM_AnalysisMode\r
+ MENUITEM "Analyze &File\tCtrl+F", IDM_AnalyzeFile\r
+ MENUITEM "&ICS Client", IDM_IcsClient\r
+ MENUITEM "Edit &Game\tCtrl+E", IDM_EditGame\r
+ MENUITEM "&Edit Position\tShift+Ctrl+E",IDM_EditPosition\r
+ MENUITEM "Trai&ning", IDM_Training, GRAYED\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Show Engine &Output\tAlt+Ctrl+O",IDM_ShowEngineOutput\r
+ MENUITEM "Show Evaluation Graph\tAlt+Ctrl+E",IDM_ShowEvalGraph\r
+ MENUITEM "Show Game &List\tAlt+Ctrl+G", IDM_ShowGameList\r
+ MENUITEM "Show Move History\tAlt+Ctrl+H",IDM_ShowMoveHistory\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Edit &Tags...", IDM_EditTags\r
+ MENUITEM "Edit &Comment...", IDM_EditComment\r
+ MENUITEM "Enter &Username...", IDM_TypeInName\r
+ MENUITEM "&Pause\tPause", IDM_Pause\r
+ END\r
+ POPUP "&Action"\r
+ BEGIN\r
+ MENUITEM "&Accept\tF3", IDM_Accept\r
+ MENUITEM "D&ecline\tF4", IDM_Decline\r
+ MENUITEM "Re&match\tF12", IDM_Rematch\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Call &Flag\tF5", IDM_CallFlag\r
+ MENUITEM "&Draw\tF6", IDM_Draw\r
+ MENUITEM "Ad&journ\tF7", IDM_Adjourn\r
+ MENUITEM "A&bort\tF8", IDM_Abort\r
+ MENUITEM "&Resign\tF9", IDM_Resign\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Stop &Observing\tF10", IDM_StopObserving\r
+ MENUITEM "Stop E&xamining\tF11", IDM_StopExamining\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Adjudicate to &White", IDM_UserAdjudication_White\r
+ MENUITEM "Adjudicate to &Black", IDM_UserAdjudication_Black\r
+ MENUITEM "Adjudicate &Draw", IDM_UserAdjudication_Draw\r
+ END\r
+ POPUP "&Step"\r
+ BEGIN\r
+ MENUITEM "T&ype In Move...\tAlt+I", IDM_TypeInMove\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "&Backward\tAlt+Left", IDM_Backward\r
+ MENUITEM "&Forward\tAlt+Right", IDM_Forward\r
+ MENUITEM "Back to &Start\tAlt+Home", IDM_ToStart\r
+ MENUITEM "Forward to &End\tAlt+End", IDM_ToEnd\r
+ MENUITEM "Re&vert", IDM_Revert\r
+ MENUITEM "&Truncate Game", IDM_TruncateGame\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "&Move Now\tCtrl+M", IDM_MoveNow\r
+ MENUITEM "&Retract Move\tCtrl+X", IDM_RetractMove\r
+ END\r
+ POPUP "&Options"\r
+ BEGIN\r
+ MENUITEM "Flip &View\tF2", IDM_FlipView\r
+ MENUITEM "Swap &Clocks", IDM_FlipClock\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "&General...", IDM_GeneralOptions\r
+ MENUITEM "&Board...", IDM_BoardOptions\r
+ MENUITEM "Adjudications...\tAlt+Ctrl+J",IDM_EnginePlayOptions\r
+ MENUITEM "Engine Settings...\tAlt+Ctrl+U",IDM_OptionsUCI\r
+ MENUITEM "&ICS...", IDM_IcsOptions, GRAYED\r
+ MENUITEM "&Fonts...", IDM_Fonts\r
+ MENUITEM "Soun&ds...", IDM_Sounds\r
+ MENUITEM "Game List...\tAlt+Ctrl+G", IDM_GameListOptions\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Comm&unications...", IDM_CommPort\r
+ MENUITEM "&Load Game...\tAlt+Ctrl+L", IDM_LoadOptions\r
+ MENUITEM "&Save Game...\tAlt+Ctrl+S", IDM_SaveOptions\r
+ MENUITEM "&Time Control...\tAlt+Ctrl+T",IDM_TimeControl\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Save Settings &Now", IDM_SaveSettings\r
+ MENUITEM "Save Settings on E&xit", IDM_SaveSettingsOnExit\r
+ END\r
+ POPUP "&JAWS"\r
+ BEGIN\r
+ MENUITEM "Say Clock &Time\tAlt+T", IDM_SayClockTime\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Say Last &Move\tAlt+M", IDM_SayMachineMove\r
+ MENUITEM "Say W&ho's Turn\tAlt+X", IDM_SayWhosTurn\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Say Complete &Position\tAlt+P",IDM_SayAllBoard\r
+ MENUITEM "Say &White Pieces\tAlt+W", IDM_SayWhitePieces\r
+ MENUITEM "Say &Black Pieces\tAlt+B", IDM_SayBlackPieces\r
+ MENUITEM "Say Board &Rank\tAlt+R", IDM_ReadRow\r
+ MENUITEM "Say Board &File\tAlt+F", IDM_ReadColumn\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Say &Upper Diagnols\tAlt+U", IDM_SayUpperDiagnols\r
+ MENUITEM "Say &Lower Diagnols\tAlt+L", IDM_SayLowerDiagnols\r
+ MENUITEM "Say K&night Moves\tAlt+N", IDM_SayKnightMoves\r
+ MENUITEM "Say Current &Square\tAlt+S", IDM_SayCurrentPos\r
+ MENUITEM "Say &Attacks\tAlt+A", IDM_PossibleAttackMove\r
+ MENUITEM "Say Attacke&d\tAlt+D", IDM_PossibleAttacked\r
+ END\r
+ POPUP "&Help"\r
+ BEGIN\r
+ MENUITEM "Help &Contents\tF1", IDM_HELPCONTENTS\r
+ MENUITEM "Help &Index", IDM_HELPSEARCH\r
+ MENUITEM "How to &Use Help", IDM_HELPHELP\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "&Hint...", IDM_Hint\r
+ MENUITEM "&Book...", IDM_Book\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "&About WinBoard", IDM_ABOUT\r
+ END\r
+END\r
+\r
+PIECEMENU MENU DISCARDABLE \r
+BEGIN\r
+ POPUP ""\r
+ BEGIN\r
+ MENUITEM "White", EP_White\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Promote", EP_Promote\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Pawn", EP_WhitePawn\r
+ MENUITEM "Knight", EP_WhiteKnight\r
+ MENUITEM "Bishop", EP_WhiteBishop\r
+ MENUITEM "Rook", EP_WhiteRook\r
+ MENUITEM "Queen", EP_WhiteQueen\r
+ MENUITEM "King", EP_WhiteKing\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Archbishop", EP_WhiteCardinal\r
+ MENUITEM "Chancellor", EP_WhiteMarshall\r
+ MENUITEM "Elephant", EP_WhiteAlfil\r
+ MENUITEM "Cannon", EP_WhiteCannon\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Empty Square", EP_EmptySquare\r
+ MENUITEM "Black", EP_Black, MENUBARBREAK\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Demote", EP_Demote\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Pawn", EP_BlackPawn\r
+ MENUITEM "Knight", EP_BlackKnight\r
+ MENUITEM "Bishop", EP_BlackBishop\r
+ MENUITEM "Rook", EP_BlackRook\r
+ MENUITEM "Queen", EP_BlackQueen\r
+ MENUITEM "King", EP_BlackKing\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Archbishop", EP_BlackCardinal\r
+ MENUITEM "Chancellor", EP_BlackMarshall\r
+ MENUITEM "Elephant", EP_BlackAlfil\r
+ MENUITEM "Cannon", EP_BlackCannon\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Clear Board ", EP_ClearBoard\r
+ END\r
+END\r
+\r
+SHOGIPIECEMENU MENU DISCARDABLE \r
+BEGIN\r
+ POPUP ""\r
+ BEGIN\r
+ MENUITEM "White", EP_White\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Pawn", EP_WhitePawn\r
+ MENUITEM "Knight", EP_WhiteKnight\r
+ MENUITEM "Bishop", EP_WhiteBishop\r
+ MENUITEM "Rook", EP_WhiteRook\r
+ MENUITEM "Lance", EP_WhiteQueen\r
+ MENUITEM "Silver", EP_WhiteFerz\r
+ MENUITEM "Gold", EP_WhiteWazir\r
+ MENUITEM "King", EP_WhiteKing\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Promote", EP_Promote\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Empty Square", EP_EmptySquare\r
+ MENUITEM "Black", EP_Black, MENUBARBREAK\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Pawn", EP_BlackPawn\r
+ MENUITEM "Knight", EP_BlackKnight\r
+ MENUITEM "Bishop", EP_BlackBishop\r
+ MENUITEM "Rook", EP_BlackRook\r
+ MENUITEM "Lance", EP_BlackQueen\r
+ MENUITEM "Silver", EP_BlackFerz\r
+ MENUITEM "Gold", EP_BlackWazir\r
+ MENUITEM "King", EP_BlackKing\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Demote", EP_Demote\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Clear Board ", EP_ClearBoard\r
+ END\r
+END\r
+\r
+WHITEPIECEMENU MENU DISCARDABLE \r
+BEGIN\r
+ POPUP ""\r
+ BEGIN\r
+ MENUITEM "White", EP_White\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Pawn", EP_WhitePawn\r
+ MENUITEM "Knight", EP_WhiteKnight\r
+ MENUITEM "Bishop", EP_WhiteBishop\r
+ MENUITEM "Rook", EP_WhiteRook\r
+ MENUITEM "Queen", EP_WhiteQueen\r
+ MENUITEM "King", EP_WhiteKing\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Empty Square", EP_EmptySquare\r
+ MENUITEM "Clear Board", EP_ClearBoard\r
+ END\r
+END\r
+\r
+BLACKPIECEMENU MENU DISCARDABLE \r
+BEGIN\r
+ POPUP ""\r
+ BEGIN\r
+ MENUITEM "Black", EP_Black\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Pawn", EP_BlackPawn\r
+ MENUITEM "Knight", EP_BlackKnight\r
+ MENUITEM "Bishop", EP_BlackBishop\r
+ MENUITEM "Rook", EP_BlackRook\r
+ MENUITEM "Queen", EP_BlackQueen\r
+ MENUITEM "King", EP_BlackKing\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Empty Square", EP_EmptySquare\r
+ MENUITEM "Clear Board", EP_ClearBoard\r
+ END\r
+END\r
+\r
+DROPPIECEMENU MENU DISCARDABLE \r
+BEGIN\r
+ POPUP ""\r
+ BEGIN\r
+ MENUITEM "Drop", 0, INACTIVE\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Pawn", DP_Pawn\r
+ MENUITEM "Knight", DP_Knight\r
+ MENUITEM "Bishop", DP_Bishop\r
+ MENUITEM "Rook", DP_Rook\r
+ MENUITEM "Queen", DP_Queen\r
+ END\r
+END\r
+\r
+TEXTMENU MENU DISCARDABLE \r
+BEGIN\r
+ POPUP ""\r
+ BEGIN\r
+ MENUITEM "Cop&y and Paste", IDM_QuickPaste\r
+ MENUITEM "&Copy", IDM_Copy\r
+ MENUITEM "&Paste", IDM_Paste\r
+ END\r
+END\r
+\r
+INPUTMENU MENU DISCARDABLE \r
+BEGIN\r
+ POPUP ""\r
+ BEGIN\r
+ MENUITEM "&Undo", IDM_Undo\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Cu&t", IDM_Cut\r
+ MENUITEM "&Copy", IDM_Copy\r
+ MENUITEM "&Paste", IDM_Paste\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "Select &All", IDM_SelectAll\r
+ END\r
+END\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Accelerator\r
+//\r
+\r
+WINBOARD ACCELERATORS MOVEABLE PURE \r
+BEGIN\r
+ "1", IDM_DirectCommand1, VIRTKEY, ALT, NOINVERT\r
+ "2", IDM_DirectCommand2, VIRTKEY, ALT, NOINVERT\r
+ "B", IDM_Book, VIRTKEY, CONTROL, NOINVERT\r
+ "C", IDM_CopyGame, VIRTKEY, ALT, NOINVERT\r
+ "C", IDM_CopyPosition, VIRTKEY, SHIFT, ALT, NOINVERT\r
+ "I", IDM_TypeInMove, VIRTKEY, ALT, NOINVERT\r
+ "N", IDM_NewGame, VIRTKEY, CONTROL, NOINVERT\r
+ "O", IDM_LoadGame, VIRTKEY, CONTROL, NOINVERT\r
+ "O", IDM_LoadPosition, VIRTKEY, SHIFT, CONTROL, NOINVERT\r
+ "S", IDM_SaveGame, VIRTKEY, CONTROL, NOINVERT\r
+ "S", IDM_SavePosition, VIRTKEY, SHIFT, CONTROL, NOINVERT\r
+ "V", IDM_PasteGame, VIRTKEY, ALT, NOINVERT\r
+ "V", IDM_PastePosition, VIRTKEY, SHIFT, ALT, NOINVERT\r
+ "A", IDM_PossibleAttackMove, VIRTKEY, ALT, NOINVERT\r
+ "D", IDM_PossibleAttacked, VIRTKEY, ALT, NOINVERT\r
+ "P", IDM_SayAllBoard, VIRTKEY, ALT, NOINVERT\r
+ "L", IDM_SayLowerDiagnols, VIRTKEY, ALT, NOINVERT\r
+ "N", IDM_SayKnightMoves, VIRTKEY, ALT, NOINVERT\r
+ "S", IDM_SayCurrentPos, VIRTKEY, ALT, NOINVERT\r
+ "R", IDM_ReadRow, VIRTKEY, ALT, NOINVERT\r
+ "B", IDM_SayBlackPieces, VIRTKEY, ALT, NOINVERT\r
+ "W", IDM_SayWhitePieces, VIRTKEY, ALT, NOINVERT\r
+ "T", IDM_SayClockTime, VIRTKEY, ALT, NOINVERT\r
+ "U", IDM_SayUpperDiagnols, VIRTKEY, ALT, NOINVERT\r
+ "X", IDM_SayWhosTurn, VIRTKEY, ALT, NOINVERT\r
+ "M", IDM_SayMachineMove, VIRTKEY, ALT, NOINVERT\r
+ "F", IDM_ReadColumn, VIRTKEY, ALT, NOINVERT\r
+ "O", IDM_ShowEngineOutput, VIRTKEY, ALT, CONTROL, NOINVERT\r
+ "H", IDM_ShowMoveHistory, VIRTKEY, ALT, CONTROL, NOINVERT\r
+ "E", IDM_ShowEvalGraph, VIRTKEY, ALT, CONTROL, NOINVERT\r
+ "G", IDM_ShowGameList, VIRTKEY, ALT, CONTROL, NOINVERT\r
+ "B", IDM_BoardOptions, VIRTKEY, ALT, CONTROL, NOINVERT\r
+ "T", IDM_TimeControl, VIRTKEY, ALT, CONTROL, NOINVERT\r
+ "L", IDM_LoadOptions, VIRTKEY, ALT, CONTROL, NOINVERT\r
+ "S", IDM_SaveOptions, VIRTKEY, ALT, CONTROL, NOINVERT\r
+ "J", IDM_EnginePlayOptions, VIRTKEY, ALT, CONTROL, NOINVERT\r
+ "U", IDM_OptionsUCI, VIRTKEY, ALT, CONTROL, NOINVERT\r
+ "V", IDM_NewVariant, VIRTKEY, ALT, CONTROL, NOINVERT\r
+ "P", OPT_PonderNextMove, VIRTKEY, SHIFT, CONTROL, NOINVERT\r
+ "X", OPT_SaveExtPGN, VIRTKEY, SHIFT, CONTROL, NOINVERT\r
+ "L", OPT_TestLegality, VIRTKEY, SHIFT, CONTROL, NOINVERT\r
+ "A", OPT_AnimateMoving, VIRTKEY, SHIFT, CONTROL, NOINVERT\r
+ "Q", OPT_AlwaysQueen, VIRTKEY, SHIFT, CONTROL, NOINVERT\r
+ "F", OPT_AutoFlag, VIRTKEY, SHIFT, CONTROL, NOINVERT\r
+ "H", OPT_HideThinkFromHuman, VIRTKEY, SHIFT, CONTROL, NOINVERT\r
+ "I", OPT_ExtraInfoInMoveHistory, VIRTKEY, SHIFT, CONTROL, NOINVERT\r
+ "W", IDM_MachineWhite, VIRTKEY, CONTROL, NOINVERT\r
+ "B", IDM_MachineBlack, VIRTKEY, CONTROL, NOINVERT\r
+ "T", IDM_TwoMachines, VIRTKEY, CONTROL, NOINVERT\r
+ "E", IDM_EditGame, VIRTKEY, CONTROL, NOINVERT\r
+ "E", IDM_EditPosition, VIRTKEY, SHIFT, CONTROL, NOINVERT\r
+ "F", IDM_AnalyzeFile, VIRTKEY, CONTROL, NOINVERT\r
+ "M", IDM_MoveNow, VIRTKEY, CONTROL, NOINVERT\r
+ "X", IDM_RetractMove, VIRTKEY, CONTROL, NOINVERT\r
+ VK_DOWN, IDM_ToEnd, VIRTKEY, ALT, NOINVERT\r
+ VK_END, IDM_ToEnd, VIRTKEY, ALT, NOINVERT\r
+ VK_F1, IDM_HELPCONTENTS, VIRTKEY, NOINVERT\r
+ VK_F10, IDM_StopObserving, VIRTKEY, NOINVERT\r
+ VK_F11, IDM_StopExamining, VIRTKEY, NOINVERT\r
+ VK_F12, IDM_Rematch, VIRTKEY, NOINVERT\r
+ VK_F12, IDM_Debug, VIRTKEY, CONTROL, ALT, NOINVERT\r
+ VK_F2, IDM_FlipView, VIRTKEY, NOINVERT\r
+ VK_F3, IDM_Accept, VIRTKEY, NOINVERT\r
+ VK_F4, IDM_Decline, VIRTKEY, NOINVERT\r
+ VK_F4, IDM_Minimize, VIRTKEY, CONTROL, NOINVERT\r
+ VK_F5, IDM_CallFlag, VIRTKEY, NOINVERT\r
+ VK_F6, IDM_Draw, VIRTKEY, NOINVERT\r
+ VK_F7, IDM_Adjourn, VIRTKEY, NOINVERT\r
+ VK_F8, IDM_Abort, VIRTKEY, NOINVERT\r
+ VK_F9, IDM_Resign, VIRTKEY, NOINVERT\r
+ VK_HOME, IDM_ToStart, VIRTKEY, ALT, NOINVERT\r
+ VK_INSERT, IDM_MoveNow, VIRTKEY, ALT, NOINVERT\r
+ VK_NEXT, IDM_LoadNextGame, VIRTKEY, ALT, NOINVERT\r
+ VK_NEXT, IDM_LoadNextPosition, VIRTKEY, SHIFT, ALT, NOINVERT\r
+ VK_PAUSE, IDM_Pause, VIRTKEY, NOINVERT\r
+ VK_PAUSE, IDM_Pause, VIRTKEY, ALT, NOINVERT\r
+ VK_PRIOR, IDM_LoadPrevGame, VIRTKEY, ALT, NOINVERT\r
+ VK_PRIOR, IDM_LoadPrevPosition, VIRTKEY, SHIFT, ALT, NOINVERT\r
+ VK_LEFT, IDM_Backward, VIRTKEY, ALT, NOINVERT\r
+ VK_RIGHT, IDM_Forward, VIRTKEY, ALT, NOINVERT\r
+END\r
+\r
+NO_ALT ACCELERATORS MOVEABLE PURE \r
+BEGIN\r
+ VK_DELETE, IDM_RetractMove, VIRTKEY, NOINVERT\r
+ VK_END, IDM_TruncateGame, VIRTKEY, NOINVERT\r
+ VK_HOME, IDM_Revert, VIRTKEY, NOINVERT\r
+ VK_INSERT, IDM_MoveNow, VIRTKEY, NOINVERT\r
+ VK_NEXT, IDM_LoadNextGame, VIRTKEY, NOINVERT\r
+ VK_NEXT, IDM_LoadNextPosition, VIRTKEY, SHIFT, NOINVERT\r
+ VK_PRIOR, IDM_LoadPrevGame, VIRTKEY, NOINVERT\r
+ VK_PRIOR, IDM_LoadPrevPosition, VIRTKEY, SHIFT, NOINVERT\r
+END\r
+\r
+NO_ICS ACCELERATORS DISCARDABLE \r
+BEGIN\r
+ "A", IDM_AnalysisMode, VIRTKEY, CONTROL, NOINVERT\r
+ "V", IDM_PasteAny, VIRTKEY, CONTROL, NOINVERT\r
+END\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Bitmap\r
+//\r
+\r
+P21O BITMAP MOVEABLE PURE "bitmaps/p21o.bmp"\r
+N21O BITMAP MOVEABLE PURE "bitmaps/n21o.bmp"\r
+B21O BITMAP MOVEABLE PURE "bitmaps/b21o.bmp"\r
+R21O BITMAP MOVEABLE PURE "bitmaps/r21o.bmp"\r
+K21O BITMAP MOVEABLE PURE "bitmaps/k21o.bmp"\r
+Q21O BITMAP MOVEABLE PURE "bitmaps/q21o.bmp"\r
+P21S BITMAP MOVEABLE PURE "bitmaps/p21s.bmp"\r
+N21S BITMAP MOVEABLE PURE "bitmaps/n21s.bmp"\r
+B21S BITMAP MOVEABLE PURE "bitmaps/b21s.bmp"\r
+R21S BITMAP MOVEABLE PURE "bitmaps/r21s.bmp"\r
+Q21S BITMAP MOVEABLE PURE "bitmaps/q21s.bmp"\r
+K21S BITMAP MOVEABLE PURE "bitmaps/k21s.bmp"\r
+P21W BITMAP MOVEABLE PURE "bitmaps/p21w.bmp"\r
+N21W BITMAP MOVEABLE PURE "bitmaps/n21w.bmp"\r
+B21W BITMAP MOVEABLE PURE "bitmaps/b21w.bmp"\r
+R21W BITMAP MOVEABLE PURE "bitmaps/r21w.bmp"\r
+Q21W BITMAP MOVEABLE PURE "bitmaps/q21w.bmp"\r
+K21W BITMAP MOVEABLE PURE "bitmaps/k21w.bmp"\r
+P25O BITMAP MOVEABLE PURE "bitmaps/p25o.bmp"\r
+N25O BITMAP MOVEABLE PURE "bitmaps/n25o.bmp"\r
+B25O BITMAP MOVEABLE PURE "bitmaps/b25o.bmp"\r
+R25O BITMAP MOVEABLE PURE "bitmaps/r25o.bmp"\r
+Q25O BITMAP MOVEABLE PURE "bitmaps/q25o.bmp"\r
+K25O BITMAP MOVEABLE PURE "bitmaps/k25o.bmp"\r
+P25S BITMAP MOVEABLE PURE "bitmaps/p25s.bmp"\r
+N25S BITMAP MOVEABLE PURE "bitmaps/n25s.bmp"\r
+B25S BITMAP MOVEABLE PURE "bitmaps/b25s.bmp"\r
+R25S BITMAP MOVEABLE PURE "bitmaps/r25s.bmp"\r
+Q25S BITMAP MOVEABLE PURE "bitmaps/q25s.bmp"\r
+K25S BITMAP MOVEABLE PURE "bitmaps/k25s.bmp"\r
+P25W BITMAP MOVEABLE PURE "bitmaps/p25w.bmp"\r
+N25W BITMAP MOVEABLE PURE "bitmaps/n25w.bmp"\r
+B25W BITMAP MOVEABLE PURE "bitmaps/b25w.bmp"\r
+R25W BITMAP MOVEABLE PURE "bitmaps/r25w.bmp"\r
+Q25W BITMAP MOVEABLE PURE "bitmaps/q25w.bmp"\r
+K25W BITMAP MOVEABLE PURE "bitmaps/k25w.bmp"\r
+P29O BITMAP MOVEABLE PURE "bitmaps/p29o.bmp"\r
+N29O BITMAP MOVEABLE PURE "bitmaps/n29o.bmp"\r
+B29O BITMAP MOVEABLE PURE "bitmaps/b29o.bmp"\r
+R29O BITMAP MOVEABLE PURE "bitmaps/r29o.bmp"\r
+Q29O BITMAP MOVEABLE PURE "bitmaps/q29o.bmp"\r
+K29O BITMAP MOVEABLE PURE "bitmaps/k29o.bmp"\r
+P29S BITMAP MOVEABLE PURE "bitmaps/p29s.bmp"\r
+N29S BITMAP MOVEABLE PURE "bitmaps/n29s.bmp"\r
+B29S BITMAP MOVEABLE PURE "bitmaps/b29s.bmp"\r
+R29S BITMAP MOVEABLE PURE "bitmaps/r29s.bmp"\r
+Q29S BITMAP MOVEABLE PURE "bitmaps/q29s.bmp"\r
+K29S BITMAP MOVEABLE PURE "bitmaps/k29s.bmp"\r
+P29W BITMAP MOVEABLE PURE "bitmaps/p29w.bmp"\r
+N29W BITMAP MOVEABLE PURE "bitmaps/n29w.bmp"\r
+B29W BITMAP MOVEABLE PURE "bitmaps/b29w.bmp"\r
+R29W BITMAP MOVEABLE PURE "bitmaps/r29w.bmp"\r
+Q29W BITMAP MOVEABLE PURE "bitmaps/q29w.bmp"\r
+K29W BITMAP MOVEABLE PURE "bitmaps/k29w.bmp"\r
+P33O BITMAP MOVEABLE PURE "bitmaps/p33o.bmp"\r
+N33O BITMAP MOVEABLE PURE "bitmaps/n33o.bmp"\r
+B33O BITMAP MOVEABLE PURE "bitmaps/b33o.bmp"\r
+R33O BITMAP MOVEABLE PURE "bitmaps/r33o.bmp"\r
+Q33O BITMAP MOVEABLE PURE "bitmaps/q33o.bmp"\r
+K33O BITMAP MOVEABLE PURE "bitmaps/k33o.bmp"\r
+P33S BITMAP MOVEABLE PURE "bitmaps/p33s.bmp"\r
+N33S BITMAP MOVEABLE PURE "bitmaps/n33s.bmp"\r
+B33S BITMAP MOVEABLE PURE "bitmaps/b33s.bmp"\r
+R33S BITMAP MOVEABLE PURE "bitmaps/r33s.bmp"\r
+Q33S BITMAP MOVEABLE PURE "bitmaps/q33s.bmp"\r
+K33S BITMAP MOVEABLE PURE "bitmaps/k33s.bmp"\r
+P33W BITMAP MOVEABLE PURE "bitmaps/p33w.bmp"\r
+N33W BITMAP MOVEABLE PURE "bitmaps/n33w.bmp"\r
+B33W BITMAP MOVEABLE PURE "bitmaps/b33w.bmp"\r
+R33W BITMAP MOVEABLE PURE "bitmaps/r33w.bmp"\r
+Q33W BITMAP MOVEABLE PURE "bitmaps/q33w.bmp"\r
+K33W BITMAP MOVEABLE PURE "bitmaps/k33w.bmp"\r
+P37O BITMAP MOVEABLE PURE "bitmaps/p37o.bmp"\r
+N37O BITMAP MOVEABLE PURE "bitmaps/n37o.bmp"\r
+B37O BITMAP MOVEABLE PURE "bitmaps/b37o.bmp"\r
+R37O BITMAP MOVEABLE PURE "bitmaps/r37o.bmp"\r
+Q37O BITMAP MOVEABLE PURE "bitmaps/q37o.bmp"\r
+K37O BITMAP MOVEABLE PURE "bitmaps/k37o.bmp"\r
+P37S BITMAP MOVEABLE PURE "bitmaps/p37s.bmp"\r
+N37S BITMAP MOVEABLE PURE "bitmaps/n37s.bmp"\r
+B37S BITMAP MOVEABLE PURE "bitmaps/b37s.bmp"\r
+R37S BITMAP MOVEABLE PURE "bitmaps/r37s.bmp"\r
+Q37S BITMAP MOVEABLE PURE "bitmaps/q37s.bmp"\r
+K37S BITMAP MOVEABLE PURE "bitmaps/k37s.bmp"\r
+P37W BITMAP MOVEABLE PURE "bitmaps/p37w.bmp"\r
+N37W BITMAP MOVEABLE PURE "bitmaps/n37w.bmp"\r
+B37W BITMAP MOVEABLE PURE "bitmaps/b37w.bmp"\r
+R37W BITMAP MOVEABLE PURE "bitmaps/r37w.bmp"\r
+Q37W BITMAP MOVEABLE PURE "bitmaps/q37w.bmp"\r
+K37W BITMAP MOVEABLE PURE "bitmaps/k37w.bmp"\r
+P40O BITMAP MOVEABLE PURE "bitmaps/p40o.bmp"\r
+N40O BITMAP MOVEABLE PURE "bitmaps/n40o.bmp"\r
+B40O BITMAP MOVEABLE PURE "bitmaps/b40o.bmp"\r
+R40O BITMAP MOVEABLE PURE "bitmaps/r40o.bmp"\r
+Q40O BITMAP MOVEABLE PURE "bitmaps/q40o.bmp"\r
+K40O BITMAP MOVEABLE PURE "bitmaps/k40o.bmp"\r
+P40S BITMAP MOVEABLE PURE "bitmaps/p40s.bmp"\r
+N40S BITMAP MOVEABLE PURE "bitmaps/n40s.bmp"\r
+B40S BITMAP MOVEABLE PURE "bitmaps/b40s.bmp"\r
+R40S BITMAP MOVEABLE PURE "bitmaps/r40s.bmp"\r
+Q40S BITMAP MOVEABLE PURE "bitmaps/q40s.bmp"\r
+K40S BITMAP MOVEABLE PURE "bitmaps/k40s.bmp"\r
+P40W BITMAP MOVEABLE PURE "bitmaps/p40w.bmp"\r
+N40W BITMAP MOVEABLE PURE "bitmaps/n40w.bmp"\r
+B40W BITMAP MOVEABLE PURE "bitmaps/b40w.bmp"\r
+R40W BITMAP MOVEABLE PURE "bitmaps/r40w.bmp"\r
+Q40W BITMAP MOVEABLE PURE "bitmaps/q40w.bmp"\r
+K40W BITMAP MOVEABLE PURE "bitmaps/k40w.bmp"\r
+P45O BITMAP MOVEABLE PURE "bitmaps/p45o.bmp"\r
+N45O BITMAP MOVEABLE PURE "bitmaps/n45o.bmp"\r
+B45O BITMAP MOVEABLE PURE "bitmaps/b45o.bmp"\r
+R45O BITMAP MOVEABLE PURE "bitmaps/r45o.bmp"\r
+Q45O BITMAP MOVEABLE PURE "bitmaps/q45o.bmp"\r
+K45O BITMAP MOVEABLE PURE "bitmaps/k45o.bmp"\r
+P45S BITMAP MOVEABLE PURE "bitmaps/p45s.bmp"\r
+N45S BITMAP MOVEABLE PURE "bitmaps/n45s.bmp"\r
+B45S BITMAP MOVEABLE PURE "bitmaps/b45s.bmp"\r
+R45S BITMAP MOVEABLE PURE "bitmaps/r45s.bmp"\r
+Q45S BITMAP MOVEABLE PURE "bitmaps/q45s.bmp"\r
+K45S BITMAP MOVEABLE PURE "bitmaps/k45s.bmp"\r
+P45W BITMAP MOVEABLE PURE "bitmaps/p45w.bmp"\r
+N45W BITMAP MOVEABLE PURE "bitmaps/n45w.bmp"\r
+B45W BITMAP MOVEABLE PURE "bitmaps/b45w.bmp"\r
+R45W BITMAP MOVEABLE PURE "bitmaps/r45w.bmp"\r
+Q45W BITMAP MOVEABLE PURE "bitmaps/q45w.bmp"\r
+K45W BITMAP MOVEABLE PURE "bitmaps/k45w.bmp"\r
+P49O BITMAP MOVEABLE PURE "bitmaps/p49o.bmp"\r
+N49O BITMAP MOVEABLE PURE "bitmaps/n49o.bmp"\r
+B49O BITMAP MOVEABLE PURE "bitmaps/b49o.bmp"\r
+R49O BITMAP MOVEABLE PURE "bitmaps/r49o.bmp"\r
+Q49O BITMAP MOVEABLE PURE "bitmaps/q49o.bmp"\r
+K49O BITMAP MOVEABLE PURE "bitmaps/k49o.bmp"\r
+P49S BITMAP MOVEABLE PURE "bitmaps/p49s.bmp"\r
+N49S BITMAP MOVEABLE PURE "bitmaps/n49s.bmp"\r
+B49S BITMAP MOVEABLE PURE "bitmaps/b49s.bmp"\r
+R49S BITMAP MOVEABLE PURE "bitmaps/r49s.bmp"\r
+Q49S BITMAP MOVEABLE PURE "bitmaps/q49s.bmp"\r
+K49S BITMAP MOVEABLE PURE "bitmaps/k49s.bmp"\r
+P49W BITMAP MOVEABLE PURE "bitmaps/p49w.bmp"\r
+N49W BITMAP MOVEABLE PURE "bitmaps/n49w.bmp"\r
+B49W BITMAP MOVEABLE PURE "bitmaps/b49w.bmp"\r
+R49W BITMAP MOVEABLE PURE "bitmaps/r49w.bmp"\r
+Q49W BITMAP MOVEABLE PURE "bitmaps/q49w.bmp"\r
+K49W BITMAP MOVEABLE PURE "bitmaps/k49w.bmp"\r
+P54O BITMAP MOVEABLE PURE "bitmaps/p54o.bmp"\r
+N54O BITMAP MOVEABLE PURE "bitmaps/n54o.bmp"\r
+B54O BITMAP MOVEABLE PURE "bitmaps/b54o.bmp"\r
+R54O BITMAP MOVEABLE PURE "bitmaps/r54o.bmp"\r
+Q54O BITMAP MOVEABLE PURE "bitmaps/q54o.bmp"\r
+K54O BITMAP MOVEABLE PURE "bitmaps/k54o.bmp"\r
+P54S BITMAP MOVEABLE PURE "bitmaps/p54s.bmp"\r
+N54S BITMAP MOVEABLE PURE "bitmaps/n54s.bmp"\r
+B54S BITMAP MOVEABLE PURE "bitmaps/b54s.bmp"\r
+R54S BITMAP MOVEABLE PURE "bitmaps/r54s.bmp"\r
+Q54S BITMAP MOVEABLE PURE "bitmaps/q54s.bmp"\r
+K54S BITMAP MOVEABLE PURE "bitmaps/k54s.bmp"\r
+P54W BITMAP MOVEABLE PURE "bitmaps/p54w.bmp"\r
+N54W BITMAP MOVEABLE PURE "bitmaps/n54w.bmp"\r
+B54W BITMAP MOVEABLE PURE "bitmaps/b54w.bmp"\r
+R54W BITMAP MOVEABLE PURE "bitmaps/r54w.bmp"\r
+Q54W BITMAP MOVEABLE PURE "bitmaps/q54w.bmp"\r
+K54W BITMAP MOVEABLE PURE "bitmaps/k54w.bmp"\r
+P58O BITMAP MOVEABLE PURE "bitmaps/p58o.bmp"\r
+N58O BITMAP MOVEABLE PURE "bitmaps/n58o.bmp"\r
+B58O BITMAP MOVEABLE PURE "bitmaps/b58o.bmp"\r
+R58O BITMAP MOVEABLE PURE "bitmaps/r58o.bmp"\r
+Q58O BITMAP MOVEABLE PURE "bitmaps/q58o.bmp"\r
+K58O BITMAP MOVEABLE PURE "bitmaps/k58o.bmp"\r
+P58S BITMAP MOVEABLE PURE "bitmaps/p58s.bmp"\r
+N58S BITMAP MOVEABLE PURE "bitmaps/n58s.bmp"\r
+B58S BITMAP MOVEABLE PURE "bitmaps/b58s.bmp"\r
+R58S BITMAP MOVEABLE PURE "bitmaps/r58s.bmp"\r
+Q58S BITMAP MOVEABLE PURE "bitmaps/q58s.bmp"\r
+K58S BITMAP MOVEABLE PURE "bitmaps/k58s.bmp"\r
+P58W BITMAP MOVEABLE PURE "bitmaps/p58w.bmp"\r
+N58W BITMAP MOVEABLE PURE "bitmaps/n58w.bmp"\r
+B58W BITMAP MOVEABLE PURE "bitmaps/b58w.bmp"\r
+R58W BITMAP MOVEABLE PURE "bitmaps/r58w.bmp"\r
+Q58W BITMAP MOVEABLE PURE "bitmaps/q58w.bmp"\r
+K58W BITMAP MOVEABLE PURE "bitmaps/k58w.bmp"\r
+P64O BITMAP MOVEABLE PURE "bitmaps/p64o.bmp"\r
+N64O BITMAP MOVEABLE PURE "bitmaps/n64o.bmp"\r
+B64O BITMAP MOVEABLE PURE "bitmaps/b64o.bmp"\r
+R64O BITMAP MOVEABLE PURE "bitmaps/r64o.bmp"\r
+Q64O BITMAP MOVEABLE PURE "bitmaps/q64o.bmp"\r
+K64O BITMAP MOVEABLE PURE "bitmaps/k64o.bmp"\r
+P64S BITMAP MOVEABLE PURE "bitmaps/p64s.bmp"\r
+N64S BITMAP MOVEABLE PURE "bitmaps/n64s.bmp"\r
+B64S BITMAP MOVEABLE PURE "bitmaps/b64s.bmp"\r
+R64S BITMAP MOVEABLE PURE "bitmaps/r64s.bmp"\r
+Q64S BITMAP MOVEABLE PURE "bitmaps/q64s.bmp"\r
+K64S BITMAP MOVEABLE PURE "bitmaps/k64s.bmp"\r
+P64W BITMAP MOVEABLE PURE "bitmaps/p64w.bmp"\r
+N64W BITMAP MOVEABLE PURE "bitmaps/n64w.bmp"\r
+B64W BITMAP MOVEABLE PURE "bitmaps/b64w.bmp"\r
+R64W BITMAP MOVEABLE PURE "bitmaps/r64w.bmp"\r
+Q64W BITMAP MOVEABLE PURE "bitmaps/q64w.bmp"\r
+K64W BITMAP MOVEABLE PURE "bitmaps/k64w.bmp"\r
+P72O BITMAP MOVEABLE PURE "bitmaps/p72o.bmp"\r
+N72O BITMAP MOVEABLE PURE "bitmaps/n72o.bmp"\r
+B72O BITMAP MOVEABLE PURE "bitmaps/b72o.bmp"\r
+R72O BITMAP MOVEABLE PURE "bitmaps/r72o.bmp"\r
+Q72O BITMAP MOVEABLE PURE "bitmaps/q72o.bmp"\r
+K72O BITMAP MOVEABLE PURE "bitmaps/k72o.bmp"\r
+P72S BITMAP MOVEABLE PURE "bitmaps/p72s.bmp"\r
+N72S BITMAP MOVEABLE PURE "bitmaps/n72s.bmp"\r
+B72S BITMAP MOVEABLE PURE "bitmaps/b72s.bmp"\r
+R72S BITMAP MOVEABLE PURE "bitmaps/r72s.bmp"\r
+Q72S BITMAP MOVEABLE PURE "bitmaps/q72s.bmp"\r
+K72S BITMAP MOVEABLE PURE "bitmaps/k72s.bmp"\r
+P72W BITMAP MOVEABLE PURE "bitmaps/p72w.bmp"\r
+N72W BITMAP MOVEABLE PURE "bitmaps/n72w.bmp"\r
+B72W BITMAP MOVEABLE PURE "bitmaps/b72w.bmp"\r
+R72W BITMAP MOVEABLE PURE "bitmaps/r72w.bmp"\r
+Q72W BITMAP MOVEABLE PURE "bitmaps/q72w.bmp"\r
+K72W BITMAP MOVEABLE PURE "bitmaps/k72w.bmp"\r
+P80O BITMAP MOVEABLE PURE "bitmaps/p80o.bmp"\r
+N80O BITMAP MOVEABLE PURE "bitmaps/n80o.bmp"\r
+B80O BITMAP MOVEABLE PURE "bitmaps/b80o.bmp"\r
+R80O BITMAP MOVEABLE PURE "bitmaps/r80o.bmp"\r
+Q80O BITMAP MOVEABLE PURE "bitmaps/q80o.bmp"\r
+K80O BITMAP MOVEABLE PURE "bitmaps/k80o.bmp"\r
+P80S BITMAP MOVEABLE PURE "bitmaps/p80s.bmp"\r
+N80S BITMAP MOVEABLE PURE "bitmaps/n80s.bmp"\r
+B80S BITMAP MOVEABLE PURE "bitmaps/b80s.bmp"\r
+R80S BITMAP MOVEABLE PURE "bitmaps/r80s.bmp"\r
+Q80S BITMAP MOVEABLE PURE "bitmaps/q80s.bmp"\r
+K80S BITMAP MOVEABLE PURE "bitmaps/k80s.bmp"\r
+P80W BITMAP MOVEABLE PURE "bitmaps/p80w.bmp"\r
+N80W BITMAP MOVEABLE PURE "bitmaps/n80w.bmp"\r
+B80W BITMAP MOVEABLE PURE "bitmaps/b80w.bmp"\r
+R80W BITMAP MOVEABLE PURE "bitmaps/r80w.bmp"\r
+Q80W BITMAP MOVEABLE PURE "bitmaps/q80w.bmp"\r
+K80W BITMAP MOVEABLE PURE "bitmaps/k80w.bmp"\r
+P87O BITMAP MOVEABLE PURE "bitmaps/p87o.bmp"\r
+N87O BITMAP MOVEABLE PURE "bitmaps/n87o.bmp"\r
+B87O BITMAP MOVEABLE PURE "bitmaps/b87o.bmp"\r
+R87O BITMAP MOVEABLE PURE "bitmaps/r87o.bmp"\r
+Q87O BITMAP MOVEABLE PURE "bitmaps/q87o.bmp"\r
+K87O BITMAP MOVEABLE PURE "bitmaps/k87o.bmp"\r
+P87S BITMAP MOVEABLE PURE "bitmaps/p87s.bmp"\r
+N87S BITMAP MOVEABLE PURE "bitmaps/n87s.bmp"\r
+B87S BITMAP MOVEABLE PURE "bitmaps/b87s.bmp"\r
+R87S BITMAP MOVEABLE PURE "bitmaps/r87s.bmp"\r
+Q87S BITMAP MOVEABLE PURE "bitmaps/q87s.bmp"\r
+K87S BITMAP MOVEABLE PURE "bitmaps/k87s.bmp"\r
+P87W BITMAP MOVEABLE PURE "bitmaps/p87w.bmp"\r
+N87W BITMAP MOVEABLE PURE "bitmaps/n87w.bmp"\r
+B87W BITMAP MOVEABLE PURE "bitmaps/b87w.bmp"\r
+R87W BITMAP MOVEABLE PURE "bitmaps/r87w.bmp"\r
+Q87W BITMAP MOVEABLE PURE "bitmaps/q87w.bmp"\r
+K87W BITMAP MOVEABLE PURE "bitmaps/k87w.bmp"\r
+P95O BITMAP MOVEABLE PURE "bitmaps/p95o.bmp"\r
+N95O BITMAP MOVEABLE PURE "bitmaps/n95o.bmp"\r
+B95O BITMAP MOVEABLE PURE "bitmaps/b95o.bmp"\r
+R95O BITMAP MOVEABLE PURE "bitmaps/r95o.bmp"\r
+Q95O BITMAP MOVEABLE PURE "bitmaps/q95o.bmp"\r
+K95O BITMAP MOVEABLE PURE "bitmaps/k95o.bmp"\r
+P95S BITMAP MOVEABLE PURE "bitmaps/p95s.bmp"\r
+N95S BITMAP MOVEABLE PURE "bitmaps/n95s.bmp"\r
+B95S BITMAP MOVEABLE PURE "bitmaps/b95s.bmp"\r
+R95S BITMAP MOVEABLE PURE "bitmaps/r95s.bmp"\r
+Q95S BITMAP MOVEABLE PURE "bitmaps/q95s.bmp"\r
+K95S BITMAP MOVEABLE PURE "bitmaps/k95s.bmp"\r
+P95W BITMAP MOVEABLE PURE "bitmaps/p95w.bmp"\r
+N95W BITMAP MOVEABLE PURE "bitmaps/n95w.bmp"\r
+B95W BITMAP MOVEABLE PURE "bitmaps/b95w.bmp"\r
+R95W BITMAP MOVEABLE PURE "bitmaps/r95w.bmp"\r
+Q95W BITMAP MOVEABLE PURE "bitmaps/q95w.bmp"\r
+K95W BITMAP MOVEABLE PURE "bitmaps/k95w.bmp"\r
+P108O BITMAP MOVEABLE PURE "bitmaps/p108o.bmp"\r
+N108O BITMAP MOVEABLE PURE "bitmaps/n108o.bmp"\r
+B108O BITMAP MOVEABLE PURE "bitmaps/b108o.bmp"\r
+R108O BITMAP MOVEABLE PURE "bitmaps/r108o.bmp"\r
+Q108O BITMAP MOVEABLE PURE "bitmaps/q108o.bmp"\r
+K108O BITMAP MOVEABLE PURE "bitmaps/k108o.bmp"\r
+P108S BITMAP MOVEABLE PURE "bitmaps/p108s.bmp"\r
+N108S BITMAP MOVEABLE PURE "bitmaps/n108s.bmp"\r
+B108S BITMAP MOVEABLE PURE "bitmaps/b108s.bmp"\r
+R108S BITMAP MOVEABLE PURE "bitmaps/r108s.bmp"\r
+Q108S BITMAP MOVEABLE PURE "bitmaps/q108s.bmp"\r
+K108S BITMAP MOVEABLE PURE "bitmaps/k108s.bmp"\r
+P108W BITMAP MOVEABLE PURE "bitmaps/p108w.bmp"\r
+N108W BITMAP MOVEABLE PURE "bitmaps/n108w.bmp"\r
+B108W BITMAP MOVEABLE PURE "bitmaps/b108w.bmp"\r
+R108W BITMAP MOVEABLE PURE "bitmaps/r108w.bmp"\r
+Q108W BITMAP MOVEABLE PURE "bitmaps/q108w.bmp"\r
+K108W BITMAP MOVEABLE PURE "bitmaps/k108w.bmp"\r
+P116O BITMAP MOVEABLE PURE "bitmaps/p116o.bmp"\r
+N116O BITMAP MOVEABLE PURE "bitmaps/n116o.bmp"\r
+B116O BITMAP MOVEABLE PURE "bitmaps/b116o.bmp"\r
+R116O BITMAP MOVEABLE PURE "bitmaps/r116o.bmp"\r
+Q116O BITMAP MOVEABLE PURE "bitmaps/q116o.bmp"\r
+K116O BITMAP MOVEABLE PURE "bitmaps/k116o.bmp"\r
+P116S BITMAP MOVEABLE PURE "bitmaps/p116s.bmp"\r
+N116S BITMAP MOVEABLE PURE "bitmaps/n116s.bmp"\r
+B116S BITMAP MOVEABLE PURE "bitmaps/b116s.bmp"\r
+R116S BITMAP MOVEABLE PURE "bitmaps/r116s.bmp"\r
+Q116S BITMAP MOVEABLE PURE "bitmaps/q116s.bmp"\r
+K116S BITMAP MOVEABLE PURE "bitmaps/k116s.bmp"\r
+P116W BITMAP MOVEABLE PURE "bitmaps/p116w.bmp"\r
+N116W BITMAP MOVEABLE PURE "bitmaps/n116w.bmp"\r
+B116W BITMAP MOVEABLE PURE "bitmaps/b116w.bmp"\r
+R116W BITMAP MOVEABLE PURE "bitmaps/r116w.bmp"\r
+Q116W BITMAP MOVEABLE PURE "bitmaps/q116w.bmp"\r
+K116W BITMAP MOVEABLE PURE "bitmaps/k116w.bmp"\r
+P129O BITMAP MOVEABLE PURE "bitmaps/p129o.bmp"\r
+N129O BITMAP MOVEABLE PURE "bitmaps/n129o.bmp"\r
+B129O BITMAP MOVEABLE PURE "bitmaps/b129o.bmp"\r
+R129O BITMAP MOVEABLE PURE "bitmaps/r129o.bmp"\r
+Q129O BITMAP MOVEABLE PURE "bitmaps/q129o.bmp"\r
+K129O BITMAP MOVEABLE PURE "bitmaps/k129o.bmp"\r
+P129S BITMAP MOVEABLE PURE "bitmaps/p129s.bmp"\r
+N129S BITMAP MOVEABLE PURE "bitmaps/n129s.bmp"\r
+B129S BITMAP MOVEABLE PURE "bitmaps/b129s.bmp"\r
+R129S BITMAP MOVEABLE PURE "bitmaps/r129s.bmp"\r
+Q129S BITMAP MOVEABLE PURE "bitmaps/q129s.bmp"\r
+K129S BITMAP MOVEABLE PURE "bitmaps/k129s.bmp"\r
+P129W BITMAP MOVEABLE PURE "bitmaps/p129w.bmp"\r
+N129W BITMAP MOVEABLE PURE "bitmaps/n129w.bmp"\r
+B129W BITMAP MOVEABLE PURE "bitmaps/b129w.bmp"\r
+R129W BITMAP MOVEABLE PURE "bitmaps/r129w.bmp"\r
+Q129W BITMAP MOVEABLE PURE "bitmaps/q129w.bmp"\r
+K129W BITMAP MOVEABLE PURE "bitmaps/k129w.bmp"\r
+GALACTIC BITMAP MOVEABLE PURE "bitmaps/galactic.bmp"\r
+TIM BITMAP MOVEABLE PURE "bitmaps/tim.bmp"\r
+// [HGM] Some fairy symbols:\r
+E72O BITMAP MOVEABLE PURE "bitmaps/e72o.bmp"\r
+A72O BITMAP MOVEABLE PURE "bitmaps/a72o.bmp"\r
+AA72O BITMAP MOVEABLE PURE "bitmaps/as72o.bmp"\r
+C72O BITMAP MOVEABLE PURE "bitmaps/c72o.bmp"\r
+CV72O BITMAP MOVEABLE PURE "bitmaps/cv72o.bmp"\r
+F72O BITMAP MOVEABLE PURE "bitmaps/f72o.bmp"\r
+M72O BITMAP MOVEABLE PURE "bitmaps/m72o.bmp"\r
+W72O BITMAP MOVEABLE PURE "bitmaps/w72o.bmp"\r
+O72O BITMAP MOVEABLE PURE "bitmaps/o72o.bmp"\r
+U72O BITMAP MOVEABLE PURE "bitmaps/u72o.bmp"\r
+H72O BITMAP MOVEABLE PURE "bitmaps/h72o.bmp"\r
+G72O BITMAP MOVEABLE PURE "bitmaps/g72o.bmp"\r
+V72O BITMAP MOVEABLE PURE "bitmaps/v72o.bmp"\r
+S72O BITMAP MOVEABLE PURE "bitmaps/s72o.bmp"\r
+L72O BITMAP MOVEABLE PURE "bitmaps/l72o.bmp"\r
+DK72O BITMAP MOVEABLE PURE "bitmaps/dk72o.bmp"\r
+WP72O BITMAP MOVEABLE PURE "bitmaps/wp72o.bmp"\r
+WN72O BITMAP MOVEABLE PURE "bitmaps/wn72o.bmp"\r
+WL72O BITMAP MOVEABLE PURE "bitmaps/wl72o.bmp"\r
+WS72O BITMAP MOVEABLE PURE "bitmaps/ws72o.bmp"\r
+E72S BITMAP MOVEABLE PURE "bitmaps/e72s.bmp"\r
+A72S BITMAP MOVEABLE PURE "bitmaps/a72s.bmp"\r
+AA72S BITMAP MOVEABLE PURE "bitmaps/as72s.bmp"\r
+C72S BITMAP MOVEABLE PURE "bitmaps/c72s.bmp"\r
+CV72S BITMAP MOVEABLE PURE "bitmaps/cv72s.bmp"\r
+F72S BITMAP MOVEABLE PURE "bitmaps/f72s.bmp"\r
+M72S BITMAP MOVEABLE PURE "bitmaps/m72s.bmp"\r
+W72S BITMAP MOVEABLE PURE "bitmaps/w72s.bmp"\r
+O72S BITMAP MOVEABLE PURE "bitmaps/o72s.bmp"\r
+U72S BITMAP MOVEABLE PURE "bitmaps/u72s.bmp"\r
+H72S BITMAP MOVEABLE PURE "bitmaps/h72s.bmp"\r
+G72S BITMAP MOVEABLE PURE "bitmaps/g72s.bmp"\r
+V72S BITMAP MOVEABLE PURE "bitmaps/v72s.bmp"\r
+S72S BITMAP MOVEABLE PURE "bitmaps/s72s.bmp"\r
+L72S BITMAP MOVEABLE PURE "bitmaps/l72s.bmp"\r
+DK72S BITMAP MOVEABLE PURE "bitmaps/dk72s.bmp"\r
+WP72S BITMAP MOVEABLE PURE "bitmaps/wp72s.bmp"\r
+WN72S BITMAP MOVEABLE PURE "bitmaps/wn72s.bmp"\r
+WL72S BITMAP MOVEABLE PURE "bitmaps/wl72s.bmp"\r
+WS72S BITMAP MOVEABLE PURE "bitmaps/ws72s.bmp"\r
+E72W BITMAP MOVEABLE PURE "bitmaps/e72w.bmp"\r
+A72W BITMAP MOVEABLE PURE "bitmaps/a72w.bmp"\r
+AA72W BITMAP MOVEABLE PURE "bitmaps/as72w.bmp"\r
+C72W BITMAP MOVEABLE PURE "bitmaps/c72w.bmp"\r
+CV72W BITMAP MOVEABLE PURE "bitmaps/cv72w.bmp"\r
+F72W BITMAP MOVEABLE PURE "bitmaps/f72w.bmp"\r
+M72W BITMAP MOVEABLE PURE "bitmaps/m72w.bmp"\r
+W72W BITMAP MOVEABLE PURE "bitmaps/w72w.bmp"\r
+O72W BITMAP MOVEABLE PURE "bitmaps/o72w.bmp"\r
+U72W BITMAP MOVEABLE PURE "bitmaps/u72w.bmp"\r
+H72W BITMAP MOVEABLE PURE "bitmaps/h72w.bmp"\r
+G72W BITMAP MOVEABLE PURE "bitmaps/g72w.bmp"\r
+V72W BITMAP MOVEABLE PURE "bitmaps/v72w.bmp"\r
+S72W BITMAP MOVEABLE PURE "bitmaps/s72w.bmp"\r
+L72W BITMAP MOVEABLE PURE "bitmaps/l72w.bmp"\r
+DK72W BITMAP MOVEABLE PURE "bitmaps/dk72w.bmp"\r
+E49O BITMAP MOVEABLE PURE "bitmaps/e49o.bmp"\r
+A49O BITMAP MOVEABLE PURE "bitmaps/a49o.bmp"\r
+AA49O BITMAP MOVEABLE PURE "bitmaps/as49o.bmp"\r
+C49O BITMAP MOVEABLE PURE "bitmaps/c49o.bmp"\r
+CV49O BITMAP MOVEABLE PURE "bitmaps/cv49o.bmp"\r
+F49O BITMAP MOVEABLE PURE "bitmaps/f49o.bmp"\r
+M49O BITMAP MOVEABLE PURE "bitmaps/m49o.bmp"\r
+W49O BITMAP MOVEABLE PURE "bitmaps/w49o.bmp"\r
+O49O BITMAP MOVEABLE PURE "bitmaps/o49o.bmp"\r
+U49O BITMAP MOVEABLE PURE "bitmaps/u49o.bmp"\r
+H49O BITMAP MOVEABLE PURE "bitmaps/h49o.bmp"\r
+G49O BITMAP MOVEABLE PURE "bitmaps/g49o.bmp"\r
+V49O BITMAP MOVEABLE PURE "bitmaps/v49o.bmp"\r
+S49O BITMAP MOVEABLE PURE "bitmaps/s49o.bmp"\r
+L49O BITMAP MOVEABLE PURE "bitmaps/l49o.bmp"\r
+DK49O BITMAP MOVEABLE PURE "bitmaps/dk49o.bmp"\r
+WP49O BITMAP MOVEABLE PURE "bitmaps/wp49o.bmp"\r
+WN49O BITMAP MOVEABLE PURE "bitmaps/wn49o.bmp"\r
+WL49O BITMAP MOVEABLE PURE "bitmaps/wl49o.bmp"\r
+WS49O BITMAP MOVEABLE PURE "bitmaps/ws49o.bmp"\r
+E49S BITMAP MOVEABLE PURE "bitmaps/e49s.bmp"\r
+A49S BITMAP MOVEABLE PURE "bitmaps/a49s.bmp"\r
+AA49S BITMAP MOVEABLE PURE "bitmaps/as49s.bmp"\r
+C49S BITMAP MOVEABLE PURE "bitmaps/c49s.bmp"\r
+CV49S BITMAP MOVEABLE PURE "bitmaps/cv49s.bmp"\r
+F49S BITMAP MOVEABLE PURE "bitmaps/f49s.bmp"\r
+M49S BITMAP MOVEABLE PURE "bitmaps/m49s.bmp"\r
+W49S BITMAP MOVEABLE PURE "bitmaps/w49s.bmp"\r
+O49S BITMAP MOVEABLE PURE "bitmaps/o49s.bmp"\r
+U49S BITMAP MOVEABLE PURE "bitmaps/u49s.bmp"\r
+H49S BITMAP MOVEABLE PURE "bitmaps/h49s.bmp"\r
+G49S BITMAP MOVEABLE PURE "bitmaps/g49s.bmp"\r
+V49S BITMAP MOVEABLE PURE "bitmaps/v49s.bmp"\r
+S49S BITMAP MOVEABLE PURE "bitmaps/s49s.bmp"\r
+L49S BITMAP MOVEABLE PURE "bitmaps/l49s.bmp"\r
+DK49S BITMAP MOVEABLE PURE "bitmaps/dk49s.bmp"\r
+WP49S BITMAP MOVEABLE PURE "bitmaps/wp49s.bmp"\r
+WN49S BITMAP MOVEABLE PURE "bitmaps/wn49s.bmp"\r
+WL49S BITMAP MOVEABLE PURE "bitmaps/wl49s.bmp"\r
+WS49S BITMAP MOVEABLE PURE "bitmaps/ws49s.bmp"\r
+E49W BITMAP MOVEABLE PURE "bitmaps/e49w.bmp"\r
+A49W BITMAP MOVEABLE PURE "bitmaps/a49w.bmp"\r
+AA49W BITMAP MOVEABLE PURE "bitmaps/as49w.bmp"\r
+C49W BITMAP MOVEABLE PURE "bitmaps/c49w.bmp"\r
+CV49W BITMAP MOVEABLE PURE "bitmaps/cv49w.bmp"\r
+F49W BITMAP MOVEABLE PURE "bitmaps/f49w.bmp"\r
+M49W BITMAP MOVEABLE PURE "bitmaps/m49w.bmp"\r
+W49W BITMAP MOVEABLE PURE "bitmaps/w49w.bmp"\r
+O49W BITMAP MOVEABLE PURE "bitmaps/o49w.bmp"\r
+U49W BITMAP MOVEABLE PURE "bitmaps/u49w.bmp"\r
+H49W BITMAP MOVEABLE PURE "bitmaps/h49w.bmp"\r
+G49W BITMAP MOVEABLE PURE "bitmaps/g49w.bmp"\r
+V49W BITMAP MOVEABLE PURE "bitmaps/v49w.bmp"\r
+S49W BITMAP MOVEABLE PURE "bitmaps/s49w.bmp"\r
+L49W BITMAP MOVEABLE PURE "bitmaps/l49w.bmp"\r
+DK49W BITMAP MOVEABLE PURE "bitmaps/dk49w.bmp"\r
+A33O BITMAP MOVEABLE PURE "bitmaps/a33o.bmp"\r
+AA33O BITMAP MOVEABLE PURE "bitmaps/as33o.bmp"\r
+C33O BITMAP MOVEABLE PURE "bitmaps/c33o.bmp"\r
+CV33O BITMAP MOVEABLE PURE "bitmaps/cv33o.bmp"\r
+V33O BITMAP MOVEABLE PURE "bitmaps/v33o.bmp"\r
+E33O BITMAP MOVEABLE PURE "bitmaps/e33o.bmp"\r
+F33O BITMAP MOVEABLE PURE "bitmaps/f33o.bmp"\r
+H33O BITMAP MOVEABLE PURE "bitmaps/h33o.bmp"\r
+G33O BITMAP MOVEABLE PURE "bitmaps/g33o.bmp"\r
+L33O BITMAP MOVEABLE PURE "bitmaps/l33o.bmp"\r
+W33O BITMAP MOVEABLE PURE "bitmaps/w33o.bmp"\r
+M33O BITMAP MOVEABLE PURE "bitmaps/m33o.bmp"\r
+O33O BITMAP MOVEABLE PURE "bitmaps/o33o.bmp"\r
+DK33O BITMAP MOVEABLE PURE "bitmaps/dk33o.bmp"\r
+A33W BITMAP MOVEABLE PURE "bitmaps/a33w.bmp"\r
+AA33W BITMAP MOVEABLE PURE "bitmaps/as33w.bmp"\r
+C33W BITMAP MOVEABLE PURE "bitmaps/c33w.bmp"\r
+CV33W BITMAP MOVEABLE PURE "bitmaps/cv33w.bmp"\r
+V33W BITMAP MOVEABLE PURE "bitmaps/v33w.bmp"\r
+E33W BITMAP MOVEABLE PURE "bitmaps/e33w.bmp"\r
+F33W BITMAP MOVEABLE PURE "bitmaps/f33w.bmp"\r
+H33W BITMAP MOVEABLE PURE "bitmaps/h33w.bmp"\r
+G33W BITMAP MOVEABLE PURE "bitmaps/g33w.bmp"\r
+L33W BITMAP MOVEABLE PURE "bitmaps/l33w.bmp"\r
+W33W BITMAP MOVEABLE PURE "bitmaps/w33w.bmp"\r
+M33W BITMAP MOVEABLE PURE "bitmaps/m33w.bmp"\r
+O33W BITMAP MOVEABLE PURE "bitmaps/o33w.bmp"\r
+DK33W BITMAP MOVEABLE PURE "bitmaps/dk33w.bmp"\r
+A33S BITMAP MOVEABLE PURE "bitmaps/a33s.bmp"\r
+AA33S BITMAP MOVEABLE PURE "bitmaps/as33s.bmp"\r
+C33S BITMAP MOVEABLE PURE "bitmaps/c33s.bmp"\r
+CV33S BITMAP MOVEABLE PURE "bitmaps/cv33s.bmp"\r
+V33S BITMAP MOVEABLE PURE "bitmaps/v33s.bmp"\r
+E33S BITMAP MOVEABLE PURE "bitmaps/e33s.bmp"\r
+F33S BITMAP MOVEABLE PURE "bitmaps/f33s.bmp"\r
+H33S BITMAP MOVEABLE PURE "bitmaps/h33s.bmp"\r
+G33S BITMAP MOVEABLE PURE "bitmaps/g33s.bmp"\r
+L33S BITMAP MOVEABLE PURE "bitmaps/l33s.bmp"\r
+W33S BITMAP MOVEABLE PURE "bitmaps/w33s.bmp"\r
+M33S BITMAP MOVEABLE PURE "bitmaps/m33s.bmp"\r
+O33S BITMAP MOVEABLE PURE "bitmaps/o33s.bmp"\r
+DK33S BITMAP MOVEABLE PURE "bitmaps/dk33s.bmp"\r
+\r
+A37O BITMAP MOVEABLE PURE "bitmaps/a37o.bmp"\r
+L37O BITMAP MOVEABLE PURE "bitmaps/l37o.bmp"\r
+C37O BITMAP MOVEABLE PURE "bitmaps/c37o.bmp"\r
+CV37O BITMAP MOVEABLE PURE "bitmaps/cv37o.bmp"\r
+A40O BITMAP MOVEABLE PURE "bitmaps/a40o.bmp"\r
+L40O BITMAP MOVEABLE PURE "bitmaps/l40o.bmp"\r
+C40O BITMAP MOVEABLE PURE "bitmaps/c40o.bmp"\r
+CV40O BITMAP MOVEABLE PURE "bitmaps/cv40o.bmp"\r
+A45O BITMAP MOVEABLE PURE "bitmaps/a45o.bmp"\r
+L45O BITMAP MOVEABLE PURE "bitmaps/l45o.bmp"\r
+C45O BITMAP MOVEABLE PURE "bitmaps/c45o.bmp"\r
+CV45O BITMAP MOVEABLE PURE "bitmaps/cv45o.bmp"\r
+A54O BITMAP MOVEABLE PURE "bitmaps/a54o.bmp"\r
+L54O BITMAP MOVEABLE PURE "bitmaps/l54o.bmp"\r
+C54O BITMAP MOVEABLE PURE "bitmaps/c54o.bmp"\r
+CV54O BITMAP MOVEABLE PURE "bitmaps/cv54o.bmp"\r
+V54O BITMAP MOVEABLE PURE "bitmaps/v54o.bmp"\r
+A58O BITMAP MOVEABLE PURE "bitmaps/a58o.bmp"\r
+L58O BITMAP MOVEABLE PURE "bitmaps/l58o.bmp"\r
+C58O BITMAP MOVEABLE PURE "bitmaps/c58o.bmp"\r
+CV58O BITMAP MOVEABLE PURE "bitmaps/cv58o.bmp"\r
+A64O BITMAP MOVEABLE PURE "bitmaps/a64o.bmp"\r
+L64O BITMAP MOVEABLE PURE "bitmaps/l64o.bmp"\r
+C64O BITMAP MOVEABLE PURE "bitmaps/c64o.bmp"\r
+CV64O BITMAP MOVEABLE PURE "bitmaps/cv64o.bmp"\r
+A37W BITMAP MOVEABLE PURE "bitmaps/a37w.bmp"\r
+L37W BITMAP MOVEABLE PURE "bitmaps/l37w.bmp"\r
+C37W BITMAP MOVEABLE PURE "bitmaps/c37w.bmp"\r
+CV37W BITMAP MOVEABLE PURE "bitmaps/cv37w.bmp"\r
+A40W BITMAP MOVEABLE PURE "bitmaps/a40w.bmp"\r
+L40W BITMAP MOVEABLE PURE "bitmaps/l40w.bmp"\r
+C40W BITMAP MOVEABLE PURE "bitmaps/c40w.bmp"\r
+CV40W BITMAP MOVEABLE PURE "bitmaps/cv40w.bmp"\r
+A45W BITMAP MOVEABLE PURE "bitmaps/a45w.bmp"\r
+L45W BITMAP MOVEABLE PURE "bitmaps/l45w.bmp"\r
+C45W BITMAP MOVEABLE PURE "bitmaps/c45w.bmp"\r
+CV45W BITMAP MOVEABLE PURE "bitmaps/cv45w.bmp"\r
+A54W BITMAP MOVEABLE PURE "bitmaps/a54w.bmp"\r
+L54W BITMAP MOVEABLE PURE "bitmaps/l54w.bmp"\r
+C54W BITMAP MOVEABLE PURE "bitmaps/c54w.bmp"\r
+CV54W BITMAP MOVEABLE PURE "bitmaps/cv54w.bmp"\r
+V54W BITMAP MOVEABLE PURE "bitmaps/v54w.bmp"\r
+A58W BITMAP MOVEABLE PURE "bitmaps/a58w.bmp"\r
+L58W BITMAP MOVEABLE PURE "bitmaps/l58w.bmp"\r
+C58W BITMAP MOVEABLE PURE "bitmaps/c58w.bmp"\r
+CV58W BITMAP MOVEABLE PURE "bitmaps/cv58w.bmp"\r
+A64W BITMAP MOVEABLE PURE "bitmaps/a64w.bmp"\r
+L64W BITMAP MOVEABLE PURE "bitmaps/l64w.bmp"\r
+C64W BITMAP MOVEABLE PURE "bitmaps/c64w.bmp"\r
+CV64W BITMAP MOVEABLE PURE "bitmaps/cv64w.bmp"\r
+A37S BITMAP MOVEABLE PURE "bitmaps/a37s.bmp"\r
+L37S BITMAP MOVEABLE PURE "bitmaps/l37s.bmp"\r
+C37S BITMAP MOVEABLE PURE "bitmaps/c37s.bmp"\r
+CV37S BITMAP MOVEABLE PURE "bitmaps/cv37s.bmp"\r
+A40S BITMAP MOVEABLE PURE "bitmaps/a40s.bmp"\r
+L40S BITMAP MOVEABLE PURE "bitmaps/l40s.bmp"\r
+C40S BITMAP MOVEABLE PURE "bitmaps/c40s.bmp"\r
+CV40S BITMAP MOVEABLE PURE "bitmaps/cv40s.bmp"\r
+A45S BITMAP MOVEABLE PURE "bitmaps/a45s.bmp"\r
+L45S BITMAP MOVEABLE PURE "bitmaps/l45s.bmp"\r
+C45S BITMAP MOVEABLE PURE "bitmaps/c45s.bmp"\r
+CV45S BITMAP MOVEABLE PURE "bitmaps/cv45s.bmp"\r
+A54S BITMAP MOVEABLE PURE "bitmaps/a54s.bmp"\r
+L54S BITMAP MOVEABLE PURE "bitmaps/l54s.bmp"\r
+C54S BITMAP MOVEABLE PURE "bitmaps/c54s.bmp"\r
+CV54S BITMAP MOVEABLE PURE "bitmaps/cv54s.bmp"\r
+V54S BITMAP MOVEABLE PURE "bitmaps/v54s.bmp"\r
+A58S BITMAP MOVEABLE PURE "bitmaps/a58s.bmp"\r
+L58S BITMAP MOVEABLE PURE "bitmaps/l58s.bmp"\r
+C58S BITMAP MOVEABLE PURE "bitmaps/c58s.bmp"\r
+CV58S BITMAP MOVEABLE PURE "bitmaps/cv58s.bmp"\r
+A64S BITMAP MOVEABLE PURE "bitmaps/a64s.bmp"\r
+L64S BITMAP MOVEABLE PURE "bitmaps/l64s.bmp"\r
+C64S BITMAP MOVEABLE PURE "bitmaps/c64s.bmp"\r
+CV64S BITMAP MOVEABLE PURE "bitmaps/cv64s.bmp"\r
+\r
+SP58O BITMAP MOVEABLE PURE "shogibitmaps/sp58o.bmp"\r
+SN58O BITMAP MOVEABLE PURE "shogibitmaps/sn58o.bmp"\r
+SB58O BITMAP MOVEABLE PURE "shogibitmaps/sb58o.bmp"\r
+SR58O BITMAP MOVEABLE PURE "shogibitmaps/sr58o.bmp"\r
+SL58O BITMAP MOVEABLE PURE "shogibitmaps/sl58o.bmp"\r
+SK58O BITMAP MOVEABLE PURE "shogibitmaps/sk58o.bmp"\r
+SF58O BITMAP MOVEABLE PURE "shogibitmaps/sf58o.bmp"\r
+SW58O BITMAP MOVEABLE PURE "shogibitmaps/sw58o.bmp"\r
+SU58O BITMAP MOVEABLE PURE "shogibitmaps/su58o.bmp"\r
+SH58O BITMAP MOVEABLE PURE "shogibitmaps/sh58o.bmp"\r
+SA58O BITMAP MOVEABLE PURE "shogibitmaps/sa58o.bmp"\r
+SC58O BITMAP MOVEABLE PURE "shogibitmaps/sc58o.bmp"\r
+SG58O BITMAP MOVEABLE PURE "shogibitmaps/sg58o.bmp"\r
+SS58O BITMAP MOVEABLE PURE "shogibitmaps/ss58o.bmp"\r
+SP58W BITMAP MOVEABLE PURE "shogibitmaps/sp58w.bmp"\r
+SN58W BITMAP MOVEABLE PURE "shogibitmaps/sn58w.bmp"\r
+SR58W BITMAP MOVEABLE PURE "shogibitmaps/sr58w.bmp"\r
+SL58W BITMAP MOVEABLE PURE "shogibitmaps/sl58w.bmp"\r
+SK58W BITMAP MOVEABLE PURE "shogibitmaps/sk58w.bmp"\r
+SW58W BITMAP MOVEABLE PURE "shogibitmaps/sw58w.bmp"\r
+\r
+#ifdef APSTUDIO_INVOKED\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// TEXTINCLUDE\r
+//\r
+\r
+1 TEXTINCLUDE DISCARDABLE \r
+BEGIN\r
+ "resource.h\0"\r
+END\r
+\r
+2 TEXTINCLUDE DISCARDABLE \r
+BEGIN\r
+ "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"\r
+ "#include ""windows.h""\r\n"\r
+ "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"\r
+ "#include ""dlgs.h""\r\n"\r
+ "\r\n"\r
+ "\0"\r
+END\r
+\r
+3 TEXTINCLUDE DISCARDABLE \r
+BEGIN\r
+ "\r\n"\r
+ "\0"\r
+END\r
+\r
+#endif // APSTUDIO_INVOKED\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// WAVE\r
+//\r
+\r
+DING WAVE DISCARDABLE "sounds/ding1.wav"\r
+CHING WAVE DISCARDABLE "sounds/ching.wav"\r
+CLICK WAVE DISCARDABLE "sounds/click.wav"\r
+CYMBAL WAVE DISCARDABLE "sounds/cymbal.wav"\r
+DRIP WAVE DISCARDABLE "sounds/drip.wav"\r
+GONG WAVE DISCARDABLE "sounds/gong.wav"\r
+BEEPBEEP WAVE DISCARDABLE "sounds/honkhonk.wav"\r
+LASER WAVE DISCARDABLE "sounds/laser.wav"\r
+PENALTY WAVE DISCARDABLE "sounds/penalty.wav"\r
+PHONE WAVE DISCARDABLE "sounds/phone.wav"\r
+POP WAVE DISCARDABLE "sounds/pop.wav"\r
+POP2 WAVE DISCARDABLE "sounds/pop2.wav"\r
+SLAP WAVE DISCARDABLE "sounds/slap.wav"\r
+SQUEAK WAVE DISCARDABLE "sounds/squeak.wav"\r
+SWISH WAVE DISCARDABLE "sounds/swish.wav"\r
+THUD WAVE DISCARDABLE "sounds/thud.wav"\r
+WHIPCRACK WAVE DISCARDABLE "sounds/whipcrak.wav"\r
+MOVE WAVE DISCARDABLE "sounds/move.wav"\r
+ALARM WAVE DISCARDABLE "sounds/alarm.wav"\r
+CHALLENGE WAVE DISCARDABLE "sounds/challenge.wav"\r
+CHANNEL WAVE DISCARDABLE "sounds/channel.wav"\r
+CHANNEL1 WAVE DISCARDABLE "sounds/channel1.wav"\r
+DRAW WAVE DISCARDABLE "sounds/draw.wav"\r
+KIBITZ WAVE DISCARDABLE "sounds/kibitz.wav"\r
+LOSE WAVE DISCARDABLE "sounds/lose.wav"\r
+REQUEST WAVE DISCARDABLE "sounds/request.wav"\r
+SEEK WAVE DISCARDABLE "sounds/seek.wav"\r
+SHOUT WAVE DISCARDABLE "sounds/shout.wav"\r
+SSHOUT WAVE DISCARDABLE "sounds/sshout.wav"\r
+TELL WAVE DISCARDABLE "sounds/tell.wav"\r
+UNFINISHED WAVE DISCARDABLE "sounds/unfinished.wav"\r
+WIN WAVE DISCARDABLE "sounds/win.wav"\r
+#endif // English (U.S.) resources\r
+/////////////////////////////////////////////////////////////////////////////\r
+\r
+\r
+\r
+#ifndef APSTUDIO_INVOKED\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Generated from the TEXTINCLUDE 3 resource.\r
+//\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+#endif // not APSTUDIO_INVOKED\r
+\r