When I search the Rybka 1.0 executable for the above patterns they are NOT FOUND.
This is correct they are only used in building the PST table, and while the Fruit code to do this is in Fruit, it does not appear in Rybka. The only thing in the Rybka 1.0 executable is the
final PST tables, which, as I say, is derived from the Fruit mechanism, in a way that somewhat exceeds the standard of merely ideas.
To wit, here's the place where the PST table starts in the executable:
Code: Select all
00249330 E1 FD 23 01 4B FF 61 00 00 00 00 00 B5 00 9F FF ..#.K.a.........
00249340 B5 00 9F FF 00 00 00 00 4B FF 61 00 E1 FD 23 01 ........K.a...#.
00249350 E1 FD 23 01 4B FF 61 00 00 00 00 00 B5 00 9F FF ..#.K.a.........
00249360 B5 00 9F FF 00 00 00 00 4B FF 61 00 E1 FD 23 01 ........K.a...#.
00249370 E1 FD 23 01 4B FF 61 00 00 00 00 00 B5 00 9F FF ..#.K.a.........
00249380 B5 00 9F FF 00 00 00 00 4B FF 61 00 E1 FD 23 01 ........K.a...#.
00249390 E1 FD 23 01 4B FF 61 00 00 00 00 00 B5 00 9F FF ..#.K.a.........
002493A0 B5 00 9F FF 00 00 00 00 4B FF 61 00 E1 FD 23 01 ........K.a...#.
002493B0 E1 FD 23 01 4B FF 61 00 00 00 00 00 FF 00 9F FF ..#.K.a.........
002493C0 FF 00 9F FF 00 00 00 00 4B FF 61 00 E1 FD 23 01 ........K.a...#.
002493D0 E1 FD 23 01 4B FF 61 00 00 00 00 00 B5 00 9F FF ..#.K.a.........
002493E0 B5 00 9F FF 00 00 00 00 4B FF 61 00 E1 FD 23 01 ........K.a...#.
002493F0 E1 FD 23 01 4B FF 61 00 00 00 00 00 B5 00 9F FF ..#.K.a.........
00249400 B5 00 9F FF 00 00 00 00 4B FF 61 00 E1 FD 23 01 ........K.a...#.
00249410 E1 FD 23 01 4B FF 61 00 00 00 00 00 B5 00 9F FF ..#.K.a.........
00249420 B5 00 9F FF 00 00 00 00 4B FF 61 00 E1 FD 23 01 ........K.a...#.
00249430 1F 02 DD FE B5 00 9F FF 00 00 00 00 4B FF 61 00 ............K.a.
00249440 4B FF 61 00 00 00 00 00 B5 00 9F FF 1F 02 DD FE K.a.............
00249450 1F 02 DD FE B5 00 9F FF 00 00 00 00 4B FF 61 00 ............K.a.
00249460 4B FF 61 00 00 00 00 00 B5 00 9F FF 1F 02 DD FE K.a.............
00249470 1F 02 DD FE B5 00 9F FF 00 00 00 00 4B FF 61 00 ............K.a.
00249480 4B FF 61 00 00 00 00 00 B5 00 9F FF 1F 02 DD FE K.a.............
00249490 1F 02 DD FE B5 00 9F FF 00 00 00 00 01 FF 61 00 ..............a.
002494A0 01 FF 61 00 00 00 00 00 B5 00 9F FF 1F 02 DD FE ..a.............
002494B0 1F 02 DD FE B5 00 9F FF 00 00 00 00 4B FF 61 00 ............K.a.
002494C0 4B FF 61 00 00 00 00 00 B5 00 9F FF 1F 02 DD FE K.a.............
002494D0 1F 02 DD FE B5 00 9F FF 00 00 00 00 4B FF 61 00 ............K.a.
002494E0 4B FF 61 00 00 00 00 00 B5 00 9F FF 1F 02 DD FE K.a.............
002494F0 1F 02 DD FE B5 00 9F FF 00 00 00 00 4B FF 61 00 ............K.a.
Or in gdb:
Code: Select all
0x649330: -543 291 -181 97 0 0 181 -97
0x649340: 181 -97 0 0 -181 97 -543 291
0x649350: -543 291 -181 97 0 0 181 -97
0x649360: 181 -97 0 0 -181 97 -543 291
0x649370: -543 291 -181 97 0 0 181 -97
0x649380: 181 -97 0 0 -181 97 -543 291
0x649390: -543 291 -181 97 0 0 181 -97
0x6493a0: 181 -97 0 0 -181 97 -543 291
0x6493b0: -543 291 -181 97 0 0 255 -97
0x6493c0: 255 -97 0 0 -181 97 -543 291
0x6493d0: -543 291 -181 97 0 0 181 -97
0x6493e0: 181 -97 0 0 -181 97 -543 291
0x6493f0: -543 291 -181 97 0 0 181 -97
0x649400: 181 -97 0 0 -181 97 -543 291
0x649410: -543 291 -181 97 0 0 181 -97
0x649420: 181 -97 0 0 -181 97 -543 291
So what do these mean? They are the white pawn values, the opening value, then the ending value.
Perhaps I can explain better with a different diagram. Let's switch to knights, as central pawns have a few variations.
Code: Select all
(gdb) x/128hd 0x649530
0x649530: -3492 -448 -2798 -336 -2104 -224 -1757 -168
0x649540: -1757 -168 -2104 -224 -2798 -336 -3492 -448
0x649550: -2440 -336 -1746 -224 -1052 -112 -705 -56
0x649560: -705 -56 -1052 -112 -1746 -224 -2440 -336
0x649570: -1388 -224 -694 -112 0 0 347 56
0x649580: 347 56 0 0 -694 -112 -1388 -224
0x649590: -683 -168 11 -56 705 56 1052 112
0x6495a0: 1052 112 705 56 11 -56 -683 -168
0x6495b0: -325 -168 369 -56 1063 56 1410 112
0x6495c0: 1410 112 1063 56 369 -56 -325 -168
0x6495d0: -314 -224 380 -112 1074 0 1421 56
0x6495e0: 1421 56 1074 0 380 -112 -314 -224
0x6495f0: -1366 -336 -672 -224 22 -112 369 -56
0x649600: 369 -56 22 -112 -672 -224 -1366 -336
0x649610: -5618 -448 -1724 -336 -1030 -224 -683 -168
0x649620: -683 -168 -1030 -224 -1724 -336 -5618 -448
Here is a different picture of the same PST values for the openings, and I inverted it so that rank 8 is at the top:
Code: Select all
-5618 -1724 -1030 -683 -683 -1030 -1724 -5618
-1366 -672 22 369 369 22 -672 -1366
-314 380 1074 1421 1421 1074 380 -314
-325 369 1063 1410 1410 1063 369 -325
-683 11 705 1052 1052 705 11 -683
-1388 -694 0 347 347 0 -694 -1388
-2440 -1746 -1052 -705 -705 -1052 -1746 -2440
-3492 -2798 -2104 -1757 -1757 -2104 -2798 -3492
The interest for comparison with Rybka is when we make a formulaic representation (I omit the left/right symmetry):
Code: Select all
-4x-4x+y-C -4x-2x+y -4x+0+y -4x+x+y ...
-2x-4x+2y -2x-2x+2y -2x+0+3y -2x+x+3y
0-4x+3y 0-2x+3y 0+0+3y 0+x+3y
x-4x+2y x-2x+2y x+0+2y x+x+2y
x-4x+y x-2x+y x+0+y x+x+y
0-4x+0 0-2x+0 0+0+0 0+x+0
-2x-4x-y -2x-2x-y -2x+0-y -2x+x-y
-4x-4x-2y -4x-2x-2y -4x+0-2y -4x+x-2y
Plug in x=5, y=5, C=100 for Fruit, and x=347, y=358, C=3200 for Rybka (with
b8: -4x-2x+y = -1724 gives the above value).
The main evidence here is that all the numbers in the above array are
exactly the same -- if you merely described the idea of File/Rank/Line centralisation for PST, there is no reason to choose the exact values
Code: Select all
static const int KnightLine[8] = { -4, -2, +0, +1, +1, +0, -2, -4 };
static const int KnightRank[8] = { -2, -1, +0, +1, +2, +3, +2, +1 };
as the specific values. This match of the underlying File/Line/Rank array occurs for every piece. As I say, this is not "code"
per se, but it seems to pass beyond what would typically be considered "completely original" for the purposes of entries in chess competitions.
I realise that the forum software is not the best way to present this, so maybe I should make a brief PDF.