dtk-template/config/GAMEID/config.example.yml

178 lines
7.4 KiB
YAML
Raw Normal View History

# NOTE: All paths in this file can utilize decomp-toolkit's VFS (virtual file system).
# This allows you to directly reference files inside of containers (disc images, .arc, etc.).
# Files compressed with Yaz0 (SZS), Yay0 (SZP) are automatically decompressed.
# Files compressed with NLZSS (Nintendo LZSS) can use a `:nlzss` suffix to decompress.
# See https://github.com/encounter/decomp-toolkit#vfs-ls for more information on the VFS.
# (optional) Main module name. Defaults to "main".
name: main
2023-10-05 03:26:02 +00:00
# Path to the main.dol file.
object: sys/main.dol
2023-10-05 03:26:02 +00:00
# (optional) SHA-1 hash of the main.dol file for verification.
hash: 0123456789abcdef0123456789abcdef01234567
# (optional) If set, all object paths will be relative to this directory.
# If not set, all object paths will be relative to the root of the project.
# decomp-toolkit will search the root of this directory for any disc images. (ISO, RVZ, WBFS, etc.)
# If a disc image is found, decomp-toolkit will fetch all objects from the disc image instead of the filesystem.
# For example, if `game.iso` exists in the `object_base`, the object path would become the VFS path
# `orig/GAMEID/game.iso:sys/main.dol`. See information on the VFS above.
object_base: orig/GAMEID
# (optional) If true, objects will be extracted from a disc image into `object_base`.
# This allows users to delete the disc image after the initial build to save space.
# Enabled by default if `object_base` is set.
extract_objects: true
2023-10-05 03:26:02 +00:00
# (optional) Path to the symbols.txt file.
# This file will be created if it does not exist.
# See docs/symbols.md for more information.
symbols: config/GAMEID/symbols.txt
# (optional) Path to the splits.txt file.
# This file will be created if it does not exist.
# See docs/splits.md for more information.
splits: config/GAMEID/splits.txt
# (optional) Path to the DOL's .map file.
# This path is relative to the root of the project, and is _not_ affected by `object_base`.
2023-10-05 03:26:02 +00:00
# This should only used for initial analysis, and generating the symbols and splits files.
# Once those files are generated, remove this to avoid conflicts.
map: orig/GAMEID/files/main.MAP
# (optional) Start address of common BSS symbols, if any.
# Useful along with `map`, but not required otherwise, since common BSS
# is marked in the splits file.
common_start: 0x80001234
# (optional) Version used to generate `.comment` sections in the split objects.
# If not specified, no `.comment` sections will be generated.
# See docs/comment_section.md for more information.
2024-03-05 06:30:38 +00:00
# Known versions:
# 8 - CodeWarrior for GameCube 1.0+
# 10 - CodeWarrior for GameCube 1.3.2+
# 11 - CodeWarrior for GameCube 2.7+
# 14 - CodeWarrior for GameCube 3.0a3+
2023-10-05 03:26:02 +00:00
mw_comment_version: 8
# (optional) Path to `selfile.sel` for Wii games with RSO files.
# Relative to `object_base` if set, otherwise relative to the root of the project.
selfile: files/selfile.sel
2023-10-05 03:26:02 +00:00
# (optional) SHA-1 hash of the `selfile.sel` file for verification.
selfile_hash: 0123456789abcdef0123456789abcdef01234567
# (optional) When enabled, function boundary analysis will be skipped.
# Only valid _after_ initial analysis has been performed and
# the symbols and splits files have been generated.
quick_analysis: false
# (optional) When enabled, the analyzer will attempt to detect sizes
# and data types of objects based on code usage and alignment.
detect_objects: true
# (optional) When enabled, the analyzer will attempt to detect strings,
# wide strings, and string tables.
detect_strings: true
# (optional) Whether to write disassembly to the split output directory.
# While not used in the build process, the disassembly is useful
# for reading and usage with other tools, like decomp.me.
write_asm: true
# (optional) If symbols are _fully_ known (e.g. from a complete map file),
# this can be set to true to skip most analysis steps, and ensure new
# symbols are not created by the analyzer.
# If you're not sure, leave this false.
symbols_known: false
# (optional) Whether to create `gap_` symbols to prevent the linker from
# adjusting the alignment / address of symbols.
# When alignments are fully known (e.g. from a complete map file),
# this can be set to false.
fill_gaps: true
# (optional) By default, emitted objects will "export" all symbols (force active).
# This is useful to prevent the linker from removing any symbols.
# Individual symbols can be excluded using `noexport` in the symbols file.
export_all: true
2023-10-05 03:26:02 +00:00
# (optional) Custom template for `ldscript.lcf`. Avoid unless necessary.
# See https://github.com/encounter/decomp-toolkit/blob/main/assets/ldscript.lcf
ldscript_template: config/GAMEID/module/ldscript.tpl
# (optional) Configuration for modules.
modules:
- # Path to the module.
# Relative to `object_base` if set, otherwise relative to the root of the project.
object: files/module.rel
2023-10-05 03:26:02 +00:00
# (optional) SHA-1 hash of the module for verification.
hash: 0123456789abcdef0123456789abcdef01234567
# (optional) Name of the module. Defaults to the module's filename.
name: module
# (optional) Path to the module's symbols.txt file.
# This file will be created if it does not exist.
# See docs/symbols.md for more information.
symbols: config/GAMEID/module/symbols.txt
# (optional) Path to the module's splits.txt file.
# This file will be created if it does not exist.
# See docs/splits.md for more information.
splits: config/GAMEID/module/splits.txt
# (optional) Path to the module's .map file.
# See `map` above for more information.
map: orig/GAMEID/files/module.MAP
# (optional) Mark symbols as "force active" / "exported".
force_active: []
# (optional) Custom template for `ldscript.lcf`, if needed.
# See https://github.com/encounter/decomp-toolkit/blob/main/assets/ldscript_partial.lcf
ldscript_template: config/GAMEID/module/ldscript.tpl
2023-11-26 05:45:22 +00:00
# (optional) By default, every REL is linked with every other REL.
# Some games link RELs individually, so the module IDs are not unique.
# To support this, `links` overrides which other modules are included in this module's analysis.
# The DOL is always included, and does not need to be specified.
links: [module2] # This module will be linked with the DOL and "module2".
2023-11-26 05:45:22 +00:00
# (optional) Configuration for asset extraction.
# For modules, this goes in the module's configuration above.
2023-11-26 05:45:22 +00:00
extract:
- # The symbol name to extract.
2024-09-18 01:20:51 +00:00
# To disambiguate local symbols with the same name, use:
# `SomeSymbol!.section:0x80001234`
2023-11-26 05:45:22 +00:00
symbol: SomeSymbol
# (optional) The path to extract raw binary data to.
# Path is relative to `build/GAMEID/bin`.
binary: Lib/SomeSymbol.bin
# (optional) The path to extract a C array representation to.
# In a C/C++ file, the symbol can be included with `#include "Lib/SomeSymbol.inc"`.
# Path is relative to `build/GAMEID/include`.
2024-09-18 01:20:51 +00:00
header: Lib/SomeSymbol.inc
# (optional) Block relocations from or to specific addresses.
# For modules, this goes in the module's configuration above.
block_relocations:
# Block any relocation pointing _to_ this address.
- target: .data:0x80130140
# Block any relocation originating _from_ this address.
- source: .text:0x80047160
# (optional) End address to make it a range.
end: .text:0x800471A8
# (optional) Add or replace relocations if they were detected incorrectly.
# For modules, this goes in the module's configuration above.
add_relocations:
# From: `subi r3, r3, 0x7657`
# To: `li r3, mesWInsert-0x1@sda21`
- source: .text:0x800473F4
type: sda21
target: mesWInsert # Supports `symbol` or `symbol!.section:0x80001234`
addend: -1