H.G.Muller [Tue, 10 Apr 2018 15:53:45 +0000]
Don't assume Knight to be always piece number 6
To determine the number of ranks where dropping is not allowed,
(for pieces that have their drop-limitation flag set in lances[]),
we have to distinguish the Knight. This is now done by assuming that
any piece other than the first two (which are always Pawn and Lance,
even if this requires the Lance to be present as a dummy) is a Knight.
H.G.Muller [Tue, 10 Apr 2018 15:42:31 +0000]
Implement promotion drops
The various routines for generating drop moves are now also able to
generate drops of the promoted version of the piece in hand, controlled
by a variable 'promoDrops'. For now this variable is set to forbid such
drops.
H.G.Muller [Tue, 10 Apr 2018 15:59:51 +0000]
Allow entire board to be promotion zone
The test for determining whether a drop on first or last rank is actually
a drop on first rank (so it would not be subject to restrictions in Shogi)
was not working if the entire board was the promotion zone, as it was based
on being outside the zone for the applicable color. A test directly based
on the square number ow fixes that.
H.G.Muller [Tue, 10 Apr 2018 15:26:08 +0000]
Allow overlapping promotions zones
The white and black contributions to the zone flags are now ORed into
zoneTab[], (which would already have been cleared when starting any new
variant), so that they won't erase each other.
H.G.Muller [Tue, 10 Apr 2018 15:21:53 +0000]
Make reference to mini-Shogi symbolic
I various parts of the code it was assumed that mini-Shogi was listed
as second variant in the variant-definition array. To make it easier
to reshuffle variants a macro MINI_NR, #defined close to the array,
makes it easier to shuffle the order of variants.
H.G.Muller [Tue, 10 Apr 2018 15:09:56 +0000]
Fix recognition of CECP 'level' command
As the sscanf to extract the TC parameters was attempting to match the
initial keyword 'level' as well, while the first byte of the input buffer
had already been zeroed to mark the command as processed, the 'level'
command was completely ignored, and CrazyWa was always playing at its
default TC of 40 moves / 5 min.
H.G.Muller [Tue, 10 Apr 2018 16:07:23 +0000]
Fix taking back of moves
The loop over game history to remake the moves upto the desired position
was incrementing moveNr, but the RootMakeMove() it called already did that
too. With as a result that only white moves were replayed.
H.G.Muller [Tue, 10 Apr 2018 15:01:39 +0000]
Fix recognition of variant 11x17+16_shogi
The general recognition of size-overridden variants prevented that an
name with override prefix was still sought as a full name. And because the
17 does not correspond to the true number of ranks, 11x17+16_shogi was not
recognized from the board parameters either.
The duplicate of euroshogi as size-overridden shogi was misguided, and has
been removed: description of a variant by size overrides is now always
recogized automatically.
H.G.Muller [Tue, 20 Feb 2018 15:37:22 +0000]
Add Euro-Shogi
Adding the new variant Euro-Shogi required one new piece type, as the Knight
there also has a sideway step. This 'Euro-Knight' is added to the Shogi
pieces as an extra piece, so that the promo-codes and piece moves of Shogi
can be used. Only the IDs need to be different, as the N now stands for
Euro-Knight. The variant is added both under the name 'euroshogi' as
engine-defined variant, and 8x8+5_shogi.
H.G.Muller [Mon, 19 Feb 2018 13:12:52 +0000]
Fix Tori and Alien Wa
Slipping in the alternative definition of Wa Shogi as 11x17+16_chu, for
the benefit of the WinBoard Alien Edition, had broken Tori Shogi, as
well as being defective itself, because the ptc[], betza[] and pstType[]
and lances[] tables (which are indexed by the variant number) were not
adapted to the new variant numbering.
H.G.Muller [Sun, 18 Feb 2018 22:18:38 +0000]
Change code for testing acceptable evasion drops
The code deciding whether a piece could be dropped to block a distant check
was dependant on the exact numbering of the variants, making it difficult
to add new variants. It is replaced by code that only requires that variants
without dropping restriction in the last two ranks come behind all others.
The number of the first such variant is given by the constant KNIGHTLESS
(which must be adapted if variants with Knights are added!).
H.G.Muller [Sun, 18 Feb 2018 19:08:02 +0000]
Fix of double-Q-sac fix
The Queen is piece #4 instead of 5.
H.G.Muller [Sun, 18 Feb 2018 14:01:32 +0000]
Bump version to 1.0.5
H.G.Muller [Sun, 18 Feb 2018 11:05:13 +0000]
Bump version number to 1.0.4
This version is functionally equivalent to the one participating in the
computer Crazyhouse championships in December 2016 and 2017, albeit with
a less messy source code.
H.G.Muller [Sun, 18 Feb 2018 10:57:31 +0000]
Make index of Tori Shogi symbolic
The variant number is used in several places to decide the result of
repetitions, and Tori Shogi is special in that respect. To make it
easier to add variants, these tests now use a symbolic constant TORI_NR
rather than a hard-coded '6'.
H.G.Muller [Sun, 18 Feb 2018 10:20:09 +0000]
Fix board corruption on null move
Faking a piece other than the one actually there on the to-square
of a null move interfered with the kludge for testing castling legality,
by actually putting back that piece there. Better solutions should be
possible here.
H.G.Muller [Sun, 18 Feb 2018 10:13:55 +0000]
Suppress initiative bonus after spite check
The bonus for a vulnerable opponent King should be added to the static
eval, but not to the 'undetermined mate score' replacing a stand pat
after a spite check (i.e. a check tossing material) + evasion made
us reach the horizon.
H.G.Muller [Sat, 17 Feb 2018 18:29:29 +0000]
Remove spurious setting of alpha
Alpha is reset at the end of the iteration, and setting it to startAlpha
at the beginning destroys the stand-pat contribution in QS.
H.G.Muller [Sat, 17 Feb 2018 18:26:54 +0000]
Fix score-range return on pin break
The lower end of the score range was not returned when a node was aborted
because the pin test detected King capture.
H.G.Muller [Sat, 17 Feb 2018 13:23:29 +0000]
Remember 12 bits of eval in repeat keys
The repeat key is a combination of the hash key for the board position,
and the evaluation. This is used for detecting pseudo-repeats, where the
eval part is then used to forbid material-buring loops. But burning a
Queen changes the eval by 2*600 = 1200 points, and 12 bits are needed
to store that without (signed!) overflow. As only 11 bits were used,
loops burning a Queen were considered winning. This would still be the
case for loops burning two Queens.
Increasing the number of eval bits to 12 has increased the probability
for a falsely detected pseudo-repetition to one in a million, which still
seems acceptable.
H.G.Muller [Sun, 11 Feb 2018 12:57:56 +0000]
Implement iterative deepening in QS
A depth limit is applied to QS, with the possibility to return a score
range when this limit is hit. If a non-null range survives to the root
of QS, the limit is increased, and QS redone. It should then extend the
tip of the unresolved branches, the resolved branches satisfactorily
present (i.e. with null range or as fail high/low) in the TT.
H.G.Muller [Sun, 11 Feb 2018 11:14:28 +0000]
Fix castling through check
Castling through check, like walking into check, is supposed to be tested
through early move generation in the reply node. But this early generation
was triggered by testing whether the 'to-piece' was a King, while the way
castling is implemented promotes the King to a Rook. This way castling
escaped the test. Now early move generation is done based on the from-piece.
H.G.Muller [Sun, 11 Feb 2018 11:11:54 +0000]
Fix check test
When locating the check tet in a separate routine, the stack frame of
the paret node was used to return the result, rather than that of the
node itself.
H.G.Muller [Sat, 3 Jun 2017 20:11:07 +0000]
Add logo
A PNG image for a logo is added.
H.G.Muller [Sat, 3 Jun 2017 20:09:36 +0000]
Add source for man page
A .pod file is added, to generate a manual page from.
H.G.Muller [Mon, 29 May 2017 18:35:43 +0000]
Define 11x17+16_chu as alias for Wa Shogi
Under the WinBoard 'Alien Edition' Wa Shogi has to be played as a variant
of Chu Shogi with modified board size. To accomodate the holdings, the
board must be 11x17, and needs the extra ranks blacked out. We thus added
11x17+16_chu as a duplicat of crazywa. The blacked-out ranks will appear
in the FEN of a setboard command as asterisks, so the FEN reader had to
be made to ignore these.
H.G.Muller [Mon, 29 May 2017 17:31:58 +0000]
Remove most debug print statements
H.G.Muller [Mon, 29 May 2017 16:23:09 +0000]
Fix typo in anaSP
H.G.Muller [Mon, 29 May 2017 16:21:16 +0000]
Mask sort key from move when storing path
H.G.Muller [Mon, 29 May 2017 15:38:03 +0000]
Make sure no early move generation in null-move reply
Now that we explicitly test for pinning of the e.p. victim, early move
generation (to test for King capture) is only needed after King moves.
But the toPiece on which we test this can be undefined after null move.
Rather than explicitly testing for null move when setting earlyGen,
we set toPiece to a Pawn when making the null move.
H.G.Muller [Mon, 29 May 2017 14:58:11 +0000]
Restore analogy stack pointer on second stand pat
H.G.Muller [Mon, 29 May 2017 14:38:01 +0000]
Clear complete repetition hash
The loop to clear the game history was still using the array bounds from
before the array was enlarged.
H.G.Muller [Mon, 15 May 2017 20:22:17 +0000]
Clear hash table before every move
To make bugs reproducible we temporarily put in code to clear all
hash entries before every move.
H.G.Muller [Mon, 15 May 2017 20:14:21 +0000]
Rehash repetition keys in steps of 1
The repetition key hash table does not store white and black moves
alternately, but in different halves of the table, so to find a slot
for re-hashing we better hunt for empty slots in steps of 1.
H.G.Muller [Mon, 15 May 2017 19:54:37 +0000]
Move Key declaration upstream
H.G.Muller [Mon, 15 May 2017 19:45:31 +0000]
Reduce maxDepth
The maximum search depth is now set to MAXPLY-2, to prevent overflow in
arrays with MAXPLY elements.
H.G.Muller [Mon, 15 May 2017 13:15:08 +0000]
Prevent pawn-drop mates in Shogi
In case of a mate we now check if the previous move was a Pawn drop,
and correct the score to a win if we detect one. In Crazyhouse we
test for check, and correct to draw due to stalemate without one.
H.G.Muller [Mon, 15 May 2017 13:10:33 +0000]
Don't randomize mate scores
The randomization is supposed to be an amount in centi-Pawns, and applying
it to mate distance can prevent finding the mate.
H.G.Muller [Mon, 15 May 2017 13:01:53 +0000]
Return a depth with repeats
When a move is detected to lead to a repeat, we return the corresponding
score with a validity depth just enough to satisfy the current depth
request. This prevents earlier positions contaminated by the score to
last unnecessarily long in the hash table.
H.G.Muller [Mon, 15 May 2017 13:00:02 +0000]
Fix spurious PV after repeat
We simulate return of an empty PV when a move is pruned because
of a repetition.
H.G.Muller [Mon, 15 May 2017 12:55:06 +0000]
Score quasi-repeats somewhat less severe
When there is a choice between a mate and a quasi-repeat, it is better
to go for the latter.
H.G.Muller [Mon, 15 May 2017 12:48:26 +0000]
Evaluate perpetual checks in Shogi variants
Detection of a repeat will now check if it is a perpetual check in variants
whre such is forbidden, (i.e. all but Crazyhouse). The checking side is then
rules to lose.
H.G.Muller [Mon, 15 May 2017 12:38:54 +0000]
Remember ply level at which position previously occurred
By storing the ply level of each latest occurrence of a position,
wecan know how far back to test for perpetuals.
H.G.Muller [Mon, 15 May 2017 12:25:44 +0000]
Enable Knight PST in Crazyhouse
PST to encourage using Knights in attacks are enabled after move 10.
Enabling it earlier would make the engine move only Knights in the opening.
H.G.Muller [Mon, 15 May 2017 12:22:51 +0000]
Record game history
All moves played at game level are remembered in the array gameMove[],
for the benefit of taking back moves.
H.G.Muller [Mon, 15 May 2017 12:16:56 +0000]
Prevent spoiling of castling rights on setup
The undo info is now initialized to a dummy move on a3 rather than a1,
so that the white Q-side castling rules are not immediately spoiled
through suspecting a Rook move.
H.G.Muller [Mon, 15 May 2017 10:02:46 +0000]
Consider extra moves in some horizon nodes
The first node of QS now not only considers captures, but, if the
move leading to it was a check evasion, also check drops. In case
the previous move of the same side was a check evasion, we also try
the killers (which might have been postponed due to the need to evade),
plus check drops.
H.G.Muller [Mon, 15 May 2017 09:36:28 +0000]
Make assert exits dependent on DEBUG switch
The fatal assertion violations are now only occurring in a compile that
has defined the DEBUG macro; normally action is taken to prevent the fault
the error condition would ordinarily cause.
H.G.Muller [Mon, 15 May 2017 09:26:17 +0000]
Apply delayed-loss bonus to analogy
When we stand pat on an analogy, which usually represents the score of a
deeper search, this could be smaller than the current evaluation, and thus
deserve a delayed-loss bonus.
H.G.Muller [Mon, 15 May 2017 09:22:08 +0000]
Return depth after mate-depth pruning
The bound returned mate-depth pruning must be accompanied by a defined
depth.
H.G.Muller [Sun, 14 May 2017 19:34:42 +0000]
Add some Crazyhouse eval terms
Encourage development of Rooks and Bishops in Crazyhouse. Probably this term
should be disabled in other variants, but it is unlikely to trigger there.
H.G.Muller [Sun, 14 May 2017 13:19:38 +0000]
Reduce null move less after first spite check
The null-move reduction is aken one ply less after the first (check, evasion)
pair in a branch, to prevent spite checks pushing unavoidable mates over
the null-search horizon.
H.G.Muller [Sun, 14 May 2017 13:12:11 +0000]
Keep analogy stack pointer
This prepares for maintaining an analogy stack, for recrding suspected
spite checks at eveny (check, evasion) pair that loses material. We also
treat anaEval as a more general replacement (with wider scope) for curEval.
None of this affects the search yet.
H.G.Muller [Sun, 14 May 2017 10:41:21 +0000]
Forbid stand-pat after checking
If the previous two ply were a check and evasion that burned material,
the stand-pat score is replaced by a (somewhat pessimistic) mated-in-50
score. This prevents pushing forced mates over the horizon by series of
spite checks.
H.G.Muller [Tue, 7 Feb 2017 22:14:03 +0000]
Put depth limit on QS
To combat search explosion, QS is limited to 10 ply. This is done by
setting a globalvariable depthLimit when we enter QS. When the limit
is reached, the side to move gets an initiative bonus of 150 on top
of the static eval.
H.G.Muller [Tue, 7 Feb 2017 21:49:07 +0000]
Correct comments in step lists
The white and black Tori-Shogi Goose were swapped in the comment.
H.G.Muller [Tue, 7 Feb 2017 21:39:47 +0000]
Suppress hash cutoffs in root
H.G.Muller [Tue, 7 Feb 2017 21:33:53 +0000]
Implement initiative bonus
An initiative bonus is awarded to the side to move, based on seige of
the opponent King and own pieces in hand. A second attempt to stand pat
on the score including this bonus is then made.
H.G.Muller [Tue, 7 Feb 2017 21:10:04 +0000]
Set return move already when we get new PV
Returning the move at the endof the iteration did not work if the
iteration took an early exit.
H.G.Muller [Tue, 7 Feb 2017 20:57:25 +0000]
Allow up to 1GB hash
Previously 256MB was the maximum.
H.G.Muller [Tue, 7 Feb 2017 20:49:58 +0000]
Inherit killers from before check + evasion
Normally killers of the next level are cleared when we enter a new node.
But if the move reaching the new node was a check evasion, we now set them
to the killers at this evasion level, to see if those still work after a
spite check.
H.G.Muller [Tue, 7 Feb 2017 19:53:00 +0000]
Reduce thinking time in Wa Shogi
Due to the high branching factor time was too aggressively used up in
Wa Shogi. The timeusage is now reduced by 33% to avoid time trouble.
H.G.Muller [Tue, 7 Feb 2017 19:28:38 +0000]
Prevent check evasions can become killers
Check evasions are tactical replies specific to the preceding moves
(as checks cannot be pre-existing), and are thus not suitable for trying
in sibbling nodes that do not check. It is even unlikely they would carry
over to other checks.
H.G.Muller [Tue, 7 Feb 2017 19:23:12 +0000]
Implement mate killers
Moves that force mate aftera check evasion are remembered in a mateKillers
table, indexed by the preceding evasion. Such moves are tried in QS as
reply to the same evasion. This should make it more difficult to push
tsume mates over the horizon by spite checks in a hisshi situation.
H.G.Muller [Tue, 7 Feb 2017 19:09:39 +0000]
Adapt PST for small variants
In mini- and Judkins' Shogi generals now get a bonus of 30 for being
an Alfil jump away from the King corner. And the King gets abonus for
staying in its corner, and less penalty for being in front of his Pawn.
H.G.Muller [Tue, 7 Feb 2017 19:04:42 +0000]
Assign correct PST in all Shogi variants
The available piece-square tables are now assigned dependent on the
variant, where a new variant-idexed table of strings indicates which
table goes with which piece.
H.G.Muller [Mon, 6 Feb 2017 22:13:01 +0000]
Reject obviously wrong hash move
A move with a piece of the wrong color, or a drop of a piece not in hand
will now not be accepted as hash move, and cause the hashed in-check info
to be ignored.
H.G.Muller [Mon, 6 Feb 2017 22:02:30 +0000]
Allow only moves that beat alpha to become best move
In case of a fail low we don't want to sort a garbage move in front for
the next iteration.
H.G.Muller [Mon, 6 Feb 2017 21:57:38 +0000]
Do not try killers when in check
Killer moves are unlikely to be check evasions. Also do not try to test
null killers for (pseudo-)legality.
H.G.Muller [Mon, 6 Feb 2017 21:49:19 +0000]
Fix null move
The null-move search used a null window at alpha, instead of beta.
H.G.Muller [Mon, 6 Feb 2017 21:38:37 +0000]
Fix crash by input-buffer overrun
The input buffer was too small to hold Wa-Shogi FENs.
H.G.Muller [Mon, 6 Feb 2017 21:35:25 +0000]
Implement history heuristic
The non-captures are now sorted by history score before searching them.
H.G.Muller [Mon, 6 Feb 2017 21:27:05 +0000]
Keep track of checking history
An array checkHist[] records checks from the game as well as the search.
H.G.Muller [Mon, 6 Feb 2017 19:54:09 +0000]
Use CECP mate-score convention
Mate in N is now printed as 100000+N.
H.G.Muller [Mon, 6 Feb 2017 18:24:38 +0000]
Allow e.p. capture as check evasion
The routine NonEvade, which vets move when in check before making them,
now recognizes e.p. captures (i.e. diagonal Pawn moves to an empty square)
when a Pawn is checking as a valid evasion.
H.G.Muller [Mon, 6 Feb 2017 18:15:18 +0000]
Indicate last rank in zone table
The least-sigificant bit in the zone table is nowused to indicate first
and second rank. This is used to forbid Pawn drops as check evasions.
Which is OK for crazyhouse, but is overruled on 1st rank for Shogi.
The last-2-ranks bits are suppressed in mini-Shogi (which has no Knight).
H.G.Muller [Mon, 6 Feb 2017 18:05:37 +0000]
Fix deferral
Pieces that could promote would not be allowed to defer. Which is OK for
Crazyhouse, but not for Shogi. Now only pieces that have the must-promote
ormust-promote-one-last-2-ranks flags set get their promotion suppressed
where these flags request it.
H.G.Muller [Mon, 6 Feb 2017 17:57:05 +0000]
Beef up pseudo-legality checking
The routine PseudoLegal, used test killer moves for legality, now checks
if the move is a non-capture, if a dropped piece has the right color,
and accepts Pawn moves (including double-pushes). Castlings are still
rejected.
H.G.Muller [Mon, 6 Feb 2017 17:22:26 +0000]
Penalize King view in eval
An asymmetric eval penalty is given for each square from which a distant
check can be given.
H.G.Muller [Mon, 6 Feb 2017 17:17:22 +0000]
Alter Pawn-shield scoring
H.G.Muller [Mon, 6 Feb 2017 17:07:43 +0000]
Fix King location in Eval
The evaluation routine still assumed location[] was an array of 64,
rather than 96, so it expected the King location in the wrong place.
H.G.Muller [Mon, 6 Feb 2017 17:01:19 +0000]
Penalize King advance
Advancing the King to before the Pawns now gets penalized, both in the
normal evaluation and in the King Seige term. Impasses because of reaching
the promotion zone are awarded.
H.G.Muller [Mon, 6 Feb 2017 16:50:51 +0000]
Increase mate score
Scores can now run to +/- 15000 centi-Pawn; 8000 was dangerously close
to what eval scores could be.
H.G.Muller [Sat, 14 Jan 2017 18:07:55 +0000]
Make minimum LMR depth a macro, foreasy tuning
H.G.Muller [Sat, 14 Jan 2017 18:00:06 +0000]
Respect minimum LMR depth during hash probing
We can add the reduction to the actual search depth to determine up to
which depth a probe result ca be used, but only if the actual depth is
at least the miimumdepth where LMR is allowed.
H.G.Muller [Sat, 14 Jan 2017 17:50:56 +0000]
Prune futile interpositions at d <= 1
A variable ipMask records squares attacked by board moves along the
check ray, immediately after move generation. Evasion drops are then
limited only to such squares, at depth <= 1.
H.G.Muller [Sat, 14 Jan 2017 17:40:30 +0000]
Assert no unexpected King capture
A hash-key collision sometimes leaves a King up for grabs.
H.G.Muller [Sat, 14 Jan 2017 17:33:00 +0000]
Fix depth reporting
Use the original reduction for depth bootstrapping.
H.G.Muller [Sat, 14 Jan 2017 12:11:54 +0000]
Put drops start after castlings
H.G.Muller [Sat, 14 Jan 2017 12:06:23 +0000]
Value castling rights
The evaluation now takes possesion of castling rights into account.
It is also figured out if castling is actually possible.
H.G.Muller [Sat, 14 Jan 2017 11:48:19 +0000]
Keep track of attacked squares near King
The move generator now marks all attacked squares on an auxiliary board.
At the end it counts the number of such squares next to the enemy King,
empty squares and captures separately. It also counts the number of
unattacked empty squares next to the King.
H.G.Muller [Sat, 14 Jan 2017 10:39:13 +0000]
Disarm printing of debug boards
When running under XBoard, printing a board would be seen as Thinking
Output. Now the board lines are prefixedwith #, as CECP requires.
H.G.Muller [Sat, 14 Jan 2017 10:30:20 +0000]
Keep track of total hand values
With the aidof two new tables, handBulk[] (piece-list size) and dropBulk[]
(board sized), we now keep track of the total value of pieces in the hands.
This is stored in the promoGain for piece type 30, (which is not used in
any variant), to easily index it with the side to move.
H.G.Muller [Wed, 28 Dec 2016 19:39:23 +0000]
Implement drop restrictions for Shogi
The various routines for dropping pieces now repect the rules that
pieces should not be dropped where they have no moves.
H.G.Muller [Wed, 28 Dec 2016 18:26:47 +0000]
Suppress check test after null move
After null move we should never be in check, but the test for determining
it would use variables that might not be initialized (like to-square).
Make sure we indicate there is no check (also in checkDist, which is used
testing for distant checks).
H.G.Muller [Wed, 28 Dec 2016 16:40:27 +0000]
Implement castling
MoveGen() now also generates castlings. Legality is tested by the kludge
of replacing the Rook by a second King during the (early) move generation
in the next ply. MakeMove() is refactored to make sure both King and Rook
victim are saved. In addition promotion is now implemented by OR'ing the
promoInc into the piece code,tomake the engine resistent to promoting an
already-promoted piece (e.g. due to hash-move mixup).
H.G.Muller [Wed, 28 Dec 2016 16:01:16 +0000]
Print setup and piece commands in engine-defined variants
A setup command with the start position is now sent whenever a variant
is initialized, and ptc[] contains a piece-to-char table for that variant.
In addition, piece commands are sent when betza[] contains move definitions
for that variant.
H.G.Muller [Wed, 28 Dec 2016 15:47:23 +0000]
Reorder pieces, and define values for all variants
Lance now immediately follows Pawn, so that they can be taken out of the
droppable set together when calculating evasion drops on last rank. The
downside is that the Lance will participate in mini- and Judkins' Shogi
as a non-present piece. The piece IDs of Wa Shogi are changed to conform
with Sjaak II's assigment,and the startup FEN is changed accordingly.
Piece values are assigned for all variants.
H.G.Muller [Wed, 28 Dec 2016 14:17:18 +0000]
Make variants also accessible through systematic names
The engine-defined variants are now also announced as 5x5+5_shogi etc.,
and such names are matched based on the board parameters in the variant-
definition table.
H.G.Muller [Wed, 28 Dec 2016 14:10:53 +0000]
Put Tori Shogi 6th in variant-description list
This to put all variants that have non-Pawn pieces with drop restriction
contiguously.