Skip to content

shygoo/n64sym

Repository files navigation

n64sym

n64sym is a command-line utility that identifies symbols in N64 games.

Usage

n64sym <input path> [options] 

<input path>

Sets the path of the file to scan. The input file may either be a RAM dump or ROM image.

If the file extension is .z64, .n64, or .v64, the tool will assume the file is a ROM image and attempt to identify the position of the main code segment and adjust the symbol addresses accordingly. Note that scanning a ROM image may yield inaccurate results; using a RAM dump for the input file is recommended.

Options

-s                        scan for symbols from the built-in signature file
-l <sig/lib/obj path(s)>  scan for symbols from signature/object/library file(s)
-f <output format>        set the output format (pj64, nemu, armips, n64split, splat, default)
-o <output path>          set the output path
-h <headersize>           set the header size  (default: 0x80000000)
-t                        scan thoroughly
-v                        enable verbose logging

-s

Scans against the built-in signature file. See Included Libraries for a list of currently included libraries.

-l <sig/lib/obj path(s)>

Scans against signature files and ELF libraries/objects. If a directory path is provided, n64sym will use all *.sig, *.a and *.o files that it finds in the directory tree. This option may be used multiple times.

-f <format>

Sets the output format. Valid formats include pj64, nemu, armips, n64split, splat, and default.

Format Description
pj64 Project64 debugger symbols (*.sym)
nemu Nemu64 bookmarks (*.nbm)
armips armips labels (*.asm)
n64split n64split config labels (*.yaml)
splat splat symbol names (symbol_addrs.txt)
default Space-separated address and symbol name

-o <output path>

Sets the output path. If this option is not used, n64sym will use the standard output.

-h <headersize>

Overrides the header size (displacement of memory address against absolute file address). By default this value is either 0x80000000 or the entry point if the input file is a ROM image.

-t

Enables thorough scanning. When this option is enabled, the scanner will check every byte of the input file instead of only checking spots that look like functions.

-v

Enables verbose output.

Examples

n64sym paper_mario_ram.bin -s -f "pj64" -o "C:/Project64/Save/PAPER MARIO.sym"
n64sym "Super Mario 64 (U).z64" -s -f "n64split" -o "sm64config.yaml"
n64sym "Ronaldinho Soccer 64.z64" -l "./libultra" | grep "osPiStartDma"

n64sig

n64sig is a command-line utility that generates n64sym-compatible signature files.

Usage

n64sig [options] > output_path

Options

-l <lib/obj path(s)>  generate signatures from object/library file(s)
-f <format>           set the output format (json, default)

Building

Utilities

Run make to build n64sym and n64sig.

Built-in signatures

Create a directory in the project root named oslibs and drop the desired library/object files in it. Then run make rebuild_sigs to rebuild src/builtin_signatures.sig and web/signatures.json.