Showing posts with label ChessKISS. Show all posts
Showing posts with label ChessKISS. Show all posts

Sunday, March 6, 2022

ChessKISS 1.8d bug fix version

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.


Find the new binaries at OneDrive

Sunday, November 14, 2021

Chesskiss 1.8 is out after 6 years...

The last two months I found myself looking again into the code (don't ask me why...), after some time trying to understand it then I did some improvements that today I'm publising.

From what's new:
  • Lazy eval improved
  • Fixed some issues in pawn evaluation
  • New now pawn penalty when ending
  • Some performance gains...
  • New recapture extension
  • Pawn cache improved
  • Evaluation performance improved a bit
  • New book
  • Seems book moves were not very random
  • Some bugs fixed here and there
  • Now rook and knight pairs are also evaluated
  • Now root nodes are evaluated differently
  • Time for move is calculated differently
Don't expect a big ELO increase but at least now the code has been refactored and it would make a new release a bit easier to do.

Find the new binaries at OneDrive

Wednesday, November 20, 2013

ChessKISS amateur division

Looks like ChessKISS did a good job this time, became third with same points than second and two points behind the winner.

Final Standings

34.0 - Waxman 2013

32.0 - ECE 12.01
32.0 - ChessKiss 1.7 64-bit
32.0 - Mediocre 0.5
30.5 - Absolute Zero 2.1.1.0
29.5 - Butcher 1.64 64-bit
28.5 - Bagatur 1.3a 64-bit
26.5 - Gibbon 2.57a 64-bit
25.0 - FireFly 2.6.0 64-bit
24.5 - Fischerle 0.9.30b
21.0 - MadChess 1.3 64-bit
20.5 - ProChess 1.02AD
17.5 - Carballo 0.8
10.5 - K2 0.35

http://kirill-kryukov.com/chess/discussion-board/viewtopic.php?t=7200

Binaries and sources can be downloaded at the moment from SugarSync.

Wednesday, July 25, 2012

ChessKISS tuning, next steps

 These are the next scores to tune:


  • Mobility
  • Tropism
  • Outpost
  • KingOnPos (Left,Center,Right)
  • King safety
  • King pawn shield
  • Passed pawns
  • Passer block
  • Passer chain
  • Isolated pawns
  • Double pawn
  • Backward pawn
  • Chain pawn
  • Passer candidate
  • Early rook move
  • Imbalance
  • Threat penalty
  • Trapped bishop
  • Trapped center pawn
  • Trapped center pawn + bishop
  • Trapped knight
  • Bishop pair adjustment per pawn
  • Undeveloped pieces
  • Passive penalty

The problem here is that almost all of those scores are array based on columns, row or indexes, making it quite complicate to test, let's see...

ChessKISS 1.7

 After some months and a lot of tuning, I'm releasing the 1.7 version, it does not have any new tactics, it just a version that rather than have all pieces/action scores as constants, they are stored in the INI, and of course I've modified those values according to my experiments, there are some more values pending to be tuned, but hey, it is summer!

Download section is already updated


Friday, May 4, 2012

So now what with ChessKISS

 At the moment I only have two things left to do:

  1. Tunning of scores
  2. Full magic bitboards
At the moment I'm working with point 1, but is a very sloooooooooooooooooow task since for the moment I'm tunning the scores one per one playing a huge competition of 10 different versions for each score based on a more or less +-10%.

Exahusting



Sunday, February 5, 2012

CPU hunter...

 I've uploaded a new version the binary, with a tiny change that reduces notably the CPU usage just introducing a Sleep(1) in the main function:

var
  engine: TChessEngine;
  think: TMoveStatus;

begin
  //ReportMemoryLeaksOnShutdown := True;

  engine := TChessEngine.Create;
  try
    WriteLn('ChessKISS');
    WriteLn('version ' + GAME_VERSION + ' ' + RELEASE_DATE);
    {$IFDEF WIN32}
    WriteLn('32 bits');
    {$ELSE}
    WriteLn('64 bits');
    {$ENDIF}
    WriteLn;
    WriteLn('Type "help" for a list of available commands');

    repeat
      Sleep(1);  //here goes the change

      think := engine.Think;
      if think in [msCheckmate, msStalemate, msWithdraw, ms50MovesRule, msThreefoldRep] then
      begin
        engine.SaveAperture(think);
        engine.SendDataToWinboard(think, '');
        engine.Clear;
      end;

      if engine.GameStatus = gsQuit then
        Break;

    until False;
  finally
    engine.Free;
  end;
end.

Thanks Graham for pointing it out!

Saturday, February 4, 2012

ChessKISS 1.5a, maintenance version...

It seems that I took for grant that everybody have SSE4 :-), that's why I didn't have any issue, time to deploy the patch!

What's new?

 04/02/12, 1.5a maintenance version

-Board
  The engine now checks if PopCnt is available (that stop the engine crashing on machines with no SSE4)
  The endings are not longer based on strings but on hash

-Cache
  beta hits updated the history entries

-MoveGenerator
  CanTraverse() tweek a bit, it could discard valid moves

-PV
  New unit, not used yet

-Search
  Killers updated when a bet cache is hit

Saturday, January 21, 2012

ChessKISS 1.5, the PV version

(can already be downloaded in the downloads section)

 From readme:


20/01/12, 1.5 the PV version

-Bitboard
  Added Passed pawn

-Board
  Added pawn bitboards
  All pieces are stored as bitboards
  Counter moved from State to main class
  IsRepetition() rewrited, no more perpetual checks from opponent when in winning position
  LastMove removed
  PawnIsPassed() improved with bitboards
  MovesToSquare() moved to MoveGenerator
  New AreMovesConnected(), used in Search
  New GetXXXAsBitboard()
  New PawnOnSeventh()
  New MoveLetmeInCheck()
  New IsMate()
  Perft stuff moved to Perft.pas (cleaning...)
  Pair of bit.Clear() and bit.Set() changed to bit.ChangeAndSet()
  Restore() works with a pointer rather than copying the whole record
  See() removed
  Some useful functions moved to Utils
  TData = TState

-Book
  Book has scores back again

-Cache
  New criteria added to the replace policy
  Remove() removed

-Definitions
  msCheck removed
  New constant NULL_SCORE

-Engine
  Divide command implemented
  Added SaveAperture() (does not work)

-Evaluation
  Knight was not taking into account tropism
  EvalThreat() ignores attacks from king
  Adjustments removed (knight, bishop and rook)
  Bishop pair adjustment bonus tuned
  King safety now takes into account non pawn material
  In pawn endings a defense was meant to be position
  Passed pawns now uses the function from TChessboard
  EvalConnectedRooks() removed
  Most pair of middle/ending arrays converted to TScore
  EvalPawn() improved and candidates fixed

-General
  Some units were removed since they were not longer in use.

-History
  Depth can use now fractional depths
  Now the side is taked into account
  Fixed error, draw scores in gains were ignored

-Killers
  Optimized a bit

-Perft
  New unit

-Piece
  Added AsChar which returns PNBRQK
  Modified AsString which returns piece info for debugging purposes
  Really silly error in Backward() (passing an index as piece)
  Added AsChar which returns PNBRQK
  Modified AsString which returns piece info for debugging purposes

-Pieces
  Not longer used (pieces stores as bitboards)

-MoveGenerator
  TagIllegalMoves() improved and used in moves/captures
  New MoveLetmeInCheck() (much faster that his counter partner at board)
  Fixed en passant error in GenerateEvassions()

-MovePicker
  Now uses TSee
  Captures in evassion are scored as MMVLVA (before as See)
  Sort scores were not clean when a move was discarded

-Scores
  Values changed to smallint
  New ToString()

-Search
  Finally PV nodes are implemented, many stages takes that into account
  Fast exit if only one move is available
  Stand pat is not calculated in Quiescent() when in check
  Futility now uses stand pat as reference
  Removed stack from AlphaBeta() parameters
  Null search now also checks for threats (not finished)
  Mate threat in null tuned
  The way gains was used has been slightly modified
  Internal Iterative Deepening modified
  All mates tuned
  Allowing null moves moved from stack to params
  Quiescent() detects mates
  Mate threat in null tuned
  Quiescent() returns -MATE inmediatly when Play() takes the king
  InCheck() is not called when context is Check since GenerateEvassions() takes care of that
  New way of taking more time to think, based on PV changes (prototype)
  New razoring reduction
  Extensions now uses PV

-See
  New unit
  Concept rewrited
  Promotions were not scored properly

-Settings
  Razoring added

Monday, January 9, 2012

New tests

 Arena tournament

Rank Engine Score Ch FF Kn S-B
1 ChessKISS 32 17,5/34 · ·· ·· ·· ·· ·· ·· ·· 111000010=10=1001 10=101101=1001=10 292,75
2 FF258_x64 17,0/34 000111101=01=0110 · ·· ·· ·· ·· ·· ·· ·· 101=1000101=1=0=0 289,50
3 Knockout 16,5/34 01=010010=0110=01 010=0111010=0=1=1 · ·· ·· ·· ·· ·· ·· ·· 284,25


51 games played / Tournament is finished


Those two engines are in the range of 2225 ELO



210Firefly 2.5.8 64-bit2228+18−1853.4%−26.718.5%1274
76.5%
211KnockOut 0.7.1 32-bit2218+21−2151.6%−16.117.9%952
79.2%


So it seems ChessKISS is improving..., soon version 1.5 will be released.

Tuesday, November 29, 2011

ChessKISS 1.4

 From readme:


-General
  The engine do not longer return TMoves but PMoves (this increases the internal speed)
  Some functions inlined
  All references to int64 changed to UInt64

-Bitboards
  New unit
  Some new constans to help

-Board
  New PlayFast(), StaticExchangeEvaluation() now uses it
  MovesToSquare() changed to PMoves
  Flip() implemented again to find symmetric issues
  HasPiecesInCol() removed
  PawnIsPassed() improved
  New endings KBKKK, KRKR, KQKQ, KNKNN, KNNK
  GetPieceType(side, type) split in GetXXX(side)
  GetPieceCount(side, type) split in GetXXXCount(side)
  Started to use bitboards
  Backup is not longer a TStack<T> but a simple ping pong array
  New functions AsBitboard()
  Attacks[] removed, now using a precalculated bitboard per piece
  Fixed strange bugs when promoting in PieceMovingToSquare()
  FindPiece() now uses IsValidMove() internally which makes the selection of moves more robust
  Some functions now return TScore rather than a simple integer
  Finally TPiece class replaced by a simple composed integer, this increases the overall speed
  New IndicesToPieceLists[] that helps to find out the index in the related piece list.
  Indices/Pieces list removed
  Play/AddPiece/DeletePiece/UpdateSquare updated in accordance with piece changes

-Book
  A new book has been generated
  Handle book code rewritten
  Book for the moment does not longer uses scores

-Cache
  Pawn cache now handles TScore based values
  Clear() optimized

-Definitions
  Removed TCaptures
  Removed PDirArray
  Removed Colors[]
  Removed NotMine[]
  Bishop and knight ending values changed

-EndGame
  New ending KBKP (previously the engine was doing a bad job)

-Engine
  Evaluate() now handled TScore Evaluation

-Evaluation
  All scores use now TScore and only one interpolation is done at the end
  Fixed another stupid overflow error in chain panws (-1 when col 1)
  TrappedPieces() now handle all kind of trapped pieces
  Again another silly error, don't use -f() when f() can return +-, uses always +f()...
  EvalConnectedRooks() optimized a bit
  Generate attacks optimized and tuned a bit (not finished)
  Added piece threats and removed hungs
  Added pawn adjustment to bishop eval
  Bitboards used in some parts
  Changed the passers bonus values
  Changed the values of rook open files
  Changes the tempo values
  Changed the value of bishop pairs
   
-Killers
  Removed backups

-History
  Removed backups

-MoveGenerator
  King was not using its position score (thanks for the non warning mr. compiler...)
  Fixed a symmetric bug in the passed pawn chain
  Fixed a symmetric bug in the rook eval B8 = C8
  Very much improved with PMoves
  New GetMoves() (generation functions do not longer return movements)
  Changed the order that moves are generated
  GenerateEvassions() now cleans the king moves
  Pawns, knights and king fully uses bitboards (sliders next, thinking the best way wiuthout copy-pasting...)

-MovePicker
  mcQuiescenseCheck removed, instread the normal mcCheck is used
  Improved with PMoves
  RemoveNonChecks() removed
  Fixed a serious bug when in check and singular is applied
  In some cases the Singular phase could return more than one move
  Sort functions are executed even with only one move has to be sorted (since they can be discarded)
  Class simplified, only GetMove() is public, one must call the function until move = NO_MOVE
  First capturing score is not longer based on See() but on MVVLVA()

-Piece
  New unit
  Evaluate() now returns TScore
  Created EvalXXX() so evaluation can call them directly
  New class TPieceHelper with all static methods for helping unpack TPiece data

-Pieces
  GetColMask() removed
  New TPieces.Asbitboard()

-Scores
  New unit

-Search
  Added some debug defines
  PV removed (I can't see improves, most probably because I'm using it wrong...)
  Stats only counted in debug mode
  Configuration handled better
  NextStack() only called one per depth
  "Singular" extension removed, silly approach...
  History Reduction removed
  Reorganized a bit for new picker behaviour

-Utils
  Interpolate() removed, stuff goes to TScore

Friday, November 25, 2011

Still alive...

 Just preparing ChessKISS 1.4, but it takes time...

New version looks promising:


Arena tournament

Rank Engine Score Ch
1 ChessKISS 37,0/48 · ·· ·· ··
2 Faile 3,5/8 1=001010
3 BigLion 3,0/8 00==1001
4 GERBIL 2,5/8 0=010001
5 Micromax48_c2d 2,0/8 00101000
6 ZOIDBERG 0,0/8 00000000
6 Roce38 0,0/8 00000000


48 games played / Tournament is finished

Tournament start: 2011.11.25, 08:41:14
Latest update: 2011.11.25, 15:13:49

Thursday, October 13, 2011

Testing ChessKISS

 I'm doing some changes in order to see if somehow I can improve the performance of the 64 bits version, but this of course needs to be tested, so here we go...


Arena tournament

Rank Engine Score Me Ch Bi Mi Ro Pr ZO Pu Ts S-B
1 Mediocre 14,0/16 · · 11 =1 11 01 1= 11 11 11 102,50
2 ChessKISS 11,5/16 00 · · =1 01 11 1= 1= 11 11 73,50
3 BigLion 9,0/16 =0 =0 · · 10 =1 10 11 =1 01 62,00
4 Micromax48_c2d 9,0/16 00 10 01 · · 10 11 01 11 01 60,50
5 Roce38 6,0/16 10 00 =0 01 · · =0 01 == 10 47,00
6 Predateur 2.0 6,0/16 0= 0= 01 00 =1 · · 0= 10 10 44,25
7 ZOIDBERG 6,0/16 00 0= 00 10 10 1= · · 01 10 40,25
8 Pulsar2009-9b 5,5/16 00 00 =0 00 == 01 10 · · 11 32,50
9 Tscp181 5,0/16 00 00 10 10 01 01 01 00 · · 36,00



Second after Mediocre, not bad at all, the engine seems to be behave identically.

Wednesday, October 12, 2011

Reasons why ChessKISS 64 is slower than 32

Optimized assembler in 32 bits mode:

Board.pas.1234: data.EnPassant := nil;
005412BF 8B45C4           mov eax,[ebp-$3c]
005412C2 33D2             xor edx,edx
005412C4 899008020000     mov [eax+$00000208],edx
Board.pas.1237: data.LastPieceCaptured := nil;
005412CA 8B45C4           mov eax,[ebp-$3c]
005412CD 33D2             xor edx,edx
005412CF 899024020000     mov [eax+$00000224],edx
Board.pas.1238: data.LastPieceMoved := nil;
005412D5 8B45C4           mov eax,[ebp-$3c]
005412D8 33D2             xor edx,edx
005412DA 899020020000     mov [eax+$00000220],edx
Board.pas.1239: data.LastMove := aMove;
005412E0 8B45C4           mov eax,[ebp-$3c]
005412E3 89B828020000     mov [eax+$00000228],edi
Board.pas.1240: piece := nil;
005412E9 33F6             xor esi,esi

Optimized assembler in 64 bits mode:

Board.pas.1234: data.EnPassant := nil;
00000000005E423F 488B8518030000   mov rax,[rbp+$00000318]
00000000005E4246 48C7800804000000000000 mov qword ptr [rax+$00000408],$0000000000000000
Board.pas.1237: data.LastPieceCaptured := nil;
00000000005E4251 488B8518030000   mov rax,[rbp+$00000318]
00000000005E4258 48C7803004000000000000 mov qword ptr [rax+$00000430],$0000000000000000
Board.pas.1238: data.LastPieceMoved := nil;
00000000005E4263 488B8518030000   mov rax,[rbp+$00000318]
00000000005E426A 48C7802804000000000000 mov qword ptr [rax+$00000428],$0000000000000000
Board.pas.1239: data.LastMove := aMove;
00000000005E4275 488B8518030000   mov rax,[rbp+$00000318]
00000000005E427C 8B8D50030000     mov ecx,[rbp+$00000350]
00000000005E4282 898838040000     mov [rax+$00000438],ecx

Both versions suffer from the same issue, loading into the same register the same value over and over (in EAX or RAX the compiler is loading the data variable), how can this still happening?

Thursday, September 15, 2011

ChessKISS 64 bits finally works as expected!

I've finally found the error that provokes a different behaviour between the 32 and 64 bits version of ChessKISS, see this highlighted code in EvalRook():

//Check to see if the king has been forced to move and has trapped a rook at a1/b1/g1/h1,
  //if so, then penalize the trapped rook to help extricate it
  if FStage <= sMiddle then
  begin
    x := AllowedCols[col];
    if (x > 0) and (aPiece.GetRank = 1) then
    begin
      //blocked up?
      if (FBoard.GetPiece(aPiece.Forward) <> nil) and
      //Blocked left or right
         (FBoard.GetPieceType(aPiece.Index + Deltas[x]) = Kings[me]) then
        Dec(pos, TRAPPED_ROOK_PENALTY);
    end
end;

That is new and also was having an unknown behaviour in 32 bits in the trapped rook scenario:

  • Stage before ending
  • Columns 1 or 2 or 7 or 8
  • Next square occupied
  • Left or right squares, occupied by own king
But this should only be checked in rank 1!!!, in the other ranks it does not make sense, but even worst on the last rank you can only get garbage since the piece is out of the board...

Well, I will upload a fix for this and also the brand new 64 bits version

Saturday, September 3, 2011

Trying Delphi XE2, ChessKISS 64 bits vs 32 bits

 Well, it was not difficult to make it work under 64 bits, but a bit to tune the WIN32 assembler versions that are not longer valid. I had to change the following functions:


function TBit.FirstBitSet(aValue: integer): integer;
{$IFDEF WIN32}
//EDX
ASM
  BSF EAX, EDX
END;
{$ELSE}
const
  Mod37BitPosition: array[0..36] of integer =
  (
    32, 0, 1, 26, 2, 23, 27, 0, 3, 16, 24, 30, 28, 11, 0, 13, 4, 7, 17,
    0, 25, 22, 31, 15, 29, 10, 12, 6, 0, 21, 14, 9, 5, 20, 8, 19, 18
  );

begin
  {
  result := 0;

  for i := 0 to 31 do
  begin
    if _GetBit(aValue, i) then
      Exit(i);
  end;
  }

  result := Mod37BitPosition[(-aValue and aValue) mod 37];
end;
{$ENDIF}

function TBit.LastBitSet(aValue: integer): integer;
{$IFDEF WIN32}
//EDX
ASM
  BSR EAX, EDX
END;
{$ELSE}
const
  MultiplyDeBruijnBitPosition: array[0..31] of integer =
    (0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8, 31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9);

begin
  {
  result := 0;

  for i := 31 downto 0 do
  begin
    if _GetBit(aValue, i) then
      Exit(i);
  end;
  }
  result := MultiplyDeBruijnBitPosition[cardinal(aValue * $077cb531) shr 27];
end;
{$ENDIF}

function TBit.PopFirstBitSet(var aValue: integer): integer;
//In = [EDX] Out = EAX
{$IFDEF WIN32}
ASM
  PUSH ECX
  MOV ECX, [EDX]
  BSF EAX, ECX
  BTR [EDX], EAX
  POP ECX
END;
{$ELSE}
begin
  result := FirstBitSet(aValue);
  _Clear(aValue, result);
end;
{$ENDIF}

Coming from Delphi 2010 is a bit strange this build configuration, I've set it up to release, this has boost again the performance so is not longer two times slower, silly me...


Some tests from initial position.

Win32)
02/09/2011 23:52:29, Send: 1 77 0 57 Nb1c3 
02/09/2011 23:52:29, Send: 2 5 0 228 Nb1c3 Nb8c6 
02/09/2011 23:52:29, Send: 3 69 0 359 Nb1c3 Nb8c6 Ng1f3 
02/09/2011 23:52:29, Send: 4 5 1 5309 Nb1c3 Nb8c6 Ng1f3 Ng8f6 
02/09/2011 23:52:29, Send: 5 52 0 7137 Nb1c3 Nb8c6 Ng1f3 Ng8f6 d4 
02/09/2011 23:52:29, Send: 6 39 1 12584 Nb1c3 Nb8c6 d3 Ng8f6 Bc1e3 d5 
02/09/2011 23:52:29, Send: 7 56 4 30821 Nb1c3 d6 Ng1f3 Bc8e6 e4 Nb8c6 Bf1b5 
02/09/2011 23:52:30, Send: 8 13 25 107775 Ng1f3 d5 e3 Bc8e6 Bf1b5 Nb8c6 Nf3e5 Ng8f6 Nb1c3 
02/09/2011 23:52:30, Send: 9 9 35 220814 Ng1f3 d5 e3 Nb8c6 Bf1b5 Ng8f6 Nb1c3 Bc8g4 d4 Bg4xf3 
02/09/2011 23:52:31, Send: 10 7 78 451966 Ng1f3 d5 e3 Nb8c6 Bf1b5 Ng8f6 Nb1c3 Bc8g4 d4 e6 
02/09/2011 23:52:32, Send: 11 12 157 905577 Ng1f3 d5 e3 Nb8c6 Bf1b5 Ng8f6 Nb1c3 Bc8d7 d4 a6 Bb5d3 
02/09/2011 23:52:39, Send: 12 16 650 2598910 e4 e5 Nb1c3 Nb8c6 Ng1f3 Ng8f6 Bf1b5 Bf8d6 d3 O-O Bc1g5 Kg8h8 
02/09/2011 23:52:48, Send: 13 23 858 4698110 e4 Ng8f6 Nb1c3 d5 e4xd5 Nf6xd5 Ng1f3 Nb8c6 Bf1b5 Bc8g4 O-O a6 Bb5xc6 b7xc6 
02/09/2011 23:52:58, Send: 14 21 1085 7551076 e4 Ng8f6 Nb1c3 d5 e4xd5 Nf6xd5 Ng1f3 Nb8c6 Bf1b5 Nd5xc3 b2xc3 Qd8d5 Ra1b1 Bc8d7 
Depth 14 reached in 32 seconds.
Win64)
03/09/2011 0:01:30, Send: 1 77 0 57 Nb1c3 
03/09/2011 0:01:30, Send: 2 5 0 228 Nb1c3 Nb8c6 
03/09/2011 0:01:30, Send: 3 69 0 359 Nb1c3 Nb8c6 Ng1f3 
03/09/2011 0:01:30, Send: 4 5 1 5309 Nb1c3 Nb8c6 Ng1f3 Ng8f6 
03/09/2011 0:01:30, Send: 5 52 0 7137 Nb1c3 Nb8c6 Ng1f3 Ng8f6 d4 
03/09/2011 0:01:30, Send: 6 39 1 12584 Nb1c3 Nb8c6 d3 Ng8f6 Bc1e3 d5 
03/09/2011 0:01:30, Send: 7 56 6 30821 Nb1c3 d6 Ng1f3 Bc8e6 e4 Nb8c6 Bf1b5 
03/09/2011 0:01:31, Send: 8 13 32 107775 Ng1f3 d5 e3 Bc8e6 Bf1b5 Nb8c6 Nf3e5 Ng8f6 Nb1c3 
03/09/2011 0:01:31, Send: 9 9 51 220817 Ng1f3 d5 e3 Nb8c6 Bf1b5 Ng8f6 Nb1c3 Bc8g4 d4 Bg4xf3 
03/09/2011 0:01:32, Send: 10 7 106 451687 Ng1f3 d5 e3 Nb8c6 Bf1b5 Ng8f6 Nb1c3 Bc8g4 d4 e6 
03/09/2011 0:01:34, Send: 11 12 215 908965 Ng1f3 d5 e3 Nb8c6 Bf1b5 Ng8f6 Nb1c3 Bc8d7 d4 a6 Bb5d3 
03/09/2011 0:01:43, Send: 12 19 900 2607087 e4 e5 Nb1c3 Nb8c6 Ng1f3 Bf8d6 Bf1b5 Ng8e7 O-O a6 Bb5d3 Bd6c5 
03/09/2011 0:01:53, Send: 13 23 931 4361400 e4 Ng8f6 Nb1c3 d5 e4xd5 Nf6xd5 Ng1f3 Nb8c6 Bf1b5 Bc8g4 O-O a6 Bb5xc6 b7xc6 
03/09/2011 0:02:10, Send: 14 21 1780 7805174 e4 Ng8f6 Nb1c3 d5 e4xd5 Nf6xd5 Ng1f3 Nb8c6 Bf1b5 Nd5xc3 b2xc3 Qd8d5 Ra1b1 Bc8d7 Bb5d3
Depth 14 reached in 40 seconds, 10 seconds slower!, but the worst thing is that they are different, OMG!
02/09/2011 23:52:29, Send: 1 77 0 57 Nb1c3 
03/09/2011 0:01:30,  Send: 1 77 0 57 Nb1c3 
02/09/2011 23:52:29, Send: 2 5 0 228 Nb1c3 Nb8c6 
03/09/2011 0:01:30,  Send: 2 5 0 228 Nb1c3 Nb8c6 
02/09/2011 23:52:29, Send: 3 69 0 359 Nb1c3 Nb8c6 Ng1f3 
03/09/2011 0:01:30,  Send: 3 69 0 359 Nb1c3 Nb8c6 Ng1f3 
02/09/2011 23:52:29, Send: 4 5 1 5309 Nb1c3 Nb8c6 Ng1f3 Ng8f6 
03/09/2011 0:01:30,  Send: 4 5 1 5309 Nb1c3 Nb8c6 Ng1f3 Ng8f6 
02/09/2011 23:52:29, Send: 5 52 0 7137 Nb1c3 Nb8c6 Ng1f3 Ng8f6 d4 
03/09/2011 0:01:30,  Send: 5 52 0 7137 Nb1c3 Nb8c6 Ng1f3 Ng8f6 d4 
02/09/2011 23:52:29, Send: 6 39 1 12584 Nb1c3 Nb8c6 d3 Ng8f6 Bc1e3 d5 
03/09/2011 0:01:30,  Send: 6 39 1 12584 Nb1c3 Nb8c6 d3 Ng8f6 Bc1e3 d5 
02/09/2011 23:52:29, Send: 7 56 4 30821 Nb1c3 d6 Ng1f3 Bc8e6 e4 Nb8c6 Bf1b5 
03/09/2011 0:01:30,  Send: 7 56 6 30821 Nb1c3 d6 Ng1f3 Bc8e6 e4 Nb8c6 Bf1b5 
02/09/2011 23:52:30, Send: 8 13 25 107775 Ng1f3 d5 e3 Bc8e6 Bf1b5 Nb8c6 Nf3e5 Ng8f6 Nb1c3 
03/09/2011 0:01:31,  Send: 8 13 32 107775 Ng1f3 d5 e3 Bc8e6 Bf1b5 Nb8c6 Nf3e5 Ng8f6 Nb1c3 
02/09/2011 23:52:30, Send: 9 9 35 220814 Ng1f3 d5 e3 Nb8c6 Bf1b5 Ng8f6 Nb1c3 Bc8g4 d4 Bg4xf3 
03/09/2011 0:01:31,  Send: 9 9 51 220817 Ng1f3 d5 e3 Nb8c6 Bf1b5 Ng8f6 Nb1c3 Bc8g4 d4 Bg4xf3 
02/09/2011 23:52:31, Send: 10 7 78 451966 Ng1f3 d5 e3 Nb8c6 Bf1b5 Ng8f6 Nb1c3 Bc8g4 d4 e6 
03/09/2011 0:01:32,  Send: 10 7 106 451687 Ng1f3 d5 e3 Nb8c6 Bf1b5 Ng8f6 Nb1c3 Bc8g4 d4 e6 
Different number of searches!

02/09/2011 23:52:32, Send: 11 12 157 905577 Ng1f3 d5 e3 Nb8c6 Bf1b5 Ng8f6 Nb1c3 Bc8d7 d4 a6 Bb5d3 
03/09/2011 0:01:34,  Send: 11 12 215 908965 Ng1f3 d5 e3 Nb8c6 Bf1b5 Ng8f6 Nb1c3 Bc8d7 d4 a6 Bb5d3 
Different number of searches!

02/09/2011 23:52:39, Send: 12 16 650 2598910 e4 e5 Nb1c3 Nb8c6 Ng1f3 Ng8f6 Bf1b5 Bf8d6 d3 O-O Bc1g5 Kg8h8 
03/09/2011 0:01:43,  Send: 12 19 900 2607087 e4 e5 Nb1c3 Nb8c6 Ng1f3 Bf8d6 Bf1b5 Ng8e7 O-O a6 Bb5d3 Bd6c5 

02/09/2011 23:52:48, Send: 13 23 858 4698110 e4 Ng8f6 Nb1c3 d5 e4xd5 Nf6xd5 Ng1f3 Nb8c6 Bf1b5 Bc8g4 O-O a6 Bb5xc6 b7xc6 
03/09/2011 0:01:53,  Send: 13 23 931 4361400 e4 Ng8f6 Nb1c3 d5 e4xd5 Nf6xd5 Ng1f3 Nb8c6 Bf1b5 Bc8g4 O-O a6 Bb5xc6 b7xc6 

02/09/2011 23:52:58, Send: 14 21 1085 7551076 e4 Ng8f6 Nb1c3 d5 e4xd5 Nf6xd5 Ng1f3 Nb8c6 Bf1b5 Nd5xc3 b2xc3 Qd8d5 Ra1b1 Bc8d7 
03/09/2011 0:02:10,  Send: 14 21 1780 7805174 e4 Ng8f6 Nb1c3 d5 e4xd5 Nf6xd5 Ng1f3 Nb8c6 Bf1b5 Nd5xc3 b2xc3 Qd8d5 Ra1b1 Bc8d7 Bb5d3
Hooray!, more not so funny debugging sessions in order to find nasty bugs, let's see how I will tackle this...

Wednesday, June 1, 2011

New version 1.2

 From readme...



01/06/11, 1.2 update

-Board
  Added middle and ending material values
  Added GetGameStageAsInt()
  GetMaterial() renamed to GetMiddleMaterial()
  Added GetEndingMaterial()
  FindPiece() improved
  IsValidMove() removed
  Moves all moving stuff to new unit MoveGenerator
  Code cleaned
  Fixed a silly error in IsPinned()
 
-Definitions
  New ending piece values
  New piece constants

-EndGame
  New KR vs KP
  Fixed a silly error in KRKP

-Evaluation
  Material values interpolated
  Tempo interpolated
  New PasserBlock[] penalty
  Passed pawn bonus interpolated
  Double pawn penalty interpolated
  Queen on seventh bonus interpolated
  Open rook file bonus interpolated
  Rook behind passer bonus interpolated
  Rook on seventh bonus interpolated
  New passer in chain bonus
  New interpolated values for isolated, double, backward and chain pawns in EvalPawn()
  New interpolated values for bishop pair
  RookBehindPasserPawnBonus moved to EvalPassers()
  Added pawn races
  King attack table changed
  Knight and rook adjustments uses all pawns not only from one side
  Candidate passers changed, let's see...

-History
  Added transactions
  Subtract() did not reduce when overflow
 
-Killers
  Added transactions

-Pieces
  GetValue() renamed to GetMiddleValue()
  Added GetEndingValue()
  Added static GetValue function
  Position score interpolated
  Array piece values moved from Definitions to Pieces
  Changed some position values

-MoveGenerator
  New!

-Search
  NeedMoreTime() now takes into account time left
  First move in AlphaBeta() always passes the value of aPVNode
  TT also used in Quiescent()
  New transactions used
  Added mate killer in Quiescent()
  Now AlphaBeta() returns score when in cut-off rather than aBeta

-Utils
  New Interpolate() function

Tuesday, May 17, 2011

WAC suite, another try

 From version to version I checkthe engine against one of the available suites, the results from yesterday are quite good (294 of 300 matching moves), I have to revise those 6 "errors":


Analysis of C:\Work\BB\Demos\Extra\ChessKISS\PNG\wac.epd  
Analyzing engine: ChessKISS
16/05/2011 22:30:57 Level: 30 Seconds
   Source                    : List of EPD/PGN files
      C:\Work\BB\Demos\Extra\ChessKISS\PNG\wac.epd
   Colours                   : White moves=True, Black moves=True
   Direction                 : forward
   Games (PGN)               : From 1 to 999999
   Moves                     : From 1 to 250
   Positions (EPD)           : All positions
   Use Engine(s)             : List
      ChessKISS
   Use seconds per move      : 30 Seconds per move
   Analysis Lines            : Minimum search depth=2
   Activate abort analysis   : False
  1) Qg3-g6             Qg3-g6  * 0 Seconds
  2) .. Rb3xb2          Rb3xb2  * 19 Seconds
  3) Re3-g3             Re3-g3  * 0 Seconds
  4) Qh6xh7             Qh6xh7  * 0 Seconds
  5) .. Qc6-c4          Qc6-c4  * 0 Seconds
  6) Rb6-b7             Rb6-b7  * 0 Seconds
  7) .. Ng4-e3          Ng4-e3  * 0 Seconds
  8) Re7-f7             Re7-f7  * 0 Seconds
  9) .. Bd6-h2          Bd6-h2  * 0 Seconds
 10) Rh4xh7             Rh4xh7  * 0 Seconds
 11) Bf3xc6             Bf3xc6  * 0 Seconds
 12) .. Qg4xf3          Qg4xf3  * 0 Seconds
 13) Qf1xf8             Qf1xf8  * 0 Seconds
 14) Qh3xh7             Qh3xh7  * 0 Seconds
 15) Rb8xb7             Rb8xb7  * 0 Seconds
 16) Ne2-c3             Ne2-c3  * 0 Seconds
 17) Nc4-e5             Nc4-e5  * 0 Seconds
 18) Ra8-h8             Ra8-h8  * 1 Second
 19) c5-c6              c5-c6   * 0 Seconds
 20) .. Bd7-b5          Bd7-b5  * 0 Seconds
 21) Qd2-h6             Qd2-h6  * 0 Seconds
 22) Bc4-a2, Ng5xf7     Ng5xf7  * 0 Seconds
 23) g2-g4              g2-g4   * 0 Seconds
 24) .. Bg7-d4          Bg7-d4  * 0 Seconds
 25) .. Qg4-h4          Qg4-h4  * 0 Seconds
 26) .. Bd7-f5          Bd7-f5  * 0 Seconds
 27) Qa3-f8             Qa3-f8  * 0 Seconds
 28) .. Qb4-e1          Qb4-e1  * 0 Seconds
 29) c5-c6              c5-c6   * 0 Seconds
 30) Ne4xd6             Ne4xd6  * 0 Seconds
 31) Qb7xa8, d5-d6, d5xe6  d5xe6   * 0 Seconds
 32) Qd1-d8             Qd1-d8  * 0 Seconds
 33) Qe4-e5, Qe4-f4     Qe4-e5  * 0 Seconds
 34) .. Bd4-g1          Bd4-g1  * 0 Seconds
 35) Rh4xh7             Rh4xh7  * 0 Seconds
 36) .. Re7-e1          Re7-e1  * 0 Seconds
 37) .. Nc6xd4          Nc6xd4  * 0 Seconds
 38) Rd2-d8             Rd2-d8  * 0 Seconds
 39) Nc3-a4             Nc3-a4  * 0 Seconds
 40) .. Rd8-c8          Rd8-c8  * 0 Seconds
 41) Kb5-a5, Kb5-c5     Kb5-a5  * 0 Seconds
 42) Bb4-a5             Bb4-a5  * 0 Seconds
 43) Ba3-e7, Qd5xa8     Ba3-e7  * 0 Seconds
 44) .. d5xc4           d5xc4   * 0 Seconds
 45) .. Qf1xa1          Qf1xa1  * 0 Seconds
 46) Nc3-b5             Nc3-b5  * 0 Seconds
 47) .. Nc6xd4          Nc6xd4  * 0 Seconds
 48) .. Rb8-b4          Rb8-b4  * 0 Seconds
 49) Qh5xh7             Qh5xh7  * 0 Seconds
 50) Rb7xb6             Rb7xb6  * 0 Seconds
 51) Rf4-g4             Rf4-g4  * 0 Seconds
 52) Re1-e7             Re1-e7  * 0 Seconds
 53) .. Re3-e1          Re3-e1  * 0 Seconds
 54) .. Qh5-h1          Qh5-h1  * 0 Seconds
 55) Qd4xg7             Qd4xg7  * 0 Seconds
 56) .. Bc5xf2          Bc5xf2  * 0 Seconds
 57) Rf3-f8             Rf3-f8  * 0 Seconds
 58) Qd3-d1             Qd3-d1  * 0 Seconds
 59) Nc3-d5             Nc3-d5  * 0 Seconds
 60) Qh3-h8             Qh3-h8  * 0 Seconds
 61) Qf3-f7             Qf3-f7  * 0 Seconds
 62) .. Rg6xg3          Rg6xg3  * 0 Seconds
 63) Ne5xf7             Ne5xf7  * 0 Seconds
 64) g2-g4              g2-g4   * 0 Seconds
 65) Nd5-e7             Nd5-e7  * 0 Seconds
 66) .. Qc7xe5          Qc7xe5  * 0 Seconds
 67) Re5xd5             Re5xd5  * 0 Seconds
 68) Qe2xe3             Qe2xe3  * 0 Seconds
 69) f2-f3, h2-h3       f2-f3   * 0 Seconds
 70) .. Nb4-a2          Nb4-a2  * 0 Seconds
 71) Nb5xa7             Nb5xa7  * 14 Seconds
 72) e5-e6              e5-e6   * 0 Seconds
 73) Qe2-d2             Qe2-d2  * 0 Seconds
 74) .. Qf4-f1          Qf4xe4  
 75) .. Qd7-d6          Qd7-d6  * 0 Seconds
 76) Bg5xf6             Bg5xf6  * 0 Seconds
 77) .. Nf5-g3          Nf5-g3  * 0 Seconds
 78) Ne4-g5             Ne4-g5  * 0 Seconds
 79) .. Qh3xh2          Qh3xh2  * 0 Seconds
 80) Rd1-a1             Rd1-a1  * 3 Seconds
 81) .. Be7-d6          Be7-d6  * 0 Seconds
 82) Be4-h7             Be4-h7  * 0 Seconds
 83) Qd4xd7             Qd4xd7  * 0 Seconds
 84) Qd5-g8             Qd5-g8  * 0 Seconds
 85) Nc5-a6             Nc5-a6  * 0 Seconds
 86) .. Nf6-g4          Nf6-g4  * 0 Seconds
 87) .. Re6xe5          Re6xe5  * 0 Seconds
 88) .. Rg6xg2          Rg6xg2  * 0 Seconds
 89) .. g7-g5           g7-g5   * 0 Seconds
 90) Nf5xg7             Nf5xg7  * 0 Seconds
 91) .. Bb3-e6          Bb3-e6  * 5 Seconds
 92) .. Be6xg4          Be6xg4  * 11 Seconds
 93) Bc1-h6             Bc1-h6  * 0 Seconds
 94) .. e5-e4           e5-e4   * 0 Seconds
 95) Nf6-g4             Nf6-g4  * 0 Seconds
 96) Qh4-d8             Qh4-d8  * 0 Seconds
 97) Qg2-a8             Qg2-a8  * 0 Seconds
 98) .. Nc5xe4          Nc5xe4  * 0 Seconds
 99) Re5-h5             Re5-h5  * 0 Seconds
100) b5-b6              Bd2-e3  
101) .. Bd4-c3          Bd4-c3  * 0 Seconds
102) Qc8xf8             Qc8xf8  * 0 Seconds
103) Qh6xg6             Qh6xg6  * 0 Seconds
104) Qe2xh5             Qe2xh5  * 0 Seconds
105) .. Qh5xh4          Qh5xh4  * 1 Second
106) .. Ne4-f2          Ne4-f2  * 0 Seconds
107) Nd4-b5             Nd4-b5  * 0 Seconds
108) Qc5-e5             Qc5-e5  * 0 Seconds
109) .. c4-c3           c4-c3   * 0 Seconds
110) .. Ba7-e3          Ba7-e3  * 0 Seconds
111) .. Qg1-f1          Qg1-f1  * 0 Seconds
112) Re1xe6             Re1xe6  * 0 Seconds
113) .. Qd8xf6          Qd8xf6  * 0 Seconds
114) Bd3xh7             Bd3xh7  * 0 Seconds
115) Ne8-d6             Ne8-d6  * 0 Seconds
116) .. Rd8-d2          Rd8-d2  * 2 Seconds
117) .. Nd6-e4          Nd6-e4  * 0 Seconds
118) Rf4-h4             Rf4-h4  * 1 Second
119) .. Qd8xd3          Qd8xd3  * 0 Seconds
120) g5-g6              g5-g6   * 2 Seconds
121) .. Bc6xf3          Bc6xf3  * 0 Seconds
122) .. Rd1xf1          Rd1xf1  * 0 Seconds
123) .. Bb7xd5, Re7-c7  Bb7xd5  * 0 Seconds
124) .. g4-g3           g4-g3   * 0 Seconds
125) .. Bb6xd4          Bb6xd4  * 0 Seconds
126) Rf6xc6             Rf6xc6  * 0 Seconds
127) Rb2xb7             Rb2xb7  * 0 Seconds
128) Qf7-g6             Qf7-g6  * 0 Seconds
129) .. Bb7-f3          Bb7-f3  * 0 Seconds
130) .. Qg7-h6, Qg7-h8  Qg7-h6  * 0 Seconds
131) Re1-e8             Re1-e8  * 5 Seconds
132) .. Re5-e1          Re5-e1  * 0 Seconds
133) Bg3-h4             Bg3-h4  * 0 Seconds
134) .. Rd8-d1          Rd8-d1  * 0 Seconds
135) .. Ne6-d4          Ne6-d4  * 0 Seconds
136) Rc1-c8             Rc1-c8  * 0 Seconds
137) Rd1-d7             Rd1-d7  * 0 Seconds
138) h4-h5              h4-h5   * 0 Seconds
139) Ne4-f6             Ne4-f6  * 0 Seconds
140) Rc3-c7             Rc3-c7  * 0 Seconds
141) Qc1xf4             Qc1xf4  * 14 Seconds
142) Re1-e8, f5-f6      Re1-e8  * 0 Seconds
143) Rg6xh6             Rg6xh6  * 0 Seconds
144) .. d4-d3           d4-d3   * 0 Seconds
145) Re1-e8             Re1-e8  * 2 Seconds
146) Bf5-c8             Bf5-c8  * 0 Seconds
147) .. Nf6xg4          Nf6xg4  * 0 Seconds
148) Rg1xg7             Rg1xg7  * 0 Seconds
149) .. Be4xg2          Be4xg2  * 0 Seconds
150) .. Bd6-a3, Bd6-f8, e4-e3  e4-e3   * 0 Seconds
151) Na4-c3             Na4-c3  * 0 Seconds
152) Nc3-e4             Nc3-e4  * 0 Seconds
153) .. Nb5xd4          Nb5xd4  * 0 Seconds
154) Qf2xf7             Qf2xf7  * 0 Seconds
155) d5-d6              d5-d6   * 0 Seconds
156) Qh3xh6             Qh3xh6  * 0 Seconds
157) Nd5-e7             Nd5-e7  * 3 Seconds
158) Re7xg7             Re7xg7  * 0 Seconds
159) Ng5-e6             Ng5-e6  * 0 Seconds
160) Qg4xd7             Qg4xd7  * 0 Seconds
161) Qh4xd8             Qh4xd8  * 0 Seconds
162) Bc4-d5             Bc4-d5  * 0 Seconds
163) .. Qf3-g2          c6xd5  
164) Rc2xc4             Rc2xc4  * 0 Seconds
165) Re3-e2             Re3-e2  * 0 Seconds
166) .. d5-d4           d5-d4   * 0 Seconds
167) .. Rf2xg2          Rf2xg2  * 0 Seconds
168) .. Qd7-d2          Qd7-d2  * 0 Seconds
169) .. Bg7-h6          Bg7-h6  * 0 Seconds
170) Qa2xc4             Qa2xc4  * 0 Seconds
171) Be3-h6             Be3-h6  * 0 Seconds
172) .. Qe5-e1          Qe5-e1  * 0 Seconds
173) Qe3-h6             Qe3-h6  * 0 Seconds
174) .. Nf4xg2          Nf4xg2  * 0 Seconds
175) Nf4-h5             Nf4-h5  * 0 Seconds
176) .. Rh8xh2          Rh8xh2  * 0 Seconds
177) .. Qe7-a3          Qe7-a3  * 0 Seconds
178) Nf4xe6             Nf4xe6  * 0 Seconds
179) .. Qf2-g1          Qf2-g1  * 0 Seconds
180) .. Nf6xd5          Nf6xd5  * 1 Second
181) .. Nf6-g4          Nf6-g4  * 0 Seconds
182) Qd1-h5             Qd1-h5  * 1 Second
183) Bg5-f6             Bg5-f6  * 0 Seconds
184) Qf6-e7             Qf6-e7  * 0 Seconds
185) Qh5xh7             Qh5xh7  * 0 Seconds
186) Bh6-f8             Bh6-f8  * 0 Seconds
187) .. Nf4-h3          Nf4-h3  * 0 Seconds
188) Qf6-g7             Qf6-g7  * 0 Seconds
189) Re7-e8             Re7-e8  * 0 Seconds
190) .. Bd7-h3          Bd7-h3  * 4 Seconds
191) Qe2-c4             Qe2-c4  * 0 Seconds
192) .. Nb4-d3          Nb4-d3  * 0 Seconds
193) .. Qb3xe3          Qb3xe3  * 1 Second
194) Nf5-h6             Nf5-h6  * 0 Seconds
195) g2-g3              g2-g3   * 1 Second
196) .. Nc6-b4          Nc6-b4  * 9 Seconds
197) .. Qf2-f1          Qf2-f1  * 0 Seconds
198) .. Rd8-d3          Rd8-d3  * 0 Seconds
199) Bb5xc6, Rf1-d1     Rf1-d1  * 0 Seconds
200) Bb2xf6             Bb2xf6  * 7 Seconds
201) Ra1-a7             Ra1-a7  * 0 Seconds
202) .. Rc2xa2          Rc2xa2  * 0 Seconds
203) Qg5-h6             Qg5-h6  * 0 Seconds
204) Re1xe5             Re1xe5  * 0 Seconds
205) Qd2xg5             Qd2xg5  * 0 Seconds
206) .. Rd6-c6          Rd6-c6  * 0 Seconds
207) Qg4xg7             Qg4xg7  * 0 Seconds
208) Bh5-f7             Bh5-f7  * 0 Seconds
209) Re1xe5             Re1xe5  * 0 Seconds
210) Rd1-h1             Rd1-h1  * 1 Second
211) Qh5xf7             Qh5xf7  * 0 Seconds
212) Qh8xg7             Qh8xg7  * 0 Seconds
213) Rh5xh7             Rh5xh7  * 12 Seconds
214) Ne4-g5             Ne4-g5  * 0 Seconds
215) Qd3-h7             Qd3-h7  * 0 Seconds
216) Ne5xf7             Ne5xf7  * 0 Seconds
217) Qd4-d7             Qd4-d7  * 0 Seconds
218) Bg5-h6             Bg5-h6  * 0 Seconds
219) .. Qf7-f1          Qf7-f1  * 0 Seconds
220) .. Qe2xf1          Qe2xf1  * 0 Seconds
221) Rd1-d8             Rd1-d8  * 0 Seconds
222) Bh4-f6             Bh4-f6  * 7 Seconds
223) Nc3xe4             Nc3xe4  * 0 Seconds
224) .. Rd6-h6, e5-e4   e5-e4   * 0 Seconds
225) .. Qe7-h4          Qe7-h4  * 0 Seconds
226) Ne5-f7             Ne5-f7  * 3 Seconds
227) .. d6-d5           d6-d5   * 0 Seconds
228) Bd3xe4             Bd3xe4  * 0 Seconds
229) .. Rh5xh4, b5-b4   Rh5xh4  * 9 Seconds
230) .. Rb7-b4          Rb7-h7  
231) Bc1-g5             Bc1-g5  * 0 Seconds
232) Qa6-b5, Rb8xe8     Qa6-b5  * 0 Seconds
233) .. Nd4-b3          Nd4-b3  * 0 Seconds
234) Rh3-b3             Rh3-b3  * 0 Seconds
235) Qe6xf7, Re7xf7     Re7xf7  * 15 Seconds
236) .. Rc3-c1          Rc3-c1  * 0 Seconds
237) .. Rc2-c1          Rc2-c1  * 5 Seconds
238) Bg2xb7             Bg2xb7  * 0 Seconds
239) .. Qf2-f1          Qf2-f1  * 0 Seconds
240) Qc2xc6             Qc2xc6  * 0 Seconds
241) Qh3xh7             Qh3xh7  * 5 Seconds
242) Rd1xd7             Rd1xd7  * 1 Second
243) Qf2-e2             h2-h3  
244) Qe3xc5             Qe3xc5  * 0 Seconds
245) Qd3xg6             Qd3xg6  * 0 Seconds
246) Qg4-h5             Qg4-h5  * 0 Seconds
247) Rb1xb5             Rb1xb5  * 0 Seconds
248) .. Qd6-c5          Qd6-c5  * 0 Seconds
249) c4-c5, d4-d5       c4-c5   * 0 Seconds
250) Re3-e8             Re3-e8  * 0 Seconds
251) Qd4-e5, Qd4-f4     Qd4-e5  * 0 Seconds
252) .. Re8-e2          Re8-e2  * 3 Seconds
253) Qe3-e8             Qe3-e8  * 0 Seconds
254) .. Nf4xh3          Nf4xh3  * 0 Seconds
255) Rf6xg6             Rf6xg6  * 0 Seconds
256) Nd4-f5             Nd4-f5  * 26 Seconds
257) Rd1xd4             Rd1xd4  * 0 Seconds
258) Bh5xg6             Bh5xg6  * 0 Seconds
259) Qd1-h5             Qd1-h5  * 0 Seconds
260) Qd5-e6             Qd5-e6  * 0 Seconds
261) .. Nf3-d4          Nf3-d4  * 0 Seconds
262) .. Rg6-h6          Rg6-h6  * 0 Seconds
263) Qf7-g8             Qf7-g8  * 0 Seconds
264) .. Ra8-b8          Ra8-b8  * 6 Seconds
265) e5xf6              e5xf6   * 3 Seconds
266) .. Rh8xh2          Rh8xh2  * 0 Seconds
267) Nd5-c7             Nd5-c7  * 0 Seconds
268) Re2-e8             Re2-e8  * 0 Seconds
269) a3xb4              a3xb4   * 5 Seconds
270) Qd4-g4             Qd4-g4  * 3 Seconds
271) Re6-d6             Re6-d6  * 0 Seconds
272) Be3xc5             Be3xc5  * 0 Seconds
273) .. Ne4-g3          Ne4-g3  * 0 Seconds
274) Rg6-b6             Rg6-b6  * 0 Seconds
275) .. Nf4xg2, b7-b5   b7-b5   * 0 Seconds
276) Qd1-d5             Qd1-d5  * 0 Seconds
277) .. Rg8-g3, Rg8xg2  Rg8-g3  * 0 Seconds
278) Bc4-f7             Bc4-f7  * 0 Seconds
279) Ne3xf5             Ne3xf5  * 0 Seconds
280) .. Bf8xa3          Bf8xa3  * 1 Second
281) Rc7xh7             Rc7xh7  * 0 Seconds
282) Rh1-h8             Rh1-h8  * 0 Seconds
283) Nh3-g5             Nh3-g5  * 3 Seconds
284) Nd4-f5             Nd4-f5  * 0 Seconds
285) Qg2xg7             Qg2xg7  * 0 Seconds
286) .. Rd8xd5          Rd8xd5  * 0 Seconds
287) Qd1-h5             Qd1-h5  * 0 Seconds
288) Nh5-f6             Nh5-f6  * 0 Seconds
289) .. Qe6-e5          Qe6-e5  * 0 Seconds
290) .. Nf4-e2          Nf4-e2  * 0 Seconds
291) h2-h3              h2-h3   * 1 Second
292) d5-d6              d5-d6   * 0 Seconds
293) Nf3-g5             Rf1-c1  
294) Bd6-f8, Nd4-f5, Qg4-f4  Bd6-f8  * 0 Seconds
295) Rd1xd5             Rd1xd5  * 0 Seconds
296) .. Rd8-d4, Rd8-f8  Rd8-d4  * 0 Seconds
297) .. Bc6xg2, Bd6xh2  Bd6xh2  * 5 Seconds
298) Qd8-h8             Qd8-h8  * 0 Seconds
299) Nc5-a4             Nc5-a4  * 0 Seconds
300) g5-g6              g5-g6   * 0 Seconds

294 of 300 matching moves

17/05/2011 1:05:32, Total time: 2:34:35 Rated time: 06:41 = 401 Seconds

Friday, May 6, 2011

A new victim, Betsabell



 [Event "Arena tournament"]
[Site "ABEL-PC"]
[Date "2011.05.06"]
[Round "1"]
[White "ChessKISS"]
[Black "BetsabeII-10-32-ja"]
[Result "1-0"]
[BlackElo "2200"]
[ECO "E49"]
[Opening "Nimzo-Indian"]
[Time "21:32:48"]
[Variation "Botvinnik, 7...c5 8.cxd5 exd5"]
[WhiteElo "2200"]
[TimeControl "300"]
[Termination "normal"]
[PlyCount "139"]
[WhiteType "program"]
[BlackType "program"]

1. d4 d5 {(d7-d5 c2-c4) -0.11/11 7} 2. c4 e6 {(e7-e6) -0.16/11 7} 3. Nc3
Bb4 {(f8-b4 e2-e3 g8-f6 g1-f3 c7-c5 c4-d5 f6-d5 c1-d2 e8-g8 f1-b5 b8-a6
b5-a6) +0.01/11 6} 4. cxd5 {(c4xd5 e6xd5 a3 Bb4xc3 b2xc3 Ng8f6 Bc1g5 Nb8c6
Ng1f3 O-O Qd1b1 Bc8g4) +0.47/11 9} exd5 {(e6-d5 e2-e3 g8-f6 f1-d3 b4-c3
b2-c3 b8-c6 c1-a3 f6-e4 d1-c2 c8-f5 g1-f3) +0.07/10 4} 5. Nf3 {(Ng1f3 Ng8f6
Bc1g5 O-O Qd1b3 Nb8c6 a3 Bb4xc3 b2xc3 Rf8e8 e3 Bc8g4) +0.02/11 8} Nf6
{(g8-f6 e2-e3 e8-g8 f1-d3 b4-c3 b2-c3 d8-d6 e1-g1 b8-c6 a1-b1 f8-e8 c1-d2)
-0.03/10 6} 6. Bg5 {(Bc1g5 O-O Qd1b3 Nb8c6 a3 Bb4xc3 b2xc3 Rf8e8 O-O-O
Ra8b8 Kc1b1 Bc8f5) -0.08/11 9} O-O {(e8-g8 e2-e3 b8-c6 f1-d3 c8-g4 a1-c1
b4-c3 c1-c3) -0.10/10 6} 7. Qb3 {(Qd1b3 Nb8c6 a3 Bb4xc3 b2xc3 Qd8d6 Bg5xf6
g7xf6 h3 Bc8f5 Qb3xb7 Ra8e8) -0.25/11 8} Bxc3+ {(b4-c3 b3-c3 b8-c6 e2-e3
d8-d6 g5-f6 d6-f6 f1-b5 c8-g4 b5-c6 g4-f3 g2-f3) +0.01/10 4} 8. bxc3
{(b2xc3 Nb8d7 e3 h6 Bg5h4 g5 Nf3xg5 h6xg5 Bh4xg5 Nd7b6 Bf1d3) +0.02/11 8}
Nbd7 {(b8-d7) -0.13/11 4} 9. e3 {(e3 h6 Bg5f4 Nd7b6 Bf1d3 Bc8g4 O-O Nf6e4
Kg1h1 Bg4xf3 g2xf3) +0.03/11 7} Re8 {(f8-e8 f1-d3 c7-c5 g5-f6 d7-f6 d4-c5
d8-c7 e1-g1 c7-c5 f3-d4 f6-e4) -0.21/10 4} 10. Bd3 {(Bf1d3 h6 Bg5xf6 Nd7xf6
O-O Kg8h8 Nf3e5 Qd8e7 Ra1b1 c5) +0.92/10 7} c5 {(c7-c5 g5-f6 d7-f6 d4-c5
d8-e7 e1-g1 e7-c5 f3-d4 c8-d7 b3-b7 c5-c3) -0.28/10 8} 11. Bb5 {(Bd3b5
c5xd4 Nf3xd4 h6 Bg5xf6 Qd8xf6 O-O a6 Bb5d3) +0.82/9 7} c4 {(c5-c4 b3-c2
d8-a5 b5-d7 f6-d7 e1-g1 d7-f8 a1-b1 f8-g6 b1-b4 f7-f6 g5-h4) -0.28/11 5}
12. Qb1 {(Qb3b1 h6 Bg5xf6 Qd8xf6 O-O Re8f8 Kg1h1 Qf6b6 e4 Nd7f6) +0.81/10
7} Qa5 {(d8-a5 e1-g1 f6-e4 b5-d7 c8-d7 b1-b7 d7-f5 b7-b4 a5-b4 c3-b4 f5-g4
g5-f4) +0.64/12 4} 13. O-O {(O-O Nf6e4 Bb5xd7 Bc8xd7 Qb1xb7 Bd7e6 Bg5e7
Ne4xc3 Nf3e5 Kg8h8) +0.39/10 7} Ne4 {(f6-e4 b5-d7 c8-d7 b1-b7 d7-f5 f1-b1
e4-g5 f3-g5 f5-b1 b7-f7 g8-h8 a1-b1) +0.68/12 7} 14. Bxd7 {(Bb5xd7 Bc8xd7
Qb1xb7 Bd7e6 Bg5f4 Kg8h8 Rf1c1 Ne4xc3 Bf4c7 Qa5a3) -0.22/10 6} Bxd7 {(c8-d7
b1-b7 d7-f5 f1-b1 e4-c3 b1-b2 a8-c8 g5-f4 f5-g4 f4-d6 g4-f3 g2-f3) +0.79/13
7} 15. Qxb7 {(Qb1xb7 Bd7e6 Rf1b1 f6 Bg5f4 Qa5xc3 Rb1c1 Qc3a5 Bf4c7 Qa5a3
Bc7f4 Kg8h8) -0.26/11 6} Bf5 {(d7-f5) +0.79/11 4} 16. Bf4 {(Bg5f4 Ne4xc3
Nf3e5 Nc3e2 Kg1h1 Bf5e6 Bf4g5 Ra8b8 Qb7c6 Kg8h8 f3) -0.23/10 7} Nxc3
{(e4-c3) +0.94/11 7} 17. Ne5 {(Nf3e5 Nc3e2 Kg1h1 Bf5e6 Bf4g5 Qa5b6 Ra1b1
Qb6xb7 Rb1xb7 f6 Rf1e1) -0.60/10 7} Bg6 {(f5-g6 b7-b2 g6-d3 f1-e1) +0.81/10
6} 18. Nxg6 {(Ne5xg6 h7xg6 Kg1h1 Qa5b5 Qb7c7 Ra8c8 Qc7xa7 Rc8a8 Qa7c7
Ra8xa2) +0.20/10 5} hxg6 {(h7-g6 b7-b2 e8-e6 a1-c1 c3-e4 f2-f3 e4-f6 b2-c2
a8-e8 c1-b1 c4-c3 b1-b7) +0.86/12 6} 19. Qb2 {(Qb7b2 Kg8h8 Kg1h1 Re8e6
Bf4e5 f6 Qb2b7 Ra8e8 Ra1c1) +0.07/10 5} Re6 {(e8-e6 a1-c1 c3-b5) +0.75/11
4} 20. Rfc1 {(Rf1c1 Nc3e4 f3 Ne4d6 Ra1b1 Nd6f5 Qb2f2 Re6b6 Bf4e5 Kg8h7
Qf2e2) +0.27/11 5} Ne4 {(c3-e4 f2-f3 e4-f6 a1-b1 a8-c8 b2-c2 e6-a6)
+0.45/12 6} 21. f3 {(f3 Ne4d6 Qb2f2 Ra8e8 Rc1f1 Nd6f5 e4 d5xe4 Bf4e5 Kg8h7
f3xe4) +0.25/11 5} Nf6 {(e4-f6 a1-b1 a8-c8 b2-c3 a5-c3 c1-c3 c8-e8 f4-e5
f6-d7 e3-e4 d7-e5 d4-e5) +0.44/11 3} 22. Be5 {(Bf4e5 Ra8e8 Rc1c3 Nf6d7
Be5f4 Re6b6 Qb2d2 Qa5a4 Ra1c1 Nd7f6) +0.37/10 5} Rae8 {(a8-e8 b2-c3 a5-c3
c1-c3 f6-d7 e5-f4 d7-b6 a1-c1) +0.71/11 4} 23. Qc3 {(Qb2c3 Qa5xc3 Rc1xc3
Nf6d7 Be5f4 Nd7f6 Ra1f1 Re6b6 e4 a5) +0.11/10 4} Qxc3 {(a5-c3) +0.66/12 3}
24. Rxc3 {(Rc1xc3 Nf6d7 e4 d5xe4 f4 Re6c6 Ra1e1 f6 d5 Rc6c5 Be5d4 Rc5xd5
Bd4xa7) -0.58/13 5} Nd7 {(f6-d7 e5-f4 d7-b6) +0.34/12 3} 25. e4 {(e4 d5xe4
Be5f4 Nd7b6 Bf4e5 Re8d8 f3xe4 f6 Be5c7 Rd8xd4 Bc7xb6 a7xb6 Ra1e1) -0.66/13
4} dxe4 {(d5-e4 e5-c7 e4-f3 c3-f3 e8-c8 c7-g3 c4-c3 d4-d5 e6-e2 a1-f1 c3-c2
g3-f4) +1.31/11 3} 26. f4 {(f4 Nd7b6 Ra1c1 f6 Be5c7 Re8e7 Bc7xb6 Re6xb6
Rc1e1 Rb6b4) -0.54/10 4} Nb6 {(d7-b6) +1.62/12 5} 27. Rc2 {(Rc3c2 f6 Be5c7
Nb6d5 Rc2xc4 e3 Rc4c5 Nd5xc7 Rc5xc7 Re8d8) -1.45/10 4} f6 {(f7-f6 a1-e1
e6-c6 e1-e4 c4-c3 e4-e1 b6-d5 e1-b1 f6-e5 f4-e5 c6-c4 b1-d1) +2.16/12 4}
28. Bc7 {(Be5c7 Re8c8 Bc7xb6 a7xb6 Ra1e1 f5 Re1c1 b5 a4 b5xa4 Rc2xc4
Rc8xc4) -1.62/12 4} e3 {(e4-e3) +2.26/12 4} 29. Bxb6 {(Bc7xb6 a7xb6 Rc2xc4
Re6e4 g3 Re8a8 Ra1e1 Ra8xa2 h4 e2 Rc4c8 Kg8h7 d5) -0.82/12 4} axb6 {(a7-b6
c2-c4 e6-e4 a1-f1 g8-h8 c4-b4 h8-h7 a2-a4 e3-e2 f1-e1 e4-e3 b4-b6) +2.21/12
4} 30. Rxc4 {(Rc2xc4 Re6e4 g3 Re8a8 Rc4b4 e2 Rb4b1 Re4xd4 Kg1f2 Rd4d1
Rb1xd1 e2xd1) -1.16/11 4} Re4 {(e6-e4 g2-g3 g8-h7 c4-b4 h7-h6 a1-e1 g6-g5)
+2.16/11 4} 31. g3 {(g3 Re8a8 Rc4b4 e2 Ra1e1 Ra8xa2 Kg1f2 Ra2c2 Rb4xb6
Kg8h7 Rb6b3 Kh7h6) -0.41/11 3} b5 {(b6-b5 c4-b4 g8-f7) +1.69/11 4} 32. Rb4
{(Rc4b4 e2 Ra1e1 g5 f4xg5 f6xg5 Rb4b2 Re4xd4 Re1xe2 Re8xe2 Rb2xe2 g6 Re2e8)
-0.15/12 3} Kf7 {(g8-f7 a1-e1 f6-f5 g1-f1 f7-e6 b4-b5 e6-f6) +1.78/10 2}
33. Re1 {(Ra1e1 Re8d8 Rb4xb5 Rd8xd4 Kg1g2 g5 f4xg5 Rd4d8 Kg2f3 Rd8e8 Kf3g2)
+0.21/11 3} g5 {(g6-g5 f4-g5 f6-g5 h2-h3 g5-g4 h3-g4 e4-g4 a2-a4 b5-a4
e1-f1 f7-g6 b4-a4) +1.23/11 4} 34. fxg5 {(f4xg5 Re4g4 Kg1g2 e2 g5xf6 g7xf6
a4 b5xa4 h3 Rg4g5 Rb4xa4) +0.57/10 3} fxg5 {(f6-g5 g1-f1 f7-f6) +0.88/11 4}
35. Re2 {(Re1e2 g6 h3 g4 h4 Re8d8 Rb4xb5 Re4xd4 Re2xe3 Rd4d1 Kg1g2)
+0.59/10 3} Kg6 {(f7-g6 b4-b3 g5-g4 b3-d3 g6-f6 g1-h1 g7-g5 h1-g2 f6-f5
e2-c2) +1.46/10 2} 36. a3 {(a3 Kg6h5 h3 g6 Kg1g2 Re8d8 Rb4xb5 Rd8xd4 Kg2f3
Rd4a4 g4 Kh5h4) +0.83/11 3} Kf6 {(g6-f6 g1-f1 e8-e6 b4-b3 g5-g4 b3-d3 f6-g6
e2-b2 e6-f6 f1-e1 f6-f5) +1.38/10 2} 37. h3 {(h3 g6 Kg1g2 Re8d8 Rb4xb5
Rd8xd4 Kg2f3 Rd4a4 Rb5b3 Kf6g7 Re2xe3) +0.92/11 3} R8e6 {(e8-e6) +1.14/10
3} 38. Kg2 {(Kg1g2 g4 h3xg4 Re4xg4 Kg2f3 Rg4g5 g4 g6 Re2xe3 Rg5d5 Re3xe6
Kf6xe6 Kf3f4) +1.10/12 3} g4 {(g5-g4 h3-g4 e6-d6 b4-b5 d6-d4 b5-b3 f6-g5
b3-e3 e4-e3 e2-e3 d4-d2 g2-f3) -0.88/12 3} 39. hxg4 {(h3xg4 Re4xg4 Kg2f3
Rg4e4 Rb4xb5 Re4xd4 Re2xe3 g6 Rb5c5 Re6xe3 Kf3xe3 Rd4d7 a4) +1.21/12 3}
Rxg4 {(e4-g4 g2-f3 g4-g5 g3-g4 f6-f7 e2-e3 e6-e3 f3-e3 g5-g4 b4-b5 g4-g3
e3-e4) -1.04/12 3} 40. Rxb5 {(Rb4xb5 Rg4xd4 Rb5b3 Rd4d2 Kg2f3 g5 Re2xe3
Re6xe3 Rb3xe3 Rd2d4 Kf3g2 g4 Kg2f1) +1.10/12 3} Rxd4 {(g4-d4) -0.34/12 3}
41. Rb3 {(Rb5b3 Rd4d2 Kg2f3 g5 Re2xe3 Rd2d4 Re3xe6 Kf6xe6 Rb3e3 Ke6d7 Kf3g2
Rd4d2 Kg2g1) +1.23/12 2} Rd5 {(d4-d5) -0.34/11 1} 42. Rbxe3 {(Rb3xe3 Re6xe3
Re2xe3 Rd5d4 Kg2f3 g5 Re3e4 Rd4d3 Re4e3 Rd3d4 Kf3g2 Kf6g7 Re3e7) +1.25/12
2} Rxe3 {(e6-e3) -0.54/12 3} 43. Rxe3 {(Re2xe3 Rd5d4 Kg2h3 g5 Re3e2 Rd4d1
Re2e3) +1.25/12 2} Rd2+ {(d5-d2) -0.54/12 3} 44. Kf3 {(Kg2f3 Rd2d4 Re3e4
Rd4d3 Re4e3 Rd3d4 Re3e4 Rd4d3 Re4e3 Rd3d4 Re3e4 Rd4d3 Re4e3 Rd3d4 Re3e4)
+1.29/14 2} Rc2 {(d2-c2) -0.60/11 1} 45. a4 {(a4 Rc2c5 Re3e4 g6 Kf3g2 g5
Re4e3 Rc5c2 Kg2f3 Rc2c5 Kf3g2 Rc5c2 Kg2f3) +1.38/12 2} Ra2 {(c2-a2 e3-e4
a2-a1 e4-b4 f6-e5 b4-b5 e5-e6 b5-b6 e6-f7 b6-b7 f7-g6 f3-e4) -0.29/12 3}
46. Re4 {(Re3e4 Ra2a3 Kf3g4 Ra3d3 Re4f4 Kf6g6 Kg4h3 Rd3d5 g4 Kg6h7 Rf4f5
Rd5d3 Kh3g2) +1.59/12 2} Ra3+ {(a2-a3 f3-f4 a3-b3 e4-c4 b3-a3 a4-a5 a3-a5
c4-c6 f6-e7 c6-c7 e7-f6 f4-e4) -0.23/11 1} 47. Kg4 {(Kf3g4 Ra3d3 Re4f4
Kf6g6 Kg4h3 Rd3d5 g4 Kg6h7 Rf4f5 Rd5d3 Kh3g2 g6) +1.59/11 2} Kf7 {(f6-f7
g4-f4 f7-f6 e4-b4) -0.21/12 2} 48. Rd4 {(Re4d4 Kf7e6 Kg4f4 g5 Kf4g4 Ke6e5
Rd4b4 Ke5d5 Kg4h3 Kd5c5 Rb4b5 Kc5c4) +1.64/11 2} Ke7 {(f7-e7 g4-f4 e7-e8)
-0.56/12 2} 49. Kf4 {(Kg4f4 g6 Kf4g4 Ke7e6 Kg4h3 Ke6e5 a5 Ke5xd4 Kh3g2)
+1.58/12 2} Ke6 {(e7-e6 g3-g4 a3-a1) -0.96/11 2} 50. g4 {(g4 Ke6f6 Rd4d6
Kf6f7 Rd6d7 Kf7e6 Rd7d4 Ke6f6 Rd4d6 Kf6f7 Rd6d7 Kf7e6 Rd7d4) +1.72/12 2}
Ra2 {(a3-a2 d4-e4 e6-f6 e4-b4) -0.96/11 2} 51. Kg5 {(Kf4g5 Ke6f7 Rd4f4
Kf7g8 Kg5g6 Ra2c2 g5 Rc2c6 Kg6h5 Kg8h7 Kh5g4 g6 Rf4f7) +1.80/12 2} Ke5
{(e6-e5 d4-d7 a2-a4 d7-g7 a4-a5 g7-h7 a5-a1) -1.56/12 2} 52. Rb4 {(Rd4b4
Ra2c2 a5 Rc2a2 Rb4b5 Ke5d4 Kg5g6 Kd4c4 Rb5f5 Kc4b4 Kg6xg7 Ra2xa5 Rf5xa5
Kb4xa5) +2.10/13 1} Kd6 {(e5-d6 g5-g6 d6-c5 b4-f4 a2-a3 g4-g5 a3-g3 a4-a5
c5-b5 f4-f5 b5-c4 f5-f7) -1.92/12 2} 53. Kg6 {(Kg5g6 Kd6c5 Rb4f4 Kc5b6
Kg6xg7 Kb6a5 Kg7f7 Ra2xa4 Rf4xa4 Ka5xa4 Kf7e6 Ka4b4 Ke6d5 Kb4c3 g5)
+2.60/14 1} Ra3 {(a2-a3 g4-g5 a3-g3 a4-a5 d6-c6 a5-a6) -1.94/11 1} 54. Kxg7
{(Kg6xg7 Kd6c5 Rb4e4 Kc5b6 g5 Kb6a5 Kg7f6 Ra3xa4 Re4xa4 Ka5xa4 g6 Ka4a5 g7
Ka5b6) +3.14/13 1} Rc3 {(a3-c3) -3.10/11 1} 55. g5 {(g5 Rc3c6 Kg7h7 Rc6c7
Kh7h6 Rc7c5 g6 Kd6e5 g7 Rc5c8 Rb4b5) +3.79/10 1} Ke5 {(d6-e5 g7-g6 c3-c6
g6-h5 c6-c1 b4-b5 e5-e4 a4-a5 e4-d4) -3.20/11 2} 56. g6 {(g6 Ke5f5 Rb4b5
Kf5e6 Kg7h7 Rc3c4 a5 Rc4h4 Kh7g8 Rh4g4 g7 Ke6f6 Rb5b6) +5.58/12 1} Ra3
{(c3-a3 b4-b5) -3.70/10 2} 57. Kg8 {(Kg7g8 Ra3g3 g7 Ke5e6 Rb4e4 Ke6f6 Re4f4
Kf6e6 Rf4e4 Ke6f6 Re4f4 Kf6e6) +5.71/11 1} Rf3 {(a3-f3 b4-b5 e5-d4 b5-h5
f3-g3) -3.80/9 1} 58. g7 {(g7 Ke5f6 Rb4b6 Kf6e7 a5 Rf3d3 Rb6b8 Rd3g3 Kg8h7
Rg3h3 Kh7g6) +6.03/10 1} Rf1 {(f3-f1) -4.23/10 1} 59. Rh4 {(Rb4h4 Ke5f6
Kg8h7 Rf1g1 g8=Q Rg1xg8 Kh7xg8 Kf6f5 Kg8h7 Kf5e5 Kh7g6 Ke5d5 Rh4h5 Kd5d4)
+7.40/13 1} Kd6 {(e5-d6) -10.23/13 1} 60. Kh7 {(Kg8h7 Rf1f7 Kh7g6 Rf7xg7
Kg6xg7 Kd6c5 Kg7f6 Kc5d5 Rh4d4 Kd5xd4 Kf6e6 Kd4c5 Ke6e5 Kc5c6) +7.70/13 1}
Rg1 {(f1-g1 g7-g8 g1-g8 h7-g8 d6-c5 h4-h5 c5-b6 a4-a5 b6-c6 h5-f5 c6-c7
f5-f6) -10.56/12 1} 61. g8=Q {(g8=Q Rg1xg8 Kh7xg8 Kd6c5 Rh4h5 Kc5d6 Kg8f7
Kd6c6 Kf7e7 Kc6b7 Ke7d6 Kb7b6 a5) +7.80/12 1} Rxg8 {(g1-g8 h7-g8 d6-c5
h4-h5 c5-b6 a4-a5 b6-a6 h5-g5 a6-a7 g5-g7 a7-a6 g8-f7) -9.42/11 1} 62. Kxg8
{(Kh7xg8 Kd6c5 Rh4h5 Kc5b6 Rh5b5 Kb6a7 Rb5b7 Ka7xb7 a5 Kb7c6 a6 Kc6b6 a7
Kb6xa7) +8.00/13 1} Kc5 {(d6-c5 h4-h5 c5-b6 a4-a5 b6-a6 h5-e5) -10.58/11 1}
63. Rh5+ {(Rh4h5 Kc5c6 Rh5b5 Kc6c7 a5 Kc7c6 Rb5b6 Kc6d5 Rb6b8 Kd5c4 a6
Kc4d4 a7 Kd4e3) +15.45/13 1} Kb6 {(c5-b6) -10.58/11 1} 64. Rb5+ {(Rh5b5
Kb6c6 Kg8f7 Kc6c7 a5 Kc7c6 Rb5b6 Kc6c5 Rb6g6 Kc5d4 a6 Kd4e4 a7 Ke4e3)
+15.65/13 1} Ka6 {(b6-a6) -10.58/11 1} 65. Kf7 {(Kg8f7 Ka6a7 Kf7f6 Ka7a6
Kf6e7 Ka6a7 Ke7d6 Ka7a6 Kd6c7 Ka6a7 Rb5a5) +M6/17 1} Ka7 66. Kf6 {(Kf7f6
Ka7a6 Kf6e5 Ka6a7 Ke5d6 Ka7a6 Kd6c7 Ka6a7 Rb5a5) +M5/24 1} Ka6 {(a7-a6
f6-e6 a6-a7 e6-d6 a7-a8 d6-c7 a8-a7 b5-a5) -M4/11 1} 67. Ke5 {(Kf6e5 Ka6a7
Ke5d6 Ka7a6 Kd6c7 Ka6a7 Rb5a5) +M4/55 1} Ka7 68. Kd6 {(Ke5d6 Ka7a6 Kd6c7
Ka6a7 Rb5a5) +M3/63 0} Ka6 {(a7-a6) -M2/64 0} 69. Kc7 {(Kd6c7 Ka6a7 Rb5a5)
+M2/63 0} Ka7 70. Ra5# {(Rb5a5) +M1/63 0} 1-0