hgm wrote:Well, the Courier starting position is a debatable issue. It was described to me as a game where the first few move were prescribed.
Yes, that's the description I got as well (from chessvariants.org, I should check what Pritchard says in his book).
The first problem with that description is what the hell "starting position" means if the rules then say that I have to move particular pieces to particular squares before I'm allowed to start thinking. It'd be the same as saying that a chess game starts with an empty board and I have to start by dropping my rooks in the corners, the knights next to the rooks on the back rank, the bishops next to those, the queen on a square of its own colour and the king on the remaining back-rank square and then fill the second rank with pawns.
The second problem is that the prescribed "moves" are all illegal under the normal movement rules of the game (three double pawn pushes and an orthogonal leap of two squares by the ferz).
I could change the starting position in WinBoard, and consider it as a game always starting from a setup position. (So that it will be loaded into the engine.) This is what I do in Makruk, to account for the irregular placement of Pawns.
I think that's a good idea. That's what has to be done manually now anyway to make sure any arbitrary engine works correctly.
Courier was implemented much earlier, before I had thought up that solution. Problem is that WinBoard just stores arrays of back-rank pieces, and not whole boards; everything else (such as the Cannons in Xiangqi) has to be set up by explicit code. Changing the Pawn rank in Makruk was only a single assignment. For Courier you would have to place and delete several pieces.
I actually had code like that in Jazz, from before it could read FEN strings. I pulled it all out the other day and just replaced it with a startup FEN. Much cleaner and easier in the long run (not that it matters that much for Jazz, since it can't play variants).
