[9x10endgame1:chess] archbishop = a maxRank = 9 maxFile = 10 nMoveRule = 500 startFen = 3R6/10/3n6/K2ak5/10/10/10/10/10 w - - 0 1 [9x10endgame2:chess] centaur = c maxRank = 9 maxFile = 10 nMoveRule = 500 startFen = 10/10/3kn5/3n6/10/10/10/8CK/10 w - - 0 1 [9x10endgame3:chess] maxRank = 9 maxFile = 10 nMoveRule = 500 startFen = 10/10/10/3k6/10/10/10/7NBK/10 w - - 0 1 [9x10endgame4:chess] archbishop = a maxRank = 9 maxFile = 10 nMoveRule = 500 startFen = 3R6/10/3b6/K2ak5/10/10/10/10/10 w - - 0 1 [9x10endgame5:chess] centaur = c maxRank = 9 maxFile = 10 nMoveRule = 500 startFen = 10/10/10/3kr5/10/10/10/7NCK/10 w - - 0 1 [9x10endgame6:chess] archbishop = a maxRank = 9 maxFile = 10 nMoveRule = 500 startFen = 10/4B5/5N4/10/k1K7/10/10/10/10 w - - 0 1 [9x10endgame7:chess] centaur = c maxRank = 9 maxFile = 10 nMoveRule = 500 startFen = 10/10/3kn5/3b6/10/10/10/8CK/10 w - - 0 1 [9x10endgame8:chess] maxRank = 9 maxFile = 10 nMoveRule = 500 startFen = 10/10/10/3kr5/10/10/10/7KQ1/10 w - - 0 1 [9x10endgame9:chess] archbishop = a maxRank = 9 maxFile = 10 nMoveRule = 500 startFen = 3R6/10/3n6/3ak5/10/10/10/5K4/10 w - - 0 1 [9x10endgame10:chess] archbishop = a maxRank = 9 maxFile = 10 nMoveRule = 500 startFen = kan7/10/10/10/10/4RK4/10/10/10 w - - 0 1 [9x10centaurCastling:chess] maxRank = 10 maxFile = 9 doubleStepRank = 3 promotionRank = 9 archbishop = a chancellor = h castlingKingsideFile = g castlingQueensideFile = c centaur = c nMoveRule = 100 promotionPieceTypes = acqh startFen = rnbqkqbnr/rnbcqcbnr/ppppppppp/9/9/9/9/PPPPPPPPP/RNBCQCBNR/RNBQKQBNR w KQkq - 0 1 [9x10centaurCastling1:chess] maxRank = 10 maxFile = 9 doubleStepRank = 3 promotionRank = 9 archbishop = a chancellor = h castlingKingsideFile = h castlingQueensideFile = b centaur = c nMoveRule = 100 promotionPieceTypes = acqh startFen = rnbqkqbnr/rnbcqcbnr/ppppppppp/9/9/9/9/PPPPPPPPP/RNBCQCBNR/RNBQKQBNR w KQkq - 0 1 [9x10endgame11:chess] centaur = c maxRank = 9 maxFile = 10 nMoveRule = 500 startFen = KQ8/Q9/10/10/10/10/10/8cc/8ck w - - 0 1 [9x10endgame12:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = 9/4KNN2/9/9/9/4P4/9/4p4/9/4k4 b - - 0 1 [9x10endgame13:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = 9/4K4/9/4N4/9/5N3/9/4pP3/9/4k4 b - - 0 1 [9x10endgame14:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = 9/9/9/5N3/5NK2/9/9/7p1/9/k7N b - - 0 1 [9x10endgame15:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = 9/9/7K1/7N1/9/8N/2k6/5p3/2N6/9 b - - 0 1 [9x10endgame16:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = 9/7k1/5K3/5N3/5N3/9/9/7p1/9/6N2 b - - 0 1 [9x10endgame17:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = 9/R8/5R3/8k/2n6/9/9/7p1/9/5K3 b - - 0 1 [9x10endgame18:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = 9/R8/9/8K/9/9/2k6/7p1/9/9 b - - 0 1 [9x10endgame19:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = 9/K8/9/8k/2B6/9/9/7p1/9/5R3 b - - 0 1 [9x10endgame20:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = 8K/8R/8R/9/9/9/9/9/9/kqn6 b - - 0 1 [9x10endgame21:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = 9/K8/9/8k/2N6/9/9/7p1/9/5R3 b - - 0 1 [9x10endgame22:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = 9/9/9/8k/2b6/9/9/2KC3p1/9/9 b - - 0 1 [9x10endgame23:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = 9/KC7/9/8k/2b6/9/9/7p1/9/9 b - - 0 1 [9x10endgame24:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = 9/6k2/9/6b2/9/2CB5/9/1K3p3/9/5q3 w - - 0 1 [9x10endgame25:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = 9/K8/9/8k/2N6/9/9/7p1/9/5R3 b - - 0 1 [9x10endgame26:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = 9/9/9/9/9/4k4/7NN/4p2PK/9/9 b - - 0 1 [9x10endgame27:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = 9/6k2/9/6n2/9/2CB5/9/1K3p3/9/5q3 w - - 0 1 [9x10endgame28:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = 9/9/9/9/9/9/3k3NN/2p4PK/9/9 b - - 0 1 [9x10endgame29:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = 9/9/9/9/9/2k6/6NN1/3p2PK1/9/9 b - - 0 1 [9x10centaur1:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = rnbqkqbnr/rnbcqcbnr/ppppppppp/ppppppppp/9/9/PPPPPPPPP/PPPPPPPPP/RNBCQCBNR/RNBQKQBNR w - - 0 1 [9x10centaur:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = rnbqkqbnr/rnbcqcbnr/ppppppppp/9/9/9/9/PPPPPPPPP/RNBCQCBNR/RNBQKQBNR w - - 0 1 [9x10archbishop:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = rnbqkqbnr/rnbaqabnr/ppppppppp/9/9/9/9/PPPPPPPPP/RNBAQABNR/RNBQKQBNR w - - 0 1 [9x10chancellor:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = rnbqkqbnr/rnbahabnr/ppppppppp/9/9/9/9/PPPPPPPPP/RNBAHABNR/RNBQKQBNR w - - 0 1 [9x10queenless:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = rnbckcbnr/rnbahabnr/ppppppppp/9/9/9/9/PPPPPPPPP/RNBAHABNR/RNBCKCBNR w - - 0 1 [9x8centaur:chess] maxRank = 8 maxFile = 9 centaur = c nMoveRule = 500 startFen = rnbqkqbnr/rnbcqcbnr/ppppppppp/9/9/PPPPPPPPP/RNBCQCBNR/RNBQKQBNR w - - 0 1 [9x10a:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = rnbqkqbnr/rnbcacbnr/ppppppppp/9/9/9/9/PPPPPPPPP/RNBCACBNR/RNBQKQBNR w - - 0 1 [9x10q:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = rnbqkqbnr/rnb1a1bnr/ppppppppp/9/9/9/9/PPPPPPPPP/RNB1A1BNR/RNBQKQBNR w - - 0 1 [9x10:chess] doubleStepRank = 3 maxRank = 10 maxFile = 9 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = rnbckcbnr/rnb1a1bnr/ppppppppp/9/9/9/9/PPPPPPPPP/RNB1A1BNR/RNBCKCBNR w - - 0 1 [13x10:chess] doubleStepRank = 3 maxRank = 10 maxFile = 13 promotionRank = 9 centaur = c archbishop = a chancellor = h promotionPieceTypes = acqh nMoveRule = 500 startFen = rnnbbqkqbbnnr/rnnbbahabbnnr/ppppppppppppp/13/13/13/13/PPPPPPPPPPPPP/RNNBBAHABBNNR/RNNBBQKQBBNNR w - - 0 1 ### Usage: # Add "load" and the file path to the SF call (e.g., "stockfish.exe load variants.ini") # or set the UCI option "VariantPath" to the path of this file in order to load it. # In order to validate the configuration without actually loading the variants # run "stockfish.exe check variants.ini", which reports potential config errors. ################################################ ### Variant configuration: # The variant name needs to be specified as a section in square brackets, # followed by its rule configurations as key-value pairs as described below. # If you encounter problems configuring variants, please report them at: # https://github.com/ianfab/Fairy-Stockfish/issues ### Inheritance # If a variant is similar to a previously defined variant, # inheritance can be used to simplify the definition. To inherit from the # configuration of an existing variant, specify the parent variant after the child # variant name separated by a colon, e.g., [gothic:capablanca]. # When inheritance is used, only the differences to the parent variant need to be defined, # see the examples in this file, e.g., 3check-crazyhouse. # When no inheritance is used, the default template applies, # which is basically standard chess but without any predefined pieces. ### Piece types # Firstly, the piece types for a variant need to be defined. # For that, specify the letter used for each piece type, e.g.: # pawn = p # # See the list below for all available predefined piece types (and their Betza notation): # pawn (fmWfceF) # knight (N) # bishop (B) # rook (R) # queen (Q) # fers (F) # alfil (A) # fersAlfil (FA) # silver (FfW) # aiwok (RNF) # bers (RF) # archbishop (BN) # chancellor (RN) # amazon (QN) # knibis (mNcB) # biskni (mBcN) # kniroo (mNcR) # rookni (mRcN) # shogiPawn (fW) # lance (fR) # shogiKnight (fN) # gold (WfF) # dragonHorse (BW) # clobber (cW) # breakthrough (fmWfF) # immobile () # cannon (mRcpR) # janggiCannon (pR) # soldier (fsW) # horse (nN) # elephant (nA) # janggiElephant (nZ) # banner (RcpRnN) # wazir (W) # commoner (K) # centaur (KN) # king (K) ### Custom pieces # Custom pieces can be defined by using one of the available slots: # customPiece1, customPiece2, ..., customPiece25 # E.g., pawns without double steps could be described as: # customPiece1 = p:mfWcfF # # You can define custom king movements in the same way you can define another custom piece. # E.g., to make the king move like a centaur: # king = k:KN # In constrast to other custom pieces the Betza notation for the king is optional though # and defaults to a standard chess king (betza: K) when skipped, e.g.: # king = k # # The movements of custom pieces can be defined using the Betza notation. # https://www.gnu.org/software/xboard/Betza.html # In Fairy-Stockfish only a subset of Betza notation can be used. The supported features are: # - all base moves/atoms (W, F, etc.) # - all directional modifiers (f, b, etc.) # - limited and unlimited distance sliders/riders for W/R, F/B, and N directions # - hoppers and grasshoppers for W/R and F/B directions, i.e., pR, pB, gR, and gB # - lame leapers (n) for N, A, and Z directions, i.e., nN, nA, and nZ ### Piece values # The predefined and precalculated piece values can be overriden # by specifying the pieceValueMg and pieceValueEg options, e.g., # pieceValueMg = p:150 n:800 # pieceValueEg = p:200 n:900 # # For orientation, the internal predefined piece values can be found in types.h. # A suitable piece for gauging the piece values is the rook, which internally has: # pieceValueMg = r:1276 # pieceValueEg = r:1380 ### Option types # [bool]: boolean flag to enable/disable a feature [true, false] # [Rank]: denotes a rank of the board [1-10] # [File]: denotes a file of the board [1-12, a-i] # [int]: any natural number [0, 1, ...] # [PieceType]: a piece type [letters defined for pieces, e.g., p] # [Bitboard]: list of squares [e.g., d4 e4 d5 e5]. * can be used as wildcard for files (e.g., *1 is the first rank) # [Value]: game result for the side to move [win, loss, draw] # [MaterialCounting]: material couting rules for adjudication [janggi, unweighted, whitedrawodds, blackdrawodds, none] # [CountingRule]: makruk or ASEAN counting rules [makruk, asean, none] # [ChasingRule]: xiangqi chasing rules [axf, none] # [EnclosingRule]: reversi or ataxx enclosing rules [reversi, ataxx, none] ### Additional options relevant for usage in Winboard/XBoard # A few options only have the purpose of improving compatibility with Winboard/Xboard. # These do not need to be specified when using other GUIs, but can be essential for Winboard/Xboard. # # variantTemplate: base variant to inherit GUI logic from [values: fairy, shogi, bughouse] (default: fairy) # pieceToCharTable: mapping of piece characters to images, # see https://www.gnu.org/software/xboard/whats_new/4.9.0/index.html#tag-B1 (default: -) # pocketSize: number of pockets shown by XBoard/WinBoard for drop variants [int] (default: 0) ### Rule definition options # maxRank: maximum rank [Rank] (default: 8) # maxFile: maximum file [File] (default: 8) # chess960: allow chess960 castling [bool] (default: false) # twoBoards: the game is influenced by a second board (e.g., bughouse) [bool] (default: false) # startFen: FEN of starting position (default: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1) # mobilityRegion: the mobility area can be defined via options specific to color and piece, # .e.g., mobilityRegionWhiteRook, mobilityRegionBlackJanggiElephant, etc. [Bitboard] # promotionRank: relative rank required to reach for promotion [Rank] (default: 8) # promotionPieceTypes: pawn promotion options using their one-letter representations (default: nbrq) # sittuyinPromotion: enable Sittuyin-style pawn promotion [bool] (default: false) # promotionLimit: maximum number of pieces of a type, e.g., q:1 r:2 (default: ) # promotedPieceType: mapping between unpromoted and promoted non-pawn piece types, e.g., p:g s:g (default: ) # piecePromotionOnCapture: piece promotion only allowed on captures (e.g., micro shogi) [bool] (default: false) # mandatoryPawnPromotion: pawn promotion is mandatory [bool] (default: true) # mandatoryPiecePromotion: piece promotion (and demotion if enabled) is mandatory [bool] (default: false) # pieceDemotion: enable demotion of pieces (e.g., Kyoto shogi) [bool] (default: false) # blastOnCapture: captures explode all adjacent non-pawn pieces (e.g., atomic chess) [bool] (default: false) # doubleStep: enable pawn double step [bool] (default: true) # doubleStepRank: relative rank from where pawn double steps are allowed [Rank] (default: 2) # doubleStepRankMin: earlist relative rank from where pawn double steps are allowed [Rank] (default: 2) # enPassantRegion: define region (target squares) where en passant is allowed after double steps [Bitboard] # castling: enable castling [bool] (default: true) # castlingDroppedPiece: enable castling with dropped rooks/kings [bool] (default: false) # castlingKingsideFile: destination file of king after kingside castling [File] (default: g) # castlingQueensideFile: destination file of king after queenside castling [File] (default: c) # castlingRank: relative rank of castling [Rank] (default: 1) # castlingKingFile: starting file of the castlingKingPiece if there can be more than one of that type [File] (default: e) # castlingKingPiece: first piece type that participates in castling [PieceType] (default: k) # castlingRookPiece: second piece type that participates in castling [PieceType] (default: r) # checking: allow checks [bool] (default: true) # dropChecks: allow checks by piece drops [bool] (default: true) # mustCapture: captures are mandatory (check evasion still takes precedence) [bool] (default: false) # mustDrop: drops are mandatory (e.g., for Sittuyin setup phase) [bool] (default: false) # mustDropType: piece type for which piece drops are mandatory [PieceType] (default: *) # pieceDrops: enable piece drops [bool] (default: false) # dropLoop: captures promoted pieces are not demoted [bool] (default: false) # capturesToHand: captured pieces are go to opponent's hand [bool] (default: false) # firstRankPawnDrops: allow pawn drops to first rank [bool] (default: false) # promotionZonePawnDrops: allow pawn drops in promotion zone [bool] (default: false) # dropOnTop: piece drops need to be on top of pieces on board (e.g., for connect4) [bool] (default: false) # enclosingDrop: require piece drop to enclose pieces [EnclosingRule] (default: none) # enclosingDropStart: drop region for starting phase disregarding enclosingDrop (e.g., for reversi) [Bitboard] # whiteDropRegion: restrict region for piece drops of all white pieces [Bitboard] # blackDropRegion: restrict region for piece drops of all black pieces [Bitboard] # sittuyinRookDrop: restrict region of rook drops to first rank [bool] (default: false) # dropOppositeColoredBishop: dropped bishops have to be on opposite-colored squares [bool] (default: false) # dropPromoted: pieces may be dropped in promoted state [bool] (default: false) # dropNoDoubled: specified piece type can not be dropped to the same file (e.g. shogi pawn) [PieceType] (default: -) # dropNoDoubledCount: specifies the count of already existing pieces for dropNoDoubled [PieceType] (default: 1) # immobilityIllegal: pieces may not move to squares where they can never move from [bool] (default: false) # gating: maintain squares on backrank with extra rights in castling field of FEN [bool] (default: false) # arrowGating: allow gating in Game of the Amazons style [bool] (default: false) # seirawanGating: allow gating of pieces in hand like in S-Chess, requires "gating = true" [bool] (default: false) # cambodianMoves: enable special moves of cambodian chess, requires "gating = true" [bool] (default: false) # diagonalLines: enable special moves along diagonal for specific squares (Janggi) [Bitboard] # pass: allow passing [bool] (default: false) # passOnStalemate: allow passing in case of stalemate [bool] (default: false) # makpongRule: the king may not move away from check [bool] (default: false) # flyingGeneral: disallow general face-off like in xiangqi [bool] (default: false) # soldierPromotionRank: restrict soldier to shogi pawn movements until reaching n-th rank [bool] (default: 1) # flipEnclosedPieces: change color of pieces that are enclosed by a drop [EnclosingRule] (default: none) # nMoveRule: move count for 50/n-move rule [int] (default: 50) # nFoldRule: move count for 3/n-fold repetition rule [int] (default: 3) # nFoldValue: result in case of 3/n-fold repetition [Value] (default: draw) # nFoldValueAbsolute: result in case of 3/n-fold repetition is from white's point of view [bool] (default: false) # perpetualCheckIllegal: prohibit perpetual checks [bool] (default: false) # moveRepetitionIllegal: prohibit moving back and forth with the same piece nFoldRule-1 times [bool] (default: false) # chasingRule: enable chasing rules [ChasingRule] (default: none) # stalemateValue: result in case of stalemate [Value] (default: draw) # stalematePieceCount: count material in case of stalemate [bool] (default: false) # checkmateValue: result in case of checkmate [Value] (default: loss) # shogiPawnDropMateIllegal: prohibit checkmate via shogi pawn drops [bool] (default: false) # shatarMateRule: enable shatar mating rules [bool] (default: false) # bikjangRule: consider Janggi bikjang (facing kings) rule [bool] (default: false) # extinctionValue: result when one of extinctionPieceTypes is extinct [Value] (default: none) # extinctionClaim: extinction of opponent pieces can only be claimed as side to move [bool] (default: false) # extinctionPseudoRoyal: treat the last extinction piece like a royal piece [bool] (default: false) # extinctionPieceTypes: list of piece types for extinction rules, e.g., pnbrq (* means all) (default: ) # extinctionPieceCount: piece count at which the game is decided by extinction rule (default: 0) # extinctionOpponentPieceCount: opponent piece count required to adjudicate by extinction rule (default: 0) # flagPiece: piece type for capture the flag win rule [PieceType] (default: -) # whiteFlag: white's target region for capture the flag win rule [Bitboard] (default: ) # blackFlag: black's target region for capture the flag win rule [Bitboard] (default: ) # flagMove: black gets one more move after white captures the flag [bool] (default: false) # checkCounting: enable check count win rule (check count is communicated via FEN, see 3check) [bool] (default: false) # connectN: number of aligned pieces for win [int] (default: 0) # materialCounting: enable material counting rules [MaterialCounting] (default: none) # countingRule: enable counting rules [CountingRule] (default: none)