Commit graph

420 commits

Author SHA1 Message Date
MS
5f8e26fc5b
Use relocation table with reccmp (#327) 2023-12-13 17:30:34 -05:00
Misha
403b3dddb4
Implement MxDiskStreamController::VTable0x20 (#325)
* push code

* fixes

* Update mxdiskstreamcontroller.h

* Update mxdsstreamingaction.h

* Match MxDiskStreamController::VTable0x20

* Move declaration

* Remove cast

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-13 22:44:14 +01:00
Christian Semmler
0278d032b9
Bootstrap MxCompositeMediaPresenter (#321)
* Bootstrap MxCompositeMediaPresenter

* Fixes
2023-12-13 13:53:17 +01:00
Christian Semmler
fd656eacdc
Implement/match rest of MxCompositePresenter (#320)
* Implement/match more of MxCompositePresenter

* Use parameter to `DeleteAll` instead of separate function

* StartAction match

* Implement/match rest of MxCompositePresenter

* Move annotation

* Add parameter name

* Merge

* Remove junk

* Move annotation

* Fixes
2023-12-13 12:59:22 +01:00
Christian Semmler
bc5ca621a4
(Proposal) Introduction of naming convention checker (ncc) (#322)
* Add ncc tool

* Add symlink

* Fixes

* Try this

* Try this

* Try this

* Try this

* Add include path

* Update style

* Update style

* Add more rules

* Fix style

* Update styles

* Fix name parameter

* Fix MxParam p

* Fix m_unk0x pattern

* Allow 4 digits for relative hex

* Add missing offset

* Fix some parameters

* Fix some vtables

* Fix more vtables

* Update rules, fixes

* More fixes

* More fixes

* More fixes

* More fixes

* More fixes

* More fixes

* More fixes

* Fix last issue

* Update readme

* Update readme

* Update CONTRIBUTING.md

* Fix annotations

* Rename

* Update CONTRIBUTING.md

* Update README.md
2023-12-13 11:48:14 +01:00
Christian Semmler
3b155bfe38
(Discussion/Proposals) Consistency regarding annotations of header-implemented functions (#316)
* Open discussion

* Move annotations of header-implemented functions back to `.h` files

* Adjust `README.md`

* Relocate annotation

* linter

* Comment markers in headers only, rename script, update github actions

* type hint compat

* Rename github action, better argparse for linter

* Type hints, working test for byname ignore

* Move annotation

* CI rename and enable warnfail, enforce mode always on

* Two step linting

* or one step

* continue on error

* two jobs instead

* Fixes

---------

Co-authored-by: disinvite <disinvite@users.noreply.github.com>
2023-12-12 20:27:17 +01:00
Christian Semmler
4dd0d60dec
Implement/match more of MxCompositePresenter (#315)
* Implement/match more of MxCompositePresenter

* Use parameter to `DeleteAll` instead of separate function

* StartAction match
2023-12-11 16:35:50 -05:00
Christian Semmler
a7194266b3
Refactor utility/decomp headers (#318) 2023-12-11 16:33:46 -05:00
Misha
3b30607337
implement a few mxstreamercontroller vtables (#323)
* implement a few mxstreamercontroller vtables

* Update mxstreamcontroller.cpp
2023-12-11 16:17:25 -05:00
Christian Semmler
2a16a508a5
(Proposal) Use alternative C4786 warning suppression (#312)
* Use alternative warning suppression

* Remove newline

* Fix script

* Patch C2.EXE to disable C4786 warning

* Delete compile.cmd

* py-fixes

* Update tools/patch_c2.py

* Update tools/patch_c2.py

---------

Co-authored-by: Anonymous Maarten <anonymous.maarten@gmail.com>
Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>
2023-12-08 06:37:44 -05:00
MS
ce686705f2
Refactor MxList cursors (#313)
* LegoWorldList

* Refactor list cursors

* Add decomp markers for list cursors

* Fix decomp markers

* MxRegionListCursor edit to prevent accuracy drop

* Better fix for MxRegionListCursor
2023-12-07 14:14:49 -05:00
Christian Semmler
1485e5df47
Implement/match most of MxStillPresenter (#309)
* Implement/match most of MxStillPresenter

* Fix merge
2023-12-07 13:13:31 +01:00
Mark Langen
260772e374
Bootstrap decomp of Tgl rendering library (#293)
* Bootstrap decomp of D3DRM rendering code

* This PR kicks off work on decompiling the D3D Retained Mode (D3DRM)
  rendering part of the codebase.

* High level overview:

* There is a base IMxDirect3DRMObject class which all of the D3DRM
  rendering objects inherit from. Its only virtual method is one to get
  the underlying object handle.

* A hierarchy of abstract classes inherits from this base class, which
  I've called "IMxDirect3DRM<class>". These classes only have pure
  virtual methods on them and don't contain any data.

* Each one of the abstract classes has exactly one concrete
  implementation, which I've called "MxDirect3DRM<class>". These classes
  have exactly one piece of data, which is a pointer to the underlying
  D3D Retained Mode object.

* If the classes need to store additional data, they store it in a
  userdata blob which is attached to the D3DRM object rather than the
  additional data being stored in the class itself.

* I've worked out about twice this many classes related to D3DRM
  rendering so far but the PR was getting large enough as is, so I'm
  cutting it here for now.

* I decomped sufficiently many methods of these classe to convince
  myself that the above observations are correct. About 60% of the
  decomped methods here are perfect matches, including at least one
  non-trivial method per class.

* Formatting

* Restructure changes using Tgl naming / details

* Restructure the changes to use the naming that we know from Tgl.

* Fill in some parts of the implementation I couldn't initially figure
  out using the details from Tgl (got more 100% matches).

* Move d3drm link requirement

* Fixups FloatMatrix -> FloatMatrix4

* Fix order

* Full fix for ordering problems

* Put back accidentally removed include.

* Fix call which should have been Release

* Use new and delete for DeepClone

* Missing Tgl:: on CreateRenderer

* Revert change to bool return value.

* Rename Something -> Unk

* Return paramter naming convention to what Tgl used

* Add scalar ddtor to verify inline destructor

* Fix order

* Change malloc/free -> new/delete in Tgl

* Remove duplicate destructor.

* Check all inline destructors

* Fix dtor comments

* Third time's the charm

* Alphabetical sort

* Decomp adjustments

* Add d3drm files to clang-format

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-07 13:10:42 +01:00
Christian Semmler
8bf0bde6b9
Bootstrap MxCompositePresenter (#310)
* Bootstrap MxCompositePresenter

* Remove MxUnkList

* Use TickleState_Idle

* Add all annotations

* Add vtable

* Add Notify

* Update mxcompositepresenter.h

* Remove extra TEMPLATE

* Update mxcompositepresenter.cpp
2023-12-07 13:06:44 +01:00
Christian Semmler
a7b81539b1
Match MxBitmap::ImportColorsToPalette 2023-12-06 08:29:24 -05:00
Christian Semmler
494a556f8e
(Proposal) Adjustments to "decomp" language (#308)
* Adjustments to "decomp" language

* Fix a comment

* Fix accidental clang-formatting

* Fix order

* Fix order

* Remove junk

* Fix OFFSET

* Adjustments based on new suggestions

* Annotate globals

* Globals in ISLE

* More globals

* Merge from parser2 branch

* Allow prepending space for exact marker match

* To eliminate noise, require the 0x prefix on offset for marker match

* fix test from previous

* Count tab stops for indented functions to reduce MISSED_END_OF_FUNCTION noise

* FUNCTION to SYNTHETIC where needed

* Missed marker conversion on SetAtomId

* pylint cleanup, remove unused code

* Fix unexpected function end, add more unit tests

* Be more strict about synthetic name syntax

* Revert "Missed marker conversion on SetAtomId"

This reverts commit d87d665127.

* Revert "FUNCTION to SYNTHETIC where needed"

This reverts commit 8c815418d2.

* Implicit lookup by name for functions

* Fix VTABLE SYNTHETIC and other decomp markers

* Get vtable class name

* Vtable marker should identify struct

* No colon for SIZE comment

* Update README.md

* Update README.md

* Update CONTRIBUTING.md

* Update README.md

* Update README.md

* Update CONTRIBUTING.md

* Update README.md

* Update CONTRIBUTING.md

* Fix destructor/annotation

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

---------

Co-authored-by: disinvite <disinvite@users.noreply.github.com>
2023-12-06 13:10:45 +01:00
Christian Semmler
4f5b70013f
Implement MxStillPresenter::LoadFrame (#306) 2023-12-01 05:59:32 -05:00
Joshua Peisach
f7dcdf9894
MxFlcPresenter vtable70, m_unk64 (#304)
* MxFlcPresenter: vtable70

* begin work on MxFlcPresenter's m_unk64

* Add another function that makes use of the FLIC header

* Remove space

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-11-29 13:35:32 +01:00
MS
3d48cdede1
STL lists for stream classes (#307) 2023-11-28 14:26:39 +01:00
Christian Semmler
10062d2b28
Return type of PutData is MxResult (#305)
* Return type of PutData is MxResult

* Remove out.html
2023-11-26 15:03:40 +01:00
Christian Semmler
d46f2e094b
Bootstrap MxStillPresenter (#303) 2023-11-25 20:08:10 +01:00
Christian Semmler
fb0d1ccb62
Implement/match MxLoopingMIDIPresenter (#302)
* Implement/match MxLoopingMIDIPresenter

* Move declarations
2023-11-25 13:26:44 -05:00
Christian Semmler
5aa548c449
Replace FALSE with NULL 2023-11-25 07:22:23 -05:00
Christian Semmler
7db2b2e6b7
Implement/match MxMidiPresenter (#301) 2023-11-24 12:21:26 -05:00
Christian Semmler
db77350169
(clang-format) Add EmptyLineBeforeAccessModifier (#300) 2023-11-24 12:10:09 -05:00
Christian Semmler
1d3ce6b0aa
Implement/match remaining MxWavePresenter functions (#294)
* Implement/match remaining MxWavePresenter functions

* Name m_unk65

* Match WriteToSoundBuffer

* Remove header

* Match StreamingTickle

* Name more variables

* Give names to some things
2023-11-24 12:09:53 -05:00
Joshua Peisach
a577b393bf
LegoRace initial layout (#299)
* LegoRace initial layout

* fix function ordering

* Fix it all

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-11-24 13:11:32 +01:00
MS
14f05ea823
MXIOINFO code style (#297) 2023-11-22 02:54:08 -05:00
Misha
343b0ff3cb
LegoActionControlPresenter functions (#295)
* LegoActionControlPresenter

* fix formatting

* fix format

* Fixes

* Fix order

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-11-21 11:35:03 +01:00
MS
1ae3b07dc2
Checkorder tool to keep functions in original binary order (#228)
* First commit of order tool

* More flexible match on module name. Bugfix on blank_or_comment

* Report inexact offset comments in verbose mode. Bugfix for exact regex

* Refactor checkorder into reusable isledecomp module

* Find bad comments in one pass, add awareness of TEMPLATE

* Refactor of state machine to prepare for reccmp integration

* Use isledecomp lib in reccmp

* Build isledecomp in GH actions, fix mypy complaint

* Ensure unit test cpp files will be ignored by reccmp

* Allow multiple offset markers, pep8 cleanup

* Remove unused variable

* Code style, remove unneeded module and TODO

* Final renaming and type hints

* Fix checkorder issues, add GH action and enforce (#2)

* Fix checkorder issues

* Add GH action

* Test error case

* Works

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-11-21 09:44:45 +01:00
Christian Semmler
714d36b57d
Bootstrap MxWavePresenter, implement/match some functions (#286)
* Bootstrap MxWavePresenter, implement/match some functions

* Fix

* Use constant for 0x7f

* Update mxwavepresenter.cpp

* Update mxwavepresenter.h
2023-11-19 12:10:49 -05:00
Christian Semmler
6441391092
Implement/match MxEventPresenter (#285) 2023-11-19 12:10:32 -05:00
Christian Semmler
e0c168367a
Fix ROI acronym explanation 2023-11-19 09:49:36 -05:00
Nathan M Gilbert
7fc1f8019f
Implement ViewROI and base classes (#287)
* Implement ViewROI and base classes

* Clean up Orientable header

* Move tgl to tgl subdirectory, and use target_include_directories

* Move classes to submodules

* Fix some missed references

* Fix/match UpdateWorldData

* Renaming / removing MxTypes / refactoring

* Consistent naming for Matrix

* Adjust format action

* Add Vector3/Vector4 to Data vector

* Add TGL comment

* Add a comment about Matrix4Impl

* Add ROI comment

---------

Co-authored-by: Anonymous Maarten <anonymous.maarten@gmail.com>
Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-11-19 15:38:07 +01:00
Joshua Peisach
0b0a9a6d6f
MxFlcPresenter: vtable70 (#291)
* MxFlcPresenter: vtable70

* Fix function

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-11-19 13:28:06 +01:00
MS
0bb3ea6a03
MxList refactor (#290)
* MxList refactor

* Reorder LegoPathControllerList::Destroy

* MxPtrList custom destructor and more offsets

Co-authored-by: Christian Semmler <mail@csemmler.com>

* Fix member offset comments in collection classes

* Fix template annotations

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-11-19 13:23:30 +01:00
Nathan M Gilbert
93eb4dc82d
Create (#289)
* Align name of Create method with known source
Fix name in Score for reccmp

* Also update MxEntity::Vtable0x14
2023-11-18 10:08:49 -05:00
Joshua Peisach
eee80250c0
LegoPalettePresenter - destroy function and destructor (#288)
* LegoPalettePresenter - destroy function and destructor

* Update legopalettepresenter.h

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-11-17 15:01:27 -05:00
Christian Semmler
d8bf4aebf4
Implement/match most of MxVideoPresenter (#280)
* Bootstrap MxMediaPresenter

* Implement/match MxMediaPresenter::Tickle and related

* Implement AppendChunk and Enable

* Implement/match most of MxVideoPresenter

* Add missing offset
2023-11-14 12:25:14 -08:00
Christian Semmler
c626f18b03
Prepare MxMidiPresenter vtable and refactoring (#278) 2023-11-14 12:10:43 -08:00
DmitriLeon2000
e86d6f0cc7
Marking LegoOmni::Notify as STUB (#284) 2023-11-13 13:21:58 +01:00
Christian Semmler
ba82821501
Implement/match MxMediaPresenter::Tickle and related (#277)
* Bootstrap MxMediaPresenter

* Implement/match MxMediaPresenter::Tickle and related

* Implement AppendChunk and Enable
2023-11-13 12:25:27 +01:00
Christian Semmler
a087c666b4
Remove unnecessary namespace 2023-11-13 12:15:13 +01:00
Christian Semmler
8a1422f13e
Implement/match MxMediaPresenter::EndAction (#276)
* Bootstrap MxMediaPresenter

* Implement/match MxMediaPresenter::EndAction

* Merge

* Remove garbage
2023-11-13 11:22:58 +01:00
MS
8861acaf20
Refactor MxHashTable/MxVariableTable (#283)
* Refactor MxHashTable/MxVariableTable

* Use MxS8 for Compare return type

* Cursor::DeleteMatch check and clang fix
2023-11-12 19:25:56 -05:00
Joshua Peisach
8b2e7a92e1
LegoTexturePresenter destructor and AddToManager (#282)
* LegoTexturePresenter destructor and AddToManager

* clang-format
2023-11-12 14:21:22 -05:00
Joshua Peisach
888205c1fa
Unstub LegoBuildingManager ctor (#281) 2023-11-12 14:21:01 -05:00
Christian Semmler
04b503c79f
Bootstrap MxMediaPresenter (#274)
* Bootstrap MxMediaPresenter

* Add override
2023-11-12 13:47:01 +01:00
Joshua Peisach
e2f2ef6152
MxControlPresenter: destructor and ReadyTickle (#279) 2023-11-10 19:27:10 +01:00
Christian Semmler
82697d7148
Add missing override keywords 2023-11-09 10:52:58 -05:00
Misha
1f6d1ddab0
Lego video manager constructor and deconstructor (#275)
* commit

* Update legovideomanager.cpp

* add offset comments

* Update legovideomanager.h

* Update legovideomanager.h
2023-11-08 17:05:20 -05:00
Christian Semmler
42c47a6540
Fix clang-format 2023-11-06 16:17:23 -05:00
Christian Semmler
a2c83a1b69
(clang-format) Add QualifierOrder (#272) 2023-11-07 14:00:00 +01:00
MS
7834f18999
MxQueue and parts of LegoInputManager (#268)
* MxQueue and parts of LegoInputManager

* Missed clang-format on mxqueue.h

* Fix declarations

* MxParamType -> NotificationId

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-11-07 09:30:26 +01:00
Christian Semmler
23f4fda304
Improve match of MxRegion::vtable18 (#266)
* Match MxRegionTopBottom::FUN_100c5280

* Resolve OtherAppend/Append

* Remove old code

* MxRegion::vtable18 up to 80%, refactor MxRect
2023-11-06 18:12:09 -05:00
Christian Semmler
d5cf23bada
Match MxRegionTopBottom::FUN_100c5280 (#261)
* Match MxRegionTopBottom::FUN_100c5280

* Resolve OtherAppend/Append

* Remove old code
2023-11-06 14:04:51 +01:00
Misha
a8254c048d
Implement more of LegoOmni (#267)
* commit code

* implement a few functions

* Update mxdsobject.h

* more stuff

* Update legoomni.cpp

* Update legoomni.cpp

* rename function

* fix

* undo useless changes

* Fixes

* Add global addr

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-11-06 10:00:24 +01:00
Joshua Peisach
ca359e9002
MxEventPresenter: AddToManager and small destroy cleanup (#269)
* MxEventPresenter: AddToManager and small destroy cleanup

* Update mxeventpresenter.h

* Update mxeventpresenter.h

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-11-05 17:45:48 -05:00
Misha
33dcb139b7
Match a few methods (#270)
* match a few misc methods

* Update legonavcontroller.h

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-11-05 17:41:35 -05:00
Misha
42a82794a8
Implement MxStreamController::vtable0x2c (#265)
* MxStreamController::vtable0x2c

* Add size comment

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-11-05 16:25:38 +01:00
Misha
49bad74104
implement register/unregister scripts (#264)
* register/unregister implementation

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-11-05 16:20:00 +01:00
Misha
4c4dce1302
Finish MxBackgroundAudioManager (#263)
* MxBackgroundAudioManager additional functions

* fix code style

* MxBackgroundAudioManager::PlayMusic

* match MxBackgroundAudioManager::Notify

* MxBackgroundAudioManager::Notify

* rename functions

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-11-05 16:07:28 +01:00
Joshua Peisach
22ac0b9296
Add missing ClassName's and IsA's (#262)
* Add missing ClassName's and IsA's

Exceptions: LegoAnimActor as it does something weird with a call to another private/inlined function(?) and RaceStandsEntity which seems to have two vtables

* clang-format

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-11-04 14:47:35 +01:00
Misha
24e889ee3d
some LegoEntityPresenter & LegoWorldPresenter functions (#260)
* LegoEntityPresenter & LegoWorldPresenter

* format fix

* Fixes

* Add size assert

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-11-02 11:54:08 +01:00
MS
176bd1d8fd
LegoGameState destructor and related (#259)
* LegoGameState destructor and related

* MxTypes, naming convention, and using a fraction

* use m_ prefix in struct
2023-11-01 11:12:03 -04:00
Christian Semmler
9ac9fe2761
MxRegion: initial implementation (#218)
* MxRegion structures

* MxRegion structures

* Remove junk

* Refactor

* WIP

* Use MxRect32 ctor

* Refactor

* Add MxSize32, match MxRegion ctor

* Add two template annotations

* Fix missing instructions

* Fix another bug

* Refactor

* Add GetPoint

* Implement/match MxRegionTopBottom::MxRegionTopBottom

* Implement/match more functions

* More implementation

* Don't expose internal match

* Fix indent

* Add template annotations

* Implement remaining functions

* Fix comment

* Match loops

* Simplify function

* Merge

* Remove junk

* Format

* Format

* match MxRegion::vtable1c

* revert vtable1c match-hack

This reverts commit 7b88625988.

---------

Co-authored-by: Ramen2X <64166386+Ramen2X@users.noreply.github.com>
2023-10-31 11:30:13 -04:00
Christian Semmler
cb286520e5
Add missing MxSoundManager functions (#258) 2023-10-31 10:22:01 -04:00
Misha
1db48b3b2c
MxSmkPresenter vtables (#254)
* implement vtbls

* Update smk.h
2023-10-30 12:46:38 -04:00
Misha
f3b0de0609
more MxDSBuffer functions (#255)
* FUN_100c6f80

* AllocateBuffer

* Update mxdsbuffer.h

* Update mxdsbuffer.cpp

* Update mxdsbuffer.cpp

* Return reference

* Fix delete call

* Fix GetWriteOffset

* Remove cast

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-30 14:54:00 +01:00
Misha
787d932825
LegoActor implementation (#253)
* LegoActor

* LegoEntity

* Replace float with MxFloat

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-30 14:15:43 +01:00
Misha
f4646a7075
implement a few mxstream* methods (#252)
* commit code

* commit code

* Update mxdiskstreamprovider.cpp

* Update mxstreamprovider.h

* improve match + add html file to gitignore

* improve match of MxRAMStreamController::Open

* MxDiskStreamController::Open

* Match some functions, relocate m_target to `MxThread`

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-29 15:01:14 +01:00
Ramen2X
153f4a872e
implement/match several mxsmkpresenter functions (#251)
* implement/match several mxsmkpresenter functions

* formatting

* formatting (sequel)

* Match remaining functions

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-27 19:00:20 +02:00
Christian Semmler
6594cc78ea
Implement/match remaining MxSoundManager virtual functions (#250) 2023-10-26 13:20:14 +02:00
Christian Semmler
89b3c5f8ae
Implement/match MxSoundManager::Create (#249)
* Implement/match MxSoundManager::Create

* Fix offset
2023-10-26 13:19:59 +02:00
Christian Semmler
4c387d6d49
Use sizeof() instead of magic number 2023-10-26 06:11:43 -04:00
MS
24c9f8b9ed
MxStillPresenter::ParseExtra (#248)
* MxStillPresenter::ParseExtra

* resolve clang-format complaints
2023-10-26 00:16:08 +02:00
Christian Semmler
20c4f832ca
Match MxList<T>::_InsertEntry to 100% 2023-10-25 18:02:49 -04:00
Nathan M Gilbert
7d8c57fc9c
Rename some functions and members (#246)
* Rename some functions and members

* Match LegoWorld::Notify to 100%

* Match MxOmni::Destroy to 100%

* Fix parameter prefix

* Fix another parameter

* Fix CR at EOF

* Fix CR at EOF

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-25 16:51:59 -04:00
Christian Semmler
a01bcf5241
(clang-format) Insert newline at end of file (#247)
* Insert newline at EOF

* Fix formatting
2023-10-25 11:51:59 -07:00
Christian Semmler
6b8dc8a0cc
Match MxVariableTable::SetVariable to 100% 2023-10-25 14:44:28 -04:00
Christian Semmler
220ad5d537
Use TEMPLATE syntax for MxHashTable decomp declarations 2023-10-25 14:32:51 -04:00
MS
10ebdfa608
MxVideoPresenter::IsHit (#244)
* MxVideoPresenter::IsHit

* Apply clang-format

* Minor logic fix

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-25 12:02:36 +02:00
Christian Semmler
b449da1fa3
Introduce clang-format (#240) 2023-10-25 01:38:27 +02:00
Anonymous Maarten
e928fc9425
Build fixes for mingw (#245) 2023-10-25 01:24:29 +02:00
Ramen2X
4c5c709af6
correct 0 in LEGO1 comment [skip ci] 2023-10-24 09:58:27 -04:00
Nathan M Gilbert
af1745db18
Implement Helicopter::VTable0xe4 (#243)
Clean up parent classes
2023-10-24 14:37:02 +02:00
Ramen2X
74329d681b
implement/match CalcLocalTransform (#241)
* implement/match CalcLocalTransform

* fix odd build error

* address feedback

move vec.h to thirdparty folder
update vec.h
move all realtime code to realtime folder
move calclocaltransform out of legoutil and into realtime
cast shift to MxS32
add additional unroll hack to CalcLocalTransform to prevent msvc entropy
2023-10-24 14:27:24 +02:00
Nathan M Gilbert
1ab29590ee
Start of helicopter Implementation (#239)
* Start of helicopter Implementation

Mostly Matching, some issues with MxMatrix and/or MxVector4

* Fix some style issues

* Fix some style issues
2023-10-24 10:14:45 +02:00
vMidz
587ac7a9d7
implement LegoPathPresenter (#238)
* implement LegoPathPresenter

implement some LegoPathPresenter functions

* Update legopathpresenter.cpp

* Minor fixes

* Order functions

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-23 16:08:22 +02:00
Joshua Peisach
34ce795cdd
MxWavePresenter ClassName, IsA (#237) 2023-10-23 09:33:07 -04:00
Nathan M Gilbert
4cc6b9b8ec
Implement Score (#230)
* Implement Score

* Update mxomni.cpp

Fix case of OFFSET comment.

* Fix DeleteObjects

* Apply changes (see comment)

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-23 13:16:21 +02:00
Misha
724c953947
Implement MxDSBuffer constructor, match MxDSSource::FUN_100bffd0 (#235)
* Implement MxDSBuffer constructor, match FUN_100bffd0

* Match to 100%, minor style fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-22 21:58:05 +02:00
Ramen2X
5ab993bfda
cleanup: fix all improper uses of MxResult (#234)
* cleanup: fix all improper uses of MxResult
2023-10-22 13:38:25 -04:00
Ramen2X
7e907cfe3f
implement/match JukeBoxState (#233) 2023-10-22 11:33:29 -04:00
Misha
681ab9c026
implement most of MxBackgroundAudioManager (#232)
* implement most of MxBackgroundAudioManager

* Match OpenMusic to 100%, style fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-22 16:11:46 +02:00
Misha
50fe5f9c83
implement LegoSoundManager vtable (#231)
* LegoSoundManager

* Fix virtual function declarations/locations

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-22 15:48:20 +02:00
MS
ae908a74cc
Copy constructor for MxVideoPresenter::AlphaMask (#229) 2023-10-21 19:47:48 -04:00
Joshua Peisach
af0e38176c
MxSoundPresenter (#227)
* MxSoundPresenter

Destructor, destroy, function adding itself to the sound manager and vtable38.

* Fix virtual function declarations

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-22 00:41:05 +02:00
MS
85d94baa50
MxVideoPresenter AlphaMask (formerly UnkStruct) (#226) 2023-10-22 00:40:31 +02:00
Christian Semmler
5dfb132025
Implement MxOmni::DoesEntityExist and related (#225)
* Implement MxOmni::DoesEntityExist and related

* Rename function for consistency
2023-10-21 17:23:55 -04:00
Christian Semmler
6931a817a6
Implement NotifyCurrentEntity (#224) 2023-10-21 17:02:55 -04:00
Joshua Peisach
4f201eaa48
MxEventPresenter destructor (#223)
* MxEventPresenter destructor

* Fix and implement Destroy

* Fix scope of Destroy decl

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-20 20:41:23 +02:00
Christian Semmler
3a21834382
Rename virtual function to fix override (#222) 2023-10-19 13:07:05 -04:00
Ramen2X
fbb3b4930c
label ScoreState::VTable0x18 and associated member (#221) 2023-10-19 12:56:56 -04:00
Ramen2X
adbe73d664
implement/match ScoreState vtable (#220)
* implement/match ScoreState vtable

* add size assert for ScoreState
2023-10-19 03:26:32 -04:00
Ramen2X
52e6c9ac22
implement/match global ControlManager() function (#219)
* implement/match global ControlManager() function

* remove unnecessary forward declaration
2023-10-18 22:12:28 +02:00
Ramen2X
7c26a4d2dc
fix LegoState::VTable0x1C fake-match & implement LegoFileStream::FUN_10006030 (#217)
* fix LegoState::VTable0x1C fake-match, implement LegoFileStream::FUN_10006030

* Match and relocate FUN_10006030

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-18 00:05:31 +02:00
Christian Semmler
476af22b36
Add size assert for MxVideoManager, sort functions 2023-10-17 09:16:37 -04:00
Christian Semmler
727c748ecd
Implement/match MxVideoManager::InvalidateRect and UpdateRegion (#214)
* Implement/match MxVideoManager::InvalidateRect and UpdateRegion

* Update comment
2023-10-16 16:20:52 -07:00
Ramen2X
8b1c8f7abe
use MxResult return type in MxCore::Tickle() 2023-10-16 18:46:45 -04:00
Ramen2X
3a1cab323f
complete and match LegoState vtable (#216) 2023-10-16 16:18:35 -04:00
Misha
3dee6eae7a
MxVideoPresenter functions (#187)
* mxvideopresenter

* Update mxvideopresenter.cpp

* use inline getter for rectange width/height

* Update mxvideopresenter.cpp

* Match MxVideoPresenter::Destroy to ~88%

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-16 22:09:08 +02:00
Ramen2X
b95656a735
implement GasStationState::GasStationState() (#215)
* implement GasStationState::GasStationState()

* Match 100%

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-16 20:17:23 +02:00
Christian Semmler
50b9a39b2f
Use memset to be consistent with the rest 2023-10-16 09:27:23 -04:00
Andrew Gutekanst
000c019a0e
Add LegoVehicleBuildState (#213)
* Add LegoVehicleBuildState

* Update LegoVehicleBuildState member-var names to include offsets
2023-10-16 15:22:21 +02:00
Ramen2X
ba8ae8138e
implement/match MxTransitionManager::Transition_Windows() (#212) 2023-10-15 19:41:05 -04:00
Christian Semmler
37e75703d4
MxOmni::Create 100% match, make Create calls consistent (#211)
* Improve MxOmni::Create match, make Create calls consistent

* Match MxEventManager::Create

* Fix MxTickleClientPtrList

* 100% match

* Update mxomnicreateparam.h
2023-10-14 20:49:07 -04:00
Ramen2X
0c8705a9df
implement/match MxTransitionManager::Transition_Broken() (#210) 2023-10-14 15:54:49 -04:00
Christian Semmler
0580b2870c
Use MxResult for RealizePalette 2023-10-14 15:31:30 -04:00
Christian Semmler
e4f87ad7dd
Implement MxVideoManager::vtable0x28 and Create (#208)
* MxVideoManager::Destroy / destructor

* Consistency

* Add missing override

* Implement MxVideoManager::vtable28

* Implement vtable2c

* Rename to Create
2023-10-14 21:33:11 +02:00
MS
e08717f496
MxTransitionManager Pixelation transition (#209)
* Pixelation transition and improved variable names

* More accurate pointer math for the 16-bit case
2023-10-14 15:15:51 -04:00
Christian Semmler
5ddfaab9e7
Implement MxVideoManager::Destroy / destructor (#207)
* MxVideoManager::Destroy / destructor

* Consistency

* Add missing override
2023-10-14 11:46:00 -07:00
Christian Semmler
f062543f87
Match MxPresenter::StartAction to 100% 2023-10-14 09:27:58 -04:00
Joshua Peisach
a814132ab9
MxMIDIPresenter functions (#204)
* MxMIDIPresenter destructor, stub Destroy for now

* MxMIDIPresenter::EndMIDIAction + update param name

m_MIDIInitialized is definitely public, since it is accessed from the global
MusicManager.

* Add getter for MIDIInitialized, fix virtual function decl

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-14 15:25:53 +02:00
Andrew Gutekanst
7cf85e6f06
Add LegoMeterPresenter stub class (#206) 2023-10-14 15:08:51 +02:00
Christian Semmler
b92b2604d5
Match MxObjectFactory::Create to 100% 2023-10-14 09:02:44 -04:00
Andrew Gutekanst
c66b6aa123
Refine MxObjectFactory (#205)
* Refine MxObjectFactory

* Change interface of Destroy

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-14 14:59:06 +02:00
Ramen2X
a24a798c82
rename all uncertain names to unk (#203) 2023-10-13 17:36:16 -04:00
DmitriLeon2000
34e09c2bb3
Clean up Destroy pattern everywhere, fix missing overrides (#202)
* Rename MxMusicPresenter function vtable38

* Rename MxMusicPresenter function vtable38

* MxMediaPresenter, MxMusicManager and MxMusicPresenter
* Refactoring Destroy functions

* MxMediaManager & MxMusicPresenter

* Fix some vtable declarations, more renames

* Fix MxEventManager

* More rename fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-13 18:43:45 +02:00
Mark Langen
91c3ed3e70
100% match of many functions in the LegoGameState::Save codepath (#86)
* Only include decomps

* One more function

* Add offset to endOfVariables

* Remove leftover header

* Use undefined where applicable

* Fixes, refactorings

* Fixes

* Fix calling convention

* Added offset comment

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-12 18:18:24 +02:00
Christian Semmler
49ec7364c2
MxDSAction::MergeFrom: match to 100% (#200)
* Minor accuracy improvement

* Workaround for 100% match

* Update mxdsaction.cpp
2023-10-12 08:54:02 -07:00
Misha
b7b0ac6ae7
Implement a few functions in LegoEntity (#201) 2023-10-12 00:15:36 +02:00
Angel
19ee8cdc30
Implemented MxVector4::SetMatrixProductWrapper (#198)
* Implemented the function wrapper for SetMatrixProduct labeled as
SetMatrixProductWrapper with 100% match.

* Rename for consistency

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-11 12:18:48 +02:00
DmitriLeon2000
02d003673d
Implement MxMusicPresenter's Destroy method and move MxMediaPresenter's Destroy method to "protected" (#199)
* MxMusicPresenter destroy

* Implement MxMusicPresenter's Destroy method and move MxMediaPresenter's Destroy method to "protected"

* MxMediaPresenter Destroy to "protected", for real

* MxMusicPresenter Destroy
2023-10-11 12:18:26 +02:00
Christian Semmler
11dafaf816
Fix MxDSMediaAction structure/matches (#194) 2023-10-11 00:50:14 -07:00
Christian Semmler
93ce1ccfe8
Implement remaining MxDSSelectAction functions (#183)
* Implement remaining MxDSSelectAction functions

* Fix match
2023-10-10 13:22:00 -04:00
vMidz
23b9d47e8a
implement EndAction (#196)
* implement EndAction

implement EndAction
+offsets commenets

* Refactor MxParam/MxNotificationParam

* Add correct address for destructor

* Make MxNoticiationParam more concise

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-10 13:05:04 -04:00
Christian Semmler
d65c87f04d
Add missing space 2023-10-10 05:30:56 -04:00
Misha
114a959741
MxDiskStreamController vtable (#197)
* mxdiskstreamcontroller vtable + MxStreamController::vtable0x20

* stub MxDiskStreamController::Open

* MxDiskStreamProvider

* MxNextActionDataStart

* Revert "MxNextActionDataStart"

This reverts commit 41e8cfa2f1.

* Match MxStreamController::vtable0x20

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-10 10:27:00 +02:00
MS
49efa02eaa
MxBitmap code clarity (#195)
* MxBitmap code clarity

* Use mxtypes. TWOCC for BM string. SetSize arg to FALSE
2023-10-10 00:20:38 +02:00
Christian Semmler
28206402f9
Use forward declaration for LegoAnimationManager in LegoOmni 2023-10-09 06:33:06 -04:00
Misha
625ee52fe0
implement a few mxomni/legoomni functions (#193) 2023-10-09 12:31:36 +02:00
Angel
0db96ce2d6
Implemented MxVector4::UnknownQuaternionOp (#192)
* Corrected typo in reccmp.py

* Implemented MxVector4::UnknownQuaternionOp
65% similar to the original

* Brought MxVector4::DotImpl to 100% match
2023-10-09 11:04:35 +02:00
Misha
d82649c6f0
MxStream provider and controller vtables (#191)
* MxStreamProvider and MxRamStreamProvider vtable

* Update mxramstreamprovider.h

* Match IsA

* Fixes, improvements

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-08 22:41:34 +02:00
Misha
3ac0c5d86c
Implement LegoVideoManager::MoveCursor and improve SetSkyColor (#190)
* improved SetSkyColor match

* LegoVideoManager::MoveCursor

* rename parameters

* Minor improvements

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-08 22:00:59 +02:00
Joshua Peisach
7c674cbb47
Start MxCompositePresenter ctor/dtor (#186)
* Start MxCompositePresenter ctor/dtor

* Add MxUnkList

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-08 17:25:38 +02:00
Misha
3afbf808d1
MxMediaPresenter vtable (#189)
* Add vtables for MxMediaPresenter

* remove comments and fix override
2023-10-08 15:46:09 +02:00
Misha
5f8bde9e48
Finish MxMediaManager and MxEventManager (#185)
* Finish MxMediaManager and MxEventManager

* Update mxomni.cpp

* fixes
2023-10-07 23:30:05 +02:00
Joshua Peisach
472a82f220
MxMusicPresenter vtable (#184)
* MxMusicPresenter vtable

vtable+0x34 adds the current presenter to the music manager
vtable+0x38 calls destroy with the param as "FALSE"

* Update mxmusicpresenter.cpp

* Update mxmusicpresenter.cpp

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-07 16:36:05 -04:00
Christian Semmler
a9fa734844
Refactor deserialization of objects (#170)
* Use template helpers for deserialization

* Remove space

* Fix naming
2023-10-07 20:07:26 +02:00