summaryrefslogtreecommitdiff
path: root/src/eval.c
diff options
context:
space:
mode:
authorScott Gasch <[email protected]>2026-08-30 17:17:44 -0700
committerScott Gasch <[email protected]>2026-08-30 17:17:44 -0700
commitfd1460b2c135f6cef502fd167d1df0edf223e312 (patch)
treeee20bae148e436a88abfb9e709fcf96634f04d45 /src/eval.c
parent3eac7f469add78edb9dd7dced36bde5427346321 (diff)
Improving for nullmove, eval speedup, remove old cruft, bugfix in split / MP.
Diffstat (limited to 'src/eval.c')
-rwxr-xr-xsrc/eval.c79
1 files changed, 21 insertions, 58 deletions
diff --git a/src/eval.c b/src/eval.c
index a9be77f..2beccbf 100755
--- a/src/eval.c
+++ b/src/eval.c
@@ -21,7 +21,6 @@ Revision History:
#include "chess.h"
-typedef void (*PEVAL_HELPER)(POSITION *, COOR, PAWN_HASH_ENTRY *);
//
// Bishop-mobility ray-walk outcome categories -- see BMobCaseTable in
@@ -2412,33 +2411,6 @@ Return value:
}
-static void
-_InvalidEvaluator(UNUSED POSITION *pos,
- UNUSED COOR c,
- UNUSED PAWN_HASH_ENTRY *pHash)
-/**
-
-Routine description:
-
- This code should never be called
-
-Parameters:
-
- POSITION *pos,
- COOR c,
- PAWN_HASH_ENTRY *pHash,
-
-Return value:
-
- void
-
-**/
-{
- UtilPanic(SHOULD_NOT_GET_HERE,
- NULL, NULL, NULL, NULL,
- __FILE__, __LINE__);
-}
-
//
// ======================================================================
//
@@ -4768,23 +4740,6 @@ Return value:
**/
{
- static const PEVAL_HELPER JumpTable[] =
- {
- _InvalidEvaluator, // EMPTY_SQUARE (0)
- _InvalidEvaluator, // INVALID_PIECE (1)
- _InvalidEvaluator, // BLACK_PAWN (2)
- _InvalidEvaluator, // WHITE_PAWN (3)
- _EvalKnight, // BLACK_KNIGHT (4)
- _EvalKnight, // WHITE_KNIGHT (5)
- _EvalBishop, // BLACK_BISHOP (6)
- _EvalBishop, // WHITE_BISHOP (7)
- _InvalidEvaluator, // BLACK_ROOK (8)
- _InvalidEvaluator, // WHITE_ROOK (9)
- _InvalidEvaluator, // BLACK_QUEEN (10)
- _InvalidEvaluator, // WHITE_QUEEN (11)
- _InvalidEvaluator, // BLACK_KING (12)
- _InvalidEvaluator // WHITE_KING (13)
- };
ULONG uDefer[2][2];
COOR cDefer[2][2][10];
POSITION *pos = &(ctx->sPosition);
@@ -5024,12 +4979,17 @@ Return value:
// Note: The side on move's pieces of value X are
// evaluated and have their mobility counted and added to
// the attack table before the other side's pieces. Also,
- // we do not care if JumpTable tells us this piece is in
- // danger b/c we will find out later on in
- // EvalLookForDanger anyway.
+ // we do not care if this piece is in danger b/c we will
+ // find out later on in EvalLookForDanger anyway.
//
- ASSERT(JumpTable[p]);
- (void)(JumpTable[p])(pos, c, pHash);
+ if (IS_KNIGHT(p))
+ {
+ _EvalKnight(pos, c, pHash);
+ }
+ else
+ {
+ _EvalBishop(pos, c, pHash);
+ }
#ifdef EVAL_DUMP
Trace("After %s:\n%d\t\t%d\n", PieceAbbrev(p),
pos->iScore[WHITE], pos->iScore[BLACK]);
@@ -5059,13 +5019,18 @@ Return value:
//
// This time we are evaluating a piece from the side not
// on move. We will not go back later and look at this
- // piece again so if JumpTable tells us it's in danger
- // then record it. The drawback, of course, is that the
- // JumpTable routines only detect danger if a piece is
- // attacked by an enemy of lesser value!
+ // piece again so if it's in danger then record it. The
+ // drawback, of course, is that danger is only detected if
+ // a piece is attacked by an enemy of lesser value!
//
- ASSERT(JumpTable[p]);
- (void)(JumpTable[p])(pos, c, pHash);
+ if (IS_KNIGHT(p))
+ {
+ _EvalKnight(pos, c, pHash);
+ }
+ else
+ {
+ _EvalBishop(pos, c, pHash);
+ }
#ifdef EVAL_DUMP
Trace("After %s:\n%d\t\t%d\n", PieceAbbrev(p),
pos->iScore[WHITE], pos->iScore[BLACK]);
@@ -5162,7 +5127,6 @@ Return value:
ASSERT(IS_VALID_PIECE(p));
ASSERT(GET_COLOR(p) == BLACK);
ASSERT(IS_KING(p));
- ASSERT(JumpTable[p]);
#endif
_EvalKing(pos, c, pHash);
ctx->sPlyInfo[ctx->uPly].iKingScore[BLACK] = pos->iTempScore;
@@ -5177,7 +5141,6 @@ Return value:
ASSERT(IS_VALID_PIECE(p));
ASSERT(GET_COLOR(p) == WHITE);
ASSERT(IS_KING(p));
- ASSERT(JumpTable[p]);
#endif
_EvalKing(pos, c, pHash);
ctx->sPlyInfo[ctx->uPly].iKingScore[WHITE] = pos->iTempScore;