Commit graph

1104 commits

Author SHA1 Message Date
Anonymous Maarten
57d5949d84
Implement some Act1State functions (#520)
* Implement some Act1State functions

* ci: push fix commits to pr

* ci fix

* Show diffs generated by clang-format

* Run clang-format

* Fix naming

* re-use _countof + add parentheses

* Fix naming

* Use MxS32

* Annotate Act1State::NamedPlane::~NamedPlane

* Apply suggestions

* Read and Write Mx3DPointFloat's

* Annotations, spacing

* Add Mx3DPointFloat copy ctor, match some functions

* Fix WriteVector3

* Adding more spacing for readability

* Use MxResult as a return type for Serialize

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-03 02:03:52 +01:00
Christian Semmler
6653533b1f
Hotfix Laura selected 2024-02-02 16:58:33 -05:00
Misha
0c47ed5056
Implement more infocenter methods (#519)
* push changes

* format fix

* Update legogamestate.cpp

* Update legogamestate.cpp

* Fixes

* Match Infocenter::Create

* Style

* Fix InfocenterDoor::HandleClick

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-02 22:32:50 +01:00
Christian Semmler
a28113a26f
Fix/match MxBackgroundAudioManager::FUN_1007ef40 (#518)
* Fix

* Match
2024-02-02 21:00:44 +01:00
Christian Semmler
b7e274f902
Implement LegoState::Playlist (#517) 2024-02-02 20:09:45 +01:00
Christian Semmler
558bda4dd2
Implement LegoWorld::Enable (#516)
* WIP VTable0x68

* Improve match

* Match

* Fix

* Fix

* Move vars

* Match

* Add call to Isle

* Rename functions

* Fix style
2024-02-02 18:18:46 +01:00
Christian Semmler
a7acf8c607
Implement/match InfocenterState::InfocenterState (#515)
* Implement LegoState::Shuffle

* Remove unused params

* Move ctor

* Asm generate hotfix

---------

Co-authored-by: MS <disinvite@users.noreply.github.com>
2024-02-02 00:08:56 +01:00
Christian Semmler
17252b95f4
Implement Infocenter::HandleNotification0 (#514)
* Implement Infocenter::HandleNotification0

* Match

* Match

* Match

* Match

* Braces

* Add enum constants
2024-02-01 21:56:27 +01:00
Anonymous Maarten
9e686e2a87
cmake+ci: run clang-tidy (#512)
* cmake+ci: run clang-tidy

* Remove DESCRIPTION from LEGO1/LegoOmni.mingw.def

* Add initial .clang-tidy and fixes

* fix file perms

* Comment out DESCRIPTION

* Remove LegoEntity::~LegoEntity and MxPresenter::~MxPresenter from mingw's LEGO1.def

* Looks like clang is allergic to the libs in the directx5 SDK

* Update .clang-tidy

* Fix typo in .clang-tidy

* Attempt to generate an action error

* Revert "Attempt to generate an action error"

This reverts commit 96c4c65fed.

* cmake: test with -Wparentheses + optionally with -Werror

* ci: -k0 is a Ninja argument

* Use -Werror only for msys2 builds

* cmake: only emit warnings for specific warnings

* cmake: and don't do -Werror/-WX anymore

* Fix warnings

* Fix mingw warnings

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-01 21:42:10 +01:00
MS
97d1ba7c71
MxTransitionManager corrections (#513) 2024-01-31 23:39:50 +01:00
Misha
9e0b19856c
Implement various infocenter functions (#510)
* Implement various infocenter methods

* fix order

* Update infocenter.cpp

* Update infocenter.cpp

* Update infocenter.cpp

* Update mxcontrolpresenter.cpp

* Rename stuff for consistency

* Add StateStruct to InfocenterState

* Resolve some TODO

* Use MxRect32

* Improve match

* Match Infocenter::UpdateFrameHot

* Fix VTable0x64

* WIP Match

* Match

* Cleanup

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-31 15:47:15 +01:00
Misha
bad32149ca
implement LegoGameState::StopPreviousAction (#511)
* implement RemoveFromWorld

* fix unloading

* Rename stuff, add default arg

* Rename functions

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-31 13:34:36 +01:00
Christian Semmler
cdf76754f7
Implement/match Radio, RadioState (#509)
* WIP RadioState

* WIP

* WIP

* Implement/match Radio/RadioState

* Fix naming

* Use sizeof
2024-01-30 19:57:20 +01:00
Misha
743e042564
Finish MxControlPresenter (#505)
* Push changes

* fix order

* use MxBitmap::Start

* Fixes/changes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-29 23:46:22 +01:00
Christian Semmler
baed704a38
(clang-format) Add RemoveSemicolon (#506) 2024-01-29 23:30:20 +01:00
Christian Semmler
bcdddd4c7e
Pad all single-digit hexadecimal values with zero (#504)
* Pad all single-digit hexadecimal values with zero

* One more fix
2024-01-29 22:17:17 +01:00
Christian Semmler
35def3013a
Fix various state classes/missing annotations (#503) 2024-01-29 19:54:47 +01:00
Christian Semmler
96234ddc23
Implement/match MxStillPresenter::Clone (#502)
* Implement/match MxStillPresenter::Clone

* Fix
2024-01-29 11:29:12 -05:00
Misha
445084f4b0
Implement LegoOmni::DeleteObject (#501)
* Push changes

* fixes

* Match

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-28 23:10:04 +01:00
Misha
4314d3e297
Implement LegoControlManager (#500)
* Push changes

* Update score.cpp

* fix

* Update score.h

* Fixes/matches

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-28 22:09:33 +01:00
Nathan M Gilbert
c0acf11f9b
Implement/Match LegoTree (#485)
* Implement/Match LegoTree

* Fix vtable

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-28 17:45:49 +01:00
Misha
d9c4151bb8
implement LegoInputManager::ProcessOneEvent (#498)
* push changes

* fix

* Match

* Rename functions

* Space

* Fix GetPresenterAt

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-28 15:20:21 +01:00
Christian Semmler
f1fc5e1d0d
Implement/match LegoEventNotifcationParam::Clone (#497) 2024-01-27 23:57:42 +01:00
Misha
d4cb8677b8
implement LegoInputManager register and unregister (#496)
* implement LegoInputManager::Create

* Fixes

* Add annotation

* Add size assert

* push changes

* Add size assert

* Order annotations

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-27 23:15:12 +01:00
Christian Semmler
159e27baba
Sort annotations 2024-01-26 05:37:50 -05:00
Misha
f706f80483
implement LegoInputManager::Create (#495)
* implement LegoInputManager::Create

* Fixes

* Add annotation

* Add size assert

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-27 22:55:59 +01:00
Christian Semmler
19c771b85d
Implement/match LegoWorld::PresentersPending (#494)
* Implement/match LegoWorld::PresentersPending

* Rename functions
2024-01-27 21:18:35 +01:00
Christian Semmler
fadf8e7fd5
Move some functions from LegoWorld to Act3 (#493) 2024-01-27 18:15:14 +01:00
Christian Semmler
883f3429a7
Implement/match LegoWorld::Destroy (and destructor) (#492)
* Implement/match LegoWorld::Destroy

* Match

* Match
2024-01-27 17:48:50 +01:00
Christian Semmler
4df7dee037
Implement/match LegoWorld::Remove (#491)
* Implement/match LegoWorld::Remove

* Fix comparison

* Match 100%
2024-01-27 16:10:09 +01:00
Christian Semmler
7b6ec235d8
Implement LegoWorld::Add (#490)
* LegoWorld::Add

* Add annotations

* Fix include guard

* Make stub

* Change MxPresenterSet to MxCoreSet

* Improve match

* Match

* Fix annotation
2024-01-26 23:52:03 +01:00
Christian Semmler
b6aac26269
Implement LegoWorld::Find (#489)
* Implement LegoWorld::FUN_100213a0

* Rename lists

* Rename cursors

* Rename cursor

* Rename functions

* Remove a comment

* Rename more functions

* Fix return type
2024-01-26 22:00:02 +01:00
Joshua Peisach
0a672d2146
RaceCar destructor (#488)
* RaceCar destructor

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-26 18:13:09 +01:00
Joshua Peisach
88fd1e658d
HelicopterState vtable (#487)
* HelicopterState vtable

* Move functions

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-26 18:09:59 +01:00
Christian Semmler
a3868e3808
Implement/match LegoWorld::FUN_10021790 (#486)
* Implement/match LegoWorld::FUN_10021790

* Improve match

* Match

* Specify python package versions

* Use wildcard version

* Use const atom

* Use const atom
2024-01-26 18:03:29 +01:00
Anonymous Maarten
5f413165cc
Spinoff some sources to static libraries (#484)
* cmake: use imported targets for 3rd party libs

* Fix casing of skateboard.h include

* cmake: tglrl realtime viewmanager mxgeometry

* cmake: spin off some source in static libraries

* dx5 for everyone

* ci: bump actions/checkout to v4

* move LEGO1/realtime/realtimeview.cpp to lego1 because it exports symbols

* add misc library

* Add omni library

* Return of the .def's

* Remove COMPAT_CONST in MxVideoParam::MxVideoParam

* Run clang-format

* move LEGO1/realtime/realtimeview.cpp to realtime lib

* Add 3dmanager library

* Rename .def files

* Remove incorrect deps to Omni

* Remove DLL expor decls

* Remove unnecessary library dep from ROI

* Remove COMPAT_CONST

* Move 3dmanager lib before Omni

* Remove mxgeometry lib (`geom` is actually `lego/sources/geom`, which we don't have in our decomp yet)

* viewmanager has a dependency on realtime + fix mingw's def

* Remove Smacker::Smacker from lego1 link libraries

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-24 21:16:29 -05:00
Nathan M Gilbert
2bebc09da3
Implement misc.lib (#483)
* Implement misc.lib

* Lowercase files

* Minor changes

* Fix file cases

* Fixes

* Fix missing dtor

* Add override

* Match LegoImage::Read

* Fix delete call

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-24 18:12:57 +01:00
MS
a19165a749
LegoWorld::LegoWorld to 100% (#480) 2024-01-22 16:18:46 +01:00
Misha
05bc94f030
implement MxControlPresenter::ParseExtra (#477)
* MxControlPresenter::ParseExtra

* Update mxcontrolpresenter.h

* fix loop

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-21 12:45:40 -05:00
Misha
7b0d4dd502
Implement Infocenter::InitializeBitmaps (#478) 2024-01-21 18:38:22 +01:00
Christian Semmler
43c692c9d7
Minor fixes 2024-01-20 10:46:49 -05:00
Misha
8e1197d14c
implement LegoLoadCacheSoundPresenter (#475)
* fix

* fixes

* Fix WaveFormat, match LegoLoadCacheSoundPresenter

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-21 16:30:19 +01:00
Misha
3f35302e76
begin LegoLocomotionAnimPresenter (#474)
* LegoLocomotionAnimPresenter

* Fix game startup

* Fixes

* Add size assert

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-21 15:58:15 +01:00
Christian Semmler
b4bc0e51c9
Make all functions public symbols in FLIC library (#472) 2024-01-20 20:23:23 -05:00
MS
b5a3c5feea
Enforce vtable match (#464)
* vtable enforce

* Vtable progress

* IslePathActor subclasses

* LegoState subclasses

* LegoWorld subclasses

* Presenter progress

* Remaining presenters

* All but two that need new files

* Merge into vtable branch (#3)

* Implement MxDisplaySurface::VTable0x44 (#467)

* Update mxdisplaysurface.cpp

* add arguments to header

* Fix glitched bitmaps

* WIP fixes

* Match

* Fix

* Changes

* Fixes

---------

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

* Implmement PoliceState::VTable0x1c (#468)

* Implmement PoliceState::VTable0x1c

* Fixes

---------

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

* Implement Lego3DView::Render (#470)

* Implement Lego3DView::Render

* use MxDouble

* Revert "use MxDouble"

This reverts commit a006b60e20.

* Begin work on Police class (#469)

* Begin work on Police class

* Use JukeBox::e_policeStation value

* Fixes

---------

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

* Implement MxDisplaySurface::CreateCursorSurface (#471)

* Update mxdisplaysurface.cpp

* Fixes

* Update legovideomanager.cpp

* Match to 100%

---------

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

---------

Co-authored-by: Misha <106913236+MishaProductions@users.noreply.github.com>
Co-authored-by: Christian Semmler <mail@csemmler.com>
Co-authored-by: Joshua Peisach <itzswirlz2020@outlook.com>

* Police fix

* Finish

* motocycle lower case

* Update historybook.h

* Update hospitalstate.h

* Update jetski.h

* Update legoinputmanager.h

* Update legolocomotionanimpresenter.h

* Update pizza.h

* Update act3shark.h

* Update ambulancemissionstate.h

* Update bumpbouy.h

* Update doors.h

---------

Co-authored-by: Misha <106913236+MishaProductions@users.noreply.github.com>
Co-authored-by: Christian Semmler <mail@csemmler.com>
Co-authored-by: Joshua Peisach <itzswirlz2020@outlook.com>
2024-01-20 18:04:46 -05:00
Misha
93012b62f4
Implement MxDisplaySurface::CreateCursorSurface (#471)
* Update mxdisplaysurface.cpp

* Fixes

* Update legovideomanager.cpp

* Match to 100%

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-20 22:12:35 +01:00
Joshua Peisach
67fa5e7cca
Begin work on Police class (#469)
* Begin work on Police class

* Use JukeBox::e_policeStation value

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-20 21:49:56 +01:00
Misha
1c612a2d25
Implement Lego3DView::Render (#470)
* Implement Lego3DView::Render

* use MxDouble

* Revert "use MxDouble"

This reverts commit a006b60e20.
2024-01-20 21:43:53 +01:00
Joshua Peisach
46ad567760
Implmement PoliceState::VTable0x1c (#468)
* Implmement PoliceState::VTable0x1c

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-20 21:40:00 +01:00
Misha
ea5f9b4886
Implement MxDisplaySurface::VTable0x44 (#467)
* Update mxdisplaysurface.cpp

* add arguments to header

* Fix glitched bitmaps

* WIP fixes

* Match

* Fix

* Changes

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-20 20:31:07 +01:00
Ramen2X
961282e3c6
add jukeboxscript enum (#466) 2024-01-20 12:41:22 -05:00
Misha
9a3df8d9f8
Implement various methods in InfoCenter folder (#465)
* push changes

* Fix return type of Infocenter::Tickle

* Fixes/matches

* Code clarity

* Move assert

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-20 15:24:54 +01:00
Joshua Peisach
9000f731ac
PoliceState constructor (#463)
* PoliceState constructor

* Changes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-20 15:22:33 +01:00
Christian Semmler
701c700d69
Add library symbols for flic and smack (#461) 2024-01-19 23:11:51 +01:00
Christian Semmler
1c4f772a82
Implement/match MxOmni::ActionSourceEquals (#462) 2024-01-19 23:06:39 +01:00
MS
ee7241f73d
GifManager: use STL members (#460)
* Truncate symbol names to 255 characters when matching

* GifManager refactor

* Refactor, annotations

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-19 21:23:12 +01:00
Christian Semmler
35e5a62ff7
Implement/match MxLoopingFlcPresenter remaining functions (#459)
* Implement/match MxLoopingFlcPresenter remaining functions

* Remove include

* Change to long
2024-01-19 16:33:04 +01:00
Christian Semmler
dbfe28db51
Fix type 2024-01-18 21:24:12 -05:00
Christian Semmler
8007c5e483
Match MxFlcPresenter::LoadFrame to 100% 2024-01-18 21:23:07 -05:00
Nathan M Gilbert
d5658efe02
Finish Bitmap (#458)
* Finish Bitmap

* Add missing vtable annotations

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-19 15:38:06 +01:00
Christian Semmler
cecaced797
Implement MxFlcPresenter::LoadFrame, add flic library (#455)
* WIP

* Match

* Fix flic.lib

* Add source assembly

* Rename variable
2024-01-19 15:01:57 +01:00
Ramen2X
578e48ce52
implement/match InfoCenter::~InfoCenter() (#457) 2024-01-18 21:00:55 -05:00
Misha
61dd687f53
Implement InfoCenter folder vtable stubs (#456)
* Implement InfoCenter vtable stubs

* fix build

* Update infocenterdoor.cpp

* Update infocenterdoor.cpp

* Update legoworld.h

* Update elevatorbottom.h

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-18 20:24:15 -05:00
Christian Semmler
f1300d9de5
Match MxMusicManager::ResetStream 2024-01-18 14:42:37 -05:00
Ramen2X
ffee6a4e5b
rename dialogue to action in methods (#454) 2024-01-18 14:04:50 -05:00
Christian Semmler
62e584b024
Fix build 2024-01-18 13:49:08 -05:00
Christian Semmler
ea9d92e1e3
Use MSVC 4.20 definition of MIDICALLBACK 2024-01-18 13:39:26 -05:00
Christian Semmler
be045514ed
Add test for SUCCESS 2024-01-18 13:29:00 -05:00
Christian Semmler
5d79ac9436
Fix MxMusicManager::InitializeMIDI return type 2024-01-18 13:26:51 -05:00
Nathan M Gilbert
30b35981d3
finish MusicManager (#453)
* finish MusicManager

* Fixes/improvements

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-18 19:23:13 +01:00
MS
909c44b679
reccmp: vtable comparison (#452)
* Add vtable comparison to reccmp

* Add missing scalar deleting destructors

* Fix some vtables

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-18 14:34:14 +01:00
Ramen2X
99917ca765
initialize more members in LegoGameState (#451) 2024-01-17 16:24:22 -05:00
Misha
c0af1dbac4
implement LegoOmni::FUN_1005b4f0 (#450)
* push changes

* push changes

* fixes

* Changes

* Use proper values

* Name vtable function

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-17 21:48:48 +01:00
Ramen2X
cf7466f901
name nearly every infomain action (#449)
* name nearly every infomain action

* label two more unused actions
2024-01-17 14:08:05 -05:00
Daniel Hejduk
6032c1bb27
Implement GasStation:GasStation() function (#424)
* Implementing GasStation:GasStation() function

* Update gasstation.cpp

* Update gasstation.cpp

* Adding m_unk variables to gasstation.h

* Update gasstation.h

* Update gasstation.h

* fixes + match gasstation ctor

* formatting fixes

* add offset markers to members

* formatting fix

---------

Co-authored-by: Ramen2X <64166386+Ramen2X@users.noreply.github.com>
2024-01-17 12:24:42 -05:00
Joshua Peisach
d369429e98
video/legohideanimpresenter: Init, dtor, most of destroy function (#447)
* video/legohideanimpresenter: Init, dtor, most of destroy function

* Format

* Finish Destroy

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-17 18:24:05 +01:00
Nathan M Gilbert
b25239f22d
Finish some missing methods (#448)
* Finish some missing methods

* Minor style updates/fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-17 18:08:48 +01:00
Christian Semmler
240ca5570d
Rename enum 2024-01-17 11:56:41 -05:00
Misha
f50b771fff
begin implementation of InfoCenter class (#444)
* Push changes

* fixes

* Implement Infocenter::HandleEndAction

* match Infocenter::StopCutScene

* implement Infocenter::HandleKeyPress

* fixes

* Update infocenter.cpp

* Update legoworld.cpp

* use enums

* WIP Fixes

* Fix

* Fix

* Fix

* Rename function

* Change enum

* Update enums

* Refactor another enum

* Refactor MxDSType

* Refactor HashTableOpt

* Fixes

* Refactor tickle enum

* Update other enums

* Add EnumConstantName to ncc

* Move enum to global namespace

* Rename enum

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-17 17:53:53 +01:00
MS
aaa18bc9e2
Decomp parser: indirect globals and string markers (#446)
* Enable string annotations and indirect globals

* Adding some STRING annotations

* Library functions
2024-01-17 12:56:34 +01:00
Christian Semmler
6af0c6cb1a
Implement/match a few LegoEntity functions (#445)
* Implement/match a few LegoEntity functions

* Add annotations
2024-01-16 20:33:03 +01:00
Christian Semmler
b1fdb780de
Add missing size asserts for lists 2024-01-15 15:59:57 -05:00
Christian Semmler
a4c4ee656f
Implement lists used in LegoWorld (#443)
* Add LegoEntityList

* Add MxCoreList, match LegoWorld::Create
2024-01-15 21:44:04 +01:00
Misha
6df310bb66
Implement LegoWorldPresenter::VTable0x60 (#442)
* LegoWorldPresenter::VTable0x60

* Update infocenter.cpp

* Minor adjustments

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-15 21:17:54 +01:00
Misha
5b7624c32a
implement part of LegoAnimPresenter (#441)
* push changes

* implement + match a few functions

* Update legoanimpresenter.h

* reorder

* Update legoanimpresenter.cpp

* Update legoanimpresenter.cpp

* Update legoanimpresenter.cpp

* fix build

* Allow isle to start

* Match LegoAnimPresenter::VTable0x88

* Fixes

* use EndAction in StartingTickle stub

* Match StreamingTickle

* Fix override

* Comment about missing vtable functions

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-15 20:37:50 +01:00
Misha
f116389373
implement a few MxControlPresenter functions (#440)
* MxControlPresenter

* Fixes

* Minor change

* Match MxControlPresenter::StartAction

* Use flags instead

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-15 20:08:28 +01:00
Misha
7f72a36462
Implement LegoMeterPresenter (#439)
* push changes

* Update legometerpresenter.h

* fix wrong offset

* fix deconstructor

* fix + improve accuracy

* Update legometerpresenter.cpp

* Match functions

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-15 16:26:52 +01:00
Misha
e9d8fde8bc
Fix wrong class name (#438)
* push changes

* fix

* rename file
2024-01-14 23:00:03 +01:00
Joshua Peisach
763fcf8980
ElevatorBottom ctor/dtor (#436)
* ElevatorBottom ctor

* ElevatorBottom destructor

* Use setters

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-14 22:58:00 +01:00
Christian Semmler
dd72bcc666
Use names from 1996 sources (#437) 2024-01-14 22:49:11 +01:00
MS
7e9d3bde65
Reccmp: Use symbol names in asm output (#433)
* Name substitution for reccmp asm output

* Decomp marker corrections

* Fix a few annotations

* Fix IslePathActor dtor

* Fix audio presenter

* Fix LegoEntity::Create

* Fix Pizza and related

* Fix path part

* Add missing annotations

* Add missing annotations

* Add more missing annotations

* Fix MxNotificationParam

* More fixes

* More fixes

* Add missing annotations

* Fixes

* More annotations

* More annotations

* More annotations

* More annotations

* Fixes and annotations

* Find imports and thunk functions

* Fix more bugs

* Add some markers for LEGO1 imports, fix SIZE comment

* Add more annotations

* Rename annotation

* Fix bugs and annotations

* Fix bug

* Order

* Update legoanimpresenter.h

* Re-enable print-rec-addr option

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-14 22:28:46 +01:00
Misha
7f7e6e37dd
implement LegoOmni::FindByEntityIdOrAtomId (#435)
* push changes

* Match and add annotations

* Fix annotations

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-14 02:34:54 +01:00
Misha
8b34b38ac0
implement LegoActorPresenter (#434)
* LegoActorPresenter

* Add ddtor

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-13 23:06:13 +01:00
Misha
5b8ea35756
Implement Isle::VTable0x50 (#432)
* push changes

* fix formatting

* Fix structure

* Fix return

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-13 21:42:09 +01:00
Misha
c2da041f40
Implement a few legoworld methods (#430)
* Push changes

* Update legoworld.cpp

* Update legoworld.cpp

* Minor style fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-13 21:00:11 +01:00
Christian Semmler
7d2629318c
Match Lego3DView::Create (#431) 2024-01-13 20:58:10 +01:00
Christian Semmler
0edbd9dab9
Update mxvideopresenter.cpp 2024-01-13 09:39:33 -05:00
Misha
d5d4a8b0ff
Update mxvideopresenter.cpp (#429) 2024-01-13 09:32:45 -05:00
Christian Semmler
d24f5db42f
Matrix/vector refactor (#426) 2024-01-12 19:34:38 -05:00
Misha
eac096036a
implement LegoModelPresenter::Destroy (#428)
* LegoModelPresenter::Destroy

* remove debug print

* Update legomodelpresenter.cpp
2024-01-12 23:30:50 +01:00
Misha
3c0bf7191c
implement LegoWorldPresenter deconstructor (#425)
* Implement LegoWorldPresenter::~LegoWorldPresenter

* Rename incorrect function name

* fixes

* Rename functions

* fix format
2024-01-12 23:27:07 +01:00
Misha
602ba30fae
fix LegoPathPresenter vtable (#427)
* fix LegoPathPresenter vtbl

* Update legopathpresenter.cpp

* Update legopathpresenter.cpp

* fix override

* Update legopathpresenter.cpp
2024-01-12 23:22:42 +01:00
Christian Semmler
99ee212213
Fix inclusion of MxPresenter class in ISLE 2024-01-11 10:48:00 -05:00
Christian Semmler
516e16faf6
Further clean up Omni/LegoOmni separation (#423)
* Fix inline functions

* Whitespace

* Try this

* Fix MxEntity

* Further fixes

* Move main out

* Replace tickle code
2024-01-11 16:02:55 +01:00
Christian Semmler
9eea48f629
Fix structure of Lego3DView (#422) 2024-01-10 23:40:24 +01:00
Anonymous Maarten
b996fff6fa
Support building isle with modern MSVC + msys2 (#421)
* cmake: detect older MSVC and define ENABLE_DECOMP_ASSERTS to enable decomp asserts

* Add /Zc:__cplusplus to define __cplusplus with c++ version number

* Silence deprecated CRT releated warnings

* LegoCameraController overrids some methods that are not defined in its parent(s)

* Tgl::Device::GetDrawnTriangleCount does not exist (FIXME: INCORRECT FIX -> Tgl::Device should be updated instead)

* Remove copy/pasted APP_ICON from lego1 resource.h header

* Implement empty ViewLODList::Dump method

* Also enable "compat mode" for newer MSVC compilers

* Only do decomp assertions when using older MSVC compilers

* msys2 mingw compat (cannot pass reference of rvalue)

* Fix msys2 mingw warning: declaration 'class Tgl::Group' does not declare anything

* Add FIXME comment to LEgo3DView::m_previousRenderTime

* LegoView1 is 16 bytes bigger then LegoView ==> 4 32-bit pointers

* include string.h for strlen

* Fix overrides

* Fix constness of method

* Fixes

* Formatting

* Add size assert for MxFrequencyMeter

* ci: build isle with msys2 + msvc on GitHub actions

* Set vcvars for msvc

* msys2 needs the msys2 shell

* Build in default shell

* isle is not 64-bit yet (I think)

* Print bitness

* Use amd64_x64 cross tools

* Minor updates

* Add more names

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-10 23:34:32 +01:00
Christian Semmler
01f3168e71
Use NULL where appropriate 2024-01-10 13:47:54 -05:00
Christian Semmler
e55b2ad639
Name a few members in LegoVideoManager 2024-01-10 13:45:52 -05:00
Nathan M Gilbert
5a2be934be
Finish StreamProvider classes (#420)
* Finish StreamProvider classes

* Fix variable name

* Use FOURCC

* Match FUN_100c7090

* Changes

* Readability

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-10 12:55:25 +01:00
Christian Semmler
872c62fd39
Match LegoCameraController::LegoCameraController 2024-01-09 10:30:37 -05:00
Christian Semmler
f6ced08b20
Add scalar ddtor annotations 2024-01-09 05:31:00 -05:00
Misha
58085df6b0
Implement most of LegoCameraController (#419)
* Implement LegoCameraController subclasses

* Update legopovcontroller.cpp

* fixes

* Update legocameracontroller.cpp

* fix naming conventions

* Update legopointofviewcontroller.h

* Update legopointofviewcontroller.h

* Fixes

* Match LegoPointOfViewController::Create

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-09 10:43:21 +01:00
Christian Semmler
58ea45f4cc
Name various functions and other members (#418)
* Name various functions and other members

* Rename var
2024-01-08 19:07:13 +01:00
Christian Semmler
79465d358d
Fix MxWavePresenter::StartingTickle 2024-01-07 22:28:16 -05:00
Christian Semmler
855e548516
Make comparison more obvious 2024-01-07 21:23:09 -05:00
Christian Semmler
569d8ace96
Fix actions not ending 2024-01-07 20:55:32 -05:00
Christian Semmler
091ecd5935
Move some classes to LegoOmni (#417) 2024-01-08 12:45:07 +01:00
Christian Semmler
c47206617d
Reorganize sources and files (#414)
* Reorganize sources

* Refactor

* Remove relative paths

* Renames

* Fix gitignore

* Remove stuff

* Try fixing format script

* Fix format

* Fix format

* Fix naming script

* Test format

* Fix format
2024-01-08 10:58:49 +01:00
Misha
4c0de81b6a
Update legoactioncontrolpresenter.cpp (#416) 2024-01-07 17:03:04 -05:00
Anonymous Maarten
fbe7f8bbb0
Fix all mingw errors & warnings (#411)
* Use COMPAT_MODE macro to fix errors with mingw gcc 12.2

* MxOmni::m_timerRunning is a MxBool

* MxDirect3D::m_unk0x88c is a MxBool

* MxBackgroundAudioManager::m_unk0x13c is a MxS32

* Fix warning: deleting 'void*' is undefined [-Wdelete-incomplete]

* Fix inline function 'void TglImpl::RendererImpl::Destroy()' used but never defined

* Fix warning: inline function 'MxStreamerSubClass1::MxStreamerSubClass1(undefined4)' used but never defined

* Use `FALSE` for m_timerRunning

* Format

* Format

* Remove comment

* Limit scope for variables in compat mode

* clang-format

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-07 18:30:45 +01:00
Christian Semmler
bb7e4df11b
Move MxDirectDraw and MxDirect3D to mxdirectx (#413) 2024-01-07 18:07:22 +01:00
Christian Semmler
8db36722d8
Implement/match Lego3DView and parent classes (#412)
* Implement/match TglSurface

* Implement/match LegoView/1

* Lego3DView

* Fixes

* Lego3DManager

* Remove garbage

* Remove garbage

* Use shorthand calls
2024-01-07 03:29:32 +01:00
Anonymous Maarten
dc3500f631
Fixes for building isle with mingw on Linux (#410)
* Add LEGO1.DLL resources

* Rename smack files to lowercase

This fixes casing issues with mingw on Linux
Also use double quotes for #error

* cmake: dxguid must come after dinput

* cmake: create LEGO1.DLL instead of libLEGO1.DLL, when using mingw

* act3actor.h  was not including mxcore.h, and using incorrect override

* g_mcoreCount seem to be signed integers

* LegoCameraController: return references to static data in stub functions

* Include string.h, stdlib.h and stdio.h for use of libc functions

* Override MxAtomId::operator!=

* Fix use of STL's std::map + std::vector

* Fix template functions for mingw

* iterator object is used after the for loop

* IDirectDrawSurface::BltFast's first 2 arguments are x/y coordinates, not pointers

* Add stub ViewLODListManager::Lookup

* Fixes

* Format

* Remove unnecessary COMPAT_CONST use

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-06 18:56:15 +01:00
Christian Semmler
dac2a517c3
Implement/match LegoVideoManager::Tickle (#409)
* Implement LegoVideoManager::Tickle

* Match

* Remove duplicate annotations

* Add missing annotations

* Rename list functions

* Fix

* Rename some symbols
2024-01-06 18:06:50 +01:00
Christian Semmler
27269647f8
Implement/match LegoVideoManager::ConfigureD3DRM (#408)
* Implement/match LegoVideoManager::ConfigureD3DRM

* Fix name

* Remove unnecessary forward decl
2024-01-05 20:38:34 +01:00
Misha
9651ece809
Improve accuracy of MxOmni::CreatePresenter (#407)
* Improve accuracy of MxOmni::CreatePresenter

* Update mxactionnotificationparam.cpp

* Match to 100%

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-05 18:31:19 +01:00
Misha
9a5e1cb853
legomodelpresenter vtable (#406)
* legomodelpresenter vtable

* Update legomodelpresenter.cpp

* Update legomodelpresenter.cpp
2024-01-04 20:01:04 -05:00
MS
ce68a7b1f4
Reccmp comparison engine refactor (#405)
* Reccmp comparison engine refactor

* Remove redundant references to 'entry' symbol
2024-01-04 18:12:55 -05:00
Christian Semmler
eeb980fa0f
Let game boot again (#404) 2024-01-04 22:46:16 +01:00
Christian Semmler
5aef35d9c7
Fix member visibility 2024-01-04 06:35:28 -05:00
Christian Semmler
54ed98b9d6
Implement/match MxDirect3D::D3DSetMode (#403)
* Implement/match MxDirect3D::D3DSetMode

* Match
2024-01-04 22:16:16 +01:00
Misha
a899b06f5a
implement MxDirect3D::GetZBufferDepth (#402)
* GetZBufferDepth

* Match

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-04 21:35:52 +01:00
Christian Semmler
d4e7bb1132
Implement/match MxDirect3D::SetDevice (#401)
* WIP

* WIP

* WIP

* Rename class

* Rename vars

* Rename function

* Rename

* Rename flag

* Fix deletion of modeArray

* Remove obsolete comment
2024-01-04 20:37:15 +01:00
Misha
21d096dcd2
implement TowTrackMissionState (#399)
* TowTrackMissionState

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-04 04:31:55 +01:00
Christian Semmler
49e3fa238f
Implement/match most remaining MxDirect3D device enumeration functions (#400)
* WIP

* WIP

* Implement/match most remaining MxDirect3D device enumeration functions

* Fix names
2024-01-04 04:03:02 +01:00
Christian Semmler
778b0f2108
Implement/match MxDeviceEnumerate::ParseDeviceName and ProcessDeviceBytes (#398)
* WIP

* WIP

* WIP

* WIP

* WIP

* WIP
2024-01-03 21:53:21 +01:00
Christian Semmler
5ee268a36c
Implement/match device enumeration (#397)
* Implement/match device enumeration

* Update skip
2024-01-03 18:50:25 +01:00
Christian Semmler
106dd7cebc
Implement/match display mode enumeration (#396)
* Implement/match display mode enumeration

* Improve match of EnumDirectDrawCallback

* Fix annotations
2024-01-03 18:12:17 +01:00
Christian Semmler
31a5562034
Implement/match MxDeviceEnumerate::EnumDirectDrawCallback (#395)
* Implement/match MxDeviceEnumerate::EnumDirectDrawCallback

* Change type

* Annotate copy ctor

* Fix type
2024-01-03 17:35:55 +01:00
Christian Semmler
7d4e94abd6
Match EnumerateCallback 2024-01-02 14:57:30 -05:00
Christian Semmler
afe537b99e
Name some MxDSChunk flags (#394) 2024-01-02 19:32:01 +01:00
Joshua Peisach
3f2fac72e4
Hospital ctor (#392)
* Hospital ctor

* Remove padding

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-02 04:30:50 +01:00
Christian Semmler
56af87b229
Implement/match LegoVideoManager::CreateDirect3D 2024-01-01 21:23:47 -05:00
Christian Semmler
935ebe6910
Implement LegoVideoManager::Create and related (#393)
* WIP

* Match

* Changes

* Fix format

* Style fixes

* Update naming.yml

* Match to ~85%
2024-01-02 01:17:38 +01:00
Christian Semmler
1e43f20af5
Implement MxDisplaySurface::VTable0x28 (#391)
* WIP

* Fixes

* Fixes

* Fixes

* Remove comments

* Create native palette in LegoVideoManager

* Improvements

* Improvements

* Improvements

* Improvements

* Improvements

* Improvements

* Improvements

* Improvements

* Fixes

* Improvements
2023-12-31 21:29:05 +01:00
Joshua Peisach
5400d7476f
MxDisplaySurface::SetPalette() (#358)
* Start MxDisplaySurface::SetPalette()

* Add Counting functions, more on SetPalette

* Finish base implementation of SetPalette and begin cleanup

* clang-format

* Fixes/improvements

* Format

* Fix naming

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-30 22:47:07 +01:00
Christian Semmler
bb22b21260
Implement FUN_100b6e10 and MxRect32 adjustments (#390)
* Some WIP rect

* Adjustments to MxRect32

* Spacing

* Changes

* Spacing

* Spacing
2023-12-30 05:55:36 +01:00
Christian Semmler
b4b73465d0
Mostly match MxStreamer::Notify 2023-12-29 18:44:46 -05:00
Christian Semmler
56687e86fb
Mostly match MxStreamer::Close 2023-12-29 18:40:54 -05:00
Christian Semmler
562d6a966e
Match MxRAMStreamProvider::SetResourceToGet 2023-12-29 18:33:30 -05:00
Christian Semmler
c890831c41
Remove obsolete comment 2023-12-29 18:04:54 -05:00
Christian Semmler
4b08cb4a7e
Rename functions for consistency 2023-12-29 18:01:24 -05:00
Christian Semmler
6ac505fb49
Add missing annotations to MxDisplaySurface 2023-12-29 17:59:09 -05:00
Christian Semmler
a8837a72cf
MxVideoPresenter::GetHeight hotfix 2023-12-29 17:34:10 -05:00
Christian Semmler
51adb31541
Implement MxVideoPresenter::PutFrame (#389)
* Implementation of MxVideoPresenter::PutFrame

* Add TODOs
2023-12-29 16:30:17 -05:00
Misha
ceb5339369
Infocenter vtable (#387)
* implement parts of legoworld/infocenter

* Update infocenter.cpp

* Update infocenter.cpp

* Update infocenter.cpp

* Update infocenter.cpp

* Update infocenter.cpp

* Match LegoWorld::Tickle

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-29 19:04:18 +01:00
Misha
a95bdcc4ad
Implement InvokeAction (#386)
* push changes

* Update legoutil.cpp

* Fixes / match

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-29 16:22:18 +01:00
Christian Semmler
d82d062e92
Implement/match MxRegionCursor class (#385)
* Implement/match MxRegionCursor class

* Rename function
2023-12-29 05:37:21 +01:00
MS
3f63950a7d
Fix new/delete symbol reference (#384) 2023-12-28 18:02:02 -05:00
MS
9a6d555508
Cvdump parser and comparing library functions (#383)
* Cvdump wrapper and parser. Matching library functions

* Remove 'Self' type int (3.11+)

* Add temp reference for entrypoints

* ISLE using multithreaded libc

* 🙄
2023-12-28 22:10:57 +01:00
Joshua Peisach
ff4845a6ea
MxLoopingFlcPresenter::Destroy (#382)
* MxLoopingFlcPresenter::Destroy

* Use parent class call

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-28 19:55:03 +01:00
Misha
a06a360dc6
Implement Lego3DManager (#380)
* Implement Lego3DManager

* Update lego3dview.cpp

* fix

* fixes

* fix wrong vtable address

* Fixes/matches

* Fix Lego3DView

* Use undefined

* More fixes

* Rename

* Rename pad

* Add blank line

* Delete stuff

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-28 18:38:37 +01:00
Christian Semmler
e76cf3427c
Add and fix some annotations 2023-12-28 11:56:54 -05:00
Christian Semmler
e17e8ed5ae
Implement/match MxDiskStreamProvider destructor (#381) 2023-12-28 17:46:12 +01:00
Christian Semmler
e3488498f9
Implement/match MxDiskStreamController destructor (#379) 2023-12-28 17:19:40 +01:00
Misha
4d7968c7af
implement LegoWorldPresenter::StartingTickle (#378) 2023-12-27 16:05:21 -05:00
MS
bcb7bec68b
Improve handling of variables for decomp parser (#376)
* Parser refactor:
- Handling LIRBARY and STRING markers
- Extracting global variable name for future comparison
- Marking function static variables
- More fluent error messages

* String constants annotated with STRING

* fix variable name

* Should compare LIBRARY markers
2023-12-27 15:59:42 -05:00
Misha
dfad323880
Finish LegoPalettePresenter (#377)
* LegoPalettePresenter implementation

* Update legopalettepresenter.cpp

* Update legopalettepresenter.h

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-27 21:44:51 +01:00
Christian Semmler
306d08c581
Reorder delcarations, add some annotations 2023-12-27 15:31:51 -05:00
Joshua Peisach
d5854a46ae
HospitalState ctor (#375)
* HospitalState ctor

* Add member offsets in HospitalState header

* Remove unhelpful comment

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-27 19:36:32 +01:00
Joshua Peisach
c6174c2a13
Bootstrap rest of LegoTexturePresenter (#374)
* Bootstrap rest of LegoTexturePresenter

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-27 19:32:32 +01:00
Joshua Peisach
d2b05a0983
LegoFlcTexturePresenter init function (#373)
* LegoFlcTexturePresenter init function

say that 5 times fast

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-27 19:30:16 +01:00
Joshua Peisach
f1f6743d08
CarRace ctor (#372)
* CarRace ctor

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-27 19:27:02 +01:00
Misha
5a1ba02772
implement LegoWorldPresenter::StartAction (#371) 2023-12-27 16:31:06 +01:00
Christian Semmler
ac6eb28dc4
Implement/match MxStreamer::DeleteObject (#370) 2023-12-27 03:17:20 +01:00
Christian Semmler
6e947c3789
Implement/match MxStreamController::FUN_100c20d0 (#369)
* Implement/match MxStreamController::FUN_100c1f00

* Implement/match MxStreamController::FUN_100c20d0
2023-12-27 02:54:17 +01:00
Christian Semmler
88d267f9f3
Implement/match MxStreamController::FindNextActionDataStartFromStreamingAction (#368)
* Implement/match MxStreamController::FUN_100c1f00

* Implement/match MxStreamController::FindNextActionDataStartFromStreamingAction
2023-12-27 02:39:48 +01:00
Christian Semmler
cfe28a2b26
Implement/match MxStreamController::FUN_100c1f00 (#367) 2023-12-27 02:33:53 +01:00
Misha
59d999f6dc
LegoWorldPresenter vtables (#366)
* Legoworld vtables

* fixes

* fix

* formatting

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-27 01:45:48 +01:00
Christian Semmler
b35a121ee2
Fix LegoModelPresenter::IsA 2023-12-26 19:44:55 -05:00
Misha
40d51659d3
Add most of LegoObjectFactory (#365)
* push changes

* push changes

* fix

* Update legoracecar.h
2023-12-26 18:10:28 -05:00
Misha
22d72893f9
Finish LegoEntityPresenter (#363)
* Lego entity implementation

* Finish LegoEntityPresenter::ReadyTickle

* Update legoentitypresenter.h

* use empty

* Formatting

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-26 23:42:29 +01:00
Misha
ceca2aac31
Implement a few LegoVideoManager/MxDisplaySurface functions (#364)
* implement a few functions

* fixes

* Fixes

* Add annotations

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-26 23:20:20 +01:00
Misha
e824e321e8
Implement chunk parsing (#362)
* partial parsechunk implementation

* fix format

* param name fix

* rename functions

* match MxStreamController::RemoveSubscriber

* implement rest of MxDSBuffer

* Fixes and better matches

* Matche ParseChunk 100%

* Match MxDiskStreamProvider::VTable0x20

* Match MxDSBuffer::CalcBytesRemaining

* Minor stuff

* Minor improvements

* Refactor functions

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-26 22:27:54 +01:00
Christian Semmler
17522b98d4
Refactor MxBitmap inline functions, match ImportBitmap 2023-12-25 21:58:39 -05:00
Christian Semmler
c507454dd1
Match MxBitmap::CreatePalette 2023-12-25 21:16:14 -05:00
Christian Semmler
a25bcecf47
Fix/match MxBitmap::SetBitDepth 2023-12-25 20:54:44 -05:00
Christian Semmler
77755570f2
Fix a few annotations 2023-12-25 19:42:40 -05:00
Christian Semmler
33bf35af95
Remove OutputDebugString 2023-12-25 17:51:15 -05:00
Joshua Peisach
c8ec60b62c
LegoLoadCacheSoundPresenter ctor, dtor, init, destroy (#360)
* LegoLoadCacheSoundPresenter ctor, dtor, init, destroy

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-25 23:46:15 +01:00
Misha
57b11866ed
Implement MxDSBuffer::FUN_100c67b0 (#361)
* push changes

* improve match of SwapBuffers

* rename function

* Improve match of MxDSBuffer::FUN_100c67b0

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-25 23:39:31 +01:00
Christian Semmler
2827ef74de
Hotfix GetString missing pointer indirection 2023-12-25 15:22:20 -05:00
Christian Semmler
762681a821
Create MxSoundManager in LegoSoundManager for now 2023-12-25 13:34:13 -05:00
Misha
cb8c143ce5
Finish MxDiskStreamController methods (#359)
* more mxdiskstreamcontroller methods

* further debugging and fixes

* add more functions

* Update mxdiskstreamprovider.cpp

* fix build

* implement MxDiskStreamProvider::PerformWork

* Update mxdiskstreamprovider.cpp

* Update mxdiskstreamprovider.cpp

* Update mxdssource.h

* remove debug prints

* Update mxdiskstreamprovider.cpp

* Mostly match MxDiskStreamController::FUN_100c8540

* Mostly match MxDiskStreamProvider::FUN_100d1780

* Mostly match MxDiskStreamProvider::PerformWork

* Fixes

* Retype some members

* Various annotations

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-25 19:32:01 +01:00
Christian Semmler
f3c1fc75e2
Mostly match MxDSBuffer::AllocateBuffer 2023-12-24 18:09:01 -05:00
Christian Semmler
afd24fbe18
Implement MxStreamController::FUN_100c1a00 (#357)
* Implement MxStreamController::FUN_100c1a00

* Move include
2023-12-24 21:00:20 +01:00
Christian Semmler
84056c6ea2
Improve MxTickleManager::Tickle code gneeration 2023-12-24 11:48:40 -05:00
Christian Semmler
d23b4db2ff
Match MxDiskStreamProvider::SetResourceToGet 2023-12-24 10:01:23 -05:00
Joshua Peisach
43efcc5253
jukebox ctor (#356)
* jukebox ctor

* naming conventions

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-24 15:16:07 +01:00
Christian Semmler
848a92735f
Match MxStreamer::Open 2023-12-24 09:14:47 -05:00
Christian Semmler
bbe5d6f810
Add MxStreamController::~MxStreamController (#355) 2023-12-24 14:52:26 +01:00
Christian Semmler
24a3a8f3fd
Fix match of MxDiskStreamController::VTable0x28 2023-12-23 14:19:32 -05:00
Christian Semmler
439173f1d5
Implement/match rest of MxDSSubscriber (#354)
* Implement/match rest of MxDSSubscriber

* Fix MxRAMStreamController::VTable0x20 match

* Match MxRAMStreamController::DeserializeObject
2023-12-23 16:42:30 +01:00
Christian Semmler
9eefc82c8c
Bootstrap MxDSSubscriber (#352)
* Bootstrap MxDSSubscriber

* Fix offset comment
2023-12-23 14:40:39 +01:00
Christian Semmler
f75bbf478e
Replace more magic values 2023-12-22 14:10:20 -05:00
Christian Semmler
2686643d20
Replace magic values with proper flag clearing 2023-12-22 13:57:23 -05:00
Christian Semmler
cdc7b43db2
Implement/match MxLoopingSmkPresenter (#351)
* Implement/match MxLoopingSmkPresenter

* Rename variable

* Rename variable
2023-12-22 20:05:42 +01:00
Misha
e22ad6031c
More MxDiskStreamController functions (#350)
* push code

* remove accidently commited code

* Update mxstreamcontroller.cpp

* implement MxDiskStreamController::VTable0x30

* implement MxDiskStreamController::VTable0x28

* Update mxdiskstreamcontroller.cpp

* FUN_100c7d10 & FUN_100c8360

* fix format

* Match MxDiskStreamController::FUN_100c7980

* Improve match of MxDiskStreamController::VTable0x28

* Match MxDiskStreamController::FUN_100c7d10

* Minor style fix

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-22 20:03:55 +01:00
Christian Semmler
acdaf4ed4c
Finish implementation of MxSmack (#349)
* Finish implementation of MxSmack

* Fix var name
2023-12-22 07:26:54 -05:00
Christian Semmler
c51aed256b
Implement/match MxSmack::LoadFrame (#348) 2023-12-22 03:11:14 +01:00
Misha
6d0d308c37
Add unknown render class stub (#347)
* Add mxrender manager class stub

* fix format

* rename the class

* Update MxUnknown100dbdbc.cpp

* rename class

* fix clang format

* Remove accidently committed code

* Update LEGO1/legoomni.cpp

Co-authored-by: Joshua Peisach <itzswirlz2020@outlook.com>

* fix

* fix 2

---------

Co-authored-by: Joshua Peisach <itzswirlz2020@outlook.com>
2023-12-21 19:21:56 +01:00
Nathan M Gilbert
2c018c117c
Implement Helicopter subclass (#336)
* Implement Helicopter subclass

* Minor fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-21 16:59:26 +01:00
Christian Semmler
71ed20bf11
Implement/match rest of MxSmkPresenter (#345)
* Implement/match rest of MxSmkPresenter

* Fix include guard

* Update mxregion.cpp

* Match MxRegion::VTable0x18

* Fix

* Fix matches

* Remove class name
2023-12-21 16:52:42 +01:00
Misha
20a9a2b4c3
implement EnableFullScreenMovie and FUN_100ba640 (#346)
* implement EnableFullScreenMovie and FUN_100ba640

* Match MxDisplaySurface::FUN_100ba640

* Match LegoVideoManager::EnableFullScreenMovie

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-21 16:44:54 +01:00
Christian Semmler
afadca953b
Refactor MxPtrList to use p_ownership (#344)
* Refactor MxPtrList to use p_ownership

* Remove class names
2023-12-21 02:09:05 +01:00
Christian Semmler
db60467ba3
Bootstrap MxSmack (#343)
* Bootstrap MxSmack

* Add comment about incorrect structure

* Fix naming

* Fix name

* Add a comment about SDK

* Add names from Smacker SDK

* Use SMACK.LIB and interface

* Use RAD.H defined types

* Use different commets

* Fix member offset

* Update mxsmack.cpp
2023-12-21 02:07:48 +01:00
MS
994d17a85e
Decomp linter warning for offset reuse (#342)
* Linter warning for offset reuse in codebase

* Fix repeated offset problems
2023-12-17 17:45:33 -05:00
Christian Semmler
59ca9b6155
Sort inline function with the others 2023-12-17 10:57:29 -05:00
Misha
9eebe18161
fix incorrect location of functions (#341) 2023-12-17 18:28:11 +01:00
Misha
20daddde32
implement MxDSBuffer object creation (#340)
* push changes

* Update mxstreamcontroller.cpp

* fix build

* MxStreamChunk

* fix format

* Match functions

* Add a comment

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-17 18:24:39 +01:00
Misha
d72c767685
Implement a few legoomni/mxomni functions (#339)
* LegoOmni functions

* fix build

* Update mxstreamcontroller.cpp

* fixes + improve match

* Update mxomni.cpp

* Update mxdsobject.h

* improve match

* Update mxactionnotificationparam.h

* MxOmni::HandleActionEnd

* fixes

* Update LEGO1/mxstreamer.cpp

Co-authored-by: Joshua Peisach <itzswirlz2020@outlook.com>

* A bunch of fixes

---------

Co-authored-by: Joshua Peisach <itzswirlz2020@outlook.com>
Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-16 19:14:01 +01:00
Misha
72c34949e5
implement Isle::Notify (#338)
* isle::notify

* Match Isle::Notify

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-16 17:01:22 +01:00
Christian Semmler
412dda3e99
Implement/match rest of MxCompositeMediaPresenter (#331)
* Implement/match rest of MxCompositeMediaPresenter

* Fix annotation
2023-12-16 16:59:01 +01:00
Misha
76b4edaa9e
AmbulanceMissionState/AnimState constructors (#337)
* implement a few states

* Update animstate.h

* Update animstate.cpp
2023-12-16 09:11:10 -05:00
Christian Semmler
ad9cc339e9
Add missing override specifier, fix some types 2023-12-15 17:29:32 -05:00
Misha
a1b7a8bc66
Additional isle functions (#335)
* additional Isle functions

* fix

* Update isle.cpp

* add notify + fix typo

* Update legoutil.h

* Match Isle::Create

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-16 00:11:34 +01:00
Christian Semmler
1dc5d90d45
Disable warning 4237 2023-12-15 23:09:34 +01:00
Misha
04d9524a90
some gamestate functions (#333)
* some gamestate functions

* fix order

* fix naming convention

* Update legogamestate.cpp

* fix

* Add stub ScoreStruct

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-15 23:01:09 +01:00
Christian Semmler
540a930494
Fix annotation 2023-12-15 17:43:44 +01:00
Joshua Peisach
0eada87b93
Bootstrap MxControlPresenter (#332)
* Start MxControlPresenter vtable functions

* Add changes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-15 17:41:07 +01:00
Christian Semmler
7615585f36
Implement/match MxCompositeMediaPresenter::StartAction (#326)
* Implement/match MxCompositeMediaPresenter::StartAction

* Add missing override
2023-12-15 16:22:07 +01:00
Misha
53caf30ab0
Isle & Radio constructors (#330) 2023-12-15 00:24:21 +01:00
Nathan M Gilbert
deaed23e41
Implement Helicopter (#329)
* Implement Helicopter

* Fix names

* Fix some issues

* Disable warning

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-14 17:50:29 +01:00
Misha
88581420d5
Finish MxRAMStreamProvider and MxRAMStreamController (#328)
* Finish MxRAMStreamProvider

* Fix formatting

* fix naming conventions

* use no parameter name for FUN_100c67b0

* fixes

* fixes

* Update mxramstreamcontroller.h

* fix build
2023-12-13 18:11:07 -05:00
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
Misha
62b97b8f1f
Implement MxOmni::Create (#182)
* implement mxomni::create, and match MxStreamController::Open

* Use enum for mxparam type

* Fix return type

* Match MxOmni::Notify

* Remove unused variable

* Added override keywords

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-07 20:05:45 +02:00
Christian Semmler
4a674d823b
Implement MxDSSelectAction Clone/operator=/CopyFrom (#154) 2023-10-07 20:03:15 +02:00
Christian Semmler
e6507b874a
Refactor vector EqualsScalar (#171)
* Refactor vector EqualsScalar

* Fix param name
2023-10-07 11:00:20 -07:00
Christian Semmler
201125d209
Silence all C4786 warnings (#180) 2023-10-07 10:28:52 -07:00
Misha
8281e195f7
Implement MxOmni Start/stop timer (#181)
* Implement start/stop timer

* Mark StartDirectSound as stub

* remove accidently committed files
2023-10-07 19:12:59 +02:00
MS
907c85616b
Supporting items for SetupCopyRect() (#177)
* Minor improvements all related to SetupCopyRect

* Rename inline getters. malloc/free -> new/delete

* MxTypes in TransitionManager. Remove stub marker (oops)
2023-10-07 18:48:36 +02:00
Christian Semmler
5164ef1a54
Refactor MxOmni/LegoOmni headers to use forward declarations (#148)
* Refactor MxOmni/LegoOmni headers to use forward declarations

* Fixes

* Fix build

* Fix deps
2023-10-07 17:30:04 +02:00
DmitriLeon2000
775ee9f05f
Move MxMIDIManager to MxMusicManager (#178) 2023-10-07 17:02:12 +02:00
Misha
50b9a6dea5
Implement Start() (#176)
* Implement Start()

* Undo isleapp changes

* Implement LegoOmni::Start

* fix vtable0x20

* Address review

* fix build
2023-10-07 09:05:44 -04:00
Joshua Peisach
85fe4ad07a
MxAudioPresenter - vtable functions (#175)
* MxAudioPresenter - vtable functions

* Rename parameter

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-07 00:17:49 +02:00
Joshua Peisach
1217e4aa58
MxMusicPresenter dtor, stub destroy (#174)
* MxMusicPresenter dtor, stub destroy

* Fix destructor declaration

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-06 19:00:49 +02:00
Joshua Peisach
7f5198220c
Unstub MxLoopingFlcPresenter destructor (#173)
sorry guys
2023-10-06 18:54:58 +02:00
Christian Semmler
1da1d291a8
Fix line endings 2023-10-06 09:00:00 -04:00
Ramen2X
666c65fa4f rename FUN_1004bcf0 to Transition_None 2023-10-05 18:55:35 -04:00
Ramen2X
8e87b5b4c8
MxTransitionManager::Tickle() & FUN_1004bcf0 (#168)
* implement MxTransitionManager::Tickle()

* improved accuracy of MxTransitionManager::Tickle

* implement MxTransitionManager::FUN_1004bcf0

* improved accuracy of FUN_1004bcf0

* move/rename stubbed transition methods

---------

Co-authored-by: MattKC <34096995+itsmattkc@users.noreply.github.com>
2023-10-05 18:51:34 -04:00
vMidz
e767d6524e
implement MxMIDIManager (#167)
* added MxMIDIManager

* implement MxMIDIManager

implement MxMIDIManager
implement MxAudioManager::GetVolume
implement MxAudioManager::SetVolume

* added override + small changes
2023-10-05 16:06:11 -04:00
Regan Green
c46bc985c2
Implement MxTransitionManager SetWaitIndicator and SetupCopyRect (#165)
* Implement MxTransitionManager SetWaitIndicator and SetupCopyRect

* More accurate SetupCopyRect

* Add MxDSAction::Flag_Bit5

* SetupCopyRect PR Amends

* Correct braces formatting

* Stub MxVideoPresenter::Destroy
2023-10-05 06:31:20 -04:00
Joshua Peisach
2d45914ddf
MxSoundManager: dtor, destroy, update types (#164)
* MxSoundManager: dtor, destroy, update types

Also make MxThread's destructor public

* Minor adjustments

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-05 09:47:37 +02:00
Joshua Peisach
6916aa49e3
MxLoopingSmkPresenter - dtor, Init, stub Destroy (#162) 2023-10-04 13:30:37 -04:00
MS
5125314755
Wipe transition (#161) 2023-10-04 17:48:25 +02:00
Regan Green
7c7311ea5e
Implement MxTransitionManager::SubmitCopyRect (#160)
* Implement MxTransitionManager::SubmitCopyRect

* MxTransitionManager::SubmitCopyRect Amendments

* Fix MxTransitionManager::EndTransition

* Fix MxDSAction::SetLoopCount
2023-10-04 15:43:34 +02:00
MattKC
6da912e932
Implement MxTransitionManager::EndTransition and GetCurrentWorld (#159)
* Implement MxTransitionManager::EndTransition and GetCurrentWorld

* Match EndTransition

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-04 08:56:16 +02:00
MS
129e8d6373
MxTransitionManager::Dissolve (#155)
* MxTransitionManager::Dissolve

* Some comments and better names

* use refs instead of pointers

* slightly improved name for rect

* Use MxS32 instead of int
2023-10-03 18:03:10 -04:00
Joshua Peisach
62d953c6c3
MxLoopingFlcPresenter ctor/half of Init (#158)
* MxLoopingFlcPresenter ctor/half of Init

* MxLoopingFlcPresenter - finish Init, stub Destroy function, match dtor

* Update mxloopingflcpresenter.cpp

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-10-03 17:38:03 -04:00
Christian Semmler
f9cd17e3dc
Initialize bool members with FALSE 2023-10-03 14:50:14 -04:00
Christian Semmler
6c86503d35
Remove UINT cast 2023-10-03 14:02:50 -04:00
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
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
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 718489923b.

* 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
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
Christian Semmler
51ac526f8a
Add MxDSSound (#111) 2023-08-16 10:15:59 -07:00
MS
bb0d5be921
Implement MxAtomId and reference counter (stl set) (#109)
* Implement MxAtomId and reference counter (stl set)
* Partial success in hiding 4786 warning spam.
* Build out most of MxOmni::Destroy since it also touches the set

* Add some size asserts
2023-08-16 10:09:44 -07:00
pewpew
87938e9b0e
Add modified mxstl.h (#107) 2023-08-12 10:32:43 -07:00
Christian Semmler
4e0149361e
Implement MxDSAction (#106) 2023-08-10 10:57:53 -07:00
Christian Semmler
a02e07c4d7
Implement MxDSAction::AppendData (#105)
* Implement MxDSAction::ConcatData

* use GLOBAL

* Update mxdsaction.cpp

* Update mxdsaction.h

* Move TWOCC/FOURCC to common header file

* Fix

* Fix deletes
2023-08-10 10:57:19 -07:00
Christian Semmler
88bfb3c419
Match MxDSAction::CopyFrom (#104)
* Match MxDSAction::CopyFrom

* Fix src/dest

* Update mxvector.h

* Update mxvector.h

* Update mxvector.h

* Update mxdsaction.cpp
2023-08-09 16:48:49 -07:00
Christian Semmler
bd9dca0d3f
Implement most of MxDSAction (#103)
* Implement most of MxDSAction

* Update mxdsaction.h

* Update mxdsobject.cpp
2023-08-08 19:38:07 -07:00
Christian Semmler
d41b7f2ca4
Add GetDeviceModeFinder to WndProc (#102) 2023-08-06 13:26:14 -07:00
itsmattkc
67816d5213 disable "nonstandard extension used 'bool'" warning spam
In newer versions of MSVC, this could have been achieved with /wd4237, however 4.2 doesn't have this option, it only seems to have the pragma. Ah well.
2023-08-06 10:52:37 -07:00
Christian Semmler
c48fc69cf3
Implement/match MxDSAction constructor (#101)
* Implement MxDSAction constructor

* Update mxdsaction.cpp
2023-08-06 10:39:22 -07:00
MS
71950cd40a
lego1: MxVariableTable (#87)
* MxStringVariable -> MxVariable

* cursor test

* GetVariable to 100

* meh

* node insert inline

* move to header file

* use reference to match available code

* variable table init in mxomni, some reshuffling
2023-08-03 17:13:41 -07:00
Joshua Peisach
b6ada8f46c
Small implementations in MxEntity/MxEventManager (#96)
* Small implementations in MxEntity/MxEventManager

* Cleanup

* Update LEGO1/mxentity.cpp

---------

Co-authored-by: MattKC <34096995+itsmattkc@users.noreply.github.com>
2023-08-03 16:43:36 -07:00
Joshua Peisach
dc585c7f61
MxBackgroundAudioManager (#97)
* Start MxBackgroundAudioManager

* Match MxBackgroundAudioManager constructor. This took WAY too much time.

* add size assert

* improve readability of MxBackgroundAudioManager::Enable

While the previous iteration wasn't incorrect, it definitely reads like pseudocode (i.e. it's very unlikely any actual developers would have written that). This is much more readable/likely to have been written and still results in the same asm.

---------

Co-authored-by: itsmattkc <34096995+itsmattkc@users.noreply.github.com>
2023-08-03 11:42:12 -07:00
Mark Langen
694045abd8
Implement MxVector2/3/4 and MxMatrix (#100)
* All of the MxVectors share an inheritance chain. MxVector4 inherits
  from MxVector3 which inherits from MxVector2.

* They all operate on a shared `float*` data member which points to the
  underlying storage.

* There are also MxVector3/4Data classes, which inherit from Vector3/4,
  but add concrete storage for the Vector data rather than just an
  abstract data pointer.

* The same is true for MxMatrix, with there being an abstract and a
  concrete variant of it.

* Also improve reccmp.py register matching algorithm. It previously
  could not recognize an effective match when a swap had to take place
  between two registers used on the same line. It turns out this happens
  a lot in floating point math code so I adjusted the implementation to
  break the disassembly lines on spaces rather than just linebreaks
  allowing the existing effective match code to handle that case too.
2023-08-03 11:25:29 -07:00
itsmattkc
ee7c419be8 fix the pizza conflict
Sounds like an episode of a neo-noir TV show
2023-08-03 11:21:05 -07:00
pewpew
0f92e345b3
MxTickleManager mostly done (#94)
* Checkpoint to show MxTickleManager::SetClientTickleInterval match.

* Match MxTickleManager::~MxTickleManager, obliterate MxTickleManager::SetClientTickleInterval.

* Make conditional more realistic, move MxTime to mxtypes.h, add TODO for MxTickleManager::Tickle.
2023-08-03 11:19:05 -07:00
Christian Semmler
932baa2a87
lego1: Add MxDisplaySurface class members and some functions (#95)
* Add MxDisplaySurface class members and some functions

* Add size assert

* style
2023-08-03 11:13:27 -07:00
Joshua Peisach
ff13dc691c
Start IslePathActor (#93)
* Start IslePathActor

* Update types/add needed type in LegoPathActor for Pizza

Yes, this is a recommit because last time I pushed my cmake dir

* Fix types in  islepathactor

* Adjust variables

* add size asserts

---------

Co-authored-by: itsmattkc <34096995+itsmattkc@users.noreply.github.com>
2023-08-03 11:10:54 -07:00
Roman Masanin
db2b98c248
MxDirectDraw functions and structures (#33)
* MxDirectDraw functions and structures

* fix indents, and globals

* fix build, add mxdirectdraw build configuration

* add new files to cmake

* MxDirectDraw: Add code from my PR #19 on main repo

Merging in the missing functions from my pull request for MxDirectDraw on the main repo. Credit to @foxtacles for the GetPrimaryBitDepth function. All match 100% on reccmp except ErrorToString, but the problem there is with the jump table at the end.

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

* improve match

* improve accuracy

* improve accuracy

* move _countof, impove up to 96.90%

* Update LEGO1/mxdirectdraw.h

Co-authored-by: MattKC <34096995+itsmattkc@users.noreply.github.com>

* Update LEGO1/mxdirectdraw.cpp

Co-authored-by: MattKC <34096995+itsmattkc@users.noreply.github.com>

* Update LEGO1/mxdirectdraw.cpp

Co-authored-by: MattKC <34096995+itsmattkc@users.noreply.github.com>

* Update LEGO1/mxdirectdraw.cpp

Co-authored-by: MattKC <34096995+itsmattkc@users.noreply.github.com>

* Update LEGO1/mxdirectdraw.cpp

* Update LEGO1/mxdirectdraw.cpp

---------

Co-authored-by: itsmattkc <34096995+itsmattkc@users.noreply.github.com>
Co-authored-by: disinvite <disinvite@users.noreply.github.com>
Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-08-03 10:09:22 -07:00
Joshua Peisach
ac89815663
🍕 (#79)
* start pizza

* Add some pizza vtable functions (they are stubs at the moment)

Unknown parameter types, likely either Pizzeria or PizzaMissionState.

* Pizza: Add/update functions as according to MxCore inheritance

IsleActor::Notify needs to be stubbed
---------

Co-authored-by: Kai Kaufman <ktkaufman@wpi.edu>

* match pizza destructor

* Update pizza members

* add size asserts

---------

Co-authored-by: Kai Kaufman <ktkaufman@wpi.edu>
Co-authored-by: itsmattkc <34096995+itsmattkc@users.noreply.github.com>
2023-08-03 09:54:08 -07:00
Christian Semmler
fa5417f58a
lego1: match MxVideoManager::RealizePalette (#92)
* Match MxVideoManager::RealizePalette

* Rename class

* Name some functions
2023-07-21 18:28:13 -07:00
pewpew
9fa08b1017
Pretty much match MxNotificationManager::FlushPending. (#91) 2023-07-16 18:38:37 -07:00
MS
c7acbf559f
lego1: implement MXIOINFO (#54)
* Implementation of MXIOINFO. Not a 100% match, but we are very close. I don't wanna wrangle with this one any more, so I figured I would open it up for review in case anyone else has ideas.

**Known problems:**
- The Open function uses a `movzx` instruction on the value of parameter `fdwOpen` before pushing to OpenFile from the kernel. You can force this to appear by casting to `unsigned short`, but this disturbs the instructions for the rest of the file. To get the "best" overall match I decided to leave this out.
- Flush, Advance, and Descend differ only in the order of operands on a `cmp` instruction.
- This entire file is honestly pretty ugly. The main reason is all the nested ifs; we are constrained by returning a result value from each function, but only at the very end instead of bailing out with a `return`. By far the worst offender is the do/while loop in the Descend function.

**Design considerations:**
- We are casting the file handle from MMIOINFO to `HFILE` everywhere it is used, so I decided to just change the type. While doing that, I figured I might as well just pull out the members from the struct so we don't have `m_info` all over the place.
- Without using a struct member, we have the issue of the obvious `memset` used to zero out the values in the constructor. I changed this to work on the object itself, which would not be valid in most cases, but seems fine here since we have no virtual methods.

There is a lot of repeated code here, namely the call to `_llseek` to reset `m_lDiskOffset` based on the current file position. You could move this to an inline function, but maybe that's not appropriate.

There are probably strides to be made on code clarity and comments (if needed or wanted) here. I'm open to any suggestions.

* remove casts on read, add size assert

* Use more Mx* types and param style convention

* Fixing up MXIOINFO to prepare for merge.

* Following feedback from @stravant and @itsmattkc, reverted back to using `MMIOINFO` struct as the class member instead of adding its values directly. (We actually gained a little on accuracy with this change.)
* The memset to zero out the values in the constructor now acts on `m_info` instead of `this`. Strictly speaking we don't need the size assert any more but I decided to keep it in case we change the members later for some reason.
* Casting the `hmmio` member to `HFILE` (int) or `HMMIO` (WORD) typedefs where needed.
* Squelch a signed/unsigned type comparison warning
2023-07-16 18:37:21 -07:00
Joshua Peisach
a31626cffb
MxDSAction/Chunk/MediaAction/Sound (#85)
* Match MxDSChunk ctor/dtor

* Push work on MxDSAction/MediaAction/Sound

* MxDSMediaAction constructor is matching up to a mov location

* Match MxDSSound constructor by adding the missing member

just four bytes in between them in ghidra.. isn't that enough for ghidra to justify a member variable?

* Match MxDSMediaAction constructor

Today's lesson: ecx suggests '1'
2023-07-15 23:51:11 -07:00
Joshua Peisach
e3bf7b53b5
MxEntity (#84)
* Start MxEntity

* MxEntity: make MxAtomId a member
2023-07-15 23:49:47 -07:00
pewpew
4a50a9ff56
MxNotificationManager and MxParam initial work. (#78)
* MxNotificationManager initial work.

* Add .swp files to .gitignore.

* Checkpoint before anything too crazy with param

* Cleanup and add MxParam.

* Checkpoint for everything except MxNotificationManager::Register.

* Add int return type to MxCore::GetId instead of relying on implicit function nonsense.

* Add stlcompat.h so this can still be built on modern compilers, fix affected type size asserts.

* Switch to Mx types

* Add BUILD_COMPAT option to CMake so the project can still be built with modern compilers.

* Change vtable14 and vtable18 to Register and Unregister in MxTickleManager.

* Remove last unsigned int reference to id type.

* Remove MxList, use one inherited class per type. Improves accuracy again.

* Address compiler compatibility code review.

* Match MxNotificationManager::Register.

* Re-enable MxNotificationManager DECOMP_SIZE_ASSERT.
2023-07-15 23:43:08 -07:00
Joshua Peisach
f8b1995a83
LEGO1: MxPalette (#56)
* MxPalette - add missing member variables, Detach function

* mb

* MxPalette: give bob the builder his constructor

* push progress, gn

* avoid hexadecimal

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

* fix MxPalette::GetDefaultPalette

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

* aaaaaaaaaaaaaa

* Revert "fix MxPalette::GetDefaultPalette"

This reverts commit 63f2215737.

* Implement MxPalette::Clone (doesn't match)

* fix MxPalette structure and match ctor/dtor

* Matching progress for MxPalette::GetDefaultPalette

* Implement ApplySystemEntriesToPalette except the memcpy calls

* implement SetSkyColor (doesn't match)

* Use MxTypes instead of generics

* prefer decimal values than hex for m_entries

* Update mxpalette.cpp

* Push MxPalette progress - read comments in code.

* improved MxPalette::operator==, will be 100% when MSVC feels like making it so

* improved MxPalette::SetSkyColor, will be 100% when MSVC feels like making it so

* improved MxPalette::Clone, will be 100% when MSVC feels like making it so

* Fixes

- reordered the functions in order of where they are in the hex because recmp.py sometimes kept saying it couldn't find the symbol (??)
- clone returns a pointer, not a ref
- worked a bit on setpalette/applysysentriestopalette

* Match GetDefaultPalette a bit more

* fix: MxPalette::GetDefaultPalette is now 100% matching

* fix: MxPalette::ApplySystemEntriesToPalette is now 100% matching

* tidy: rename `DC` var in GetDefaultPalette to `hdc`

* fix: MxPalette::SetPalette is now functionally matching

Not assembly matching yet because of MSVC weirdness.
At some point it will probably start matching, because
the structure seems to be accurate.

* fix: MxPalette rgbquad ctor functionally matches

Not quite ASM matching yet because of weird
register allocation mismatches.

* fix: I forgot to commit mxpalette.h...

* tidy: use Mx* primitives instead of builtins

* refactor: remove MxPalette::FromBitmapPalette

* fix: call ApplySystemEntriesToPalette from MxPalette(const RGBQUAD *)

* rename MxPalette::SetPalette to MxPalette::SetEntries

* fix: I once again forgot to commit mxpalette.h...

* feat: add/match MxPalette::Reset [0x100BF490]

* fix: add MVideoManager() to mxomni header

* refactor: change unk50 in MxVideoManager to LPDIRECTDRAW

* feat: add/match MxPalette::CreateNativePalette [0x100BF000]

* fix: MxPalette::SetSkyColor is 100% matching

* Annotate MxPalette members' offsets

* Annotate the global default aplette

* use hex size

* remove unnecessary variable offset listing

* Update LEGO1/mxpalette.cpp

---------

Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>
Co-authored-by: Christian Semmler <mail@csemmler.com>
Co-authored-by: ktkaufman03 <ktkaufman@wpi.edu>
Co-authored-by: MattKC <34096995+itsmattkc@users.noreply.github.com>
2023-07-15 22:51:24 -07:00
itsmattkc
f707af34db move override macro to compat.h 2023-07-12 14:12:03 -07:00
Mark Langen
889fd886f0
MxSemphore + MxThread + MxThread implementions (#80)
* Add MxSemphore + MxThread and the two implementations I could find
  of MxThread (consumers extend it and override the Run method).

* Implement a function in MxDiskStreamProvider which uses thread and
  semaphore to confirm correct layout / size of those classes.

* All 100% match except two functions with a pair of registers swapped.
2023-07-07 11:00:48 -07:00
Mark Langen
391ca9908f
LegoStream and implementations 100% match (#77)
* MxFile and implementations 100% match

* Add MxFile and it's implementations, MxSystemFile and MxMemoryFile.
  The names are chosen by me, we don't know their original naming.

* These expose a Read/Write/Seek/Tell interface for reading and writing
  data, either from a file on disk or memory buffer.

* 100% match all functions.

* Change name to LegoStream

* Use p_ convention

* Assert size
2023-07-07 09:20:51 -07:00
MishaProductions
fb56735fbd
[lego] Implement LegoGameState::SetSavepath (#76)
* SetSavePath 100% match

* fix naming convention
2023-07-03 10:25:37 -07:00
Christian Semmler
e0e338ee44
lego: add MxDSType enum, add it to all ctors, refactor MxDSObject (#73)
* lego: add MxDSType enum, add to all ctors

* refactor header

* re-type members

* add size assert for MxDSObject

* fix Parse param

* fix types
2023-07-03 10:24:51 -07:00
Christian Semmler
d64a04705c
lego: fix/match SetColorString (#72)
* lego: fix/match SetColorString

* explicitly cast to float to avoid warning

* style fixes

* remove superfluous includes

* Update legobackgroundcolor.cpp
2023-07-02 10:17:15 -07:00
itsmattkc
9415bd18bb
fill out the rest of our primitives in mxtypes 2023-07-02 10:07:55 -07:00
itsmattkc
8fa45bbe0f replace shorts with MxS16/MxU16/undefined2 2023-07-02 02:07:11 -07:00
MattKC
e16249b672
Define MxLong/MxULong (#71)
* define MxLong/MxULong

The "long" type has different sizes on different platforms, and this may cause issues.

* use DWORD to match RegQueryValueExA arg
2023-07-02 01:05:49 -07:00
Kai Kaufman
0555e05756
fix: ConvertHSVToRGB is effectively 100% matching (#70) 2023-07-02 01:02:05 -07:00
Kai Kaufman
b91c7d436b
fix: MxDSFile::Open is now matching 100% (#69) 2023-07-02 00:51:57 -07:00
Anonymous Maarten
646b39e876
Implement MxObjectFactory::{MxObjectFactory,Create} + match sizes of Mx.*Presenter objects created by it (#59)
* Get Isle building on MinGW32 (#63)

* Add MxUnknown100dc6b0::~MxUnknown100dc6b0 stub

* Declare destructor of MxOmni and MxTransitionManager in class

* inline attribute must go first

* Stub LegoState::Vtable0x14 for Act3State

* MxStreamer::VTable0x14 is not an override

* Stub MxEntity::Destroy for LegoState::Destroy

* Stub MxUnknown100dc6e0 for MxSoundManager

* ::ClassName and ::IsA are const methods

* methods in the class body don't need a namespace

* MxSoundManager subclasses MxUnknown100dc6e0

* LegoInputManager subclasses MxPresenter

* NotificationId is an enum, and does not need __declspec(dllexport)

* Fix final #endif of legoomni.h and mxobjectfactory.h

* Add const alternative for LegoOmni::Create and MxVideoParam, only available for MinGW

* Alternative approach to MinGW compatibility

* MinGW on Linux is case sensitve

* Don't delete a member variable. C++ automatically destructs member variables

---------

Co-authored-by: MattKC <34096995+itsmattkc@users.noreply.github.com>

* MxatomId: implement inline operator==

* Add decomp.h header, containing macro's only used when matching the original binaries

* Add in-line constructor of MxPresenter

* MxMediaPresenter: add members to match size

* MxVideoPresenter: add members to match size

* MxCompositePresenter: add members to match size

* MxFlcPresenter: add members to match size

* MxSmkPresenter: add members to match size

* MxStillPresenter: add members to match size

* MxAudioPresenter: add members to match size

* MxWavePresenter: add members to match size

* MxMIDIPresenter: add members to match size

* MxEventPresenter: add members to match size

* MxLoopingFlcPresenter: add members to match size

* MxLoopingSmkPresenter: add members to match size

* MxLoopingMIDIPresenter: add check for size

* Implement MxObjectFactory::{MxObjectFactory,Create}

Matching of MxObjectFactory::Create is not good, because none of the other objects have been implemented.

* Implement a few MxPresenter methods

* Fix size of LegoInputManager

* Fix name of first padding member of legoinputmanager.h

* add DECOMP_SIZE_ASSERT macro

* Use DECOMP_SIZE_ASSERT macro + convert to hexadecimal

* fixed minor typos

---------

Co-authored-by: MattKC <34096995+itsmattkc@users.noreply.github.com>
Co-authored-by: itsmattkc <itsmattkc@gmail.com>
2023-07-02 00:00:28 -07:00
Anonymous Maarten
302b3f66f0
Get Isle building on MinGW32 (#63)
* Add MxUnknown100dc6b0::~MxUnknown100dc6b0 stub

* Declare destructor of MxOmni and MxTransitionManager in class

* inline attribute must go first

* Stub LegoState::Vtable0x14 for Act3State

* MxStreamer::VTable0x14 is not an override

* Stub MxEntity::Destroy for LegoState::Destroy

* Stub MxUnknown100dc6e0 for MxSoundManager

* ::ClassName and ::IsA are const methods

* methods in the class body don't need a namespace

* MxSoundManager subclasses MxUnknown100dc6e0

* LegoInputManager subclasses MxPresenter

* NotificationId is an enum, and does not need __declspec(dllexport)

* Fix final #endif of legoomni.h and mxobjectfactory.h

* Add const alternative for LegoOmni::Create and MxVideoParam, only available for MinGW

* Alternative approach to MinGW compatibility

* MinGW on Linux is case sensitve

* Don't delete a member variable. C++ automatically destructs member variables

---------

Co-authored-by: MattKC <34096995+itsmattkc@users.noreply.github.com>
2023-07-01 23:53:54 -07:00
Christian Semmler
8aad15d18b
lego1: match MxBitmap::Read and vtable (#67)
* lego1: match MxBitmap::Read and vtable

* fix param name
2023-07-01 21:49:42 -07:00
itsmattkc
a66dbb8136 Squashed commit of the following:
commit a41a442f5a
Author: MishaProductions <106913236+MishaProductions@users.noreply.github.com>
Date:   Fri Jun 30 08:10:54 2023 +0300

    Update .editorconfig

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

commit 5768cf4a0c
Author: Misha <mishakeys20@gmail.com>
Date:   Fri Jun 30 08:04:37 2023 +0300

    add legoutil

commit 7d6b00c831
Author: Misha <mishakeys20@gmail.com>
Date:   Fri Jun 30 08:02:17 2023 +0300

    Update CMakeLists.txt

commit d9b49087f8
Author: Misha <mishakeys20@gmail.com>
Date:   Fri Jun 30 08:01:06 2023 +0300

    Update CMakeLists.txt

commit d5a2891965
Author: Misha <mishakeys20@gmail.com>
Date:   Fri Jun 30 07:59:03 2023 +0300

    Update CMakeLists.txt

commit 519253bff4
Merge: 6cefa2e 13df3f9
Author: Misha <mishakeys20@gmail.com>
Date:   Fri Jun 30 07:57:15 2023 +0300

    Merge remote-tracking branch 'upstream/master' into legobackgroundcolor

commit 6cefa2e9e2
Author: Misha <mishakeys20@gmail.com>
Date:   Thu Jun 29 16:51:53 2023 +0300

    add back stuff to mak file after merge

commit c2b16eb8ff
Merge: 3c8add2 07912eb
Author: Misha <mishakeys20@gmail.com>
Date:   Thu Jun 29 16:49:51 2023 +0300

    Merge remote-tracking branch 'upstream/master' into legobackgroundcolor

commit 3c8add2f19
Author: Misha <mishakeys20@gmail.com>
Date:   Thu Jun 29 13:34:15 2023 +0300

    Update legobackgroundcolor.cpp

commit 6879f30e79
Author: Misha <mishakeys20@gmail.com>
Date:   Wed Jun 28 18:22:35 2023 +0300

    add fixme + rename MxStringVariable functions

commit a883f37b9d
Author: Misha <mishakeys20@gmail.com>
Date:   Wed Jun 28 18:15:42 2023 +0300

    address review

commit a919eeb7f4
Author: Misha <mishakeys20@gmail.com>
Date:   Wed Jun 28 08:19:45 2023 +0300

    Update mxbackgroundcolor.cpp

commit 710c1dd5ea
Author: Misha <mishakeys20@gmail.com>
Date:   Wed Jun 28 08:11:13 2023 +0300

    add back mak file

commit 25e9bbbfb0
Merge: 78b0e8d 2d9af63
Author: Misha <mishakeys20@gmail.com>
Date:   Wed Jun 28 08:09:03 2023 +0300

    Merge remote-tracking branch 'upstream/master' into legobackgroundcolor

commit 78b0e8dd62
Author: Misha <mishakeys20@gmail.com>
Date:   Tue Jun 27 18:35:58 2023 +0300

    improve accuracy

commit 4c2e1ca95c
Author: Misha <mishakeys20@gmail.com>
Date:   Mon Jun 26 13:50:40 2023 +0300

    improve accuracy

commit 7dd3469ca3
Author: Misha <mishakeys20@gmail.com>
Date:   Mon Jun 26 13:24:11 2023 +0300

    ConvertColor wip

commit b0288803a8
Merge: 3d16867 0b47f3f
Author: MishaProductions <106913236+MishaProductions@users.noreply.github.com>
Date:   Mon Jun 26 09:42:08 2023 +0300

    Merge branch 'isledecomp:master' into legobackgroundcolor

commit 3d16867a90
Author: Misha <mishakeys20@gmail.com>
Date:   Sun Jun 25 17:03:14 2023 +0300

    90% match

commit 2208573eb2
Author: Misha <mishakeys20@gmail.com>
Date:   Sun Jun 25 12:23:47 2023 +0300

    improve accuracy + add editorconfig

commit 288f861428
Author: Misha <mishakeys20@gmail.com>
Date:   Sun Jun 25 07:57:14 2023 +0300

    fix makefile

commit 3590e59a3a
Author: Misha <mishakeys20@gmail.com>
Date:   Sun Jun 25 07:51:35 2023 +0300

    Update isle.mak

commit fb52ad5781
Author: Misha <mishakeys20@gmail.com>
Date:   Sun Jun 25 07:47:06 2023 +0300

    fix build

commit 791cf1301a
Merge: b9ecd15 64d2b9e
Author: Misha <mishakeys20@gmail.com>
Date:   Sun Jun 25 07:42:09 2023 +0300

    Merge remote-tracking branch 'upstream/master' into legobackgroundcolor

commit b9ecd15ca6
Author: Misha <mishakeys20@gmail.com>
Date:   Sun Jun 25 07:40:22 2023 +0300

    undo change

commit 6327a797bc
Author: Misha <mishakeys20@gmail.com>
Date:   Sat Jun 24 21:48:08 2023 +0300

    delete accidently committed files

commit 7ae1c05df9
Author: Misha <mishakeys20@gmail.com>
Date:   Sat Jun 24 21:47:05 2023 +0300

    implement SetColorString

commit 323a2ee0e7
Author: Misha <mishakeys20@gmail.com>
Date:   Sat Jun 24 20:47:03 2023 +0300

    constructor and some methods are matching

commit 0ce6fab3d0
Author: Misha <mishakeys20@gmail.com>
Date:   Sat Jun 24 20:38:10 2023 +0300

    constructor is almost matching
2023-06-30 16:33:59 -07:00
Christian Semmler
d7b8d6463b
lego: Implement/match CalculateNewVel (#66)
* lego: Implement/match CalculateNewVel

* remove braces

* consistency
2023-06-30 16:24:46 -07:00
Joshua Peisach
428b5ae8db
Initial implementation of MxBitmap (#34)
Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>
2023-06-30 16:24:00 -07:00
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
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
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
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
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
4db49fe6a6
match MxAutoLocker ctor/dtor (#52) 2023-06-26 09:48:19 -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
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
Joshua Peisach
2644be3ca6
MxTimer matching (#29)
* MxTimer::Start - swap instruction order

Technically, isRunning is set after getting the real time according to the pseudo code,
which i guess is fine, you dont know it started until it really started

* MxTimer - finish tweaking to match assembly
2023-06-21 00:37:46 -07:00
Christian Semmler
124a5ddaa3
isle: Accuracy improvements (#27)
* Isle::Isle 100% accuracy

* Isle::~Isle 100%

* improve accuracy of ReadReg functions

* refactor

* fix Isle::ReadRegBool

* fix Isle::ReadRegInt

* empty commit to reset GH action

* fix Isle::SetupLegoOmni
2023-06-21 00:30:46 -07:00
MS
6207d1f775
add more MxString functions (#31) 2023-06-21 00:30:07 -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
dafe66191c mxomni: fixed minor inaccuracy 2023-06-19 10:56:53 -07:00
Christian Semmler
0b3d1abe66
fix wrong video param flag interfaces (#26) 2023-06-19 09:20:36 -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
f8263a3ef8 implemented some parts of MxOmni and LegoOmni 2023-06-18 23:19:40 -07:00
ecumber
526c6af1f6
Implement a few Mx* functions / add data types (#25)
* 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>
2023-06-18 22:36:07 -07:00
Anonymous Maarten
6e18d1b41f
ISLE and mingw32 fixes (#18)
* 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>
2023-06-18 21:45:25 -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
a746a28702 legoinputmanager: fixed enum 2023-06-18 21:02:00 -07:00
itsmattkc
2a93655f06 added even more definitions 2023-06-18 20:56:55 -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
Christian Semmler
170ca99390
forgot updated viewmanager.h 2023-06-18 14:02:16 +02:00
Christian Semmler
30989aec9c
add Lego3DManager and related, fix a function signature 2023-06-18 13:45:39 +02:00
Christian Semmler
258b7f861e
remove a space 2023-06-17 22:05:40 +02:00
Christian Semmler
b51d74f642
fix broken MxOmniCreateParam ctor interface 2023-06-17 22:03:09 +02:00
Christian Semmler
e6f8da256f
perfect SetDeviceName 2023-06-15 16:22:48 +02:00
Thomas May
fdbaf454aa Merge remote-tracking branch 'upstream/master' into mxautolocker 2023-06-14 01:31:57 +01:00
Thomas May
14b14f88a5 Make sure we're using MX_TRUE/MX_FALSE 2023-06-14 01:26:24 +01:00
Thomas May
a925aec046 lego1: implement MxTimer + dependencies 2023-06-14 01:22:42 +01:00
Christian Semmler
3a4a985fd0
formatting 2023-06-13 20:45:02 +02:00
Christian Semmler
422340f113
lego1: bootstrap LegoNavController implementation 2023-06-13 20:17:20 +02:00
MattKC
dec959f194
Merge pull request #11 from foxtacles/isle-mxcriticalsection
lego1: Add MxCriticalSection implementation
2023-06-12 13:12:06 -07:00
itsmattkc
fa06782e08 improved accuracy of MxVideoParamFlags
This is probably an MxBool, and probably all of the other functions here also take an MxBool
2023-06-12 13:04:46 -07:00
Christian Semmler
0bfb88837e
use LF line ending 2023-06-12 20:46:44 +02:00
Christian Semmler
fba95658b5
lego1: add MxCriticalSection implementation 2023-06-12 20:43:19 +02:00
Christian Semmler
7ff3acebb3
remove execute bits on files 2023-06-12 18:05:43 +02:00
itsmattkc
279d626279 import all functions from lego1 exports
This declares a bunch of classes and functions for us, as well as fixes some declarations that were slightly incorrect (e.g. missing "virtual", etc)
2023-06-11 18:03:54 -07: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