Evert wrote: (but you can't enable all of them because then the holding size is too large for XBoard, so most are disabled when playing through XBoard).
Indeed, this is an annoying problem. It also crops up in Wa Shogi, which has 16 piece types that could get into the hand, and only an 11x11 board. The kludge solution is to define it as an 11x16 board with the upper 5 ranks blacked out. Quite ugly, though. Double-column holdings would also be awkward, as XBoard uses the blacked-out column between the board and holdings to hold and display the counts. So you would need an extra blacked-out coulumn too, so you end up with (11+8)x11, which is hardly an improvement over (11+4)x16.
Perhaps a solution is to allow holdings both next to and above/below the board? Pieces that map to holding squares larger than the number of board ranks could then be re-mapped to the top/bottom holdings. Would require a lot of code changes in XBoard, though. And for only Wa that seems hardly worth it. (Although now that I have studied the Wa rules better, is seems to me that Wa with drops could be a very good game.)
For Seirawan-type games this is really unfortunate, as captured pieces do not go to the holdings there, so that space reserved for the types initially not in hand is wasted space. The assignment of holdings square to piece type is done by a function PieceToNr in XBoard (which was already a big improvement over using the internal piece code itself, which was initially done, as now it can ignore piece types disabled in the pieceToCharTable). So PieceToNr could be made to check for variant seirawan, and work different in that case. But how could it know which pieces to skip? Internally it could have an array of booleans that for each piece type tells if it requires holding space, and I guess this could be set from the holdings in the setup FEN in seirawan-type games.
Note that for Musketeer dumping all exo-pieces into the holdings initially is not really what you want, as the user could then gate all of them. And even if you restricted the number of gatings, they could decide to gate different sets of pieces. Preselection of which two types you will be allowed to gate is still an essential part of the rules here, even if you do away with preselection of where they are allowed to be gated. So I don't really think that Musketeer would need such an extended holdings.
The best way to set up a tourney would be to play multiple games per pairing, with each possible pre-selection of piece types. E.g. if there are 6 exo-pieces, this makes 6*5/2 = 15 possible pairs, and you could play 2x15 games per pairing to try them all. If that is too much, one could make a selection of the pairs. The various choices of which piece types participate basically define sub-variants.
Fairy-Max should have little problems in being configured for playing each of these sub-variants as a different game. It would just be a matter of re-defining the move of the Hawk and Elephant in Seirawan Chess (which it already plays) to that of the Musketeer pieces that should participate, and all these piece types are within the capabilities of Fairy-Max' generic move generator.