For this release a way to specify Shogi as parent variant is all I request!Evert wrote:If I make the board 12x10 and place the extra squares beside the board, I could fit everything in easily. Then I would need to remove the wizard squares from the slider move tables so the board effectively becomes 10x10 with two inactive borders, then hack the move tables so that say "Bd3-a1" becomes a legal move if b1 can be reached and is empty.
For leapers I would need to go over each of the wizard squares, remove it as a valid destination for any of the squares it thinks it can reach, shift the destinations by one rank and then mark the wizard square as a possible destination for all squares that can be reached from it.
The really tricky part might be to prevent things like b9xa10…
Might be fun, actually. However, I don't think I should be hacking in stuff like this in a "release candidate", so if I do something like this it'll be for post 1.0.
But for later: I suppose you are doing rotated bitboards for >64 squares, as 128-square magics seem prohibitively expensive. Or are you doing single-ray magics?
In both cases I don't see any real problems. The mapping of squares to bits is arbitrary in both these techniques. You could just map the 10x10 board on bits 0-99, and use bits 100-103 for the wizzard squares. It means the long diagonals will have 12 squares, but if you are able to handle 12x10 boards, you have ten such rays for the ranks, so you must be able to handle that. Only squares on the long diagonals for generation of diagonal moves would not mask away all of the wizzard squares, but leave in two.
