Rename manual source file
[fairymax.git] / fairymax.pod
diff --git a/fairymax.pod b/fairymax.pod
new file mode 100644 (file)
index 0000000..e495219
--- /dev/null
@@ -0,0 +1,126 @@
+=head1 NAME
+
+fairymax - xboard-compatible chess and chess-variant engine 'Fairy-Max'
+
+
+=head1 SYNOPSIS
+
+B<fairymax> [hashSize] [iniFile]
+
+B<shamax> [hashSize] [iniFile]
+
+B<maxqi> [hashSize] [iniFile]
+
+
+=head1 DESCRIPTION
+
+B<fairymax> is a program that plays chess and chess variants. 
+It uses the xboard/winboard chess-engine protocol to communicate.
+Apart from 'regular' chess (also known as the Mad-Queen variant),
+it can play Capablanca chess, gothic chess, knightmate, cylinder chess, 
+berolina chess, superchess, makruk (Thai chess) and courier chess.
+Fairy-Max can be easily configured by the user to play other variants as well,
+by modifying the ini file.
+This ini file describes the rules of movement
+of the participating pieces and the initial board setup.
+
+Fairy-Max can also play shatranj, 
+but in this case is not aware of the shatranj rule that a bare king loses.
+So it might play sub-optimally in the late end-game.
+A version of Fairy-Max adapted to implement the baring rule is
+available under the name B<shamax>.
+
+Similarly, a version of Fairy-Max adapted to play Xiang Qi (Chinese Chess)
+is included in the fmax package as well.
+
+B<fairymax> is a derivative of the world's (once) smallest chess program 
+(source-code wise), micro-Max.
+The latter measures less that 2000 characters, (about 100 code lines),
+and has a computer rating of around 2050 on the CCRL rating list.
+Although this is about 1000 rating points behind the world champion,
+micro-Max still makes a quite tough opponent even for club players,
+although it is not unbeatable.
+
+The main difference between micro-Max and Fairy-Max is that the latter loads
+its move-generator tables, which specify how the various pieces move,
+from an external file, so it can be easily adapted to incorporate un-orthodox pieces.
+For ease of use of the artificial-intelligence, Fairy-Max is equipped with
+I/O routines that allow it to run with the xboard graphical user interface.
+
+See xboard(6) for instructions about how to use B<fairymax> through xboard. To
+start up quickly, you just need the command: B<xboard -fcp fairymax>.
+However, XBoard might not support symbols for every unorthodox piece in board sizes
+different from B<bulky>, B<middling> and B<petite>.
+It might thius be adviasable to specify a board size as well, e.g.
+B<xboard -fcp shamax -boardSize middling -variant shatranj> 
+to get correct display of the elephant and general pieces in shatranj.
+Note that to be able to play the chess variants,
+you will need xboard 4.3.14 or later.
+
+Fairymax supports multi-PV mode: by specifying a non-zero multi-PV margin in the
+Options -> Engine-Settings dialog of XBoard, Fairy-Max will not only print the
+principal variation for the best move, but also for every move that approaches
+the score of this best move to within the set margin.
+(If it does not find the best move on the first try, this might lead to printing
+of a few extra lines below the threshold.)
+
+The fmax.ini file from which Fairy-Max by default takes the piece and game definitions
+is a self-documenting text file,
+which contains instructions for how to define new pieces and chess variants.
+In addition it contains an extensive list of pre-defined pieces,
+incuding many not occurring in any of the pre-defined variants,
+which the user can draw on to define his own variants.
+
+Amongst the move types supported by Fairy-Max are normal leaper and slider moves,
+(e.g. knight and rook),
+divergent moves (i.e. capture and non-capture moves can be different)
+hoppers (which jump over other pieces, such as the Chinese cannon or the grasshopper),
+lame leapers (the move of which can be blocked on squares they cannot move to,
+such as the Chinese horse and elephant),
+and any combination thereof,
+in every possible direction.
+The board width is configurable upto a width of 14 squares,
+and cylindrical boards (where left and right edge connect) are supported as well.
+
+=head1 OPTIONS
+
+=over 8
+
+=item B<hashSize>
+
+If the first argument to fairymax is numeric,
+it is taken as an indicator for the amount of memory Fairy-Max is allowed to use
+for its internal hash table.
+The default value for this argument, 22, would result in a memory usage of 48MB.
+Each next-higher number doubles the memory usage, each next-lower halves it.
+Running with less than 6MB (i.e. argument 19) is not recommended.
+When fairymax is running under xboard 4.3.15 the hash-table size can be set 
+through the xboard menus,
+making this argument superfluous.
+
+=item B<iniFile>
+
+A second or non-numeric first argument is taken as a filename.
+Fairy-max will use the mentioned file in stead of its default fmax.ini file
+to define the movement of pieces and initial setup of the variants.
+This makes it easier to define your own variants.
+
+=back
+
+
+=head1 SEE ALSO
+
+xboard(6)
+
+http://www.chessvariants.org/index/msdisplay.php?itemid=MSfairy-max
+
+http://home.hccnet.nl/h.g.muller/max-src2.html
+
+http://www.open-aurec.com/wbforum/viewtopic.php?t=49439
+
+
+=head1 AUTHOR
+
+B<Fairy-Max> was written by H.G.Muller <h.g.muller@hccnet.nl>.
+
+This manual page was generated with pod2man(1).