1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-07-11 19:49:14 +00:00

Rewrite previous patch using only one counter

Use only rule50 and retire pliesFromNull.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba 2009-10-09 04:35:11 +01:00
parent 64d6ba2e98
commit d892063cd3
2 changed files with 6 additions and 9 deletions

View file

@ -703,7 +703,7 @@ void Position::do_move(Move m, StateInfo& newSt, Bitboard dcCandidates) {
// pointer to point to the new, ready to be updated, state. // pointer to point to the new, ready to be updated, state.
struct ReducedStateInfo { struct ReducedStateInfo {
Key key, pawnKey, materialKey; Key key, pawnKey, materialKey;
int castleRights, rule50, pliesFromNull; int castleRights, rule50;
Square epSquare; Square epSquare;
Value mgValue, egValue; Value mgValue, egValue;
Value npMaterial[2]; Value npMaterial[2];
@ -724,7 +724,6 @@ void Position::do_move(Move m, StateInfo& newSt, Bitboard dcCandidates) {
// Increment the 50 moves rule draw counter. Resetting it to zero in the // Increment the 50 moves rule draw counter. Resetting it to zero in the
// case of non-reversible moves is taken care of later. // case of non-reversible moves is taken care of later.
st->rule50++; st->rule50++;
st->pliesFromNull++;
if (move_is_castle(m)) if (move_is_castle(m))
{ {
@ -1239,11 +1238,11 @@ void Position::do_null_move(StateInfo& backupSt) {
// Note that differently from normal case here backupSt is actually used as // Note that differently from normal case here backupSt is actually used as
// a backup storage not as a new state to be used. // a backup storage not as a new state to be used.
backupSt.key = st->key; backupSt.key = st->key;
backupSt.rule50 = st->rule50;
backupSt.epSquare = st->epSquare; backupSt.epSquare = st->epSquare;
backupSt.mgValue = st->mgValue; backupSt.mgValue = st->mgValue;
backupSt.egValue = st->egValue; backupSt.egValue = st->egValue;
backupSt.previous = st->previous; backupSt.previous = st->previous;
backupSt.pliesFromNull = st->pliesFromNull;
st->previous = &backupSt; st->previous = &backupSt;
// Save the current key to the history[] array, in order to be able to // Save the current key to the history[] array, in order to be able to
@ -1259,8 +1258,7 @@ void Position::do_null_move(StateInfo& backupSt) {
sideToMove = opposite_color(sideToMove); sideToMove = opposite_color(sideToMove);
st->epSquare = SQ_NONE; st->epSquare = SQ_NONE;
st->rule50++; st->rule50 = 0;
st->pliesFromNull = 0;
gamePly++; gamePly++;
st->mgValue += (sideToMove == WHITE)? TempoValueMidgame : -TempoValueMidgame; st->mgValue += (sideToMove == WHITE)? TempoValueMidgame : -TempoValueMidgame;
@ -1278,15 +1276,14 @@ void Position::undo_null_move() {
// Restore information from the our backup StateInfo object // Restore information from the our backup StateInfo object
StateInfo* backupSt = st->previous; StateInfo* backupSt = st->previous;
st->key = backupSt->key; st->key = backupSt->key;
st->rule50 = backupSt->rule50;
st->epSquare = backupSt->epSquare; st->epSquare = backupSt->epSquare;
st->mgValue = backupSt->mgValue; st->mgValue = backupSt->mgValue;
st->egValue = backupSt->egValue; st->egValue = backupSt->egValue;
st->previous = backupSt->previous; st->previous = backupSt->previous;
st->pliesFromNull = backupSt->pliesFromNull;
// Update the necessary information // Update the necessary information
sideToMove = opposite_color(sideToMove); sideToMove = opposite_color(sideToMove);
st->rule50--;
gamePly--; gamePly--;
} }
@ -1687,7 +1684,7 @@ bool Position::is_draw() const {
return true; return true;
// Draw by repetition? // Draw by repetition?
for (int i = 2; i < Min(Min(gamePly, st->rule50), st->pliesFromNull); i += 2) for (int i = 2; i < Min(gamePly, st->rule50); i += 2)
if (history[gamePly - i] == st->key) if (history[gamePly - i] == st->key)
return true; return true;

View file

@ -88,7 +88,7 @@ enum Phase {
struct StateInfo { struct StateInfo {
Key key, pawnKey, materialKey; Key key, pawnKey, materialKey;
int castleRights, rule50, pliesFromNull; int castleRights, rule50;
Square epSquare; Square epSquare;
Value mgValue, egValue; Value mgValue, egValue;
Value npMaterial[2]; Value npMaterial[2];