}
$pos->{'last_move'} = $x[29];
$pos->{'prettyprint_cache'} = {};
+ $pos->{'tbprobe_cache'} = {};
bless $pos, $class;
return $pos;
$pos->{'last_move_uci'} = undef;
$pos->{'last_move'} = undef;
$pos->{'prettyprint_cache'} = {};
+ $pos->{'tbprobe_cache'} = {};
bless $pos, $class;
return $pos;
return $fen;
}
-# Returns a compact bit string describing the same data as fen(),
-# except for the half-move and full-move clock.
-sub bitpacked_fen {
- my $pos = shift;
- my $board = $pos->{'board'}->bitpacked_fen();
-
- my $bits = "";
- if ($pos->{'toplay'} eq 'W') {
- $bits .= "0";
- } else {
- $bits .= "1";
- }
-
- $bits .= $pos->{'white_castle_k'};
- $bits .= $pos->{'white_castle_q'};
- $bits .= $pos->{'black_castle_k'};
- $bits .= $pos->{'black_castle_q'};
-
- my $col = $pos->{'ep_file_num'};
- if ($col == -1) {
- $bits .= "0";
- } else {
- $bits .= "1";
- $bits .= (qw(000 001 010 011 100 101 110 111))[$col];
- }
-
- return $board . pack('b*', $bits);
-}
-
sub to_json_hash {
my $pos = shift;
my $json = { %$pos, fen => $pos->fen() };
delete $json->{'board'};
delete $json->{'prettyprint_cache'};
+ delete $json->{'tbprobe_cache'};
delete $json->{'black_castle_k'};
delete $json->{'black_castle_q'};
delete $json->{'white_castle_k'};
delete $json->{'white_castle_q'};
delete $json->{'time_since_100move_rule_reset'};
+ delete $json->{'chess960'} if (!$json->{'chess960'});
if ($json->{'player_w'} =~ /^base64:(.*)$/) {
$json->{'player_w'} = MIME::Base64::decode_base64($1);
}
}
$np->{'player_w'} = $pos->{'player_w'};
$np->{'player_b'} = $pos->{'player_b'};
+ $np->{'chess960'} = $pos->{'chess960'};
+ if (exists($pos->{'start_fen'})) {
+ $np->{'start_fen'} = $pos->{'start_fen'};
+ }
if (defined($pretty_move)) {
$np->{'last_move'} = $pretty_move;
} else {