X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gnushogi%2Fgnushogi.h;h=48408d75a5fc8e96c756cbb4f0eed558ce630f7f;hb=5ea6210573f345d63d7aafeb125726d3dc9b2238;hp=2640a210fd4c95318978f96bc68b91f63fabb985;hpb=2afa5512342f9662cb5d8f94ed060dbd69a74c3d;p=gnushogi.git diff --git a/gnushogi/gnushogi.h b/gnushogi/gnushogi.h index 2640a21..48408d7 100644 --- a/gnushogi/gnushogi.h +++ b/gnushogi/gnushogi.h @@ -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 #include -#include -#include - +#ifdef WIN32 +# include +#else + typedef small_short BYTE; +# include +# include +#endif #if TIME_WITH_SYS_TIME # include @@ -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 */ -#define pxx (CP[2]) -#define qxx (CP[1]) -#define rxx (CP[4]) -#define cxx (CP[3]) +#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 @@ -728,7 +764,6 @@ extern short balance[2]; extern small_short ChkFlag[], CptrFlag[], TesujiFlag[]; extern short Pscore[], Tscore[]; extern /*unsigned*/ short rehash; /* -1 is used as a flag --tpm */ -extern char version[], patchlevel[]; extern unsigned int ttbllimit; extern unsigned int TTadd; extern unsigned int ttblsize; @@ -753,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]; @@ -819,7 +858,6 @@ typedef struct hashval drop_hashcode_array[2][NO_PIECES][NO_SQUARES]; extern hashcode_array *hashcode; extern drop_hashcode_array *drop_hashcode; -extern char *CP[]; #ifdef QUIETBACKGROUND extern short background; @@ -862,6 +900,10 @@ extern struct hashentry *ttable[2]; extern short rpthash[2][256]; extern char *DRAW; +extern char* DRAW_REPETITION; +extern char *DRAW_MAXMOVES; +extern char *DRAW_JUSTDRAW; + #define row(a) ((a) / NO_COLS) #define column(a) ((a) % NO_COLS) #define locn(a, b) (((a) * NO_COLS) + b) @@ -1067,6 +1109,7 @@ extern void ShowLine(unsigned short *bstline); extern int pick(short p1, short p2); extern short repetition(void); extern void TimeCalc(void); +extern void ElapsedTime(ElapsedTime_mode iop); extern short DropPossible(short piece, short side, short sq); /* genmoves.c */