Support custom pawn pieces
authorFabian Fichter <ianfab@users.noreply.github.com>
Fri, 24 Mar 2023 15:54:31 +0000 (16:54 +0100)
committerFabian Fichter <ianfab@users.noreply.github.com>
Fri, 24 Mar 2023 16:33:45 +0000 (17:33 +0100)
commitb1124aec70c0ea3ba1db3b7e7a2c72b36adae467
tree5a3063430e44125842435ef9d12a0db9a88c5640
parentec1c92052250a1033583dc1d723322f14003a406
Support custom pawn pieces

This introduces support for
* initial moves, promotions, and en passant for all pieces.
* arbitrarily shaped double/triple step and promotion regions.
* per color configuration of promotion types and zone, etc.

These new configuration options enable support for
* Berolina, Spartan, Wolf
* Torpedo, pawnsideways, pawnback
* Legan, Troitzky

Most changed configuration options are kept as deprected options for now
for backwards compatibility, but it is recommended to migrate variant
configuration files as the deprecated options might be removed later.

Closes #305, closes #4, closes #209, closes #260, closes #51, closes #328, closes #596.

No functional change for other variants.
24 files changed:
src/apiutil.h
src/bitboard.cpp
src/bitboard.h
src/endgame.cpp
src/evaluate.cpp
src/magic.h
src/material.cpp
src/movegen.cpp
src/parser.cpp
src/parser.h
src/pawns.cpp
src/piece.cpp
src/piece.h
src/position.cpp
src/position.h
src/psqt.cpp
src/search.cpp
src/types.h
src/ucioption.cpp
src/variant.cpp
src/variant.h
src/variants.ini
test.py
tests/perft.sh