130 lines
5 KiB
Text
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;
|