Commit graph

725 commits

Author SHA1 Message Date
ecumber
a6f3acf5b7
LegoInputManager: some members and functions (#81)
* Squashed commit of the following:

commit 1fe03a4a787693616c56f59622bcaae8fd53b30b
Author: ecumber <ecumber05@gmail.com>
Date:   Thu Jul 6 21:04:15 2023 -0700

    data types

commit 7c8432f88236c42c17998d51e820b5e219f3c326
Author: ecumber <ecumber05@gmail.com>
Date:   Thu Jul 6 12:39:13 2023 -0700

    Destroy

commit f60eb3923b24bc87bb31ba783676c6a50d48e9b8
Author: ecumber <ecumber05@gmail.com>
Date:   Thu Jul 6 12:15:33 2023 -0700

    compile fix

commit e2f78d557f223c2552a046470578d154c29e473b
Author: ecumber <ecumber05@gmail.com>
Date:   Tue Jul 4 13:37:33 2023 -0700

    Timer functions

commit 447e234e6324a5b0958e9e94c5cda53703abada2
Author: ecumber <ecumber05@gmail.com>
Date:   Thu Jul 6 02:40:10 2023 -0700

    fix

commit 4670fd790b16a15b5797d50bc3cd1f6e2c9e890d
Author: ecumber <ecumber05@gmail.com>
Date:   Thu Jul 6 02:39:04 2023 -0700

    improvements

commit 7f70bce1eefe550fe6bef193e7ee54948af354b6
Author: ecumber <ecumber05@gmail.com>
Date:   Tue Jul 4 03:42:47 2023 -0700

    Update legoinputmanager.cpp

commit 0d3433a75d2b20a3fff1da8147ce502b279b1e9c
Author: ecumber <ecumber05@gmail.com>
Date:   Tue Jul 4 03:38:32 2023 -0700

    Add ReleaseDX

commit 72d27fd402efb37da1ce8c41a3350df66c99db1d
Author: ecumber <ecumber05@gmail.com>
Date:   Tue Jul 4 02:27:12 2023 -0700

    Update CMakeLists.txt

commit 09626a62f9d2c56a523ca582be95a4dfb29ee188
Author: ecumber <ecumber05@gmail.com>
Date:   Mon Jul 3 13:48:46 2023 -0700

    Move to new branch

* Squashed commit of the following:

commit d9148242a322ec54750c89357a0db2154310907d
Author: ecumber <ecumber05@gmail.com>
Date:   Sun Jul 16 23:56:54 2023 -0700

    Update legoinputmanager.cpp

commit 983d08650eb3df0b9103761b4023a6d3395686b2
Author: ecumber <ecumber05@gmail.com>
Date:   Thu Jul 6 21:04:15 2023 -0700

    data types

commit 4e8aac36ece6f3d7cfff39432ebc4e731876fb75
Author: ecumber <ecumber05@gmail.com>
Date:   Thu Jul 6 12:39:13 2023 -0700

    Destroy

commit 907801567a8c93ebd242b25b4aa2b00d38eaedc8
Author: ecumber <ecumber05@gmail.com>
Date:   Thu Jul 6 12:15:33 2023 -0700

    compile fix

commit 91a5f75e938d796f153cc872e46acef2c342818c
Author: ecumber <ecumber05@gmail.com>
Date:   Tue Jul 4 13:37:33 2023 -0700

    Timer functions

commit e77f08f5358b6cc4ee41583f70281c40b95bea29
Author: ecumber <ecumber05@gmail.com>
Date:   Thu Jul 6 02:40:10 2023 -0700

    fix

commit 30d204b7734a56b4140a3bf53c9825126a1f80c7
Author: ecumber <ecumber05@gmail.com>
Date:   Thu Jul 6 02:39:04 2023 -0700

    improvements

commit dd4ff493355796c41a6fb328fda1892c0f1fec0a
Author: ecumber <ecumber05@gmail.com>
Date:   Tue Jul 4 03:42:47 2023 -0700

    Update legoinputmanager.cpp

commit 852658cdbc0e6f792a6a79dfc77df3539ea4a15a
Author: ecumber <ecumber05@gmail.com>
Date:   Tue Jul 4 03:38:32 2023 -0700

    Add ReleaseDX

commit 430d4e100811bc00dc983a9fe78aa1482fb92f7f
Author: ecumber <ecumber05@gmail.com>
Date:   Tue Jul 4 02:27:12 2023 -0700

    Update CMakeLists.txt

commit 6fb94f007613e920b1d64775b7b76cb721482884
Author: ecumber <ecumber05@gmail.com>
Date:   Mon Jul 3 13:48:46 2023 -0700

    Move to new branch

* Fixes

* Remove obsolete stuff

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-03 19:53:22 +02:00
Joshua Peisach
6480fd90e7
Motorcycle initial class structure and ctor (#156) 2023-10-03 04:02:08 -04:00
Christian Semmler
b7efd64ac1
Bootstrap MxDSSelectAction, generalize MxList (#142)
* reccmp: Add ability to compare template instantiations

* Add example of template instantiation comparison.

* merge

* Add template compare annotations for MxList instances

* Bootstrap MxDSSelectAction, generalize MxList

* Fix template annotations

* Fix merge error

* Fix merge error

---------

Co-authored-by: Brendan Dougherty <brandougherty1@gmail.com>
2023-10-02 15:51:43 +02:00
MattKC
56f3d12096
Implement MxTransitionManager ctor/dtor/rest of StartTransition (#153) 2023-10-01 20:18:16 -04:00
MS
592ede1c7b
LegoEntity::Reset (#152) 2023-10-01 15:06:29 +02:00
Joshua Peisach
8725986085
MxControlPresenter ctor/structure (#151)
* MxControlPresenter ctor/structure

* Use undefined types where possible, remove implicit pads

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-01 14:49:55 +02:00
Joshua Peisach
7f423439b7
Fix pizza constructor (#149)
* Pizza: fix type of m_unk98

* Fix pizza constructor

* Match Pizza::Pizza

* Use undefined type

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-01 01:25:33 +02:00
Joshua Peisach
b20aa9b8fb
Police, PoliceEntity ClassName and IsA (#150) 2023-10-01 00:57:10 +02:00
Joshua Peisach
06c7ba2c37
MxDiskStreamProvider constructor (#131)
* MxDiskStreamProvider constructor

* Add work-in-progress list struct to MxDiskStreamProvider

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-09-29 23:53:02 +02:00
MS
0dc8dd641a
MxVariable subclass for fsmovie setting (#147)
* LegoFullScreenMovie variable and related

* Changes after review
- Reduce scope on global strings
- Size assert for LegoGameState (based on the constructor references only)
- 1 -> TRUE for EnableFullScreenMovie
2023-09-29 16:38:08 -04:00
pewpew
b77cd067d3
reccmp: template compare annotations (#88)
* reccmp: Add ability to compare template instantiations

* Add example of template instantiation comparison.

* merge

* Add template compare annotations for MxList instances

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-09-29 11:40:46 -07:00
Joshua Peisach
f7743c51fb
MxMIDIPresenter: ClassName, IsA (#146) 2023-09-29 13:18:22 -04:00
Joshua Peisach
5b7954a97b
MxMusicPresenter: ClassName, IsA, ctor, Init (#145) 2023-09-29 12:51:05 -04:00
Christian Semmler
dc869c441c
Relocate SetAppCursor to legoutil (#144) 2023-09-29 12:42:15 -04:00
Ramen2X
44c3ae478b
implement some of MxTransitionManager (#143)
* implement some of MxTransitionManager

start working on MxTransitionManager::StartTransition
add TransitionType enum
implement/match MxTransitionManager::GetDDrawSurfaceFromVideoManager
implement/match global function SetAppCursor

* remove offset comment from mxomni.h

* remove misc offset comments from mxtransitionmanager.h

* address feedback

* merge m_unk20-24 into pad
2023-09-29 18:09:46 +02:00
Ramen2X
2794525564 make note of enum style in CONTRIBUTING.md [skip ci] 2023-09-28 13:11:30 -04:00
MS
749c553325
LegoEntity parsing extra Action strings (#141)
* LegoEntity parse action string

* Reduced size assert for MxEntity

* remove override keyword for LegoEntity function

* Move global strings to new define.cpp file
2023-09-27 15:16:46 -04:00
Christian Semmler
e341afd411
Match ~MxDSStreamingAction 2023-09-26 07:25:23 -04:00
Christian Semmler
915390602b
Add size assert for MxString 2023-09-26 07:24:28 -04:00
MattKC
574a9dc6f1
Implement some MxStreamer functions (#130)
* Implement some MxStreamer stuff

* Implement/match MxVideoManager::Tickle (#128)

* Implement/match MxPresenter::StartAction

* Update mxpoint32.h

* Implement/match MxVideoManager::Tickle

* Update mxlist.h

* Update mxpresenter.cpp

* MxFlcPresenter ctor/dtor (#132)

* MxFlcPresenter ctor/dtor

* Match constructor

---------

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

* LegoOmni::CreateStreamObject and related (#129)

* LegoOmni::CreateStreamObject and related

* Revert change to MxDSSource/MxDSFile Read export

* Bootstrap MxDSMultiAction (#133)

* Bootstrap MxDSMultiAction

* Move destroy function to list class

* Fix unk14 call

* Quick patch for EqualsDataProduct (#134)

* MxLong Tickle() -> MxResult Tickle() (#135)

* MxLong Tickle() -> MxResult Tickle()

* Remove garbage

* Fix implementations

* PresenterNameDispatch (#137)

* PresenterNameDispatch

* Use reference for PresenterNameDispatch param
- fix or add const markers so we can use a const reference

* Implement/match remaining MxDSMultiAction functions (#136)

* Implement/match MxDSMultiAction::Deserialize

* Implement remaining functions of MxDSMultiAction

* Remove space

* Implement/match MxDSParallelAction (#138)

* Implement/match MxDSParallelAction

* Fix type

* Remove space

* Add neccessary MxDSMultiAction functions

* Implement/match MxDSSerialAction (#139)

* Implement/match MxDSSerialAction

* Add neccessary MxDSMultiAction functions

* Fix LegoOmni vtable (#140)

* matched GetOpenStream

* matched MakeSourceName

* add MxDSBuffer stub

* add MxRAMStreamController stub

* add stubbed functions for MxStreamController used by MxStreamer

* implement AddStreamControllerToOpenList

* implement most of MxStreamer::Open

* add note for MxStreamerSubclass1

* fix compiler issue

* implement MxStreamer::Notify

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
Co-authored-by: Joshua Peisach <itzswirlz2020@outlook.com>
Co-authored-by: MS <disinvite@users.noreply.github.com>
2023-09-25 19:30:56 -07:00
MattKC
3f6e3af8ca
Fix LegoOmni vtable (#140) 2023-09-25 13:28:25 -07:00
Christian Semmler
e1e2abc510
Implement/match MxDSSerialAction (#139)
* Implement/match MxDSSerialAction

* Add neccessary MxDSMultiAction functions
2023-09-25 12:53:57 -07:00
Christian Semmler
b2ec18f943
Implement/match MxDSParallelAction (#138)
* Implement/match MxDSParallelAction

* Fix type

* Remove space

* Add neccessary MxDSMultiAction functions
2023-09-25 11:58:15 -07:00
Christian Semmler
548f337cad
Implement/match remaining MxDSMultiAction functions (#136)
* Implement/match MxDSMultiAction::Deserialize

* Implement remaining functions of MxDSMultiAction

* Remove space
2023-09-25 10:08:19 -07:00
MS
6dd94d3626
PresenterNameDispatch (#137)
* PresenterNameDispatch

* Use reference for PresenterNameDispatch param
- fix or add const markers so we can use a const reference
2023-09-22 17:42:23 -04:00
Christian Semmler
b4258da0f5
MxLong Tickle() -> MxResult Tickle() (#135)
* MxLong Tickle() -> MxResult Tickle()

* Remove garbage

* Fix implementations
2023-09-21 11:51:24 -07:00
MS
611afb7799
Quick patch for EqualsDataProduct (#134) 2023-09-21 11:27:27 +02:00
Christian Semmler
99c27a6a50
Bootstrap MxDSMultiAction (#133)
* Bootstrap MxDSMultiAction

* Move destroy function to list class

* Fix unk14 call
2023-09-20 13:36:15 -07:00
MS
b743f99d20
LegoOmni::CreateStreamObject and related (#129)
* LegoOmni::CreateStreamObject and related

* Revert change to MxDSSource/MxDSFile Read export
2023-09-20 16:22:57 -04:00
Joshua Peisach
1d3c1bdbd1
MxFlcPresenter ctor/dtor (#132)
* MxFlcPresenter ctor/dtor

* Match constructor

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-09-20 13:48:46 +02:00
Christian Semmler
d145f914c4
Implement/match MxVideoManager::Tickle (#128)
* Implement/match MxPresenter::StartAction

* Update mxpoint32.h

* Implement/match MxVideoManager::Tickle

* Update mxlist.h

* Update mxpresenter.cpp
2023-09-19 20:00:34 -07:00
Christian Semmler
4bd67e4ae1
Implement/match MxPresenter::StartAction (#126)
* Implement/match MxPresenter::StartAction

* Update mxpoint32.h
2023-09-19 14:45:16 -07:00
Joshua Peisach
5617e0e044
MxAudioManager: Destructor, LockedReinitialize, Reinitialize (#125)
* MxAudioManager: Destructor, LockedReinitialize

* MxAudioManager::Reinitialize, fix LockedReinitialize logic

* MxAudioManager cleanup

- fix param in LockedReinitialize, mark that function as private/give it a better param name

* Match LockedReinitialize, fix function declarations, add/match InitPresenters

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-09-19 16:42:39 +02:00
Christian Semmler
c67e537508
Implement/match MxMediaManager::Tickle (#127)
* Implement/match MxMediaManager::Tickle

* Remove space
2023-09-17 14:10:38 -07:00
Christian Semmler
b819657bd8
Implement AddPresenter, RemovePresenter, StopPresenters (#124)
* Add MxList, MxPresenterList, add to MxMediaManager

* Match ~MxList<T>

* Implement AddPresenter, RemovePresenter, StopPresenters

* Initial implementation of RemovePresenter/Find/Detach

* Implement/match MxMediaManager::StopPresenters

* Move definitions out of class body

* Match RemovePresenter/Detach

* Fix style

* Fix merge error

* Fix merge error

* Fix merge error

* Remove space
2023-09-17 12:38:50 +02:00
Christian Semmler
253538feed
Add MxList, MxPresenterList, add to MxMediaManager (#122)
* Add MxList, MxPresenterList, add to MxMediaManager

* Match ~MxList<T>
2023-09-16 21:18:56 -07:00
Christian Semmler
b1a2aeaed6
Print recompiled address when using --verbose 2023-09-13 10:39:35 -04:00
MS
89f66e4e0e
MxPresenter::ParseExtra (#123)
* MxPresenter::ParseExtra and surrounding functions

* Named extra data is MxDSAction, added Parsed flag to enum
2023-09-13 09:44:03 +02:00
Joshua Peisach
3e7cb6a7a8
Init functions in MxMediaPresenter and LegoPalettePresenter (#121)
* Match MxMediaPresenter::Init

* LegoPalettePresenter::Init()

* LegoPalettePresenter: for now, use undefined4 type
2023-09-11 13:43:55 -04:00
Joshua Peisach
dc18b5d9c1
MxDirect3D (#114)
* MxDirect3D Constructor

* Implement MxDirect3D::Clear (not yet matching)

* Match MxDirect3D::Clear

* Building out MxDirect3D, link dxguid, add size asserts

* Move a few things around on the Enumerate context obj

* remove dupe mxdirect3d

* Match BuildErrorString and _DoEnumerate

* Fix style

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
Co-authored-by: disinvite <disinvite@users.noreply.github.com>
2023-09-10 14:56:16 +02:00
Joshua Peisach
1fa2fd9737
The IslePathActor's (#113)
* pizza: fix type m_unk90

* Initial implementation of a lot of IslePathActor's

All IslePathActor's seem to have (for the most part), the same few variables in common,
probably some ID. SkateBoard, Pizza and TowTrack seem to be a bit more complicated with additional
fields surrounding it.

* Add missing ClassName(s) and IsA(s)

* Add decomp size asserts

* Fix size assertions

* Make legopathactor fields protected for now, fix a type in Pizza

* Fix TowTrack structure

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-09-10 14:01:39 +02:00
MishaProductions
c4453fe49f
Match SetUserMaxLOD (#118)
* Match SetUserMaxLOD and implement UpdateMaxLOD

* Update realtimeview.cpp
2023-09-04 16:34:27 -07:00
Christian Semmler
2b3f7cbfc1
Add tickle states and implement/match MxPresenter::Tickle (#119)
* Implement/match MxPresenter::Tickle

* Remove space

* Explicit inline for aesthetics
2023-09-04 15:33:38 -07:00
Joshua Peisach
c7458211f3
Some MxBitmap vtable functions (#89)
* Match MxBitmap::vtable+40 (CopyColorData)

It's basically a call to StretchDIBits, which copies color data for a rectangle

* Name a ternary raster op

* Name variable m_unk18 (m_bmiColorsProvided)

Since this variable is passed to StretchDIBits, we can see what its supposed to mean.

We dont have DX5 docs, but we have docs of the current day, and this as its 'iUsage':
"Specifies whether the bmiColors member of the BITMAPINFO structure was provided and, if so, whether bmiColors contains explicit red, green, blue (RGB) values or indexes."
The second part (about what the bmiColors contains) seems redundant, since we know this is a boolean.

Source: https://learn.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-stretchdibits

* MxBitmap::CreatePalette is now up to 60%

* Add progress on MxBitmap::LoadFile, add the global bitmap signature, add Clone call in CreatePalette

* getting closer

* Implement MxBitmap::vtable18

* Got vtable18 into a better state

It's progress doesn't affect the status of CopyColorData, which is
back at 100%, as it makes sense the loop is a memcpy

* if you want to do more of vtable18 have fun

* Cleanup MxBitmap::LoadFile

* Begin work on FUN_100bd450 (ImportColorsToPalette)

This took a lot of time, finally I got a good understanding of it.

Primarily what's left now is the loop
https://hackmd.io/@KsNMFSBHTO2gxDyRIPRQ1g/H1LCVQXon

* Don’t include class name in method declaration

* yolo vtable38 (I can't test the build atm)

I moved up ImportColorsToPalette so other functions, including this one can use it

* Cleanup while i keep getting bored of matching these functions that wont match

* likely malloc is an operator new

* A few things for MxBitmap
* new struct MxBITMAPINFO
* vtable18 and ImportPalette 100%
* ImportColorsToPalette improvement

* Match vtable1c and vtable3c

* use MxResult return types

* CreatePalette - Use MxResult to track success

* Define types for the bit depth

That boolean is not really a boolean, its just a variable to store
the bit depth as some DWORD. 0 = 256 color, 1 = High Color (16-bit).

* Match MxBitmap::CreatePalette

* Match LoadFile

YEGYEEHEEHEHEHEHEHE3 YES THIS IS FINALLY DONE OMFG

* Reorder variable placement in CreatePalette

* Start vtable14

* Match MxBitmap vtable14, down to reg swap.

Maybe some import function?

* Name MxBitmap vtable functions

---------

Co-authored-by: disinvite <disinvite@users.noreply.github.com>
Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-08-28 03:04:39 -07:00
Joshua Peisach
5a2cc72dbb
MxMediaManager (#116) 2023-08-28 03:01:45 -07:00
Christian Semmler
2233da39d8
Implement/match MxDisplaySurface::Create (#115) 2023-08-28 02:49:15 -07:00
Joshua Peisach
23457da730
Matching spree (#98)
* LegoNavController: Match CalculateNewTargetSpeed

Ghidra showed this correctly too, but the asm showed the problem simply, an incorrect comparison

* Match a MxPresenter vtable function

* Match known functions in LegoPhonemePresenter

* Revert "LegoNavController: Match CalculateNewTargetSpeed"

This reverts commit 718489923b4dd5a3f12d53510d299033924c5dea.

* MxPresenter: rename tickle flag fields

* LegoPhonemePresenter: add size assert

---------

Co-authored-by: MattKC <34096995+itsmattkc@users.noreply.github.com>
2023-08-28 02:38:46 -07:00
MattKC
1d104141b5
Update README.md [skip ci]
Remove no longer relevant SmartHeap section
2023-08-18 16:24:13 -07:00
Christian Semmler
28f961b86d
Add MxDSAnim, MxDSEvent, MxDSObjectAction, MxDSStill (#112)
* Add MxDSAnim

* Add MxDSEvent, MxDSObjectAction, MxDSStill
2023-08-16 16:38:26 -07:00
Christian Semmler
4a2226181c
Implement MxDSStreamingAction (#108)
* Implement MxDSStreamingAction

* Add remaining functions

* Use inline assignment operators
2023-08-16 15:02:26 -07:00