Skip to content

Releases: AetiasHax/ds-decomp

v0.6.0

16 Mar 11:06
Compare
Choose a tag to compare

What's Changed

  • feat: Generate BLX relocations as BL
    • Yields better diffs as mwccarm does not generate BLX instructions
  • feat: Add .L prefix to labels
  • Bump ds-rom to 0.5.0
    • dsd subcommands can now load the extracted ROM from just the code files (ARM7, ARM9, overlays, autoloads)
  • feat: Generate symbols for overlay IDs
  • bugfix: Include alignment padding when calculating code_size and bss_size

Full Changelog: v0.5.0...v0.6.0

v0.5.0

01 Mar 18:23
Compare
Choose a tag to compare

Migrating from pre-v0.5.0

v0.5.0 adds the section kind rodata which is the new default for the .rodata and .ctor sections. This is currently only used by dsd-ghidra and not dsd itself, but it's still recommended to edit your delinks.txt files so that .rodata and .ctor have the correct section kind.

What's Changed

  • Added section kind rodata for read-only initialized data (docs)
  • Better support for projects initialized with --allow-unknown-function-calls
    • delink/dis: Ignore relocations with module:none
    • When multiple symbols have the same address, select the first one for relocations

Full Changelog: v0.4.0...v0.5.0

v0.4.0

03 Feb 22:28
Compare
Choose a tag to compare

What's Changed

  • Symbols can be local by adding the local attribute (docs)
  • dsd check symbols: Check if symbols.txt files match with linked binary

Full Changelog: v0.3.2...v0.4.0

v0.3.2

06 Jan 09:52
Compare
Choose a tag to compare

We're on crates.io now!

You can now access the ds-decomp crate on crates.io. It contains all the code necessary for reading and writing config files for delinks, symbols and relocations, which makes it possible to create external tools to integrate with dsd.

What's Changed

  • init: Fix autoload callback overlapping with previous function
  • test: Compare file contents instead of just file size

Full Changelog: v0.3.1...v0.3.2

v0.3.1

26 Dec 14:34
Compare
Choose a tag to compare

What's Changed

  • Fix objdiff command not allowing the --c-flags and --custom-args arguments to have a hyphen for their value's first character by @LagoLunatic in #18
  • init: Fix improper handling of main function when it is in Thumb mode by @LagoLunatic in #21
  • init: Reject functions starting with any shift by a multiple of 4, except 16 and 24

Full Changelog: v0.3.0...v0.3.1

v0.3.0

15 Dec 22:32
Compare
Choose a tag to compare

Migrating from pre-v0.3.0

v0.3.0 removes the offset=0x1234 attribute from function symbols. To migrate to v0.3+, you have to manually open each symbols.txt file and remove each offset attribute and add its value to the addr:0x02123456 field on the same line.

For example:

-func_02050a20 kind:function(arm,size=0x294,offset=0x14) addr:0x02050a0c
+func_02050a20 kind:function(arm,size=0x294) addr:0x02050a20

What's Changed

  • dis: Support relocation addends by @LagoLunatic in #11
  • init: Option to skip relocation analysis, for debugging
  • init: Improved function analysis
    • More function branch cases
    • Allow function to start with shift by 16 or 24
    • Treat non-combined Thumb BL/BLX as illegal
    • Exclude fake functions that end outside the current module
    • Abort analysis upon finding illegal code sequence
    • Always try to analyze all .init functions (even if some .init functions fail to be analayzed)
    • Detect tail calls into upcoming function
    • Detect tail calls as return instructions
    • Ignore functions that aren't in order in .ctor
    • Fix random secure area bytes being interpreted as 32-bit Thumb instructions
  • dis: Add flag to disassemble with UAL syntax
  • init: Add flag to allow unknown function calls
  • init: Analyze data between functions
  • init: Add sanity check before setting .text upper bound by @LagoLunatic in #14
  • init: Pad addresses in symbols.txt to 8 hex digits by @LagoLunatic in #15
  • Replaced argp with clap by @SpeckyYT in #16
  • Support // style comments in config files
  • init: Option to provide source of relocation, for debugging

New Contributors

Full Changelog: v0.2.3...v0.3.0

v0.2.3

23 Nov 16:28
Compare
Choose a tag to compare

What's Changed

  • Update dependencies
  • init: Support static initializers in Thumb mode
  • init: Exclude branch labels outside of current module
  • init: Handle backwards branches right before constant pools
  • init: Better debug logs when function analysis terminates
  • objdiff: Fix incorrect ctx_path value

Full Changelog: v0.2.2...v0.2.3

v0.2.2

18 Nov 22:24
Compare
Choose a tag to compare

What's Changed

  • Roundtrip test; fix various issues with delink and linker by @AetiasHax in #9

Full Changelog: v0.2.1...v0.2.2

v0.2.1

12 Nov 21:08
3cfa611
Compare
Choose a tag to compare

What's Changed

  • Automated testing for dsd init by @AetiasHax in #5
  • Handle overlays with no .text and improve function analysis by @AetiasHax in #6

Full Changelog: v0.2.0...v0.2.1

v0.2.0

19 Oct 09:30
b1e2964
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.1.0...v0.2.0