💡📝H. G. Muller wrote on Fri, Jul 10, 2009 08:27 AM UTC:
I am occasionally still doing some work on Fairy-Max, but I have way too many programming projects. Lately work on Fairy-Max was limitd to making derivatives of it dedicated to a specific variant with unique properties. MaxQi for playing Xiangqi was one result of this (included in the Debian package). Currently I am working on implementing drop moves in Fairy-Max, to make it play Twilight Chess.
The 8-rank restriction is not very easy to lift. The board size is unfortunately very much intertwined with the promotion evaluation code, which uses properties of the specific bit patterns of the rank numbers to derive the bonuses of 64 'centiPawn' for pushing a Pawn from 5th to 6th or 6th to 7th rank. This is a legacy of its micro-Max ancestry, where compctness of the code was the only criterion. So the promotion evaluation would have to be re-written when the number of ranks is different.
Fairy-Max also uses the most-significant bit of the toSquare as a flag to indicate the move is valid, and on boards with more than 8 ranks this bit would be needed for the rank number. I already did solve that in MaxQi, which needs of course more than 8 ranks, with its 9x10 board. Xiangqi has no promotion, of course, so I did not have to deal with that. MaxQi is a bit of an odd-ball version of Fairy-Max, though, because I layed out the board sideways, to facilitate the testing for eye-to-eye Kings. Despite
that it would still be a better starting point for making an 8+ ranks
Fairy-Max, rotating back the board so that the original fmax.ini files
can be understood again (this only affects the code for board setup and
translation of input and output moves to square numbers in the interface),
and newle written promotion code can then be added.
Unfortunately micro-Max was not designed for easy code maintenance...