Fix use of (COL|ROW)_NAME macros to compute numbers from names.
[gnushogi.git] / gnushogi / gnushogi.h
index 60cedaa..48408d7 100644 (file)
@@ -6,6 +6,7 @@
  * ----------------------------------------------------------------------
  * Copyright (c) 1993, 1994, 1995 Matthias Mutz
  * Copyright (c) 1999 Michael Vanier and the Free Software Foundation
+ * Copyright (c) 2008, 2013, 2014 Yann Dirson and the Free Software Foundation
  *
  * GNU SHOGI is based on GNU CHESS
  *
@@ -81,7 +82,6 @@ extern short nolist;          /* Don't list game after exit.           */
 #define small_ushort unsigned char
 
 
-typedef small_short    BYTE;
 typedef small_ushort   UBYTE;
 typedef short          SHORT;
 typedef unsigned short USHORT;
@@ -130,9 +130,13 @@ typedef unsigned long  ULONG;
 
 #include <sys/param.h>
 #include <sys/types.h>
-#include <sys/times.h>
-#include <sys/ioctl.h>
-
+#ifdef WIN32
+#  include <windows.h>
+#else
+   typedef small_short    BYTE;
+#  include <sys/times.h>
+#  include <sys/ioctl.h>
+#endif
 
 #if TIME_WITH_SYS_TIME
 #  include <sys/time.h>
@@ -161,15 +165,25 @@ extern void movealgbr(short m, char *s);
 #define SEEK_SET 0
 #define SEEK_END 2
 
+#ifdef MINISHOGI
+#define NO_PIECES       11
+#define MAX_CAPTURED    19
+#define NO_PTYPE_PIECES 11
+#define NO_COLS          5
+#define NO_ROWS          5
+#else
 #define NO_PIECES       15
 #define MAX_CAPTURED    19
 #define NO_PTYPE_PIECES 15
 #define NO_COLS          9
 #define NO_ROWS          9
+#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)
 
 #if defined HASHFILE || defined CACHE
 #  define PTBLBDSIZE (NO_SQUARES + NO_PIECES)
@@ -217,12 +231,18 @@ extern void movealgbr(short m, char *s);
 
 
 /* board properties */
+#ifndef MINISHOGI
 #define InBlackCamp(sq) ((sq) < 27)
 #define InWhiteCamp(sq) ((sq) > 53)
+#else
+#define InBlackCamp(sq) ((sq) < 5)
+#define InWhiteCamp(sq) ((sq) > 19)
+#endif
 #define InPromotionZone(side, sq) \
 (((side) == black) ? InWhiteCamp(sq) : InBlackCamp(sq))
 
 /* constants */
+/* FIXME ? */
 #define OPENING_HINT 0x141d /* P7g-7f (20->29) */
 
 /* truth values */
@@ -243,15 +263,20 @@ extern void movealgbr(short m, char *s);
 enum {
     no_piece = 0,
     pawn,
+#ifndef MINISHOGI
     lance,
     knight,
+#endif
+    /* start of pieces that can be dropped at any square */
     silver,
     gold,
     bishop,
     rook,
     ppawn,
+#ifndef MINISHOGI
     plance,
     pknight,
+#endif
     psilver,
     pbishop,
     prook,
@@ -262,8 +287,10 @@ enum {
 enum {
     ptype_no_piece = 0,
     ptype_pawn = 0,
+#ifndef MINISHOGI
     ptype_lance,
     ptype_knight,
+#endif
     ptype_silver,
     ptype_gold,
     ptype_bishop,
@@ -272,8 +299,10 @@ enum {
     ptype_prook,
     ptype_king,
     ptype_wpawn,
+#ifndef MINISHOGI
     ptype_wlance,
     ptype_wknight,
+#endif
     ptype_wsilver,
     ptype_wgold
 };
@@ -300,10 +329,17 @@ enum {
 #endif
 
 /* move symbols */
+#ifndef MINISHOGI
 #define pxx (" PLNSGBRPLNSBRK ")
 #define qxx (" plnsgbrplnsbrk ")
 #define rxx ("ihgfedcba")
 #define cxx ("987654321")
+#else
+#define pxx (" PSGBRPSBRK ")
+#define qxx (" psgbrpsbrk ")
+#define rxx ("edcba")
+#define cxx ("54321")
+#endif
 
 /***************** Table limits ********************************************/
 
@@ -349,7 +385,7 @@ enum {
 #define MAXDEPTH  40            /* max depth a search can be carried */
 #define MINDEPTH   2            /* min search depth =1 (no hint), >1 hint */
 #define MAXMOVES 300            /* max number of half moves in a game */
-#define CPSIZE   235            /* size of lang file max */
+#define CPSIZE   241            /* size of lang file max */
 
 #if defined SMALL_MEMORY
 #  if defined SAVE_SSCORE
@@ -752,7 +788,11 @@ typedef unsigned char next_array[NO_SQUARES][NO_SQUARES];
 typedef small_short distdata_array[NO_SQUARES][NO_SQUARES];
 
 extern const small_short inunmap[NO_SQUARES];
+#ifndef MINISHOGI
 extern const small_short nunmap[(NO_COLS + 2)*(NO_ROWS + 4)];
+#else
+extern const small_short nunmap[(NO_COLS + 2)*(NO_ROWS + 2)];
+#endif
 
 #if defined SAVE_NEXTPOS
 extern const small_short direc[NO_PTYPE_PIECES][8];