X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gnushogi%2Fgnushogi.h;h=48408d75a5fc8e96c756cbb4f0eed558ce630f7f;hb=64a6402e25ca82e2fb7ccfb22b5db582c5be2fc7;hp=37972f425b6f89b852fcee229a3fb47d833c56b0;hpb=8ae7e7d1b257ef36d8a9fd1cd88807954ef10764;p=gnushogi.git
diff --git a/gnushogi/gnushogi.h b/gnushogi/gnushogi.h
index 37972f4..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
*
@@ -16,8 +17,8 @@
*
* GNU Shogi is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 1, or (at your option) any
- * later version.
+ * Free Software Foundation; either version 3 of the License,
+ * or (at your option) any later version.
*
* GNU Shogi is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
@@ -25,18 +26,21 @@
* for more details.
*
* You should have received a copy of the GNU General Public License along
- * with GNU Shogi; see the file COPYING. If not, write to the Free
- * Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ * with GNU Shogi; see the file COPYING. If not, see
+ * .
* ----------------------------------------------------------------------
*
*/
+/* Hack for anal-retentive ANSI-compliance if desired: */
+#define inline
+
/* FIXME: this file needs to be reorganized in some rational manner. */
#ifndef _GNUSHOGI_H_
#define _GNUSHOGI_H_
-#include "../config.h" /* Portability #defines. */
+#include "config.h" /* Portability #defines. */
#include "debug.h"
#include "opts.h" /* Various option-setting #defines. */
@@ -44,7 +48,13 @@
* Display options.
*/
-typedef enum { DISPLAY_RAW, DISPLAY_CURSES, DISPLAY_X } display_t;
+typedef enum {
+ DISPLAY_RAW,
+#ifdef HAVE_LIBCURSES
+ DISPLAY_CURSES,
+#endif
+ DISPLAY_X
+} display_t;
extern display_t display_type;
#define XSHOGI (display_type == DISPLAY_X)
@@ -72,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;
@@ -121,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
@@ -136,7 +149,6 @@ typedef unsigned long ULONG;
# endif
#endif
-
#define RWA_ACC "r+"
#define WA_ACC "w+"
#ifdef BINBOOK
@@ -153,19 +165,30 @@ 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_SQUARES 81
-#define NO_SQUARES_1 80
#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)
#endif
-#include "dspwrappers.h" /* Display functions. */
#include "eval.h"
#define SCORE_LIMIT 12000
@@ -208,17 +231,28 @@ 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 */
+#ifndef false
#define false 0
+#endif
+
+#ifndef true
#define true 1
+#endif
/* colors */
#define black 0
@@ -226,39 +260,52 @@ extern void movealgbr(short m, char *s);
#define neutral 2
/* piece code defines */
-/* CHECKME: Replace with an enum? */
-#define no_piece 0
-#define pawn 1
-#define lance 2
-#define knight 3
-#define silver 4
-#define gold 5
-#define bishop 6
-#define rook 7
-#define ppawn 8
-#define plance 9
-#define pknight 10
-#define psilver 11
-#define pbishop 12
-#define prook 13
-#define king 14
-
-#define ptype_no_piece 0
-#define ptype_pawn 0
-#define ptype_lance 1
-#define ptype_knight 2
-#define ptype_silver 3
-#define ptype_gold 4
-#define ptype_bishop 5
-#define ptype_rook 6
-#define ptype_pbishop 7
-#define ptype_prook 8
-#define ptype_king 9
-#define ptype_wpawn 10
-#define ptype_wlance 11
-#define ptype_wknight 12
-#define ptype_wsilver 13
-#define ptype_wgold 14
+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,
+ king
+};
+
+/* move types */
+enum {
+ ptype_no_piece = 0,
+ ptype_pawn = 0,
+#ifndef MINISHOGI
+ ptype_lance,
+ ptype_knight,
+#endif
+ ptype_silver,
+ ptype_gold,
+ ptype_bishop,
+ ptype_rook,
+ ptype_pbishop,
+ ptype_prook,
+ ptype_king,
+ ptype_wpawn,
+#ifndef MINISHOGI
+ ptype_wlance,
+ ptype_wknight,
+#endif
+ ptype_wsilver,
+ ptype_wgold
+};
/* node flags */
#define pmask 0x000f /* 15 */
@@ -282,10 +329,17 @@ extern void movealgbr(short m, char *s);
#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 ********************************************/
@@ -331,7 +385,7 @@ extern void movealgbr(short m, char *s);
#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
@@ -710,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;
@@ -735,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];
@@ -801,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;
@@ -844,14 +900,13 @@ extern struct hashentry *ttable[2];
extern short rpthash[2][256];
extern char *DRAW;
-/*
- * FIXME: these should be more generic instead of using the
- * magic number 9.
- */
+extern char* DRAW_REPETITION;
+extern char *DRAW_MAXMOVES;
+extern char *DRAW_JUSTDRAW;
-#define row(a) ((a) / 9)
-#define column(a) ((a) % 9)
-#define locn(a, b) (((a) * 9) + b)
+#define row(a) ((a) / NO_COLS)
+#define column(a) ((a) % NO_COLS)
+#define locn(a, b) (((a) * NO_COLS) + b)
/* init external functions */
extern void InitConst(char *lang); /* init.c */
@@ -1017,7 +1072,6 @@ typedef enum
#endif
} ElapsedTime_mode;
-extern void ElapsedTime(ElapsedTime_mode iop);
extern void SetResponseTime(short side);
extern void CheckForTimeout(int score, int globalscore,
int Jscore, int zwndw);
@@ -1028,7 +1082,6 @@ extern void SearchStartStuff(short side);
extern void ShowDepth(char ch);
extern void TerminateSearch(int);
extern void ShowResults(short score, unsigned short *bstline, char ch);
-extern void PromptForMove(void);
extern void SetupBoard(void);
extern void algbr(short f, short t, short flag);
extern void OutputMove(void);
@@ -1036,10 +1089,6 @@ extern void ShowCurrentMove(short pnt, short f, short t);
extern void ListGame(void);
extern void ShowMessage(char *s);
extern void ClearScreen(void);
-extern void gotoXY(short x, short y);
-extern void ClearEoln(void);
-extern void DrawPiece(short sq);
-extern void UpdateClocks(void);
extern void DoDebug(void);
extern void DoTable(short table[NO_SQUARES]);
extern void ShowPostnValues(void);
@@ -1060,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 */
@@ -1075,7 +1125,8 @@ typedef enum
} VerifyMove_mode;
extern int VerifyMove(char *s, VerifyMove_mode iop, unsigned short *mv);
-extern void AgeTT();
extern unsigned short TTage;
+#include "dspwrappers.h" /* Display functions. */
+
#endif /* _GNUSHOGI_H_ */