\r
// piece-square tables\r
for(i=0; i<BH; i++) for(j=0; j<BH; j++) {\r
- int s = BW*i + j, d = BH*(BH-2) - (2*i - BH + 1)*(2*i - BH + 1) - (2*j - BH + 1)*(2*j - BH + 1);\r
+ int s = BW*i + j, d = BH*(BH-2) - abs(2*i - BH + 1)*(BH-1) - (2*j - BH + 1)*(2*j - BH + 1);\r
+ PST[s] = 0;\r
PST[BH+s] = d/4 - (i == 0 || i == BH-1 ? 15 : 0) - (j == 0 || j == BH-1 ? 15 : 0);\r
PST[BH*BW+s] = d/6;\r
PST[BH*BW+BH+s] = d/12;\r
nodes++;\r
pv[pvPtr++] = 0; // start empty PV, directly behind PV of parent\r
\r
- firstMove = curMove = sorted = msp += 20; // leave 20 empty slots in front of move list\r
+ firstMove = curMove = sorted = msp += 50; // leave 50 empty slots in front of move list\r
tb.fireMask = phase = 0; iterDep=1; replyDep = (depth < 1 ? depth : 1) - 1;\r
do {\r
if(flag && depth>= 0) printf("iter %d:%d\n", depth,iterDep),fflush(stdout);\r
#if 0\r
if(curEval >= beta) {\r
stm ^= WHITE;\r
- score = -Search(-beta, -iterAlpha, difEval, depth-3, promoSuppress & SQUARE, ABSENT);\r
+ score = -Search(-beta, -iterAlpha, -difEval, depth-3, promoSuppress & SQUARE, ABSENT);\r
stm ^= WHITE;\r
if(score >= beta) { msp = oldMSP; retDep += 3; return score + (score < curEval); }\r
}\r
// MOVE EXTRACTION\r
extractMove:\r
if(flag & depth >= 0) printf("%2d:%d extract %d/%d\n", depth, iterDep, curMove, msp);\r
- if(curMove < sorted) {\r
+ if(curMove > sorted) {\r
move = moveStack[sorted=j=curMove];\r
for(i=curMove+1; i<msp; i++)\r
if(moveStack[i] > move) move = moveStack[j=i]; // search move with highest priority\r