X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gnushogi%2Fgnushogi.h;h=29d9abee482f99ff08472922e95ee3c23ff82104;hb=6ec68dbedbcb4225cfe8e29e32675cb0fa486b34;hp=71a4e3fd50216ce1ba51d7cfb905a6b1ece5f385;hpb=5fbd58dc91d27467d3ccbea2d76ab70a5ff2b3f7;p=gnushogi.git diff --git a/gnushogi/gnushogi.h b/gnushogi/gnushogi.h index 71a4e3f..29d9abe 100644 --- a/gnushogi/gnushogi.h +++ b/gnushogi/gnushogi.h @@ -4,11 +4,15 @@ * Main header file for GNU Shogi. * * ---------------------------------------------------------------------- - * - * Copyright (c) 2012 Free Software Foundation + * 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 * + * Copyright (c) 1988, 1989, 1990 John Stanback + * Copyright (c) 1992 Free Software Foundation + * * This file is part of GNU SHOGI. * * GNU Shogi is free software; you can redistribute it and/or modify it @@ -40,22 +44,27 @@ #include "debug.h" #include "opts.h" /* Various option-setting #defines. */ +#include + /* * 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) -#define NOT_CURSES ((display_type == DISPLAY_X) \ - || (display_type == DISPLAY_RAW)) /* Miscellaneous globals. */ extern short hard_time_limit; /* If you exceed time limit, you lose. */ -extern short barebones; /* Don't print of stats for x interface. */ extern short nolist; /* Don't list game after exit. */ @@ -72,7 +81,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 +129,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 @@ -152,11 +164,21 @@ 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 +#define NO_CAMP_ROWS 1 +#else #define NO_PIECES 15 #define MAX_CAPTURED 19 #define NO_PTYPE_PIECES 15 #define NO_COLS 9 #define NO_ROWS 9 +#define NO_CAMP_ROWS 3 +#endif #define NO_SQUARES (NO_COLS*NO_ROWS) #define ROW_NAME(n) ('a' + NO_ROWS - 1 - n) @@ -166,7 +188,6 @@ extern void movealgbr(short m, char *s); # define PTBLBDSIZE (NO_SQUARES + NO_PIECES) #endif -#include "dspwrappers.h" /* Display functions. */ #include "eval.h" #define SCORE_LIMIT 12000 @@ -209,12 +230,13 @@ extern void movealgbr(short m, char *s); /* board properties */ -#define InBlackCamp(sq) ((sq) < 27) -#define InWhiteCamp(sq) ((sq) > 53) +#define InBlackCamp(sq) ((sq) < (NO_COLS * NO_CAMP_ROWS)) +#define InWhiteCamp(sq) ((sq) >= (NO_COLS * (NO_ROWS - NO_CAMP_ROWS))) #define InPromotionZone(side, sq) \ (((side) == black) ? InWhiteCamp(sq) : InBlackCamp(sq)) /* constants */ +/* FIXME ? */ #define OPENING_HINT 0x141d /* P7g-7f (20->29) */ /* truth values */ @@ -235,26 +257,34 @@ 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, king }; +/* move types */ enum { ptype_no_piece = 0, ptype_pawn = 0, +#ifndef MINISHOGI ptype_lance, ptype_knight, +#endif ptype_silver, ptype_gold, ptype_bishop, @@ -263,8 +293,10 @@ enum { ptype_prook, ptype_king, ptype_wpawn, +#ifndef MINISHOGI ptype_wlance, ptype_wknight, +#endif ptype_wsilver, ptype_wgold }; @@ -291,10 +323,13 @@ 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 ") +#else +#define pxx (" PSGBRPSBRK ") +#define qxx (" psgbrpsbrk ") +#endif /***************** Table limits ********************************************/ @@ -340,7 +375,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 @@ -640,8 +675,6 @@ extern long znodes; extern char ColorStr[2][10]; extern char mvstr[4][6]; -extern unsigned short MV[MAXDEPTH]; -extern int MSCORE; extern int mycnt1, mycnt2; extern short ahead; extern struct leaf rootnode; @@ -719,7 +752,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; @@ -744,7 +776,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]; @@ -810,7 +846,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; @@ -853,6 +888,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) @@ -866,10 +905,8 @@ extern void Unlock_data(void); /* init.c */ extern void Initialize_dist(void); /* init.c */ extern void Initialize_eval(void); /* eval.c */ extern void NewGame(void); -extern int parse(FILE * fd, unsigned short *mv, - short side, char *opening); extern void GetOpenings(void); -extern int OpeningBook(unsigned short *hint, short side); +extern int OpeningBook(unsigned short *hint); typedef enum { @@ -916,7 +953,6 @@ PutInTTable(short side, short score, short depth, short ply, - short alpha, short beta, unsigned short mv); @@ -1021,7 +1057,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); @@ -1032,7 +1067,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); @@ -1040,10 +1074,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); @@ -1064,6 +1094,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 */ @@ -1081,4 +1112,55 @@ typedef enum extern int VerifyMove(char *s, VerifyMove_mode iop, unsigned short *mv); extern unsigned short TTage; +/* display driver framework */ + +struct display +{ + void (*ChangeAlphaWindow)(void); + void (*ChangeBetaWindow)(void); + void (*ChangeHashDepth)(void); + void (*ChangeSearchDepth)(char *sx); + void (*ChangeXwindow)(void); + void (*ClearScreen)(void); + void (*DoDebug)(void); + void (*DoTable)(short table[NO_SQUARES]); + void (*EditBoard)(void); + void (*ExitShogi)(void); + void (*GiveHint)(void); + void (*Initialize)(void); + void (*ShowNodeCnt)(long NodeCnt); + void (*OutputMove)(void); + void (*PollForInput)(void); + void (*SetContempt)(void); + void (*SearchStartStuff)(short side); + void (*SelectLevel)(char *sx); + void (*ShowCurrentMove)(short pnt, short f, short t); + void (*ShowDepth)(char ch); + void (*ShowGameType)(void); + void (*ShowLine)(unsigned short *bstline); + void (*ShowMessage)(char *s); + void (*AlwaysShowMessage)(const char *format, ...); + void (*Printf)(const char *format, ...); + void (*doRequestInputString)(const char* fmt, char* buffer); + int (*GetString)(char* sx); + void (*SetupBoard)(void); + void (*ShowPatternCount)(short side, short n); + void (*ShowPostnValue)(short sq); + void (*ShowPostnValues)(void); + void (*ShowPrompt)(void); + void (*ShowResponseTime)(void); + void (*ShowResults)(short score, unsigned short *bstline, char ch); + void (*ShowSidetoMove)(void); + void (*ShowStage)(void); + void (*TerminateSearch)(int sig); + void (*UpdateClocks)(void); + void (*UpdateDisplay)(short f, short t, short redraw, short isspec); + void (*help)(void); +}; + +extern struct display *dsp; + +extern struct display raw_display; +extern struct display curses_display; + #endif /* _GNUSHOGI_H_ */