Wednesday, December 28, 2011

Critter 1.4 for Android

Richard Vida released Critter 1.4, including a version for Android. This ARM binary imports well into Chess for Android. A quick 1-second-per-move tournament from both sides of all opening lines in the Nunn test suite on a Nexus S ended in favor of the previous version though.


Wednesday, December 21, 2011

DoubleCheck2.3 for Android

Lucas Braesch released DoubleCheck 2.3 and I put an ARM binary on UCI and XBoard engines for Android (you can find another binary for ARM on Jim Ablett's website). Below, I show the results of a quick one-second-per-move tournament played from both sides of all lines in the Noomen test suite 2012 between some recent versions (32MB hash size, Nexus S).

                  1         2          3                           
1 DoubleCheck 2.3     *     36.5-23.5  39.5-20.5  76.0/120
2 DoubleCheck 2.0 23.5-36.5     *      35.5-24.5  59.0/120
3 DoubleCheck 1.3 20.5-39.5 24.5-35.5      *      45.0/120



TjChess for Android

Another engine for ARM-based Android devices! Tony Hecker kindly made ARM binaries of Tjchess available as either an UCI engine or a XBoard engine. Both import well in Chess for Android. Some screenshots below. With so many new engines, is it time for yet another Android chess engine tournament?


Umko for Android

The list of chess engines compiled for ARM-based Android devices keeps growing. Someone pointed me to Borko Boskovic's Umko engine.

I tested this UCI engine in Chess for Android, and it works well. Some screenshots below.



Saturday, December 17, 2011

Android Engines Tournament: Group A

Group A has finished a complete thirty seconds-per-move tournament in Chess for Android, played from both sides of all positions in the Nunn opening suite under the conditions described earlier.

Congratulations to Richard Vida for Critter's victory in this tournament!

All games can be downloaded from the tournament page.

This completes the Android tournament with longer time controls (although since many more engines are available now, perhaps another one is already necessary!).

                       1         2        3         4         5                    
1 Critter 1.2 32-bit       *     11.5-8.5  9.5-10.5  15.0-5.0  11.5-8.5  47.5/80
2 Stockfish 2.1.1 JA    8.5-11.5     *    13.0-7.0    9.5-10.5 11.0-9.0  42.0/80
3 Komodo32 2.03 AB     10.5-9.5   7.0-13.0    *      13.0-7.0  11.5-8.5  42.0/80
4 RobboLito 0.085g3l    5.0-15.0 10.5-9.5  7.0-13.0      *     12.0-8.0  34.5/80
5 IvanHoe-Beta v999947c 8.5-11.5  9.0-11.0 8.5-11.5   8.0-12.0     *     34.0/80



Wednesday, December 14, 2011

Arasan for Android

Jim Ablett kindly compiled Jon Dart's Arasan engine for ARM-based Android devices so that it can be imported in Chess for Android. The engine supports multithreading, Nalimov endgame tablebases, and clocked at about 100Kns out of the opening on my Nexus S.


 




Sunday, December 11, 2011

Jim Ablett's Android Chess Engine Bundle Tested

As posted earlier, Jim Ablett posted an Android Chess Engine Bundle, which various UCI and Win/XBoard engines that can be imported in Chess for Android. Because the Win/XBoard protocol feature is still relatively new in Chess for Android and conducted a test tournament between all the XBoard engines (except gfc-08-rev5-ja which often claims a mate without actually making the move; I am not sure if the standard allows this, but it seems weird that the GUI should verify the claim).

During this tournament I found a few opportunities for improving the GUI's handling of the protocol, which will be released soon. Also, the next release will add the much requested pondering feature (also called permanent brain).

Games available on request.
                         
1  olithink-530-ja          34.5/38
2  crafty-234-ja            32.0/38
3  phalanx-xxii-ja          29.5/38
4  chess-one-201-ja         29.0/38
5  gullydeckel-215-pl10-ja  25.5/38
6  sloppy-023-ja            25.5/38
7  kmtchess-121-ja          23.0/38
8  surprise-43-b13-ja       23.0/38
9  scidlet-261b2-ja         21.0/38
10 gk-090-ja                19.5/38
11 natwarlal-014-ja         19.0/38
12 knightcap-36-ja          17.0/38
13 buzz-os-11-27-08-ja      17.0/38
14 sjeng-112-ja             16.0/38
15 mizar-30-ja              15.5/38
16 zzzzzz-351-ja            12.5/38
17 mskcp-145-ja              9.0/38
18 exchess-054-beta-ja       7.0/38
19 toledo-nanochess-2010-ja  2.5/38
20 Chess for Android         2.0/38

Sunday, December 4, 2011

Android Engines Tournament: Group B

Group B has finished a complete thirty seconds-per-move tournament in Chess for Android, played from both sides of all positions in the Nunn opening suite under the conditions described earlier. Regrettably I found that Crafty was put at a slight disadvantage (not something that would have changed the outcome though) due to a misinterpretation of XBoard's resign plus move command, causing a resign by illegal move in the next game. This issue has been fixed now.

Congratulations to IvanHoe for its promotion to Group A.

All games can be downloaded from the tournament page.

The games of the final group A have started!

                       1        2        3         4        5                    
1 IvanHoe-Beta 999947c    *     15.0-5.0 17.0-3.0  19.0-1.0 19.0-1.0 70.0/80
2 scorpio              5.0-15.0     *     7.5-12.5 17.5-2.5 14.5-5.5 44.5/80 
3 Toga II 1.4.1SE      3.0-17.0 12.5-7.5     *     12.0-8.0 13.0-7.0 40.5/80 
4 crafty               1.0-19.0  2.5-17.5 8.0-12.0     *    12.0-8.0 23.5/80 
5 GarboChess3          1.0-19.0  5.5-14.5 7.0-13.0  8.0-12.0    *    21.5/80

Friday, November 25, 2011

Jim Ablett's Android Chess Engine Bundle

Jim Ablett very kindly posted an Android Chess Engine Bundle with various UCI and XBoard engines that can be imported in Chess for Android.

UCI:
daydreamer-175-ja  greko-82-ja    redqueen-098-ja  stockfish-211-ja
diablo-051b-ja     jazz-501-ja    rotor-04-ja      sungorus-14-ja
doublecheck-21-ja  komodo-13-ja   simplex-098-ja
garbochess-3-ja    pepito-159-ja  sissa-20-ja

XBOARD:
uzz-os-11-27-08          kmtchess-121-ja   scidlet-361-b2-ja
chess-one-201-ja         knightcap-36-ja   sjeng-112-ja
crafty-234-ja            mizar-030-ja      sloppy-023-ja
exchess-054-beta-ja      mskcp-145-ja      surprise-43-beta13-ja
gfc-08-rev5-ja           natwarlal-014-ja  toledo-nanochess-2010-ja
gk-090-ja                olithink-530-ja   zzzzzz-351-ja
gullydeckel-215-pl10-ja  phalanx-xxii-ja

Wednesday, November 23, 2011

Android Engines Tournament: Group C

Group C has just finished a complete thirty seconds-per-move tournament in Chess for Android, played from both sides of all positions in the Nunn opening suite under the conditions described earlier.

Congratulations to Gary Linscott for GarboChess' promotion to Group B.

All games can be downloaded from the tournament page.

                           1        2         3         4        5                    
1 GarboChess3                 *     10.5-9.5   9.5-10.5 15.0-5.0 16.0-4.0  51.0/80
2 Daydreamer 1.75 JA        9.5-10.5    *     12.0-8.0  14.5-5.5 13.0-7.0  49.0/80
3 GNU Chess 5.07.153.3b-32 10.5-9.5  8.0-12.0     *     11.0-9.0 16.0-4.0  45.5/80
4 Pepito v1.59              5.0-15.0 5.5-14.5  9.0-11.0     *     9.0-11.0 28.5/80
5 Rotor 0.6a                4.0-16.0 7.0-13.0  4.0-16.0 11.0-9.0     *     26.0/80


Tuesday, November 15, 2011

Android Engines Tournament: Group D

After many more cycles on my Nexus One, Group D has just finished a complete thirty seconds-per-move tournament in Chess for Android, played from both sides of all positions in the Nunn opening suite under the conditions described earlier. Quite a shuffle-up in the results this time compared to the qualification tournament.

Congratulations to Aaron Becker for Daydreamer's promotion to Group C.

All games can be downloaded from the tournament page.

                      1        2         3         4        5
1 Daydreamer 1.75 JA     *     12.0-8.0  11.0-9.0  14.5-5.5 16.0-4.0  53.5/80
2 sloppy              8.0-12.0     *     14.0-6.0  10.5-9.5 16.0-4.0  48.5/80
3 RedQueen 0.9.8 JA   9.0-11.0  6.0-14.0     *     11.5-8.5 14.0-6.0  40.5/80
4 gaviota v0.84       5.5-14.5  9.5-10.5  8.5-11.5     *    15.0-5.0  38.5/80
5 Diablo 0.5.1b JA    4.0-16.0  4.0-16.0  6.0-14.0  5.0-15.0    *     19.0/80

Saturday, November 12, 2011

HELLO Micro-KIM

The Micro-KIM arrived today! I did some initial experimentation with my 6502 cross-assembler and was happy that the paper tape format l recently added could be uploaded to the device without any problems. What better first program to write than "HELLO WORLD" (except only HELLO fits on the display)? It was fun figuring out how to control the display using low level 6502 programming.




Monday, November 7, 2011

Paper Tape Format Disassembler

I have extended my cross-assembler with a built-in disassembler that can directly read from paper tape format (and a few other formats). For example, the following test assembly program

      .org $0200
      ldx #100
loop  dex
      bne loop
      brk

is, under option -P, assembled into paper tape format (text representation):

;060200A264CAD0FD0003A5
;0000010001

Option -dP activates the disassembler on paper tape format represented as text, which disassembles the format above back to:

$0200 a2 64  ldx #$64
$0202 ca     dex
$0203 d0 fd  bne $0202
$0205 00     brk

Sunday, November 6, 2011

Android Engines Tournament: Group E

After burning cycles on my Nexus One for many days, Group E has just finished a complete thirty seconds-per-move tournament, played from both sides of all positions in the Nunn opening suite under the conditions described earlier.

Congratulations to Ben-Hur Carlos Vieira Langoni Jr for RedQueen's promotion to Group D.

All games can be downloaded from the tournament page.

                    1         2         3         4         5                    
1 RedQueen 0.9.8 JA     *     10.0-10.0 14.5-5.5  17.0-3.0  19.5-0.5  61.0/80
2 greko8.2          10.0-10.0     *     14.5-5.5  16.0-4.0  18.5-1.5  59.0/80
3 Sungorus 1.4 JA    5.5-14.5  5.5-14.5     *     13.0-7.0  16.0-4.0  40.0/80
4 Jazz v5.01 JA      3.0-17.0  4.0-16.0  7.0-13.0      *    14.5-5.5  28.5/80
5 DoubleCheck 1.3    0.5-19.5  1.5-18.5  4.0-16.0  5.5-14.5     *     11.5/80

Friday, November 4, 2011

Paper Tape Format

As a present, my wife ordered the Micro-KIM from Briel Computers for me, which is a modern replica of the KIM-1 microcomputer. Even though I learned machine code on the 6510 of the Commodore 64, I remember seeing the KIM-1 in an electronics store much earlier, and I was intrigued right away. I can't wait for it to arrive to do some vintage programming.

In anticipation of the Micro-KIM's arrival, I extended my 65xx cross-assembler (available for Windows, Linux and MacOS) with the paper tape format, either in the original binary format (option -p) or in a text representation (option -P) so that its output can feed directly into the Kim's terminal interface. I simply generated the format based on old documentation and it is still untested. If someone is interested in trying it out, I would appreciate early feedback. Otherwise, I will report back when I get my Micro-KIM.

For example, using the assembler on this little test assembly program:

.org  $0100
.byte $FF $EE $DD $CC $BB $AA $00 $99 $88 $77 $66 $55
.byte $44 $33 $22 $11 $22 $33 $44 $55 $66 $77 $88 $99

yields the following text representation of the paper tape format:

;180100FFEEDDCCBBAA0099887766554433221122334455667788990AFD
;0000010001

Friday, October 28, 2011

Android Engines Tournament: Group F

Group F has just finished a complete thirty seconds-per-move tournament, played from both sides of all positions in the Nunn opening suite under the conditions described earlier.

Congratulations to Evert Glebbeek for Jazz's promotion to Group E!

All games can be downloaded from the tournament page.

                1        2         3         4         5 
1 Jazz v5.01 JA    *     15.5-4.5  18.0-2.0  18.5-1.5  19.5-0.5 71.5/80
2 ZCT-0.3.2500  4.5-15.5     *     13.5-6.5  17.0-3.0  16.0-4.0 51.0/80
3 BikJump v2.1  2.0-18.0  6.5-13.5     *     12.5-7.5  12.0-8.0 33.0/80
4 tscp181       1.5-18.5  3.0-17.0  7.5-12.5     *     12.5-7.5 24.5/80
5 umax48w       0.5-19.5  4.0-16.0  8.0-12.0  7.5-12.5     *    20.0/80

Wednesday, October 26, 2011

Soft6502 and H6X file format

Charles Bond wrote a nifty 6502 simulator, called Soft6502, which I find useful for testing small programs written for the 65xx microprocessor family. The simulator supports the full 6502 instruction set and two 8-bit ports for input and output.

 

Programs can be entered one byte at the time through the keyboard or, more conveniently, loaded from file. The simulator uses the H6X file format, which is a simple, but surprisingly versatile way of representing 6502 code (essentially an ASCII representation of addresses followed by bytes).

I have extended my 65xx cross-assembler (available for Windows, Linux, and MacOS) to support this H6X file format, so that its output can be directly fed into Soft6502.

Monday, October 24, 2011

Chess for Android 3.0.2

I just released version 3.0.2 of Chess for Android, available at the Android market and as direct download. This release enhances XBoard/WinBoard support (infinite analysis, resign feature, older idioms used by various engines).

Saturday, October 22, 2011

Qualification Tournament Completed

I completed a qualification tournament from both sides of the first Nunn position at one-second per move on a Nexus One (1GHz Snapdragon). Where applicable, UCI engines were given an 8MB hash table and 1MB endgame tablebases cache (the complete 3- and 4-piece Nalimov, Gaviota, Scorpio, and Robbobases endgame tablebases reside on SD card). XBoard engines play at their default settings. Since the Nexus One is a single-core device, "pondering" was disabled

The qualification results are used to split the engines into separate groups. Engines in each group will play each other at longer time controls, starting with the lowest group. The number one in each group will promote to the next group.

The cross-table and all games can be downloaded from the tournament page.

Thursday, October 20, 2011

More Engines

I made various improvements in the WinBoard/XBoard implemention in Chess for Android and are now able to successfully import and play with the following XBoard engines (I also tested the corrected UCI sungorus engine).

Crafty 23.4                  Robert Hyatt
scorpio 2.7                  Daniel Shawul
sloppy 0.22                  Ilari Pihlajisto
tscp1.81                     Tom Kerrigan
sungoros-14-ja               Pablo Vazquez


Below, I posted the cross-table of a quick test tournament from both sides of just the first position of the Nunn opening suite.
                     1  2  3  4  5  6  
1 scorpio            ** 01 11 11 11 11   9.0/10
2 crafty             10 ** ½1 1½ 11 11   8.0/10
3 sloppy             00 ½0 ** ½1 11 11   6.0/10
4 Sungorus 1.4 JA    00 0½ ½0 ** 11 11   5.0/10
5 tscp181            00 00 00 00 ** 11   2.0/10
6 Chess for Android  00 00 00 00 00 **   0.0/10

Sunday, October 16, 2011

Tournament preparations

I ran tournaments between different versions of the same engine to determine which one would be their representative. Below I show the results of a fast round-robin tournaments using Chess for Android on a Nexus One, Nexus S, and Galaxy Tab with, where applicable, 8MB hash table and 1MB tablebases cache (Nalimov, Gaviota, Scorpio, and Robbobases reside on SD card). Each version played each other version from both sides of the Nunn opening suite.

The number one engine will play in the longer time control tournament (which is not always the latest version; engine authors let me know if you prefer otherwise since some results were pretty close). Also, Pablo Vazquez and Jim Ablett kindly worked together to fix the issue in the sungorus. It now runs correctly and will participate in the tournament.


1   BikJump v2.1P       10.5/20
2   BikJump v1.8         9.5/20


1   Diablo 0.5.1b JA    17.5/20
2   Diablo 0.5.1         2.5/20
                 
1   DoubleCheck 1.3     13.5/20
2   DoubleCheck 1.2      6.5/20


1   gaviota v0.84       47.5/80
2   gaviota v0.83.0.3   45.0/80
3   gaviota v0.83       41.0/80
4   gaviota v0.80.0.107 37.5/80
5   gaviota v0.82-beta2 29.0/80


1   GNU Chess 5.07.153.3b 20.5/40
2   GNU Chess 5.07.170.7b 20.0/40
3   GNU Chess 5.07.173b   19.5/40
                                 
1   IvanHoe-Beta v999947c-rob 10.0/20
2   IvanHoe-Beta v999947c     10.0/20
                           
1   Jazz v5.01 JA       14.0/20
2   Jazz v444 JA         6.0/20


1   Komodo32 2AB       60.0/100
2   Komodo32 2.03 AB   59.0/100
3   Komodo32 2.01 AB   58.5/100
4   Komodo32 2.03 JA   58.0/100
5   Komodo32 3 AB      34.5/100
6   Komodo32 1.3 JA    30.0/100
                 
1   RedQueen 0.9.8 JA  24.5/40
2   RedQueen 0.9.8     19.0/40
3   RedQueen 0.9.5     16.5/40
                         
1   RobboLito 0.085g3l 10.5/20
2   RobboLito 0.085e4l  9.5/20
             
1   Rotor 0.6a         16.0/20
2   Rotor 0.4           4.0/20


1   Stockfish 2.1.1 JA 77.0/120
2   Stockfish 2.1      68.5/120
3   Stockfish 2.1 JA   65.5/120
4   Stockfish 1.8      62.0/120
5   Stockfish 2.0      60.0/120
6   Stockfish 1.9      59.0/120
7   Crab 1.0 beta      28.0/120

Saturday, October 15, 2011

Android tournament with longer time controls

The list of UCI and XBoard engines for Android is getting longer, and I am pondering about a more serious tournament at longer time controls in Chess for Android. As a first step, I tested all available Android binaries. The list is shown below. An "X" indicates that the engine has trouble running in Chess for Android (if you are the engine author and are interested in fixing this, please contact me for details).

Next, I probably do a few quick tournaments to divide the engine in groups by strength, followed by tournaments at longer time control. Please feel free to contact me if you are interested in participating, if you don't know how to compile your engine for Android (ARM), or if you have good ideas about the format of this tournament. I am not really an experienced tournament manager, but merely do this for fun to get an idea of the relative strength of these engines.

apilchess-106-ja           X    U. Lorenz, C. Donninger 
bikjump1.8                      Aart J.C. Bik 
bikjump2.1                      Aart J.C. Bik 
cassandre-026-ja           X    Jean-Francois Romang, et al. 
chess for android               Aart J.C. Bik 
critter-12-arm                  Richard Vida 
cyrano-061-b17-ja          X    Harald Johnsen 
daydreamer-075-ja               Aaron Becker 
diablo-051b-ja                  Marcus Prewarski 
diablo-501-ja                   Marcus Prewarski 
dirty-android              X    Andres Valverde 
doublecheck1.1                  Lucas Braesch 
doublecheck1.2                  Lucas Braesch    
doublecheck1.3.1                Lucas Braesch 
fairymax48q                     H.G. Muller 
garbochess3                     Gary Linscott 
garbochess-3-ja                 Gary Linscott 
gaviota0.80                     Miguel A. Ballicora 
gaviota0.82beta                 Miguel A. Ballicora 
gaviota0.83.0.3                 Miguel A. Ballicora 
gaviota-android-v0.83           Miguel A. Ballicora 
gaviota-android-v0.84           Miguel A. Ballicora 
gnuchess-5.07.153.3b            Michel van den Bergh, et al. 
gnuchess-5.07.170b.5b           Michel van den Bergh, et al. 
gnuchess-5.07.173b-android      Michel van den Bergh, et al. 
greko8.0                        Vladimir Medvedev 
IvanHoe-999947c                 Yakov Petrovich Golyadkin, et al. 
IvanHoe-999947c-robbo           Yakov Petrovich Golyadkin, et al. 
jazz-444-ja                     Evert Glebbeek 
jazz-uci-501-ja                 Evert Glebbeek 
komodo-13-ja                    Don Dailey, Larry Kaufman 
komodo201-ab                    Don Dailey, Larry Kaufman 
komodo203-ab                    Don Dailey, Larry Kaufman 
komodo-203-ja                   Don Dailey, Larry Kaufman 
komodo2-ab                      Don Dailey, Larry Kaufman 
komodo3-ab                      Don Dailey, Larry Kaufman 
pepito-159-ja                   Carlos del Cacho 
redqueen095                     Ben-Hur Carlos Vieira Langoni Jr. 
redqueen098                     Ben-Hur Carlos Vieira Langoni Jr. 
redqueen-098-ja                 Ben-Hur Carlos Vieira Langoni Jr. 
robbolito0085e4l                Yakov Petrovich Golyadkin, et al 
robbolito0085g3l                Yakov Petrovich Golyadkin, et al 
rocinante-101-ja           X    Antonio Torrecillas 
rotor0.6a                       Jan Brouwer 
rotor-04-ja                     Jan Brouwer 
simplex-097-ja                  Antonio Torrecillas 
sissa-20-ja                     Christophe J. Mandin 
stockfish_crab1                 modified by Adam Kleng 
stockfish1.8                    Tord Romstad, Marco Costalba, Joona Kiiski 
stockfish1.9                    Tord Romstad, Marco Costalba, Joona Kiiski 
stockfish2.0                    Tord Romstad, Marco Costalba, Joona Kiiski 
stockfish2.1                    Tord Romstad, Marco Costalba, Joona Kiiski 
stockfish-21-android-ja         Tord Romstad, Marco Costalba, Joona Kiiski 
stockfish-211-android-ja        Tord Romstad, Marco Costalba, Joona Kiiski 
suff-03a-ja                X    Clemens Pruell 
sungorous-14-ja            X    Pablo Vazquez 
toga2                           Thomas Gaksch, Fabien Letouzey 
umax48w                         H.G. Muller 
zct032500                       Zach Wegner 
zeta-dva-0202-ja           X    Srdja Matovic 

Wednesday, October 12, 2011

Chess for Android 3.0.1: XBoard/WinBoard

Version 3.0.1 of Chess for Android is available at the Android market and as direct download. It introduces the first, albeit simple support for the Chess Engine Communication Protocol (XBoard/WinBoard). Many features that are already supported for UCI (e.g. options setup, infinite analysis) as well as some XBoard specific features (e.g. resign) are still missing for this first version. I hope to add these features soon. Nevertheless, it is already possible to run tournaments between engines.

Sunday, October 2, 2011

First inter-protocol tournament on Android!

Chess for Android now contains sufficient functionality to perform the first inter-protocol tournament between the built-in Java engine, the UCI engine BikJump, and the WinBoard/XBoard engine Fairy-Max. Ten random opening book games between these engines at one second per move on a Nexus S ran without problems to completion with the following results.

                    1          2          3          
1 BikJump v2.1P     ********** 111½111111 1111111101 18.5/20
2 Fairymax 4.8Q     000½000000 ********** 1½10½11½01  7.0/20
3 Chess for Android 0000000010 0½01½00½10 **********  4.5/20

Thursday, September 29, 2011

Chess Engine Communication Protocol

I am exploring extending Chess for Android with some rudimentary support for the Chess Engine Communication Protocol (often simply called the XBoard or WinBoard protocol), which will enable importing not just UCI but also XBoard/WinBoard engines.

A very first prototype is functioning. I made an Android binary of the engine FairyMax (written by H.G. Muller, who was also very helpful providing more background), and imported this in Chess for Android. Some screenshots are shown below.


I still have to deal with a lot of details, but it will be fun to support both protocols, and even run tournaments between UCI and XBoard/WinBoard engines.

Tuesday, September 27, 2011

Gaviota v0.84

Miguel A. Ballicora released Gaviota v0.84. I tested the Android version against an earlier release with a quick one-second-per-move tournament on a Nexus S, setting the hash size to 32MB and using the Silver Opening Suite and some Gaviota tablebases on SD (the latest release fixes an issue with tablebase setup on Android). Below are the results. The new version seems much stronger!

1   gaviota v0.84  +66/-17/=17 74.50%   74.5/100
2   gaviota v0.83  +17/-66/=17 25.50%   25.5/100

Wednesday, September 21, 2011

GNU Chess

Michel van den Bergh posted a new release of GNU Chess (5 branch). To test the Android binary, I ran a one-second-per-move, 32MB hash tournament on a Nexus S, using the Silver Opening Suite, with Gaviota tablebases on SD. Below are the results. Although the latest release was mainly for FRC support, it also seems slightly stronger.

GNU Chess               1         2         3 
1 5.07.173b-libgtb-32       *     52.5-47.5 57.0-43.0  109.5/200
2 5.07.170.7b-libgtb-32 47.5-52.5     *     55.5-44.5  103.0/200
3 5.07.153.3b-32        43.0-57.0 44.5-55.5     *       87.5/200

Sunday, September 11, 2011

Remembering 9/11

We just came back from a visit to New York, where we visited ground zero. So tragic to remember what happened there ten years ago, but encouraging to see that America is rebuilding.


Saturday, September 3, 2011

Rebel ELO Test Corrections and Results

Running tournaments on diverse test suites gave me more confidence in the correctness of my FEN and PGN parser. This time Chess for Android found bugs in the "Rebel ELO Test". Positions ELO 30, 121, 170 do not set the castling rights for either black or white properly, even though castling is the first given move (that is, the move the engine is supposed to find when used as a tactical test suite; when used as an opening suite, this move is obviously played right away).

The results of (mis)using the corrected test suite as an opening suite in a fast match between the built-in Java engine and Stockfish 2.1 on a Nexus One is shown below.                   

1 Stockfish 2.1    +421/  -4/=27 96.13%  434.5/452
2 Chess for Android  +4/-421/=27  3.87%   17.5/452

Here is one of the sparse victories of Chess for Android playing white from a very advantageous position. Nevertheless, I am happy that it found the right continuation as 1. Qc8+ (given in the suite) Kg7 2. Qf8+ Kg6 3. Qf7+ Kh6 4. Rf6+ Qxf6 5. Qxf6+ yielding a position that even the much weaker engine could win.


Thursday, September 1, 2011

Max Euwe Suite Corrections

I ran various tournaments using the "Max Euwe suite", from the hand of the famous grandmaster who inspired many Dutch aspirant chess players, including myself. During the first tournament, Chess for Android detected bugs in positions 146 and 148, where the castling rights are not set properly for white, even though white actually castles in the first given move (that is, the move the engine is supposed to find when used as a tactical test suite).

For example, in position 146, the embedded FEN string in the PGN file:

r1b1kb1r/p3q1pp/2pp1p2/4n3/3N4/8/PPP1BPPP/R1BQK2R w kq - 0 1

should really be:

r1b1kb1r/p3q1pp/2pp1p2/4n3/3N4/8/PPP1BPPP/R1BQK2R w KQkq - 0 1

Wednesday, August 31, 2011

Beat the Masters

As a fun way to test the new opening suite feature, I conducted a fast match between the very strong Komodo 3.0 chess engine and the built-in Java engine of Chess for Android using the "beat the masters suite" (a version with 251 test positions). Komodo is clearly much too strong for my own humble engine and the suite was meant to test the quality of moves found by chess engines, not as an opening suite. Nevertheless, since some positions give one side a very strong advantage, it seemed like a fun way to test the new opening suite feature.

The outcome was as expected: Komodo won most games and only a few draws occurred. However, Chess for Android had one victory.

1 Komodo32 3 AB    +491/  -1/=10 98.80%  496.0/502
2 Chess for Android  +1/-491/=10  1.20%    6.0/502

In the position below, with black to move and only half a second thinking time per move, Komodo played 1... Rxe2, which yields a lost position (black should have played 1...hxg6).


Chess for Android did not find the shortest way to win, but finished the game as follows: 2. gxh7+ Kg7 3. Bh4+ Kh6 4. Nxf7+ Kh5 5. Bxe2+ Qf3 6. Bxf3+ Ng4 7.Bxe7 Bxf3 8. Rxf3 Kg6 9. h8=Q Rxh8 10. Nxh8+ Kf5 11. Bc5 Ne3 12. Bxd4 Nxg2 13.Kxg2 b4 14. Rb1 Ke4 15. Rxb4 Kd5 16. Nf7 Ke4 17. Bg7+ Kf5 18. Rg3 e5 19. fxe5 Ke6 20. Ng5+ Kd5 21. e6 Kd6 22. Bf8+ Ke5 23. e7 Kd5 24. Rb5+ Kd4 25. e8=Q Kc4 26. Qe2+ Kd4 27. Bg7#

Tuesday, August 30, 2011

Chess for Android 3.0

Chess for Android v3.0 is available from the Android market or as direct download. New features include:
  • The possibility to play engine tournaments from both sides of any external book in PGN format, as explained in this blog posting.
  • Layout and formatting improvements in the UCI analysis output window. Light grey board color.
  • Relaxed FEN parsing to accept non-standard, but frequently occurring omissions in the FEN string.
  • Ability to view simple cross-table while tournament is in progress (>> button).

Saturday, August 27, 2011

Silver Opening Suite

Using the new upcoming opening suite feature in Chess for Android, I conducted a tournament between the most recent Android versions of Stockfish, Komodo, and Critter (32MB cache, 1s./move) from both sides of the "Silver Opening Suite" (300 games total). A screenshot of the tournament in progress is shown below (also note that the upcoming version improved the layout and display of the engine analysis window).


When the tournament is over, a summary of the results is shown.


The results organized in a cross-table are shown below. Stockfish is the clear winner. Komodo now comes in third (probably because v3 honors fixed time per move better than previous versions).
                 1          2          3
1 Stockfish 2.1  **         60.0-40.0  76.5-23.5  136.5/200
2 Critter 1.2    40.0-60.0  **         72.5-27.5  112.5/200
3 Komodo32 3 AB  23.5-76.5  27.5-72.5  **         51.0/200

Thursday, August 25, 2011

Opening Test Suites

To eliminate the effect of opening books, it is a common practice to test the strength of chess engines by letting them play from both sides of a pre-selected set of opening positions. Earlier versions of Chess for Android already supported the option to play engine tournaments from both sides of 50 positions of the built-in book (yielding 100 games total between each engine pair). The upcoming 3.0 release will add the option to play both sides of any external book in PGN format, such as the famous "Nunn Positions" (published by GM John Nunn) or the "Silver Opening Suite" (published by Albert Silver).

To use this feature, long press the notation window, and select "UCI Engine Support", followed by "Engine Tournament". Then select the "all games from both sides of external book".


This will open a file navigation window, starting at the root of the SD card. Navigate into the directory and file of the desired opening suite. This will prompt a confirmation window with the number of opening lines in the suite.


Finally, invite a number of UCI engines to the tournament, and the tournament will start automatically, where each engine will play each other engine from both sides of the given opening suite.


Monday, August 15, 2011

Komodo 3 for Android

Don Dailey and Larry Kaufman's Komodo version 3 is now available for Android (ARMv5TE) at UCI engines for Android. A quick one second per move tournament ended in favor of the previous version 2.03 (possibly because Don fixed the movetime command to honor the given time exactly; previous versions would sometimes use more time, which may have skewed estimates of their strength a bit).

1   Komodo32 2.03 AB  +50/-18/=32 66.00%   66.0/100
2   Komodo32 3 AB     +18/-50/=32 34.00%   34.0/100

Thursday, August 11, 2011

Chess for Android 2.9.4

I just released version 2.9.4 for Chess for Android, available from the Android market or as direct download. This version introduces the much requested "infinite analysis" mode for an imported UCI engine, in which the engine reports its analysis of positions without actually making moves. To enable this mode, change the level to free play, as shown in the following screenshots.




If an UCI engine is imported, its analysis of the current position will appear below the board. The user can freely play through previous games or make new moves. When at the end of a game still in progress, pressing the ">" button will play the best move found by the UCI engine. Changing the level, or unloading the UCI engine will exit the "infinite analysis" mode.

Although the feature may seem simple, it was actually far from straightforward to implement, also because not all UCI engines behave the same for the "go infinite" command. Please let me know if you encounter problems or if you have suggestions.

Tuesday, August 2, 2011

DoubleCheck 1.1 Results

Lucas added the movetime command to DoubleCheck (the stop command is still lacking) which enabled conducting a few quick 1-second per move matches to determine the strength of the engine.

DoubleCheck 1.1
- Komodo32 2.03 AB  +0/-10/=0  0.00%
- GreKo 8.0         +0/-10/=0  0.00%
- gaviota v0.83.0.3 +0/-9/=1   5.00%
- RedQueen 0.9.8    +0/-9/=1   5.00%
- Jazz v444 JA      +1/-7/=2  20.00%
- BikJump v2.1P     +2/-4/=4  40.00%
- ZCT-0.3.2500      +4/-5/=1  45.00%
- Chess for Android +6/-0/=4  80.00%

DoubleCheck 1.1 for Android

I compiled Lucas Braesch's DoubleCheck 1.1 for Android (ARM) and put it on the UCI Engines for Android website. The engine works reasonably well in Chess for Android. However, because the UCI command movetime is not implemented yet, it plays almost instantaneously, making matches to determine its strength less useful at the moment.


Saturday, July 16, 2011

GarboChess 3 for Andoid

Jim Ablett kindly ported Gary Linscott's engine GarboChess 3 to various platforms, including Android. I also made a dynamically linked binary available at the UCI engines for Android website. As can be seen in the screenshot below, the UCI engines does not provide many options, but it plays strong.


Below the results of several quick matches on a Nexus S using random book opening play, one second-per-move, 32MB hash, and 8MB tablebases cache with the 3- and 4-piece Nalimov, Gaviota, Scorpio, Robbobases endgames on SD card.

GarboChess3
 - Stockfish 2.1         +0/-10/=0    0.00%
 - Komodo32 2.03 AB      +0/-10/=0    0.00%
 - IvanHoe-Beta v999947c +0/-10/=0    0.00%
 - Pepito v1.59          +3/-4/=3    45.00%
 - GarboChess3 JA        +2/-3/=5    45.00%
 - GNU Chess 5.07.170.7b +7/-3/=0    70.00%
 - Gaviota v0.83.0.3     +7/-3/=0    70.00%
 - Rotor 0.6a            +6/-2/=2    70.00%
 - RedQueen 0.9.8        +9/-1/=0    90.00%
 - BikJump v2.1P         +9/-0/=1    95.00%

Tuesday, June 28, 2011

New Top Android Engine Tournament

To test recently released versions of Android engines, I conducted a new tournament between the top UCI engines on a Nexus One using a random book opening play, one second-per-move, 32MB hash, and 8MB tablebases cache with the 3- and 4-piece Robbobases endgames on SD card. Congrats again to the Stockfish team!

                       1         2         3         4         5
1 Stockfish 2.1            *     54.0-46.0 60.5-39.5 64.5-35.5 65.5-34.5 244.5/400
2 Komodo32 2.03 AB     46.0-54.0     *     46.5-53.5 52.5-47.5 66.0-34.0 211.0/400
3 Critter 1.2 32-bit   39.5-60.5 53.5-46.5     *     51.5-48.5 58.0-42.0 202.5/400
4 RobboLito 0.085e4l   35.5-64.5 47.5-52.5 48.5-51.5     *     62.0-38.0 193.5/400
5 IvanHoe-Beta 999947c 34.5-65.5 34.0-66.0 42.0-58.0 38.0-62.0     *     148.5/400

Saturday, June 25, 2011

Critter 1.2 for Android

Richard Vida released Critter 1.2 for various platforms, including ARM-based Android devices. Below you can see some screenshots of this UCI engine running in Chess for Android.



To get a rough idea of the strength of this new engine, I conducted a few quick matches with other engines on a Nexus One using a random book opening play, one second-per-move, 32MB hash, and 8MB tablebases cache with the 3- and 4-piece Nalimov, Gaviota, Scorpio, Robbobases endgames on SD card. More games upcoming.

Critter 1.2
 - RobboLito 0.085e4l     3.5 - 6.5  +2/-5/=3   35.00%
 - Komodo32 2.03 AB       5.0 - 5.0  +4/-4/=2   50.00%
 - Stockfish 2.1          6.0 - 4.0  +4/-2/=4   60.00%
 - GNU Chess 5.07.170.7b  7.0 - 3.0  +7/-3/=0   70.00%
 - Gaviota v0.83          8.0 - 2.0  +7/-1/=2   80.00%
 - Rotor 0.6a             9.5 - 0.5  +9/-0/=1   95.00%
 - Toga II 1.4.1SE        9.5 - 0.5  +9/-0/=1   95.00%
 - RedQueen 0.9.8        10.0 - 0.0 +10/-0/=0  100.00%
 - BikJump v2.1P         10.0 - 0.0 +10/-0/=0  100.00%
 - Chess for Android     10.0 - 0.0 +10/-0/=0  100.00%

Tuesday, June 14, 2011

Komodo 2.03 available

The new Komodo has been heavily tested by many chess fans, and Larry and Don had to make a few bug fixes. You can find an Android binary of the latest version 2.03 at the usual place.


Quick tournament on a Nexus S:

1   Komodo32 2.03 AB  +34/-23/=43 55.50%   55.5/100
2   Komodo32 2.01 AB  +23/-34/=43 44.50%   44.5/100

Friday, June 10, 2011

More Komodo2 for Android

Another tournament between the top engines on a Nexus One, 32MB hash, one-second per move.
                     1           2           3                                   
1 Stockfish 2.0      ***         48.5 - 51.5 59.0 - 41.0 107.5/200
2 RobboLito 0.085e4l 51.5 - 48.5 **          50.0 - 50.0 101.5/200
3 Komodo32 2.01 AB   41.0 - 59.0 50.0 - 50.0 **           91.0/200

Saturday, June 4, 2011

Komodo2 for Android

Don Dailey and Larry Kaufman released version 2 of their chess engine Komodo. You can find an ARM-based Android binary on UCI engines for Android. The new release seems stronger than the already impressive previous version. A quick one second-per-move, 32MB hash tournament on a Nexus S against Komodo1.3 resulted in 73 vs. 27 in favor of Komodo2.

1   Komodo32 2AB     +58/-12/=30 73.00%   73.0/100
2   Komodo32 1.3 JA  +12/-58/=30 27.00%   27.0/100

The new Komodo scored 48.5% against Stockfish 2.1 under the same settings.

1   Stockfish 2.1  +38/-35/=27 51.50%   51.5/100
2   Komodo32 2AB   +35/-38/=27 48.50%   48.5/100

Monday, May 23, 2011

Top Android UCI Engine Tournament

After this previous tournament, I conducted a tournament between various versions of the top engines under the same settings with more games. The results are shown below. Congrats to the stockfish team for winning this tournament!
                          
1 Stockfish 2.0           323.5/500
2 Stockfish 2.1           316.5/500
3 RobboLito 0.085e4l      250.5/500
4 RobboLito 0.085g3l      240.0/500
5 IvanHoe-Beta v999947c   196.5/500
6 Komodo32 1.3 JA         173.0/500

Thursday, May 19, 2011

Perft for Checkers for Depth 24

I computed the perft number for 8x8 checkers for depth 24 with the same distributed implementation I used earlier for depths up to 23. Below you see the perft breakdown per move (called "divide") from the initial position for depths 22, 23, and 24.

move         divide(22)       divide(23)        divide(24)
----------------------------------------------------------
12-16:  243598269855110 1123463594881857  5192042148594780
11-16:  246743868125768 1131373985922218  5248615918291379
11-15:  209016678583301  984253557821317  4602138522979438
10-15:  215412869777867 1000606302770349  4643700995955222
10-14:  184865466345796  856779998157523  3988937724259353
 9-14:  213736468971938 1003310451936358  4712325943133747
 9-13:  288999100078322 1337748969176591  6263620622082081
----------------------------------------------------------
       1602372721738102 7437536860666213 34651381875296000