* 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>
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)
* 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
* 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
* 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
* 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>
* 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>
* 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.
For some reason the decomp version is doing the first xor in
EnableFullScreen with the operands swapped. The source code and
the original binary both have m_flags ^ e but the decomp binary has e ^
m_flags. This gives the same result but it is not a 100% match in the
binary. I'm not sure why the compiler is doing this or how to
change it but the other inaccuracy with the function is fixed.