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
];