mirror of
https://github.com/sockspls/badfish
synced 2025-07-11 19:49:14 +00:00
Document TTEntry and move layouts
No functional change. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
9e44a6dba9
commit
c6c4713ab2
2 changed files with 31 additions and 5 deletions
20
src/move.h
20
src/move.h
|
@ -38,10 +38,22 @@
|
||||||
|
|
||||||
class Position;
|
class Position;
|
||||||
|
|
||||||
|
/// A move needs 17 bits to be stored
|
||||||
|
///
|
||||||
|
/// bit 0- 5: destination square (from 0 to 63)
|
||||||
|
/// bit 6-11: origin square (from 0 to 63)
|
||||||
|
/// bit 12-14: promotion piece type
|
||||||
|
/// bit 15: en passant flag
|
||||||
|
/// bit 16: castle flag
|
||||||
|
///
|
||||||
|
/// Special cases are MOVE_NONE and MOVE_NULL. We can sneak these in
|
||||||
|
/// because in any normal move destination square is always different
|
||||||
|
/// from origin square while MOVE_NONE and MOVE_NULL have the same
|
||||||
|
/// origin and destination square, 0 and 1 respectively.
|
||||||
|
|
||||||
enum Move {
|
enum Move {
|
||||||
MOVE_NONE = 0,
|
MOVE_NONE = 0,
|
||||||
MOVE_NULL = 65,
|
MOVE_NULL = 65
|
||||||
MOVE_MAX = 0xFFFFFF
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -56,11 +68,11 @@ struct MoveStack {
|
||||||
////
|
////
|
||||||
|
|
||||||
inline Square move_from(Move m) {
|
inline Square move_from(Move m) {
|
||||||
return Square((int(m) >> 6) & 077);
|
return Square((int(m) >> 6) & 0x3F);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline Square move_to(Move m) {
|
inline Square move_to(Move m) {
|
||||||
return Square(m & 077);
|
return Square(m & 0x3F);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline PieceType move_promotion(Move m) {
|
inline PieceType move_promotion(Move m) {
|
||||||
|
|
16
src/tt.h
16
src/tt.h
|
@ -34,7 +34,21 @@
|
||||||
//// Types
|
//// Types
|
||||||
////
|
////
|
||||||
|
|
||||||
/// The TTEntry class is the class of transposition table entries.
|
/// The TTEntry class is the class of transposition table entries
|
||||||
|
///
|
||||||
|
/// A TTEntry needs 128 bits to be stored
|
||||||
|
///
|
||||||
|
/// bit 0-63: key
|
||||||
|
/// bit 64-95: data
|
||||||
|
/// bit 96-111: value
|
||||||
|
/// bit 112-127: depth
|
||||||
|
///
|
||||||
|
/// the 32 bits of the data field are so defined
|
||||||
|
///
|
||||||
|
/// bit 0-16: move
|
||||||
|
/// bit 17-19: not used
|
||||||
|
/// bit 20-22: value type
|
||||||
|
/// bit 23-31: generation
|
||||||
|
|
||||||
class TTEntry {
|
class TTEntry {
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue