Author: KarinsDad
Date: 12:14:31 04/27/99
Go up one level in this thread
On April 27, 1999 at 14:08:37, Will Singleton wrote: > >On April 27, 1999 at 10:11:32, KarinsDad wrote: > >> >>PS. Last night, it was running at 100 KNPS on a P2 400. However, this is with >>the old legal move generation code which does not take advantage of the piece >>attack tables yet and very few sections of code have been optimized for speed. > >How do you use attack tables to help generate moves? I assume you're not >referring to the typical move-gen table that has all possible TO squares for >each FROM square for each piece. > >Will No, although we do use that type of table for creating the piece attack tables for knights. And we have some very large tables to quickly create the piece attack tables (for queen, rook, bishop, and king moves) in the first place. We have two types of attack tables: Piece Attack tables and Xraying Piece Attack tables. Piece Attack tables are used by the legal move. These are similar to bitboards except that they indicate for a given square, every piece that attacks that square (i.e. each square requires 32 bits for the 32 pieces). The legal move generator then has to determine pinned (and partially pinned) pieces. All other legal moves are stored in this structure with the exception of pawns which can only take if there is a piece there or e.p., and can move forward if no piece is there; and kings which cannot move into check, and which can castle. So, about 70% of all legal moves are already in this structure for a given node. The xraying version of this structure (which by the way I haven't written the code for) will then be used in the evaluation code to determine who controls a given square. They are identical to the piece attack table with the exception that xraying pieces ALSO attack a given square. So, batteries of rooks and queens control a square more than just the closest piece, etc. I will probably copy the Piece Attack structure to the Xraying Piece Attack structure and just calculate the xraying pieces (queens, rooks, and bishops) on the fly in the evaluation code (as opposed to having the structure on each node like the Piece Attack table). One of the things that I have currently avoided is the code to calculate delta information on a given piece piece attack table (this code is partially written, however, I stopped working on it since the code to create the table from scratch can temporarily be used instead). Once the delta code is used, then it will speed up the creation of any node whose parent node you have the table set up for already. KarinsDad :)
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.