Command-line Tools

Note

The --help parameter can be used to see a list of commands available to each CLI tool. To see usage information for a specific subcommand, --help should be specified after the command.

Ex: $ lmar x --help

Note

Windows users running the pylivemaker CLI tools in CMD Prompt or PowerShell should ensure that your terminal font supports Japanese characters, otherwise the pylivemaker console output may be unreadable. The default terminal font in Windows 10 (Consolas) does not support Japanese characters, and needs to be changed to some font which includes Japanese characters (such as MS Gothic). Running pylivemaker CLI tools should not require changing your entire Windows system locale to Japanese.

lmar

Use lmar to work with LiveMaker archives and executables. When handling split VFF archives, lmar commands should be passed the path to the .ext index file (if it exists). For split archives without separate index files, the path to the first .dat file in the archive (usually game.dat) should be used.

$ lmar --help
Usage: lmar [OPTIONS] COMMAND [ARGS]...

  Command-line tool for manipulating LiveMaker archives and EXEs.

Options:
  --version  Show the version and exit.
  --help     Show this message and exit.

Commands:
  l      List the contents of the specified archive.
  strip  Copy the specified LiveMaker EXE but remove the LiveMaker archive.
  x      Extract the specified archive.

l (list)

List the contents of a LiveMaker archive or executable.

$ lmar l --help
Usage: lmar l [OPTIONS] INPUT_FILE

  List the contents of the specified archive.

Options:
  --help  Show this message and exit.

strip

lmar strip copies only the Windows executable portion of a LiveMaker game .exe, and strips the game archive data from the output file. This command should generally only be used by interested in reverse engineering the LiveMaker engine/interpreter.

$ lmar strip --help
Usage: lmar strip [OPTIONS] INPUT_FILE OUTPUT_FILE

  Copy the specified LiveMaker EXE but remove the LiveMaker archive.

  The resulting program cannot be run, but may be useful for reverse
  engineering or patching reasons.

Options:
  --help  Show this message and exit.

x (extract)

Extract the contents of a LiveMaker archive or executable.

Image format modes:

gal (default)
LiveMaker GAL (.gal) images will be extracted in their original format.
png
Images will be converted to PNG before extraction.
both
Both the original GAL image and a converted PNG version will be extracted.

Note

Refer to the documentation for galconvert for details on image conversion.

$ lmar x --help
Usage: lmar x [OPTIONS] file

  Extract the specified archive.

Options:
  -n, --dry-run          Show what would be done without extracting any files.
  -i, --image-format [gal|png|both]
                              Format for extracted images, defaults to GAL
                              (original) format. If set to png, images
                              will be converted before extraction. If set
                              to both, both the original GAL and converted
                              PNG images will be extracted
  -o, --output-dir TEXT  Output directory, defaults to current working
                         directory.
  -v, --verbose
  --help                 Show this message and exit.

lmgraph

Generate a graphviz DOT syntax graph of branches between LiveNovel script files.

The output .dot file can be used with graphviz (or online tools like http://viz-js.com/) to create a visual (PNG/PDF/etc) approximation of the original LiveMaker/LiveNovel scenario flowchart. The output graph will include menu choice/route branch conditions (as edge labels) if possible.

Note

The script currently uses a very naive implementation for following branch conditions, so the output labels may not always be 100% accurate. Conditions based on route flag variables may not be labeled properly, depending on the complexity of the original script logic.

$ lmgraph --help
Usage: lmgraph [OPTIONS] LSB_FILE [OUT_FILE]

  Generate a DOT syntax graph for a LiveNovel game.

  lsb_file should be a path to the root script node - this should always be
  ゲームメイン.lsb (game_main.lsb) for LiveMaker games. If output file is not
  specified, it defaults to <lsb_file>.dot

  The output graph will start with game_main as the root node and follow
  branches to all scenario scripts, which should give a general
  approximation of the original LiveMaker scenario chart.

Options:
  --version  Show the version and exit.
  --help     Show this message and exit.

lmlpb

Use lmlpb to work with LPB (LiveMaker project settings) files.

$ lmlpb --help
Usage: lmlpb [OPTIONS] COMMAND [ARGS]...

  Command-line tool for manipulating LPB project settings.

Options:
  --version  Show the version and exit.
  --help     Show this message and exit.

Commands:
  edit   Edit the specified LPB file.
  probe  Output information about the specified LPB file in human-readable...

probe

Output general information about an LPB file.

Usage: lmlpb probe [OPTIONS] file

  Output information about the specified LPB file in human-readable form.

Options:
  --help  Show this message and exit.

edit

Edit project settings within an LPB file.

lmlpb edit provides an interactive prompt that can be used to modify project settings in an LPB file.

For users generating translation patches, this command may be useful for modifying the application name, certain message prompts, and the default text display and audio settings.

Warning

This command should only be used by advanced users. Do not edit an LPB setting unless you are absolutely sure of what that setting does. Improper use of this command may cause undefined behavior (or a complete crash) in the LiveMaker engine during runtime.

$ lmlpb edit --help
Usage: lmlpb edit [OPTIONS] LPB_FILE

  Edit the specified LPB file.

  Only specific settings can be edited.

  The original LPB file will be backed up to <lpb_file>.bak

  Note: Setting empty fields to improper data types may cause undefined
  behavior in the LiveMaker engine. When editing a field, the data type of
  the new value is assumed to be the same as the original data type.

Options:
  --help  Show this message and exit.

lmlsb

Use lmlsb to work with LSB (compiled LiveMaker chart) files.

$ lmlsb --help
Usage: lmlsb [OPTIONS] COMMAND [ARGS]...

  Command-line tool for manipulating LSB scripts.

Options:
  --version  Show the version and exit.
  --help     Show this message and exit.

Commands:
  batchinsert  Compile specified LNS script directory and insert it into
               the...

  dump         Dump the contents of the specified LSB file(s) to stdout in
               a...

  edit         Edit the specified command within an LSB file.
  extract      Extract decompiled LiveNovel scripts from the specified
               input...

  extractcsv   Extract text from the given LSB file to a CSV file.
  extractmenu  Extract menu choices from the given LSB file to a CSV file.
  insert       Compile specified LNS script and insert it into the
               specified...

  insertcsv    Apply translated text lines from the given CSV file to given...
  insertmenu   Apply translated menu choices from the given CSV file to...
  probe        Output information about the specified LSB file in...
  validate     Verify that the specified LSB file(s) can be processed.

batchinsert

Insert multiple LNS scripts into an LSB file. The SCRIPT_DIR argument should be a path to a directory generated by lmlsb extract (as batchinsert relies on the .lsbref file generated by extract).

$ lmlsb batchinsert --help
Usage: lmlsb batchinsert [OPTIONS] LSB_FILE SCRIPT_DIR

  Compile specified LNS script directory and insert it into the specified
  LSB file according to the Reference file.

  The Reference file must be inside script_dir.

  script_dir should be an LNS script directory which was initially generated
  by lmlsb extract.

  The original LSB file will be backed up to <lsb_file>.bak unless the --no-
  backup option is specified.

Options:
  -e, --encoding [cp932|utf-8]  The text encoding of script_file (defaults to
                                utf-8).
  --no-backup                   Do not generate backup of original archive
                                file(s).
  --help                        Show this message and exit.

dump

Dump the contents of one or more LSB file(s) in a human-readable format.

Output format modes:

text (default)
Plaintext that resembles LiveMaker’s text .lsc format (but is not a 1 to 1 match with LiveMaker’s format).
xml
XML that resembles LiveMaker’s XML .lsc format (but is not a 1 to 1 match with LiveMaker’s format).
lines
Only plaintext LNS script lines will be dumped. No LSB command data and no LNS script tag formatting will be included in the output. (This may be useful for generating a more traditional “script” to be used by translators.)
$ lmlsb dump --help
Usage: lmlsb dump [OPTIONS] INPUT_FILE...

  Dump the contents of the specified LSB file(s) to stdout in a human-
  readable format.

  For text mode, the full LSB will be output as human-readable text.

  For xml mode, the full LSB file will be output as an XML document.

  For lines mode, only text lines will be output.

Options:
  -m, --mode [text|xml|lines]   Output mode (defaults to text)
  -e, --encoding [cp932|utf-8]  Output text encoding (defaults to utf-8).
  -o, --output-file FILE        Output file. If unspecified, output will be
                                dumped to stdout.
  --help                        Show this message and exit.

edit

Edit a specific command within an LSB file.

lmlsb edit provides an interactive prompt that can be used to modify an LSB command. This is command is mainly only provided as a (slightly) more user-friendly way of editing specific byte fields within an LSB file.

For users generating translation patches, this command may be useful for modifying text display parameters, and for modifying in-game “choice menu” text.

For more specific usage/implementation details refer to the thread in issue #9.

Note

Only a specific subset of command types (and a specific set of parameters for each editable command type) can be modified via lmlsb edit.

Warning

This command should only be used by advanced users. Do not edit an LSB command parameter unless you are absolutely sure of what that parameter does. Improper use of this command may cause undefined behavior (or a complete crash) in the LiveMaker engine during runtime.

$ lmlsb edit --help
Usage: lmlsb edit [OPTIONS] LSB_FILE LINE_NUMBER

  Edit the specified command within an LSB file.

  Only specific command types and specific fields can be edited.

  The original LSB file will be backed up to <lsb_file>.bak

  WARNING: This command should only be used by advanced users familiar with
  the LiveMaker engine. Improper use of this command may cause undefined
  behavior (or a complete crash) in the LiveMaker engine during runtime.

  Note: Setting empty fields to improper data types may cause undefined
  behavior in the LiveMaker engine. When editing a field, the data type of
  the new value is assumed to be the same as the original data type.

Options:
  --help  Show this message and exit.

extract

Extract (decompiled) LiveNovel scenario scripts from an LSB file.

Note

The LNS format generated by pylivemaker is not an exact 1 to 1 match with LiveMaker’s original LiveNovel script format. When modifying a script extracted via this command, users should be aware that all of LiveMaker’s “pseudo-HTML” LiveNovel script tags are not supported by pylivemaker. For a detailed list of supported tags and how they are used by pylivemaker, please refer to the livemaker/lsb/novel.py source code.

$ lmlsb extract --help
Usage: lmlsb extract [OPTIONS] INPUT_FILE...

  Extract decompiled LiveNovel scripts from the specified input file(s).

  By default, extracted scripts will be encoded as utf-8, but if you intend
  to patch a script back into an LSB, you will still be limited to cp932
  characters only.

  Output files will be named <LSB name>-<scenario name>.lns

Options:
  -e, --encoding [cp932|utf-8]  Output text encoding (defaults to utf-8).
  -o, --output-dir DIRECTORY    Output directory. Defaults to the current
                                working directory if not specified. If
                                directory does not exist it will be created.
  --help                        Show this message and exit.

insert

Insert a single LNS script into an LSB file.

Users generating translation patches may be more interested in batchinsert.

lmlsb insert --help
Usage: lmlsb insert [OPTIONS] LSB_FILE SCRIPT_FILE LINE_NUMBER

  Compile specified LNS script and insert it into the specified LSB file.

  The LSB command at line_number must be a TextIns command. The existing
  text block of the specified TextIns command will be replaced with the new
  one from script_file.

  script_file should be an LNS script which was initially generated by lmlsb
  extract.

  The original LSB file will be backed up to <lsb_file>.bak unless the --no-
  backup option is specified.

Options:
  -e, --encoding [cp932|utf-8]  The text encoding of script_file (defaults to
                                utf-8).
  --no-backup                   Do not generate backup of original archive
                                file(s).
  --help                        Show this message and exit.

extractcsv

Extract LiveNovel scenario text lines from an LSB file to a CSV file.

Note

Only text lines are extracted, so some formatting information may be lost. For translating games which make heavy use of formatting tags, you may need to consider using lmlsb extract and lmlsb insert to translate fully decompiled scripts instead of using the CSV commands.

lmlsb extractcsv --help
Usage: lmlsb extractcsv [OPTIONS] LSB_FILE CSV_FILE

  Extract text lines from the given LSB file to a CSV file.

  You can open this csv file for translation in most table calc programs
  (Excel, open/libre office calc, ...). Just remember to choose comma as
  delimiter and " as quotechar.

  You can use the --append option to add the text data from this lsb file to
  a existing csv. With the --overwrite option an existing csv will be
  overwritten without warning.

  NOTE: Formatting tags will be lost when using this command in conjunction
  with insertcsv. For translating games which use formatting tags, you may
  need to work directly with LNS scripts using the extract and
  insert/batchinsert commands.

Options:
  --overwrite  Overwrite existing csv file.
  --append     Append text data to existing csv file.
  --help       Show this message and exit.

insertcsv

Insert (translated) LiveNovel scenario text lines from a CSV file into an LSB file.

lmlsb insertcsv --help
Usage: lmlsb insertcsv [OPTIONS] LSB_FILE CSV_FILE

  Apply translated text lines from the given CSV file to given LSB file.

  CSV_FILE should be a file previously created by the extractcsv command,
  with added translations. The original LSB file will be backed up to
  <lsb_file>.bak unless the --no-backup option is specified.

Options:
  --no-backup  Do not generate backup of original lsb file.
  --help       Show this message and exit.

probe

Output general information about an LSB file.

Most of the information generated by lmlsb probe is only useful to developers, but users generating translation patches may be interested in the script character/line counts.

lmlsb probe --help
Usage: lmlsb probe [OPTIONS] file

  Output information about the specified LSB file in human-readable form.

  Novel script scenario character and line count are estimates. Depending on
  how a script was originally created, actual char/line counts may vary.

Options:
  --help  Show this message and exit.

validate

Validate that LSB file(s) can be processed by pylivemaker.

This command is probably only useful for pylivemaker developers.

$ lmlsb validate --help
Usage: lmlsb validate [OPTIONS] file

  Verify that the specified LSB file(s) can be processed.

  Validation is done by disassembling an input file, reassembling it, and
  then comparing the SHA256 digests of the original and reassembled versions
  of the file.

  If a file contains text scenarios, a test will also be done to verify that
  the scenarios can be decompiled, recompiled, and then reinserted into the
  lsb file.

Options:
  --help  Show this message and exit.

lmpatch

Use lmpatch to replace individual LSB files in an existing LiveMaker archive or executable.

$ lmpatch --help
Usage: lmpatch [OPTIONS] EXE_FILE PATCHED_LSB

  Patch a LiveMaker game.

  Any existing version of patched_lsb will be replaced in the specified
  LiveMaker executable. If a file with the same name as patched_lsb does not
  already exist, this will do nothing.

  A backup copy of the old exe will also be created.

Options:
  --help  Show this message and exit.

galconvert

galconvert can be used to convert from LiveMaker’s Gale/GaleX (GAL) image format into any format supported by PIL/Pillow.

Note

It is recommended to convert to image formats which support transparency (alpha channel) such as PNG. If a GAL image contains multiple frames, only the first frame will be used when converting to a format which does not support multiple frames.

Direct conversion to GAL format is not currently supported. If you need to generate GAL images, it is recommended to use LiveMaker’s BmpToGale program in conjunction with lmbmp.

galconvert --help
Usage: galconvert [OPTIONS] INPUT_FILE OUTPUT_FILE

  Convert the image to another format.

  GAL(X) images can only be read (for conversion to JPEG/PNG/etc) at this
  time.

  Output format will be determined based on file extension.

Options:
  -f, --force  Overwrite output file if it exists.
  --help       Show this message and exit.

lmbmp

lmbmp can be used to convert an image to a set of bitmap files which can then be used with LiveMaker’s BmpToGale tool.

$ lmbmp --help
Usage: lmbmp [OPTIONS] INPUT_FILE

  Convert image to BMP(s) which can be used with bmp2gale.

  If the input file contains an alpha layer, a mask bitmap will be
  generated. Output files will be named <input_name>.bmp and
  <input_name>-m.bmp.

Options:
  --version    Show the version and exit.
  -f, --force  Overwrite output file if it exists.
  --help       Show this message and exit.