Here's the problem, some games on Playchess end with the wrong result, sometimes a player gets a winning position but loses due to disconnecting or perhaps their computer blew up as a result of too much overclocking. How to identify these games? If at least one of the players is sending evals then it's kind of possible to look at the evals near the end of the game and make a comparison with the final result .. eg. an eval of "-10" and a result of 1-0 is suspicious. But doing such a scan is time consuming in the extreme.
The latest (April) set of Playchess games on the Spagehtti site are here:
http://s5.histats.com/stats/r.php?22546&100&14&urlr=&www.spaghettichess.com/downcoll/04-08.rar
and this archive contains many such incorrect results, hundreds of them. Does anyone have a utlity to process a collection of games (containing evals), and dump the ones ending with an incorrect result in a separate file? Maybe it wouldn't be able to catch them all, but work for >90% perhaps?
I find CB software to be as unintuitive as any I have met, and would never have thought of this on my own, but a very kind well known book maker pointed it out to me.
> The way I do it is manually
Majd there are 77,870 games in the 04-2008 Spaghetti set alone! I *know* you've got a lot better things to do with your time :)
[Event "Partita con Elo, 3m + 0s"]
[Site "Gioco con programmi"]
[Date "2008.04.01"]
[Round "?"]
[White "Spaghetti Chess, Rybka 2.3.2a mp"]
[Black "Silent mode, Rybka 2.3.2a mp"]
[Result "0-1"]
[ECO "B90"]
[WhiteElo "2766"]
[BlackElo "2761"]
[Annotator "0.17;0.15"]
[PlyCount "134"]
[EventDate "2008.04.05"]
[TimeControl "180"]
{Rybka 2.3.2a mp: 18.5 ply; 493kN/s Intel(R) Core(TM)2 Quad CPU @ 2.
40GHz, (4 threads), clone.ctg, 128 MB} 1. e4 {[%eval 0,0] [%emt 0:00:00]} c5 {
[%eval 0,0] [%emt 0:00:00]} 2. Nf3 {[%eval 0,0] [%emt 0:00:00]} d6 {
[%eval 0,0] [%emt 0:00:00]} 3. d4 {[%eval 0,0] [%emt 0:00:00]} cxd4 {
[%eval 0,0] [%emt 0:00:00]} 4. Nxd4 {[%eval 0,0] [%emt 0:00:00]} Nf6 {
[%eval 0,0] [%emt 0:00:00]} 5. Nc3 {[%eval 0,0] [%emt 0:00:00]} a6 {
[%eval 0,0] [%emt 0:00:00]} 6. Be3 {[%eval 0,0] [%emt 0:00:00]} e5 {
[%eval 0,0] [%emt 0:00:00]} 7. Nb3 {[%eval 0,0] [%emt 0:00:00]} Be6 {
[%eval 0,0] [%emt 0:00:00]} 8. f3 {[%eval 0,0] [%emt 0:00:00]} Be7 {
[%eval 0,0] [%emt 0:00:00]} 9. Qd2 {[%eval 0,0] [%emt 0:00:00]} O-O {
[%eval 0,0] [%emt 0:00:00]} 10. O-O-O {[%eval 0,0] [%emt 0:00:00]} Nbd7 {
[%eval 0,0] [%emt 0:00:00]} 11. g4 {[%eval 0,0] [%emt 0:00:00]} b5 {
[%eval 0,0] [%emt 0:00:00]} 12. g5 {[%eval 0,0] [%emt 0:00:00]} Nh5 {
[%eval 0,0] [%emt 0:00:00]} 13. Kb1 {[%eval 0,0] [%emt 0:00:00]} Nb6 {
[%eval 0,0] [%emt 0:00:00]} 14. Nd5 {[%eval 0,0] [%emt 0:00:00]} Nxd5 {
[%eval 0,0] [%emt 0:00:00]} 15. exd5 {[%eval 0,0] [%emt 0:00:00]} Bf5 {
[%eval 0,0] [%emt 0:00:00]} 16. Na5 {[%eval 0,0] [%emt 0:00:00]} f6 {
[%eval 0,0] [%emt 0:00:00]} 17. Nc6 {[%eval 0,0] [%emt 0:00:00]} Qd7 {
[%eval 0,0] [%emt 0:00:00]} 18. h4 {[%eval 0,0] [%emt 0:00:00]} Ng3 {
[%eval 0,0] [%emt 0:00:00]} 19. Rg1 {[%eval 0,0] [%emt 0:00:00]} Nxf1 {
[%eval 0,0] [%emt 0:00:00]} 20. Rdxf1 {[%eval 0,0] [%emt 0:00:00]} fxg5 {
[%eval 0,0] [%emt 0:00:00]} 21. hxg5 {[%eval 0,0] [%emt 0:00:00]} Bg6 {
[%eval 0,0] [%emt 0:00:00]} 22. Rf2 {[%eval 17,13] [%emt 0:00:08]} Bd8 {
[%eval 15,12] [%emt 0:00:05]} 23. Qb4 {[%eval 13,14] [%emt 0:00:03]} Bf7 {
(Ac7) [%eval 11,13] [%emt 0:00:09]} 24. Qe4 {[%eval 6,15] [%emt 0:00:09]} Bg6 {
[%eval 0,19] [%emt 0:00:03]} 25. Qb4 {[%eval 0,16] [%emt 0:00:05]} Bf7 {
(Axc2+) [%eval 0,19] [%emt 0:00:01]} 26. Rd1 {[%eval 0,15] [%emt 0:00:07]} Bc7
{[%eval 3,15] [%emt 0:00:05]} 27. Qg4 {[%eval 0,16] [%emt 0:00:04]} Qxg4 {
[%eval -5,18] [%emt 0:00:01]} 28. fxg4 {[%eval 0,17] [%emt 0:00:00]} g6 {
(Tfe8) [%eval 0,18] [%emt 0:00:05]} 29. c4 {[%eval 4,17] [%emt 0:00:05]} bxc4 {
[%eval -6,18] [%emt 0:00:01]} 30. Rc2 {[%eval -5,17] [%emt 0:00:01]} Be8 {
[%eval 0,17] [%emt 0:00:02]} 31. Rxc4 {[%eval -5,16] [%emt 0:00:00]} Bd8 {
[%eval 0,17] [%emt 0:00:00]} 32. b3 {[%eval 0,16] [%emt 0:00:04]} a5 {
(Ad7) [%eval 0,16] [%emt 0:00:14]} 33. Kb2 {[%eval 9,17] [%emt 0:00:06]} Bd7 {
[%eval 10,15] [%emt 0:00:04]} 34. Rd2 {[%eval 12,17] [%emt 0:00:06]} Be8 {
[%eval 15,15] [%emt 0:00:07]} 35. Rc3 {[%eval 14,17] [%emt 0:00:01]} Bd7 {
[%eval 15,16] [%emt 0:00:00]} 36. Nxd8 {[%eval 7,17] [%emt 0:00:04]} Rfxd8 {
[%eval 15,19] [%emt 0:00:03]} 37. Bb6 {[%eval 7,17] [%emt 0:00:00]} Re8 {
[%eval 20,18] [%emt 0:00:09]} 38. Rc7 {[%eval 22,19] [%emt 0:00:01]} Bxg4 {
[%eval 26,19] [%emt 0:00:12]} 39. Rh2 {[%eval 16,19] [%emt 0:00:03]} Reb8 {
[%eval 21,19] [%emt 0:00:10]} 40. Ba7 {[%eval 24,20] [%emt 0:00:04]} Rb5 {
[%eval 22,19] [%emt 0:00:02]} 41. Rhxh7 {[%eval 24,19] [%emt 0:00:20]} Bf5 {
(a4) [%eval 18,20] [%emt 0:00:00]} 42. Rcg7+ {[%eval 28,19] [%emt 0:00:03]} Kf8
{[%eval 28,22] [%emt 0:00:00]} 43. Rb7 {[%eval 23,21] [%emt 0:00:06]} Rxb7 {
[%eval 25,23] [%emt 0:00:03]} 44. Rxb7 {[%eval 24,23] [%emt 0:00:03]} Ke8 {
[%eval 26,23] [%emt 0:00:01]} 45. Bb8 {[%eval 17,22] [%emt 0:00:05]} Ra6 {
[%eval 26,22] [%emt 0:00:01]} 46. Kc3 {[%eval 18,21] [%emt 0:00:03]} Be4 {
[%eval 21,21] [%emt 0:00:07]} 47. Kc4 {[%eval 24,24] [%emt 0:00:03]} a4 {
[%eval 24,22] [%emt 0:00:05]} 48. b4 {[%eval 35,24] [%emt 0:00:02]} a3 {
[%eval 33,23] [%emt 0:00:04]} 49. Rg7 {[%eval 38,24] [%emt 0:00:03]} Bb1 {
[%eval 38,23] [%emt 0:00:03]} 50. Kb3 {[%eval 45,24] [%emt 0:00:03]} Be4 {
[%eval 44,23] [%emt 0:00:03]} 51. b5 {[%eval 55,24] [%emt 0:00:08]} Bxd5+ {
(Tb6) [%eval 54,23] [%emt 0:00:00]} 52. Kb4 {[%eval 49,22] [%emt 0:00:00]} Rb6
{[%eval 60,23] [%emt 0:00:05]} 53. Ba7 {[%eval 64,25] [%emt 0:00:02]} Rb7 {
[%eval 62,24] [%emt 0:00:01]} 54. Rxb7 {[%eval 64,25] [%emt 0:00:02]} Bxb7 {
[%eval 68,25] [%emt 0:00:01]} 55. Kxa3 {[%eval 74,25] [%emt 0:00:01]} Bd5 {
[%eval 68,25] [%emt 0:00:00]} 56. Kb2 {[%eval 76,24] [%emt 0:00:01]} Kd7 {
[%eval 71,24] [%emt 0:00:01]} 57. a4 {[%eval 105,24] [%emt 0:00:03]} Bc4 {
(Af3) [%eval 106,24] [%emt 0:00:04]} 58. Kc3 {[%eval 134,23] [%emt 0:00:01]} d5
{[%eval 126,23] [%emt 0:00:02]} 59. Kb4 {[%eval 229,24] [%emt 0:00:02]} Be2 {
[%eval 248,23] [%emt 0:00:05]} 60. Bf2 {[%eval 326,25] [%emt 0:00:00]} d4 {
(Rc8) [%eval 248,20] [%emt 0:00:01]} 61. a5 {[%eval 326,19] [%emt 0:00:00]} Kc8
{[%eval 338,22] [%emt 0:00:01]} 62. a6 {[%eval 368,24] [%emt 0:00:00]} d3 {
(Af1) [%eval 340,22] [%emt 0:00:01]} 63. Be1 {[%eval 401,21] [%emt 0:00:02]}
Kc7 {(Rb8) [%eval 380,23] [%emt 0:00:01]} 64. Bd2 {
[%eval 507,22] [%emt 0:00:06]} Kb6 {(Af3) [%eval 506,19] [%emt 0:00:03]} 65.
Be3+ {[%eval 507,20] [%emt 0:00:00]} Kc7 {[%eval 506,24] [%emt 0:00:04]} 66.
b6+ {[%eval 507,22] [%emt 0:00:00]} Kb8 {[%eval 506,23] [%emt 0:00:03]} 67. Bd2
{[%eval 507,21] [%emt 0:00:00]} Bf3 {
Tempo (Lag: Av=1.27s, max=3.3s) [%eval 506,21] [%emt 0:00:02]} 0-1
[Event "3m + 0s, rated"]
[Site "?"]
[Date "2008.04.03"]
[Round "?"]
[White "Transformer10, Rybka 2.3.2a mp"]
[Black "FOOTBOLO, Rybka 2.3.2a mp"]
[Result "0-1"]
[ECO "B17"]
[WhiteElo "2689"]
[BlackElo "2711"]
[PlyCount "226"]
[EventDate "2008.04.29"]
[EventType "blitz"]
[TimeControl "180"]
1. e4 {[%eval 0,0] [%emt 0:00:00]} c6 {[%eval 0,0] [%emt 0:00:00]} 2. d4 {
[%eval 0,0] [%emt 0:00:00]} d5 {[%eval 0,0] [%emt 0:00:00]} 3. Nc3 {
[%eval 0,0] [%emt 0:00:00]} dxe4 {[%eval 0,0] [%emt 0:00:00]} 4. Nxe4 {
[%eval 0,0] [%emt 0:00:00]} Nd7 {[%eval 0,0] [%emt 0:00:00]} 5. Nf3 {
[%eval 0,0] [%emt 0:00:00]} Ngf6 {[%eval 0,0] [%emt 0:00:00]} 6. Ng3 {
[%eval 0,0] [%emt 0:00:00]} g6 {[%eval 0,0] [%emt 0:00:00]} 7. Be2 {
[%eval 0,0] [%emt 0:00:00]} Qc7 {[%eval 0,0] [%emt 0:00:00]} 8. Bg5 {
[%eval 25,14] [%emt 0:00:04]} h6 {[%eval 28,14] [%emt 0:00:05]} 9. Bd2 {
[%eval 28,16] [%emt 0:00:07]} Bg7 {[%eval 20,15] [%emt 0:00:02]} 10. O-O {
[%eval 28,12] [%emt 0:00:01]} Nf8 {[%eval 21,14] [%emt 0:00:02]} 11. c3 {
[%eval 21,14] [%emt 0:00:04]} Ne6 {[%eval 19,15] [%emt 0:00:02]} 12. Re1 {
(Ce5) [%eval 23,14] [%emt 0:00:05]} Nd5 {[%eval 29,15] [%emt 0:00:19]} 13. h4 {
(Ad3) [%eval 35,13] [%emt 0:00:06]} h5 {[%eval 27,14] [%emt 0:00:06]} 14. Bc4 {
[%eval 28,15] [%emt 0:00:08]} b5 {[%eval 32,15] [%emt 0:00:04]} 15. Bb3 {
[%eval 24,15] [%emt 0:00:06]} O-O {[%eval 29,15] [%emt 0:00:02]} 16. Ne5 {
[%eval 28,14] [%emt 0:00:05]} Rb8 {[%eval 28,14] [%emt 0:00:12]} 17. Rc1 {
(Df3) [%eval 34,13] [%emt 0:00:00]} Rb6 {[%eval 32,11] [%emt 0:00:04]} 18. Qf3
{[%eval 36,15] [%emt 0:00:02]} Bb7 {[%eval 29,12] [%emt 0:00:00]} 19. Qe4 {
(a3) [%eval 38,14] [%emt 0:00:02]} Bxe5 {[%eval 35,13] [%emt 0:00:03]} 20. Qxe5
{[%eval 39,15] [%emt 0:00:01]} Qxe5 {[%eval 41,14] [%emt 0:00:02]} 21. Rxe5 {
[%eval 56,15] [%emt 0:00:05]} Re8 {[%eval 54,15] [%emt 0:00:03]} 22. Rce1 {
(Ce4) [%eval 54,14] [%emt 0:00:02]} Kf8 {[%eval 54,14] [%emt 0:00:06]} 23. Ne4
{[%eval 52,17] [%emt 0:00:11]} Bc8 {[%eval 59,16] [%emt 0:00:02]} 24. Bxd5 {
(Cc5) [%eval 54,16] [%emt 0:00:03]} cxd5 {[%eval 48,13] [%emt 0:00:01]} 25.
Rxd5 {[%eval 62,17] [%emt 0:00:02]} f6 {[%eval 69,16] [%emt 0:00:02]} 26. a4 {
[%eval 72,17] [%emt 0:00:07]} bxa4 {[%eval 65,18] [%emt 0:00:02]} 27. Ra5 {
[%eval 68,17] [%emt 0:00:05]} Rxb2 {[%eval 66,17] [%emt 0:00:01]} 28. Bh6+ {
(Txa7) [%eval 67,16] [%emt 0:00:05]} Kf7 {[%eval 72,15] [%emt 0:00:07]} 29. d5
{[%eval 72,17] [%emt 0:00:01]} Nf8 {[%eval 81,14] [%emt 0:00:00]} 30. Bc1 {
[%eval 64,15] [%emt 0:00:04]} Rb6 {[%eval 63,15] [%emt 0:00:03]} 31. Rxa4 {
[%eval 69,16] [%emt 0:00:02]} Ra6 {[%eval 58,15] [%emt 0:00:00]} 32. Rxa6 {
[%eval 56,15] [%emt 0:00:02]} Bxa6 {[%eval 58,18] [%emt 0:00:01]} 33. d6 {
[%eval 62,17] [%emt 0:00:02]} Bb7 {[%eval 62,19] [%emt 0:00:02]} 34. dxe7 {
[%eval 62,19] [%emt 0:00:02]} Bxe4 {[%eval 63,20] [%emt 0:00:00]} 35. Ba3 {
[%eval 64,19] [%emt 0:00:00]} Nd7 {[%eval 65,19] [%emt 0:00:01]} 36. Rxe4 {
[%eval 64,19] [%emt 0:00:00]} a5 {[%eval 65,19] [%emt 0:00:10]} 37. Rd4 {
(c4) [%eval 65,18] [%emt 0:00:02]} Ne5 {[%eval 68,18] [%emt 0:00:02]} 38. Kf1 {
[%eval 67,19] [%emt 0:00:01]} Nc6 {[%eval 70,17] [%emt 0:00:01]} 39. Rd7 {
[%eval 70,18] [%emt 0:00:00]} Nxe7 {[%eval 67,18] [%emt 0:00:02]} 40. Ra7 {
[%eval 74,19] [%emt 0:00:06]} Ke6 {[%eval 75,19] [%emt 0:00:02]} 41. Ra6+ {
[%eval 82,19] [%emt 0:00:02]} Kf7 {[%eval 77,19] [%emt 0:00:01]} 42. g3 {
[%eval 82,19] [%emt 0:00:05]} Nf5 {[%eval 81,18] [%emt 0:00:03]} 43. Rxa5 {
[%eval 89,19] [%emt 0:00:05]} Rc8 {[%eval 90,19] [%emt 0:00:02]} 44. Ra7+ {
[%eval 84,18] [%emt 0:00:01]} Ke6 {[%eval 92,19] [%emt 0:00:05]} 45. Ra6+ {
[%eval 91,20] [%emt 0:00:01]} Ke5 {[%eval 92,19] [%emt 0:00:02]} 46. Bb2 {
[%eval 92,18] [%emt 0:00:02]} Rb8 {[%eval 92,19] [%emt 0:00:02]} 47. Ba1 {
[%eval 92,19] [%emt 0:00:02]} Kd5 {[%eval 91,19] [%emt 0:00:06]} 48. c4+ {
[%eval 92,21] [%emt 0:00:00]} Kxc4 {[%eval 91,19] [%emt 0:00:00]} 49. Kg2 {
(Axf6) [%eval 92,20] [%emt 0:00:06]} Kd5 {[%eval 91,17] [%emt 0:00:01]} 50.
Bxf6 {[%eval 91,14] [%emt 0:00:00]} Nd6 {[%eval 91,18] [%emt 0:00:06]} 51. Bg5
{(Ta5+) [%eval 92,18] [%emt 0:00:00]} Rg8 {[%eval 92,17] [%emt 0:00:03]} 52.
Kf3 {(Ta5+) [%eval 96,18] [%emt 0:00:01]} Nf5 {[%eval 92,15] [%emt 0:00:01]}
53. Be3 {[%eval 99,15] [%emt 0:00:00]} Rg7 {[%eval 98,15] [%emt 0:00:02]} 54.
Ba7 {(Rf4) [%eval 102,13] [%emt 0:00:01]} Kc4 {[%eval 101,14] [%emt 0:00:01]}
55. Bb8 {[%eval 98,15] [%emt 0:00:00]} Rg8 {[%eval 101,14] [%emt 0:00:01]} 56.
Be5 {[%eval 118,16] [%emt 0:00:00]} Kd5 {[%eval 111,13] [%emt 0:00:00]} 57.
Ra5+ {(Rf4) [%eval 116,12] [%emt 0:00:00]} Kc4 {[%eval 111,15] [%emt 0:00:00]}
58. Kf4 {[%eval 112,13] [%emt 0:00:01]} Re8 {[%eval 133,15] [%emt 0:00:02]} 59.
Ra4+ {[%eval 125,17] [%emt 0:00:01]} Kb5 {[%eval 134,18] [%emt 0:00:01]} 60.
Re4 {[%eval 132,14] [%emt 0:00:01]} Kc6 {[%eval 134,18] [%emt 0:00:00]} 61. Bf6
{[%eval 127,17] [%emt 0:00:00]} Rxe4+ {[%eval 126,19] [%emt 0:00:00]} 62. Kxe4
{[%eval 125,22] [%emt 0:00:00]} Kd6 {[%eval 126,22] [%emt 0:00:00]} 63. Kf4 {
[%eval 126,22] [%emt 0:00:01]} Ke6 {[%eval 126,26] [%emt 0:00:01]} 64. Bc3 {
(Rg5) [%eval 126,25] [%emt 0:00:00]} Nd6 {[%eval 125,16] [%emt 0:00:00]} 65. f3
{[%eval 126,24] [%emt 0:00:00]} Nf7 {[%eval 125,19] [%emt 0:00:00]} 66. g4 {
(Ab2) [%eval 126,24] [%emt 0:00:00]} hxg4 {[%eval 125,22] [%emt 0:00:00]} 67.
fxg4 {[%eval 126,26] [%emt 0:00:00]} Kd5 {[%eval 125,24] [%emt 0:00:00]} 68.
Bf6 {[%eval 126,26] [%emt 0:00:01]} Ke6 {[%eval 125,27] [%emt 0:00:00]} 69. Bd4
{[%eval 126,23] [%emt 0:00:02]} Kd5 {[%eval 125,28] [%emt 0:00:00]} 70. Bg7 {
[%eval 126,26] [%emt 0:00:03]} Ke6 {[%eval 125,30] [%emt 0:00:00]} 71. Ke3 {
(Re4) [%eval 114,19] [%emt 0:00:02]} Nd6 {[%eval 125,18] [%emt 0:00:00]} 72.
Kd4 {(Aa1) [%eval 126,24] [%emt 0:00:01]} Nf7 {[%eval 125,23] [%emt 0:00:00]}
73. Kd3 {(Re4) [%eval 126,24] [%emt 0:00:01]} Kd5 {
[%eval 125,16] [%emt 0:00:00]} 74. Ke3 {(Af6) [%eval 126,25] [%emt 0:00:01]}
Nd8 {[%eval 125,21] [%emt 0:00:00]} 75. Bd4 {
(Ac3) [%eval 126,20] [%emt 0:00:01]} Ne6 {[%eval 125,23] [%emt 0:00:00]} 76.
Bc3 {[%eval 126,26] [%emt 0:00:00]} Nd8 {[%eval 125,24] [%emt 0:00:00]} 77. Kf3
{(Ab2) [%eval 126,26] [%emt 0:00:01]} Ne6 {[%eval 125,23] [%emt 0:00:00]} 78.
Bb2 {(Af6) [%eval 126,21] [%emt 0:00:02]} Nd8 {[%eval 125,25] [%emt 0:00:01]}
79. Bf6 {(Ag7) [%eval 126,28] [%emt 0:00:00]} Ne6 {
[%eval 125,20] [%emt 0:00:01]} 80. Ke3 {(Ab2) [%eval 126,24] [%emt 0:00:02]}
Nc5 {[%eval 113,24] [%emt 0:00:00]} 81. Bd4 {
(Aa1) [%eval 126,23] [%emt 0:00:00]} Ne6 {[%eval 0,23] [%emt 0:00:00]} 82. Bb2
{(h5) [%eval 126,26] [%emt 0:00:00]} Nc5 {[%eval 125,21] [%emt 0:00:01]} 83.
Bf6 {(Rf3) [%eval 114,17] [%emt 0:00:01]} Ne6 {[%eval 125,19] [%emt 0:00:00]}
84. Kf3 {(Ae7) [%eval 0,18] [%emt 0:00:01]} Nc5 {[%eval 125,21] [%emt 0:00:00]}
85. Ba1 {(Rf4) [%eval 126,25] [%emt 0:00:01]} Ne6 {
[%eval 125,20] [%emt 0:00:00]} 86. Bc3 {[%eval 114,19] [%emt 0:00:00]} Nd8 {
[%eval 125,25] [%emt 0:00:00]} 87. Bb2 {(Re3) [%eval 126,28] [%emt 0:00:00]}
Ne6 {[%eval 125,23] [%emt 0:00:00]} 88. Bc1 {
(Aa1) [%eval 126,15] [%emt 0:00:00]} Kd4 {[%eval 125,20] [%emt 0:00:00]} 89.
Be3+ {[%eval 114,8] [%emt 0:00:00]} Kd5 {[%eval 125,24] [%emt 0:00:00]} 90. Bd2
{(Af2) [%eval 126,24] [%emt 0:00:00]} Nc5 {[%eval 125,19] [%emt 0:00:00]} 91.
Bb4 {(Re3) [%eval 126,26] [%emt 0:00:00]} Nd7 {[%eval 125,21] [%emt 0:00:00]}
92. Bc3 {(Rf4) [%eval 114,15] [%emt 0:00:00]} Nc5 {
[%eval 125,22] [%emt 0:00:00]} 93. Bg7 {(h5) [%eval 126,22] [%emt 0:00:01]} Ne6
{[%eval 125,21] [%emt 0:00:00]} 94. Bh8 {[%eval 126,22] [%emt 0:00:00]} Kd6 {
[%eval 125,25] [%emt 0:00:00]} 95. Ke3 {(Re4) [%eval 114,13] [%emt 0:00:01]}
Kd5 {[%eval 125,20] [%emt 0:00:00]} 96. Ba1 {[%eval 126,28] [%emt 0:00:00]} Nf8
{[%eval 125,25] [%emt 0:00:00]} 97. Bb2 {(Ac3) [%eval 114,19] [%emt 0:00:00]}
Ne6 {[%eval 1,24] [%emt 0:00:00]} 98. Bh8 {(Rf3) [%eval 126,28] [%emt 0:00:01]}
Nc5 {[%eval 113,23] [%emt 0:00:00]} 99. Ba1 {
(Ag7) [%eval 126,28] [%emt 0:00:00]} Ne6 {[%eval 113,18] [%emt 0:00:00]} 100.
Kf3 {(Ab2) [%eval 1,0] [%emt 0:00:00]} Nd8 {[%eval 125,21] [%emt 0:00:00]} 101.
Bh8 {[%eval 88,24] [%emt 0:00:00]} Ne6 {[%eval 125,25] [%emt 0:00:00]} 102. Kg3
{(Re3) [%eval 84,23] [%emt 0:00:01]} Ke4 {[%eval 84,19] [%emt 0:00:00]} 103.
Bf6 {(Ac3) [%eval 84,26] [%emt 0:00:00]} Nc5 {[%eval 84,20] [%emt 0:00:00]}
104. Bb2 {(Ag5) [%eval 76,16] [%emt 0:00:01]} Nd3 {[%eval 84,19] [%emt 0:00:00]
} 105. Bg7 {(Aa1) [%eval 84,27] [%emt 0:00:00]} Nf4 {
[%eval 84,22] [%emt 0:00:00]} 106. Bh6 {(Af8) [%eval 84,27] [%emt 0:00:01]}
Ne2+ {[%eval 84,20] [%emt 0:00:00]} 107. Kg2 {[%eval 84,28] [%emt 0:00:00]} Nd4
{[%eval 84,25] [%emt 0:00:00]} 108. Bc1 {[%eval 84,28] [%emt 0:00:01]} Ne2 {
[%eval 84,26] [%emt 0:00:00]} 109. Bd2 {(Ag5) [%eval 76,1] [%emt 0:00:00]} Nd4
{[%eval 84,19] [%emt 0:00:00]} 110. Bh6 {(Rg3) [%eval 76,1] [%emt 0:00:00]} Ne2
{[%eval 84,22] [%emt 0:00:00]} 111. Bg5 {[%eval 65,25] [%emt 0:00:01]} Nc3 {
[%eval 84,26] [%emt 0:00:00]} 112. Kf2 {(Ad2) [%eval 76,1] [%emt 0:00:00]} Nd5
{[%eval 84,18] [%emt 0:00:00]} 113. Kg3 {[%eval 84,23] [%emt 0:00:01]} Ke5 {
' [%eval 68,25] [%emt 0:00:00]} 0-1
etc
I've found exactly 500 of these erroneous games in the 04-2008 Spaghetti set alone!
I do everything by hand ... I have lost games in winning positions due to disconnection or crashing only to find in a later game that my opponent had simply imported the game I lost as a win for him without checking only to find him\her self in a totally lost position ... crap in crap out as the saying goes :) ... Lots of players (GMs included) quote stats from this database or another when the results can be very skewed. .... I never even save computer games under 20 moves as most are not important, (the most important ones are the ones relevant to the opening lines you play)
I think the easiest bit of advice to follow is if you want to import games into your opening book WITHOUT CHECKING THEM FULLY then at least click to the end of the game to make sure a win for white or black is actually a win for white or black lol
Regards
> click to the end of the game to make sure a win for white or black is actually a win for white or black lol
Yes this is exactly the process I am seeking to automate, to save doing that by hand. Imagine playing a book on Playchess made from the 500 games that are in error - but after having fixed them, you could clean up whilst having a jolly good chuckle at the same time :)
I've now written a prototype utility to do this, but I'm not a programmer so the code is pretty laughable, but it goes some way (not 100%) to identifying these games.
> are the ones relevant to the opening lines you play
I've noticed that some folks only play certain lines and not all opening lines. This is dangerous in the extreme as it allows for "opponent modelling" to be very effective, as Luminarydebris found out when he played Ultima in the recent Freestyle. Isn't it better to play everything and keep your opponent guessing?
I think everyone has either won or been on the receiving end of `book modelling` lol
I import very few other peoples games simply because there may be a big error somewhere. I work on my own games as this is a big enough task let alone working on others especially in engine rooms, Freestyle is a different matter as you have time to check through your databases etc ... It always amuses me when some move may score say 75% (this is a random figure) in a database but when you start an engine you find in reality it is rubbish, of course these tend to be human players but this still holds true for computer games, the engines involved and the year are important as is the time control ... I try to keep my main database very clean of doubles (skews stats) no human games under 10 moves many of which if you get from TWIC may simply be 1-0 or 0-1 as they dont have the score sheet or a player never turned up and a bye was given .. Lots of things can skew the stats, I was looking at the 8th Freestyle games that finished in 20 moves or under its poss more than the game you have all been talking about needs looking at lol (maybe no draws under say 30 moves should be allowed by I digress) ... There are countless games in a big database where a player has simply thrown the game, they have a big plus and they resign (i guess a few ££££ or $$$$ changed hands lmao) All these things can land you in trouble if importing!!!
It has to best if you play everything but has anybody on the planet got that much time? surprises are always occurring, for me I try to play what I play OTB at least I am learning as I watch and you start to recognise patterns and which move orders are best etc etc etc
Book editing is a never ending project :)
Regards
> It has to best if you play everything but has anybody on the planet got that much time?
Yes I can certainly understand folks building up a repertoire in certain pet lines if they are playing OTB, or want to improve thier OTB play. But on Playchess my engine runs unattended (when it runs) so I don't need any extra time for it to play all openings.
I guess it depends what you are looking for by playing in the engine rooms. I use it to to find ideas to spring on other OTB players which are sound even if they are unusual or in some books simply thought of as bad or not yet even thought of :) ... I try to watch as many of my comps games as poss to try and get an idea of what is going on which is also the reason why (at least for now) I have stopped playing blitz .... One sad thing i have to admit is I have started playing centaur chess by phone (free calls) with my good m8 Graham who is around 2200 depends on how much he has drunk and is far more interactive lol, we have a small wager (tends to be food or alcohol related .. 2 other local players have recently joined our ranks in this past-time) ... I think of chess as a social game and could not just let an engine play.
Regards
I am using different approaches.
Easy but leaving out too many games: only take mates.
All decided games with less than 50 moves are suspicious.
Search for "time" using CB9
But that's not perfect at all.
I'd like to get a function where an engine looks at the last position in every game and tests if the result is OK. Maybe this could be programmed in a simple script.
Regards,
Lukas
Regards,
Lukas
Automatic and Arbiter
In the case of Arbiter just searching for 1-0 or 0-1 is the most effective because as far as I can tell the draws are usually through material.
Also use the Game Data Tournament text box to find say 1m games that may not be wanted.
After clearing out the less than useful games of the Spaghetti 04-08 it left less than half at 31871 and with the above checking of bad results in otherwise handy-to-have games the remaining games are a useful addition for any book database. It is possible the odd one has slipped through but for the best part the integrity should be good.
The same issue arises with the databases put out by the now sadly non existent website of Richard Stickles. Bad games were more difficult to identify because the evaluations were removed. No criticism though of those supplying the games databases as it is a bit much to expect them to clean them up and distribute them too.
The golden rule is always check the game quality and result before adding to DB. It's up to you!
PeterG
> Bad games were more difficult to identify because the evaluations were removed
That's the beauty of Dadi's method - it effectively puts those evaluations back in, well back in at the all important part of the game, after the last move.
Best regards.
[Event "5m + 0s, unrated"]
[Site ""]
[Date "2008.4.14"]
[Round ""]
[White "Onni "]
[Black "SCHACHGOTT "]
[Result "1-0"]
[Eco "A86"]
[Annotator ""]
[Source "playchess.com"]
1.d4 {%041s} f5 {%0420s}
2.c4 {%042s} Nf6 {%041s} 3.g3 {%043s} g6 {%040s} 4.Bg2 {%0414s}
Bg7 {%040s} 5.Nc3 {%042s} d6 {%040s} 6.Nh3 {%0431s} O-O {%0413s}
7.O-O {%042s} Na6 {%0423s} 8.d5 {%041s} Nc5 {%041s} 9.Qc2 {%043s}
e5 {%047s} 10.dxe6 {%040s} c6 {%040s} 11.Nf4 {%044s} Nxe6 {%041s}
12.Nxe6 {%041s} Bxe6 {%040s} 13.b3 {%049s} d5 {%045s} 14.cxd5
{%046s} Nxd5 {%046s} 15.Bb2 {%041s} Qf6 {%0412s} 16.Nxd5 {%0440s}
Qxb2 {%0429s} 17.Qxb2 {%040s} Bxb2 {%041s} 18.Nc7 {%0414s} Bf7
{%0412s} 19.Rab1 {%0411s} Rac8 {%049s} 20.Rxb2 {%049s} Rxc7 {%049s}
{; SCHACHGOTT gibt auf (Lag: Av=1.53s, max=22.4s)} 1-0
There are a bunch of these games, folks just resign for no reason it seems. There are some common names that keeping popping up too.
> Its really hard to believe that someone would resign a clearly won game for no reason.
Check out some "Kitsune" games.
And .. this one got flagged .. I reckon Zappa might have held this game? :)
[Event "16m + 0s, rated"]
[Site ""]
[Date "2008.4.11"]
[Round ""]
[White "Alansacount Zappa Mexico II"]
[Black "Mirror-Man Rybka 2.3.2a mp"]
[Result "0-1"]
[Eco "A03"]
[Annotator ""]
[Source "playchess.com"]
{`0`1w`0`0`0`0`0`3è`0`0`0`0`0`0`0`0`0`3è`5`0`0`0`0`0`0`0`0`0`0`0} 1.b3 {%040s} {+0.00/0} d5
{%040s} {+0.00/0} 2.Bb2 {%040s} {+0.00/0} Nf6 {%040s} {+0.00/0}
3.e3 {%040s} {+0.00/0} c6 {%040s} {+0.00/0} 4.f4 {%040s} {+0.00/0}
g6 {%0427s} {-0.04/16} 5.Nf3 {%040s} {+0.00/0} Bg7 {%040s} {+0.00/0}
6.c4 {%040s} {+0.00/0} O-O {%047s} {-0.11/13} 7.Be2 {%040s} {+0.00/0}
{(Nc3)} dxc4 {%0432s} {-0.09/14} 8.bxc4 {%040s} {+0.00/0} {(Bxc4)}
Qb6 {%0426s} {-0.12/15} 9.Qb3 {%040s} {+0.00/0} Rd8 {%0454s}
{-0.03/15} 10.Nc3 {%0418s} {+0.27/14} {(0-0)} Ne4 {%0419s} {-0.13/14}
{%04(c5)} 11.d4 {%0417s} {+0.29/15} {(Nxe4)} Nxc3 {%0426s} {+0.04/15}
12.Bxc3 {%040s} {+0.24/16} {(Qxc3)} c5 {%0412s} {-0.04/15} 13.Ne5
{%046s} {+0.21/15} cxd4 {%0416s} {+0.00/15} {(Nc6)} 14.exd4 {%0430s}
{+0.11/15} {(Bxd4)} Nc6 {%0420s} {-0.04/15} 15.Rd1 {%041s} {+0.14/15}
Bf5 {%0416s} {-0.06/15} 16.O-O {%044s} {+0.07/14} Rac8 {%0419s}
{-0.07/15} {%04(e6)} 17.Qxb6 {%0415s} {+0.15/14} axb6 {%047s}
{-0.04/17} 18.Kf2 {%0416s} {+0.00/15} {%04(d5)} Ra8 {%0424s}
{-0.28/15} 19.g4 {%040s} {-0.20/16} Be4 {%0410s} {-0.35/15} 20.Ke3
{%0426s} {-0.31/15} {(Rd2)} f5 {%0418s} {-0.29/14} 21.a4 {%046s}
{-0.05/16} Rxa4 {%045s} {-0.33/16} 22.Ra1 {%047s} {-0.07/16}
Rda8 {%0414s} {-0.37/17} 23.Rxa4 {%040s} {-0.12/17} Rxa4 {%049s}
{-0.29/17} 24.Ra1 {%043s} {-0.23/17} {(gxf5)} Rxa1 {%0410s} {-0.34/17}
25.Bxa1 {%040s} {-0.14/17} e6 {%0413s} {-0.34/18} {Alansacount,Zappa Mexico II resigns (Lag: Av=0.51s, max=1.0s)}
0-1
Regards,
Alan
> although using a weaker engine or running on a slower PC is more likely to hold up to scrutiny.
Yes, user "Great Ozzie" seems to be the biggest "offender" in this area. He plays good openings, but with weak (compared to Rybka) engines, which skews how good those openings appear to be in the db stats. I guess this is going to happen with anyone not using Rybka though :)
A few years ago there was a rather heated debate about kibitzing on the playchess server. Macro kibitzers were just becoming readily available, and a number of people petitioned Chessbase to ban this practice. The practice was banned for a while, although the ban was violated on a regular basis. Prior to this time, Eros would kibitz and collect a large number of games for his database. There were other kibitzers, but Eros was the master of this craft. At that time, the engine room games were not available to the general public. They were only available to chessbase people and people that traded for games (Nelson was the best at this). This put people who didn't kibitz or trade games at a significant disadvantage if they were playing common openings (and led to my exploration of offbeat openings).
As a method of combating the kibitzing, I started using a number of methods to decouple the early part of the games, which I was interested in, from the remainder of the game. The first attempts were to try to resign games that were book wins. This worked very well for a short time, but Eros eventually noticed and even sent me a nice email saying it was unethical to resign won games and he also attempted to have me banned from the engine room. I pointed out that any games played in the engine room by my engine were only for my amusement, and recommended electroshock therapy to calm his anxiety.
These crude initial attempts to sabotage the database were too time consuming to implement, so they were followed by more sophisticated attempts. Most engines allow some control over time usage. Having the engine play as slowly in the beginning of the game, and having it rushed at the end was almost perfect! Better openings were played, and many games were lost in the middle and endgame when the engine was rushed for time. This was ideal for engines like DS, which allowed you to vary time usage over a very wide range, reasonably effective with Rybka, which has a smaller adjustment range, and not usable with Zappa, which has no time time adjustment parameter. The main problem with this technique is that it doesn't mask book wins.
The most prevalent countermeasure though is to use a weaker engine on a slow computer (as Eros does), so that many good openings are lost in the middle and end games. The only problem with this technique is that the best opening lines will still end up winning.
My favorite countermeasure involved modifying Toga to occasionally play random moves (like I do). I'm not sure if anyone noticed that my engine would occasionally hang pieces. I found this amusing to watch though. The only problem with this approach was that Toga wasn't multi-threaded at the time, so it wasn't the best engine for developing opening lines.
Regards,
Alan
>Thanks for the history lesson
See here also. My goal is to maximize the number of games that have an incorrect eval without driving my Elo down to a point where the top engines won't play against my engine (~2700). WinFinder would actually be the best choice for me... Not sure whether this was the niche market that VR planned for it. :-P
Regards,
Alan
> probably had (maybe still has?) the largest total collection
If that was a bet I'd take it. I am 100% sure his games collection is larger (and more accurate) than my own.
> My favorite countermeasure involved modifying Toga to occasionally play random moves (like I do).
Hmm this is a worry, the Dadi method won't catch those.
1) Open the database with the engine games and create a list of all games which White won.
2) Run this CQL query on the resulting game list and save the results to an EPD file. The query simply "searches" for the final position in each game (which will then be written to the EPD file you specify):
(match
(position :terminal)
)3) Repeat steps 1 and 2 for Black wins and finally for draws (You end up with three EPD files).
4) Analyze each of the three EPD files with your favourite engine (I would probably use Chess Assistant's Background Analysis for that, but use whatever method you like).
5) Open one of the EPD files in Chess Assistant. Chess Assistant allows you to search on the EPD fields. Set the upper and lower bound for the evaluations (ce) to identify the "suspicious" results and then search.
You now have a list of all the positions where the evaluation doesn't match the game result.
The final step is to find the games matching the positions. It's possible that there is some way to automate that in Chess Assistant (Victor would know), but if you have the original engine database in Chess Assistant format a position search only takes a couple of seconds. So even if you have to do this step manually this process will save you a lot of time.
Note that steps 1, 2, 3 and 5 will take just a few minutes in total. Of course step 4 will take much longer for a large number of games, even if you only analyze each position for a few seconds.
I'm trying to analyze the EPD like in the image ..
> This is the draws EPD so I've no idea what the numbers in the ce column mean yet
You can sort on the ce column. Click on the header to select the column and then right-click and choose Tools > Sort. Then you can start going through the games with the highest (or lowest) ce.
[Event "5m + 0s, rated 29/ 4/2008"]
[Site "?"]
[Date "2008.04.17"]
[Round "?"]
[White "DUBAIMOON Rybka 2.4 mp 32-bit"]
[Black "H.shkupi"]
[Result "1/2-1/2"]
[ECO "B30"]
[PlyCount "217"]
[EventDate "2008.??.??"]
[Source "playchess.com"]
1. e4 c5 2. Nf3 Nc6 3. Bb5 e6 4. O-O Nge7 5. Re1 a6 6. Bf1 b5 7. c4 bxc4 8. Na3
d5 9. exd5 Nxd5 10. Nxc4 Be7 11. Nfe5 Nxe5 12. Nxe5 Qc7 13. Qa4+ Bd7 14. Qe4
O-O 15. Bc4 Bf6 16. b3 Nb6 17. Bd3 g6 18. Bb2 Bb5 19. Rac1 Qd6 20. Re3 Rfd8 21.
Qb7 Nd7 22. f4 Rab8 23. Qe4 Bg7 24. Bxb5 axb5 25. Rd3 Nf6 26. Qe3 Nd5 27. Qxc5
Qxc5+ 28. Rxc5 Bf8 29. Rc1 Ra8 30. Ng4 Be7 31. a4 bxa4 32. bxa4 Rxa4 33. g3 Ra2
34. Rb3 g5 35. fxg5 Bxg5 36. Rc2 h5 37. Ne3 Kh7 38. Kf2 Kg6 39. Kf3 Raa8 40.
Rb7 Ra6 41. Rc4 Rb6 42. Rxb6 Nxb6 43. Rb4 Nd5 44. Rb5 Bxe3 45. dxe3 f5 46. Ra5
Rd6 47. Bd4 Rc6 48. Ra3 Rd6 49. Ra8 Nf6 50. Kf4 Nd5+ 51. Ke5 Rc6 52. Rg8+ Kh7
53. Re8 Kg6 54. Rxe6+ Rxe6+ 55. Kxe6 Nb4 56. Kd6 Nd3 57. h4 Nf2 58. Ke7 Ne4 59.
Be5 Nf2 60. Bc7 Ne4 61. Bd6 Nf2 62. Bb8 Ne4 63. Bf4 Nf2 64. Ke6 Ne4 65. Be5 Nf2
66. Bc7 Ne4 67. Bd6 Nf2 68. Be5 Ne4 69. Bc7 Nf2 70. Bd6 Ne4 71. Bf4 Nf2 72. Ke7
Ne4 73. Bb8 Nf2 74. Bd6 Ne4 75. Bc7 Nf2 76. Kd7 Ne4 77. Be5 Nf2 78. Kd6 Ne4+
79. Kc7 Nf2 80. Kd7 Ne4 81. Kc6 Nf2 82. Kd5 Ne4 83. Bd6 Nf2 84. Bc7 Ne4 85. Be5
Nf2 86. Bf4 Ne4 87. Ke5 Nf2 88. Kd4 Ne4 89. Kd5 Nf2 90. Bb8 Ne4 91. Ke6 Nf2 92.
Kd6 Ne4+ 93. Kd5 Nf2 94. Kc6 Ne4 95. Kd7 Nf2 96. Bd6 Ne4 97. Kc6 Nf2 98. Be5
Ne4 99. Kb5 Nf2 100. Kc4 Ne4 101. Bf4 Nf2 102. Bd6 Ne4 103. Be5 Nf2 104. Bc3
Ne4 105. Be1 Nf2 106. Bxf2 f4 107. gxf4 Kf5 108. Kd5 Kg4 109. Ke4 1/2-1/2
[Event "3m + 0s, rated"]
[Site "?"]
[Date "2008.04.08"]
[Round "?"]
[White "Kill-bill, Rybka 2.3.2a mp 32-"]
[Black "Amd64bit, Fritz 11"]
[Result "1/2-1/2"]
[ECO "A00"]
[WhiteElo "2478"]
[BlackElo "2488"]
[PlyCount "313"]
[EventDate "2008.04.29"]
[EventType "blitz"]
[TimeControl "180"]
1. h3 {[%eval 0,0] [%emt 0:00:00]} Nc6 {[%eval 1,16] [%emt 0:00:08]} 2. c3 {
(Nc3) [%eval 0,0] [%emt 0:00:00]} Nf6 {[%eval -63,15] [%emt 0:00:08]} 3. d4 {
[%eval 0,0] [%emt 0:00:00]} e6 {[%eval -49,15] [%emt 0:00:06]} 4. Nf3 {
[%eval 0,0] [%emt 0:00:00]} d5 {[%eval -28,15] [%emt 0:00:10]} 5. Bf4 {
(e3) [%eval 0,0] [%emt 0:00:00]} Bd6 {[%eval 3,15] [%emt 0:00:17]} 6. e3 {
[%eval 0,0] [%emt 0:00:00]} Qe7 {[%eval 11,14] [%emt 0:00:08]} 7. Nbd2 {
[%eval 0,0] [%emt 0:00:00]} O-O {[%eval 21,15] [%emt 0:00:09]} 8. Bd3 {
(Ne5) [%eval 0,0] [%emt 0:00:00]} e5 {[%eval 1,15] [%emt 0:00:05]} 9. dxe5 {
[%eval 0,0] [%emt 0:00:00]} Nxe5 {[%eval -1,15] [%emt 0:00:06]} 10. Nxe5 {
[%eval 0,0] [%emt 0:00:00]} Bxe5 {[%eval 4,15] [%emt 0:00:05]} 11. Bxe5 {
[%eval 0,0] [%emt 0:00:00]} Qxe5 {[%eval 8,16] [%emt 0:00:15]} 12. Nf3 {
(0-0) [%eval 0,0] [%emt 0:00:00]} Qe7 {[%eval 6,14] [%emt 0:00:04]} 13. O-O {
[%eval 0,0] [%emt 0:00:00]} c5 {[%eval 11,13] [%emt 0:00:02]} 14. Qc2 {
(b4) [%eval 0,0] [%emt 0:00:00]} Bd7 {[%eval -4,12] [%emt 0:00:03]} 15. Rfd1 {
(b4) [%eval 0,0] [%emt 0:00:00]} Rfd8 {[%eval -7,13] [%emt 0:00:04]} 16. a4 {
(Rac1) [%eval 0,0] [%emt 0:00:00]} Bc6 {[%eval -7,13] [%emt 0:00:03]} 17. a5 {
(Qe2) [%eval 0,0] [%emt 0:00:00]} g6 {[%eval -17,13] [%emt 0:00:05]} 18. Qe2 {
[%eval 0,0] [%emt 0:00:00]} Rac8 {[%eval -15,13] [%emt 0:00:03]} 19. Qe1 {
(Ng5) [%eval 0,0] [%emt 0:00:00]} Ne4 {[%eval -30,13] [%emt 0:00:03]} 20. Qe2 {
[%eval -11,10] [%emt 0:00:06]} Rd7 {(Td6) [%eval -26,14] [%emt 0:00:00]} 21.
Qc2 {(Nd2) [%eval -15,10] [%emt 0:00:05]} Kg7 {
(Tcd8) [%eval -32,11] [%emt 0:00:02]} 22. Rab1 {
(Bxe4) [%eval -20,11] [%emt 0:00:11]} Ng5 {(Sd6) [%eval -44,12] [%emt 0:00:02]}
23. Nxg5 {[%eval -15,10] [%emt 0:00:08]} Qxg5 {[%eval -47,14] [%emt 0:00:00]}
24. Bf1 {(b4) [%eval -17,10] [%emt 0:00:02]} d4 {[%eval -29,10] [%emt 0:00:02]}
25. cxd4 {(exd4) [%eval -12,10] [%emt 0:00:02]} cxd4 {
[%eval -24,13] [%emt 0:00:04]} 26. Rxd4 {[%eval -11,12] [%emt 0:00:01]} Qxa5 {
[%eval -21,14] [%emt 0:00:03]} 27. Rbd1 {[%eval -10,12] [%emt 0:00:05]} Rxd4 {
[%eval -23,13] [%emt 0:00:00]} 28. Rxd4 {[%eval -8,12] [%emt 0:00:10]} Qe1 {
(a6) [%eval -18,14] [%emt 0:00:00]} 29. Rd1 {[%eval -7,10] [%emt 0:00:03]} Qb4
{[%eval -10,14] [%emt 0:00:02]} 30. Rd4 {(b3) [%eval 0,12] [%emt 0:00:02]} Qa5
{(De1) [%eval -1,13] [%emt 0:00:01]} 31. b4 {[%eval -1,11] [%emt 0:00:02]} Qe5
{[%eval 0,13] [%emt 0:00:00]} 32. b5 {[%eval 7,11] [%emt 0:00:01]} Bd7 {
[%eval 28,13] [%emt 0:00:01]} 33. Qa4 {[%eval 13,12] [%emt 0:00:02]} Rc7 {
[%eval 12,13] [%emt 0:00:00]} 34. Bc4 {[%eval 10,12] [%emt 0:00:10]} a6 {
(Dc5) [%eval 16,15] [%emt 0:00:00]} 35. Rxd7 {[%eval 29,10] [%emt 0:00:02]}
Rxd7 {[%eval -101,15] [%emt 0:00:00]} 36. bxa6 {[%eval -87,12] [%emt 0:00:05]}
Qd6 {[%eval -102,15] [%emt 0:00:00]} 37. axb7 {[%eval -92,11] [%emt 0:00:03]}
Rxb7 {[%eval -110,16] [%emt 0:00:01]} 38. Qc2 {[%eval -112,12] [%emt 0:00:01]}
f6 {(Db4) [%eval -105,15] [%emt 0:00:04]} 39. Qa2 {
[%eval -93,12] [%emt 0:00:02]} Qb8 {(De5) [%eval -104,15] [%emt 0:00:01]} 40.
Bf1 {(g4) [%eval -93,12] [%emt 0:00:03]} Rb1 {
(Tb2) [%eval -111,12] [%emt 0:00:01]} 41. Qc2 {
(Qc4) [%eval -93,11] [%emt 0:00:04]} Qb7 {[%eval -118,13] [%emt 0:00:02]} 42.
g3 {(Qc5) [%eval -93,11] [%emt 0:00:00]} Re1 {
(Ta1) [%eval -116,12] [%emt 0:00:01]} 43. Qc4 {[%eval -92,12] [%emt 0:00:02]}
Rd1 {[%eval -118,15] [%emt 0:00:00]} 44. h4 {
(Qc2) [%eval -92,11] [%emt 0:00:01]} f5 {(Tb1) [%eval -114,12] [%emt 0:00:01]}
45. Qc2 {[%eval -92,12] [%emt 0:00:02]} Qf3 {[%eval -110,16] [%emt 0:00:00]}
46. Qc7+ {[%eval -94,12] [%emt 0:00:01]} Kh6 {[%eval -111,17] [%emt 0:00:00]}
47. Qe7 {[%eval -93,14] [%emt 0:00:01]} Qe4 {[%eval -110,16] [%emt 0:00:00]}
48. Qc7 {[%eval -95,14] [%emt 0:00:01]} Qa4 {
(Db4) [%eval -109,16] [%emt 0:00:02]} 49. Qe7 {[%eval -95,12] [%emt 0:00:02]}
Qd7 {[%eval -106,15] [%emt 0:00:00]} 50. Qf8+ {[%eval -87,13] [%emt 0:00:01]}
Qg7 {[%eval -97,15] [%emt 0:00:00]} 51. Qb8 {
(Qb4) [%eval -75,13] [%emt 0:00:01]} Qe7 {[%eval -98,14] [%emt 0:00:01]} 52.
Qf4+ {[%eval -75,12] [%emt 0:00:00]} Kg7 {[%eval -98,15] [%emt 0:00:01]} 53.
Qc4 {[%eval -76,12] [%emt 0:00:00]} Qe5 {(Dd6) [%eval -108,14] [%emt 0:00:00]}
54. Qc2 {[%eval -75,10] [%emt 0:00:03]} Re1 {
(Ta1) [%eval -98,14] [%emt 0:00:00]} 55. Qc8 {
(Qc4) [%eval -76,10] [%emt 0:00:01]} Rb1 {(Ta1) [%eval -107,14] [%emt 0:00:01]}
56. Qd7+ {[%eval -82,11] [%emt 0:00:01]} Kh6 {[%eval -107,15] [%emt 0:00:00]}
57. Qd8 {[%eval -82,11] [%emt 0:00:01]} Qc5 {
(De4) [%eval -101,15] [%emt 0:00:01]} 58. Qg5+ {[%eval -80,9] [%emt 0:00:01]}
Kg7 {[%eval -108,13] [%emt 0:00:00]} 59. Qd8 {[%eval -82,10] [%emt 0:00:00]}
Rc1 {(Db4) [%eval -105,14] [%emt 0:00:01]} 60. Qd7+ {
[%eval -82,11] [%emt 0:00:01]} Kh6 {[%eval -104,15] [%emt 0:00:00]} 61. Qd8 {
[%eval -82,11] [%emt 0:00:00]} Re1 {(Ta1) [%eval -100,15] [%emt 0:00:02]} 62.
Kg2 {(Qg5+) [%eval -49,12] [%emt 0:00:02]} Qc6+ {[%eval -76,13] [%emt 0:00:01]}
63. Kg1 {[%eval -51,14] [%emt 0:00:02]} Rb1 {[%eval -50,16] [%emt 0:00:00]} 64.
Qg5+ {[%eval -48,13] [%emt 0:00:00]} Kg7 {[%eval -50,13] [%emt 0:00:00]} 65.
Qe7+ {[%eval -47,14] [%emt 0:00:01]} Kg8 {[%eval -49,16] [%emt 0:00:00]} 66.
Qd8+ {[%eval -47,14] [%emt 0:00:01]} Kf7 {[%eval -49,16] [%emt 0:00:00]} 67.
Qh8 {[%eval -46,14] [%emt 0:00:03]} h5 {(Df6) [%eval -49,17] [%emt 0:00:00]}
68. Qh7+ {[%eval -44,13] [%emt 0:00:01]} Kf6 {[%eval -45,17] [%emt 0:00:01]}
69. Qh8+ {[%eval -44,13] [%emt 0:00:00]} Ke7 {[%eval -46,16] [%emt 0:00:00]}
70. Qh7+ {[%eval -44,13] [%emt 0:00:01]} Kd8 {[%eval -45,16] [%emt 0:00:00]}
71. Qf7 {(Qh8+) [%eval -44,13] [%emt 0:00:01]} Rd1 {
(Kc8) [%eval -44,12] [%emt 0:00:01]} 72. Qg8+ {
(Qb3) [%eval -37,8] [%emt 0:00:01]} Ke7 {(Kc7) [%eval -40,15] [%emt 0:00:01]}
73. Qg7+ {[%eval -28,11] [%emt 0:00:01]} Ke8 {[%eval -29,16] [%emt 0:00:00]}
74. Qg8+ {[%eval -35,11] [%emt 0:00:00]} Kd7 {[%eval -27,16] [%emt 0:00:01]}
75. Qg7+ {(Qf7+) [%eval -27,11] [%emt 0:00:00]} Kc8 {
[%eval -27,14] [%emt 0:00:01]} 76. Qh8+ {(Qf8+) [%eval -27,12] [%emt 0:00:01]}
Kb7 {(Kc7) [%eval -27,13] [%emt 0:00:01]} 77. Qg7+ {
[%eval -26,10] [%emt 0:00:00]} Kb8 {(Td7) [%eval -26,14] [%emt 0:00:00]} 78.
Qb2+ {(Qg8+) [%eval -26,13] [%emt 0:00:01]} Kc7 {[%eval -21,12] [%emt 0:00:00]}
79. Qg7+ {[%eval -25,13] [%emt 0:00:01]} Rd7 {[%eval -21,13] [%emt 0:00:00]}
80. Qb2 {(Qe5+) [%eval -25,13] [%emt 0:00:07]} Kc8 {
(Dd5) [%eval -19,10] [%emt 0:00:00]} 81. Bg2 {
(Be2) [%eval -22,11] [%emt 0:00:01]} Rd1+ {(De6) [%eval -8,12] [%emt 0:00:01]}
82. Kh2 {[%eval -17,8] [%emt 0:00:01]} Qc5 {(Dd6) [%eval -1,12] [%emt 0:00:00]}
83. Bf3 {[%eval -17,7] [%emt 0:00:00]} Rd3 {(Td6) [%eval -1,13] [%emt 0:00:00]}
84. Qh8+ {[%eval -17,8] [%emt 0:00:01]} Rd8 {[%eval -7,13] [%emt 0:00:00]} 85.
Qb2 {[%eval -21,9] [%emt 0:00:00]} Rd6 {[%eval -1,12] [%emt 0:00:00]} 86. Kg2 {
(e4) [%eval -22,8] [%emt 0:00:01]} Qc4 {(Kc7) [%eval -13,11] [%emt 0:00:00]}
87. Qe5 {(Qg7) [%eval -22,7] [%emt 0:00:00]} Qe6 {[%eval -9,12] [%emt 0:00:01]}
88. Qg7 {(Qb2) [%eval -23,10] [%emt 0:00:01]} Kd8 {
[%eval -11,12] [%emt 0:00:00]} 89. Qf8+ {(Qc3) [%eval -27,9] [%emt 0:00:00]}
Kd7 {[%eval -11,14] [%emt 0:00:00]} 90. Qg7+ {[%eval -27,11] [%emt 0:00:01]}
Qe7 {[%eval -12,15] [%emt 0:00:00]} 91. Qg8 {[%eval -27,11] [%emt 0:00:00]} Qf6
{(De5) [%eval -11,13] [%emt 0:00:00]} 92. Bd5 {[%eval -24,7] [%emt 0:00:00]}
Qe5 {(Tb6) [%eval -12,13] [%emt 0:00:00]} 93. Qf7+ {
[%eval -27,8] [%emt 0:00:00]} Kd8 {[%eval -13,14] [%emt 0:00:00]} 94. Qf8+ {
[%eval -27,10] [%emt 0:00:00]} Kc7 {[%eval -13,14] [%emt 0:00:00]} 95. Bf3 {
[%eval -27,11] [%emt 0:00:00]} Qf6 {(Kd7) [%eval -13,12] [%emt 0:00:00]} 96.
Qa8 {[%eval -19,8] [%emt 0:00:01]} Kd7 {(Kb6) [%eval -13,11] [%emt 0:00:00]}
97. Bd5 {[%eval -27,8] [%emt 0:00:01]} Ke7 {[%eval -21,11] [%emt 0:00:00]} 98.
Qg8 {(Qa5) [%eval -33,9] [%emt 0:00:02]} Rd7 {[%eval -24,11] [%emt 0:00:00]}
99. f4 {(Kg1) [%eval -33,9] [%emt 0:00:00]} Rd6 {[%eval -29,9] [%emt 0:00:00]}
100. Qh7+ {[%eval -37,9] [%emt 0:00:01]} Kd8 {
(Ke8) [%eval -37,12] [%emt 0:00:00]} 101. Qa7 {
(Qg8+) [%eval -37,9] [%emt 0:00:01]} Qb2+ {(Ke8) [%eval -39,11] [%emt 0:00:00]}
102. Kf3 {[%eval -36,7] [%emt 0:00:00]} Qb5 {[%eval -40,13] [%emt 0:00:00]}
103. Qa8+ {[%eval -37,8] [%emt 0:00:00]} Ke7 {[%eval -42,14] [%emt 0:00:00]}
104. Qa7+ {[%eval -40,11] [%emt 0:00:01]} Qd7 {[%eval -38,15] [%emt 0:00:00]}
105. Qa3 {[%eval -40,9] [%emt 0:00:00]} Kf8 {[%eval -38,14] [%emt 0:00:00]}
106. e4 {(Qa8+) [%eval -40,9] [%emt 0:00:00]} fxe4+ {
[%eval -43,10] [%emt 0:00:00]} 107. Bxe4 {[%eval -40,10] [%emt 0:00:01]} Qg4+ {
(De6) [%eval -44,11] [%emt 0:00:00]} 108. Kg2 {
(Kf2) [%eval -40,7] [%emt 0:00:01]} Qe6 {[%eval -46,10] [%emt 0:00:00]} 109.
Qb4 {[%eval -44,8] [%emt 0:00:01]} Kg8 {(Kg7) [%eval -51,12] [%emt 0:00:00]}
110. Kf2 {[%eval -42,5] [%emt 0:00:00]} Rd7 {
(Td8) [%eval -57,11] [%emt 0:00:00]} 111. Kg2 {
(Qb8+) [%eval -48,6] [%emt 0:00:01]} Kf7 {[%eval -54,10] [%emt 0:00:00]} 112.
Kh2 {[%eval -48,6] [%emt 0:00:00]} Qa2+ {(Td1) [%eval -88,12] [%emt 0:00:00]}
113. Kh3 {(Bg2) [%eval -80,9] [%emt 0:00:01]} Rd2 {
[%eval -88,12] [%emt 0:00:00]} 114. Qb7+ {[%eval -78,10] [%emt 0:00:00]} Kg8 {
[%eval -86,14] [%emt 0:00:00]} 115. Bg2 {(Qc8+) [%eval -79,11] [%emt 0:00:00]}
Qc4 {(De6+) [%eval -88,10] [%emt 0:00:00]} 116. Qb8+ {
(Kh2) [%eval -79,9] [%emt 0:00:00]} Kg7 {[%eval -87,11] [%emt 0:00:00]} 117.
Qa7+ {(Qb7+) [%eval -79,12] [%emt 0:00:00]} Qf7 {[%eval -88,11] [%emt 0:00:00]}
118. Qe3 {[%eval -79,13] [%emt 0:00:01]} Qd7+ {[%eval -88,12] [%emt 0:00:00]}
119. Kh2 {[%eval -79,13] [%emt 0:00:00]} Qd6 {
(Kf7) [%eval -88,12] [%emt 0:00:00]} 120. Qc3+ {
(Qa7+) [%eval -78,9] [%emt 0:00:00]} Kf7 {[%eval -87,12] [%emt 0:00:01]} 121.
Qb3+ {(Qc4+) [%eval -78,11] [%emt 0:00:00]} Qe6 {
(Kf8) [%eval -88,11] [%emt 0:00:00]} 122. Qb7+ {[%eval -79,10] [%emt 0:00:00]}
Kg8 {(Dd7) [%eval -87,13] [%emt 0:00:00]} 123. Qa8+ {
(Kg1) [%eval -78,10] [%emt 0:00:00]} Kh7 {(Kg7) [%eval -86,11] [%emt 0:00:00]}
124. Qb7+ {[%eval -78,9] [%emt 0:00:00]} Kh6 {
(Dd7) [%eval -84,13] [%emt 0:00:00]} 125. Qb8 {
(Qb4) [%eval -78,11] [%emt 0:00:00]} Kg7 {[%eval -86,12] [%emt 0:00:00]} 126.
Qc7+ {[%eval -78,12] [%emt 0:00:00]} Qd7 {[%eval -87,13] [%emt 0:00:00]} 127.
Qc3+ {(Qc5) [%eval -78,13] [%emt 0:00:00]} Qd4 {
(Kg8) [%eval -87,11] [%emt 0:00:00]} 128. Qc7+ {
(Qa3) [%eval -78,8] [%emt 0:00:01]} Kf8 {(Kf6) [%eval -86,9] [%emt 0:00:00]}
129. Qa5 {(Qc6) [%eval -78,6] [%emt 0:00:00]} Qd7 {
(Db2) [%eval -86,9] [%emt 0:00:00]} 130. Qb4+ {[%eval 1,8] [%emt 0:00:00]} Kg8
{(Dd6) [%eval -84,13] [%emt 0:00:00]} 131. Qb3+ {
(Qe4) [%eval 1,10] [%emt 0:00:00]} Kh7 {(Kf8) [%eval -86,11] [%emt 0:00:00]}
132. Qb4 {[%eval -78,8] [%emt 0:00:00]} Ra2 {
(Kg7) [%eval -86,13] [%emt 0:00:00]} 133. Qc4 {
(Kg1) [%eval -70,8] [%emt 0:00:00]} Rf2 {[%eval -84,10] [%emt 0:00:00]} 134.
Qe4 {[%eval -78,11] [%emt 0:00:00]} Rb2 {[%eval -85,14] [%emt 0:00:00]} 135.
Kh1 {[%eval -78,10] [%emt 0:00:00]} Ra2 {[%eval -86,13] [%emt 0:00:00]} 136.
Qe5 {(Kg1) [%eval -79,9] [%emt 0:00:00]} Rd2 {[%eval -86,9] [%emt 0:00:00]}
137. Qe4 {[%eval -79,9] [%emt 0:00:00]} Rb2 {
(Kg7) [%eval -84,12] [%emt 0:00:00]} 138. Kh2 {
(Qe5) [%eval -70,3] [%emt 0:00:00]} Qf7 {[%eval -84,10] [%emt 0:00:00]} 139.
Kh1 {[%eval -68,7] [%emt 0:00:00]} Rd2 {(Df6) [%eval -84,11] [%emt 0:00:00]}
140. Qe3 {(Qb4) [%eval -69,6] [%emt 0:00:00]} Ra2 {[%eval -83,9] [%emt 0:00:00]
} 141. Qc5 {(Bf3) [%eval -76,9] [%emt 0:00:00]} Qf6 {
[%eval -83,9] [%emt 0:00:00]} 142. Qd5 {[%eval -76,11] [%emt 0:00:00]} Rc2 {
(Te2) [%eval -84,12] [%emt 0:00:00]} 143. Qb7+ {
(Kh2) [%eval -68,3] [%emt 0:00:00]} Kh6 {[%eval -85,10] [%emt 0:00:00]} 144.
Qa8 {[%eval -76,10] [%emt 0:00:00]} Re2 {(Td2) [%eval -83,11] [%emt 0:00:00]}
145. Bf3 {(Kh2) [%eval -76,6] [%emt 0:00:00]} Rb2 {
(Td2) [%eval -84,9] [%emt 0:00:00]} 146. Qg8 {
(Bg2) [%eval -68,4] [%emt 0:00:00]} Rd2 {[%eval -86,10] [%emt 0:00:00]} 147.
Bg2 {(Qa8) [%eval -76,12] [%emt 0:00:00]} Qa1+ {
(Dd8) [%eval -84,9] [%emt 0:00:00]} 148. Kh2 {[%eval -76,9] [%emt 0:00:00]} Qg7
{(Db2) [%eval -75,14] [%emt 0:00:00]} 149. Qe8 {[%eval -59,5] [%emt 0:00:00]}
Qb2 {[%eval -69,13] [%emt 0:00:00]} 150. Qf8+ {
(Kh3) [%eval -75,12] [%emt 0:00:00]} Kh7 {[%eval -80,13] [%emt 0:00:00]} 151.
Kh3 {[%eval -75,12] [%emt 0:00:00]} Qg7 {(Te2) [%eval -82,13] [%emt 0:00:00]}
152. Qb4 {(Qc8) [%eval -66,10] [%emt 0:00:00]} Rd4 {
[%eval -55,9] [%emt 0:00:00]} 153. Qe1 {(Qb3) [%eval -66,8] [%emt 0:00:00]}
Qd7+ {[%eval -50,8] [%emt 0:00:00]} 154. Kh2 {[%eval 0,12] [%emt 0:00:00]} Rd2
{[%eval 0,12] [%emt 0:00:00]} 155. Qe3 {(Qe4) [%eval 0,13] [%emt 0:00:00]} Ra2
{(Kg8) [%eval -1,10] [%emt 0:00:00]} 156. Qe5 {[%eval 0,11] [%emt 0:00:00]} Qb7
{[%eval -1,17] [%emt 0:00:00]} 157. Kg1 {(Qe7+) [%eval 0,19] [%emt 0:00:00]}
1/2-1/2
[Event "5m + 0s, rated 29/ 4/2008"]
[Site "?"]
[Date "2008.04.17"]
[Round "?"]
[White "Luthier"]
[Black "Emineerdogan"]
[Result "1/2-1/2"]
[ECO "C46"]
[PlyCount "102"]
[EventDate "2008.??.??"]
[Source "playchess.com"]
1. e4 e5 2. Nf3 Nc6 3. Nc3 Bb4 4. a3 Bxc3 5. dxc3 Nf6 6. Bg5 h6 7. Bxf6 Qxf6 8.
Bb5 Ne7 9. O-O a6 10. Bc4 b5 11. Bd5 Nxd5 12. exd5 Bb7 13. Qe1 d6 14. Rd1 O-O
15. b4 c6 16. dxc6 Bxc6 17. Qe3 Bxf3 18. Qxf3 Qxf3 19. gxf3 Rfd8 20. Rd2 Rac8
21. Rd3 d5 22. Rfd1 d4 23. Kf1 Rd7 24. cxd4 exd4 25. Rxd4 Rxd4 26. Rxd4 Rxc2
27. Kg2 Rc4 28. Rd6 Rc3 29. Rxa6 Rxa3 30. Rxa3 Kf8 31. Ra5 f5 32. Rxb5 g5 33.
Rxf5+ Ke7 34. b5 Ke6 35. Rxg5 hxg5 36. b6 Kd6 37. b7 Kc7 38. b8=Q+ Kxb8 39. Kg3
Kc7 40. Kg4 Kd6 41. Kxg5 Ke5 42. h4 Kd4 43. h5 Kd3 44. f4 Kd2 45. f5 Ke2 46. h6
Kxf2 47. h7 Kg3 48. h8=Q Kg2 49. f6 Kg3 50. f7 Kg2 51. Qb2+ Kg3 1/2-1/2
As someone said, you really have to check all the games, shame I need to throw away my polyglot book as I've been importing this crap! The good news is that it only take 2 minutes to build a new polyglot book :)
> I had no idea that CA was so powerful
It has many pleasant surprises for those who think it is just another chess database system :)
> The very first erroneous game I found
Here is the quickest way to go through the positions and locate the corresponding games. You only need to go once through steps 1-5 for each game file that you want to investigate.
1) Convert the game database (04-08 in this case) to Chess Assistant format. There is no other format that has comparable search speed so this will save you a lot of time.
2) Build the tree for 04-08: Right-click on the database in the navigation pane and select Operations > Build tree. (This took about 10 seconds for 04-08 on my computer with Rybka analyzing at the same time).
3) Open the list with the positions that you analyzed and sort them on 'ce' as I explained. Open the first position that you want to check (You have already done this before so it should be familiar).
4) Make sure that the window with the position you want to search for is highlighted and hit CTRL+F to bring up the position search dialog. Click on the ellipses button in the lower right corner ("Select bases to search in"). The following dialog box is displayed

5) Select 04-08 in the database list as shown above and make sure that no other database is selected. (The green dot shows that a tree has been built for this database). Also select "Save bases to list". This ensures that the following position searches will automatically use 04-08. Finally click OK and then Search to find the game with the position you were looking for.
Now everything becomes simpler. After dealing with the first game select the next position (F8 or use the green arrow keys on the toolbar), hit CTRL+F and then press Enter to start the search. Press Enter again to open the game that was found. The cursor will automatically go to the final position.
If you are a "mouseman" there are buttons you can click for these actions (but of course that will slow you down).
When a new position is displayed you can always see it's evaluation (see the image below) so you can decide when it's no longer "suspicious" and you can stop searching.
> for some reason the analysis stops when it finds a game where the position on the board is mate.
I modified the CQL query slightly to skip all games that ended in a checkmate. The resulting EPD files for white and black wins are attached. Using these files you should be able to run the analysis successfully. Let me know if you need some info about the games which did end in a checkmate.
I saw the same problem as you did with checkmate positions but nowadays I always use Background Analysis which doesn't have this problem. Maybe Victor will look into this.
1. I created a file with your endgame CQL
2. Opened a list of games within a database
3. Set the SQL criteria for this list pointing to the recently created CQL file
4. Then I got stuck as the Export EPD function seems to work on a *.hsh file, and I don't have a *.hsh file corresponding to my list of games. I do have a *.hsh for something called "direct tree", but this is a different set of games
5. Also, is there a CQL commands/syntax list somewhere? (How did you specify "no mates" for instance?)
Feel free not to answer if this is too tiresome!
Best regards.
Maybe it could be of interest to know that CQL (the Chess Query Language) exists as a standalone utility.
Its homepage is here : http://www.rbnn.com/cql/
There is also a visual tool for CQL available at Emil Vlasak's page : http://www.vlasak.biz/vcql.htm
Marc
Powered by mwForum 2.27.4 © 1999-2012 Markus Wichitill