mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-22 01:56:58 +08:00
Move game_phase() to material.cpp
For some reason, although game phase is used only in material, it is computed in Position. Move computation to material, where it belongs, and remove the useless call chain. No functional change.
This commit is contained in:
@@ -60,8 +60,8 @@ namespace {
|
||||
|
||||
// QueenMinorsImbalance[opp_minor_count] is applied when only one side has a queen.
|
||||
// It contains a bonus/malus for the side with the queen.
|
||||
const int QueenMinorsImbalance[16] = {
|
||||
31, -8, -15, -25, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||
const int QueenMinorsImbalance[13] = {
|
||||
31, -8, -15, -25, -5
|
||||
};
|
||||
|
||||
// Endgame evaluation and scaling functions are accessed directly and not through
|
||||
@@ -144,7 +144,13 @@ Entry* probe(const Position& pos) {
|
||||
std::memset(e, 0, sizeof(Entry));
|
||||
e->key = key;
|
||||
e->factor[WHITE] = e->factor[BLACK] = (uint8_t)SCALE_FACTOR_NORMAL;
|
||||
e->gamePhase = pos.game_phase();
|
||||
|
||||
Value npm_w = pos.non_pawn_material(WHITE);
|
||||
Value npm_b = pos.non_pawn_material(BLACK);
|
||||
Value npm = std::max(EndgameLimit, std::min(npm_w + npm_b, MidgameLimit));
|
||||
|
||||
// Map total non-pawn material into [PHASE_ENDGAME, PHASE_MIDGAME]
|
||||
e->gamePhase = Phase(((npm - EndgameLimit) * PHASE_MIDGAME) / (MidgameLimit - EndgameLimit));
|
||||
|
||||
// Let's look if we have a specialized evaluation function for this particular
|
||||
// material configuration. Firstly we look for a fixed configuration one, then
|
||||
@@ -181,9 +187,6 @@ Entry* probe(const Position& pos) {
|
||||
e->scalingFunction[c] = &ScaleKQKRPs[c];
|
||||
}
|
||||
|
||||
Value npm_w = pos.non_pawn_material(WHITE);
|
||||
Value npm_b = pos.non_pawn_material(BLACK);
|
||||
|
||||
if (npm_w + npm_b == VALUE_ZERO && pos.pieces(PAWN)) // Only pawns on the board
|
||||
{
|
||||
if (!pos.count<PAWN>(BLACK))
|
||||
|
||||
Reference in New Issue
Block a user