Commit graph

27 commits

Author SHA1 Message Date
Cydra
07912eb05a
Class layout for LEGO1 classes (#43)
* Stubbed a bunch of classes and annotated them for later use. Heavily wip and more of pseudocode right now.

* Converted pseudocode into real code!

* Created a bunch more classes and added more information to exisiting ones
Did not error check, this was pushed just for reference

* More classes and implementation details. Still not checked for any errors

* Fixed code and decided on a way to handle virtual table stubs

* Some additional fixes

* More smaller fixes

* Added classes to project and made it compile

* Fixed function adresses that caused the python script to fail

* More classes and virtual function resolves. Builds and compares fine.

* Again more classes and virtual function resolves. Builds and compares fine.

* No clue, I guess forced update for line endings

* Finished up some work, compiles fine. All functions are STUB annotated to not pollute reccmp.py output.

* line ending change

* rename GetClassName/IsClass

Mirroring recent changes from master

* further conform to current master

* update project

* cleanup

* project only updates when you close msdev

---------

Co-authored-by: Cydra <cydra95@gmail.com>
Co-authored-by: itsmattkc <34096995+itsmattkc@users.noreply.github.com>
2023-06-29 01:10:08 -07:00
itsmattkc
706be168af msvc: force update dependencies 2023-06-27 19:06:04 -07:00
itsmattkc
e7b5ea53df rename GetClassName/IsClass, declare mxtypes
Was intended as a simple code improvement, however it also seems to make WinMain, MxString::operator=, MxDSFile::Open 100% (all of which just needed registers to be switched around)
2023-06-27 19:04:07 -07:00
Christian Semmler
24ec7023bd
isle: match WndProc and re-arrange functions in ISLE.EXE (#45)
* match WinProc

* minor accuracy improvement

* WndProc at 50%

* fix WM_DISPLAYCHANGE branching

* fix type

* fix x/y comparison

* WndProc 82%

* 84%

* 97%

* rearrange functions to get close to the original

* remove newline

* inline no longer necessary

* merge
2023-06-27 13:07:29 -07:00
Mark Langen
51ec2c97c6
100% Match of MxDSFile (#51)
* 100% Match of MxDSFile

* ...almost, MxDSFile::Open is still not quite matching but all of the
  other methods are 100% matching.

* Turns out that most of the virtual methods and some of the members are
  actually on the MxDSSource base class, which I've pulled out as part
  of this.

* In order to implement the methods I added the MXIOINFO class, which
  seems to be a thin wrapper around the MMIOINFO windows structure. We
  can tell this because MMIOINFO::~MMIOINFO was included in the DLL
  exports, and calls down to a function which deconstructs something
  looking exactly like MMIOINFO.

* Add mxdssource.cpp

* mattkc feedback

* some accuracy improvements

* Use FOURCC macro

* Tirival solve in mxioinfo.cpp

* Update mxdsfile.cpp

0xFFFFFFFF -> -1

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-06-27 11:44:02 -07:00
Christian Semmler
64d2b9e02b
lego: implement SetControlMax and related partials (MxVideoManager, MxPalette, MxUnknown100dc6b0) (#42)
* lego: implement LegoNavController::SetControlMax and related

* use MxResult

* fix name
2023-06-24 10:09:46 -07:00
Anonymous Maarten
7dbb06eef3
Convert all sources eol's to nl (#41) 2023-06-23 09:17:41 -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
Christian Semmler
fa8e4523bd
isle: match Isle::Tick and FindExistingInstance (#32)
* 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
Christian Semmler
0ab8fc52d2
lego1/isle: Add MxDSObject, implement SetObjectName, adjust MxDSAction (#20)
* 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
ff85548c85 project update 2023-06-19 11:02:44 -07:00
Christian Semmler
5c440b5878
lego1: implement more of LegoNavController (#16)
* 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
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
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 (#24)
* 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
Christian Semmler
e648bcb439
add updated project files 2023-06-18 13:59:56 +02:00
Thomas May
8b58e6fe28 fix merge conflicts 2023-06-14 01:32:43 +01:00
Thomas May
7ed9c7df82 save the damn project 2023-06-14 01:30:56 +01:00
Christian Semmler
e773dc015b
merge 2023-06-12 21:01:56 +02:00
itsmattkc
e42349f969 msvc project update 2023-06-12 11:51:27 -07:00
Christian Semmler
fba95658b5
lego1: add MxCriticalSection implementation 2023-06-12 20:43:19 +02:00
itsmattkc
03fcad0bd2 added some legoomni functions and named some isle global vars 2023-06-10 22:11:05 -07:00
itsmattkc
8ff739c6d3 name some functions in mxticklemanager 2023-05-21 21:45:25 -07:00
itsmattkc
d4e2fb8d8a reorganized repo, implemented mxcore 2023-05-05 02:54:17 -07:00
itsmattkc
4b10d951e5 improved accuracy of library headers 2023-04-29 20:39:19 -07:00
itsmattkc
0270483b48 added all exe resources 2023-04-27 20:34:11 -07:00
itsmattkc
37100bf9c1 initial commit 2023-04-27 19:19:39 -07:00