Search found 8 matches

by RobertP
Fri Feb 24, 2012 9:01 am
Forum: Programming and Technical Discussions
Topic: Using a Transposition Table with Zobrist Keys
Replies: 29
Views: 16255

Re: Using a Transposition Table with Zobrist Keys


If you are at a root node, and you retrieve an UPPER bound from the TT, and if you find that
"UPPER BOUND FROM TABLE <= alpha", you can safely return alpha. But, like I said, if you are at the root node,
can you safely use the move stored in the TT, since that corresponded to the upper bound in ...
by RobertP
Fri Feb 24, 2012 4:26 am
Forum: Programming and Technical Discussions
Topic: Using a Transposition Table with Zobrist Keys
Replies: 29
Views: 16255

Re: Using a Transposition Table with Zobrist Keys

Miyagi403 wrote: if (entry.depthleft <= depthleft) { ... }
That should be:
if (entry.depthleft >= depthleft) { ... }
by RobertP
Tue Mar 01, 2011 11:40 am
Forum: Programming and Technical Discussions
Topic: Fire's null_new_depth
Replies: 25
Views: 12171

Re: Fire's null_new_depth


...could you explain what your addition, below, to evaluation.h and .c does?

This is standard bitboard pin-detection adapted to positional scoring for pins or discovered attack (wR -> bQ). With the proviso that I haven't seen the full source (i.e. based only on the code snippets):
On entry ...
by RobertP
Fri Feb 11, 2011 10:08 am
Forum: Programming and Technical Discussions
Topic: LZCNT and bitboards
Replies: 6
Views: 4367

Re: LZCNT and bitboards

[...] im currently developing using gcc and the assembler there is just a bitch [...]
These built-ins work nicely with gcc and clang. No assembler; no look-up tables; just plain function calls.

static inline int GetLowestBit( BitBoard b ) { return __builtin_ctzll( b ); }

static inline int ...
by RobertP
Sun Oct 31, 2010 12:18 pm
Forum: Programming and Technical Discussions
Topic: General query about bitboard
Replies: 3
Views: 2875

Re: General query about bitboard

I have got the concept of knight moves in bitboard. I need an array knight[64] in which all possible knight moves will be stored.
But how can I get the position of my knights in bitboard without looping through the bits of knight ??
i.e. How can I know , where my knights are placed in chessboard ...
by RobertP
Tue Oct 26, 2010 8:47 am
Forum: Programming and Technical Discussions
Topic: Good examples for magic or rotated boards
Replies: 7
Views: 6284

Re: Good examples for magic or rotated boards

The easiest bitboard slider-attacks code to write is the standard or classical method:
http://chessprogramming.wikispaces.com/Classical+Approach

Here's an implementation of RookAttacks().
extern BitBoard gRayN[64], gRayE[64], gRayS[64], gRayW[64];

BitBoard RookAttacks( int fromSquare, BitBoard ...
by RobertP
Wed Oct 06, 2010 4:57 am
Forum: Programming and Technical Discussions
Topic: Copy Board vs Unmake Move
Replies: 8
Views: 9066

Re: Copy Board vs Unmake Move

Until now, my Board struct has contained an 'attack board'
BitBoard attacksFrom[64];
as a distant legacy from Slate & Atkin's Chess 4.5.
Caching attacks in this way not only inflates Board size, it requires elaborate code for incremental updating in MakeMove().

Stimulated by this thread, I ...
by RobertP
Sat Oct 02, 2010 7:23 am
Forum: Programming and Technical Discussions
Topic: Copy Board vs Unmake Move
Replies: 8
Views: 9066

Re: Copy Board vs Unmake Move

My engine uses CopyBoard() because of laziness. In a new engine it's much easier to copy (essentially one line of code) than to write a complex and bug-prone Unmake().
Careful profiling shows that time is spent:
15.7% MakeMove
5.5% CopyBoard
77.9% MoveGen, Evaluate, Search,...

I doubt that I am ...