pkgsrc/games/exchess/patches/patch-ai
2004-02-14 04:31:56 +00:00

130 lines
5 KiB
Text

$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;