/* generate binary opening book file from text opening book file */ static PyObject * engine_genbook(PyObject *self, PyObject *args) { if (!PyArg_ParseTuple(args, "ssii", &bookfile, &binbookfile, &booksize, &bookmaxply)) return NULL; GetOpenings(); Py_RETURN_NONE; }
void NewGame(void) { short l, c, p, max_opening_sequence; #ifdef HAVE_GETTIMEOFDAY struct timeval tv; #endif compptr = oppptr = 0; stage = 0; stage2 = -1; /* the game is not yet started */ flag.illegal = flag.mate = flag.post = flag.quit = flag.reverse = flag.bothsides = flag.onemove = flag.force = false; flag.material = flag.coords = flag.hash = flag.easy = flag.beep = flag.rcptr = true; flag.stars = flag.shade = flag.back = flag.musttimeout = false; flag.gamein = false; flag.rv = true; mycnt1 = mycnt2 = 0; GenCnt = NodeCnt = et0 = dither = XCmore = 0; znodes = ZNODES; WAwindow = WAWNDW; WBwindow = WBWNDW; BAwindow = BAWNDW; BBwindow = BBWNDW; xwndw = BXWNDW; if (!MaxSearchDepth) MaxSearchDepth = MAXDEPTH - 1; contempt = 0; GameCnt = 0; Game50 = 1; CptrFlag[0] = TesujiFlag[0] = false; hint = OPENING_HINT; ZeroRPT(); GameType[0] = GameType[1] = UNKNOWN; Pscore[0] = Tscore[0] = (SCORE_LIMIT + 3000); opponent = player = black; computer = white; for (l = 0; l < TREE; l++) Tree[l].f = Tree[l].t = 0; gsrand((unsigned int) 1); if (!InitFlag) { for (c = black; c <= white; c++) { for (p = pawn; p <= king; p++) { for (l = 0; l < NO_SQUARES; l++) { (*hashcode)[c][p][l].key = (((unsigned long) urand())); (*hashcode)[c][p][l].key += (((unsigned long) urand()) << 16); (*hashcode)[c][p][l].bd = (((unsigned long) urand())); (*hashcode)[c][p][l].bd += (((unsigned long) urand()) << 16); #if SIZEOF_LONG == 8 /* 64-bit long i.e. 8 bytes */ (*hashcode)[c][p][l].key += (((unsigned long) urand()) << 32); (*hashcode)[c][p][l].key += (((unsigned long) urand()) << 48); (*hashcode)[c][p][l].bd += (((unsigned long) urand()) << 32); (*hashcode)[c][p][l].bd += (((unsigned long) urand()) << 48); #endif } } } for (c = black; c <= white; c++) { for (p = pawn; p <= king; p++) { for (l = 0; l < MAX_CAPTURED; l++) { (*drop_hashcode)[c][p][l].key = (((unsigned long) urand())); (*drop_hashcode)[c][p][l].key += (((unsigned long) urand()) << 16); (*drop_hashcode)[c][p][l].bd = (((unsigned long) urand())); (*drop_hashcode)[c][p][l].bd += (((unsigned long) urand()) << 16); #if SIZEOF_LONG == 8 /* 64-bit long i.e. 8 bytes */ (*drop_hashcode)[c][p][l].key += (((unsigned long) urand()) << 32); (*drop_hashcode)[c][p][l].key += (((unsigned long) urand()) << 48); (*drop_hashcode)[c][p][l].bd += (((unsigned long) urand()) << 32); (*drop_hashcode)[c][p][l].bd += (((unsigned long) urand()) << 48); #endif } } } } for (l = 0; l < NO_SQUARES; l++) { board[l] = Stboard[l]; color[l] = Stcolor[l]; Mvboard[l] = 0; } ClearCaptured(); ClearScreen(); InitializeStats(); #ifdef HAVE_GETTIMEOFDAY gettimeofday(&tv, NULL); time0 = tv.tv_sec*100 + tv.tv_usec/10000; #else time0 = time((long *) 0); #endif /* resetting reference time */ ElapsedTime(COMPUTE_AND_INIT_MODE); flag.regularstart = true; Book = BOOKFAIL; if (!InitFlag) { char sx[256]; strcpy(sx, CP[169]); if (TCflag) SetTimeControl(); else if (MaxResponseTime == 0) SelectLevel(sx); UpdateDisplay(0, 0, 1, 0); GetOpenings(); GetOpeningPatterns(&max_opening_sequence); InitFlag = true; } #if ttblsz if (TTadd) { ZeroTTable(); TTadd = 0; } #endif /* ttblsz */ hashbd = hashkey = 0; return; }