Provided by: xoreos-tools_0.0.5-1build4_amd64 bug

NAME

     ncsdis — BioWare NWScript bytecode disassembler

SYNOPSIS

     ncsdis [options] input_file [output_file]

DESCRIPTION

     ncsdis disassembles NCS files, compiled bytecode of the NWScript scripting language used by
     every single Aurora engine game, except for the Nintendo DS game Sonic Chronicles: The Dark
     Brotherhood.  The output, while not as clear as the C-like source code that produced the
     bytecode, is human-readable.

     ncsdis is meant as a better maintainable and more complete replacement of the disassembly
     mode found in the OpenKnights nwnnsscomp tool.  As such, it fixes provides these
     enhancements:
     ·   Compilable in 64-bit mode
     ·   Out of the box support for all Aurora engine games
     ·   Support for array opcodes added in Dragon Age: Origins
     ·   Support for reference opcodes added in Dragon Age II
     ·   Knowledge of additional variable types
     ·   No need to provide an external nwscript.nss file

     Additionally, ncsdis can create a dot file specifying a control flow graph of the
     disassembly.  It can be plotted into a graph by the dot(1) tool of the GraphViz suite.

     WARNING: these graphs can get very large very quickly.  To keep the resulting image small,
     set a small font and font size when calling GraphViz, and decrease the nodesep and ranksep
     values.

     Since there is no way to automatically detect for which game this script is, this
     information must be provided on the command.  If no game is specified, the ACTION opcode
     that call an engine function, such as “GetModule” or trigonometry functions, will only
     display a number instead of a function name.

OPTIONS

     -h
     --help
           Show a help text and exit.
     --version
           Show version information and exit.
     --list
           Create a full disassembly listing, including byte addresses and the raw bytecode,
           similar to the disassembly mode of nwnnsscomp.  This is the default mode.
     --assembly
           Only create the human-readable mnemonics part of the disassembly listing.  Useful for
           modifying and extending the script.
     --dot
           Create a flow control graph in the dot language, to be plotted by the GraphViz suite.
     --stack
           Print the stack frame for each instruction.  Only available in list or assembly mode,
           not in dot mode.
     --control
           Print detected control structures inside block nodes.  Only available in dot mode.
     --nwn
           Use engine function tables of the game Neverwinter Nights.
     --nwn2
           Use engine function tables of the game Neverwinter Nights 2.
     --kotor
           Use engine function tables of the game Star Wars: Knights of the Old Republic.
     --kotor2
           Use engine function tables of the game Star Wars: Knights of the Old Republic II  The
           Sith Lords.
     --jade
           Use engine function tables of the game Jade Empire.
     --witcher
           Use engine function tables of the game The Witcher.
     --dragonage
           Use engine function tables of the game Dragon Age: Origins.
     --dragonage2
           Use engine function tables of the game Dragon Age II.
     input_file
           The NCS file to disassemble.
     output_file
           The disassembly will be written there.  If no output file is specified, the
           disassembly will be written to stdout.

EXAMPLES

     Disassemble the script file.ncs:

           $ ncsdis file.ncs file.lst

     Disassemble the script file.ncs and write the listing to stdout:

           $ ncsdis file.ncs

     Disassemble the Jade Empire script file.ncs:

           $ ncsdis --jade file.ncs file.list

     Disassemble the Jade Empire script file.ncs in pure disassembly mode:

           $ ncsdis --assembly --jade file.ncs file.asm

     Create a dot graph file of the Neverwinter Nights script file.ncs:

           $ ncsdis --dot --nwn file.ncs file.dot

     Create a dot graph file of the Neverwinter Nights script file.ncs and plot it:

           $ ncsdis --dot --nwn file.ncs | dot -Gnodesep=0.1 -Granksep=0.1 \
             -Gfontname="Courier New" -Nfontname="Courier New" -Gfontsize=10 \
             -Nfontsize=8 -Earrowsize=0.5 -Tpng > file.png

SEE ALSO

     dot(1), nwnnsscomp(1)

     More information about the xoreos project can be found on its website: https://xoreos.org/.

AUTHORS

     This program is part of the xoreos-tools package, which in turn is part of the xoreos
     project, and was written by the xoreos team.  Please see the AUTHORS file for details.