Moderator: Andres Valverde
Reinhard Scharnagl wrote:Well, it is not that important, but e.g. SMIRF/Smirf-o-glot still is missing.
H.G.Muller wrote:But arguably Smirfoglot is a WB engine. It does not even start up another process (like Polyglot) or another thread (like many engines) for computing the moves. It only uses a subroutine in a DLL. Like many other engines, e.g. all those probing Scorpio bitbases. There are also many engines that are dependent on the cygwin1.dll for there running.
I think it should be the engine authors decision whch routines in his program he wants to put in a DLL and which in the .exe.
H.G.Muller wrote:The combination Smirfogot.exe + SmirfEngine.dll is a working WB engine that plays Chess. Just like BBChess.exe + cygwin1.dll is a Chess engine . And Scorpio + egbbdll.dll are generally considered an engine, despite the fact that move-selecting code is located in a DLL.
I am not aware of any issues with Smirfoglot. SMIRF has a lot of issues, e.g. with piece evaluation and time management, but that is Reinhard's problem.
Guenther Simon wrote:I don't agree and I must say I don't care. Also the above examples are quite weird, too weird for leaving more words, except, that dlls
are not the key.
H.G.Muller wrote:... Reinhard should be the one to decide how SMIRF distributes its time. ...
p = (ProcAdd) ('C', '+', 0, NULL); /* start thinking */
if(p == NULL)
{ printf("telluser Doesn't want to move\n"); continue;}
do {
if(Post && (cnt & 15) == 1)
{ int d, min, x; float sec, score;
p = (ProcAdd) ('C', 'I', 2, NULL); /* poll PV */
if(p != NULL &&
sscanf(p, "%d:%f (%d.%d%c) %f", &min, &sec, &d, &x, &x, &score)==6 &&
d != lastDepth)
{ lastDepth = d;
printf("%3d %5d %5d 100000 %s\n",
d, (int)(score*100), (int)(6000*min+100*sec), p+24);
fflush(stdout);
}
}
Sleep(20); cnt++; /* wait a bit */
p = (ProcAdd) ('C', 'B', 0, NULL); /* poll if ready */
} while(p != NULL);
p = (ProcAdd) ('C', 'I', 1, NULL); /* poll PV */
if(p == NULL)
{ printf("telluser No PV\n"); continue;}
p = (ProcAdd) ('C', 'I', 2, NULL); /* poll score */
if(p == NULL)
{ printf("telluser No Score\n"); continue;}
p = (ProcAdd) ('C', 'A', 0, NULL); /* fetch move */
if(p == NULL)
{ printf("telluser No move\n"); continue;}
Side ^= BLACK^WHITE;
printf("move %s\n", p);
H.G.Muller wrote:Is this a problem? From the code above, you can see that it is intended behavior. I only print out the PV if the depth is different from the previous depth. It would be easy enough to print it for any difference, if you prefer that.
H.G.Muller wrote:Guenther Simon wrote:I don't agree and I must say I don't care. Also the above examples are quite weird, too weird for leaving more words, except, that dlls
are not the key.I agree that the examples are quite weird, which is exactly why they were such good examples: they are just as weird as consdering SMIRF + Smirfogot not to be a WinBoard engine.
If DLLs are not an issue, it boils down to this: I made a WinBoard version of SMIRF by replacing its dedicated GUI by a WB interface, keeping only the engine part. Just as Jim Abblet has converted many stand-alone Chess egines (e.g. Dababba) to WinBoard engines by replacing their dedicated GUI code with a WB driver.
H.G.Muller wrote:Chess War is 40 moves / 20 min, which is OK for SMIRF. It is just the sub-5-min games where it gets into trouble.
Return to Winboard and related Topics
Users browsing this forum: No registered users and 19 guests