Commit Graph

65 Commits

Author SHA1 Message Date
MS
91205be031 Handle duplicate thunks in BETA10 (#1113) 2024-10-17 20:17:00 -07:00
jonschz
8446a7ffa1 Add new script to compare the stack layout (#1112)
* Add new script to debug the stack layout

* fix small error in script

---------

Co-authored-by: jonschz <jonschz@users.noreply.github.com>
2024-10-13 14:31:15 -07:00
jonschz
ece3550e62 Fix spurious reccmp warnings (#1101)
Co-authored-by: jonschz <jonschz@users.noreply.github.com>
2024-09-08 22:00:08 +02:00
MS
30be1ed4b8 Brute force string search for BETA10 (#1097)
* Brute force string search for BETA10

* improved string check

* Skip this unless source binary is debug

* remove misplaced comment
2024-09-01 22:34:58 +02:00
MS
f242130382 Sanitize args for assert in BETA10 (#1095) 2024-08-31 22:37:32 -07:00
jonschz
b898d98515 BETA10: reccomp support and Ghidra imports (#1091)
* Implement core functionality (before linter)

* run linter + formatter

* Review: remove redundant code

* Implement end of range check for vtables

---------

Co-authored-by: jonschz <jonschz@users.noreply.github.com>
2024-08-29 11:54:23 -07:00
jonschz
412200ecbc Ghidra Import: Support virtual inheritance (#1071)
* Implement/fix Ghidra imports for multiple and virtual inheritance

Unfortunately, the handling in Ghidra is still far from perfect. This is a good place to start, though.

* Support offsets in vbase pointers

* Support `this adjust`

* minor stylistic improvement

* Improvements to documentation

---------

Co-authored-by: jonschz <jonschz@users.noreply.github.com>
2024-07-30 10:02:15 -07:00
jonschz
210376f272 Implement LegoRaceCar::HandleSkeletonKicks and dependents (#1065)
* Implement `LegoRaceCar::HandleSkeletonKicks` and dependents

* Fix typo

* Spike to fix array comparisons (needs refactor)

* Refactor: Dedicated method for array element matching

* Address review comments

* Reformat with new version of black

* Apply more review comments

* Address more review comments

---------

Co-authored-by: jonschz <jonschz@users.noreply.github.com>
2024-07-17 07:03:02 -07:00
MS
9383076e04 Fix remaining vtordisp issues (#1016)
* Fix LegoRaceActor

* Fix LegoRaceMap

* Fix LegoCarRaceActor

* Fix LegoJetskiRaceActor

* Fix LegoJetski

* Fix LegoRaceCar

* Downgrade orig addr unique message to debug
2024-06-10 13:04:40 -04:00
MS
0dca127649 Parse anonymous LF_UNION type (#1013) 2024-06-09 13:52:04 -04:00
MS
9bc5c26bcc Handle S_BLOCK32 in cvdump symbols parser (#1012) 2024-06-09 13:38:57 -04:00
jonschz
f26c30974a Add Ghidra function import script (#909)
* Add draft for Ghidra function import script

* feature: Basic PDB analysis [skip ci]

This is a draft with a lot of open questions left. Please do not merge

* Refactor: Introduce submodules and reload remedy

* refactor types and make them Python 3.9 compatible

* run black

* WIP: save progress

* fix types and small type safety violations

* fix another Python 3.9 syntax incompatibility

* Implement struct imports [skip ci]

- This code is still in dire need of refactoring and tests
- There are only single-digit issues left, and 2600 functions can be imported
- The biggest remaining error is mismatched stacks

* Refactor, implement enums, fix lots of bugs

* fix Python 3.9 issue

* refactor: address review comments

Not sure why VS Code suddenly decides to remove some empty spaces, but they don't make sense anyway

* add unit tests for new type parsers, fix linter issue

* refactor: db access from pdb_extraction.py

* Fix stack layout offset error

* fix: Undo incorrect reference change

* Fix CI issue

* Improve READMEs (fix typos, add information)

---------

Co-authored-by: jonschz <jonschz@users.noreply.github.com>
2024-06-09 08:41:24 -04:00
MS
efdbbeecc0 Stop disassembling if we hit int3 (#1004) 2024-06-08 19:16:28 -04:00
MS
cb74a8c80e Disable autojunk for python difflib (#1001) 2024-06-08 10:36:32 -04:00
MS
b8ea5bf9ba Fix missing float constants (#959) 2024-05-27 03:22:10 -04:00
MS
119ff93461 Parser bugfix: vtable namespace (#910) 2024-05-11 18:40:31 -04:00
MS
e7670f9a81 Read floating point constants up front (#868)
* Read floating point constants before sanitize

* Fix roadmap
2024-04-29 14:33:16 -04:00
MS
41be78ed1c Pointer substitution can use offset into variable (#841) 2024-04-23 17:06:43 -04:00
MS
9e71eef72b Change thunk match strategy (#818)
* Change thunk match strategy

* Add orig thunk when recomp is not thunked
2024-04-18 19:39:20 -04:00
MS
c8840117be More effective match strategies (#804)
* More effective match strategies

* Basic check on instruction relocation

* More targeted check for relocation
2024-04-14 17:08:42 -04:00
MS
512eb786ab Detect calls using absolute indirect addressing (#784)
* Detect calls using absolute indirect addressing

* Ignore imports we can't match
2024-04-08 03:40:05 -04:00
MS
70912d16c6 Swap cmp operands for effective match (#783) 2024-04-07 16:57:41 -04:00
MS
4fd6642be9 parser: don't enforce variable naming convention (#761) 2024-03-30 11:39:34 -04:00
MS
6fda6ca92b reccmp: Don't use placeholder for address comparison (#751) 2024-03-29 13:29:44 -04:00
MS
53b3d0b195 Add datacmp to CI (#746) 2024-03-29 07:58:59 -04:00
MS
3b68a90a08 Identify thunks in debug builds (#741) 2024-03-27 16:13:23 -04:00
MS
064feab51a Detect when we exceed original function size (#736) 2024-03-26 21:01:37 -04:00
MS
b9f34290d5 Ignore annotations that would cause an exception (#733) 2024-03-26 17:50:24 -04:00
MS
ededdf31c3 Identify and handle jump tables (#732) 2024-03-26 19:06:35 +01:00
MS
d9913ead83 Virtual inheritance follow-up (#727) 2024-03-25 16:34:20 +01:00
MS
3f03940fcb Match vtables with virtual inheritance (#717)
* Match vtables with virtual inheritance

* Simplify vtable name check

* Thunk alert
2024-03-23 18:01:40 -04:00
MS
5e0e7ab908 Make reccmp more compatible with debug builds (#674) 2024-03-15 16:17:08 +01:00
MS
5eb74c06fd reccmp: Sanitize performance (and more) (#654) 2024-03-10 14:49:45 -04:00
MS
ec1fcce08c Data comparison tool (#618)
* Parse cvdump TYPES section. Add datacmp tool.

* Corrections

* Use static

* Revert "Use static"

This reverts commit e0a4324e00.

* Handle partially initialized variable

* Shuffle order of legounksavedatawriter

* Revert "Shuffle order of legounksavedatawriter"

This reverts commit 506e06f117.

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-05 09:45:09 +01:00
MS
48cd648357 reccmp: diff bugfixes (#583) 2024-02-21 04:08:16 -05:00
MS
9c71209fb9 reccmp: HTML refactor and diff address display (#581)
* reccmp: HTML refactor and diff address display

* Restore the @@ range indicator
2024-02-20 08:56:33 +01:00
MS
ba8f2b1c0f parser: Detect function declaration (#580) 2024-02-19 16:00:48 +01:00
MS
8aa9d9a8b3 reccmp: New diff option (#563) 2024-02-15 03:33:40 -05:00
MS
1b696e4bd8 reccmp: Unique addresses and stub reporting (#554) 2024-02-13 20:25:51 -05:00
MS
00e32673d1 Ordinal imports (#534) 2024-02-06 21:03:55 +01:00
MS
264b9e815b Match static function variables (#530)
* Match static function variables

* IsleApp::Tick static variables
2024-02-05 12:43:13 +01:00
MS
8cc79ad4de Performance enhancements (#527) 2024-02-04 19:37:37 +01:00
Christian Semmler
a7acf8c607 Implement/match InfocenterState::InfocenterState (#515)
* Implement LegoState::Shuffle

* Remove unused params

* Move ctor

* Asm generate hotfix

---------

Co-authored-by: MS <disinvite@users.noreply.github.com>
2024-02-02 00:08:56 +01:00
MS
4137cd75e6 parser: Identify namespaces (#499) 2024-01-28 15:25:45 +01:00
MS
a65eb9a4e0 Roadmap tool to compare binary structure (#479) 2024-01-22 16:15:12 +01:00
MS
6ed3e89ed2 reccmp: Show float constants (#473) 2024-01-20 20:19:49 -05:00
MS
ee7241f73d GifManager: use STL members (#460)
* Truncate symbol names to 255 characters when matching

* GifManager refactor

* Refactor, annotations

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-19 21:23:12 +01:00
MS
909c44b679 reccmp: vtable comparison (#452)
* Add vtable comparison to reccmp

* Add missing scalar deleting destructors

* Fix some vtables

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-18 14:34:14 +01:00
MS
aaa18bc9e2 Decomp parser: indirect globals and string markers (#446)
* Enable string annotations and indirect globals

* Adding some STRING annotations

* Library functions
2024-01-17 12:56:34 +01:00
MS
7e9d3bde65 Reccmp: Use symbol names in asm output (#433)
* Name substitution for reccmp asm output

* Decomp marker corrections

* Fix a few annotations

* Fix IslePathActor dtor

* Fix audio presenter

* Fix LegoEntity::Create

* Fix Pizza and related

* Fix path part

* Add missing annotations

* Add missing annotations

* Add more missing annotations

* Fix MxNotificationParam

* More fixes

* More fixes

* Add missing annotations

* Fixes

* More annotations

* More annotations

* More annotations

* More annotations

* Fixes and annotations

* Find imports and thunk functions

* Fix more bugs

* Add some markers for LEGO1 imports, fix SIZE comment

* Add more annotations

* Rename annotation

* Fix bugs and annotations

* Fix bug

* Order

* Update legoanimpresenter.h

* Re-enable print-rec-addr option

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-14 22:28:46 +01:00