mirror of
https://github.com/sockspls/badfish
synced 2025-07-11 19:49:14 +00:00
Use File instead of int
No functional change.
This commit is contained in:
parent
eb484823d7
commit
3771db79eb
1 changed files with 67 additions and 75 deletions
|
@ -13,8 +13,6 @@
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "../bitboard.h"
|
#include "../bitboard.h"
|
||||||
#include "../movegen.h"
|
#include "../movegen.h"
|
||||||
|
@ -236,10 +234,6 @@ const uint8_t Invflap[] = {
|
||||||
11, 19, 27, 35, 43, 51
|
11, 19, 27, 35, 43, 51
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t file_to_file[] = { // TODO: Remove it
|
|
||||||
0, 1, 2, 3, 3, 2, 1, 0
|
|
||||||
};
|
|
||||||
|
|
||||||
const short KK_idx[10][64] = {
|
const short KK_idx[10][64] = {
|
||||||
{
|
{
|
||||||
-1, -1, -1, 0, 1, 2, 3, 4,
|
-1, -1, -1, 0, 1, 2, 3, 4,
|
||||||
|
@ -548,7 +542,7 @@ void free_wdl_entry(TBEntry_pawn* entry)
|
||||||
{
|
{
|
||||||
TBFile::unmap(entry->data, entry->mapping);
|
TBFile::unmap(entry->data, entry->mapping);
|
||||||
|
|
||||||
for (int f = 0; f < 4; ++f) {
|
for (File f = FILE_A; f <= FILE_D; ++f) {
|
||||||
free(entry->file[f].precomp[0]);
|
free(entry->file[f].precomp[0]);
|
||||||
free(entry->file[f].precomp[1]);
|
free(entry->file[f].precomp[1]);
|
||||||
}
|
}
|
||||||
|
@ -561,7 +555,7 @@ void free_dtz_entry(TBEntry* entry)
|
||||||
if (!entry->has_pawns)
|
if (!entry->has_pawns)
|
||||||
free(((DTZEntry_piece*)entry)->precomp);
|
free(((DTZEntry_piece*)entry)->precomp);
|
||||||
else
|
else
|
||||||
for (int f = 0; f < 4; ++f)
|
for (File f = FILE_A; f <= FILE_D; ++f)
|
||||||
free(((DTZEntry_pawn*)entry)->file[f].precomp);
|
free(((DTZEntry_pawn*)entry)->file[f].precomp);
|
||||||
|
|
||||||
free(entry);
|
free(entry);
|
||||||
|
@ -719,11 +713,13 @@ uint64_t encode_piece(TBEntry_piece* ptr, uint8_t* norm, int* pos, int* factor)
|
||||||
}
|
}
|
||||||
|
|
||||||
// determine file of leftmost pawn and sort pawns
|
// determine file of leftmost pawn and sort pawns
|
||||||
int pawn_file(TBEntry_pawn *ptr, int *pos)
|
File pawn_file(TBEntry_pawn *ptr, int *pos)
|
||||||
{
|
{
|
||||||
int i;
|
static const File file_to_file[] = {
|
||||||
|
FILE_A, FILE_B, FILE_C, FILE_D, FILE_D, FILE_C, FILE_B, FILE_A
|
||||||
|
};
|
||||||
|
|
||||||
for (i = 1; i < ptr->pawns[0]; ++i)
|
for (int i = 1; i < ptr->pawns[0]; ++i)
|
||||||
if (Flap[pos[0]] > Flap[pos[i]])
|
if (Flap[pos[0]] > Flap[pos[i]])
|
||||||
std::swap(pos[0], pos[i]);
|
std::swap(pos[0], pos[i]);
|
||||||
|
|
||||||
|
@ -802,63 +798,65 @@ int subfactor(int k, int n)
|
||||||
{
|
{
|
||||||
assert(n > 0 && k > 0 && k <= n);
|
assert(n > 0 && k > 0 && k <= n);
|
||||||
|
|
||||||
int f = n;
|
int numerator = n;
|
||||||
int l = 1;
|
int denominator = 1;
|
||||||
|
|
||||||
for (int i = 1; i < k; ++i) {
|
for (int i = 1; i < k; ++i) {
|
||||||
f *= n - i;
|
numerator *= n - i;
|
||||||
l *= i + 1;
|
denominator *= i + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return f / l;
|
return numerator / denominator;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t calc_factors_piece(int *factor, int num, int order, uint8_t *norm, uint8_t hasUniquePieces)
|
uint64_t calc_factors_piece(int *factor, int num, int order, uint8_t *norm, uint8_t hasUniquePieces)
|
||||||
{
|
{
|
||||||
int n = 64 - norm[0];
|
int n = 64 - norm[0];
|
||||||
uint64_t f = 1;
|
uint64_t result = 1;
|
||||||
|
|
||||||
for (int i = norm[0], k = 0; i < num || k == order; ++k) {
|
for (int i = norm[0], k = 0; i < num || k == order; ++k) {
|
||||||
if (k == order) {
|
if (k == order) {
|
||||||
factor[0] = (int)f;
|
factor[0] = (int)result;
|
||||||
f *= hasUniquePieces ? 31332 : 462;
|
result *= hasUniquePieces ? 31332 : 462;
|
||||||
} else {
|
} else {
|
||||||
factor[i] = (int)f;
|
factor[i] = (int)result;
|
||||||
f *= subfactor(norm[i], n);
|
result *= subfactor(norm[i], n);
|
||||||
n -= norm[i];
|
n -= norm[i];
|
||||||
i += norm[i];
|
i += norm[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return f;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t calc_factors_pawn(int *factor, int num, int order, int order2, uint8_t *norm, int file)
|
uint64_t calc_factors_pawn(int *factor, int num, int order, int order2, uint8_t *norm, File f)
|
||||||
{
|
{
|
||||||
|
assert(FILE_A <= f && f <= FILE_D);
|
||||||
|
|
||||||
int i = norm[0];
|
int i = norm[0];
|
||||||
|
|
||||||
if (order2 < 0x0f)
|
if (order2 < 0x0f)
|
||||||
i += norm[i];
|
i += norm[i];
|
||||||
|
|
||||||
int n = 64 - i;
|
int n = 64 - i;
|
||||||
uint64_t f = 1;
|
uint64_t result = 1;
|
||||||
|
|
||||||
for (int k = 0; i < num || k == order || k == order2; ++k) {
|
for (int k = 0; i < num || k == order || k == order2; ++k) {
|
||||||
if (k == order) {
|
if (k == order) {
|
||||||
factor[0] = (int)(f);
|
factor[0] = (int)result;
|
||||||
f *= Pfactor[norm[0] - 1][file];
|
result *= Pfactor[norm[0] - 1][f];
|
||||||
} else if (k == order2) {
|
} else if (k == order2) {
|
||||||
factor[norm[0]] = (int)(f);
|
factor[norm[0]] = (int)result;
|
||||||
f *= subfactor(norm[norm[0]], 48 - norm[0]);
|
result *= subfactor(norm[norm[0]], 48 - norm[0]);
|
||||||
} else {
|
} else {
|
||||||
factor[i] = (int)(f);
|
factor[i] = (int)result;
|
||||||
f *= subfactor(norm[i], n);
|
result *= subfactor(norm[i], n);
|
||||||
n -= norm[i];
|
n -= norm[i];
|
||||||
i += norm[i];
|
i += norm[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return f;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_norm_piece(TBEntry_piece *ptr, uint8_t *norm, uint8_t *pieces)
|
void set_norm_piece(TBEntry_piece *ptr, uint8_t *norm, uint8_t *pieces)
|
||||||
|
@ -913,27 +911,23 @@ void setup_pieces_piece(TBEntry_piece *ptr, unsigned char *data, uint64_t *tb_si
|
||||||
|
|
||||||
void setup_pieces_piece_dtz(DTZEntry_piece *ptr, unsigned char *data, uint64_t *tb_size)
|
void setup_pieces_piece_dtz(DTZEntry_piece *ptr, unsigned char *data, uint64_t *tb_size)
|
||||||
{
|
{
|
||||||
int i;
|
for (int i = 0; i < ptr->num; ++i)
|
||||||
int order;
|
|
||||||
|
|
||||||
for (i = 0; i < ptr->num; ++i)
|
|
||||||
ptr->pieces[i] = uint8_t(data[i + 1] & 0x0f);
|
ptr->pieces[i] = uint8_t(data[i + 1] & 0x0f);
|
||||||
|
|
||||||
order = data[0] & 0x0f;
|
int order = data[0] & 0x0f;
|
||||||
set_norm_piece((TBEntry_piece *)ptr, ptr->norm, ptr->pieces);
|
set_norm_piece((TBEntry_piece *)ptr, ptr->norm, ptr->pieces);
|
||||||
tb_size[0] = calc_factors_piece(ptr->factor, ptr->num, order, ptr->norm, ptr->hasUniquePieces);
|
tb_size[0] = calc_factors_piece(ptr->factor, ptr->num, order, ptr->norm, ptr->hasUniquePieces);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setup_pieces_pawn(TBEntry_pawn *ptr, unsigned char *data, uint64_t *tb_size, int f)
|
void setup_pieces_pawn(TBEntry_pawn *ptr, unsigned char *data, uint64_t *tb_size, File f)
|
||||||
{
|
{
|
||||||
int i, j;
|
assert(FILE_A <= f && f <= FILE_D);
|
||||||
int order, order2;
|
|
||||||
|
|
||||||
j = 1 + (ptr->pawns[1] > 0);
|
int j = 1 + (ptr->pawns[1] > 0);
|
||||||
order = data[0] & 0x0f;
|
int order = data[0] & 0x0f;
|
||||||
order2 = ptr->pawns[1] ? (data[1] & 0x0f) : 0x0f;
|
int order2 = ptr->pawns[1] ? (data[1] & 0x0f) : 0x0f;
|
||||||
|
|
||||||
for (i = 0; i < ptr->num; ++i)
|
for (int i = 0; i < ptr->num; ++i)
|
||||||
ptr->file[f].pieces[0][i] = uint8_t(data[i + j] & 0x0f);
|
ptr->file[f].pieces[0][i] = uint8_t(data[i + j] & 0x0f);
|
||||||
|
|
||||||
set_norm_pawn(ptr, ptr->file[f].norm[0], ptr->file[f].pieces[0]);
|
set_norm_pawn(ptr, ptr->file[f].norm[0], ptr->file[f].pieces[0]);
|
||||||
|
@ -942,23 +936,22 @@ void setup_pieces_pawn(TBEntry_pawn *ptr, unsigned char *data, uint64_t *tb_size
|
||||||
order = data[0] >> 4;
|
order = data[0] >> 4;
|
||||||
order2 = ptr->pawns[1] ? (data[1] >> 4) : 0x0f;
|
order2 = ptr->pawns[1] ? (data[1] >> 4) : 0x0f;
|
||||||
|
|
||||||
for (i = 0; i < ptr->num; ++i)
|
for (int i = 0; i < ptr->num; ++i)
|
||||||
ptr->file[f].pieces[1][i] = uint8_t(data[i + j] >> 4);
|
ptr->file[f].pieces[1][i] = uint8_t(data[i + j] >> 4);
|
||||||
|
|
||||||
set_norm_pawn(ptr, ptr->file[f].norm[1], ptr->file[f].pieces[1]);
|
set_norm_pawn(ptr, ptr->file[f].norm[1], ptr->file[f].pieces[1]);
|
||||||
tb_size[1] = calc_factors_pawn(ptr->file[f].factor[1], ptr->num, order, order2, ptr->file[f].norm[1], f);
|
tb_size[1] = calc_factors_pawn(ptr->file[f].factor[1], ptr->num, order, order2, ptr->file[f].norm[1], f);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setup_pieces_pawn_dtz(DTZEntry_pawn *ptr, unsigned char *data, uint64_t *tb_size, int f)
|
void setup_pieces_pawn_dtz(DTZEntry_pawn *ptr, unsigned char *data, uint64_t *tb_size, File f)
|
||||||
{
|
{
|
||||||
int i, j;
|
assert(FILE_A <= f && f <= FILE_D);
|
||||||
int order, order2;
|
|
||||||
|
|
||||||
j = 1 + (ptr->pawns[1] > 0);
|
int j = 1 + (ptr->pawns[1] > 0);
|
||||||
order = data[0] & 0x0f;
|
int order = data[0] & 0x0f;
|
||||||
order2 = ptr->pawns[1] ? (data[1] & 0x0f) : 0x0f;
|
int order2 = ptr->pawns[1] ? (data[1] & 0x0f) : 0x0f;
|
||||||
|
|
||||||
for (i = 0; i < ptr->num; ++i)
|
for (int i = 0; i < ptr->num; ++i)
|
||||||
ptr->file[f].pieces[i] = uint8_t(data[i + j] & 0x0f);
|
ptr->file[f].pieces[i] = uint8_t(data[i + j] & 0x0f);
|
||||||
|
|
||||||
set_norm_pawn((TBEntry_pawn *)ptr, ptr->file[f].norm, ptr->file[f].pieces);
|
set_norm_pawn((TBEntry_pawn *)ptr, ptr->file[f].norm, ptr->file[f].pieces);
|
||||||
|
@ -977,9 +970,11 @@ void calc_symlen(PairsData *d, int s, char *tmp)
|
||||||
else {
|
else {
|
||||||
s1 = ((w[1] & 0xf) << 8) | w[0];
|
s1 = ((w[1] & 0xf) << 8) | w[0];
|
||||||
|
|
||||||
if (!tmp[s1]) calc_symlen(d, s1, tmp);
|
if (!tmp[s1])
|
||||||
|
calc_symlen(d, s1, tmp);
|
||||||
|
|
||||||
if (!tmp[s2]) calc_symlen(d, s2, tmp);
|
if (!tmp[s2])
|
||||||
|
calc_symlen(d, s2, tmp);
|
||||||
|
|
||||||
d->symlen[s] = uint8_t(d->symlen[s1] + d->symlen[s2] + 1);
|
d->symlen[s] = uint8_t(d->symlen[s1] + d->symlen[s2] + 1);
|
||||||
}
|
}
|
||||||
|
@ -1066,7 +1061,7 @@ PairsData *setup_pairs(unsigned char *data, uint64_t tb_size, uint64_t *size, un
|
||||||
int init_table_wdl(TBEntry *entry, const std::string& fname)
|
int init_table_wdl(TBEntry *entry, const std::string& fname)
|
||||||
{
|
{
|
||||||
uint8_t *next;
|
uint8_t *next;
|
||||||
int f, s;
|
int s;
|
||||||
uint64_t tb_size[8];
|
uint64_t tb_size[8];
|
||||||
uint64_t size[8 * 3];
|
uint64_t size[8 * 3];
|
||||||
uint8_t flags;
|
uint8_t flags;
|
||||||
|
@ -1094,7 +1089,7 @@ int init_table_wdl(TBEntry *entry, const std::string& fname)
|
||||||
}
|
}
|
||||||
|
|
||||||
int split = data[4] & 1;
|
int split = data[4] & 1;
|
||||||
int files = data[4] & 2 ? 4 : 1;
|
File maxFile = data[4] & 2 ? FILE_D : FILE_A;
|
||||||
|
|
||||||
data += 5;
|
data += 5;
|
||||||
|
|
||||||
|
@ -1141,14 +1136,14 @@ int init_table_wdl(TBEntry *entry, const std::string& fname)
|
||||||
TBEntry_pawn *ptr = (TBEntry_pawn *)entry;
|
TBEntry_pawn *ptr = (TBEntry_pawn *)entry;
|
||||||
s = 1 + (ptr->pawns[1] > 0);
|
s = 1 + (ptr->pawns[1] > 0);
|
||||||
|
|
||||||
for (f = 0; f < 4; ++f) {
|
for (File f = FILE_A; f <= FILE_D; ++f) {
|
||||||
setup_pieces_pawn((TBEntry_pawn *)ptr, data, &tb_size[2 * f], f);
|
setup_pieces_pawn((TBEntry_pawn *)ptr, data, &tb_size[2 * f], f);
|
||||||
data += ptr->num + s;
|
data += ptr->num + s;
|
||||||
}
|
}
|
||||||
|
|
||||||
data += (uintptr_t)data & 1;
|
data += (uintptr_t)data & 1;
|
||||||
|
|
||||||
for (f = 0; f < files; ++f) {
|
for (File f = FILE_A; f <= maxFile; ++f) {
|
||||||
ptr->file[f].precomp[0] = setup_pairs(data, tb_size[2 * f], &size[6 * f], &next, &flags, 1);
|
ptr->file[f].precomp[0] = setup_pairs(data, tb_size[2 * f], &size[6 * f], &next, &flags, 1);
|
||||||
data = next;
|
data = next;
|
||||||
|
|
||||||
|
@ -1159,7 +1154,7 @@ int init_table_wdl(TBEntry *entry, const std::string& fname)
|
||||||
ptr->file[f].precomp[1] = NULL;
|
ptr->file[f].precomp[1] = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (f = 0; f < files; ++f) {
|
for (File f = FILE_A; f <= maxFile; ++f) {
|
||||||
ptr->file[f].precomp[0]->indextable = (char *)data;
|
ptr->file[f].precomp[0]->indextable = (char *)data;
|
||||||
data += size[6 * f];
|
data += size[6 * f];
|
||||||
|
|
||||||
|
@ -1169,7 +1164,7 @@ int init_table_wdl(TBEntry *entry, const std::string& fname)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (f = 0; f < files; ++f) {
|
for (File f = FILE_A; f <= maxFile; ++f) {
|
||||||
ptr->file[f].precomp[0]->sizetable = (uint16_t *)data;
|
ptr->file[f].precomp[0]->sizetable = (uint16_t *)data;
|
||||||
data += size[6 * f + 1];
|
data += size[6 * f + 1];
|
||||||
|
|
||||||
|
@ -1179,7 +1174,7 @@ int init_table_wdl(TBEntry *entry, const std::string& fname)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (f = 0; f < files; ++f) {
|
for (File f = FILE_A; f <= maxFile; ++f) {
|
||||||
data = (uint8_t *)(((uintptr_t)data + 0x3f) & ~0x3f);
|
data = (uint8_t *)(((uintptr_t)data + 0x3f) & ~0x3f);
|
||||||
ptr->file[f].precomp[0]->data = data;
|
ptr->file[f].precomp[0]->data = data;
|
||||||
data += size[6 * f + 2];
|
data += size[6 * f + 2];
|
||||||
|
@ -1199,7 +1194,7 @@ int init_table_dtz(TBEntry *entry)
|
||||||
{
|
{
|
||||||
uint8_t *data = (uint8_t *)entry->data;
|
uint8_t *data = (uint8_t *)entry->data;
|
||||||
uint8_t *next;
|
uint8_t *next;
|
||||||
int f, s;
|
int s;
|
||||||
uint64_t tb_size[4];
|
uint64_t tb_size[4];
|
||||||
uint64_t size[4 * 3];
|
uint64_t size[4 * 3];
|
||||||
|
|
||||||
|
@ -1214,7 +1209,7 @@ int init_table_dtz(TBEntry *entry)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int files = data[4] & 2 ? 4 : 1;
|
File maxFile = data[4] & 2 ? FILE_D : FILE_A;
|
||||||
|
|
||||||
data += 5;
|
data += 5;
|
||||||
|
|
||||||
|
@ -1253,44 +1248,41 @@ int init_table_dtz(TBEntry *entry)
|
||||||
DTZEntry_pawn *ptr = (DTZEntry_pawn *)entry;
|
DTZEntry_pawn *ptr = (DTZEntry_pawn *)entry;
|
||||||
s = 1 + (ptr->pawns[1] > 0);
|
s = 1 + (ptr->pawns[1] > 0);
|
||||||
|
|
||||||
for (f = 0; f < 4; ++f) {
|
for (File f = FILE_A; f <= FILE_D; ++f) {
|
||||||
setup_pieces_pawn_dtz(ptr, data, &tb_size[f], f);
|
setup_pieces_pawn_dtz(ptr, data, &tb_size[f], f);
|
||||||
data += ptr->num + s;
|
data += ptr->num + s;
|
||||||
}
|
}
|
||||||
|
|
||||||
data += (uintptr_t)data & 1;
|
data += (uintptr_t)data & 1;
|
||||||
|
|
||||||
for (f = 0; f < files; ++f) {
|
for (File f = FILE_A; f <= maxFile; ++f) {
|
||||||
ptr->file[f].precomp = setup_pairs(data, tb_size[f], &size[3 * f], &next, &(ptr->flags[f]), 0);
|
ptr->file[f].precomp = setup_pairs(data, tb_size[f], &size[3 * f], &next, &(ptr->flags[f]), 0);
|
||||||
data = next;
|
data = next;
|
||||||
}
|
}
|
||||||
|
|
||||||
ptr->map = data;
|
ptr->map = data;
|
||||||
|
|
||||||
for (f = 0; f < files; ++f) {
|
for (File f = FILE_A; f <= maxFile; ++f) {
|
||||||
if (ptr->flags[f] & 2) {
|
if (ptr->flags[f] & 2)
|
||||||
int i;
|
for (int i = 0; i < 4; ++i) {
|
||||||
|
|
||||||
for (i = 0; i < 4; ++i) {
|
|
||||||
ptr->map_idx[f][i] = (uint16_t)(data + 1 - ptr->map);
|
ptr->map_idx[f][i] = (uint16_t)(data + 1 - ptr->map);
|
||||||
data += 1 + data[0];
|
data += 1 + data[0];
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
data += (uintptr_t)data & 1;
|
data += (uintptr_t)data & 1;
|
||||||
|
|
||||||
for (f = 0; f < files; ++f) {
|
for (File f = FILE_A; f <= maxFile; ++f) {
|
||||||
ptr->file[f].precomp->indextable = (char *)data;
|
ptr->file[f].precomp->indextable = (char *)data;
|
||||||
data += size[3 * f];
|
data += size[3 * f];
|
||||||
}
|
}
|
||||||
|
|
||||||
for (f = 0; f < files; ++f) {
|
for (File f = FILE_A; f <= maxFile; ++f) {
|
||||||
ptr->file[f].precomp->sizetable = (uint16_t *)data;
|
ptr->file[f].precomp->sizetable = (uint16_t *)data;
|
||||||
data += size[3 * f + 1];
|
data += size[3 * f + 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
for (f = 0; f < files; ++f) {
|
for (File f = FILE_A; f <= maxFile; ++f) {
|
||||||
data = (uint8_t *)(((uintptr_t)data + 0x3f) & ~0x3f);
|
data = (uint8_t *)(((uintptr_t)data + 0x3f) & ~0x3f);
|
||||||
ptr->file[f].precomp->data = data;
|
ptr->file[f].precomp->data = data;
|
||||||
data += size[3 * f + 2];
|
data += size[3 * f + 2];
|
||||||
|
@ -1511,7 +1503,7 @@ WDLScore probe_wdl_table(Position& pos, int* success)
|
||||||
squares[i++] = pop_lsb(&b) ^ smirror;
|
squares[i++] = pop_lsb(&b) ^ smirror;
|
||||||
while (b);
|
while (b);
|
||||||
|
|
||||||
int f = pawn_file(entry, squares);
|
File f = pawn_file(entry, squares);
|
||||||
|
|
||||||
for ( ; i < entry->num; ) {
|
for ( ; i < entry->num; ) {
|
||||||
pc = Piece(entry->file[f].pieces[bside][i] ^ cmirror);
|
pc = Piece(entry->file[f].pieces[bside][i] ^ cmirror);
|
||||||
|
@ -1627,7 +1619,7 @@ int probe_dtz_table(Position& pos, int wdl, int *success)
|
||||||
p[i++] = pop_lsb(&bb) ^ mirror;
|
p[i++] = pop_lsb(&bb) ^ mirror;
|
||||||
} while (bb);
|
} while (bb);
|
||||||
|
|
||||||
int f = pawn_file((TBEntry_pawn *)entry, p);
|
File f = pawn_file((TBEntry_pawn *)entry, p);
|
||||||
|
|
||||||
if ((entry->flags[f] & 1) != bside) {
|
if ((entry->flags[f] & 1) != bside) {
|
||||||
*success = -1;
|
*success = -1;
|
||||||
|
|
Loading…
Add table
Reference in a new issue