Fix typeMask
[gnushogi.git] / gnushogi / gnushogi.h
index 7854113..14cc51e 100644 (file)
@@ -66,6 +66,7 @@ extern display_t display_type;
 
 extern short hard_time_limit; /* If you exceed time limit, you lose.   */
 extern short nolist;          /* Don't list game after exit.           */
+extern short xboard;          /* Use XBoard instead of xShogi protocol */
 
 
 /*
@@ -181,10 +182,11 @@ extern void movealgbr(short m, char *s);
 #endif
 #define NO_SQUARES      (NO_COLS*NO_ROWS)
 
-#define ROW_NAME(n) ('a' + NO_ROWS - 1 - n)
-#define COL_NAME(n) ('1' + NO_COLS - 1 - n)
-#define ROW_NUM(c) ('a' + NO_ROWS - 1 - c)
-#define COL_NUM(c) ('1' + NO_COLS - 1 - c)
+#define ROW_NAME(n) ( xboard ? '1' + n : ('a' + NO_ROWS - 1 - n) )
+#define COL_NAME(n) ( xboard ? 'a' + n : ('1' + NO_COLS - 1 - n) )
+#define ROW_NUM(c) ( xboard ? c - '1' : ('a' + NO_ROWS - 1 - c) )
+#define COL_NUM(c) ( xboard ? c - 'a' : ('1' + NO_COLS - 1 - c) )
 
 #if defined HASHFILE || defined CACHE
 #  define PTBLBDSIZE (NO_SQUARES + NO_PIECES)
@@ -279,6 +281,33 @@ enum {
     king
 };
 
+/* piece mask defines */
+enum {
+    T_PAWN    = 1<<pawn,
+#ifndef MINISHOGI
+    T_LANCE   = 1<<lance,
+    T_KNIGHT  = 1<<knight,
+#endif
+    /* start of pieces that can be dropped at any square */
+    T_SILVER  = 1<<silver,
+    T_GOLD    = 1<<gold,
+    T_BISHOP  = 1<<bishop,
+    T_ROOK    = 1<<rook,
+    T_PPAWN   = 1<<ppawn,
+#ifndef MINISHOGI
+    T_PLANCE  = 1<<plance,
+    T_PKNIGHT = 1<<pknight,
+#endif
+    T_PSILVER = 1<<psilver,
+    T_PBISHOP = 1<<pbishop,
+    T_PROOK   = 1<<prook,
+    T_KING    = 1<<king
+#ifdef MINISHOGI
+    ,T_LANCE   = 1<<king+1,
+    T_KNIGHT  = 1<<king+2
+#endif
+};
+
 /* move types */
 enum {
     ptype_no_piece = 0,
@@ -640,6 +669,7 @@ struct flags
     short bothsides;         /* computer plays both sides */
     short hash;              /* enable/disable transposition table */
     short force;             /* enter moves */
+    short analyze;           /* search during move entry */
     short easy;              /* disable thinking on opponents time */
     short beep;              /* enable/disable beep */
     short timeout;           /* time to make a move */
@@ -686,6 +716,7 @@ extern char savefile[], listfile[];
 extern short TrPnt[];
 extern small_short board[], color[];
 extern const small_short sweep[NO_PIECES];
+extern const int typeMask[NO_PIECES];
 extern small_short PieceList[2][NO_SQUARES], PawnCnt[2][NO_COLS];
 extern small_short Captured[2][NO_PIECES];
 
@@ -909,6 +940,7 @@ extern void Initialize_eval(void); /* eval.c */
 extern void NewGame(void);
 extern void GetOpenings(void);
 extern int  OpeningBook(unsigned short *hint);
+extern int  AllocateTT(int size); /* init-common.c */
 
 typedef enum
 {
@@ -1039,7 +1071,7 @@ extern void  UpdateWeights(short side);
 extern int   InitMain(void);
 extern void  ExitMain(void);
 extern void  Initialize(void);
-extern void  InputCommand(char *command);
+extern int   InputCommand(char *command, int root);
 extern void  ExitShogi(void);
 extern void  ClearScreen(void);
 extern void  SetTimeControl(void);
@@ -1074,7 +1106,7 @@ extern void  algbr(short f, short t, short flag);
 extern void  OutputMove(void);
 extern void  ShowCurrentMove(short pnt, short f, short t);
 extern void  ListGame(void);
-extern void  ShowMessage(char *s);
+extern void  ShowMessage(char *s, ...);
 extern void  ClearScreen(void);
 extern void  DoDebug(void);
 extern void  DoTable(short table[NO_SQUARES]);
@@ -1113,6 +1145,7 @@ typedef enum
 
 extern int VerifyMove(char *s, VerifyMove_mode iop, unsigned short *mv);
 extern unsigned short TTage;
+extern short movesLeft, currentMove;
 
 /* display driver framework */
 
@@ -1140,7 +1173,7 @@ struct display
     void (*ShowDepth)(char ch);
     void (*ShowGameType)(void);
     void (*ShowLine)(unsigned short *bstline);
-    void (*ShowMessage)(char *s);
+    void (*ShowMessage)(char *s, ...);
     void (*AlwaysShowMessage)(const char *format, ...);
     void (*Printf)(const char *format, ...);
     void (*doRequestInputString)(const char* fmt, char* buffer);