js-chess-engine 2.1.4 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -15
- package/dist/ai/AIEngine.d.ts +17 -4
- package/dist/ai/AIEngine.d.ts.map +1 -1
- package/dist/ai/AIEngine.js +58 -10
- package/dist/ai/AIEngine.js.map +1 -1
- package/dist/ai/Evaluator.d.ts +8 -80
- package/dist/ai/Evaluator.d.ts.map +1 -1
- package/dist/ai/Evaluator.js +132 -465
- package/dist/ai/Evaluator.js.map +1 -1
- package/dist/ai/MoveOrdering.d.ts +9 -50
- package/dist/ai/MoveOrdering.d.ts.map +1 -1
- package/dist/ai/MoveOrdering.js +58 -144
- package/dist/ai/MoveOrdering.js.map +1 -1
- package/dist/ai/Search.d.ts +13 -47
- package/dist/ai/Search.d.ts.map +1 -1
- package/dist/ai/Search.js +193 -387
- package/dist/ai/Search.js.map +1 -1
- package/dist/ai/TranspositionTable.d.ts +2 -2
- package/dist/ai/TranspositionTable.d.ts.map +1 -1
- package/dist/ai/TranspositionTable.js +41 -12
- package/dist/ai/TranspositionTable.js.map +1 -1
- package/dist/core/MoveGenerator.d.ts.map +1 -1
- package/dist/core/MoveGenerator.js +97 -74
- package/dist/core/MoveGenerator.js.map +1 -1
- package/dist/core/Position.d.ts +0 -14
- package/dist/core/Position.d.ts.map +1 -1
- package/dist/core/Position.js +63 -59
- package/dist/core/Position.js.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -14
- package/dist/index.js.map +1 -1
- package/dist/types/ai.types.d.ts +1 -1
- package/dist/types/ai.types.d.ts.map +1 -1
- package/dist/utils/conversion.d.ts +5 -4
- package/dist/utils/conversion.d.ts.map +1 -1
- package/dist/utils/conversion.js +27 -13
- package/dist/utils/conversion.js.map +1 -1
- package/dist/utils/environment.d.ts +1 -1
- package/dist/utils/environment.d.ts.map +1 -1
- package/dist/utils/environment.js +1 -3
- package/dist/utils/environment.js.map +1 -1
- package/dist/utils/fen.d.ts.map +1 -1
- package/dist/utils/fen.js +20 -0
- package/dist/utils/fen.js.map +1 -1
- package/package.json +1 -1
package/dist/ai/Search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Search.js","sourceRoot":"","sources":["../../src/ai/Search.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Search.js","sourceRoot":"","sources":["../../src/ai/Search.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,7 +52,7 @@ export declare class TranspositionTable {
|
|
|
52
52
|
* @param type - Entry type
|
|
53
53
|
* @param bestMove - Best move found
|
|
54
54
|
*/
|
|
55
|
-
store(zobristHash: bigint, depth: number, score: Score, type: TTEntryType, bestMove: InternalMove | null): void;
|
|
55
|
+
store(zobristHash: bigint, depth: number, score: Score, type: TTEntryType, bestMove: InternalMove | null, ply?: number): void;
|
|
56
56
|
/**
|
|
57
57
|
* Probe the transposition table
|
|
58
58
|
*
|
|
@@ -62,7 +62,7 @@ export declare class TranspositionTable {
|
|
|
62
62
|
* @param beta - Beta bound
|
|
63
63
|
* @returns Entry if found and usable, null otherwise
|
|
64
64
|
*/
|
|
65
|
-
probe(zobristHash: bigint, depth: number, alpha: Score, beta: Score): TTEntry | null;
|
|
65
|
+
probe(zobristHash: bigint, depth: number, alpha: Score, beta: Score, ply?: number): TTEntry | null;
|
|
66
66
|
/**
|
|
67
67
|
* Get best move from transposition table (for move ordering)
|
|
68
68
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TranspositionTable.d.ts","sourceRoot":"","sources":["../../src/ai/TranspositionTable.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"TranspositionTable.d.ts","sourceRoot":"","sources":["../../src/ai/TranspositionTable.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AA0B1C;;GAEG;AACH,oBAAY,WAAW;IACnB,KAAK,IAAI,CAAO,cAAc;IAC9B,WAAW,IAAI,CAAE,2BAA2B;IAC5C,WAAW,IAAI;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAa;IAE3B;;;;OAIG;gBACS,MAAM,GAAE,MAAW;IAW/B;;;;;;;;OAQG;IACH,KAAK,CACD,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,YAAY,GAAG,IAAI,EAC7B,GAAG,GAAE,MAAU,GAChB,IAAI;IA2BP;;;;;;;;OAQG;IACH,KAAK,CACD,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,KAAK,EACX,GAAG,GAAE,MAAU,GAChB,OAAO,GAAG,IAAI;IA8CjB;;;;;OAKG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAWrD;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;OAEG;IACH,SAAS,IAAI,IAAI;IAIjB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;IAKhB;;;;OAIG;IACH,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;CAW9E"}
|
|
@@ -7,6 +7,31 @@
|
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.TranspositionTable = exports.TTEntryType = void 0;
|
|
10
|
+
const Evaluator_1 = require("./Evaluator");
|
|
11
|
+
/** Threshold for detecting mate scores. */
|
|
12
|
+
const MATE_THRESHOLD = 500;
|
|
13
|
+
/**
|
|
14
|
+
* Normalize a mate score for TT storage by removing the current ply component.
|
|
15
|
+
* Mate scores use SCORE_MIN + ply (mated) or SCORE_MAX - ply (mating).
|
|
16
|
+
* We store the distance-from-this-node instead.
|
|
17
|
+
*/
|
|
18
|
+
function adjustMateScoreForStorage(score, ply) {
|
|
19
|
+
if (score > Evaluator_1.SCORE_MAX - MATE_THRESHOLD)
|
|
20
|
+
return score + ply;
|
|
21
|
+
if (score < Evaluator_1.SCORE_MIN + MATE_THRESHOLD)
|
|
22
|
+
return score - ply;
|
|
23
|
+
return score;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Denormalize a mate score retrieved from TT by adding the current ply.
|
|
27
|
+
*/
|
|
28
|
+
function adjustMateScoreForRetrieval(score, ply) {
|
|
29
|
+
if (score > Evaluator_1.SCORE_MAX - MATE_THRESHOLD)
|
|
30
|
+
return score - ply;
|
|
31
|
+
if (score < Evaluator_1.SCORE_MIN + MATE_THRESHOLD)
|
|
32
|
+
return score + ply;
|
|
33
|
+
return score;
|
|
34
|
+
}
|
|
10
35
|
/**
|
|
11
36
|
* Types of transposition table entries
|
|
12
37
|
*/
|
|
@@ -51,7 +76,7 @@ class TranspositionTable {
|
|
|
51
76
|
* @param type - Entry type
|
|
52
77
|
* @param bestMove - Best move found
|
|
53
78
|
*/
|
|
54
|
-
store(zobristHash, depth, score, type, bestMove) {
|
|
79
|
+
store(zobristHash, depth, score, type, bestMove, ply = 0) {
|
|
55
80
|
const index = this.getIndex(zobristHash);
|
|
56
81
|
const existingEntry = this.table[index];
|
|
57
82
|
// Replacement strategy: always replace if:
|
|
@@ -67,7 +92,7 @@ class TranspositionTable {
|
|
|
67
92
|
this.table[index] = {
|
|
68
93
|
zobristHash,
|
|
69
94
|
depth,
|
|
70
|
-
score,
|
|
95
|
+
score: adjustMateScoreForStorage(score, ply),
|
|
71
96
|
type,
|
|
72
97
|
bestMove,
|
|
73
98
|
age: this.currentAge,
|
|
@@ -83,7 +108,7 @@ class TranspositionTable {
|
|
|
83
108
|
* @param beta - Beta bound
|
|
84
109
|
* @returns Entry if found and usable, null otherwise
|
|
85
110
|
*/
|
|
86
|
-
probe(zobristHash, depth, alpha, beta) {
|
|
111
|
+
probe(zobristHash, depth, alpha, beta, ply = 0) {
|
|
87
112
|
const index = this.getIndex(zobristHash);
|
|
88
113
|
const entry = this.table[index];
|
|
89
114
|
// Check if entry exists and matches hash
|
|
@@ -96,26 +121,30 @@ class TranspositionTable {
|
|
|
96
121
|
this.misses++;
|
|
97
122
|
return null;
|
|
98
123
|
}
|
|
99
|
-
|
|
100
|
-
|
|
124
|
+
// Adjust mate scores for the current ply
|
|
125
|
+
const adjustedScore = adjustMateScoreForRetrieval(entry.score, ply);
|
|
126
|
+
// Count hits only when usable for pruning / exact score.
|
|
101
127
|
switch (entry.type) {
|
|
102
128
|
case TTEntryType.EXACT:
|
|
103
|
-
|
|
129
|
+
this.hits++;
|
|
130
|
+
return { ...entry, score: adjustedScore };
|
|
104
131
|
case TTEntryType.LOWER_BOUND:
|
|
105
132
|
// Fail-high (score >= beta)
|
|
106
|
-
if (
|
|
107
|
-
|
|
133
|
+
if (adjustedScore >= beta) {
|
|
134
|
+
this.hits++;
|
|
135
|
+
return { ...entry, score: adjustedScore };
|
|
108
136
|
}
|
|
109
137
|
break;
|
|
110
138
|
case TTEntryType.UPPER_BOUND:
|
|
111
139
|
// Fail-low (score <= alpha)
|
|
112
|
-
if (
|
|
113
|
-
|
|
140
|
+
if (adjustedScore <= alpha) {
|
|
141
|
+
this.hits++;
|
|
142
|
+
return { ...entry, score: adjustedScore };
|
|
114
143
|
}
|
|
115
144
|
break;
|
|
116
145
|
}
|
|
117
|
-
//
|
|
118
|
-
return entry;
|
|
146
|
+
// Not usable for pruning, but still return for move ordering.
|
|
147
|
+
return { ...entry, score: adjustedScore };
|
|
119
148
|
}
|
|
120
149
|
/**
|
|
121
150
|
* Get best move from transposition table (for move ordering)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TranspositionTable.js","sourceRoot":"","sources":["../../src/ai/TranspositionTable.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;
|
|
1
|
+
{"version":3,"file":"TranspositionTable.js","sourceRoot":"","sources":["../../src/ai/TranspositionTable.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MoveGenerator.d.ts","sourceRoot":"","sources":["../../src/core/MoveGenerator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACH,aAAa,EAEb,WAAW,EAGX,YAAY,EAEf,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"MoveGenerator.d.ts","sourceRoot":"","sources":["../../src/core/MoveGenerator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACH,aAAa,EAEb,WAAW,EAGX,YAAY,EAEf,MAAM,UAAU,CAAC;AA4BlB;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,EAAE,CAoCvE;AA+ED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,EAAE,CAiB7E;AAodD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,YAAY,EAAE,CAG1F;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,GAAG,OAAO,CAG7F;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,GAAG,YAAY,CA6HxF"}
|
|
@@ -17,6 +17,7 @@ const AttackDetector_1 = require("./AttackDetector");
|
|
|
17
17
|
const conversion_1 = require("../utils/conversion");
|
|
18
18
|
const Board_1 = require("./Board");
|
|
19
19
|
const constants_1 = require("../utils/constants");
|
|
20
|
+
const zobrist_1 = require("./zobrist");
|
|
20
21
|
/**
|
|
21
22
|
* Generate all legal moves for the current position
|
|
22
23
|
*
|
|
@@ -164,9 +165,10 @@ function generatePawnMoves(board, moves, color, _friendlyPieces, enemyPieces) {
|
|
|
164
165
|
const empty = ~board.allPieces;
|
|
165
166
|
if (color === types_1.InternalColor.WHITE) {
|
|
166
167
|
// Single push
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
168
|
+
let singlePushBB = (0, Position_1.shiftNorth)(pawns) & empty;
|
|
169
|
+
while (singlePushBB !== 0n) {
|
|
170
|
+
const to = (0, conversion_1.getLowestSetBit)(singlePushBB);
|
|
171
|
+
singlePushBB &= singlePushBB - 1n;
|
|
170
172
|
const from = (to - 8);
|
|
171
173
|
const toRank = (0, conversion_1.getRankIndex)(to);
|
|
172
174
|
// Check for promotion
|
|
@@ -183,16 +185,18 @@ function generatePawnMoves(board, moves, color, _friendlyPieces, enemyPieces) {
|
|
|
183
185
|
}
|
|
184
186
|
// Double push
|
|
185
187
|
const doublePushSource = pawns & 0x000000000000ff00n; // Rank 2
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
188
|
+
let doublePushBB = (0, Position_1.shiftNorth)((0, Position_1.shiftNorth)(doublePushSource) & empty) & empty;
|
|
189
|
+
while (doublePushBB !== 0n) {
|
|
190
|
+
const to = (0, conversion_1.getLowestSetBit)(doublePushBB);
|
|
191
|
+
doublePushBB &= doublePushBB - 1n;
|
|
189
192
|
const from = (to - 16);
|
|
190
193
|
moves.push(createMove(from, to, pawnPiece, types_1.Piece.EMPTY, types_1.MoveFlag.PAWN_DOUBLE_PUSH));
|
|
191
194
|
}
|
|
192
195
|
// Captures north-east
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
+
let capturesNEBB = (0, Position_1.shiftNorthEast)(pawns) & enemyPieces;
|
|
197
|
+
while (capturesNEBB !== 0n) {
|
|
198
|
+
const to = (0, conversion_1.getLowestSetBit)(capturesNEBB);
|
|
199
|
+
capturesNEBB &= capturesNEBB - 1n;
|
|
196
200
|
const from = (to - 9);
|
|
197
201
|
const capturedPiece = (0, Board_1.getPiece)(board, to);
|
|
198
202
|
const toRank = (0, conversion_1.getRankIndex)(to);
|
|
@@ -208,9 +212,10 @@ function generatePawnMoves(board, moves, color, _friendlyPieces, enemyPieces) {
|
|
|
208
212
|
}
|
|
209
213
|
}
|
|
210
214
|
// Captures north-west
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
215
|
+
let capturesNWBB = (0, Position_1.shiftNorthWest)(pawns) & enemyPieces;
|
|
216
|
+
while (capturesNWBB !== 0n) {
|
|
217
|
+
const to = (0, conversion_1.getLowestSetBit)(capturesNWBB);
|
|
218
|
+
capturesNWBB &= capturesNWBB - 1n;
|
|
214
219
|
const from = (to - 7);
|
|
215
220
|
const capturedPiece = (0, Board_1.getPiece)(board, to);
|
|
216
221
|
const toRank = (0, conversion_1.getRankIndex)(to);
|
|
@@ -231,21 +236,22 @@ function generatePawnMoves(board, moves, color, _friendlyPieces, enemyPieces) {
|
|
|
231
236
|
const epTarget = 1n << BigInt(epSquare);
|
|
232
237
|
// Check if any pawn can capture en passant
|
|
233
238
|
const canCaptureEP = ((0, Position_1.shiftSouthWest)(epTarget) | (0, Position_1.shiftSouthEast)(epTarget)) & pawns;
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
239
|
+
let epBB = canCaptureEP;
|
|
240
|
+
while (epBB !== 0n) {
|
|
241
|
+
const from = (0, conversion_1.getLowestSetBit)(epBB);
|
|
242
|
+
epBB &= epBB - 1n;
|
|
243
|
+
const capturedPiece = types_1.Piece.BLACK_PAWN;
|
|
244
|
+
moves.push(createMove(from, epSquare, pawnPiece, capturedPiece, types_1.MoveFlag.EN_PASSANT | types_1.MoveFlag.CAPTURE));
|
|
240
245
|
}
|
|
241
246
|
}
|
|
242
247
|
}
|
|
243
248
|
else {
|
|
244
249
|
// Black pawns (move south)
|
|
245
250
|
// Single push
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
251
|
+
let singlePushBB = (0, Position_1.shiftSouth)(pawns) & empty;
|
|
252
|
+
while (singlePushBB !== 0n) {
|
|
253
|
+
const to = (0, conversion_1.getLowestSetBit)(singlePushBB);
|
|
254
|
+
singlePushBB &= singlePushBB - 1n;
|
|
249
255
|
const from = (to + 8);
|
|
250
256
|
const toRank = (0, conversion_1.getRankIndex)(to);
|
|
251
257
|
// Check for promotion
|
|
@@ -262,16 +268,18 @@ function generatePawnMoves(board, moves, color, _friendlyPieces, enemyPieces) {
|
|
|
262
268
|
}
|
|
263
269
|
// Double push
|
|
264
270
|
const doublePushSource = pawns & 0x00ff000000000000n; // Rank 7
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
271
|
+
let doublePushBB = (0, Position_1.shiftSouth)((0, Position_1.shiftSouth)(doublePushSource) & empty) & empty;
|
|
272
|
+
while (doublePushBB !== 0n) {
|
|
273
|
+
const to = (0, conversion_1.getLowestSetBit)(doublePushBB);
|
|
274
|
+
doublePushBB &= doublePushBB - 1n;
|
|
268
275
|
const from = (to + 16);
|
|
269
276
|
moves.push(createMove(from, to, pawnPiece, types_1.Piece.EMPTY, types_1.MoveFlag.PAWN_DOUBLE_PUSH));
|
|
270
277
|
}
|
|
271
278
|
// Captures south-east
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
279
|
+
let capturesSEBB = (0, Position_1.shiftSouthEast)(pawns) & enemyPieces;
|
|
280
|
+
while (capturesSEBB !== 0n) {
|
|
281
|
+
const to = (0, conversion_1.getLowestSetBit)(capturesSEBB);
|
|
282
|
+
capturesSEBB &= capturesSEBB - 1n;
|
|
275
283
|
const from = (to + 7);
|
|
276
284
|
const capturedPiece = (0, Board_1.getPiece)(board, to);
|
|
277
285
|
const toRank = (0, conversion_1.getRankIndex)(to);
|
|
@@ -287,9 +295,10 @@ function generatePawnMoves(board, moves, color, _friendlyPieces, enemyPieces) {
|
|
|
287
295
|
}
|
|
288
296
|
}
|
|
289
297
|
// Captures south-west
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
298
|
+
let capturesSWBB = (0, Position_1.shiftSouthWest)(pawns) & enemyPieces;
|
|
299
|
+
while (capturesSWBB !== 0n) {
|
|
300
|
+
const to = (0, conversion_1.getLowestSetBit)(capturesSWBB);
|
|
301
|
+
capturesSWBB &= capturesSWBB - 1n;
|
|
293
302
|
const from = (to + 9);
|
|
294
303
|
const capturedPiece = (0, Board_1.getPiece)(board, to);
|
|
295
304
|
const toRank = (0, conversion_1.getRankIndex)(to);
|
|
@@ -310,12 +319,12 @@ function generatePawnMoves(board, moves, color, _friendlyPieces, enemyPieces) {
|
|
|
310
319
|
const epTarget = 1n << BigInt(epSquare);
|
|
311
320
|
// Check if any pawn can capture en passant
|
|
312
321
|
const canCaptureEP = ((0, Position_1.shiftNorthWest)(epTarget) | (0, Position_1.shiftNorthEast)(epTarget)) & pawns;
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
322
|
+
let epBB = canCaptureEP;
|
|
323
|
+
while (epBB !== 0n) {
|
|
324
|
+
const from = (0, conversion_1.getLowestSetBit)(epBB);
|
|
325
|
+
epBB &= epBB - 1n;
|
|
326
|
+
const capturedPiece = types_1.Piece.WHITE_PAWN;
|
|
327
|
+
moves.push(createMove(from, epSquare, pawnPiece, capturedPiece, types_1.MoveFlag.EN_PASSANT | types_1.MoveFlag.CAPTURE));
|
|
319
328
|
}
|
|
320
329
|
}
|
|
321
330
|
}
|
|
@@ -330,8 +339,10 @@ function generateKnightMoves(board, moves, color, friendlyPieces) {
|
|
|
330
339
|
while (knightsBB !== 0n) {
|
|
331
340
|
const from = (0, conversion_1.getLowestSetBit)(knightsBB);
|
|
332
341
|
const attacks = (0, Position_1.getKnightAttacks)(from) & ~friendlyPieces;
|
|
333
|
-
|
|
334
|
-
|
|
342
|
+
let attacksBB = attacks;
|
|
343
|
+
while (attacksBB !== 0n) {
|
|
344
|
+
const to = (0, conversion_1.getLowestSetBit)(attacksBB);
|
|
345
|
+
attacksBB &= attacksBB - 1n;
|
|
335
346
|
const capturedPiece = (0, Board_1.getPiece)(board, to);
|
|
336
347
|
const flags = capturedPiece !== types_1.Piece.EMPTY ? types_1.MoveFlag.CAPTURE : types_1.MoveFlag.NONE;
|
|
337
348
|
moves.push(createMove(from, to, knightPiece, capturedPiece, flags));
|
|
@@ -349,8 +360,10 @@ function generateBishopMoves(board, moves, color, friendlyPieces) {
|
|
|
349
360
|
while (bishopsBB !== 0n) {
|
|
350
361
|
const from = (0, conversion_1.getLowestSetBit)(bishopsBB);
|
|
351
362
|
const attacks = (0, Position_1.getBishopAttacks)(from, board.allPieces) & ~friendlyPieces;
|
|
352
|
-
|
|
353
|
-
|
|
363
|
+
let attacksBB = attacks;
|
|
364
|
+
while (attacksBB !== 0n) {
|
|
365
|
+
const to = (0, conversion_1.getLowestSetBit)(attacksBB);
|
|
366
|
+
attacksBB &= attacksBB - 1n;
|
|
354
367
|
const capturedPiece = (0, Board_1.getPiece)(board, to);
|
|
355
368
|
const flags = capturedPiece !== types_1.Piece.EMPTY ? types_1.MoveFlag.CAPTURE : types_1.MoveFlag.NONE;
|
|
356
369
|
moves.push(createMove(from, to, bishopPiece, capturedPiece, flags));
|
|
@@ -368,8 +381,10 @@ function generateRookMoves(board, moves, color, friendlyPieces) {
|
|
|
368
381
|
while (rooksBB !== 0n) {
|
|
369
382
|
const from = (0, conversion_1.getLowestSetBit)(rooksBB);
|
|
370
383
|
const attacks = (0, Position_1.getRookAttacks)(from, board.allPieces) & ~friendlyPieces;
|
|
371
|
-
|
|
372
|
-
|
|
384
|
+
let attacksBB = attacks;
|
|
385
|
+
while (attacksBB !== 0n) {
|
|
386
|
+
const to = (0, conversion_1.getLowestSetBit)(attacksBB);
|
|
387
|
+
attacksBB &= attacksBB - 1n;
|
|
373
388
|
const capturedPiece = (0, Board_1.getPiece)(board, to);
|
|
374
389
|
const flags = capturedPiece !== types_1.Piece.EMPTY ? types_1.MoveFlag.CAPTURE : types_1.MoveFlag.NONE;
|
|
375
390
|
moves.push(createMove(from, to, rookPiece, capturedPiece, flags));
|
|
@@ -387,8 +402,10 @@ function generateQueenMoves(board, moves, color, friendlyPieces) {
|
|
|
387
402
|
while (queensBB !== 0n) {
|
|
388
403
|
const from = (0, conversion_1.getLowestSetBit)(queensBB);
|
|
389
404
|
const attacks = (0, Position_1.getQueenAttacks)(from, board.allPieces) & ~friendlyPieces;
|
|
390
|
-
|
|
391
|
-
|
|
405
|
+
let attacksBB = attacks;
|
|
406
|
+
while (attacksBB !== 0n) {
|
|
407
|
+
const to = (0, conversion_1.getLowestSetBit)(attacksBB);
|
|
408
|
+
attacksBB &= attacksBB - 1n;
|
|
392
409
|
const capturedPiece = (0, Board_1.getPiece)(board, to);
|
|
393
410
|
const flags = capturedPiece !== types_1.Piece.EMPTY ? types_1.MoveFlag.CAPTURE : types_1.MoveFlag.NONE;
|
|
394
411
|
moves.push(createMove(from, to, queenPiece, capturedPiece, flags));
|
|
@@ -406,8 +423,10 @@ function generateKingMoves(board, moves, color, friendlyPieces) {
|
|
|
406
423
|
return;
|
|
407
424
|
const from = (0, conversion_1.getLowestSetBit)(king);
|
|
408
425
|
const attacks = (0, Position_1.getKingAttacks)(from) & ~friendlyPieces;
|
|
409
|
-
|
|
410
|
-
|
|
426
|
+
let attacksBB = attacks;
|
|
427
|
+
while (attacksBB !== 0n) {
|
|
428
|
+
const to = (0, conversion_1.getLowestSetBit)(attacksBB);
|
|
429
|
+
attacksBB &= attacksBB - 1n;
|
|
411
430
|
const capturedPiece = (0, Board_1.getPiece)(board, to);
|
|
412
431
|
const flags = capturedPiece !== types_1.Piece.EMPTY ? types_1.MoveFlag.CAPTURE : types_1.MoveFlag.NONE;
|
|
413
432
|
moves.push(createMove(from, to, kingPiece, capturedPiece, flags));
|
|
@@ -519,50 +538,60 @@ function isMoveLegal(board, from, to) {
|
|
|
519
538
|
*/
|
|
520
539
|
function applyMoveComplete(board, move) {
|
|
521
540
|
const { from, to, piece, capturedPiece, flags, promotionPiece } = move;
|
|
541
|
+
// Snapshot state needed for incremental hash updates
|
|
542
|
+
const oldEnPassant = board.enPassantSquare;
|
|
543
|
+
const oldCastling = { ...board.castlingRights };
|
|
522
544
|
// Reset en passant square (will be set if this is a double pawn push)
|
|
523
545
|
board.enPassantSquare = null;
|
|
524
|
-
// Handle captures
|
|
546
|
+
// Handle captures (+hash)
|
|
525
547
|
if (capturedPiece !== types_1.Piece.EMPTY) {
|
|
548
|
+
// Remove captured piece from board and hash
|
|
526
549
|
(0, Board_1.removePiece)(board, to);
|
|
550
|
+
board.zobristHash = (0, zobrist_1.updateHashCapture)(board.zobristHash, capturedPiece, to);
|
|
527
551
|
board.halfMoveClock = 0;
|
|
528
552
|
}
|
|
529
553
|
else {
|
|
530
554
|
board.halfMoveClock++;
|
|
531
555
|
}
|
|
532
|
-
// Handle en passant capture
|
|
556
|
+
// Handle en passant capture (+hash)
|
|
533
557
|
if (flags & types_1.MoveFlag.EN_PASSANT) {
|
|
534
558
|
const captureSquare = board.turn === types_1.InternalColor.WHITE ? to - 8 : to + 8;
|
|
559
|
+
const capturedPawn = board.turn === types_1.InternalColor.WHITE ? types_1.Piece.BLACK_PAWN : types_1.Piece.WHITE_PAWN;
|
|
535
560
|
(0, Board_1.removePiece)(board, captureSquare);
|
|
561
|
+
board.zobristHash = (0, zobrist_1.updateHashCapture)(board.zobristHash, capturedPawn, captureSquare);
|
|
536
562
|
board.halfMoveClock = 0;
|
|
537
563
|
}
|
|
538
|
-
// Handle castling
|
|
564
|
+
// Handle castling rook move (+hash)
|
|
539
565
|
if (flags & types_1.MoveFlag.CASTLING) {
|
|
540
|
-
// Move the rook
|
|
541
566
|
if (to === constants_1.CASTLING.WHITE_SHORT.kingTo) {
|
|
542
|
-
// White kingside
|
|
543
567
|
(0, Board_1.removePiece)(board, constants_1.CASTLING.WHITE_SHORT.rookFrom);
|
|
544
568
|
(0, Board_1.setPiece)(board, constants_1.CASTLING.WHITE_SHORT.rookTo, types_1.Piece.WHITE_ROOK);
|
|
569
|
+
board.zobristHash = (0, zobrist_1.updateHashMove)(board.zobristHash, types_1.Piece.WHITE_ROOK, constants_1.CASTLING.WHITE_SHORT.rookFrom, constants_1.CASTLING.WHITE_SHORT.rookTo);
|
|
545
570
|
}
|
|
546
571
|
else if (to === constants_1.CASTLING.WHITE_LONG.kingTo) {
|
|
547
|
-
// White queenside
|
|
548
572
|
(0, Board_1.removePiece)(board, constants_1.CASTLING.WHITE_LONG.rookFrom);
|
|
549
573
|
(0, Board_1.setPiece)(board, constants_1.CASTLING.WHITE_LONG.rookTo, types_1.Piece.WHITE_ROOK);
|
|
574
|
+
board.zobristHash = (0, zobrist_1.updateHashMove)(board.zobristHash, types_1.Piece.WHITE_ROOK, constants_1.CASTLING.WHITE_LONG.rookFrom, constants_1.CASTLING.WHITE_LONG.rookTo);
|
|
550
575
|
}
|
|
551
576
|
else if (to === constants_1.CASTLING.BLACK_SHORT.kingTo) {
|
|
552
|
-
// Black kingside
|
|
553
577
|
(0, Board_1.removePiece)(board, constants_1.CASTLING.BLACK_SHORT.rookFrom);
|
|
554
578
|
(0, Board_1.setPiece)(board, constants_1.CASTLING.BLACK_SHORT.rookTo, types_1.Piece.BLACK_ROOK);
|
|
579
|
+
board.zobristHash = (0, zobrist_1.updateHashMove)(board.zobristHash, types_1.Piece.BLACK_ROOK, constants_1.CASTLING.BLACK_SHORT.rookFrom, constants_1.CASTLING.BLACK_SHORT.rookTo);
|
|
555
580
|
}
|
|
556
581
|
else if (to === constants_1.CASTLING.BLACK_LONG.kingTo) {
|
|
557
|
-
// Black queenside
|
|
558
582
|
(0, Board_1.removePiece)(board, constants_1.CASTLING.BLACK_LONG.rookFrom);
|
|
559
583
|
(0, Board_1.setPiece)(board, constants_1.CASTLING.BLACK_LONG.rookTo, types_1.Piece.BLACK_ROOK);
|
|
584
|
+
board.zobristHash = (0, zobrist_1.updateHashMove)(board.zobristHash, types_1.Piece.BLACK_ROOK, constants_1.CASTLING.BLACK_LONG.rookFrom, constants_1.CASTLING.BLACK_LONG.rookTo);
|
|
560
585
|
}
|
|
561
586
|
}
|
|
562
|
-
// Move the piece
|
|
587
|
+
// Move the piece (+hash)
|
|
563
588
|
(0, Board_1.removePiece)(board, from);
|
|
564
|
-
|
|
589
|
+
board.zobristHash = (0, zobrist_1.updateHashMove)(board.zobristHash, piece, from, to);
|
|
590
|
+
// Handle promotion (piece identity at destination changes)
|
|
565
591
|
if (flags & types_1.MoveFlag.PROMOTION && promotionPiece) {
|
|
592
|
+
// updateHashMove added the pawn at `to`, swap it with promotion piece.
|
|
593
|
+
board.zobristHash = (0, zobrist_1.removePieceFromHash)(board.zobristHash, piece, to);
|
|
594
|
+
board.zobristHash = (0, zobrist_1.addPieceToHash)(board.zobristHash, promotionPiece, to);
|
|
566
595
|
(0, Board_1.setPiece)(board, to, promotionPiece);
|
|
567
596
|
}
|
|
568
597
|
else {
|
|
@@ -579,8 +608,12 @@ function applyMoveComplete(board, move) {
|
|
|
579
608
|
}
|
|
580
609
|
// Update castling rights
|
|
581
610
|
updateCastlingRights(board, from, to, piece);
|
|
582
|
-
//
|
|
611
|
+
// Update hash for castling/en-passant state
|
|
612
|
+
board.zobristHash = (0, zobrist_1.updateHashEnPassant)(board.zobristHash, oldEnPassant, board.enPassantSquare);
|
|
613
|
+
board.zobristHash = (0, zobrist_1.updateHashCastling)(board.zobristHash, oldCastling.whiteShort, board.castlingRights.whiteShort, oldCastling.whiteLong, board.castlingRights.whiteLong, oldCastling.blackShort, board.castlingRights.blackShort, oldCastling.blackLong, board.castlingRights.blackLong);
|
|
614
|
+
// Switch turn (+hash)
|
|
583
615
|
board.turn = board.turn === types_1.InternalColor.WHITE ? types_1.InternalColor.BLACK : types_1.InternalColor.WHITE;
|
|
616
|
+
board.zobristHash = (0, zobrist_1.toggleSide)(board.zobristHash);
|
|
584
617
|
// Increment full move number after black's move
|
|
585
618
|
if (board.turn === types_1.InternalColor.WHITE) {
|
|
586
619
|
board.fullMoveNumber++;
|
|
@@ -656,23 +689,13 @@ function updateGameStatus(board) {
|
|
|
656
689
|
// Check if the current player's king is attacked by the OPPONENT
|
|
657
690
|
const opponentColor = currentColor === types_1.InternalColor.WHITE ? types_1.InternalColor.BLACK : types_1.InternalColor.WHITE;
|
|
658
691
|
const inCheck = (0, AttackDetector_1.isSquareAttacked)(board, kingSquare, opponentColor);
|
|
692
|
+
// Fast status update — only sets isCheck.
|
|
693
|
+
// IMPORTANT: isCheckmate and isStalemate are NOT set here to avoid recursive
|
|
694
|
+
// generateLegalMoves() calls (applyMoveComplete -> updateGameStatus -> generateLegalMoves).
|
|
695
|
+
// The search detects mate/stalemate via moves.length === 0.
|
|
696
|
+
// The public API (Game class) patches these flags via updateConfigStatusFromBoard().
|
|
659
697
|
board.isCheck = inCheck;
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
const hasLegalMoves = legalMoves.length > 0;
|
|
663
|
-
if (!hasLegalMoves) {
|
|
664
|
-
if (inCheck) {
|
|
665
|
-
board.isCheckmate = true;
|
|
666
|
-
board.isStalemate = false;
|
|
667
|
-
}
|
|
668
|
-
else {
|
|
669
|
-
board.isCheckmate = false;
|
|
670
|
-
board.isStalemate = true;
|
|
671
|
-
}
|
|
672
|
-
}
|
|
673
|
-
else {
|
|
674
|
-
board.isCheckmate = false;
|
|
675
|
-
board.isStalemate = false;
|
|
676
|
-
}
|
|
698
|
+
board.isCheckmate = false;
|
|
699
|
+
board.isStalemate = false;
|
|
677
700
|
}
|
|
678
701
|
//# sourceMappingURL=MoveGenerator.js.map
|