5c147e5e03
* copy over the xml * Rename anims * A bunch of renames * minor extract_assets fixes * git subrepo pull --force tools/ZAPD subrepo: subdir: "tools/ZAPD" merged: "820678b4e" upstream: origin: "https://github.com/zeldaret/ZAPD.git" branch: "master" commit: "820678b4e" git-subrepo: version: "0.4.3" origin: "???" commit: "???" * Change rgb5a1 to rgba16 * eye and eyebrows * some dlists * git subrepo pull --force tools/ZAPD subrepo: subdir: "tools/ZAPD" merged: "6be9af65d" upstream: origin: "https://github.com/zeldaret/ZAPD.git" branch: "master" commit: "6be9af65d" git-subrepo: version: "0.4.3" origin: "???" commit: "???" |
||
---|---|---|
.. | ||
docs | ||
lib | ||
ZAPD | ||
.clang-format | ||
.gitignore | ||
.gitrepo | ||
copycheck.py | ||
Jenkinsfile | ||
LICENSE | ||
Makefile | ||
README.md | ||
ZAPD.sln |
ZAPD: Zelda Asset Processor for Decomp
Compiling
Dependencies
ZAPD needs a compiler with C++17 support.
ZAPD has the following library dependencies:
libpng
In a Debian/Ubuntu based environment, those could be installed with the following command:
sudo apt install libpng-dev
Building
Linux / *nix
ZAPD uses the clasic Makefile
approach. To build just run make
(or even better make -j
for faster compilations).
You can configure a bit your ZAPD build with the following options:
OPTIMIZATION_ON
: If set to0
optimizations will be disabled (compile with-O0
). Any other value compiles with-O2
. Defaults to1
.ASAN
: If it is set to a non-zero then ZAPD will be compiled with Address Sanitizer enabled (-fsanitize=address
). Defaults to0
.DEPRECATION_ON
: If it is set to a zero then deprecation warnings will be disabled. Defaults to1
.DEBUG
: If non-zero, ZAPD will be compiled in development mode. This implies the following:- Debugging symbols enabled (
-g3
). They are disabled by default. OPTIMIZATION_ON=0
: Disables optimizations (-O0
).DEPRECATION_OFF=1
: Disables deprecation warnings.
- Debugging symbols enabled (
As an example, if you want to build ZAPD with optimizations disabled and use the address sanitizer, you could use the following command:
make -j OPTIMIZATION_ON=0 ASAN=1
Windows
This repository contains vcxproj
files for compiling under Visual Studio environments. See ZAPD/ZAPD.vcxproj
.
Invoking ZAPD
ZAPD needs a File parsing mode to be passed as first parameter. The options are:
e
: "Extraction" mode.- In this mode, ZAPD expects a XML file as input, a folder as ouput and a path to the baserom files.
- ZAPD will read the XML and use it as a guide to extract the contents of the specified asset file from the baserom folder.
- For more info of the format of those XMLs, see the ZAPD extraction XML reference.
bsf
: "Build source file" mode.- This is an experimental mode.
- It was going to be used to let you have XMLs that aren't just for extraction. Might get used, might not. Still need to experiment on that.
btex
: "Build texture" mode.- In this mode, ZAPD expects a PNG file as input, a filename as ouput and a texture type parameter (
-tt
). - ZAPD will try to convert the given PNG into the contents of a
uint64_t
C array.
- In this mode, ZAPD expects a PNG file as input, a filename as ouput and a texture type parameter (
bren
: "Build (render) background" mode.- In this mode, ZAPD expects a JPG file as input and a filename as ouput.
- ZAPD will try to convert the given JPG into the contents of a
uint64_t
C array.
blb
: "Build blob" mode.- In this mode, ZAPD expects a BIN file as input and a filename as ouput.
- ZAPD will try to convert the given BIN into the contents of a
uint8_t
C array.
bovl
: "Build overlay" mode.- In this mode, ZAPD expects an overlay C file as input, a filename as ouput and an overlay configuration path (
-cfg
). - ZAPD will generate a reloc
.s
file.
- In this mode, ZAPD expects an overlay C file as input, a filename as ouput and an overlay configuration path (
ZAPD also accepts the following list of extra parameters:
-i PATH
/--inputpath PATH
: Set input path.-o PATH
/--outputpath PATH
: Set output path.-b PATH
/--baserompath
: Set baserom path.- Can be used only in
e
orbsf
modes.
- Can be used only in
-osf PATH
: Set source output path. This is the path where the.c
and.h
files will be extracted to. If omitted, it will use the value passed to--outputpath
parameter.-gsf MODE
: Generate source file during extraction. IfMODE
is1
, C source files will be generated.- Can be used only in
e
mode.
- Can be used only in
-crc
/--output-crc
: Outputs a CRC file for each extracted texture.- Can be used only in
e
orbsf
modes.
- Can be used only in
-ulzdl MODE
: Use "Legacy ZDisplayList" instead oflibgfxd
. SetMODE
to1
to enable it.- Can be used only in
e
orbsf
modes.
- Can be used only in
-profile MODE
: Enable profiling. SetMODE
to1
to enable it.-uer MODE
: Split resources into their individual components (enabled by default). SetMODE
to non-1
to disable it.-tt TYPE
: Set texture type.- Can be used only in mode
btex
. - Valid values:
rgba32
rgb5a1
i4
i8
ia4
ia8
ia16
ci4
ci8
- Can be used only in mode
-cfg PATH
: Set cfg path (for overlays).- Can be used only in
bovl
mode.
- Can be used only in
-rconf PATH
Read Config File.-eh
: Enable error handler.- Only available in non-Windows environments.
-v MODE
: Enable verbosity. Currently there are 3 possible values:0
: Default. Completely silent (except for warnings and errors).1
: Information.2
(and higher): Debug.
-wu
/--warn-unaccounted
: Enable warnings for each unaccounted block of data found.- Can be used only in
e
orbsf
modes.
- Can be used only in
-vu
/--verbose-unaccounted
: Changes how unaccounteds are outputted. Max 4 bytes per line (a word) and add a comment with the offset of each of those lines.- Could be useful for looking at raw data or testing.
- Can be used only in
e
orbsf
modes.
-tm MODE
: Test Mode (enables certain experimental features). To enable it, setMODE
to1
.-wno
/--warn-no-offsets
: Enable warnings for nodes that dont have offsets specified. Takes priority over-eno
/--error-no-offsets
.-eno
/--error-no-offsets
: Enable errors for nodes that dont have offsets specified.
Additionally, you can pass the flag --version
to see the current ZAPD version. If that flag is passed, ZAPD will ignore any other parameter passed.