Commit graph

123 commits

Author SHA1 Message Date
jonschz
d869d565c2
Fix Ghidra import script re-importing unchanged functions (#1035)
* feat: Reuse enums instead of recreating them every time

* feat: Support verifying return values larger than 4 bytes

* feat: Ignore `__$ReturnUdt` in template functions

* run formatter

---------

Co-authored-by: jonschz <jonschz@users.noreply.github.com>
2024-06-16 08:50:32 -04:00
jonschz
c8dc77cbf4
Support stubs in function import (#1034)
* Refactor returned data structure for extensibility

* feature: Import stub functions but don't overwrite their argument list

Ghidra might have auto-detected some arguments, so we don't want to overwrite that if the stub's argument list has not been verified

Closes #1009

---------

Co-authored-by: jonschz <jonschz@users.noreply.github.com>
2024-06-16 07:13:19 -04: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
Christian Semmler
8fee73c525
Implement/match LegoPathStruct (#944)
* Implement/match LegoPathStruct

* Rename some nums

* Consistent naming

* Naming

* relax regex

* Name some functions

* Improve naming

* Rename
2024-05-21 15:03:50 -04:00
Christian Semmler
939c09139f
Match LegoOmni::Destroy and related (#917)
* Match LegoOmni::Destroy and related

* Write COMPAT_MODE macro differently

* fix lint issue
2024-05-14 14:13:27 +02:00
MS
119ff93461
Parser bugfix: vtable namespace (#910) 2024-05-11 18:40:31 -04:00
Christian Semmler
45f9f54f21
Implement/match IslePathActor::SpawnPlayer (#884)
* Implement/match IslePathActor::SpawnPlayer

* Fix

* Fix

* Add skip

* Rename param
2024-05-04 16:13:05 +02:00
Christian Semmler
01b861bc09
Update README.md and CONTRIBUTING.md (#880)
* Update README.md and CONTRIBUTING.md

* typo

* style

* comma
2024-05-03 15:43:59 +02: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
Christian Semmler
19d39394be
Score class cleanup (#855)
* Cleanup/fixes

* Improve Paint match

* Improve Score::FillArea

* Fix naming

* Fix value
2024-04-26 16:58:42 +02: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
Nathan M Gilbert
7821d952ec
Pathactor (#800)
* Implement LegoPathActor::VTable0x8c

* Fix paramater name

* WIP fixes

* more fixes

* style

* fix

* fix

* fix

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-04-14 16:43:07 +02: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
56827fb2c4
Use colorama.just_fix_windows_console (#766) 2024-04-02 18:45:57 -04:00
Nathan M Gilbert
3839b3278c
Implement/match LegoExtraActor::VTable0x94 (#759)
* Implement/match LegoExtraActor::VTable0x94

* attempt to fix gcc

* WIP fixes

* Match

* Match

* Match

* add TODO

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-30 12:18:15 -04:00
MS
4fd6642be9
parser: don't enforce variable naming convention (#761) 2024-03-30 11:39:34 -04:00
Ramen2X
dd4d7cca9c
fix typo in reccmp effective match string (#754) 2024-03-29 14:20:02 -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
Nathan M Gilbert
1e3ca11886
Implement/match LegoAnimActor (#730)
* Implement/match LegoAnimActor

* Name changes (deviation from original source)

* Attempt to fix modern build

* Add missing override

* Match LegoAnimActor::SetWorldSpeed

* Remove junk

* Style changes and implement WEEdge

* Add override

* Match LegoAnimActor::FUN_1001c1f0, style

* Style

* Add missing annotations, STUB LegoPathBoundary

* Style

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-26 18:51:52 +01:00
MS
d9913ead83
Virtual inheritance follow-up (#727) 2024-03-25 16:34:20 +01:00
MS
0295a08c94
Keep capstone working on Python 3.12 (#722) 2024-03-24 17:20:58 -04: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
739caacd8d
More features for reccmp HTML UI (#701) 2024-03-22 18:40:51 +01:00
Christian Semmler
0e146f08d6
Implement/match LegoNavController::CalculateNewPosDir (#675)
* Implement/match LegoNavController::CalculateNewPosDir

* Fix naming

* Fix naming
2024-03-15 16:33:32 +01: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 e0a4324e004e83565a9880e457c588ed0cf71931.

* Handle partially initialized variable

* Shuffle order of legounksavedatawriter

* Revert "Shuffle order of legounksavedatawriter"

This reverts commit 506e06f1174739fdbfade73e29b9ce4eac44b06c.

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-05 09:45:09 +01:00
MS
688dc0b6ee
Replace custom elements with HTMLElement (#585) 2024-02-21 18:04:38 -05: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
971ac8b6e7
LegoCacheSound and related STL (#560)
* LegoCacheSound and related STL

* Changes/annotations

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-14 00:34:14 +01:00
Anonymous Maarten
ccb6223d70
Decompiled CONFIG.EXE executable (#533)
* mxdirectdraw: no need to explicitly add a terminating '\0' in C

* mxstopwatch must include LIMITS.H for ULONG_MAX

* Add Config app

* 88.78%

* style fixes

* Test more CONFIG things

* Add a few assertions on MFC classes

* reformat

* actionSSSSSSSSSSSSSSS

* actions again

* decomplint needed a shebang

* Fix annotations of Message Map entries

* ci: We're building CONFIG.EXE, not CONFIG.DLL

* remove ninja.exe

* Fix CAboutDialog::GetMessageMap annotation

* format reloaded

* Fix global CConfigApp object annotation

* trigger worflows

* ci: request at least python 3

* oops :)

* curl CONFIGPROGRESS-OLD.TXT will fail

* Forget about actions/setup-python (for now)

* Annotation fixes

* Config tweaks and MxDirect3d annotations

* It's important to compare against the correct file

* Introduce common CDialog parent for CAboutDialog and CMainDialog

* format

* Remove CSerializer

---------

Co-authored-by: disinvite <disinvite@users.noreply.github.com>
2024-02-07 12:11:45 +01:00
MS
00e32673d1
Ordinal imports (#534) 2024-02-06 21:03:55 +01:00