ShashChess

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

Joerg Oster
Posts: 978
Joined: Fri Mar 10, 2006 4:29 pm
Location: Germany
Full name: Jörg Oster

Re: ShashChess

Post by Joerg Oster »

criko wrote: Thu Jul 24, 2025 5:19 pm
amchess wrote: Thu Jul 24, 2025 1:04 pm I fixed the makeFile to also work with mingw 15.1.0, the latest stable one.
With MacOS, try with the laster makeFile i pushed:
make clean
make -j profile-build ARCH=apple-silicon COMP=clang LTO=yes
Same prob on Mac :-(

All other engines e.g. Brainlearn, Stockfish, coechess and so on can be compiled here on Mac without any problems / errors or warnings.
In the file engine.cpp edit the function search_clear() to this:

Code: Select all

void Engine::search_clear() {
    wait_for_search_finished();

    MCTS.clear();  //mcts
    tt.clear(threads);
    threads.clear();

    // @TODO wont work with multiple instances
    Tablebases::init(options["SyzygyPath"]);  // Free mapped files
}
Try compiling again.
Jörg Oster
criko
Posts: 153
Joined: Wed Feb 28, 2018 2:50 pm

Re: ShashChess

Post by criko »

Joerg Oster wrote: Thu Jul 24, 2025 11:59 pm
criko wrote: Thu Jul 24, 2025 5:19 pm
amchess wrote: Thu Jul 24, 2025 1:04 pm I fixed the makeFile to also work with mingw 15.1.0, the latest stable one.
With MacOS, try with the laster makeFile i pushed:
make clean
make -j profile-build ARCH=apple-silicon COMP=clang LTO=yes
Same prob on Mac :-(

All other engines e.g. Brainlearn, Stockfish, coechess and so on can be compiled here on Mac without any problems / errors or warnings.
In the file engine.cpp edit the function search_clear() to this:

Code: Select all

void Engine::search_clear() {
    wait_for_search_finished();

    MCTS.clear();  //mcts
    tt.clear(threads);
    threads.clear();

    // @TODO wont work with multiple instances
    Tablebases::init(options["SyzygyPath"]);  // Free mapped files
}
Try compiling again.
Thank you very much!!
Now it works here!!
amchess
Posts: 364
Joined: Tue Dec 05, 2017 2:42 pm

Re: ShashChess

Post by amchess »

I built with the 14.2.0, but with the fixed makeFile and an update to the latest 15.1.0 gcc version (the latest stable version also on linux), it works perfectly on windows and also on linux:
msys2 and mingw.
No need to eliminate the part
//for wdl use begin
if (!WDLModel::is_initialized())
{
WDLModel::init();
}
//for wdl use end
Joerg Oster
Posts: 978
Joined: Fri Mar 10, 2006 4:29 pm
Location: Germany
Full name: Jörg Oster

Re: ShashChess

Post by Joerg Oster »

amchess wrote: Fri Jul 25, 2025 1:34 pm I built with the 14.2.0, but with the fixed makeFile and an update to the latest 15.1.0 gcc version (the latest stable version also on linux), it works perfectly on windows and also on linux:
msys2 and mingw.
No need to eliminate the part
//for wdl use begin
if (!WDLModel::is_initialized())
{
WDLModel::init();
}
//for wdl use end
To me it looks sufficient to compute the WDL array once at startup.
No need to recompute it every time a new game is started.
YMMV of course.

Edit: It also works around a warning I got with gcc/g++ 12.2.0
Jörg Oster
amchess
Posts: 364
Joined: Tue Dec 05, 2017 2:42 pm

Re: ShashChess

Post by amchess »

Anyway, the proposed modif is correct: the WDLModel is also initialized in the main method. So, it's unnecessary in search_clear.
Done.
Hai
Posts: 693
Joined: Sun Aug 04, 2013 1:19 pm

Re: ShashChess

Post by Hai »

criko wrote: Thu Jul 24, 2025 10:52 am I will not create a github account to help you with your buggy engines.

Thank you.

btw. compiling on windows is buggy too.

But this is normal with every new release from you.
MacOS version:
https://github.com/amchess/ShashChess/issues/70
https://limewire.com/d/arUvC#GRRJjnM8LD
peter
Posts: 3407
Joined: Sat Feb 16, 2008 7:38 am
Full name: Peter Martan

Re: ShashChess

Post by peter »

amchess wrote: Wed Jul 23, 2025 5:38 pm ShashChess 39
Thanks for the new version!
With this one I'm for the first time able to show statistically relevant positive difference in using MCTS- mode, at least for a certain suite of positions with a certain setting and hardware- TC. With the suite of 256 positions, I already pasted now and then, at Talkchess latest here

viewtopic.php?p=980708#p980708

, which is on github now too

https://github.com/amchess/ShashChess/wiki/Battery-2025

, I had 2 more runs with 6 threads (5 concurrencies) of the 16x3,5GHz- CPU, MultiPV=4, 30"/pos., compared MCTS true with 1 thread out of the 6 to MCTS false:

Code: Select all

ShashChess 39	6t-1MCTS-MuPV4	ShashChess 39	6t-MuPV4
HTC114,1	00:00:00	HTC114,1	00:00:00
HTC114,2	00:00:00	HTC114,2	00:00:00
HTC114,3	00:00:06	HTC114,3	00:00:01
HTC114,4	00:00:30	HTC114,4	00:00:30
HTC114,5	00:00:04	HTC114,5	00:00:20
HTC114,6	00:00:00	HTC114,6	00:00:00
HTC114,7	00:00:01	HTC114,7	00:00:03
HTC114,8	00:00:03	HTC114,8	00:00:01
HTC114,9	00:00:00	HTC114,9	00:00:24
HTC114,1	00:00:00	HTC114,1	00:00:00
HTC114,1	00:00:07	HTC114,1	00:00:16
HTC114,1	00:00:30	HTC114,1	00:00:30
HTC114,1	00:00:30	HTC114,1	00:00:30
HTC114,1	00:00:03	HTC114,1	00:00:03
HTC114,1	00:00:28	HTC114,1	00:00:25
HTC114,1	00:00:00	HTC114,1	00:00:00
HTC114,1	00:00:00	HTC114,1	00:00:00
HTC114,1	00:00:04	HTC114,1	00:00:03
HTC114,1	00:00:30	HTC114,1	00:00:30
HTC114,2	00:00:00	HTC114,2	00:00:00
HTC114,2	00:00:27	HTC114,2	00:00:14
HTC114,2	00:00:03	HTC114,2	00:00:04
HTC114,2	00:00:01	HTC114,2	00:00:03
HTC114,2	00:00:00	HTC114,2	00:00:00
HTC114,2	00:00:00	HTC114,2	00:00:00
HTC114,2	00:00:03	HTC114,2	00:00:01
HTC114,2	00:00:01	HTC114,2	00:00:30
HTC114,2	00:00:02	HTC114,2	00:00:07
HTC114,2	00:00:30	HTC114,2	00:00:30
HTC114,3	00:00:26	HTC114,3	00:00:30
HTC114,3	00:00:00	HTC114,3	00:00:01
HTC114,3	00:00:00	HTC114,3	00:00:00
HTC114,3	00:00:00	HTC114,3	00:00:01
HTC114,3	00:00:00	HTC114,3	00:00:00
HTC114,3	00:00:01	HTC114,3	00:00:00
HTC114,3	00:00:00	HTC114,3	00:00:00
HTC114,3	00:00:30	HTC114,3	00:00:30
HTC114,3	00:00:30	HTC114,3	00:00:30
HTC114,3	00:00:09	HTC114,3	00:00:10
HTC114,4	00:00:00	HTC114,4	00:00:00
HTC114,4	00:00:30	HTC114,4	00:00:30
HTC114,4	00:00:01	HTC114,4	00:00:01
HTC114,4	00:00:03	HTC114,4	00:00:02
HTC114,4	00:00:26	HTC114,4	00:00:09
HTC114,4	00:00:30	HTC114,4	00:00:30
HTC114,4	00:00:00	HTC114,4	00:00:00
HTC114,4	00:00:00	HTC114,4	00:00:12
HTC114,4	00:00:30	HTC114,4	00:00:30
HTC114,4	00:00:30	HTC114,4	00:00:30
HTC114,5	00:00:30	HTC114,5	00:00:30
HTC114,5	00:00:30	HTC114,5	00:00:30
HTC114,5	00:00:01	HTC114,5	00:00:00
HTC114,5	00:00:00	HTC114,5	00:00:00
HTC114,5	00:00:00	HTC114,5	00:00:00
HTC114,5	00:00:00	HTC114,5	00:00:00
HTC114,5	00:00:00	HTC114,5	00:00:00
HTC114,5	00:00:30	HTC114,5	00:00:30
HTC114,5	00:00:00	HTC114,5	00:00:00
HTC114,5	00:00:30	HTC114,5	00:00:30
HTC114,6	00:00:30	HTC114,6	00:00:30
HTC114,6	00:00:30	HTC114,6	00:00:30
HTC114,6	00:00:00	HTC114,6	00:00:00
HTC114,6	00:00:27	HTC114,6	00:00:30
HTC114,6	00:00:30	HTC114,6	00:00:30
HTC114,6	00:00:28	HTC114,6	00:00:30
HTC114,6	00:00:01	HTC114,6	00:00:00
HTC114,6	00:00:01	HTC114,6	00:00:05
HTC114,6	00:00:00	HTC114,6	00:00:02
HTC114,6	00:00:30	HTC114,6	00:00:30
HTC114,7	00:00:08	HTC114,7	00:00:10
HTC114,7	00:00:30	HTC114,7	00:00:30
HTC114,7	00:00:11	HTC114,7	00:00:19
HTC114,7	00:00:30	HTC114,7	00:00:30
HTC114,7	00:00:02	HTC114,7	00:00:02
HTC114,7	00:00:30	HTC114,7	00:00:25
HTC114,7	00:00:30	HTC114,7	00:00:30
HTC114,7	00:00:00	HTC114,7	00:00:00
HTC114,7	00:00:00	HTC114,7	00:00:00
HTC114,7	00:00:00	HTC114,7	00:00:00
HTC114,8	00:00:01	HTC114,8	00:00:01
HTC114,8	00:00:00	HTC114,8	00:00:00
HTC114,8	00:00:17	HTC114,8	00:00:30
HTC114,8	00:00:00	HTC114,8	00:00:00
HTC114,8	00:00:00	HTC114,8	00:00:00
HTC114,8	00:00:10	HTC114,8	00:00:03
HTC114,8	00:00:00	HTC114,8	00:00:00
HTC114,8	00:00:00	HTC114,8	00:00:11
HTC114,8	00:00:02	HTC114,8	00:00:09
HTC114,8	00:00:00	HTC114,8	00:00:02
HTC114,9	00:00:00	HTC114,9	00:00:00
HTC114,9	00:00:00	HTC114,9	00:00:00
HTC114,9	00:00:00	HTC114,9	00:00:00
HTC114,9	00:00:00	HTC114,9	00:00:01
HTC114,9	00:00:30	HTC114,9	00:00:30
HTC114,9	00:00:06	HTC114,9	00:00:06
HTC114,9	00:00:00	HTC114,9	00:00:00
HTC114,9	00:00:00	HTC114,9	00:00:00
HTC114,9	00:00:00	HTC114,9	00:00:01
HTC114,9	00:00:02	HTC114,9	00:00:01
HTC114,1	00:00:30	HTC114,1	00:00:30
HTC114,1	00:00:30	HTC114,1	00:00:30
HTC114,1	00:00:00	HTC114,1	00:00:00
HTC114,1	00:00:26	HTC114,1	00:00:19
HTC114,1	00:00:00	HTC114,1	00:00:00
HTC114,1	00:00:00	HTC114,1	00:00:00
HTC114,1	00:00:00	HTC114,1	00:00:00
HTC114,1	00:00:00	HTC114,1	00:00:00
HTC114,1	00:00:00	HTC114,1	00:00:01
ENET-2025 002	00:00:06	ENET-2025 002	00:00:11
ENET-2025 015	00:00:00	ENET-2025 015	00:00:00
ENET-2025 021	00:00:00	ENET-2025 021	00:00:00
ENET-2025 022	00:00:02	ENET-2025 022	00:00:02
ENET-2025 037	00:00:00	ENET-2025 037	00:00:00
ENET-2025 043	00:00:06	ENET-2025 043	00:00:00
ENET-2025 045_AlphaZero vs St,4	00:00:00	ENET-2025 045_AlphaZero vs St,4	00:00:01
ENET-2025 046_Ollinegame best,4	00:00:10	ENET-2025 046_Ollinegame best,4	00:00:11
ENET-2025 047_Mittelspiel_Re4,4	00:00:03	ENET-2025 047_Mittelspiel_Re4,4	00:00:04
ENET-2025 048_Onlinegame Stoc,4	00:00:00	ENET-2025 048_Onlinegame Stoc,4	00:00:00
ENET-2025 049_Onlinegame Best,4	00:00:30	ENET-2025 049_Onlinegame Best,4	00:00:30
ENET-2025 050_Onlinegame_Bxf5	00:00:00	ENET-2025 050_Onlinegame_Bxf5	00:00:00
ENET-2025 051_Lc0 vs Stockfis,O	00:00:10	ENET-2025 051_Lc0 vs Stockfis,O	00:00:03
ENET-2025 052_Onlinegame Best,5	00:00:06	ENET-2025 052_Onlinegame Best,5	00:00:30
ENET-2025 053_Onlinegame_g4!,5	00:00:02	ENET-2025 053_Onlinegame_g4!,5	00:00:03
ENET-2025 054_Online Engine g,5	00:00:27	ENET-2025 054_Online Engine g,5	00:00:20
ENET-2025 055_Online engine g,5	00:00:00	ENET-2025 055_Online engine g,5	00:00:01
ENET-2025 056_Dorsz,S	00:00:00	ENET-2025 056_Dorsz,S	00:00:00
ENET-2025 057_Taktik,V	00:00:01	ENET-2025 057_Taktik,V	00:00:02
ENET-2025 059_Turmopfer_Rxf3!,5	00:00:30	ENET-2025 059_Turmopfer_Rxf3!,5	00:00:30
ENET-2025 061_Königsangriff_h,6	00:00:14	ENET-2025 061_Königsangriff_h,6	00:00:29
ENET-2025 068_Mittelspiel_Re8,6	00:00:21	ENET-2025 068_Mittelspiel_Re8,6	00:00:15
ENET-2025 069_Damenausfall_Qh,6	00:00:13	ENET-2025 069_Damenausfall_Qh,6	00:00:30
ENET-2025 070_Königsangriff_Q,7	00:00:00	ENET-2025 070_Königsangriff_Q,7	00:00:00
ENET-2025 071_Angriff_Ra3!,7	00:00:30	ENET-2025 071_Angriff_Ra3!,7	00:00:12
ENET-2025 072_Spieloeffnung_h,7	00:00:00	ENET-2025 072_Spieloeffnung_h,7	00:00:00
ENET-2025 073_Mittelspiel Ent,7	00:00:00	ENET-2025 073_Mittelspiel Ent,7	00:00:03
ENET-2025 074_Mittellspiel_Rf,7	00:00:05	ENET-2025 074_Mittellspiel_Rf,7	00:00:07
ENET-2025 075_Bestmove_Rad1! ,7	00:00:01	ENET-2025 075_Bestmove_Rad1! ,7	00:00:03
ENET-2025 076_Stockfish vs Ko,B	00:00:24	ENET-2025 076_Stockfish vs Ko,B	00:00:05
ENET-2025 077_Entlastung_Nd5,7	00:00:30	ENET-2025 077_Entlastung_Nd5,7	00:00:30
ENET-2025 078_Blockade_b4! On,7	00:00:30	ENET-2025 078_Blockade_b4! On,7	00:00:30
ENET-2025 079_Beste Verteidig,7	00:00:30	ENET-2025 079_Beste Verteidig,7	00:00:30
ENET-2025 080_Mittelspiel_Bb4,8	00:00:21	ENET-2025 080_Mittelspiel_Bb4,8	00:00:10
ENET-2025 081_Taktik_Nxd5! On,8	00:00:08	ENET-2025 081_Taktik_Nxd5! On,8	00:00:06
ENET-2025 082_Mittelspiel_Ba7,8	00:00:22	ENET-2025 082_Mittelspiel_Ba7,8	00:00:27
ENET-2025 083_b4?	00:00:30	ENET-2025 083_b4?	00:00:30
M. Garcia - P. Krug,S	00:00:05	M. Garcia - P. Krug,S	00:00:16
Zepler,E	00:00:30	Zepler,E	00:00:30
Formela,M	00:00:11	Formela,M	00:00:23
Stoofvlees_SF_TCEC 2019,2	00:00:00	Stoofvlees_SF_TCEC 2019,2	00:00:00
Lasker,E	00:00:10	Lasker,E	00:00:09
Los,A	00:00:05	Los,A	00:00:04
PurePower_Exxon_Chessbase onl,2	00:00:01	PurePower_Exxon_Chessbase onl,2	00:00:02
Bauer,R	00:00:00	Bauer,R	00:00:00
Mihai Neghina_Desperation_Whi,3	00:00:00	Mihai Neghina_Desperation_Whi,3	00:00:01
Tauber,H	00:00:30	Tauber,H	00:00:18
Bondarenko+Gorgiev,S	00:00:30	Bondarenko+Gorgiev,S	00:00:30
ACT3,?	00:00:25	ACT3,?	00:00:30
ACT3,?	00:00:30	ACT3,?	00:00:30
ACT3,?	00:00:30	ACT3,?	00:00:30
ACT3,?	00:00:00	ACT3,?	00:00:00
ACT3,?	00:00:30	ACT3,?	00:00:30
ACT3,?	00:00:30	ACT3,?	00:00:30
ACT3,?	00:00:18	ACT3,?	00:00:30
Neghina,M	00:00:25	Neghina,M	00:00:26
Matous,D	00:00:30	Matous,D	00:00:30
Neghina,M	00:00:30	Neghina,M	00:00:16
Sikorsky,H	00:00:30	Sikorsky,H	00:00:30
Krug,P	00:00:30	Krug,P	00:00:30
TCEC,S	00:00:15	TCEC,S	00:00:30
TCEC,S	00:00:30	TCEC,S	00:00:30
Sikorsky,H	00:00:03	Sikorsky,H	00:00:05
Zemljanski,Y	00:00:03	Zemljanski,Y	00:00:02
Study,?	00:00:00	Study,?	00:00:00
Study?,?	00:00:04	Study?,?	00:00:30
Study?,?	00:00:30	Study?,?	00:00:30
Semenikov+,D	00:00:30	Semenikov+,D	00:00:06
Petrov,M	00:00:19	Petrov,M	00:00:13
Study,?	00:00:30	Study,?	00:00:30
Study,?	00:00:29	Study,?	00:00:30
ERET 015_Endspiel D&B vs T&L&,5	00:00:01	ERET 015_Endspiel D&B vs T&L&,5	00:00:03
ERET 032_Zugzwang_Fahrni 1922,5	00:00:30	ERET 032_Zugzwang_Fahrni 1922,5	00:00:30
ERET 037_Zugzwang_Garcia 2000,6	00:00:00	ERET 037_Zugzwang_Garcia 2000,6	00:00:00
ERET 050_Koenigsangriff_Hanse,B	00:00:04	ERET 050_Koenigsangriff_Hanse,B	00:00:10
ERET 093_Endspiel T&S&B vs T&,6	00:00:30	ERET 093_Endspiel T&S&B vs T&,6	00:00:30
Fortress,S	00:00:30	Fortress,S	00:00:30
ACT4,N	00:00:08	ACT4,N	00:00:03
Cyclic,Z	00:00:30	Cyclic,Z	00:00:30
Blass,U	00:00:00	Blass,U	00:00:00
Campioli,M	00:00:00	Campioli,M	00:00:00
Krug,P	00:00:00	Krug,P	00:00:00
KrugP,G	00:00:16	KrugP,G	00:00:12
Kos,V	00:00:30	Kos,V	00:00:30
Sokka,H	00:00:00	Sokka,H	00:00:00
Sehwers,J	00:00:00	Sehwers,J	00:00:01
Zinar,M	00:00:30	Zinar,M	00:00:30
Nestorescu,V	00:00:01	Nestorescu,V	00:00:06
Timman,J	00:00:30	Timman,J	00:00:30
Unknown,A	00:00:00	Unknown,A	00:00:00
Ivanov,V	00:00:00	Ivanov,V	00:00:00
Bernhardt,G	00:00:07	Bernhardt,G	00:00:11
Unknows,A	00:00:07	Unknows,A	00:00:05
Naef,W	00:00:01	Naef,W	00:00:01
#7,?	00:00:30	#7,?	00:00:20
#9,?	00:00:30	#9,?	00:00:30
SilhanJ,Z	00:00:00	SilhanJ,Z	00:00:01
Hiarcs,?	00:00:00	Hiarcs,?	00:00:00
Hiarcs,?	00:00:01	Hiarcs,?	00:00:03
Derived,f	00:00:22	Derived,f	00:00:06
Midgame,?	00:00:02	Midgame,?	00:00:02
TTT2.053_?_TTT2,9	00:00:30	TTT2.053_?_TTT2,9	00:00:30
TTT2.073_?_TTT2,9	00:00:10	TTT2.073_?_TTT2,9	00:00:06
RoxlauM,G	00:00:30	RoxlauM,G	00:00:30
Smyslov,V	00:00:30	Smyslov,V	00:00:30
Smyslov,V	00:00:30	Smyslov,V	00:00:30
JostenG_?_?,9	00:00:00	JostenG_?_?,9	00:00:00
Study,?	00:00:30	Study,?	00:00:30
Wotawa,A	00:00:30	Wotawa,A	00:00:30
Study,?	00:00:03	Study,?	00:00:06
Bethge,F	00:00:02	Bethge,F	00:00:05
Blathy,O	00:00:30	Blathy,O	00:00:30
Cortlever,N	00:00:30	Cortlever,N	00:00:30
Korolkov,V	00:00:30	Korolkov,V	00:00:30
Fortress,?	00:00:30	Fortress,?	00:00:30
Unknown,A	00:00:30	Unknown,A	00:00:30
Kraemer,A	00:00:30	Kraemer,A	00:00:30
Sivkov,N	00:00:30	Sivkov,N	00:00:30
Timman=J_Glarean,N	00:00:03	Timman=J_Glarean,N	00:00:04
Boudy Bueno,J	00:00:18	Boudy Bueno,J	00:00:24
Lc0-dev_Stockfish_ECO MegaMat	00:00:01	Lc0-dev_Stockfish_ECO MegaMat	00:00:01
Bazlo,Y	00:00:30	Bazlo,Y	00:00:30
TCEC,r	00:00:00	TCEC,r	00:00:00
TCEC,r	00:00:30	TCEC,r	00:00:30
Gleichmann,M	00:00:30	Gleichmann,M	00:00:30
Yarmonov,I	00:00:30	Yarmonov,I	00:00:30
Eman_SugaR_Glarean,1	00:00:01	Eman_SugaR_Glarean,1	00:00:30
Hobacle's,V	00:00:30	Hobacle's,V	00:00:30
Krug,P	00:00:30	Krug,P	00:00:30
Gniazdowski,M	00:00:26	Gniazdowski,M	00:00:08
Illescas,M	00:00:30	Illescas,M	00:00:30
Heinz,J	00:00:21	Heinz,J	00:00:30
Josten,G	00:00:30	Josten,G	00:00:30
Timman,J	00:00:24	Timman,J	00:00:13
Gelly,M	00:00:11	Gelly,M	00:00:24
Krug,P	00:00:30	Krug,P	00:00:30
Popov,G	00:00:07	Popov,G	00:00:05
Hiarcs_Buch_512,1	00:00:30	Hiarcs_Buch_512,1	00:00:30
AM,H	00:00:04	AM,H	00:00:02
Source?_#13_mulitple,1	00:00:30	Source?_#13_mulitple,1	00:00:30
Neghina,N	00:00:08	Neghina,N	00:00:30
Svidler,P	00:00:00	Svidler,P	00:00:00
Source?_?_?,1	00:00:21	Source?_?_?,1	00:00:30
Efremov,A	00:00:05	Efremov,A	00:00:09
Hard,P	00:00:01	Hard,P	00:00:06
Source?_Corbit,D	00:00:01	Source?_Corbit,D	00:00:00
Timman,J	00:00:30	Timman,J	00:00:30
Zinar,M	00:00:30	Zinar,M	00:00:30
			
Total time : 	00:58:00	Total time : 	01:00:54
Total solved: 	176	Total solved: 	165
These two runs differ in 11/256 solutions (end of table), considering the time -indices too,
that makes a difference of 14 ElotStatTS (Frank Schubert)- Elo at an error bar of 3, regards
Peter.
amchess
Posts: 364
Joined: Tue Dec 05, 2017 2:42 pm

Re: ShashChess

Post by amchess »

Thanks, Andrea