Commit graph

1371 commits

Author SHA1 Message Date
MS
4f4863af6f
Use bitfield for MxVideoParamFlags ()
* Use bitfield for MxVideoParamFlags

Using a bitfield for MxVideoParamFlags results in the same xor/and logic that was partially inlined in the header file. This approach is a lot cleaner and there's a good chance this is what the devs would have landed on.

The code generation is really finicky -- other inlines in the header influence the code just by being there -- so I decided to stub out all of them. This got the match to 100%.

While I was in isle.cpp::SetupVideoFlags, I changed the signature so that the `m_using16bit` parameter is just `using16bit`.

* fix: cast Set16Bit inline arg to byte
2023-06-22 23:00:51 -07:00
MishaProductions
bd245dc6d8
lego1: implement Get* functions () 2023-06-22 09:23:54 -07:00
Christian Semmler
a0fac56d4c
lego: implement/match MxVideoParam exported functions ()
Co-authored-by: itsmattkc <itsmattkc@gmail.com>
2023-06-22 09:19:48 -07:00
itsmattkc
749a1f419b reccmp: support inlined functions that may have been compiled into both files 2023-06-22 01:05:00 -07:00
itsmattkc
66a010a19f move inlined MxDSObject::SetAtomId to main header
We've confirmed that, despite a function being declared inline, msvc will still make a conventional call in some circumstances. As such, I feel like this is warranted because it's most likely what a developer would have actually written.
2023-06-22 00:45:56 -07:00
itsmattkc
12395ac41a reccmp: further improve accuracy 2023-06-22 00:44:28 -07:00
itsmattkc
598ca01df5 gitignore ISLE.EXE/LEGO1.DLL 2023-06-22 00:43:37 -07:00
Christian Semmler
30ef923bf4
hotfix: messed up structure due to windows.h () 2023-06-21 23:13:15 -07:00
itsmattkc
c4b4555b80 reccmp: revert using debug offsets 2023-06-21 17:31:54 -07:00
Christian Semmler
fa8e4523bd
isle: match Isle::Tick and FindExistingInstance ()
* match Isle::Tick and FindExistingInstance

* add offset comments

* inline Isle::Tick

* move inline MxDSObject, remove mx.cpp
2023-06-21 15:18:37 -07:00
MS
4d531d1de5
reccomp: add option to hide 100% matching functions ()
* add option to hide 100% matching functions

* slight formatting improvement

---------

Co-authored-by: itsmattkc <34096995+itsmattkc@users.noreply.github.com>
2023-06-21 14:43:01 -07:00
itsmattkc
fa63d7e341 rename reccomp to reccmp
Sorry to everyone's muscle memory, but I think this is better. The idea for the name was "recomp compare", but it's too easy to read it as "recomp with a typo". This should fix that, as well as be slightly easier to write since it's shorter.
2023-06-21 14:36:09 -07:00
Anonymous Maarten
da3ad91b20
recomp.py: use argparse to parse arguments ()
* recomp.py: use argparse to parse arguments

* Address code revew comments

* reccomp.py: -h/--help for help -H/--htmp for html

* update CI to use new arg

* slight string updates

---------

Co-authored-by: itsmattkc <34096995+itsmattkc@users.noreply.github.com>
2023-06-21 14:33:08 -07:00
Joshua Peisach
2644be3ca6
MxTimer matching ()
* MxTimer::Start - swap instruction order

Technically, isRunning is set after getting the real time according to the pseudo code,
which i guess is fine, you dont know it started until it really started

* MxTimer - finish tweaking to match assembly
2023-06-21 00:37:46 -07:00
itsmattkc
4b71fb8815 ci: upload HTML summaries of accuracy/progress too 2023-06-21 00:36:38 -07:00
Christian Semmler
bfa035ca79
isle: Match Isle::SetupCursor ()
* match Isle::SetupCursor

* case
2023-06-21 00:30:59 -07:00
Christian Semmler
124a5ddaa3
isle: Accuracy improvements ()
* Isle::Isle 100% accuracy

* Isle::~Isle 100%

* improve accuracy of ReadReg functions

* refactor

* fix Isle::ReadRegBool

* fix Isle::ReadRegInt

* empty commit to reset GH action

* fix Isle::SetupLegoOmni
2023-06-21 00:30:46 -07:00
MS
6207d1f775
add more MxString functions () 2023-06-21 00:30:07 -07:00
itsmattkc
290c006d14 use offsets from PDB to only diff instructions
Also ensure empty functions aren't falsely identified as matching due to no comparison occurring
2023-06-20 13:09:48 -07:00
Christian Semmler
0ab8fc52d2
lego1/isle: Add MxDSObject, implement SetObjectName, adjust MxDSAction ()
* add MxDSObject, implement SetObjectName, adjust MxDSAction

* add a TODO

* update project files

* add WIP MxDSObject stuff

* merge

* update project file

* add addresses and SetAtomId

* switch addresses

* remove comment since it's fixed now (?)

* refactor

* update project file

* refactor into separate unit

* refactor into separate unit

* rename unit to avoid NMAKE issue

* rename param

* add last missing piece to Isle::Close

* fix spelling

* merge

* use union hack
2023-06-19 17:18:53 -07:00
itsmattkc
66dd2cdeb9 improved reccomp reliability even further, added html summary generator
Will probably host the summary somewhere for easy access
2023-06-19 12:52:21 -07:00
itsmattkc
ff85548c85 project update 2023-06-19 11:02:44 -07:00
itsmattkc
ec12b8f30f improved compare script performance and reliability 2023-06-19 10:57:13 -07:00
itsmattkc
dafe66191c mxomni: fixed minor inaccuracy 2023-06-19 10:56:53 -07:00
Christian Semmler
0b3d1abe66
fix wrong video param flag interfaces () 2023-06-19 09:20:36 -07:00
MattKC
8b16b7b2c3
Update CONTRIBUTING.md [skip ci] 2023-06-19 01:37:13 -07:00
MattKC
4494d4db60
Update README.md [skip ci] 2023-06-19 01:36:05 -07:00
Christian Semmler
5c440b5878
lego1: implement more of LegoNavController ()
* implement more of LegoNavController

* merge

* use MX_FALSE

* file file perms

* added Timer(), GetTime to LegoNavController

* add a comment about SetControlMax

* remove colon

* add commented out dtor

* revert inheritance for now so we don't accidentally break the interface to ISLE.exe later

* add missing include

* update project files

* update project files

* fix main.cpp

* add offsets

* update project files

* fix line endings

* fix a bug thanks to ASM checker

* add addr for Timer()

* updated project file
2023-06-19 01:34:58 -07:00
itsmattkc
f9f8440a3a main: elaborate new info about LoadAccelerators call [skip ci] 2023-06-19 01:22:01 -07:00
itsmattkc
2c6aeb8b82 oops forgot the calls too 2023-06-19 01:12:12 -07:00
itsmattkc
3d9a96995a isle: convert last two functions to PascalCase 2023-06-18 23:22:32 -07:00
itsmattkc
f8263a3ef8 implemented some parts of MxOmni and LegoOmni 2023-06-18 23:19:40 -07:00
MattKC
d774644b4a
Update README.md 2023-06-18 22:57:38 -07:00
MattKC
9de317af55
Create CONTRIBUTING.md 2023-06-18 22:56:49 -07:00
ecumber
526c6af1f6
Implement a few Mx* functions / add data types ()
* Implement a few Mx* functions / add data types

* added more information, fixed formatting issues

* further cleanup

---------

Co-authored-by: itsmattkc <34096995+itsmattkc@users.noreply.github.com>
2023-06-18 22:36:07 -07:00
itsmattkc
1152feab8d use different naming scheme in ISLE
We now know that ISLE used PascalCase for its function names, so we're using those here now.
2023-06-18 21:51:50 -07:00
itsmattkc
4a41d3fd36 use sizeof in more places where appropriate 2023-06-18 21:51:26 -07:00
Anonymous Maarten
6e18d1b41f
ISLE and mingw32 fixes ()
* ci: no need to do a final cd

* MxDSAction has a setAtomId method

* Implement the MxOmniCreateParamBase destructor inline

Because of this, ISLE should no longer have to compile mxomnicreateparambase.obj.
I didn't modify isle.mak, because I don't have the MSVC 4.20 GUI set-up.

* Replace 256 with sizeof(...)

* Format DefWndProc calls in WndProc

* Replace magic mask in WNDPROC with macro's

* Replace magic numbers in main.cpp with macro's

* MOUSEMOVE notification id is 10 instead of 0x10

* Lowercase all windows includes such that mingw32 on Linux can find these

* Convert ISLE/res/isle.rc to utf-8, and add a comma needed by mingw32

* mingw32 cannot use a enum without previous declaration

* minor adjustments

---------

Co-authored-by: itsmattkc <34096995+itsmattkc@users.noreply.github.com>
2023-06-18 21:45:25 -07:00
itsmattkc
bba513c525 cleaned up mxomnicreateparambase
I remember there being a reason why I included MxOmniCreateParambase in ISLE, but testing now it doesn't seem to be what I thought (or maybe other factors are influencing it now). Indeed it seems this is unnecessary now.
2023-06-18 21:29:25 -07:00
itsmattkc
a746a28702 legoinputmanager: fixed enum 2023-06-18 21:02:00 -07:00
itsmattkc
2a93655f06 added even more definitions 2023-06-18 20:56:55 -07:00
itsmattkc
319b52f248 added more definitions
Also clarify .exe on script because Wine cares about that
2023-06-18 20:50:32 -07:00
MattKC
5aa7921e90
Add CI script to compare recompiled assembly with original code ()
* add test to compare assembly between functions

* ci: use abs path of wget

* ci: fix shell disambiguity

* ci: ensure capstone is installed

* ci: ensure correct filenames

* use better source for lego island files

* give me an idea of what the dir structure looks like

* make wine path function

* improved script and project

* fixed script on windows

* print debug info because now it literally only doesn't work on fucking github actions

* better source path resolving

For some reason, nmake compiles produce different symbols. I wonder if this affects the accuracy of the decomp.
2023-06-18 20:28:18 -07:00
MattKC
f9a93406a8
Merge pull request from foxtacles/isle-lego3dmanager
lego1/isle: Add Lego3DManager and related, fix a function signature
2023-06-18 09:00:59 -07:00
Christian Semmler
170ca99390
forgot updated viewmanager.h 2023-06-18 14:02:16 +02:00
Christian Semmler
e648bcb439
add updated project files 2023-06-18 13:59:56 +02:00
Christian Semmler
30989aec9c
add Lego3DManager and related, fix a function signature 2023-06-18 13:45:39 +02:00
MattKC
5c74ddc9ab
Merge pull request from foxtacles/hotfix-isle
Fix broken MxOmniCreateParam ctor interface
2023-06-18 00:31:26 -07:00
Christian Semmler
258b7f861e
remove a space 2023-06-17 22:05:40 +02:00
Christian Semmler
b51d74f642
fix broken MxOmniCreateParam ctor interface 2023-06-17 22:03:09 +02:00