diff options
Diffstat (limited to 'games/exchess/patches/patch-ai')
-rw-r--r-- | games/exchess/patches/patch-ai | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/games/exchess/patches/patch-ai b/games/exchess/patches/patch-ai new file mode 100644 index 00000000000..30aec137df7 --- /dev/null +++ b/games/exchess/patches/patch-ai @@ -0,0 +1,130 @@ +$NetBSD: patch-ai,v 1.1 2004/02/14 04:31:56 kristerw Exp $ + +--- exmove.cpp.orig Sat Feb 14 04:16:56 2004 ++++ exmove.cpp Sat Feb 14 04:19:15 2004 +@@ -52,8 +52,8 @@ + { return 0; } + p->sq[5] = p->sq[7]; + p->sq[7] = empty; +- or(p->hcode, hval[WROOK][5]); +- or(p->hcode, hval[WROOK][7]); ++ hash_or(p->hcode, hval[WROOK][5]); ++ hash_or(p->hcode, hval[WROOK][7]); + p->has_castled[1] = 1; + /* update piece list */ + for(pi=1;pi<=p->plist[p->wtm][ROOK][0];pi++) +@@ -69,8 +69,8 @@ + { return 0; } + p->sq[3] = p->sq[0]; + p->sq[0] = empty; +- or(p->hcode, hval[WROOK][3]); +- or(p->hcode, hval[WROOK][0]); ++ hash_or(p->hcode, hval[WROOK][3]); ++ hash_or(p->hcode, hval[WROOK][0]); + p->has_castled[1] = 1; + /* update piece list */ + for(pi=1;pi<=p->plist[p->wtm][ROOK][0];pi++) +@@ -86,8 +86,8 @@ + { return 0; } + p->sq[61] = p->sq[63]; + p->sq[63] = empty; +- or(p->hcode, hval[BROOK][61]); +- or(p->hcode, hval[BROOK][63]); ++ hash_or(p->hcode, hval[BROOK][61]); ++ hash_or(p->hcode, hval[BROOK][63]); + p->has_castled[0] = 1; + /* update piece list */ + for(pi=1;pi<=p->plist[p->wtm][ROOK][0];pi++) +@@ -103,8 +103,8 @@ + { return 0; } + p->sq[59] = p->sq[56]; + p->sq[56] = empty; +- or(p->hcode, hval[BROOK][59]); +- or(p->hcode, hval[BROOK][56]); ++ hash_or(p->hcode, hval[BROOK][59]); ++ hash_or(p->hcode, hval[BROOK][56]); + p->has_castled[0] = 1; + /* update piece list */ + for(pi=1;pi<=p->plist[p->wtm][ROOK][0];pi++) +@@ -125,7 +125,7 @@ + + if(p->sq[emove.b.to].type) { + // Remove hashcode for the target square +- or(p->hcode, hval[ID(p->sq[emove.b.to])][emove.b.to]); ++ hash_or(p->hcode, hval[ID(p->sq[emove.b.to])][emove.b.to]); + // Remove piece from piece list + for(pi=1;pi<=p->plist[p->wtm^1][p->sq[emove.b.to].type][0];pi++) + if(p->plist[p->wtm^1][p->sq[emove.b.to].type][pi] == emove.b.to) { +@@ -143,8 +143,8 @@ + // Move the new piece to the target square + p->sq[emove.b.to] = p->sq[emove.b.from]; + // Update the hash code to reflect the move +- or(p->hcode, hval[ID(p->sq[emove.b.from])][emove.b.from]); +- or(p->hcode, hval[ID(p->sq[emove.b.from])][emove.b.to]); ++ hash_or(p->hcode, hval[ID(p->sq[emove.b.from])][emove.b.from]); ++ hash_or(p->hcode, hval[ID(p->sq[emove.b.from])][emove.b.to]); + // Original square is now empty + p->sq[emove.b.from] = empty; + +@@ -152,7 +152,7 @@ + if(emove.b.type&EP) { + if(p->wtm) { + p->sq[emove.b.to-8] = empty; +- or(p->hcode, hval[BPAWN][emove.b.to-8]); ++ hash_or(p->hcode, hval[BPAWN][emove.b.to-8]); + // Update piece lists + for(pi=1;pi<=p->plist[p->wtm^1][PAWN][0];pi++) + if(p->plist[BLACK][PAWN][pi] == emove.b.to-8) { +@@ -163,7 +163,7 @@ + } + } else { + p->sq[emove.b.to+8] = empty; +- or(p->hcode, hval[WPAWN][emove.b.to+8]); ++ hash_or(p->hcode, hval[WPAWN][emove.b.to+8]); + // Update piece lists + for(pi=1;pi<=p->plist[p->wtm^1][PAWN][0];pi++) + if(p->plist[WHITE][PAWN][pi] == emove.b.to+8) { +@@ -189,7 +189,7 @@ + // if the move is a promotion, promote it + if(emove.b.type&PROMOTE) { + // Remove the pawn from the hash code +- or(p->hcode, hval[ID(p->sq[emove.b.to])][emove.b.to]); ++ hash_or(p->hcode, hval[ID(p->sq[emove.b.to])][emove.b.to]); + // Change the piece type to the promoted piece + p->sq[emove.b.to].type = emove.b.promote; + // Add the new piece to the piece lists +@@ -206,7 +206,7 @@ + // adjust material score + p->material += value[emove.b.promote] - value[PAWN]; + // add piece to hash code +- or(p->hcode, hval[ID(p->sq[emove.b.to])][emove.b.to]); ++ hash_or(p->hcode, hval[ID(p->sq[emove.b.to])][emove.b.to]); + // adjust total piece count + p->pieces[p->wtm]++; + } +@@ -214,11 +214,11 @@ + // update position characteristics + p->wtm = p->wtm^1; + p->material = -p->material; +- or(p->hcode, btm); or(p->hcode, wtm); ++ hash_or(p->hcode, btm); hash_or(p->hcode, wtm); + + // undo hash code for en-passant and castling status +- or(p->hcode, ep_code[p->ep]); +- or(p->hcode, castle_code[p->castle]); ++ hash_or(p->hcode, ep_code[p->ep]); ++ hash_or(p->hcode, castle_code[p->castle]); + + // if move is a pawn push 2 spaces, set en passant flag + if((emove.b.type&PAWN_PUSH2) && +@@ -235,8 +235,8 @@ + p->last = emove; + + // update hash code for en-passant and castling status +- or(p->hcode, ep_code[p->ep]); +- or(p->hcode, castle_code[p->castle]); ++ hash_or(p->hcode, ep_code[p->ep]); ++ hash_or(p->hcode, castle_code[p->castle]); + + // check whether other side is placed in check + int ptype = p->sq[emove.b.to].type; |