Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Bitboard VS array board ,speed difference in movegen()

Author: Robert Hyatt

Date: 07:23:08 02/27/01

Go up one level in this thread


On February 26, 2001 at 16:21:15, Severi Salminen wrote:

>>Note that in crafty I don't do the attack_to/attack_from stuff, I dynamically
>>compute it as needed with the rotated bitmap table lookups...  that might make
>>a difference.
>
>What is this attack_to/attack_from you are talking about? I do this in
>gen_captures(bishop, for example): I take one white bishop from Board.Bishops.
>Then I extract the necessary diagonal states which I use to get a bitboard which
>has all bits on where a bishop might capture to. Then I AND this with black
>pieces and scan through those. In make_move() I just move the pieces around and
>update all bitboards. My board structure has only the necessary bitboards which
>are needed to store the board and 3 rotated bitboards. So what are these
>attack_to and _from bitboards and where are they used?
>
>Severi

The original Slate/Atkin paper described their incremental move generator.  They
maintained (for each piece) a bitmap that defined the squares that piece could
move to.  Whenever the board was updated, the affected bitmaps were also
updated.  This means that at any instant in time, you _always_ have a bitmap
showing which piece attacks which squares.  They also incrementally updated the
inverse bitmaps as well, those bitmaps that indicate which squares hold a piece
that attacks one specific square.

I did this in early versions of crafty, but the rotated bitmap approach soon
made that approach obsolete...



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.