Luke Street
5128ff67b2
bin2c: Honor symbol alignment
2023-11-26 01:12:34 -05:00
Luke Street
dd60128ba0
Extract embedded assets to binary and C header
...
Adds an "extract" list to project configuration:
```
extract:
- symbol: SomeData
binary: Lib/SomeData.bin
header: Lib/SomeData.inc
```
This example extracts the data of symbol
`SomeData` to `out_dir/bin/Lib/SomeData.bin`,
and a C array representation to
`out_dir/include/Lib/SomeData.inc`.
Resolves #11
2023-11-26 00:35:05 -05:00
Luke Street
038354a37e
Version 0.6.1
2023-11-22 13:01:42 -05:00
Luke Street
e3d6ef8492
dwarf dump: Fix padding handling within tag children
...
Fixes #9
2023-11-22 12:59:03 -05:00
Luke Street
c8a2d4896a
dwarf dump: Fix reversed struct/class in def
...
Fixes #10
2023-11-22 12:21:24 -05:00
Luke Street
854ed74605
CI: Fix release job
2023-11-18 23:50:01 -05:00
Luke Street
7168d2632f
Version 0.6.0
2023-11-18 23:38:43 -05:00
Luke Street
ebff47924f
Add `links` field to config for overriding REL linkage
...
By default, every REL is linked with every other REL. Some games, like Mario Party, link RELs individually, so the module IDs are not unique. To support this, the `links` field can be used to override which _other_ modules are included in a module's analysis.
2023-11-18 23:37:50 -05:00
Luke Street
28af4872ab
rel make: Add `--quiet`/`-q`, `--names`/`-n` args
...
`-n` is a somewhat ugly hack to only select certain modules from `config.yml`, for games with overlapping module IDs
2023-11-18 23:34:44 -05:00
Luke Street
38c692650f
write_rel: Skip setting reloc/imp offset with empty relocations
2023-11-18 23:33:18 -05:00
Luke Street
8659b56da4
Skip writing objects and ldscripts if unchanged
...
Avoids unnecessary rebuilds with build systems like ninja & make that track mtime
2023-11-18 17:21:08 -05:00
Luke Street
363fa2ac72
Use custom syntect packs to reduce binary size
...
- Custom syntax set containing only C/C++
- Custom themeset containing only Solarized (Dark)
- Disable default syntect features
2023-11-18 16:12:03 -05:00
Luke Street
d7a3fd53c7
Fix CI artifact upload
2023-11-18 15:07:44 -05:00
Luke Street
8f559c8921
Update dependencies & CI changes
...
- Use separate release-lto profile for CI
- A couple of clippy fixes
2023-11-18 15:03:24 -05:00
Luke Street
5e13998e93
Major `dwarf dump` rework
...
- Supports games with C++ DWARF info
- Syntax highlighting when printing to console (disable with `--no-color`)
- Overall improvements to parsing and output
2023-11-18 13:56:58 -05:00
Luke Street
4935708b61
Fix REL v2 creation (and v1, hopefully)
...
- Adjusts `write_rel` to use the proper ordering for relocations and imports based on the REL version.
- Adds `-r`/`--relocations` switch to `rel info` that prints (very) verbose relocation information.
2023-11-09 01:16:37 -05:00
Luke Street
456f4eebd4
Update deny.toml
2023-11-07 23:25:24 -05:00
Luke Street
65b04024d5
Update README.md
...
The previous commit also fixed the `map` commands, because why bother splitting anything out?
2023-11-07 23:24:03 -05:00
Luke Street
ec4caf5000
Smarter configuration updates
...
- Avoid overwriting `symbols.txt` or `splits.txt` if the file was modified since it was read or if the file's contents didn't change.
- Remove `binrw` and `byteorder` dependencies, moving to `FromReader`/`ToWriter` traits.
- Migrate generic bounds to `where` clauses.
- Remove unused `build.rs` logic.
2023-11-07 23:21:59 -05:00
Luke Street
c452b74666
Version 0.5.7
2023-10-10 12:33:27 -04:00
Luke Street
41a69441da
Support section 241 (extabindex) in RSOs
2023-10-10 12:32:56 -04:00
Luke Street
95c779b105
Better terminal color support
...
- Enables ANSI on Windows 10
- Disables colors if unsupported
- Supports `--no-color` and env `NO_COLOR` to disable
- Supports env `FORCE_COLOR` and `CLICOLOR_FORCE` to enable
2023-10-10 12:32:05 -04:00
Luke Street
a164852a15
Write gap symbols as hidden
2023-10-07 14:50:01 -04:00
Luke Street
dfb569b883
Add alf support (NVIDIA Shield TV binaries)
...
- Supports .alf files in all places .dol files are accepted.
- Adds `hash` and `dhash` to symbols config.
2023-10-07 02:03:09 -04:00
Luke Street
db506fb927
Update dependencies & macros.inc for ppc750cl
2023-10-06 01:20:04 -04:00
Luke Street
62c5e3acf9
Update README.md with dtk-template & more commands
2023-10-04 23:38:43 -04:00
Luke Street
36bb5ddcc6
Zero out section data for relocations in relocatable ELFs
...
Fixes issues with Wii versions of mwld.
2023-10-01 12:50:21 -04:00
Luke Street
c354c6da4b
REL section alignment fixes
...
- Honor section alignment from splits.txt when writing RELs
- Better heuristic for determining REL section alignment on initial analysis
2023-09-26 13:06:57 -04:00
Luke Street
610a2e56b9
Add `ldscript_template` option to project config
2023-09-23 07:56:49 -04:00
Luke Street
400fb7fa7f
Add `code_size`, `data_size` to generated `config.json`
...
Also simplify project config generation by skipping default fields
2023-09-14 17:24:00 -04:00
Luke Street
59a4eb33d0
Write `version` in generated `config.json`
2023-09-13 17:07:06 -04:00
Luke Street
42217a339e
Update cargo deny.toml
2023-09-13 02:10:47 -04:00
Luke Street
d4ef1ce16a
Analyzer fixes galore
...
- Transparent NLZSS decompression (add `:nlzss` to path)
- Overhaul portions of the analyzer to support more games
- Reject some invalid data relocations automatically
- Jump table analysis fixes
2023-09-13 02:08:51 -04:00
Luke Street
50f913c4eb
clippy fixes
2023-09-10 02:20:54 -04:00
Luke Street
18170a96a2
Don't use map in `dol diff` and `dol apply`; remove common BSS hack
2023-09-10 02:20:08 -04:00
Luke Street
788ffb9e17
Fix empty .lcf FORCEACTIVE with symbols_known
2023-09-09 19:24:13 -04:00
Luke Street
6abe6cc277
clippy fix
2023-09-05 17:31:19 -04:00
Luke Street
21c80537ac
cargo-deny: Allow ISC license
2023-09-05 17:24:03 -04:00
Luke Street
e3857d3212
Improvements to REL & map support
...
- Fix symbols.txt align attribute
- Fully support nested RARC files & transparent Yaz0 decompression
- Guess symbol visibility for maps without link map
- Add module name config
- Add manual force_active config
- Quiet option for shasum
- `symbols_known` and `fill_gaps` config
- Allow disabling .comment generation per-unit (`comment:0`)
- Various minor fixes
- Add `rarc` and `yaz0` commands
2023-09-05 17:22:22 -04:00
Luke Street
f9f7fb2e1e
Working `rel make` & more
...
- Added `elf info`
- Improved `rel info`
- Colored output for `shasum`
- Fix section `rename` in RELs
- Added padding symbols to avoid linker issues
- Automatically set symbols to "active" in .comment output
2023-08-23 23:13:12 -04:00
Luke Street
a2374e4fa0
Semi-working REL analysis & splitting
2023-08-23 23:13:12 -04:00
Luke Street
3f63f1ef47
A lot more section-address-aware refactoring
2023-08-23 23:13:12 -04:00
Luke Street
5843ee021e
Begin REL analysis & rework lots of code to be section-address aware
2023-08-17 22:09:45 -04:00
Luke Street
347889773d
Version 0.3.7
2023-08-15 23:18:15 -04:00
Luke Street
933edcfb19
Clippy fixes
2023-08-15 22:47:35 -04:00
Luke Street
23a156a6d5
Add selfile option & load in `dol split`
2023-08-15 22:45:23 -04:00
Luke Street
908e3bb037
Check functions at start of code sections in detect_functions
2023-08-15 22:44:48 -04:00
Luke Street
a394dfc88c
Improved sanity checks in asm write_data
2023-08-15 22:44:06 -04:00
Luke Street
2c2ee8bf08
Validate splits don't overlap symbols (or each other)
...
Use DoubleEndedIterator::next_back instead of Iterator::last to avoid unnecessary iteration.
2023-08-15 09:47:00 -04:00
Luke Street
d272b5dce8
Write common symbol align in asm
2023-08-15 09:36:45 -04:00