Posts

Test Runs for the 2013 Tournament

I have completed the initial tests for the 2013 tournament between engines for Android (compiled for ARMv5TE) using Chess for Android on a Nexus 7 (1.3 GHz quad-core Cortex-A9). The qualified and disqualified engines are shown below.  Next to follow is a qualification tournament which will place the top 25 engines in six groups, like I did in the 2011 tournament . However, I will wait a few days to see whether engine authors want to appeal the disqualification with an improved binary. Updates of qualified engines are of course also welcome. Qualified: AdroitChess 0.3      Arasan 14.0.1 betsabe-II-130-android-ja BikJump v2.1P (32-bit) cheng3 1.07 JA crafty-235-android-ja Critter 1.6a 32-bit danasah-488-ja Daydreamer 1.75 JA Diablo 0.5.1       DiscoCheck 4.0.1   exchess-054-beta-ja fairymax48l-ab    GarboChess 3 (32-bit) Gaviota v0.86     gk-090-ja    GNU Chess 6.0.2 greko98-ab    Jazz 6.40 JA kmtchess-121-ja  myrddin0.85j      natwarlal-014-ja      olithink-531-ja Pepito v1.

2013 Android Engine Tournament

My 2013 tournament between UCI and XBoard engines for Android (ARMv5TE-based) using Chess for Android is about to start with the test and qualifying rounds. I have setup a tournament website with past tournaments (one old, one new so far). The new tournament results will be posted in this blog and at the 2013 tournament site . Games will be played on a Nexus 7 (1.3 GHz quad-core Cortex-A9). If supported, engines will be allowed to use multi-threading. Let the games begin! If you don't see your favourite engine in the test tournaments, feel free to drop me a request.

Chess for Androidv 4.1.5

Image
I just released version 4.1.5 of Chess for Android as direct download and at Google Play with enhancements for, what I like to call, the chess ecosystem on Android. First, as explained in my prior blog posting, Chess for Android now understands a few more direct sharing requests from other applications so that, for example, a game can be shared directly from Gerhard Kalab's Chess PGN viewer into Chess for Android, without going through tedious copy-and-paste operations. Conversely, Chess for Android now supports the "Share Game" feature as well to do the opposite operation. As illustrated below (long-press notation window to open the extended menu), exporting a game from Chess for Android to the Chess PGN Viewer now only takes a few simple clicks!  

More on application/x-chess-pgn

Image
In January 2012, I posted a blog entry on registering Chess for Android as viewer for the application/x-chess-pgn MIME type . Under this approach, when an Android application requests viewing a game in PGN format, Chess for Android will open that game. If several programs register as viewer, the user can select what program should be used. Recently, I got an email from Gerhard Kalab, author of Scid on the Go and Chess PGN Viewer , with a request to support the application/x-chess-pgn MIME type for data sent through an Intent.EXTRA_TEXT as well. After adding this feature, Gerhard's viewer can now share a game with Chess for Android, as shown below. For example, to share a game from the Chess PGN Viewer, press menu, select "Share", and then "Share game". This lists possible target programs, including Chess for Android. Picking the latter opens Chess for Android with the currently viewed game. Nice to see the Android chess ecosystem develop more and more!

Chess for Android v4.1

Image
I just released version 4.1 of Chess for Android, available at Google Play or as direct download (including a version with network/SMS permissions). The new features include: Ability to send SMS messages (PGN, FEN, UNICODE, engine analysis) Ability to enable/disable built-in book (useful when imported engine book should be preferred) Larger engine analysis font Further localization and internationalization To send an SMS, long-press the notation window, and select "Send SMS", which pops up the window shown below. Simply fill out the phone number (which will be remembered for next time), and select between PGN, FEN, or UNICODE format (or engine analysis of an imported engine). Pressing the "Send SMS"  button will send the text message. The concise FEN format will be useful for correspondence players, since it can be directly copied and pasted by the other player (I have not implemented an SMS listener yet). The UNICODE format sends the current chess

Commodore 64 still runs!

Image
Like many others, I learned Basic and 6510 machine code on the Commodore 64, a present from my dear grandfather and parents. Although nowadays one can relive the good old times with emulators, such as CCS64 or Vice, and a cross-assembler, like my own win2c64 , nothing beats the real deal! Today I tried to get my old Commodore 64 and 1541 disk drive, bought in Europa, running again. A few 110-220V adapters, a S-Video cable, and some PAL/NTSC settings later, I have my old friend running again. What made me extra happy is that the 1541 could still read the 5¼" floppy disks with my old programs that I wrote back in the eighties, such as the music editor on the screen shot. I am going to try to copy those onto my hard disk, so others can run these in an emulator.

BikDam: international checkers

Inspired by Rein Halbersma's kind encouragement, I have started some work on an international checkers engine. After all, " dammen " is the variant I grew up with in The Netherlands. Since I have implemented BikJump for chess, BikMove for American checkers, I decided to name this upcoming engine BikDam . I already had some fun hacking a, hopefully, efficient move generator. The rules for captures were very interesting to implement. Here are the perft number from the start position of 10x10 international checkers (a.k.a. dammen). In contrast with my American checkers move generator, here duplicate captures are removed. perft(1) = 9 in 0 ms. perft(2) = 81 in 0 ms. perft(3) = 658 in 0 ms. perft(4) = 4265 in 0 ms. perft(5) = 27117 in 1 ms. 27117.0 KN/s perft(6) = 167140 in 3 ms. 55713.3 KN/s perft(7) = 1049442 in 22 ms. 47701.9 KN/s perft(8) = 6483961 in 78 ms. 83127.7 KN/s perft(9) = 41022423 in 434 ms. 94521.7 KN/s perft(10) = 258895763 in 2599 ms. 99613.6 KN/s perf

Perft for Checkers for Depth 28

My quest for deeper perft numbers for 8x8 checkers using has reached depth 28. Below you see the perft(28) breakdown per move, called "divide". As stated before, the numbers were computed on a cluster of machines, optimized with a "hard collision"-free transposition table as well as bulk counting. The move generator does not eliminate duplicate captures. At this point, the limits of 64-bit unsigned integers have been reached. Although there are obvious ways around these restrictions, this seems a very good time to give this (by now probably insane) project a rest. I have updated this OEIS entry up to depth 26, and may add the higher depths also when I am a bit more comfortable with these most recent results. divide(28) 12-16 = 2400708339858199191 11-16 = 2431386196712611878 11-15 = 2231787529331259810 10-15 = 2186446356811761737 10-14 = 1872427919495823777  9-14 = 2285893686261887442  9-13 = 2969067990365356900  -------------------------- perft(28) =

Perft for Checkers for Depth 27

With the new improvements in place, it would almost be a waste not to go deeper with my perft for checkers computation . Therefore, I computed perft(27) from the initial position of 8x8 checkers. Below you see the perft breakdown per move, called "divide". As stated before, these numbers were computed on a cluster of machines, further optimized with a "hard collision"-free transposition table as well as bulk counting. The move generator does not eliminate duplicate captures.   move                 divide(27) ------------------------------ -  12-16    =  516399283859880203  11-16    =  519502096014967805  11-15    =  476666239516455180  10-15    =  468705060101275533  10-14    =  400425747281243848   9-14    =  486493422418651579    9-13    =  631652334435528457   ------------------------------- perft(27) = 3499844183628002605 The implementation is "fault tolerant" against machine failures. Nevertheless, since I saw a few of these recove

Perft for Checkers for Depth 26

I made some improvements to my distributed implementation for computing perft and divide numbers for 8x8 checkers , and now computed depth 26 from the initial position, shown below. As reported earlier, the numbers were computed on a cluster of machines, further optimized with a "hard collision"-free transposition table as well as bulk counting. The move generator does not eliminate duplicate captures (viz. the situation where a king can capture the same pieces in different directions; a situation that starts to occur at depth 12 and up). move              divide(26) ---------------------------- 12-16:    111362678435231752 11-16:    112590257768420515 11-15:    101352649993886926 10-15:    100552646996749293 10-14:     86312674861234785  9-14:    103811787278058952  9-13:    136189763354484914 ---------------------------- perft(26) 752172458688067137    

Perft for Checkers for Depth 25

Continuing my quest for deeper and deeper perft numbers for 8x8 checkers , I now computed depth 25 with the same distributed implementation I used earlier for depths up to 24. Below you see the perft breakdown per move (called "divide") from the initial position for depths 23, 24 and 25 (my depth 23 and 24 numbers were recently kindly confirmed by Murray Cash at the World Draughts Forum ). move          divide(23)        divide(24)          divide(25) -------------------------------------------------------------- 12-16:  1123463594881857  5192042148594780   24019313789608561 11-16:  1131373985922218  5248615918291379   24153215782987793 11-15:   984253557821317  4602138522979438   21659601983574539 10-15:  1000606302770349  4643700995955222   21609957136212495 10-14:   856779998157523  3988937724259353   18496978526984076  9-14:  1003310451936358  4712325943133747   22101040287502927  9-13:  1337748969176591  6263620622082081   29027372375205409 --------------------------

Further Localication

Image
I just released version 4.0.5 of Chess for Android, available through Google Play or as direct download . This release mainly extends localization to more languages, but it also provides a new feature: copying the engine analysis to the clipboard. The following languages are now supported: Afrikaans (af) Chinese (zh) Czech (cs) Dutch (nl) English (en) French (fr) German (de) Hebrew (iw) Hindi (hi)        [coming soon] Icelandic (is)   [coming soon] Italian (it) Polish (pl) Portuguese (pt-br) Russian (ru) Spanish (es) Swedish (sv) Turkish (tr) Many thanks to my translation team: Vinícius Angiolucci, Lucas Braesch, A.N. Bürümcekci, Panna Chowdhury, Anton Hansson, Arnar Mar Hrafnkelsson, Michal Kaczmarek, Dara Koper, Morgan Lombard, Krizia Lopez, Dennis Prochko, Martin Sedlák, Philip Stutz, Haran Talmon, Ted Wong, and last but certainly not least C.R. Zamana!

Localization of Chess for Android

Image
Version 4.0 of Chess for Android, available at either Google Play or as direct download , focuses on localization and internationalization. All user facing text (except the chess notation and engine messages) has been translated into the following languages. English (the default) Dutch (translated myself) German (many thanks to Philip Stutz) Hebrew (many thanks to Haran Talmon) Polish (many thanks to Michal Kaczmarek) Spanish (many thanks to Krizia Lopez) Swedish (many thanks to Anton Hansson) If you spot any mistakes, if you would like to see support for other languages or, even better, if you would like to help with further localization, please drop me a private note.

Scrolling utility for the micro-KIM

Image
I had been working on some general utilities for the micro-KIM , and used some spare time during the long weekend to finish a scrolling putchar utility that can output letters and digits to the 7-segment display in a scrolling fashion (some letters needed more improvisation than others, but my daughter Karina helped me designing all the letters and converting them to hex). Here is a demo.

DeepBrutePos for Android

Folkert van Heusen is developing a chess engine, called DeepBrutePos , and he also wrote a version for Android. The engine is written in Java, and he used the Android SDK to develop a version that acts as a chess server, so that it can be imported as network socket in Chess for Android (a rather unusual, but nifty use of that feature). I conducted a quick test with one of the first versions. Below the results of a one-second-per move tournament from both sides of all Nunn opening lines on a Nexus One. I was hoping for better results for Folkert, but hopefully he will release a strong version soon. Good luck!                        1        2          3         4         5        6                    1 BikJump v2.1P        *     17.5- 2.5 20.0- 0.0 20.0- 0.0 20.0-0.0 20.0-0.0 97.5/100 2 fairymax48q       2.5-17.5     *     10.0-10.0 12.5-7.5  18.5-1.5 20.0-0.0 63.5/100 3 umax48w           0.0-20.0 10.0-10.0     *     12.0- 8.0 20.0-0.0 20.0-0.0 62.0/100 4 Chess for Android 0.0-