2022-11-27 06:37:29 +00:00
|
|
|
[package]
|
|
|
|
name = "decomp-toolkit"
|
2023-08-03 22:55:57 +00:00
|
|
|
description = "Yet another GameCube/Wii decompilation toolkit."
|
2022-11-27 06:37:29 +00:00
|
|
|
authors = ["Luke Street <luke@street.dev>"]
|
|
|
|
license = "MIT OR Apache-2.0"
|
2024-10-04 04:32:19 +00:00
|
|
|
version = "1.1.0"
|
2022-11-27 06:37:29 +00:00
|
|
|
edition = "2021"
|
|
|
|
publish = false
|
|
|
|
repository = "https://github.com/encounter/decomp-toolkit"
|
|
|
|
readme = "README.md"
|
|
|
|
categories = ["command-line-utilities"]
|
Load objects from disc image & `vfs` module
Revamps support for container paths and centralizes logic into a VFS (virtual file system) module.
The new VFS architecture supports disc images and any layer of nesting.
For example, the following command works:
`dtk dol info 'Interactive Multi-Game Demo Disc - July 2002 (USA).rvz:files/zz_StarFox051702_e3.tgc:files/default.dol'`
This opens a TGC file inside an RVZ disc image, then reads `default.dol` in the FST.
Another example:
`dtk rel info 'Legend of Zelda, The - The Wind Waker (USA).rvz:files/RELS.arc:mmem/f_pc_profile_lst.rel'`
This opens a RARC archive inside an RVZ disc image, loads the Yaz0-compressed REL and
decompresses it on the fly.
This all operates in memory with minimal overhead, with no need to extract temporary files.
Supported container formats:
- Disc images (ISO/GCM, WIA/RVZ, WBFS, CISO, NFS, GCZ, TGC)
- RARC/SZS and U8 (.arc)
Supported compression formats:
- Yaz0 (SZS)
- Yay0 (SZP)
- NLZSS (.lz)
Additionally, projects can utilize a new configuration key `object_base`:
```
object: orig/GZLE01/sys/main.dol
modules:
- object: orig/GZLE01/files/RELS.arc:rels/mmem/f_pc_profile_lst.rel
```
becomes
```
object_base: orig/GZLE01
object: sys/main.dol
modules:
- object: files/RELS.arc:mmem/f_pc_profile_lst.rel
```
When loading the objects, decomp-toolkit will automatically check the `object_base`
directory for any disc images. (They can be named anything, but must be in the folder
root) If one is found, all objects will be fetched from the disc image itself, rather
than having to extract the files manually.
While still a work in progress, two new `vfs` commands were added: `vfs ls` and `vfs cp`.
These commands are very barebones currently, but allow listing directory contents and
extracting files from decomp-toolkit's vfs representation:
```
❯ dtk vfs ls disc.rvz:
files
sys
❯ dtk vfs ls disc.rvz:sys
boot.bin
bi2.bin
apploader.bin
fst.bin
main.dol
❯ dtk vfs cp disc.rvz:sys/main.dol .
```
2024-10-04 03:50:35 +00:00
|
|
|
rust-version = "1.80.0"
|
2022-11-27 06:37:29 +00:00
|
|
|
|
|
|
|
[[bin]]
|
|
|
|
name = "dtk"
|
|
|
|
path = "src/main.rs"
|
|
|
|
|
2022-12-10 06:28:23 +00:00
|
|
|
[profile.release]
|
|
|
|
panic = "abort"
|
2023-11-18 20:03:24 +00:00
|
|
|
|
|
|
|
[profile.release-lto]
|
|
|
|
inherits = "release"
|
2024-09-10 02:36:18 +00:00
|
|
|
lto = "fat"
|
2022-12-10 06:28:23 +00:00
|
|
|
strip = "debuginfo"
|
2024-09-10 02:36:18 +00:00
|
|
|
codegen-units = 1
|
2022-12-10 06:28:23 +00:00
|
|
|
|
2022-11-27 06:37:29 +00:00
|
|
|
[dependencies]
|
2024-09-10 02:36:18 +00:00
|
|
|
anyhow = { version = "1.0", features = ["backtrace"] }
|
2023-01-28 04:15:52 +00:00
|
|
|
ar = { git = "https://github.com/bjorn3/rust-ar.git", branch = "write_symbol_table" }
|
2024-09-10 02:36:18 +00:00
|
|
|
argp = "0.3"
|
|
|
|
base16ct = "0.2"
|
|
|
|
base64 = "0.22"
|
|
|
|
crossterm = "0.28"
|
|
|
|
cwdemangle = "1.0"
|
2024-10-04 04:24:54 +00:00
|
|
|
cwextab = "1.0"
|
Load objects from disc image & `vfs` module
Revamps support for container paths and centralizes logic into a VFS (virtual file system) module.
The new VFS architecture supports disc images and any layer of nesting.
For example, the following command works:
`dtk dol info 'Interactive Multi-Game Demo Disc - July 2002 (USA).rvz:files/zz_StarFox051702_e3.tgc:files/default.dol'`
This opens a TGC file inside an RVZ disc image, then reads `default.dol` in the FST.
Another example:
`dtk rel info 'Legend of Zelda, The - The Wind Waker (USA).rvz:files/RELS.arc:mmem/f_pc_profile_lst.rel'`
This opens a RARC archive inside an RVZ disc image, loads the Yaz0-compressed REL and
decompresses it on the fly.
This all operates in memory with minimal overhead, with no need to extract temporary files.
Supported container formats:
- Disc images (ISO/GCM, WIA/RVZ, WBFS, CISO, NFS, GCZ, TGC)
- RARC/SZS and U8 (.arc)
Supported compression formats:
- Yaz0 (SZS)
- Yay0 (SZP)
- NLZSS (.lz)
Additionally, projects can utilize a new configuration key `object_base`:
```
object: orig/GZLE01/sys/main.dol
modules:
- object: orig/GZLE01/files/RELS.arc:rels/mmem/f_pc_profile_lst.rel
```
becomes
```
object_base: orig/GZLE01
object: sys/main.dol
modules:
- object: files/RELS.arc:mmem/f_pc_profile_lst.rel
```
When loading the objects, decomp-toolkit will automatically check the `object_base`
directory for any disc images. (They can be named anything, but must be in the folder
root) If one is found, all objects will be fetched from the disc image itself, rather
than having to extract the files manually.
While still a work in progress, two new `vfs` commands were added: `vfs ls` and `vfs cp`.
These commands are very barebones currently, but allow listing directory contents and
extracting files from decomp-toolkit's vfs representation:
```
❯ dtk vfs ls disc.rvz:
files
sys
❯ dtk vfs ls disc.rvz:sys
boot.bin
bi2.bin
apploader.bin
fst.bin
main.dol
❯ dtk vfs cp disc.rvz:sys/main.dol .
```
2024-10-04 03:50:35 +00:00
|
|
|
dyn-clone = "1.0"
|
2024-09-10 02:36:18 +00:00
|
|
|
enable-ansi-support = "0.2"
|
|
|
|
filetime = "0.2"
|
|
|
|
fixedbitset = "0.5"
|
|
|
|
flagset = { version = "0.4", features = ["serde"] }
|
|
|
|
glob = "0.3"
|
|
|
|
hex = "0.4"
|
|
|
|
indent = "0.1"
|
2024-10-04 04:24:54 +00:00
|
|
|
indexmap = "2.6"
|
2024-09-10 02:36:18 +00:00
|
|
|
itertools = "0.13"
|
|
|
|
log = "0.4"
|
|
|
|
memchr = "2.7"
|
|
|
|
memmap2 = "0.9"
|
|
|
|
multimap = "0.10"
|
|
|
|
nintendo-lz = "0.1"
|
Load objects from disc image & `vfs` module
Revamps support for container paths and centralizes logic into a VFS (virtual file system) module.
The new VFS architecture supports disc images and any layer of nesting.
For example, the following command works:
`dtk dol info 'Interactive Multi-Game Demo Disc - July 2002 (USA).rvz:files/zz_StarFox051702_e3.tgc:files/default.dol'`
This opens a TGC file inside an RVZ disc image, then reads `default.dol` in the FST.
Another example:
`dtk rel info 'Legend of Zelda, The - The Wind Waker (USA).rvz:files/RELS.arc:mmem/f_pc_profile_lst.rel'`
This opens a RARC archive inside an RVZ disc image, loads the Yaz0-compressed REL and
decompresses it on the fly.
This all operates in memory with minimal overhead, with no need to extract temporary files.
Supported container formats:
- Disc images (ISO/GCM, WIA/RVZ, WBFS, CISO, NFS, GCZ, TGC)
- RARC/SZS and U8 (.arc)
Supported compression formats:
- Yaz0 (SZS)
- Yay0 (SZP)
- NLZSS (.lz)
Additionally, projects can utilize a new configuration key `object_base`:
```
object: orig/GZLE01/sys/main.dol
modules:
- object: orig/GZLE01/files/RELS.arc:rels/mmem/f_pc_profile_lst.rel
```
becomes
```
object_base: orig/GZLE01
object: sys/main.dol
modules:
- object: files/RELS.arc:mmem/f_pc_profile_lst.rel
```
When loading the objects, decomp-toolkit will automatically check the `object_base`
directory for any disc images. (They can be named anything, but must be in the folder
root) If one is found, all objects will be fetched from the disc image itself, rather
than having to extract the files manually.
While still a work in progress, two new `vfs` commands were added: `vfs ls` and `vfs cp`.
These commands are very barebones currently, but allow listing directory contents and
extracting files from decomp-toolkit's vfs representation:
```
❯ dtk vfs ls disc.rvz:
files
sys
❯ dtk vfs ls disc.rvz:sys
boot.bin
bi2.bin
apploader.bin
fst.bin
main.dol
❯ dtk vfs cp disc.rvz:sys/main.dol .
```
2024-10-04 03:50:35 +00:00
|
|
|
nodtool = "1.4"
|
2024-05-01 06:12:20 +00:00
|
|
|
#nodtool = { path = "../nod-rs/nodtool" }
|
2024-09-10 02:36:18 +00:00
|
|
|
num_enum = "0.7"
|
2024-10-04 04:24:54 +00:00
|
|
|
objdiff-core = { version = "2.2", features = ["ppc"] }
|
2024-03-05 01:12:20 +00:00
|
|
|
#objdiff-core = { path = "../objdiff/objdiff-core", features = ["ppc"] }
|
2024-09-10 02:36:18 +00:00
|
|
|
object = { version = "0.36", features = ["read_core", "std", "elf", "write_std"], default-features = false }
|
2024-09-29 18:20:28 +00:00
|
|
|
once_cell = "1.20"
|
2024-09-10 02:36:18 +00:00
|
|
|
orthrus-ncompress = "0.2"
|
2024-09-29 18:20:28 +00:00
|
|
|
owo-colors = { version = "4.1", features = ["supports-colors"] }
|
2024-09-10 02:36:18 +00:00
|
|
|
path-slash = "0.2"
|
|
|
|
petgraph = { version = "0.6", default-features = false }
|
|
|
|
ppc750cl = "0.3"
|
|
|
|
rayon = "1.10"
|
2024-09-29 18:20:28 +00:00
|
|
|
regex = "1.11"
|
2024-09-10 02:36:18 +00:00
|
|
|
rustc-hash = "2.0"
|
|
|
|
sanitise-file-name = "1.0"
|
|
|
|
serde = "1.0"
|
|
|
|
serde_json = "1.0"
|
|
|
|
serde_repr = "0.1"
|
|
|
|
serde_yaml = "0.9"
|
|
|
|
sha-1 = "0.10"
|
2024-10-05 00:15:24 +00:00
|
|
|
size = "0.4"
|
2024-09-10 02:36:18 +00:00
|
|
|
supports-color = "3.0"
|
|
|
|
syntect = { version = "5.2", features = ["parsing", "regex-fancy", "dump-load"], default-features = false }
|
|
|
|
tracing = "0.1"
|
|
|
|
tracing-attributes = "0.1"
|
|
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
|
|
xxhash-rust = { version = "0.8", features = ["xxh3"] }
|
2024-10-04 04:24:54 +00:00
|
|
|
zerocopy = { version = "0.8", features = ["derive"] }
|
2024-09-29 18:20:28 +00:00
|
|
|
|
|
|
|
[target.'cfg(target_env = "musl")'.dependencies]
|
|
|
|
mimalloc = "0.1"
|