Commit graph

143 commits

Author SHA1 Message Date
Christian Semmler
5ade193261
merge from isle/master 2024-11-29 15:27:01 -07:00
Christian Semmler
d6796ad86a
Implement remaining LegoGameState functions ()
* Implement remaining LegoGameState functions

* Naming fixes

* Fix naming
2024-11-27 23:42:05 +01:00
Anonymous Maarten
0cb753e523
Use reccmp as a python requirement ()
* Use reccmp as a python requirement

* Add BETA10 to reccmp-project.yml
2024-10-26 05:57:47 -07:00
MS
91205be031
Handle duplicate thunks in BETA10 () 2024-10-17 20:17:00 -07:00
jonschz
8446a7ffa1
Add new script to compare the stack layout ()
* 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
f89ee5c13d
BETA10 import: Fix FUN_... collisions ()
* Improve BETA10 name import, refactor

* Run formatter

---------

Co-authored-by: jonschz <jonschz@users.noreply.github.com>
2024-09-14 07:16:12 -07:00
jonschz
ece3550e62
Fix spurious reccmp warnings ()
Co-authored-by: jonschz <jonschz@users.noreply.github.com>
2024-09-08 22:00:08 +02:00
Christian Semmler
318c46b881
merge 2024-09-05 12:09:19 -07:00
jonschz
2b14d3d6a5
Implement parts of LegoCarBuild and dependents ()
* Implement parts of `LegoCarBuild` and dependents

* Fix BETA10 offset

* Fix constants

* Code style: Rename parameters

* Linter fixes v2

* Linter errors v3

* Add BETA10 variable names for presenters

* Address review comments

---------

Co-authored-by: jonschz <jonschz@users.noreply.github.com>
2024-09-03 13:50:30 -07:00
MS
30be1ed4b8
Brute force string search for BETA10 ()
* 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 () 2024-08-31 22:37:32 -07:00
jonschz
0256fc4acf
Fix Ghidra import call type ()
Co-authored-by: jonschz <jonschz@users.noreply.github.com>
2024-08-31 08:00:35 -07:00
jonschz
b898d98515
BETA10: reccomp support and Ghidra imports ()
* 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
ce3fc57025
BETA10 Readme additions ()
Co-authored-by: jonschz <jonschz@users.noreply.github.com>
2024-08-23 12:22:03 -07:00
jonschz
757df96c0d
Implement/match LegoRaceMap ()
* Implement/match LegoRaceMap

* Fix CI, address review comments

---------

Co-authored-by: jonschz <jonschz@users.noreply.github.com>
2024-08-17 11:30:39 -07:00
jonschz
412200ecbc
Ghidra Import: Support virtual inheritance ()
* 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 ()
* 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
4a87c3bc44
Small update to datacmp and roadmap ()
* Match uninit variables with all nulls

* Enable _pnhHeap variable for ISLE

* Roadmap bugfix for ordinal import dummy addrs

* Format fix
2024-06-28 14:58:35 -07:00
Christian Semmler
4258fb0deb Add back some stuff from decomp ()
* Add ncc script

* add requirements.txt

* Add other builds

* Add with submodules

* Comment out for now

* Add
2024-06-25 19:49:59 +02:00
Christian Semmler
3fdf45968e Remove decomp tools 2024-06-25 19:48:57 +02:00
jonschz
d869d565c2
Fix Ghidra import script re-importing unchanged functions ()
* 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 ()
* 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 

---------

Co-authored-by: jonschz <jonschz@users.noreply.github.com>
2024-06-16 07:13:19 -04:00
MS
9383076e04
Fix remaining vtordisp issues ()
* 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 () 2024-06-09 13:52:04 -04:00
MS
9bc5c26bcc
Handle S_BLOCK32 in cvdump symbols parser () 2024-06-09 13:38:57 -04:00
jonschz
f26c30974a
Add Ghidra function import script ()
* 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 () 2024-06-08 19:16:28 -04:00
MS
cb74a8c80e
Disable autojunk for python difflib () 2024-06-08 10:36:32 -04:00
MS
b8ea5bf9ba
Fix missing float constants () 2024-05-27 03:22:10 -04:00
Christian Semmler
8fee73c525
Implement/match LegoPathStruct ()
* 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 ()
* 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 () 2024-05-11 18:40:31 -04:00
Christian Semmler
45f9f54f21
Implement/match IslePathActor::SpawnPlayer ()
* 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 ()
* 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 ()
* Read floating point constants before sanitize

* Fix roadmap
2024-04-29 14:33:16 -04:00
Christian Semmler
19d39394be
Score class cleanup ()
* 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 () 2024-04-23 17:06:43 -04:00
MS
9e71eef72b
Change thunk match strategy ()
* 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 ()
* 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 ()
* 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 ()
* 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 () 2024-04-07 16:57:41 -04:00
MS
56827fb2c4
Use colorama.just_fix_windows_console () 2024-04-02 18:45:57 -04:00
Nathan M Gilbert
3839b3278c
Implement/match LegoExtraActor::VTable0x94 ()
* 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 () 2024-03-30 11:39:34 -04:00
Ramen2X
dd4d7cca9c
fix typo in reccmp effective match string () 2024-03-29 14:20:02 -04:00
MS
6fda6ca92b
reccmp: Don't use placeholder for address comparison () 2024-03-29 13:29:44 -04:00
MS
53b3d0b195
Add datacmp to CI () 2024-03-29 07:58:59 -04:00
MS
3b68a90a08
Identify thunks in debug builds () 2024-03-27 16:13:23 -04:00
MS
064feab51a
Detect when we exceed original function size () 2024-03-26 21:01:37 -04:00