Your PSTs look like this:EmreKalkan wrote: ↑Thu Sep 11, 2025 7:02 pmYou re right about perfts. I dont have a test but I tested it manually many many times 6 months ago. I am still using same codes. I will add perfts too. I am alone at this project, Its awful. But I didnt understand very well PST problem. I checked my code everything looks fine. Can you explain more detaily.ZirconiumX wrote: ↑Thu Sep 11, 2025 12:59 pm Ciekce and I decided to do some code auditing; I'll let him post his findings.
Here's one case I spotted immediately: you're using the PSTs from the Simplified Evaluation Function, which are listed in rank 8..1 order (as if from White's point of view on a chessboard), however you are using A1=0 indexing, so you are indexing the PSTs upside down.
I also could not find a perft function in your code, only a single test bench asserting that there are 20 generated moves in the start position. From that it's not obvious to me that your move generator is correct.
Code: Select all
const PAWN_MG: [i32; 64] = [
0, 0, 0, 0, 0, 0, 0, 0,
50, 50, 50, 50, 50, 50, 50, 50,
10, 10, 20, 30, 30, 20, 10, 10,
5, 5, 10, 25, 25, 10, 5, 5,
0, 0, 0, 20, 20, 0, 0, 0,
5, -5, -10, 0, 0, -10, -5, 5,
5, 10, 10, -20, -20, 10, 10, 5,
0, 0, 0, 0, 0, 0, 0, 0
];
Code: Select all
const PAWN_MG: [i32; 64] = [
0, 0, 0, 0, 0, 0, 0, 0,
5, 10, 10, -20, -20, 10, 10, 5,
5, -5, -10, 0, 0, -10, -5, 5,
0, 0, 0, 20, 20, 0, 0, 0,
5, 5, 10, 25, 25, 10, 5, 5,
10, 10, 20, 30, 30, 20, 10, 10,
50, 50, 50, 50, 50, 50, 50, 50,
0, 0, 0, 0, 0, 0, 0, 0
];