Configuration can be set in two ways. There is the .heromeshrc file in
your home directory, which is a X resource manager file, and you can also
specify settings in command-line arguments after the puzzle set name, each
of which is a X resource manager string.
In the .heromeshrc file, the first component of each resource is the name
of the puzzle set (you can use ? for all puzzle sets); in command-line,
that is omitted, and the setting name is the first component.
Some settings are boolean. For boolean settings, anything that starts with
"0", "n", "N", "f", or "F" is false, and anything that starts with "1",
"y", "Y", "t", or "T" is true. If neither, the default setting is used.
See bindings.doc for key/mouse bindings.
=== Resources ===
.altImage
If the puzzle set contains multiple pictures with the same name and size
then this resource controls which of those pictures is selected. The
default setting is zero.
.audio.buffer
Buffer length for audio, as the number of samples. In order for audio to
work at all, this value must be set.
.audio.mmlTempo
Define the number of quarter notes per minute. The default is 120.
.audio.mmlTuning
The MML tuning of the A4 note, in Hz. The default is 440 Hz, but some
people do not like that tuning, so you can change it. This setting only
affects 24-TET sounds, and not overtone-based sounds.
.audio.mmlVolume
MML volume, from 0 to 1; fractions are allowed. The default value is
approximately one third. Set it to zero to disable MML sounds.
.audio.rate
Sample rate to use for audio, in hertz. In order for audio to work at
all, this value must be set.
.audio.standardSounds
The name of the Hamster archive file containing the standard sounds. If
not specified, then the standard sounds won't work.
.audio.waveVolume
Wave volume, from 0 to 1; fractions are allowed. The default value is 1.
If this is zero, then it will not load any sound effects, but MML sounds
will still work (if .audio.buffer and .audio.rate are set correctly).
.autoSave
If true, saves changes to the level and solution files when the program
terminates. If false (default), they are only saved to the user cache
database; to copy the changes to the level and solution files, you must
use the .u command in SQL mode (-x), or use the -f switch.
.autoWin
SQL statement to execute if you win a level. The format is the same as
for a key/mouse binding, but must be a SQL statement, and the only valid
parameters are $LEVEL and $LEVEL_ID. Furthermore, '^E', '^Q', ':s', and
':x' are not valid.
.codepage
The path to the code page file. If not specified, then code pages other
than 437 are not available (code page 437 is built-in).
.codepage.ignore
If true, then ignore any errors loading code pages that cannot be found.
This does not affect the behaviour of the game but may result in text
being displayed incorrectly. If false (the default setting), then it is
an error if a puzzle set specifies a code page that is not available.
.editTitle
The window title to use in edit mode. A tilde is replaced by the name of
the puzzle set.
.gameTitle
The window title to use in game mode. A tilde is replaced by the name of
the puzzle set.
.gamma
Gamma setting. If this is set, colours are gamma corrected by the number
specified here. The default setting is 1.0.
.hash
Hash algorithm to use for some features; this must be one of the numbers
for hash algorithms listed in the hash.h source file. Can be decimal, or
hexadecimal if it starts with "0x".
.imageSize
The picture size to use, up to 255. If the puzzle set contains pictures
of the requested size, it will use those, otherwise it will try to make
the pictures it does have larger by integer scaling; if that also does
not work, then it is an error.
.keyRepeat
The keyboard repeat rate, which are two numbers, first the key repeating
delay and then the key repeating interval.
.level
Specifies the 1-based order number of the level to start at. If the -+
switch is specified, then it is a 0-based ID number instead.
.listColumns
Number of columns in the wide mode of the list of levels. If zero or not
specified, determines automatically by the screen width.
.listMode
Mode for list of levels, in hexadecimal, where bit0 is set for tall mode
or clear for wide mode, and bit1 is set for listing the ID numbers or
clear for listing the order numbers, and bit2 is set to display the list
of divisions initially, instead of the list of levels.
.margin
The X coordinate of the left margin. To the left is the status area, and
to the right of the margin is the playfield. This should be at least 64,
or the picture size, whichever is greater.
.maxTrigger
If nonzero, the maximum number of times that the trigger phase may loop
during each turn (it starts counting from zero each turn). If it loops
more, it displays an error message and results in loss of game. (This
does not prevent other kinds of infinite loops, though.)
.palette
If defined, the file name of the palette to use (if not set, then the
internal palette is used instead). The file format is hex rrggbb format
separated by any kind of whitespaces.
.pasteCommand
The command to use for pasting text from the clipboard. When it asks for
a single line of text, you can push SHIFT+INSERT to paste.
.picedit.macro.?
Define a macro in the picture editor, if you push ALT and a letter,
will execute a SQL statement.
.progress
If positive, how many steps between dots in the progress report for the
auto testing mode. If negative, number of milliseconds to sleep before
each level is executed.
.replaySpeed
When the slow replay is used, sets the playback speed; this is a number
of centiseconds between turns from 1 to 255.
.saveSolutions
If true, then solutions are saved if you solve a level in less moves
than the currently recorded solution (or if no solution is already
recorded). This has no effect in read-only mode.
.saveSolutions.private
If true, then solutions are saved like .saveSolutions but they are saved
privately to the user cache database, instead of in the solution file.
This works even in read-only mode.
.screenFlags
SDL flags: d = double buffer, f = full screen, h = use hardware surface,
n = no window frame, p = hardware palette, r = allow the window to be
resized, y = asynchronous blit, z = no parachute. Some flags might not
work if the window manager does not support them.
.screenHeight
Height of the window (not counting the border), in pixels. This should
be at least 480; the default is 600.
.screenWidth
Width of the window (not counting the border), in pixels. This should
be at least 640; the default is 800.
.showInventory
True means to show the inventory in the margin by default; false means
to show the move list in the margin by default. Either way, it is
possible to change the display at run time.
.solutionComment
If defined, record the specified text as the solution comment, whenever
a solution is recorded.
.solutionTimestamp
If true, record a timestamp with the solution.
.sqlCoveringIndexScan
Boolean controlling if SQLite will use covering index scans.
.sqlExtensions
Names of SQLite extensions with spaces in between.
.sqlFile
Name of the user cache database. If not set, then it will use the file
name of the configuration file replacing "rc" at the end with "session";
usually this is the file called .heromeshsession in the home directory,
but with some configurations (e.g. portable mode) it might not be.
.sqlInit
SQL codes to execute when Free Hero Mesh starts.
.sqlMemStatus
Boolean controlling if SQL memory status is available.
.sqlSmallAllocations
Boolean controlling if SQLite will try to make small allocations.
.stackProtection
Controls protection from stack overflows; this only works if the C
compiler supports this feature, otherwise there is no effect. If the
first character is ? then the stack protection test mode will be
activated; it will display the call stack usage. The first character
may also be < or > for a stack growing down or up, followed by the
maximum number of bytes to use (in decimal, or hexadecimal with "0x"
at first). Note that not all C functions will check for the stack
protection, so it will use a small amount more than specified here.
.traceAll
If true, then all classes and messages are allowed for tracing. However,
there is no effect unless tracing is enabled.
.traceObject
If defined, and tracing is enabled, then it is an error for the
specified object to be freed during the game; you can use this to
debug errors with the use of a specific non-existent objects. You
specify as the object ID number and generation number, separated by
a colon. (This is how it is displayed in the examination screen.)
.tracePrefix
If defined, trace output is prefixed by the specified text.