]> git.sesse.net Git - remoteglot/blobdiff - remoteglot.pl
Fix Chess960 bug when castling does not move the rook.
[remoteglot] / remoteglot.pl
index dec440bafd4137ade2da8cedd6dd4f1c3706e1f6..049cdabaafaa0f0f824bec3cb0df34f147176fe2 100755 (executable)
@@ -290,6 +290,7 @@ sub handle_pgn {
                        my $pos;
                        if (exists($tags->{'FEN'})) {
                                $pos = Position->from_fen($tags->{'FEN'});
+                               $pos->{'last_move'} = 'none';
                                $pos->{'player_w'} = $white;
                                $pos->{'player_b'} = $black;
                                $pos->{'start_fen'} = $tags->{'FEN'};
@@ -393,7 +394,7 @@ sub handle_position {
        # and per the UCI spec, we should really have sent "ucinewgame"),
        # but it's easier, and it works around a Stockfish repetition issue.
        if ($engine->{'chess960'} != $pos->{'chess960'}) {
-               uciprint($engine, "setoption UCI_Chess960 " . ($pos->{'chess960'} ? 'true' : 'false'));
+               uciprint($engine, "setoption name UCI_Chess960 value " . ($pos->{'chess960'} ? 'true' : 'false'));
                $engine->{'chess960'} = $pos->{'chess960'};
        }
        uciprint($engine, "position fen " . $pos->fen());
@@ -406,7 +407,7 @@ sub handle_position {
                        uciprint($engine2, "stop");
                }
                if ($engine2->{'chess960'} != $pos->{'chess960'}) {
-                       uciprint($engine2, "setoption UCI_Chess960 " . ($pos->{'chess960'} ? 'true' : 'false'));
+                       uciprint($engine2, "setoption name UCI_Chess960 value " . ($pos->{'chess960'} ? 'true' : 'false'));
                        $engine2->{'chess960'} = $pos->{'chess960'};
                }
                uciprint($engine2, "position fen " . $pos->fen());
@@ -909,6 +910,7 @@ sub output_json {
                } else {
                        $pos = Position->start_pos('white', 'black');
                }
+               $pos->{'chess960'} = $pos_calculating->{'chess960'};
                my $halfmove_num = 0;
                for my $move (@{$pos_calculating->{'history'}}) {
                        my $id = id_for_pos($pos, $halfmove_num);