Welcome to Chess2U - The Ultimate Computer Chess Forum!
If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post and use all thefeatures of the Chess2U forums. To start viewing messages, select the forum that you want to visit from the selection below.
Go to page : 1, 2
Hi. Kranium ... recently I heard that, you're ready the smp 0.09, robbolito ... It will be released? I hope with much anxiety by this engine. big hug.
Not so...they are actually very different,
for ex, here's a table with IvanHoe search compared to Robbolito:
- Spoiler:
IvanHoe B47c
void Search( typePOS *POSITION )
{
int z, i;
typeDYNAMIC *p, *q, *S;
typePOS *POS;
SEARCH_IS_DONE = FALSE;
SUPPRESS_INPUT = FALSE; /* redundant con JUMP_IS_SET? */
if (NEW_GAME)
SINCE_NEW_GAME = 0;
else
SINCE_NEW_GAME++;
NEW_GAME = FALSE;
START_CLOCK = GetClock();
INIT_CLOCK = clock();
DO_OUTPUT = FALSE;
PONDER_HIT = FALSE;
NODE_CHECK = 0;
ROOT_POSIZIONE0->nodes = 0;
ROOT_BEST_MOVE = ROOT_DEPTH = ROOT_SCORE = 0;
POSITION->StackHeight = 0;
if (POSITION->DYN->reversible > 110)
goto SKIP_REP_CHECK;
POSITION->StackHeight = -1;
S = MAX(POSITION->DYN_ROOT + 1, POSITION->DYN - POSITION->DYN->reversible);
for ( p = S; p <= POSITION->DYN; p++ )
POSITION->STACK[++(POSITION->StackHeight)] = p->HASH;
if (ANALYSING)
{
boolean REPETITION;
for ( p = S; p < POSITION->DYN; p++ )
{
REPETITION = FALSE;
for ( q = p + 2; q < POSITION->DYN; q += 2 )
if (p->HASH == q->HASH)
{
REPETITION = TRUE;
break;
}
if (!REPETITION)
POSITION->STACK[p - POSITION->DYN + POSITION->DYN->reversible] = 0;
(p + 1)->move = 0;
}
}
if (POSITION->StackHeight == -1)
POSITION->StackHeight = 0;
SKIP_REP_CHECK:
memcpy(POSITION->DYN_ROOT + 1, POSITION->DYN, sizeof(typeDYNAMIC));
memset(POSITION->DYN_ROOT + 2, 0, 254 * sizeof(typeDYNAMIC));
memset(POSITION->DYN_ROOT, 0, sizeof(typeDYNAMIC));
POSITION->DYN = POSITION->DYN_ROOT + 1;
POSITION->height = 0;
if (FIXED_AGE_ANALYSIS && ANALYSING)
GLOBAL_AGE = 0;
else if (!ICI_HASH_MIX)
IncrementAge();
else if (DO_HASH_FULL)
{
int u = DoHashFull(POSITION->DYN->HASH); /* HACK, random seed */
if (u)
SEND("info hashfull %dn", u);
}
for ( i = 0; i < 256; i++ )
(POSITION->DYN_ROOT + i)->age = GLOBAL_AGE;
#ifdef CON_ROBBO_BUILD
SEARCH_ROBBO_BASES = TRUE;
SUPPRESS_INPUT = TRUE;
if (RobboFare(POSITION))
goto INFINITY;
SUPPRESS_INPUT = FALSE;
#endif
ROOT_PREVIOUS = -VALUE_MATE;
EASY_MOVE = FALSE;
JUMP_IS_SET = TRUE;
POS = POSITION;
ROOT_POSIZIONE0->tbhits = 0;
#ifdef YUSUF_MULTICORE
if (TITANIC_MODE)
{
STUB_IVAN();
POS = &ROOT_POSITION[0][0];
}
#endif
z = setjmp(J);
if (!z)
{
if (POS->wtm)
TopWhite(POS);
else
TopBlack(POS);
}
SUPPRESS_INPUT = TRUE;
if (TITANIC_MODE)
{
LOCK(SMP_IVAN);
SMP_HAS_AKTIV = FALSE;
UNLOCK(SMP_IVAN);
}
JUMP_IS_SET = FALSE;
PREVIOUS_DEPTH = ROOT_DEPTH;
if (POS == POSITION)
{
while (POS->DYN != (POS->DYN_ROOT + 1))
{
if (!POS->DYN->move)
UndoNull(POS);
else
Undo(POS, POS->DYN->move);
}
}
Information(POSITION, GetClock() - START_CLOCK, -32767, ROOT_SCORE, 32767);
INFINITY:
SUPPRESS_INPUT = FALSE;
if (DO_INFINITE && !STOP)
{
INFINITE_LOOP = TRUE;
while (!STOP)
Input(POSITION);
}
#if 1
if (DO_PONDER && !STOP && !PONDER_HIT)
{
INFINITE_LOOP = TRUE;
while (!STOP && !PONDER_HIT)
Input(POSITION);
}
#endif
INFINITE_LOOP = FALSE;
SUPPRESS_INPUT = TRUE;
OutputBestMove(POSITION);
SUPPRESS_INPUT = FALSE;
SEARCH_IS_DONE = TRUE;
if (UCI_NEW_GAME)
NewGame(POSITION, TRUE);
if (STALL_MODE)
SEND("complete-searchn"); /* HACK */
while (STALL_MODE)
NANO_SLEEP(1000000);
}
Robbolito 0.09
void search()
{
int z;
type_dynamic *p, *q;
GAME_NEW = FALSE;
timeBeginPeriod(1);
CLOCK = CLOCK_UCI = main_clock();
MOMENT = process_clock();
stack_height = -1;
root_move = ponder_move = root_depth = root_value = 0;
move_white_number = move_black_number = move_null_number = 0;
for ( p = dynamic_table; p <= DYNAMIC; p++ )
STACK[++stack_height] = p->hash_key;
if (ANALYSIS)
{
bool REPETITION;
for ( p = dynamic_table; p < DYNAMIC; p++ )
{
REPETITION = FALSE;
for ( q = p + 2; q < DYNAMIC; q += 2 )
if (p->hash_key == q->hash_key)
{
REPETITION = TRUE;
break;
}
if (!REPETITION)
STACK[p - dynamic_table] = 0;
(p + 1)->move = 0;
}
}
memcpy(dynamic_table + 1, DYNAMIC, sizeof(type_dynamic));
memset(dynamic_table + 2, 0, 254 * sizeof(type_dynamic));
memset(dynamic_table, 0, sizeof(type_dynamic));
DYNAMIC = dynamic_table + 1;
history_increase();
root_previous = -VALUE_MATE;
EASY = FALSE;
jump_ok = TRUE;
z = setjmp(J);
if (!z)
{
if (POSITION.white_to_move)
search_high_white();
else
search_high_black();
}
//printf("Bad move: %dtBattle: %dtNormal: %dtEasy: %dtOther: %dtZ: %dn",
// HALT_TYPE[1], HALT_TYPE[2], HALT_TYPE[4], HALT_TYPE[3], HALT_TYPE[0], z);
jump_ok = FALSE;
depth_previous = root_depth;
while (DYNAMIC != (dynamic_table + 1))
{
if (!DYNAMIC->move)
null_cancel();
else
cancel(DYNAMIC->move);
}
information(main_clock() - CLOCK_UCI, -32767, root_value, 32767);
output_best_move();
timeEndPeriod(1);
}
Last edited by kranium on Wed Oct 19, 2011 1:21 am; edited 1 time in total
and what about Igorrit0.086v1 search vs Robbolito search ? 
is there an effective difference between the 2 ?

is there an effective difference between the 2 ?
@Chan wrote:and what about Igorrit0.086v1 search vs Robbolito search ?
is there an effective difference between the 2 ?
Igorrit came after Robbolito but before IvanHoe...so it's in between.
We never translated it from Italo/Albanian to common English programming terms, like Robbolito.
It hasn't been developed as thoroughly as IvanHoe...therefore, it's much closer to Robbolito in form and function
(but of course, unlike Robbolito, Igorrit was SMP capable):
- Spoiler:
Robbolito 0.09
void search()
{
int z;
type_dynamic *p, *q;
GAME_NEW = FALSE;
timeBeginPeriod(1);
CLOCK = CLOCK_UCI = main_clock();
MOMENT = process_clock();
stack_height = -1;
root_move = ponder_move = root_depth = root_value = 0;
move_white_number = move_black_number = move_null_number = 0;
for ( p = dynamic_table; p <= DYNAMIC; p++ )
STACK[++stack_height] = p->hash_key;
if (ANALYSIS)
{
bool REPETITION;
for ( p = dynamic_table; p < DYNAMIC; p++ )
{
REPETITION = FALSE;
for ( q = p + 2; q < DYNAMIC; q += 2 )
if (p->hash_key == q->hash_key)
{
REPETITION = TRUE;
break;
}
if (!REPETITION)
STACK[p - dynamic_table] = 0;
(p + 1)->move = 0;
}
}
memcpy(dynamic_table + 1, DYNAMIC, sizeof(type_dynamic));
memset(dynamic_table + 2, 0, 254 * sizeof(type_dynamic));
memset(dynamic_table, 0, sizeof(type_dynamic));
DYNAMIC = dynamic_table + 1;
history_increase();
root_previous = -VALUE_MATE;
EASY = FALSE;
jump_ok = TRUE;
z = setjmp(J);
if (!z)
{
if (POSITION.white_to_move)
search_high_white();
else
search_high_black();
}
//printf("Bad move: %dtBattle: %dtNormal: %dtEasy: %dtOther: %dtZ: %dn",
// HALT_TYPE[1], HALT_TYPE[2], HALT_TYPE[4], HALT_TYPE[3], HALT_TYPE[0], z);
jump_ok = FALSE;
depth_previous = root_depth;
while (DYNAMIC != (dynamic_table + 1))
{
if (!DYNAMIC->move)
null_cancel();
else
cancel(DYNAMIC->move);
}
information(main_clock() - CLOCK_UCI, -32767, root_value, 32767);
output_best_move();
timeEndPeriod(1);
}
Igorrit 0.086v8
void cerca( tipo_posizione *POSIZIONE )
{
int z;
tipo_dinamico *p, *q;
tipo_posizione *POS;
PARTITA_NUOVA = FALSO;
OROLOGIO = orologio();
MOMENTO = clock();
mucchio_altezzo = -1;
radice_mossa = ponder_move = radice_abisso = radice_valu = 0;
for ( p = dinamico_inizio; p <= DINAMICO; p++ )
MUCCHIO[++mucchio_altezzo] = p->Zobrist;
NODE_CHECK = 0;
ROOT_POSIZIONE0->nodes = 0;
if (ANALISI)
{
logico RIPETIZIONE;
for ( p = dinamico_inizio; p < DINAMICO; p++ )
{
RIPETIZIONE = FALSO;
for ( q = p + 2; q < DINAMICO; q += 2 )
if (p->Zobrist == q->Zobrist)
{
RIPETIZIONE = VERO;
break;
}
if (!RIPETIZIONE)
MUCCHIO[p - dinamico_inizio] = 0;
(p + 1)->mossa = 0;
}
}
memcpy(dinamico_inizio + 1, DINAMICO, sizeof(tipo_dinamico));
memset(dinamico_inizio + 2, 0, 254 * sizeof(tipo_dinamico));
memset(dinamico_inizio, 0, sizeof(tipo_dinamico));
DINAMICO = dinamico_inizio + 1;
POSIZIONE->height = 0;
anno_incremento();
#ifdef CON_ROBBO_BUILD
if (RobboFare(POSIZIONE))
return;
#endif
radice_precedente = -VALU_MATTO;
FACILE = FALSO;
salto_ok = VERO;
POS = POSIZIONE;
#ifdef YUSUF_MULTICORE
if (TITANIC_MODE)
{
ivan_init_smp();
POS = &ROOT_POSIZIONE[0][0];
}
#endif
z = setjmp(J);
if (!z)
{
if (POS->bianco_en_mossa)
cerca_alto_bianco(POS);
else
cerca_alto_nero(POS);
}
#ifdef YUSUF_MULTICORE
if (TITANIC_MODE)
ivan_end_smp();
#endif
salto_ok = FALSO;
abisso_precedente = radice_abisso;
if (POS == POSIZIONE)
{
while (POS->DIN != (POS->din_iniz + 1))
{
if (!POS->DIN->mossa)
nullo_annulla(POS);
else
annullare(POS, POS->DIN->mossa);
}
}
informazione(POSIZIONE, orologio() - OROLOGIO, -32767, radice_valu, 32767);
uscita_mossa_migliore(POSIZIONE);
}
Last edited by kranium on Wed Oct 19, 2011 1:25 am; edited 6 times in total
Hi, Kranium ... with all this talk of who is who? ... My question was pointless. actually I would like to know, when we could have smp, robbolito? later this month or another date? ... ... rsrsr big hug

@mcdiniz wrote:Hi, Kranium ... with all this talk of who is who? ... My question was pointless. actually I would like to know, when we could have smp, robbolito? later this month or another date? ... ... rsrsr big hug![]()
i will definitely release it, but i can't say when...
i want to make sue it's right.
- Code:
Games Completed = 500 of 500 (Avg game length = 29.166 sec)
Settings = RR/32MB/4000ms+200ms/M 700000cp for 7 moves, D 150 moves/EPD:D:\LittleBlitzer\openings.epd(4000)
Time = 3773 sec elapsed, 0 sec remaining
1. RobboLito 0.09 262.0/500 134-110-256 (L: m=110 t=0 i=0 a=0) (D: r=197 i=34 f=16 s=1 a=8) (tpm=223.7 d=13.2 nps=1242806)
2. Igorrit 0.086v8 238.0/500 110-134-256 (L: m=134 t=0 i=0 a=0) (D: r=197 i=34 f=16 s=1 a=8) (tpm=224.1 d=12.9 nps=1056299)
- Code:
Games Completed = 500 of 500 (Avg game length = 30.677 sec)
Settings = RR/32MB/4000ms+200ms/M 700000cp for 7 moves, D 150 moves/EPD:D:\LittleBlitzer\openings.epd(4000)
Time = 3973 sec elapsed, 0 sec remaining
1. RobboLito 0.09 252.5/500 115-110-275 (L: m=110 t=0 i=0 a=0) (D: r=195 i=31 f=29 s=1 a=19) (tpm=221.9 d=13.4 nps=1228826)
2. RobboLito 0.085g3 247.5/500 110-115-275 (L: m=115 t=0 i=0 a=0) (D: r=195 i=31 f=29 s=1 a=19) (tpm=222.2 d=13.5 nps=1236360)
Hi Kranium,
If I understand correctly, Robbotlito is for single core and Ivanhoe is for multiple cores. Would the improvements you are making in Robbolito make their way to Ivanhoe. Would we see a newer version of Ivanhoe in the near future?
Regards,
If I understand correctly, Robbotlito is for single core and Ivanhoe is for multiple cores. Would the improvements you are making in Robbolito make their way to Ivanhoe. Would we see a newer version of Ivanhoe in the near future?
Regards,
No, we will see a newer version of Robbolito (SMP Supported), Robbolito 0.09 SMP.@kaiser101 wrote:Hi Kranium,
If I understand correctly, Robbotlito is for single core and Ivanhoe is for multiple cores. Would the improvements you are making in Robbolito make their way to Ivanhoe. Would we see a newer version of Ivanhoe in the near future?
Regards,
@Kranium, Is there a beta version of Robbolito 0.09 SMP available ?
________________
EnginesWar rating list
BooksWar rating list
BooksWar News
Stockfish Under Microscope
Short and sweet games
Dear, ... Kranium., as it has passed? does for an adventure, you wouldn't be thinking of releasing the robollito 0.09 smp? ... was thinking of putting this engine in the last tournament this year. good anyway, ... since now I appreciate your consideration, and warmth. as it always has done. big hug ...
Dear computer chess fan:
In the last 3 years, my Robbolito development efforts (with the help of Sentinel) have yielded a couple releases of 'remarkable' strength: Robbolito 0.085g3 and 0.09.
Unfortunately, this source code has been unscrupulously 'cloned' by various individuals...stolen and used for their own benefit, with no regard to the strict GPL license attached.
Robert Houdart apparently used Robbolito 0.09/0.085g3 source code as basis for his 'own' commercial chess engine Houdini...
for details and proof, please see:
http://www.open-chess.org/viewtopic.php?f=3&t=1647
Johandry Gonzalez Espin (International chess master) copied our Robbolito 0.085g3 source code release, claiming it as his own original engine, and attempted to enter it into the 2010 World Computer Chess Championship...
for details, etc. please see 'The Espin case' here:
http://www.chessvibes.com/plaatjes/Cloning_article_February17th2011.pdf
It appears as if the FSF's (Free Source Foundation, Boston, Ma.) GPL license means absolutely nothing, and they do nothing to prevent this king of abuse...(i.e. to date, no action has been taken against Vas R. and Rybka for copying Fruit 2.1).
And hypocritically, major testing sites like the CCRL, CEGT, IPON, etc. continue to test (ultimately promoting the sale of) Rybka and Houdini.
Due to this abuse and misuse of my (and Sentinel's) rigorous ChessLogik open-source development efforts (given freely to the CC community in good faith)...Robbolito 0.085 and Robbolito 0.09 are no longer available for download.
In the last 3 years, my Robbolito development efforts (with the help of Sentinel) have yielded a couple releases of 'remarkable' strength: Robbolito 0.085g3 and 0.09.
Unfortunately, this source code has been unscrupulously 'cloned' by various individuals...stolen and used for their own benefit, with no regard to the strict GPL license attached.
Robert Houdart apparently used Robbolito 0.09/0.085g3 source code as basis for his 'own' commercial chess engine Houdini...
for details and proof, please see:
http://www.open-chess.org/viewtopic.php?f=3&t=1647
Johandry Gonzalez Espin (International chess master) copied our Robbolito 0.085g3 source code release, claiming it as his own original engine, and attempted to enter it into the 2010 World Computer Chess Championship...
for details, etc. please see 'The Espin case' here:
http://www.chessvibes.com/plaatjes/Cloning_article_February17th2011.pdf
It appears as if the FSF's (Free Source Foundation, Boston, Ma.) GPL license means absolutely nothing, and they do nothing to prevent this king of abuse...(i.e. to date, no action has been taken against Vas R. and Rybka for copying Fruit 2.1).
And hypocritically, major testing sites like the CCRL, CEGT, IPON, etc. continue to test (ultimately promoting the sale of) Rybka and Houdini.
Due to this abuse and misuse of my (and Sentinel's) rigorous ChessLogik open-source development efforts (given freely to the CC community in good faith)...Robbolito 0.085 and Robbolito 0.09 are no longer available for download.
I tink that is no longer possible to download site robollito Kranium.,,, a situation well nasty with all this happening? ... I would like to know if even he'll Kranium release the Robollito 0.09 SMP? ... I think the chess lovers should not pay for it..!... well, do what? ...
@mcdiniz wrote:I tink that is no longer possible to download site robollito Kranium.,,, a situation well nasty with all this happening? ... I would like to know if even he'll Kranium release the Robollito 0.09 SMP? ... I think the chess lovers should not pay for it..!... well, do what? ...
I'm working hard on Robbo SMP, and hope to release it on Dec. 29 to mark the 2 year anniversary of the 'Decembrists' revolution...
(Robbolito 0.085g3 was released Dec 31, 2009 after months of development and testing on Immortal chess, and Robbolito 0.09 followed shortly thereafter)
I would never want to 'hurt' average engine hobbyists, but this release will certainly not be 'open-source'...
what can users do to help?
1st and foremost:
do not reward this behavior...do not pay for Houdini (or Rybka),
better yet, don't use them!
Hi Kranium,
I think it's better not to publish the source code in the future. It's your job, your satisfaction ... And it should not go into unscrupulous hands.
Regards
I think it's better not to publish the source code in the future. It's your job, your satisfaction ... And it should not go into unscrupulous hands.
Regards
________________
National Master, 2227 elo ICCF
The most important thing... Is the BRAIN ! (and Houdini of course lol)
Go to page : 1, 2
Related Topics