summaryrefslogtreecommitdiff
path: root/games/exchess/patches/patch-ai
diff options
context:
space:
mode:
Diffstat (limited to 'games/exchess/patches/patch-ai')
-rw-r--r--games/exchess/patches/patch-ai130
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;