Computer chess is a fascinating area to introduced bugs that are so difficult to catch.
In my mind it good a good idea to remove the king in order to improve the performance, but it turns out that in king confrontations it created a king mate...
function TChessboard.InCheck(aSide: TSide; out aPiece: TPiece): TCheck;
var
king: TPiece;
begin
king := GetKing(aSide);
if king = NO_PIECE then
Exit(checkUnknown);
aPiece := GetPieceAbleToMoveToSquare(TUtils.Switch(aSide), TPieceHelper.GetIndex(king), actCapture, [ptPawn, ptKnight, ptBishop, ptRook, ptQueen]);
if aPiece <> NO_PIECE then
Exit(checkYes)
else
Exit(checkNo);
end;
I think I'm done for the time being, I want to focus on other projects.