Commit graph

168 commits

Author SHA1 Message Date
itsmattkc
4c9e138cbf implement all DLL exports (as TODOs)
Now we can use our own compiled LEGO1.LIB rather than one generated from the original. Also implements a script that tests them to help ensure future commits don't break them.
2023-06-30 11:34:39 -07:00
MattKC
13df3f906d
Update README.md [skip ci] 2023-06-29 21:45:29 -07:00
MattKC
8476bf06b2
Yet another CMake implementation (#61)
* initial cmake implementation

* ci: i guess older cmake doesn't support this

* cmake: add max version to suppress warning

Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>

---------

Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>
2023-06-29 16:39:02 -07:00
itsmattkc
aa3dfe1808 ci: skip continuous release on pull requests [skip ci] 2023-06-29 10:24:58 -07:00
MishaProductions
88c18c76ed
lego1: match LegoOmni::GetInstance and deconstructor and add a few methods (#58)
* add GetInstance fix

* Implement a few methods

* Move get* helpers to their correct locations

* rename m_instance

* add TransitionManager
2023-06-29 10:02:47 -07:00
Christian Semmler
6558a78848
lego1: implement MxDSObject (#55)
* Implement MxDSObject

* use discovered names

* Update LEGO1/mxdsobject.cpp

Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>

* Update mxdsobject.cpp

* Update mxdsobject.h

---------

Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>
2023-06-29 09:08:06 -07:00
Christian Semmler
6761345c8c
lego1: fix/match some ClassName functions (#60) 2023-06-29 09:05:45 -07:00
itsmattkc
566e107290 reccmp: only show recompiled address on request
Improves comparisons between diffs because the addresses shifting around leads to false positives
2023-06-29 09:02:52 -07:00
Christian Semmler
3e58002ba5
MxStreamController: fix structure (#57) 2023-06-29 08:48:42 -07:00
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
MattKC
4d200bb193
Update CONTRIBUTING.md 2023-06-29 00:49:57 -07:00
MS
2d9af630ba
lego1: Two more operators for MxString (#53)
Followed the hint from @madebr in #31 that the next function in MxString was operator+. The one after that is operator+= and both are at 100%.

Squashed commits:
* Removed unnecessary consts
* Replaced malloc/free with new/delete, which solved swapped regs in operator=
* Use delete[] when freeing char* m_data
2023-06-27 19:57:30 -07:00
itsmattkc
8da62cc596 ci: convert to 512px png
These might scale down better, the ones in the readme seem really blurry
2023-06-27 19:55:17 -07:00
itsmattkc
8e6e2a3962 reccmp: fix SVGs on light backgrounds 2023-06-27 19:46:04 -07:00
itsmattkc
aaf61ba48e ci: ignore return code of diff
diff returns a 1 error code if diffs are found which halts the script, but we don't consider this an error, we're just interested in the information
2023-06-27 19:08:43 -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
itsmattkc
c7cf9ee8fd ci: compare accuracy as separate step 2023-06-27 19:02:26 -07:00
itsmattkc
ad2d84ce58 ci: compare accuracy to current master 2023-06-27 19:01:04 -07:00
itsmattkc
008fd80a6f ci: create text progress reports too for auto-comparison 2023-06-27 18:58:15 -07:00
itsmattkc
f7c84d719b reccmp: use bold font for easier readability 2023-06-27 18:25:38 -07:00
MattKC
612730f631
readme: add progress images 2023-06-27 18:12:52 -07:00
itsmattkc
b393851ebd reccmp: change svg canvas size 2023-06-27 18:10:36 -07:00
itsmattkc
1ea15e6478 reccmp: use entire canvas for progress images 2023-06-27 18:04:30 -07:00
itsmattkc
f03cee6b6e reccmp: improve progress bar text rendering 2023-06-27 18:00:53 -07:00
itsmattkc
40fdc5b2f5 ci: use alternative download 2023-06-27 17:42:07 -07:00
itsmattkc
4ba4352058 ci: pacman noconfirm 2023-06-27 17:38:37 -07:00
itsmattkc
dd3ce5ac61 ci: attempt to install inkscape through msys2 2023-06-27 17:31:46 -07:00
itsmattkc
a3887f554d ci: attempt installing inkscape 2023-06-27 17:28:46 -07:00
itsmattkc
0191c6560b ci: attempt to use inkscape to produce PNGs 2023-06-27 17:26:30 -07:00
itsmattkc
5915cc3ea2 ci: try converting SVG to PNG 2023-06-27 17:17:26 -07:00
itsmattkc
066b7311ad rename Isle to IsleApp 2023-06-27 17:10:11 -07:00
itsmattkc
883720941a ci: provide GITHUB_TOKEN as env 2023-06-27 16:25:26 -07:00
itsmattkc
b2bd8bc766 ci: fix typo 2023-06-27 16:15:38 -07:00
itsmattkc
d8d83eb02e ci: upload release 2023-06-27 16:12:11 -07:00
itsmattkc
f9e9723a67 reccmp: give svg template background color 2023-06-27 16:12:04 -07:00
itsmattkc
4a1e3a5b7e reccmp: fixed typo 2023-06-27 16:01:49 -07:00
itsmattkc
b080766321 generate progress SVGs 2023-06-27 15:59:44 -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
MattKC
6e8b93b07c
Update CONTRIBUTING.md 2023-06-27 10:56:59 -07:00
Christian Semmler
4db49fe6a6
match MxAutoLocker ctor/dtor (#52) 2023-06-26 09:48:19 -07:00
Mark Langen
0b47f3fff3
Improve reccmp.py (#49)
* Improve reccmp.py

* Now only shows the info for a single function when a specific function
  is specified via -v

* Now colors the output by default

* Percentages are shown as green/yellow/red depending on the percentage
  completed.

* Diff +/- lines are shown as green/red.

* Includes standard --no-color argument in case we need no color for
  some tooling which consumes the output.

* Feedback
2023-06-25 19:01:40 -07:00
Christian Semmler
9990d0a2b7
lego: match GetClassName/IsClass (#48) 2023-06-25 18:34:13 -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
Christian Semmler
579ee84049
isle: Improving WinMain and SetupWindow accuracy (#38)
* fix second Tick call, change loop

* add missing parameter to SetupWindow

* add missing include

* reorganize CreateWindowEx

* reorder cursor assignments

* declare SetupWindow as inline

* fix indent

* WinMain 99%

* minor improvement
2023-06-23 11:45:25 -07:00
Anonymous Maarten
7dbb06eef3
Convert all sources eol's to nl (#41) 2023-06-23 09:17:41 -07:00
MS
4f4863af6f
Use bitfield for MxVideoParamFlags (#40)
* 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 (#39) 2023-06-22 09:23:54 -07:00
Christian Semmler
a0fac56d4c
lego: implement/match MxVideoParam exported functions (#36)
Co-authored-by: itsmattkc <itsmattkc@gmail.com>
2023-06-22 09:19:48 -07:00