Remove Whitespaces from chessbox

Remove 1616 Whitespaces from chessbox

Change-Id: I84c0dbd4a177eba50b9f7427f5695ae4b266aa5e
This commit is contained in:
William Wilgus 2017-01-31 01:07:47 +01:00
parent 324ad2483a
commit 37522ec63a
6 changed files with 1616 additions and 1616 deletions

View file

@ -7,7 +7,7 @@
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2006 Miguel A. Arévalo
* Copyright (C) 2006 Miguel A. Arévalo
* Color graphics from eboard
* GNUChess v2 chess engine Copyright (c) 1988 John Stanback
*
@ -20,7 +20,7 @@
* KIND, either express or implied.
*
****************************************************************************/
#include "plugin.h"
#if (MEMORYSIZE > 8) /* Lowmem doesn't have playback in chessbox */
@ -80,7 +80,7 @@ short plugin_mode;
/* level+1's string */
const char *level_string[] = { "Level 1: 60 moves / 5 min" ,
"Level 2: 60 moves / 15 min" ,
"Level 2: 60 moves / 15 min" ,
"Level 3: 60 moves / 30 min" ,
"Level 4: 40 moves / 30 min" ,
"Level 5: 40 moves / 60 min" ,
@ -120,7 +120,7 @@ static void cb_drawboard (void) {
short r , c , x , y ;
short l , piece , p_color ;
int b_color=1;
rb->lcd_clear_display();
for (r = 0; r < 8; r++) {
@ -132,8 +132,8 @@ static void cb_drawboard (void) {
if ( piece == no_piece ) {
rb->lcd_bitmap_part ( chessbox_pieces , 0 ,
TILE_HEIGHT * b_color ,
STRIDE( SCREEN_MAIN,
BMPWIDTH_chessbox_pieces,
STRIDE( SCREEN_MAIN,
BMPWIDTH_chessbox_pieces,
BMPHEIGHT_chessbox_pieces) ,
XOFS + x*TILE_WIDTH ,
YOFS + ( 7 - y )*TILE_HEIGHT ,
@ -146,8 +146,8 @@ static void cb_drawboard (void) {
4 * TILE_HEIGHT * ( piece - 1 ) +
2 * TILE_HEIGHT * p_color +
TILE_HEIGHT * b_color ,
STRIDE( SCREEN_MAIN,
BMPWIDTH_chessbox_pieces,
STRIDE( SCREEN_MAIN,
BMPWIDTH_chessbox_pieces,
BMPHEIGHT_chessbox_pieces) ,
XOFS + x*TILE_WIDTH ,
YOFS + (7 - y)*TILE_HEIGHT ,
@ -158,7 +158,7 @@ static void cb_drawboard (void) {
}
b_color = (b_color == 1) ? 0 : 1 ;
}
/* draw board limits */
#if (LCD_WIDTH > TILE_WIDTH*8) && (LCD_HEIGHT > TILE_HEIGHT*8)
rb->lcd_drawrect(XOFS - 1, YOFS - 1, TILE_WIDTH*8 + 2, TILE_HEIGHT*8 + 2);
@ -186,7 +186,7 @@ static void cb_switch ( short x , short y ) {
/* ---- callback for capturing interaction while thinking ---- */
static void cb_wt_callback ( void ) {
int button = BUTTON_NONE;
wt_command = COMMAND_NOP;
button = rb->button_get(false);
switch (button) {
@ -270,7 +270,7 @@ static void cb_saveposition ( void ) {
int fd;
short sq,i,c;
unsigned short temp;
rb->splash ( 0 , "Saving position" );
fd = rb->open(SAVE_FILE, O_WRONLY|O_CREAT, 0666);
@ -323,7 +323,7 @@ static void cb_restoreposition ( void ) {
int fd;
short sq;
unsigned short m;
if ( (fd = rb->open(SAVE_FILE, O_RDONLY)) >= 0 ) {
rb->splash ( 0 , "Loading position" );
rb->read(fd, &(computer), sizeof(computer));
@ -393,10 +393,10 @@ static int cb_menu_viewer(void)
int selection;
int result = 0;
bool menu_quit = false;
MENUITEM_STRINGLIST(menu,"Chessbox Menu",NULL,"Restart Game",
"Select Other Game", "Quit");
"Select Other Game", "Quit");
while(!menu_quit)
{
switch(rb->do_menu(&menu, &selection, NULL, false))
@ -422,7 +422,7 @@ static int cb_menu_viewer(void)
static struct cb_command cb_get_viewer_command (void) {
int button;
struct cb_command result = { 0, {0,0,0,0,0}, 0 };
/* main loop */
while ( true ) {
button = rb->button_get(true);
@ -476,7 +476,7 @@ static void cb_start_viewer(char* filename){
/* init board */
GNUChess_Initialize();
/* draw the board */
cb_drawboard();
@ -494,7 +494,7 @@ static void cb_start_viewer(char* filename){
rb->splash ( HZ*2 , "At the begining of the game" );
break;
}
board[locn[curr_ply->row_from][curr_ply->column_from]]
board[locn[curr_ply->row_from][curr_ply->column_from]]
= board[locn[curr_ply->row_to][curr_ply->column_to]];
color[locn[curr_ply->row_from][curr_ply->column_from]]
= color[locn[curr_ply->row_to][curr_ply->column_to]];
@ -601,14 +601,14 @@ static int cb_menu(void)
int selection;
int result = 0;
bool menu_quit = false;
MENUITEM_STRINGLIST(menu,"Chessbox Menu",NULL,"New Game","Resume Game",
"Save Game", "Restore Game",
#ifdef HAVE_PLAYBACK_CONTROL
"Playback Control",
#endif
"Quit");
"Quit");
while(!menu_quit)
{
switch(rb->do_menu(&menu, &selection, NULL, false))
@ -654,7 +654,7 @@ static struct cb_command cb_getcommand (void) {
int marked = false , from_marked = false ;
short marked_x = 0 , marked_y = 0 ;
struct cb_command result = { 0, {0,0,0,0,0}, 0 };
cb_switch ( x , y );
/* main loop */
while ( true ) {
@ -815,11 +815,11 @@ static void cb_play_game(void) {
/* init PGN history data structures */
game = pgn_init_game();
/* restore saved position, if saved */
cb_restoreposition();
/* TODO: save/restore the PGN history of unfinished games */
/* draw the board */
/* I don't like configscreens, start game inmediatly */
cb_drawboard();
@ -937,7 +937,7 @@ static void cb_play_game(void) {
break;
}
}
cb_saveposition();
/* TODO: save/restore the PGN history of unfinished games */
rb->lcd_setfont(FONT_UI);
@ -948,7 +948,7 @@ static void cb_play_game(void) {
* plugin entry point.
******************************************************************************/
enum plugin_status plugin_start(const void* parameter) {
/* plugin init */
#if LCD_DEPTH > 1
@ -957,7 +957,7 @@ enum plugin_status plugin_start(const void* parameter) {
/* end of plugin init */
/* if the plugin was invoked as a viewer, parse the file and show the game list
/* if the plugin was invoked as a viewer, parse the file and show the game list
* else, start playing a game
*/
if (parameter != NULL) {

View file

@ -7,7 +7,7 @@
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2007 Mauricio Peccorini
* Copyright (C) 2007 Mauricio Peccorini
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@ -417,7 +417,7 @@ static void coords_to_pgn(struct pgn_ply_node* ply){
&& ply->column_to + kn_offs[i][1] >= 0 && ply->column_to + kn_offs[i][1] <= 7
&& board[locn[ply->row_to + kn_offs[i][0]][ply->column_to + kn_offs[i][1]]] == knight
&& color[locn[ply->row_to + kn_offs[i][0]][ply->column_to + kn_offs[i][1]]] == ply->player
&& (ply->row_to + kn_offs[i][0] != ply->row_from
&& (ply->row_to + kn_offs[i][0] != ply->row_from
|| ply->column_to + kn_offs[i][1] != ply->column_from)){
if (ply->row_to + kn_offs[i][0] != ply->row_from){
unambiguous_position = '1' + ply->row_from;
@ -878,5 +878,5 @@ void pgn_store_game(struct pgn_game_node* game){
/* leave a blank line between the tag section and the game section */
rb->fdprintf(fhandler,"\n\n");
rb->close(fhandler);
rb->close(fhandler);
}

View file

@ -7,7 +7,7 @@
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2007 Mauricio Peccorini
* Copyright (C) 2007 Mauricio Peccorini
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License

View file

@ -128,7 +128,7 @@ short unmap[120]=
40,41,42,43,44,45,46,47,-1,-1,-1,-1,-1,-1,-1,-1,
48,49,50,51,52,53,54,55,-1,-1,-1,-1,-1,-1,-1,-1,
56,57,58,59,60,61,62,63};
short Dcode[120]=
short Dcode[120]=
{0,1,1,1,1,1,1,1,0,0,0,0,0,0,0x0E,0x0F,
0x10,0x11,0x12,0,0,0,0,0,0,0,0,0,0,0,0x0F,0x1F,
0x10,0x21,0x11,0,0,0,0,0,0,0,0,0,0,0x0F,0,0,
@ -243,7 +243,7 @@ short PawnAdvance[64]=
12,16,24,32,32,24,16,12,
12,16,24,32,32,24,16,12,
0, 0, 0, 0, 0, 0, 0, 0};
/* ............ prototypes ............ */
void ScorePosition( short side, short *score );
void ScoreLoneKing( short side, short *score );
@ -273,7 +273,7 @@ void PutInTTable ( short side, short score, short depth,
short alpha, short beta, unsigned short mv );
void ZeroTTable ( void );
void MoveList ( short side, short ply );
void GenMoves ( short ply, short sq, short side, short xside );
void LinkMove ( short ply, short f, short t, short xside );
void CaptureList ( short side, short xside, short ply );
@ -294,19 +294,19 @@ void ataks ( short side, short *a );
void algbr ( short f, short t, short flag );
void ElapsedTime( short iop);
void NewGame(void);
void NewGame(void);
/* ............ POSITIONAL EVALUATION ROUTINES ............ */
void ScorePosition(side,score)
short side,*score;
/*
Perform normal static evaluation of board position. A score is
generated for each piece and these are summed to get a score for each
side.
Perform normal static evaluation of board position. A score is
generated for each piece and these are summed to get a score for each
side.
*/
{
@ -334,10 +334,10 @@ short pscore[3];
}
if (hung[side] > 1) pscore[side] += HUNGX;
if (hung[xside] > 1) pscore[xside] += HUNGX;
*score = mtl[side] - mtl[xside] + pscore[side] - pscore[xside] + 10;
if (dither) *score += rb->rand() % dither;
if (*score > 0 && pmtl[side] == 0) {
if (emtl[side] < valueR) {
*score = 0;
@ -352,7 +352,7 @@ short pscore[3];
if (-*score < valueR) *score /= 2;
}
}
if (mtl[xside] == valueK && emtl[side] > valueB) *score += 200;
if (mtl[side] == valueK && emtl[xside] > valueB) *score -= 200;
}
@ -361,7 +361,7 @@ short pscore[3];
void ScoreLoneKing(side,score)
short side,*score;
/*
/*
Static evaluation when loser has only a king and winner has no pawns
or no pieces.
*/
@ -373,19 +373,19 @@ register short winner,loser,king1,king2,s,i;
if (mtl[white] > mtl[black]) winner = white; else winner = black;
loser = otherside[winner];
king1 = PieceList[winner][0]; king2 = PieceList[loser][0];
s = 0;
if (pmtl[winner] > 0)
for (i = 1; i <= PieceCnt[winner]; i++)
s += ScoreKPK(side,winner,loser,king1,king2,PieceList[winner][i]);
else if (emtl[winner] == valueB+valueN)
s = ScoreKBNK(winner,king1,king2);
else if (emtl[winner] > valueB)
s = 500 + emtl[winner] - 2*KingEnding[king2] - 2*distance(king1,king2);
if (side == winner) *score = s; else *score = -s;
}
@ -399,7 +399,7 @@ short side,winner,loser,king1,king2,sq;
{
register short s,r;
if (PieceCnt[winner] == 1) s = 50; else s = 120;
if (winner == white)
{
@ -569,8 +569,8 @@ short s,piece,in_square,r,mob,e,c;
if (PC2[7] == 0) s += KHOPNX;
}
}
if (a2 > 0)
if (a2 > 0)
{
c = (control[piece] & 0x4FFF);
if (a1 == 0 || a2 > c+1)
@ -665,13 +665,13 @@ void BRscan(sq,s,mob)
short sq,*s,*mob;
/*
Find Bishop and Rook mobility, XRAY attacks, and pins. Increment the
hung[] array if a pin is found.
Find Bishop and Rook mobility, XRAY attacks, and pins. Increment the
hung[] array if a pin is found.
*/
{
register short m,u,d,m0,j,piece,pin;
short *Kf;
short *Kf;
Kf = Kfield[c1];
*mob = 0;
@ -763,9 +763,9 @@ register short u,m,d,i,m0;
void ExaminePosition()
/*
This is done one time before the search is started. Set up arrays
Mwpawn, Mbpawn, Mknight, Mbishop, Mking which are used in the
SqValue() function to determine the positional value of each piece.
This is done one time before the search is started. Set up arrays
Mwpawn, Mbpawn, Mknight, Mbishop, Mking which are used in the
SqValue() function to determine the positional value of each piece.
*/
{
@ -800,14 +800,14 @@ short wpadv,bpadv,wstrong,bstrong,z,side,pp,j,val,Pd,fyle,rank;
if (!PawnStorm && stage < 5)
PawnStorm = ((column[wking] < 3 && column[bking] > 4) ||
(column[wking] > 4 && column[bking] < 3));
CopyBoard(pknight,Mknight[white]);
CopyBoard(pknight,Mknight[black]);
CopyBoard(pbishop,Mbishop[white]);
CopyBoard(pbishop,Mbishop[black]);
BlendBoard(KingOpening,KingEnding,Mking[white]);
BlendBoard(KingOpening,KingEnding,Mking[black]);
for (sq = 0; sq < 64; sq++)
{
fyle = column[sq]; rank = row[sq];
@ -845,7 +845,7 @@ short wpadv,bpadv,wstrong,bstrong,z,side,pp,j,val,Pd,fyle,rank;
if ((column[bking] < 4 && fyle > 4) ||
(column[bking] > 3 && fyle < 3)) Mbpawn[sq] -= 3*rank;
}
Mknight[white][sq] += 5 - distance(sq,bking);
Mknight[white][sq] += 5 - distance(sq,wking);
Mknight[black][sq] += 5 - distance(sq,wking);
@ -862,24 +862,24 @@ short wpadv,bpadv,wstrong,bstrong,z,side,pp,j,val,Pd,fyle,rank;
if (bstrong) Mknight[black][sq] += KNIGHTSTRONG;
if (wstrong) Mbishop[white][sq] += BISHOPSTRONG;
if (bstrong) Mbishop[black][sq] += BISHOPSTRONG;
if (HasBishop[white] == 2) Mbishop[white][sq] += 8;
if (HasBishop[black] == 2) Mbishop[black][sq] += 8;
if (HasKnight[white] == 2) Mknight[white][sq] += 5;
if (HasKnight[black] == 2) Mknight[black][sq] += 5;
if (board[sq] == bishop) {
if (rank % 2 == fyle % 2) {
KBNKsq = 0;
} else {
} else {
KBNKsq = 7;
}
}
Kfield[white][sq] = Kfield[black][sq] = 0;
if (distance(sq,wking) == 1) Kfield[black][sq] = KATAK;
if (distance(sq,bking) == 1) Kfield[white][sq] = KATAK;
Pd = 0;
for (i = 0; i < 64; i++)
if (board[i] == pawn)
@ -912,9 +912,9 @@ short wpadv,bpadv,wstrong,bstrong,z,side,pp,j,val,Pd,fyle,rank;
void UpdateWeights()
/*
If material balance has changed, determine the values for the
positional evaluation terms.
/*
If material balance has changed, determine the values for the
positional evaluation terms.
*/
{
@ -932,7 +932,7 @@ register short tmtl;
if (tmtl > 3600) stage2 = 0;
else if (tmtl < 1400) stage2 = 10;
else stage2 = (3600-tmtl) / 220;
PEDRNK2B = -15; /* centre pawn on 2nd rank & blocked */
PBLOK = -4; /* blocked backward pawn */
PDOUBLED = -14; /* doubled pawn */
@ -941,27 +941,27 @@ register short tmtl;
PADVNCM = 10; /* advanced pawn multiplier */
PADVNCI = 7; /* muliplier for isolated pawn */
PawnBonus = stage;
KNIGHTPOST = (stage+2)/3; /* knight near enemy pieces */
KNIGHTSTRONG = (stage+6)/2; /* occupies pawn hole */
BISHOPSTRONG = (stage+6)/2; /* occupies pawn hole */
BishopBonus = 2*stage;
RHOPN = 10; /* rook on half open file */
RHOPNX = 4;
RookBonus = 6*stage;
XRAY = 8; /* Xray attack on piece */
PINVAL = 10; /* Pin */
KHOPN = (3*stage-30) / 2; /* king on half open file */
KHOPNX = KHOPN / 2;
KCASTLD = 10 - stage;
KMOVD = -40 / (stage+1); /* king moved before castling */
KATAK = (10-stage) / 2; /* B,R attacks near enemy king */
if (stage < 8) KSFTY = 16-2*stage; else KSFTY = 0;
ATAKD = -6; /* defender > attacker */
HUNGP = -8; /* each hung piece */
HUNGX = -12; /* extra for >1 hung piece */
@ -1003,12 +1003,12 @@ register int sq;
int SelectMove( short side, short iop , void (*callback)(void), char* move_buffer)
/*
Select a move by calling function search() at progressively deeper
ply until time is up or a mate or draw is reached. An alpha-beta
window of -90 to +90 points is set around the score returned from the
previous iteration. If Sdepth != 0 then the program has correctly
predicted the opponents move and the search will start at a depth of
Sdepth+1 rather than a depth of 1.
Select a move by calling function search() at progressively deeper
ply until time is up or a mate or draw is reached. An alpha-beta
window of -90 to +90 points is set around the score returned from the
previous iteration. If Sdepth != 0 then the program has correctly
predicted the opponents move and the search will start at a depth of
Sdepth+1 rather than a depth of 1.
*/
{
@ -1032,7 +1032,7 @@ static short i,alpha,beta,score,tempb,tempc,tempsf,tempst,xside,rpt;
ExaminePosition();
ScorePosition(side,&score);
Pscore[0] = -score;
if (Sdepth == 0)
{
ZeroTTable();
@ -1043,7 +1043,7 @@ static short i,alpha,beta,score,tempb,tempc,tempsf,tempst,xside,rpt;
if (iop != 2) hint = 0;
for (i = 0; i < maxdepth; i++)
PrVar[i] = killr0[i] = killr1[i] = killr2[i] = killr3[i] = 0;
alpha = -9000; beta = 9000;
rpt = 0;
TrPnt[1] = 0; root = &Tree[0];
@ -1054,7 +1054,7 @@ static short i,alpha,beta,score,tempb,tempc,tempsf,tempst,xside,rpt;
NodeCnt = ETnodes = EvalNodes = HashCnt = 0;
Zscore = 0; zwndw = 20;
}
while (!timeout && Sdepth < MaxSearchDepth)
{
Sdepth++;
@ -1120,7 +1120,7 @@ static short i,alpha,beta,score,tempb,tempc,tempsf,tempst,xside,rpt;
if (score == -9999 || score == 9998) mate = true;
if (mate) hint = 0;
if (root->flags & cstlmask) Game50 = GameCnt;
else if (board[root->t] == pawn || (root->flags & capture))
else if (board[root->t] == pawn || (root->flags & capture))
Game50 = GameCnt;
GameList[GameCnt].score = score;
GameList[GameCnt].nodes = NodeCnt;
@ -1142,13 +1142,13 @@ static short i,alpha,beta,score,tempb,tempc,tempsf,tempst,xside,rpt;
void OpeningBook()
/*
Go thru each of the opening lines of play and check for a match with
the current game listing. If a match occurs, generate a random number.
If this number is the largest generated so far then the next move in
this line becomes the current "candidate". After all lines are
checked, the candidate move is put at the top of the Tree[] array and
will be played by the program. Note that the program does not handle
book transpositions.
Go thru each of the opening lines of play and check for a match with
the current game listing. If a match occurs, generate a random number.
If this number is the largest generated so far then the next move in
this line becomes the current "candidate". After all lines are
checked, the candidate move is put at the top of the Tree[] array and
will be played by the program. Note that the program does not handle
book transpositions.
*/
{
@ -1203,12 +1203,12 @@ int search( short side, short ply, short depth,
void (*callback)(void) )
/*
Perform an alpha-beta search to determine the score for the current
board position. If depth <= 0 only capturing moves, pawn promotions
and responses to check are generated and searched, otherwise all
moves are processed. The search depth is modified for check evasions,
certain re-captures and threats. Extensions may continue for up to 11
ply beyond the nominal search depth.
Perform an alpha-beta search to determine the score for the current
board position. If depth <= 0 only capturing moves, pawn promotions
and responses to check are generated and searched, otherwise all
moves are processed. The search depth is modified for check evasions,
certain re-captures and threats. Extensions may continue for up to 11
ply beyond the nominal search depth.
*/
#define prune (cf && score+node->score < alpha)
@ -1234,13 +1234,13 @@ struct leaf *node,tmp;
NodeCnt++;
xside = otherside[side];
if (ply <= Sdepth+3) repetition(rpt); else *rpt = 0;
if (*rpt >= 2) return(0);
score = evaluate(side,xside,ply,depth,alpha,beta);
if (score > 9000) return(score);
if (depth > 0)
{
if (InChk || PawnThreat[ply-1] || ReCapture) ++depth;
@ -1251,7 +1251,7 @@ struct leaf *node,tmp;
(InChk || PawnThreat[ply-1] || Parry)) depth = 1;
else if (score <= beta && MateThreat) depth = 1;
}
PV = 0;
if (depth > 0 && hashflag && ply > 1)
{
@ -1261,7 +1261,7 @@ struct leaf *node,tmp;
if (beta == -20000) return(score);
if (alpha > beta) return(alpha);
}
if (Sdepth == 1) d = 7; else d = 11;
if (ply > Sdepth+d || (depth <= 0 && score > beta)) return(score);
@ -1272,14 +1272,14 @@ struct leaf *node,tmp;
CaptureList(side,xside,ply);
}
}
if (TrPnt[ply] == TrPnt[ply+1]) return(score);
cf = (depth < 1 && ply > Sdepth+1 && !ChkFlag[ply-2] && !slk);
if (depth > 0) best = -12000; else best = score;
if (best > alpha) alpha = best;
for (pnt = pbst = TrPnt[ply];
pnt < TrPnt[ply+1] && best <= beta;
pnt++)
@ -1288,7 +1288,7 @@ struct leaf *node,tmp;
node = &Tree[pnt];
mv = (node->f << 8) + node->t;
nxtline[ply+1] = 0;
if (prune) break;
if (ply == 1) UpdateSearchStatus;
@ -1339,7 +1339,7 @@ struct leaf *node,tmp;
if (NodeCnt > ETnodes) ElapsedTime(0);
if (timeout) return(-Tscore[ply-1]);
}
node = &Tree[pbst];
mv = (node->f<<8) + node->t;
if (hashflag && ply <= Sdepth && *rpt == 0 && best == alpha)
@ -1368,13 +1368,13 @@ int evaluate(side,xside,ply,depth,alpha,beta)
short side,xside,ply,depth,alpha,beta;
/*
Compute an estimate of the score by adding the positional score from
the previous ply to the material difference. If this score falls
inside a window which is 180 points wider than the alpha-beta window
(or within a 50 point window during quiescence search) call
ScorePosition() to determine a score, otherwise return the estimated
score. If one side has only a king and the other either has no pawns
or no pieces then the function ScoreLoneKing() is called.
Compute an estimate of the score by adding the positional score from
the previous ply to the material difference. If this score falls
inside a window which is 180 points wider than the alpha-beta window
(or within a 50 point window during quiescence search) call
ScorePosition() to determine a score, otherwise return the estimated
score. If one side has only a king and the other either has no pawns
or no pieces then the function ScoreLoneKing() is called.
*/
{
@ -1384,13 +1384,13 @@ register short evflag;
hung[white] = hung[black] = 0;
slk = ((mtl[white] == valueK && (pmtl[black] == 0 || emtl[black] == 0)) ||
(mtl[black] == valueK && (pmtl[white] == 0 || emtl[white] == 0)));
if (slk) evflag = false;
else evflag =
else evflag =
(ply == 1 || ply < Sdepth ||
(depth == 0 && Xscore > alpha-xwndw && Xscore < beta+xwndw) ||
(depth < 0 && Xscore > alpha-25 && Xscore < beta+25));
if (evflag)
{
EvalNodes++;
@ -1406,7 +1406,7 @@ register short evflag;
InChk = SqAtakd(PieceList[side][0],xside);
if (slk) ScoreLoneKing(side,&Xscore);
}
Pscore[ply] = Xscore - mtl[side] + mtl[xside];
if (InChk) ChkFlag[ply-1] = Pindex[TOsquare];
else ChkFlag[ply-1] = 0;
@ -1417,7 +1417,7 @@ register short evflag;
int ProbeTTable(side,depth,alpha,beta,score)
short side,depth,*alpha,*beta,*score;
/*
/*
Look for the current board position in the transposition table.
*/
@ -1466,7 +1466,7 @@ short hindx;
ptbl = (ttable + hindx);
ptbl->hashbd = hashbd;
ptbl->depth = depth;
ptbl->score = score;
ptbl->score = score;
ptbl->mv = mv;
ptbl->flags = 0;
if (score < alpha) ptbl->flags |= upperbound;
@ -1491,10 +1491,10 @@ void MoveList(side,ply)
short side,ply;
/*
Fill the array Tree[] with all available moves for side to play. Array
TrPnt[ply] contains the index into Tree[] of the first move at a ply.
Fill the array Tree[] with all available moves for side to play. Array
TrPnt[ply] contains the index into Tree[] of the first move at a ply.
*/
{
register short i,xside,f;
@ -1528,15 +1528,15 @@ void GenMoves(ply,sq,side,xside)
short ply,sq,side,xside;
/*
Generate moves for a piece. The from square is mapped onto a special
board and offsets (taken from array Dir[]) are added to the mapped
location. The newly generated square is tested to see if it falls off
the board by ANDing the square with 88 HEX. Legal moves are linked
into the tree.
Generate moves for a piece. The from square is mapped onto a special
board and offsets (taken from array Dir[]) are added to the mapped
location. The newly generated square is tested to see if it falls off
the board by ANDing the square with 88 HEX. Legal moves are linked
into the tree.
*/
{
register short m,u,d,i,m0,piece;
register short m,u,d,i,m0,piece;
piece = board[sq]; m0 = map[sq];
if (sweep[piece])
@ -1605,7 +1605,7 @@ short ply,f,t,xside;
2. Capture of last moved piece
3. Other captures (major pieces first)
4. Killer moves
5. "history" killers
5. "history" killers
*/
{
@ -1688,7 +1688,7 @@ struct leaf *node;
}
PL = PieceList[side];
for (i = 0; i <= PieceCnt[side]; i++)
{
{
sq = PL[i];
m0 = map[sq]; piece = board[sq];
j1 = Dstart[piece]; j2 = Dstop[piece];
@ -1724,7 +1724,7 @@ struct leaf *node;
}
}
int castle(side,kf,kt,iop)
short side,kf,kt,iop;
@ -1792,7 +1792,7 @@ register short l;
{
board[l] = no_piece; color[l] = neutral;
}
else
else
{
board[l] = pawn; color[l] = xside;
}
@ -1805,11 +1805,11 @@ short side,*tempc,*tempb,*tempsf,*tempst;
struct leaf *node;
/*
Update Arrays board[], color[], and Pindex[] to reflect the new board
position obtained after making the move pointed to by node. Also
update miscellaneous stuff that changes when a move is made.
Update Arrays board[], color[], and Pindex[] to reflect the new board
position obtained after making the move pointed to by node. Also
update miscellaneous stuff that changes when a move is made.
*/
{
register short f,t,xside,ct,cf;
@ -1874,7 +1874,7 @@ register short f,t,xside,ct,cf;
UpdateHashbd(side,queen,f,-1);
}
INCscore -= *tempsf;
}
}
if (board[t] == king) ++kingmoved[side];
if (node->flags & epmask) EnPassant(xside,f,t,1);
else if (hashflag) UpdateHashbd(side,board[t],f,t);
@ -1913,7 +1913,7 @@ register short f,t,xside;
UpdateHashbd(side,queen,-1,t);
UpdateHashbd(side,pawn,-1,t);
}
}
}
if (*tempc != neutral)
{
UpdatePieceList(*tempc,t,2);
@ -1938,10 +1938,10 @@ void UpdateHashbd(side,piece,f,t)
short side,piece,f,t;
/*
hashbd contains a 32 bit "signature" of the board position. hashkey
contains a 16 bit code used to address the hash table. When a move is
made, XOR'ing the hashcode of moved piece on the from and to squares
with the hashbd and hashkey values keeps things current.
hashbd contains a 32 bit "signature" of the board position. hashkey
contains a 16 bit code used to address the hash table. When a move is
made, XOR'ing the hashcode of moved piece on the from and to squares
with the hashbd and hashkey values keeps things current.
*/
{
@ -1962,8 +1962,8 @@ void UpdatePieceList(side,sq,iop)
short side,sq,iop;
/*
Update the PieceList and Pindex arrays when a piece is captured or
when a capture is unmade.
Update the PieceList and Pindex arrays when a piece is captured or
when a capture is unmade.
*/
{
@ -1989,13 +1989,13 @@ register short i;
void InitializeStats()
/*
Scan thru the board seeing what's on each square. If a piece is found,
update the variables PieceCnt, PawnCnt, Pindex and PieceList. Also
determine the material for each side and set the hashkey and hashbd
variables to represent the current board position. Array
PieceList[side][indx] contains the location of all the pieces of
either side. Array Pindex[sq] contains the indx into PieceList for a
given square.
Scan thru the board seeing what's on each square. If a piece is found,
update the variables PieceCnt, PawnCnt, Pindex and PieceList. Also
determine the material for each side and set the hashkey and hashbd
variables to represent the current board position. Array
PieceList[side][indx] contains the location of all the pieces of
either side. Array Pindex[sq] contains the indx into PieceList for a
given square.
*/
{
@ -2027,9 +2027,9 @@ register short i,sq;
void pick(p1,p2)
short p1,p2;
/*
Find the best move in the tree between indexes p1 and p2. Swap the
best move into the p1 element.
/*
Find the best move in the tree between indexes p1 and p2. Swap the
best move into the p1 element.
*/
{
@ -2081,7 +2081,7 @@ short sq,side;
/*
See if any piece with color 'side' ataks sq. First check for pawns
or king, then try other pieces. Array Dcode is used to check for
knight attacks or R,B,Q co-linearity.
knight attacks or R,B,Q co-linearity.
*/
{
@ -2095,7 +2095,7 @@ register short m,d,m0,m1,i,loc,piece,*PL;
if (!(m & 0x88))
if (board[unmap[m]] == pawn && color[unmap[m]] == side) return(true);
if (distance(sq,PieceList[side][0]) == 1) return(true);
PL = PieceList[side];
for (i = 1; i <= PieceCnt[side]; i++)
{
@ -2128,8 +2128,8 @@ short side,*a;
{
register short u,m,d,c,m0;
short j,j1,j2,piece,i,sq,*PL;
for (u = 0; u < 64; a[u++] = 0);
for (u = 0; u < 64; a[u++] = 0);
Dstart[pawn] = Dpwn[side]; Dstop[pawn] = Dstart[pawn] + 1;
PL = PieceList[side];
for (i = 0; i <= PieceCnt[side]; i++)
@ -2164,10 +2164,10 @@ short j,j1,j2,piece,i,sq,*PL;
void ElapsedTime(iop)
/*
Determine the time that has passed since the search was started. If
the elapsed time exceeds the target (ResponseTime+ExtraTime) then set
timeout to true which will terminate the search.
/*
Determine the time that has passed since the search was started. If
the elapsed time exceeds the target (ResponseTime+ExtraTime) then set
timeout to true which will terminate the search.
*/
short iop;
@ -2230,7 +2230,7 @@ void SetTimeControl( void )
int VerifyMove(short player, char s[],short iop,unsigned short *mv, char *move_buffer)
/*
Compare the string 's' to the list of legal moves available for the
Compare the string 's' to the list of legal moves available for the
player. If a match is found, make the move on the board. This was originally
fixed for the opponent, but allowing the player to be specified will make
possible to use GnuChess as a human vs human game verifier. It also allows
@ -2277,7 +2277,7 @@ short opponent_player = (player == white)?black:white;
/*if (xnode.flags & epmask) UpdateDisplay(0,0,1,0);
else UpdateDisplay(xnode.f,xnode.t,0,xnode.flags & cstlmask);*/
if (xnode.flags & cstlmask) Game50 = GameCnt;
else if (board[xnode.t] == pawn || (xnode.flags & capture))
else if (board[xnode.t] == pawn || (xnode.flags & capture))
Game50 = GameCnt;
GameList[GameCnt].depth = GameList[GameCnt].score = 0;
GameList[GameCnt].nodes = 0;
@ -2298,7 +2298,7 @@ short opponent_player = (player == white)?black:white;
}
return(true);
}
}
}
/*if (cnt > 1) ShowMessage("Ambiguous Move!");*/
return(false);
@ -2363,7 +2363,7 @@ void GNUChess_Initialize ( void ) {
TCminutes = 5;
TCflag = true;
NewGame();
MaxSearchDepth = 29 ;
MaxSearchDepth = 29 ;
}
void algbr(f,t,flag)
@ -2381,7 +2381,7 @@ short f,t,flag;
rb->memcpy(mvstr2,"o-o-o", 5);
}
}
if (board[f] == pawn) mvstr3[0] = mvstr1[0];
else mvstr3[0] = qxx[board[f]];
if (color[t] != neutral)

View file

@ -4,7 +4,7 @@
#define neutral 2
#define white 0
#define black 1
#define black 1
#define no_piece 0
#define pawn 1
#define knight 2

File diff suppressed because it is too large Load diff