mirror of
https://github.com/sockspls/badfish
synced 2025-04-29 16:23:09 +00:00
Manual merge
This commit is contained in:
commit
74f1efee26
6 changed files with 44 additions and 37 deletions
|
@ -8,6 +8,7 @@
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
|
|
||||||
Stockfish is distributed in the hope that it will be useful,
|
Stockfish is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
|
|
@ -616,7 +616,7 @@ namespace {
|
||||||
template<Color Us, Color Them, Bitboard TRank8BB, SquareDelta TDELTA_NE,
|
template<Color Us, Color Them, Bitboard TRank8BB, SquareDelta TDELTA_NE,
|
||||||
SquareDelta TDELTA_NW, SquareDelta TDELTA_N
|
SquareDelta TDELTA_NW, SquareDelta TDELTA_N
|
||||||
>
|
>
|
||||||
MoveStack* do_generate_pawn_captures(const Position& pos, MoveStack* mlist) {
|
MoveStack* do_generate_pawn_captures(const Position& pos, MoveStack* mlist) {
|
||||||
|
|
||||||
Square to;
|
Square to;
|
||||||
Bitboard pawns = pos.pawns(Us);
|
Bitboard pawns = pos.pawns(Us);
|
||||||
|
@ -689,7 +689,7 @@ namespace {
|
||||||
template<Color Us, Color Them, Bitboard TRank8BB, Bitboard TRank3BB,
|
template<Color Us, Color Them, Bitboard TRank8BB, Bitboard TRank3BB,
|
||||||
SquareDelta TDELTA_NE, SquareDelta TDELTA_NW, SquareDelta TDELTA_N
|
SquareDelta TDELTA_NE, SquareDelta TDELTA_NW, SquareDelta TDELTA_N
|
||||||
>
|
>
|
||||||
MoveStack* do_generate_pawn_noncaptures(const Position& pos, MoveStack* mlist) {
|
MoveStack* do_generate_pawn_noncaptures(const Position& pos, MoveStack* mlist) {
|
||||||
|
|
||||||
Bitboard pawns = pos.pawns(Us);
|
Bitboard pawns = pos.pawns(Us);
|
||||||
Bitboard enemyPieces = pos.pieces_of_color(Them);
|
Bitboard enemyPieces = pos.pieces_of_color(Them);
|
||||||
|
|
|
@ -7,12 +7,12 @@
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
Stockfish is distributed in the hope that it will be useful,
|
Stockfish is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
@ -39,4 +39,5 @@ extern int generate_evasions(const Position &pos, MoveStack *mlist);
|
||||||
extern int generate_legal_moves(const Position &pos, MoveStack *mlist);
|
extern int generate_legal_moves(const Position &pos, MoveStack *mlist);
|
||||||
extern bool move_is_legal(const Position &pos, const Move m, Bitboard pinned);
|
extern bool move_is_legal(const Position &pos, const Move m, Bitboard pinned);
|
||||||
|
|
||||||
|
|
||||||
#endif // !defined(MOVEGEN_H_INCLUDED)
|
#endif // !defined(MOVEGEN_H_INCLUDED)
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
|
|
||||||
Stockfish is distributed in the hope that it will be useful,
|
Stockfish is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
@ -233,25 +234,25 @@ void MovePicker::score_noncaptures() {
|
||||||
// First score by history, when no history is available then use
|
// First score by history, when no history is available then use
|
||||||
// piece/square tables values. This seems to be better then a
|
// piece/square tables values. This seems to be better then a
|
||||||
// random choice when we don't have an history for any move.
|
// random choice when we don't have an history for any move.
|
||||||
Move m;
|
Move m;
|
||||||
int hs;
|
int hs;
|
||||||
|
|
||||||
for (int i = 0; i < numOfMoves; i++)
|
for (int i = 0; i < numOfMoves; i++)
|
||||||
{
|
{
|
||||||
m = moves[i].move;
|
m = moves[i].move;
|
||||||
|
|
||||||
if (m == killer1)
|
if (m == killer1)
|
||||||
hs = HistoryMax + 2;
|
hs = HistoryMax + 2;
|
||||||
else if (m == killer2)
|
else if (m == killer2)
|
||||||
hs = HistoryMax + 1;
|
hs = HistoryMax + 1;
|
||||||
else
|
else
|
||||||
hs = H.move_ordering_score(pos.piece_on(move_from(m)), m);
|
hs = H.move_ordering_score(pos.piece_on(move_from(m)), m);
|
||||||
|
|
||||||
// Ensure moves in history are always sorted as first
|
// Ensure moves in history are always sorted as first
|
||||||
if (hs > 0)
|
if (hs > 0)
|
||||||
hs += 1000;
|
hs += 1000;
|
||||||
|
|
||||||
moves[i].score = hs + pos.mg_pst_delta(m);
|
moves[i].score = hs + pos.mg_pst_delta(m);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,11 @@
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
<<<<<<< HEAD:src/movepick.h
|
||||||
|
|
||||||
|
=======
|
||||||
|
|
||||||
|
>>>>>>> d3600c39a745179ed6b094b305d0645e83a1ee86:src/movepick.h
|
||||||
Stockfish is distributed in the hope that it will be useful,
|
Stockfish is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
|
|
@ -7,12 +7,12 @@
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
Stockfish is distributed in the hope that it will be useful,
|
Stockfish is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
@ -25,8 +25,8 @@
|
||||||
#if defined(_MSC_VER)
|
#if defined(_MSC_VER)
|
||||||
|
|
||||||
// Forcing value to bool 'true' or 'false' (performance warning)
|
// Forcing value to bool 'true' or 'false' (performance warning)
|
||||||
#pragma warning(disable: 4800)
|
#pragma warning(disable: 4800)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
////
|
////
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
////
|
////
|
||||||
|
|
||||||
/// FEN string for the initial position:
|
/// FEN string for the initial position:
|
||||||
const std::string StartPosition =
|
const std::string StartPosition =
|
||||||
"rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1";
|
"rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1";
|
||||||
|
|
||||||
/// Maximum number of plies per game (220 should be enough, because the
|
/// Maximum number of plies per game (220 should be enough, because the
|
||||||
|
@ -64,9 +64,9 @@ const int MaxGameLength = 220;
|
||||||
/// Castle rights, encoded as bit fields:
|
/// Castle rights, encoded as bit fields:
|
||||||
|
|
||||||
enum CastleRights {
|
enum CastleRights {
|
||||||
NO_CASTLES = 0,
|
NO_CASTLES = 0,
|
||||||
WHITE_OO = 1,
|
WHITE_OO = 1,
|
||||||
BLACK_OO = 2,
|
BLACK_OO = 2,
|
||||||
WHITE_OOO = 4,
|
WHITE_OOO = 4,
|
||||||
BLACK_OOO = 8,
|
BLACK_OOO = 8,
|
||||||
ALL_CASTLES = 15
|
ALL_CASTLES = 15
|
||||||
|
@ -92,7 +92,7 @@ struct UndoInfo {
|
||||||
|
|
||||||
|
|
||||||
/// The position data structure. A position consists of the following data:
|
/// The position data structure. A position consists of the following data:
|
||||||
///
|
///
|
||||||
/// * For each piece type, a bitboard representing the squares occupied
|
/// * For each piece type, a bitboard representing the squares occupied
|
||||||
/// by pieces of that type.
|
/// by pieces of that type.
|
||||||
/// * For each color, a bitboard representing the squares occupiecd by
|
/// * For each color, a bitboard representing the squares occupiecd by
|
||||||
|
@ -281,7 +281,7 @@ public:
|
||||||
|
|
||||||
// Reset the gamePly variable to 0
|
// Reset the gamePly variable to 0
|
||||||
void reset_game_ply();
|
void reset_game_ply();
|
||||||
|
|
||||||
// Position consistency check, for debugging
|
// Position consistency check, for debugging
|
||||||
bool is_ok(int* failedStep = NULL) const;
|
bool is_ok(int* failedStep = NULL) const;
|
||||||
|
|
||||||
|
@ -329,7 +329,7 @@ private:
|
||||||
|
|
||||||
// Piece counts
|
// Piece counts
|
||||||
int pieceCount[2][8]; // [color][pieceType]
|
int pieceCount[2][8]; // [color][pieceType]
|
||||||
|
|
||||||
// Piece lists
|
// Piece lists
|
||||||
Square pieceList[2][8][16]; // [color][pieceType][index]
|
Square pieceList[2][8][16]; // [color][pieceType][index]
|
||||||
int index[64];
|
int index[64];
|
||||||
|
@ -591,7 +591,7 @@ inline bool Position::file_is_half_open(Color c, File f) const {
|
||||||
inline bool Position::square_is_weak(Square s, Color c) const {
|
inline bool Position::square_is_weak(Square s, Color c) const {
|
||||||
return !(pawns(c) & outpost_mask(opposite_color(c), s));
|
return !(pawns(c) & outpost_mask(opposite_color(c), s));
|
||||||
}
|
}
|
||||||
|
|
||||||
inline Key Position::get_key() const {
|
inline Key Position::get_key() const {
|
||||||
return key;
|
return key;
|
||||||
}
|
}
|
||||||
|
@ -642,7 +642,7 @@ inline Phase Position::game_phase() const {
|
||||||
static const Value EndgameLimit = 4 * RookValueMidgame - Value(325);
|
static const Value EndgameLimit = 4 * RookValueMidgame - Value(325);
|
||||||
|
|
||||||
Value npm = non_pawn_material(WHITE) + non_pawn_material(BLACK);
|
Value npm = non_pawn_material(WHITE) + non_pawn_material(BLACK);
|
||||||
|
|
||||||
if (npm >= MidgameLimit)
|
if (npm >= MidgameLimit)
|
||||||
return PHASE_MIDGAME;
|
return PHASE_MIDGAME;
|
||||||
else if(npm <= EndgameLimit)
|
else if(npm <= EndgameLimit)
|
||||||
|
@ -687,7 +687,7 @@ inline int Position::rule_50_counter() const {
|
||||||
inline bool Position::opposite_colored_bishops() const {
|
inline bool Position::opposite_colored_bishops() const {
|
||||||
|
|
||||||
return piece_count(WHITE, BISHOP) == 1
|
return piece_count(WHITE, BISHOP) == 1
|
||||||
&& piece_count(BLACK, BISHOP) == 1
|
&& piece_count(BLACK, BISHOP) == 1
|
||||||
&& square_color(piece_list(WHITE, BISHOP, 0)) != square_color(piece_list(BLACK, BISHOP, 0));
|
&& square_color(piece_list(WHITE, BISHOP, 0)) != square_color(piece_list(BLACK, BISHOP, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -695,6 +695,6 @@ inline bool Position::has_pawn_on_7th(Color c) const {
|
||||||
|
|
||||||
return pawns(c) & relative_rank_bb(c, RANK_7);
|
return pawns(c) & relative_rank_bb(c, RANK_7);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif // !defined(POSITION_H_INCLUDED)
|
#endif // !defined(POSITION_H_INCLUDED)
|
||||||
|
|
Loading…
Add table
Reference in a new issue