Commit graph

1212 commits

Author SHA1 Message Date
Nathan M Gilbert
38cfad8b17
Implement LegoExtraActor::VTable0x90 ()
* Implement LegoExtraActor::VTable0x90

* Improve LegoExtraActor::VTable0x90

* Match

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-27 20:38:13 +01:00
Ramen2X
1cf60ccda6
implement/match HospitalEntity::VTable0x50() () 2024-03-27 12:12:20 -04:00
Nathan M Gilbert
483b3a5ab7
ExtraActor ctor/dtor () 2024-03-27 16:53:38 +01:00
Nathan M Gilbert
32bc6c4264
Implement ExtraActor vftable and passthrough methods ()
* Implement ExtraActor vftable and passthrough methods

* Remove unused param names
2024-03-26 19:24:01 -04:00
Ramen2X
4e9dbfe331
implement HospitalState::VTable0x1c() () 2024-03-26 18:25:41 -04:00
Nathan M Gilbert
1e3ca11886
Implement/match LegoAnimActor ()
* Implement/match LegoAnimActor

* Name changes (deviation from original source)

* Attempt to fix modern build

* Add missing override

* Match LegoAnimActor::SetWorldSpeed

* Remove junk

* Style changes and implement WEEdge

* Add override

* Match LegoAnimActor::FUN_1001c1f0, style

* Style

* Add missing annotations, STUB LegoPathBoundary

* Style

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-26 18:51:52 +01:00
Ramen2X
43ce89224a
match LegoGameState::RegisterState() () 2024-03-25 14:34:28 -04:00
Ramen2X
77b5f1338c
label some hospital members () 2024-03-25 11:59:24 -04:00
Christian Semmler
0ed9f37587
Match LegoPointOfViewController::Tickle () 2024-03-25 15:00:59 +01:00
Joshua Peisach
2261f7f039
IslePathActor: implement notify, remove usage of this keyword () 2024-03-25 12:43:03 +01:00
Christian Semmler
0aa8d54990
Revert "Match LegoNavController::CalculateNewPosDir & LegoNavController::CalculateNewTargetVel ()"
This reverts commit 6464486800.
2024-03-25 06:01:50 -04:00
Misha
6464486800
Match LegoNavController::CalculateNewPosDir & LegoNavController::CalculateNewTargetVel () 2024-03-24 21:16:49 -04:00
Misha
2e5d54c03e
Finish LegoPathPresenter ()
* Finish LegoPathPresenter

* Update legopathcontroller.cpp

* Fixes

* fix

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-24 22:30:04 +01:00
Joshua Peisach
3f6f59852f
Ambulance::Create, dtor ()
* Ambulance::Create, dtor

* annotations

* fix

* remove comment

---------

Co-authored-by: Ramen2X <rmn@legoisland.org>
Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-24 22:28:44 +01:00
Joshua Peisach
313bd9ffd0
PoliceEntity::VTable0x50 ()
* PoliceEntity::VTable0x50

* fix

* don't hardcode Isle world object id

* style

---------

Co-authored-by: Ramen2X <rmn@legoisland.org>
Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-24 22:26:55 +01:00
Misha
b66e28ac5e
implement a few legonavcontroller functions ()
* implement a few legonavcontroller functions

* Match LegoNavController::ProcessJoystickInput

* Style

* Match LegoNavController::ProcessKeyboardInput

* Style

* Fix

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-24 15:30:12 +01:00
Misha
b279e8b8b9
Begin LegoNavController::Notify ()
* Partial implementation of LegoNavController::Notify

* Mark as stub

* Update legoanimationmanager.cpp

* Rename function/style

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-23 19:00:34 +01:00
Christian Semmler
8b43e940f8
Implement/match LegoCameraController::FUN_100123e0 () 2024-03-23 18:46:27 +01:00
Christian Semmler
0391b5b42a
Replace more magic numbers with script values ()
* Replace more magic numbers with script values

* Matches/fixes

* Make const
2024-03-23 18:06:31 +01:00
Christian Semmler
18377c2f1f
Implement/match LegoNavController::UpdateCameraLocation ()
* Implement/match LegoNavController::UpdateCameraLocation

* Add size assert
2024-03-23 17:10:12 +01:00
Nathan M Gilbert
8b21e8136e
Animmanager ()
* Implement LegoAnimationManager::StartEntityAction
Fix some class definitions

* Fix style issues

* Add size annotations

* Fix global pointer

* Style/naming

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-23 15:09:20 +01:00
Nathan M Gilbert
fca8f74bd8
Fix Annotations and LegoAnimActor class structure. ()
* Fix size annotations for legoomni
Fix structure and add placeholder annotations for LegoAnimActor and subclasses

* Fix LegoCarRaceActor constructor
Fix function name in LegoRaceCar

* Add size assertions for legoomni and fix sizes

* Various style fixes

* Use other marker so vtable.py doesn't compare

* Revert "Use other marker so vtable.py doesn't compare"

This reverts commit 608985cd73856598b95c15aed9f8f022645e9e7a.

* Fix copy/paste error

* Remove stale comment.

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-22 21:30:58 -04:00
Ramen2X
96f7219811
implement/match Hospital::HandleButtonDown() () 2024-03-22 17:27:22 -04:00
Christian Semmler
68bb20f04f
Implement LegoCharacterManager::CreateROI ()
* WIP

* Create globals

* Add Read

* Name Init

* Add LegoCharacter init data

* Add define for NULL

* Use MxS8

* Add LegoCharacterLOD

* WIP CreateROI

* Fix

* WIP

* Match

* Match

* Match, implement Find

* Fix MeshBuilder

* Fix

* space
2024-03-22 18:40:19 +01:00
Ramen2X
8cffa7cf8c
implement Hospital::HandleClick() ()
* implement Hospital::HandleClick()

* style

* style
2024-03-21 13:27:51 -04:00
Misha
9256554406
Implement LegoCameraController::Notify & TimeROI::FUN_100a9b40 ()
* Implement LegoCameraController::Notify & TimeROI::FUN_100a9b40

* Fixes/matches

* Style

* Fix

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-21 15:39:23 +01:00
Ramen2X
770da22a1d
implement/match Hospital::HandleEndAction() ()
* implement Hospital::HandleEndAction()

* don't compare m_unk0x128 against char

* fix gotos

* match
2024-03-20 19:19:08 -04:00
Misha
3ce1e4985e
begin LegoAnimMMPresenter () 2024-03-20 22:11:40 +01:00
Misha
d8fedab090
Implement MxDisplaySurface::VTable0x30 ()
* Implement MxDisplaySurface::VTable0x30

* improve match

* style

* fix style

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-20 21:44:30 +01:00
Misha
e5fa35fd99
Implement a few registrationbook methods ()
* Implement a few registrationbook methods

* Match RegistrationBook::HandleKeyPress

* Match RegistrationBook::CreateSurface

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-20 17:26:10 +01:00
Misha
556c7698d8
implement RemoveFromCurrentWorld ()
* implement RemoveFromCurrentWorld

* Replace magic values

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-19 21:07:07 +01:00
Ramen2X
2477b89e32
add actions forward decl header ()
* add actions forward decl header

* newline

* format

* remove existing fwd declares

* Headers

* replace COMPAT_MODE check

* flip

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-19 15:54:13 -04:00
Misha
eaa935f646
Finish LegoVariables class ()
* Finish LegoVariables class

* Update legonavcontroller.cpp

* Update legobackgroundcolor.cpp

* Match functions, style, refactor visible

* Use MxBool

* Merge/fix

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-19 19:44:42 +01:00
Misha
d92963982a
Implement ViewManager::FUN_100a6dc0 ()
* Update viewmanager.cpp

* Fix function

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-19 19:24:53 +01:00
Christian Semmler
0994d6dbfb
Implement LegoCharacterManager::GetROI ()
* Implement LegoCharacterManager::GetROI

* Add TODO
2024-03-19 19:23:34 +01:00
Misha
277957f0d5
implement misc presenter functions ()
* implement misc presenter functions

* style/spacing

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-19 16:07:11 +01:00
Misha
fd1b371864
Implement a few LegoBackgroundColor functions ()
* Update legobackgroundcolor.cpp

* Update legobackgroundcolor.cpp

* minor style

* minor style

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-19 15:22:11 +01:00
Misha
e454e56b52
Implement a few RegistrationBook functions ()
* Implement a few RegistrationBook functions

* Match functions

* minor style

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-19 15:15:24 +01:00
Christian Semmler
44bc575a2d
Replace some magic numbers with enum values () 2024-03-19 07:45:29 -04:00
Christian Semmler
52d74647be
Implement/match Isle::HandleEndAction and Isle::HandleElevatorEndAction ()
* WIP

* Match
2024-03-18 15:00:58 -04:00
Christian Semmler
d96679ea9e
Implement/match Isle::HandleClick ()
* Isle::HandleClick

* WIP

* Match
2024-03-18 17:31:22 +01:00
Ramen2X
44f49a7a57
implement/match Hospital::HandleKeyPress() () 2024-03-18 12:23:19 -04:00
Christian Semmler
e1135d9c1d
Use script values from enum for clicked objects () 2024-03-18 16:05:05 +01:00
Christian Semmler
ba5bc46c0c
Implement/match FUN_10032620 () 2024-03-18 15:38:02 +01:00
Ramen2X
937a45020c
refactor action headers () 2024-03-17 16:52:42 -04:00
Misha
b38a2a4980
implement RegistrationBook::HandleClick ()
* implement RegistrationBook::HandleClick

* fix build

* Style

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-17 19:58:27 +01:00
Christian Semmler
0fe3fa65aa
Implement/match Isle::FUN_10032d30 () 2024-03-17 18:26:41 +01:00
Christian Semmler
5b8f515968
Implement/match Isle::HandleTransitionEnd ()
* Implement/match Isle::HandleTransitionEnd

* Rename enums

* Forward declare enum for C++11+

* Add underlying storage to action headers

* Fix missing define
2024-03-17 18:01:47 +01:00
Ramen2X
4197e3c326
implement Hospital::ReadyWorld() () 2024-03-16 17:02:05 -04:00
Christian Semmler
0a4db65b24
Implement/match Isle::Enable ()
* Implement/match Isle::Enable

* Fix order
2024-03-16 19:20:44 +01:00
Christian Semmler
70e8796af3
Implement/match LegoEntity::VTable0x3c () 2024-03-16 03:20:44 +01:00
Ramen2X
bf6765b575
fix dupes in action headers () 2024-03-16 02:43:56 +01:00
Ramen2X
6cd5ffcf1a
implement RegistrationBook::ReadyWorld(), impl/match MxDisplaySurface::CopySurface() ()
* implement RegistrationBook::ReadyWorld()

* don't fix the size of letterBuffer

* Fix crash in MxStillPresenter::Clone

* Implement MxDisplaySurface::CopySurface

100% match

* improve accuracy

* invert HasRegistered check

* fix legogamestate structure, documentation tweaks

* this might be cleaner actually

* Update mxdisplaysurface.cpp

* Update legogamestate.h

* don't hardcode action ids in VTable0x64

* Match ~98%

---------

Co-authored-by: Misha <106913236+MishaProductions@users.noreply.github.com>
Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-16 02:32:06 +01:00
Nathan M Gilbert
d07d7edc81
Implement methods to load dta files. ()
* Implement methods to load dta files.

* fix style issues

* fix vtables

* fix more style issues

* fix ddtor names

* Remove explicit padding, add annotations, asserts

* Use List template

* trigger CI

* Fix class refactor

* Match code, fix annotations

* Fix

* 98% match

* Fix

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-16 01:43:45 +01:00
Ramen2X
4ddd9e200c
implement/match Hospital::Tickle() () 2024-03-15 19:16:43 -04:00
Christian Semmler
78f0455463
Fix code quirk () 2024-03-15 17:05:09 +01:00
Christian Semmler
10ae05a888
Add missing size assert 2024-03-15 16:35:28 +01:00
Christian Semmler
0e146f08d6
Implement/match LegoNavController::CalculateNewPosDir ()
* Implement/match LegoNavController::CalculateNewPosDir

* Fix naming

* Fix naming
2024-03-15 16:33:32 +01:00
MS
331aac73f2
Implement MxMemoryPool ()
* Implement MxMemoryPool

* Naming fix

* Annotations and size asserts

* hex padding
2024-03-13 21:44:07 -04:00
Christian Semmler
7edad07d18
Implement/match LegoEntity::GetWorldPosition/Direction/Up ()
* Implement/match LegoEntity::GetPosition/Direction/Up

* Rename
2024-03-13 20:29:28 -04:00
Ramen2X
aaee10949e
implement Hospital::Notify(), Enable(), VTable0x64() ()
* implement Hospital::Notify(), Enable(), VTable0x64()

* function order

* Fix HandleClick

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-13 16:32:20 -04:00
Ramen2X
a9a564b25e
implement/match Hospital::~Hospital() () 2024-03-13 15:10:53 -04:00
Christian Semmler
0f2aee1849
Implement/match LegoPointOfViewController::SetEntity ()
* Implement/match LegoPointOfViewController::SetEntity

* Fix order
2024-03-13 19:03:30 +01:00
Christian Semmler
0623e6a766
Implement/match LegoPointOfViewController::Tickle () 2024-03-13 18:46:20 +01:00
Ramen2X
beb30e80ea
slight style tweaks to legogamestate and related members () 2024-03-13 13:17:20 -04:00
Ramen2X
4aafc435f5
implement/match Hospital::Create() () 2024-03-13 11:45:27 -04:00
Christian Semmler
06080b6492
Changes to GasStation::Create based on beta debug build ()
* Implement/match LegoAnimNodeData::FUN_100a0990

* Change GasStation::Create based on beta debug build
2024-03-13 16:38:38 +01:00
MS
dcc3946a08
Separate MxCore counter () 2024-03-12 14:59:39 -04:00
MS
62a3f50287
KeyValueStringParse closer to beta version ()
* KeyValueStringParse closer to beta version

* Line numbers out
2024-03-12 14:27:24 -04:00
Christian Semmler
9d80cf4824
Implement/match LegoAnimNodeData::FUN_100a0990 () 2024-03-12 14:11:13 -04:00
Christian Semmler
02838d0f57
Implement LegoAnimNodeData::GetRotation ()
* WIP

* Improve matches
2024-03-12 18:21:58 +01:00
MS
e3d7188ec9
Use AUTOLOCK macro ()
* Use AUTOLOCK macro

* MxAutoLock

* Remove semicolon

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

---------

Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>
2024-03-12 15:23:50 +01:00
Ramen2X
b0483000d8
TransitionNone() -> NoTransition() () 2024-03-11 21:23:31 -04:00
Ramen2X
9207d1cb28
remove redundant MxU16 cast in MosaicTransition()
mistake, but it gets optimized out anyways
2024-03-11 17:37:45 -04:00
Ramen2X
121708a574
match MxTransitionManager::MosaicTransition() () 2024-03-11 17:33:43 -04:00
Christian Semmler
7659db49e7
Implement LegoAnim::CreateLocalTransform ()
* Implement LegoAnim::CreateLocalTransform

* Match Matrix4::Scale
2024-03-11 15:15:18 -04:00
Ramen2X
6dfee432ea
rename MxTransitionManager transitions () 2024-03-11 04:57:58 -04:00
Ramen2X
c28c2aeb52
fix regressions () 2024-03-10 12:45:46 -04:00
Ramen2X
7fad763699
refactor script enum structure ()
* add autogenerated action headers

* refactor police

* refactor infocenter

* refactor jukebox

* refactor regbook

* format

* scope headers in namespaces instead

* attempt to dynamically build headers ignore list in ncc

* correct whitespace in naming.yml

* fix wrong folder

* fix accidental extra newline in cmakelists
2024-03-10 17:08:21 +01:00
Christian Semmler
6972142923
Implement OrientableROI::GetLocalTransform () 2024-03-10 16:10:53 +01:00
Christian Semmler
d090b449d1
Add CalcWorldBoundingVolumes () 2024-03-10 15:29:16 +01:00
Christian Semmler
660c1e1170
Implement ViewManager::FUN_100a65b0 () 2024-03-10 05:12:15 +01:00
Christian Semmler
a55b01d186
Implement ViewManager::FUN_100a66f0 () 2024-03-10 04:47:13 +01:00
Christian Semmler
4b0c6d1f5f
Implement/match ViewManager::Update ()
* Implement/match ViewManager::Update

* Fix
2024-03-10 02:14:53 +01:00
Christian Semmler
86f84e1740
Implement/match ViewManager::FUN_100a6b90 ()
* Implement/match ViewManager::FUN_100a6b90

* Fix comment

* Fix order
2024-03-10 00:40:29 +01:00
Christian Semmler
8069923651
Refactor files based on beta debug build ()
* Rename LegoUnkSaveDataWriter -> LegoCharacterManager

* Refactor mxomni into mxomni/mxmisc

* Refactor legoomni into legoomni/misc

* Resolve deps

* Refactor atom

* Refactor mxutil

* Refactor mxio

* Rename/relocate files

* Fix format
2024-03-09 21:07:52 +01:00
Christian Semmler
c62469fef4
Implement/match LegoPartPresenter::ReadyTickle ()
* Implement/match LegoPartPresenter::ReadyTickle

* Remove space
2024-03-09 19:11:34 +01:00
Christian Semmler
6fa4a0dbec
Implement/match LegoPartPresenter::Store () 2024-03-09 19:03:21 +01:00
Christian Semmler
9f875d01e5
Implement/match LegoPartPresenter::Read ()
* WIP

* Match

* Remove TODO

* Fix
2024-03-09 18:27:53 +01:00
Christian Semmler
9e2f37e7ca
Implement LegoTexturePresenter::Read and Store ()
* LegoTexturePresenter::Read

* Implement LegoTexturePresenter::Store

* Rename

* Fix naming
2024-03-09 16:49:13 +01:00
Christian Semmler
fb800db862
Implement OrientableROI::FUN_100a46b0 ()
* Implement OrientableROI::FUN_100a46b0

* Fix
2024-03-09 03:52:42 +01:00
Christian Semmler
32ae9f3803
Implement/match LegoROI::FUN_100a9170 ()
* Implement.match LegoROI::FUN_100a9170

* Add two LOD functions
2024-03-08 21:29:16 +01:00
Christian Semmler
d978cbe7f9
Implement/match LegoROI::FUN_100a9210 ()
* Implement/match LegoROI::FUN_100a9210

* Fix order
2024-03-08 21:01:18 +01:00
Christian Semmler
309997fddc
Implement various LegoROI functions ()
* WIP

* Fix

* Fix
2024-03-08 20:28:52 +01:00
Christian Semmler
45cba2c00e
Implement/match remaining LegoLOD functions ()
* Implement/match remaining LegoLOD functions

* Add param name
2024-03-08 18:03:26 +01:00
Christian Semmler
873926afe2
Implement TglImpl::MeshBuilder::CreateMesh ()
* WIP

* Change

* Fix

* Improve match

* Rename class

* Fix function

* Fix annotation

* Fix annotations

* Fix annotation
2024-03-08 17:55:25 +01:00
Christian Semmler
53e2353f78
Implement LegoLOD::Read and related ()
* WIP

* Fix

* Remove bogus

* Fix

* Match

* Fix

* Remove TODO
2024-03-07 20:57:17 +01:00
Christian Semmler
a12146f52f
Implement/match LegoEntity::VTable0x34 ()
* Implement/match LegoEntity::VTable0x34

* Change parameter name

* Fix order
2024-03-06 20:12:20 +01:00
Christian Semmler
71bcd4c771
Implement/match LegoEntity::SetWorldTransform and ResetWorldTransform ()
* Implement/match LegoEntity::SetWorldTransform and ResetWorldTransform

* Add param name
2024-03-06 19:25:45 +01:00
Misha
8ecae549df
implement functions in ViewROI and ViewLodList () 2024-03-05 22:15:32 +01:00
Misha
3897e9c015
Add JailEntity class ()
* Add JailEntity class

* Update legoobjectfactory.h

* Update jailentity.h

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-05 16:05:38 -05:00
Christian Semmler
a93e2ae0d3
Implement/match LegoEntity::SetLocation ()
* Implement/match LegoEntity::SetLocation

* Remove comment
2024-03-05 20:31:57 +01:00
Christian Semmler
3b2bd0e9d4
Implement/match LegoEntity::SetROI () 2024-03-05 19:35:28 +01:00
Christian Semmler
f6e44b1c1b
Implement LegoROI::Read and geom library ()
* Implement LegoROI::Read and geom library

* Match

* Match

* Fixes

* Fix
2024-03-05 18:38:53 +01:00
MS
ec1fcce08c
Data comparison tool ()
* Parse cvdump TYPES section. Add datacmp tool.

* Corrections

* Use static

* Revert "Use static"

This reverts commit e0a4324e004e83565a9880e457c588ed0cf71931.

* Handle partially initialized variable

* Shuffle order of legounksavedatawriter

* Revert "Shuffle order of legounksavedatawriter"

This reverts commit 506e06f1174739fdbfade73e29b9ce4eac44b06c.

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-05 09:45:09 +01:00
Misha
068760056a
fix bug in MxPresenter::CreateEntity ()
* fix bug in MxPresenter::CreateEntity

* Match 100%

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-04 23:00:38 +01:00
Christian Semmler
a78b1c7d49
Add missing include guard 2024-03-04 15:20:42 -05:00
Christian Semmler
c9210c02fb
Bootstrap LegoLOD, implement/match ViewManager::FUN_100a66a0 ()
* Bootstrap LegoLOD, implement/match ViewManager::FUN_100a66a0

* Fixes

* Try fix

* Try this

* Fix
2024-03-04 22:57:35 +01:00
Christian Semmler
b8aa16ff80
Implement/match ViewManager::Remove () 2024-03-04 22:06:40 +01:00
Christian Semmler
00c05aa80b
Implement/match remaining Lego3DView functions () 2024-03-04 18:54:25 +01:00
Christian Semmler
d3b575169e
Implement/match LegoModelPresenter::FUN_1007ff70 () 2024-03-04 18:26:36 +01:00
Misha
c2a46b058b
implement various LegoWorldPresenter functions ()
* implement LegoWorldPresenterFunctions

* fix typo

* Fixes/match

* Fix

* Match

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-03 20:34:55 -05:00
Misha
7f5ad98749
implement ModelDbPart::Read & ModelDbModel::Read ()
* implement ModelDbPart::Read & ModelDbModel::Read

* Update modeldb.cpp

* Minor style fixes

* Add comment about buffer overrun

* Use sizeof on var

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-03-03 17:15:24 -05:00
Christian Semmler
01f07a323c
Implement ModelDb (WDB reader/parser) ()
* WIP Read WDB

* Fixes

* WIP

* WIP

* WIP

* WIP

* Match

* Match

* Fix Compare

* Rename member
2024-03-03 21:35:56 +01:00
Misha
a6cf0b5856
implement BuildingEntity functions ()
* implement BuildingEntity functions

* fix build

* Update infocenterentity.h
2024-03-02 17:11:03 -05:00
Christian Semmler
de5cd98b76
Implement/match ViewManager::RemoveAll ()
* Implement/match ViewManager::RemoveAll

* Use const_iterator

* const

* Naming
2024-03-02 20:26:19 +01:00
Christian Semmler
6de17cf1b6
Implement/match some ViewManager functions () 2024-03-02 19:40:42 +01:00
Christian Semmler
05965f5357
Implement/match ViewManager ctor/dtor/structure ()
* Implement/match ViewManager constructor/structure

* Add dtor
2024-03-02 15:43:19 +01:00
Christian Semmler
c643723a9c
Improve match of LegoView1::Create () 2024-03-01 22:53:42 +01:00
Christian Semmler
baacb42bfb
Improve match of LegoVideoManager::Create () 2024-03-01 22:46:28 +01:00
Christian Semmler
0067c24ead
Implement/match ViewLODListManager::Create ()
* Implement/match ViewLODListManager::Create

* Add stdio.h header

* Add remaining annotations
2024-03-01 22:32:10 +01:00
Christian Semmler
fb6eed9bff
Match StartAction functions, remove NextFragment () 2024-03-01 19:07:07 +01:00
Christian Semmler
ba8744ef8f
Match MxTickleManager::Tickle () 2024-03-01 18:46:07 +01:00
Christian Semmler
ec29f2633d
Improve matches in ROI classes ()
* Improve matches in ROI classes

* More function implementations

* Fix name

* Fix vtables

* Add annotation
2024-03-01 18:19:41 +01:00
Christian Semmler
e609924e4c
Match MxDisplaySurface::Display () 2024-03-01 03:42:50 +01:00
Christian Semmler
79713698cf
Improve match of MxVideoPresenter::PutFrame ()
* Improve match of PutFrame

* Fix

* Fix

* Fix
2024-03-01 02:45:30 +01:00
Christian Semmler
49d6c88912
Match ParseExtra functions ()
* Match ParseExtra functions

* Match MxStillPresenter::ParseExtra

* Match remaining ParseExtra functions
2024-02-29 19:15:20 +01:00
Nathan M Gilbert
ff04b0ba5a
Implement FLIC ()
* Implement FLIC

* Refactor/style

* Remove library_flic.h

* Exclude flic.cpp from naming

* Temporary workaround

* Fix type

* Fix bugs in FLC decoding, and cleanup

* Fix braces

* Match ClampLine

* Fix struct type

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-29 18:00:57 +01:00
Christian Semmler
dd1979154d
Match MxWavePresenter::DoneTickle () 2024-02-28 23:10:05 +01:00
Christian Semmler
f3f29e5536
Allow game to start 2024-02-28 15:09:08 -05:00
Nathan M Gilbert
0e7823cedd
LegoGameState player functions ()
* LegoGameState player functions

* Style

* use sizeof

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-28 21:03:27 +01:00
Nathan M Gilbert
4d84157888
Implement Save, Load, DeleteState ()
* Implement Save, Load, DeleteState

* WIP

* WIP

* Match LegoGameState::Save

* Spacing

* Match LegoGameState::DeleteState()

* More match

* Match

* Move vars

* Other fixes

* Rename

* Fix error

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-27 21:04:17 +01:00
Christian Semmler
c0a988b0fe
Implement/match LegoAnimPresenter::StartingTickle ()
* Implement/match LegoAnimPresenter::StartingTickle

* Fix vtable

* Fix vtable
2024-02-27 17:49:31 +01:00
Christian Semmler
68893d67ed
Implement/match LegoAnimPresenter::FUN_10069150 () 2024-02-27 16:13:00 +01:00
Christian Semmler
60161c43b5
Implement/match LegoAnimPresenter::FUN_100698b0 ()
* Implement/match LegoAnimPresenter::FUN_100698b0

* Use const_iterator
2024-02-26 19:39:03 +01:00
Christian Semmler
e6c347b8ab
Implement/match LegoAnimPresenter::FUN_100697c0 ()
* Implement/match LegoAnimPresenter::FUN_100697c0

* Use LegoU32
2024-02-26 18:41:18 +01:00
Nathan M Gilbert
124b73046b
Continued work on LegoGameState ()
* Continued work on LegoGameState

* Fixes/matches/refactor

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-26 17:19:16 +01:00
Joshua Peisach
b524b47723
jukebox functions ()
* start jukebox functions

* JukeBox::notify

* implement remaining functions/fixes

* Fixes/matches

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-26 16:12:14 +01:00
Christian Semmler
c5318dca13
Implement/match LegoAnimPresenter::FUN_100695c0 () 2024-02-25 18:55:57 +01:00
Christian Semmler
96c98cec3d
Implement LegoAnimPresenter::FUN_100692b0 ()
* Implement LegoAnimPresenter::FUN_100692b0

* Match
2024-02-25 18:04:30 +01:00
Christian Semmler
377eebb610
Minor style/naming fixes () 2024-02-25 15:14:39 +01:00
Christian Semmler
b281866ea6
Implement/match LegoModelPresenter::CreateROI ()
* Implement/match LegoModelPresenter::CreateROI

* Match

* Use inline function

* Note about Get()
2024-02-24 17:48:16 +01:00
Nathan M Gilbert
13fc4e3285
LegoGameState::SwitchArea () 2024-02-24 14:55:00 +01:00
Christian Semmler
91a585ae49
Remove TODO 2024-02-23 12:58:59 -05:00
Christian Semmler
9d0ff0425c
Implement LegoTextureContainer::Insert ()
* WIP

* Fix

* Fix

* Match

* Match
2024-02-23 18:54:45 +01:00
Joshua Peisach
51520aaae6
LegoActor: destructor, SetROI ()
* LegoActor: destructor, SetROI

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-23 18:51:49 +01:00
Christian Semmler
6b1c75ab5a
Refactor LegoContainer ()
* Refactor LegoContainer

* Fix name

* Fix build

* Refactor some includes

* Update STL compat

* Fix

* Fix annotations
2024-02-23 16:06:16 +01:00
Christian Semmler
9d8820ee06
Implement TextureData::Create ()
* Implement TextureData::Create

* Fix names

* Rename

* Fix name

* Fix annotation

* Add missing annotation

* Fix annotation

* More annotation fixes

* Compat template type ambiguity

* Fix
2024-02-22 16:59:44 -05:00
MS
761b120aee
CustomizeAnimFile MxVariable ()
* CustomizeAnimFile MxVariable

* Fixes

* Remove returns

* Add size asserts

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-21 21:30:02 +01:00
Christian Semmler
d76d334197
Minor fixes 2024-02-20 12:14:52 -05:00
Christian Semmler
eefb05de73
Implement remaining anim.lib read functions () 2024-02-20 18:03:24 +01:00
Christian Semmler
21f80c825a
Fix unsigned/signed 2024-02-19 09:35:20 -05:00
Nathan M Gilbert
cc1bc148d0
Implement HistoryBook::ReadyWorld ()
* Implement HistoryBook::ReadyWorld

* Fix names and annotations

* WIP improvements

* Remove unnecessary padding/pack

* Remove packing

* Style

* Use countof

* Fix signed

* Fixes

* Remove duplicate annotation

* Rename

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-19 15:24:30 +01:00
Christian Semmler
dbb2acf71c
Implement more anim.lib Read functions ()
* Implement Read functions

* Add annotation
2024-02-18 21:31:29 +01:00
Christian Semmler
58482ff676
Bootstrap anim.lib ()
* Bootstrap anim.lib

* Fix order

* Fix LegoMorphKey
2024-02-18 18:43:42 +01:00
Joshua Peisach
35a566c243
Bike::Create, Bike::VTable0xe4 ()
* Bike::Create, Bike::VTable0xe4

* Readability

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-17 20:26:29 +01:00
Joshua Peisach
4a7ab43b45
Main HistoryBook function implementations ()
* Main HistoryBook function implementations

* fix names
2024-02-17 20:04:48 +01:00
Joshua Peisach
d71987b369
implement GasStation::Notify ()
* implement GasStation::Notify

* Fix code

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-17 18:23:09 +01:00
Christian Semmler
1d189b013d
Rename MxDSSubscriber functions () 2024-02-17 16:35:10 +01:00
Christian Semmler
332d8da695
Fix LegoROI / add TimeROI ()
* Fix LegoROI / add TimeROI

* Fix order

* Remove extra fwd decl
2024-02-17 16:07:34 +01:00
Christian Semmler
b47412183b
Implement/match LegoOmni::GetScriptIndex ()
* Implement/match LegoOmni::GetScriptIndex

* Fix type

* Fix
2024-02-17 02:10:42 +01:00
Christian Semmler
c67f613b8d
Implement/match LegoOmni::FindROI and related ()
* Implement/match LegoOmni::FindROI and related

* Add missing file
2024-02-17 01:34:30 +01:00
Christian Semmler
5b06054375
Implement/match RegisterPaths () 2024-02-17 00:25:32 +01:00
MS
ad3a1de055
Match more scalar deleting destructors () 2024-02-16 13:15:53 -05:00
Christian Semmler
9bc5890da6
Implement/match LegoOmni::RegisterScripts ()
* Implement/match LegoOmni::RegisterScripts

* Fix const
2024-02-16 18:12:45 +01:00
Christian Semmler
5d80733cb1
Implement/match Tgl::View::Render () 2024-02-16 16:28:20 +01:00
Joshua Peisach
efcb3cac2a
Police: HandleClick ()
* Police: HandleClick

* Spacing

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-16 15:53:17 +01:00
Joshua Peisach
91643d59ba
PoliceState: Create script enum + implement FUN_1005ea40 ()
* PoliceState: Create script enum + implement FUN_1005ea40

* Clean up code

* Match

* Match

* Fix type

* Fix error

* Remove return

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-15 17:22:58 +01:00
Nathan M Gilbert
271df035fd
Implement/Match JukeboxEntity ()
* Implement/Match JukeboxEntity

* Style/naming

* Style/naming

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-14 17:48:39 +01:00
MS
1b696e4bd8
reccmp: Unique addresses and stub reporting () 2024-02-13 20:25:51 -05:00
Joshua Peisach
eb3b339454
GasStation destructor, enable, create ()
* GasStation destructor, enable, create

* Fixes

* Remove comment

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-14 00:40:04 +01:00
MS
971ac8b6e7
LegoCacheSound and related STL ()
* LegoCacheSound and related STL

* Changes/annotations

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-14 00:34:14 +01:00
Misha
6d3ce3b5cb
implement RegistrationBook::Notify ()
* implement RegistrationBook::Notify

* Update registrationbook.cpp

* Fixes

* Change type

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-11 17:16:10 -05:00
Christian Semmler
5bba81c0ca
Rename Infocenterstate::m_buffer to m_letters ()
* Rename Infocenterstate::m_buffer

* Rename function

* Fix

* Fix

* Rename function

* Rename function

* Rename function
2024-02-11 10:44:55 -05:00
Misha
5233b48c59
Implement LegoModelPresenter::ParseExtra ()
* Implement LegoModelPresenter::ParseExtra

* rename function according to leaked source code

* Minor improvement

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-11 15:03:56 +01:00
Christian Semmler
a29c0aca3f
Implement/match LegoOmni::Create ()
* Implement/match LegoOmni::Create

* Fix var

* Rename

* Fix style
2024-02-11 02:52:16 +01:00
Misha
8786a5b44a
Add JetSkiRace vtable and CaveEntity classes from LegoObjectFactory ()
* Add JetSkiRace vtable

* Fix vtable

* Fixes

* Update jetskirace.cpp

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-11 00:44:00 +01:00
Christian Semmler
e42e0d1ca2
Replace more magic numbers 2024-02-09 07:10:47 -05:00
Christian Semmler
c8930815c5
Add LegoGameState::Area enum ()
* Add area enum

* Fix

* Fix

* Fix

* empty
2024-02-10 19:17:07 +01:00
Misha
0463d48540
implement NotifyEntity ()
* implement NotifyEntity

* Fix/match

* Rename

* Fix style

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-10 19:02:52 +01:00
Misha
f378b2e535
implement LegoWorldPresenter::ParseExtra () 2024-02-10 18:54:38 +01:00
Christian Semmler
27390e80c0
Name dialogue playlists ()
* Add names for dialogue playlists

* Rename remaining playlists

* Revert bogus
2024-02-10 17:51:56 +01:00
Christian Semmler
ec3bcaf9bf
Introduce and use enum for acts ()
* Introduce and use enum for acts

* Use enum in Helicopter

* Revert change
2024-02-10 17:37:22 +01:00
Misha
32681935ca
Partial implementation of LegoGameState::SwitchArea () 2024-02-10 15:36:01 +01:00
Misha
223b07ee3d
Implement LegoModelPresenter::ReadyTickle ()
* Implement LegoModelPresenter::ReadyTickle

* Update legoworld.h

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-10 00:41:35 +01:00
Nathan M Gilbert
84af3e2158
Match some names/values ()
* Match some names/values

* Fix mingw warning as error
2024-02-10 00:40:52 +01:00
Joshua Peisach
94c4576e8d
Implement Police::HandleEndAction ()
* Implement Police::HandleEndAction

* Style fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-09 16:28:22 +01:00
Christian Semmler
c17ef9a805
Implement rest of Infocenter::HandleClick () 2024-02-08 19:30:55 -05:00
Christian Semmler
897f9a3371
End LegoPhonemePresenter actions to prevent lockups 2024-02-06 17:53:35 -05:00
Christian Semmler
97de164a7f
Implement Infocenter::ReadyWorld ()
* Implement Infocenter::ReadyWorld

* Match

* Use TRUE
2024-02-07 21:23:35 +01:00
Daniel Hejduk
5e38a010dd
Removing unnecessary TODO comment in legoact2state.cpp ()
* Updating legoact2state.cpp

* Fixing format issues
2024-02-07 19:34:47 +01:00
Christian Semmler
a12fdadd4a
Implement/match Infocenter::StartCredits ()
* Implement Infocenter::StartCredits

* Match
2024-02-07 18:19:46 +01:00
Joshua Peisach
18dff31dbd
Children classes of LegoWorld's VTable0x5c () 2024-02-07 12:13:20 +01:00
Anonymous Maarten
ccb6223d70
Decompiled CONFIG.EXE executable ()
* mxdirectdraw: no need to explicitly add a terminating '\0' in C

* mxstopwatch must include LIMITS.H for ULONG_MAX

* Add Config app

* 88.78%

* style fixes

* Test more CONFIG things

* Add a few assertions on MFC classes

* reformat

* actionSSSSSSSSSSSSSSS

* actions again

* decomplint needed a shebang

* Fix annotations of Message Map entries

* ci: We're building CONFIG.EXE, not CONFIG.DLL

* remove ninja.exe

* Fix CAboutDialog::GetMessageMap annotation

* format reloaded

* Fix global CConfigApp object annotation

* trigger worflows

* ci: request at least python 3

* oops :)

* curl CONFIGPROGRESS-OLD.TXT will fail

* Forget about actions/setup-python (for now)

* Annotation fixes

* Config tweaks and MxDirect3d annotations

* It's important to compare against the correct file

* Introduce common CDialog parent for CAboutDialog and CMainDialog

* format

* Remove CSerializer

---------

Co-authored-by: disinvite <disinvite@users.noreply.github.com>
2024-02-07 12:11:45 +01:00
Misha
917485247b
implement Enable and Create in RegistrationBook () 2024-02-06 19:06:32 -05:00
Christian Semmler
03423b2ffa
Implement/match Infocenter::Reset ()
* Implement Infocenter::Reset

* Move code

* Move function

* Fix bug

* Fix another bug
2024-02-05 12:35:26 -05:00
Joshua Peisach
0497ef13fb
Implement Police::HandleKeyPress, Enable, VTable0x64 ()
* Implement Police::HandleKeyPress, Enable, VTable0x64

* fix return type

* Style

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-04 23:40:51 +01:00
Christian Semmler
b4c9d78eb4
Minor fixes 2024-02-04 12:44:51 -05:00
Christian Semmler
434deecee4
Implement/match remaining LegoWorld functions ()
* Implement/match remaining LegoWorld functions

* Move functions

* Move function

* Fix function location

* Fix function return type
2024-02-04 18:33:37 +01:00
Daniel Hejduk
d324fd664a
Implementing RegistrationBook::RegistrationBook() and removing this-> from Gasstation.cpp ()
* Implementing RegistrationBook::RegistrationBook()

* Update registrationbook.h

* Update registrationbook.h

* Removing this keyword

* TESTING: fixing the format errors

* Update registrationbook.cpp

* Update registrationbook.h

* Update registrationbook.h

* Update registrationbook.h

* Update registrationbook.h

* TEST fixing format errors

* Update registrationbook.h

* Update registrationbook.h

* Removing this-> from gasstation.cpp

* Fix outstanding issues, match function

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-04 16:36:47 +01:00
Anonymous Maarten
ac8ddca405
Implement mxdirectx stubs ()
* Implement MxDeviceEnumerate::SupportsMMX

* Implement MxDeviceEnumerate::EnumerateErrorToString

* fixes

* fixes

* Remove STUB from function

* Fix error messages

* Use return type int

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-04 15:46:15 +01:00
Joshua Peisach
724cdeb86f
Implement Police::Notify ()
* Implement Police::Notify

* Fix HandleKeyPress

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-03 22:30:00 +01:00
Christian Semmler
e68e25275f
Fix buffer exhaustion / audio glitches 2024-02-03 16:12:31 -05:00
Christian Semmler
f405ca51fc
Fix MXIOINFO::Advance 2024-02-02 22:17:10 -05:00
Christian Semmler
a131f89290
Fix MxDSBuffer::FUN_100c6fa0 2024-02-02 22:01:57 -05:00
Christian Semmler
f0ea8850c4
Match MxDSFile scalar ddtor, add annotations () 2024-02-03 17:33:22 +01:00
Misha
83e116defc
push changes () 2024-02-03 07:38:57 -05:00
Misha
2158142b08
Implement LegoSoundManager ()
* push code

* begin work on subclass

* fixes

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-03 02:16:57 +01:00
Anonymous Maarten
57d5949d84
Implement some Act1State functions ()
* 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 ()
* 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 ()
* Fix

* Match
2024-02-02 21:00:44 +01:00
Christian Semmler
b7e274f902
Implement LegoState::Playlist () 2024-02-02 20:09:45 +01:00
Christian Semmler
558bda4dd2
Implement LegoWorld::Enable ()
* 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 ()
* 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 ()
* 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 ()
* 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 96c4c65fedbc4102837f4bcbbb9ee83a7d14cba3.

* 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 () 2024-01-31 23:39:50 +01:00
Misha
9e0b19856c
Implement various infocenter functions ()
* 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 ()
* 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 ()
* WIP RadioState

* WIP

* WIP

* Implement/match Radio/RadioState

* Fix naming

* Use sizeof
2024-01-30 19:57:20 +01:00
Misha
743e042564
Finish MxControlPresenter ()
* 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 () 2024-01-29 23:30:20 +01:00
Christian Semmler
bcdddd4c7e
Pad all single-digit hexadecimal values with zero ()
* 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 () 2024-01-29 19:54:47 +01:00
Christian Semmler
96234ddc23
Implement/match MxStillPresenter::Clone ()
* Implement/match MxStillPresenter::Clone

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

* fixes

* Match

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-28 23:10:04 +01:00
Misha
4314d3e297
Implement LegoControlManager ()
* 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 ()
* 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 ()
* 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 () 2024-01-27 23:57:42 +01:00
Misha
d4cb8677b8
implement LegoInputManager register and unregister ()
* 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 ()
* 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 ()
* Implement/match LegoWorld::PresentersPending

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

* Match

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

* Fix comparison

* Match 100%
2024-01-27 16:10:09 +01:00
Christian Semmler
7b6ec235d8
Implement LegoWorld::Add ()
* 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 ()
* 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 ()
* RaceCar destructor

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-26 18:13:09 +01:00
Joshua Peisach
88fd1e658d
HelicopterState vtable ()
* 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 ()
* 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 ()
* 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 ()
* 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% () 2024-01-22 16:18:46 +01:00
Misha
05bc94f030
implement MxControlPresenter::ParseExtra ()
* 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 () 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 ()
* 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 ()
* 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 () 2024-01-20 20:23:23 -05:00
MS
b5a3c5feea
Enforce vtable match ()
* 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 ()

* Implement MxDisplaySurface::VTable0x44 ()

* 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 ()

* Implmement PoliceState::VTable0x1c

* Fixes

---------

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

* Implement Lego3DView::Render ()

* Implement Lego3DView::Render

* use MxDouble

* Revert "use MxDouble"

This reverts commit a006b60e2066b79ded3e15e143a302d8fd707deb.

* Begin work on Police class ()

* Begin work on Police class

* Use JukeBox::e_policeStation value

* Fixes

---------

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

* Implement MxDisplaySurface::CreateCursorSurface ()

* 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 ()
* 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 ()
* 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 ()
* Implement Lego3DView::Render

* use MxDouble

* Revert "use MxDouble"

This reverts commit a006b60e2066b79ded3e15e143a302d8fd707deb.
2024-01-20 21:43:53 +01:00
Joshua Peisach
46ad567760
Implmement PoliceState::VTable0x1c ()
* 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 ()
* 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 () 2024-01-20 12:41:22 -05:00
Misha
9a3df8d9f8
Implement various methods in InfoCenter folder ()
* 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 ()
* 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 () 2024-01-19 23:11:51 +01:00
Christian Semmler
1c4f772a82
Implement/match MxOmni::ActionSourceEquals () 2024-01-19 23:06:39 +01:00
MS
ee7241f73d
GifManager: use STL members ()
* 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 ()
* 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 ()
* 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 ()
* WIP

* Match

* Fix flic.lib

* Add source assembly

* Rename variable
2024-01-19 15:01:57 +01:00
Ramen2X
578e48ce52
implement/match InfoCenter::~InfoCenter() () 2024-01-18 21:00:55 -05:00
Misha
61dd687f53
Implement InfoCenter folder vtable stubs ()
* 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 () 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 ()
* 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 ()
* 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 () 2024-01-17 16:24:22 -05:00
Misha
c0af1dbac4
implement LegoOmni::FUN_1005b4f0 ()
* 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 ()
* 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 ()
* 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 ()
* 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 ()
* 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 ()
* 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 ()
* 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 ()
* 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 ()
* Add LegoEntityList

* Add MxCoreList, match LegoWorld::Create
2024-01-15 21:44:04 +01:00
Misha
6df310bb66
Implement LegoWorldPresenter::VTable0x60 ()
* 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 ()
* 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 ()
* 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 ()
* 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 ()
* push changes

* fix

* rename file
2024-01-14 23:00:03 +01:00
Joshua Peisach
763fcf8980
ElevatorBottom ctor/dtor ()
* 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 () 2024-01-14 22:49:11 +01:00
MS
7e9d3bde65
Reccmp: Use symbol names in asm output ()
* 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 ()
* 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 ()
* LegoActorPresenter

* Add ddtor

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-13 23:06:13 +01:00
Misha
5b8ea35756
Implement Isle::VTable0x50 ()
* 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 ()
* 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 () 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 () 2024-01-13 09:32:45 -05:00
Christian Semmler
d24f5db42f
Matrix/vector refactor () 2024-01-12 19:34:38 -05:00
Misha
eac096036a
implement LegoModelPresenter::Destroy ()
* LegoModelPresenter::Destroy

* remove debug print

* Update legomodelpresenter.cpp
2024-01-12 23:30:50 +01:00
Misha
3c0bf7191c
implement LegoWorldPresenter deconstructor ()
* 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 ()
* 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 ()
* 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 () 2024-01-10 23:40:24 +01:00
Anonymous Maarten
b996fff6fa
Support building isle with modern MSVC + msys2 ()
* 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 ()
* 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 ()
* 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 ()
* 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 () 2024-01-08 12:45:07 +01:00
Christian Semmler
c47206617d
Reorganize sources and files ()
* 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 () 2024-01-07 17:03:04 -05:00
Anonymous Maarten
fbe7f8bbb0
Fix all mingw errors & warnings ()
* 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 () 2024-01-07 18:07:22 +01:00
Christian Semmler
8db36722d8
Implement/match Lego3DView and parent classes ()
* 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 ()
* 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 ()
* 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 ()
* 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 ()
* 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 ()
* legomodelpresenter vtable

* Update legomodelpresenter.cpp

* Update legomodelpresenter.cpp
2024-01-04 20:01:04 -05:00
MS
ce68a7b1f4
Reccmp comparison engine refactor ()
* 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 () 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 ()
* Implement/match MxDirect3D::D3DSetMode

* Match
2024-01-04 22:16:16 +01:00
Misha
a899b06f5a
implement MxDirect3D::GetZBufferDepth ()
* 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 ()
* 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 ()
* 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 ()
* 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 ()
* WIP

* WIP

* WIP

* WIP

* WIP

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

* Update skip
2024-01-03 18:50:25 +01:00
Christian Semmler
106dd7cebc
Implement/match display mode enumeration ()
* 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 ()
* 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 () 2024-01-02 19:32:01 +01:00
Joshua Peisach
3f2fac72e4
Hospital ctor ()
* 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 ()
* 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 ()
* 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() ()
* 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 ()
* 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 ()
* Implementation of MxVideoPresenter::PutFrame

* Add TODOs
2023-12-29 16:30:17 -05:00
Misha
ceb5339369
Infocenter vtable ()
* 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 ()
* 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 ()
* Implement/match MxRegionCursor class

* Rename function
2023-12-29 05:37:21 +01:00
MS
3f63950a7d
Fix new/delete symbol reference () 2023-12-28 18:02:02 -05:00
MS
9a6d555508
Cvdump parser and comparing library functions ()
* 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 ()
* 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 ()
* 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 () 2023-12-28 17:46:12 +01:00
Christian Semmler
e3488498f9
Implement/match MxDiskStreamController destructor () 2023-12-28 17:19:40 +01:00
Misha
4d7968c7af
implement LegoWorldPresenter::StartingTickle () 2023-12-27 16:05:21 -05:00
MS
bcb7bec68b
Improve handling of variables for decomp parser ()
* 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 ()
* 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 ()
* 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 ()
* 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 ()
* 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 ()
* CarRace ctor

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-12-27 19:27:02 +01:00
Misha
5a1ba02772
implement LegoWorldPresenter::StartAction () 2023-12-27 16:31:06 +01:00
Christian Semmler
ac6eb28dc4
Implement/match MxStreamer::DeleteObject () 2023-12-27 03:17:20 +01:00
Christian Semmler
6e947c3789
Implement/match MxStreamController::FUN_100c20d0 ()
* 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 ()
* 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 () 2023-12-27 02:33:53 +01:00
Misha
59d999f6dc
LegoWorldPresenter vtables ()
* 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 ()
* push changes

* push changes

* fix

* Update legoracecar.h
2023-12-26 18:10:28 -05:00
Misha
22d72893f9
Finish LegoEntityPresenter ()
* 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 ()
* 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 ()
* 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 ()
* 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 ()
* 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 ()
* 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 ()
* 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 ()
* 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 () 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 ()
* 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 ()
* 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 ()
* Implement/match MxLoopingSmkPresenter

* Rename variable

* Rename variable
2023-12-22 20:05:42 +01:00
Misha
e22ad6031c
More MxDiskStreamController functions ()
* 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 ()
* Finish implementation of MxSmack

* Fix var name
2023-12-22 07:26:54 -05:00
Christian Semmler
c51aed256b
Implement/match MxSmack::LoadFrame () 2023-12-22 03:11:14 +01:00
Misha
6d0d308c37
Add unknown render class stub ()
* 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 ()
* 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 ()
* 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 ()
* 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 ()
* Refactor MxPtrList to use p_ownership

* Remove class names
2023-12-21 02:09:05 +01:00
Christian Semmler
db60467ba3
Bootstrap MxSmack ()
* 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 ()
* 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 () 2023-12-17 18:28:11 +01:00
Misha
20daddde32
implement MxDSBuffer object creation ()
* 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 ()
* 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 ()
* 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 ()
* Implement/match rest of MxCompositeMediaPresenter

* Fix annotation
2023-12-16 16:59:01 +01:00
Misha
76b4edaa9e
AmbulanceMissionState/AnimState constructors ()
* 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 ()
* 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 ()
* 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 ()
* 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 ()
* Implement/match MxCompositeMediaPresenter::StartAction

* Add missing override
2023-12-15 16:22:07 +01:00
Misha
53caf30ab0
Isle & Radio constructors () 2023-12-15 00:24:21 +01:00
Nathan M Gilbert
deaed23e41
Implement Helicopter ()
* 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 ()
* 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 () 2023-12-13 17:30:34 -05:00
Misha
403b3dddb4
Implement MxDiskStreamController::VTable0x20 ()
* 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 ()
* Bootstrap MxCompositeMediaPresenter

* Fixes
2023-12-13 13:53:17 +01:00
Christian Semmler
fd656eacdc
Implement/match rest of MxCompositePresenter ()
* 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) ()
* 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 ()
* 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 ()
* 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 () 2023-12-11 16:33:46 -05:00
Misha
3b30607337
implement a few mxstreamercontroller vtables ()
* 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 ()
* 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 ()
* 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 ()
* Implement/match most of MxStillPresenter

* Fix merge
2023-12-07 13:13:31 +01:00
Mark Langen
260772e374
Bootstrap decomp of Tgl rendering library ()
* 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 ()
* 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 ()
* 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 d87d665127fae7dd6e5bd48d9af14a0a829bf9e2.

* Revert "FUNCTION to SYNTHETIC where needed"

This reverts commit 8c815418d261ba8c5f67a9a2cae349fe4ac92db8.

* 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 () 2023-12-01 05:59:32 -05:00
Joshua Peisach
f7dcdf9894
MxFlcPresenter vtable70, m_unk64 ()
* 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 () 2023-11-28 14:26:39 +01:00
Christian Semmler
10062d2b28
Return type of PutData is MxResult ()
* Return type of PutData is MxResult

* Remove out.html
2023-11-26 15:03:40 +01:00
Christian Semmler
d46f2e094b
Bootstrap MxStillPresenter () 2023-11-25 20:08:10 +01:00
Christian Semmler
fb0d1ccb62
Implement/match MxLoopingMIDIPresenter ()
* 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 () 2023-11-24 12:21:26 -05:00
Christian Semmler
db77350169
(clang-format) Add EmptyLineBeforeAccessModifier () 2023-11-24 12:10:09 -05:00
Christian Semmler
1d3ce6b0aa
Implement/match remaining MxWavePresenter functions ()
* 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 ()
* 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 () 2023-11-22 02:54:08 -05:00
Misha
343b0ff3cb
LegoActionControlPresenter functions ()
* 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 ()
* 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 ()

* 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 ()
* 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 () 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 ()
* 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 ()
* MxFlcPresenter: vtable70

* Fix function

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-11-19 13:28:06 +01:00
MS
0bb3ea6a03
MxList refactor ()
* 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 ()
* 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 ()
* 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 ()
* 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 () 2023-11-14 12:10:43 -08:00
DmitriLeon2000
e86d6f0cc7
Marking LegoOmni::Notify as STUB () 2023-11-13 13:21:58 +01:00
Christian Semmler
ba82821501
Implement/match MxMediaPresenter::Tickle and related ()
* 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 ()
* Bootstrap MxMediaPresenter

* Implement/match MxMediaPresenter::EndAction

* Merge

* Remove garbage
2023-11-13 11:22:58 +01:00
MS
8861acaf20
Refactor MxHashTable/MxVariableTable ()
* 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 ()
* LegoTexturePresenter destructor and AddToManager

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

* Add override
2023-11-12 13:47:01 +01:00
Joshua Peisach
e2f2ef6152
MxControlPresenter: destructor and ReadyTickle () 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 ()
* 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 () 2023-11-07 14:00:00 +01:00
MS
7834f18999
MxQueue and parts of LegoInputManager ()
* 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 ()
* 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 ()
* Match MxRegionTopBottom::FUN_100c5280

* Resolve OtherAppend/Append

* Remove old code
2023-11-06 14:04:51 +01:00
Misha
a8254c048d
Implement more of LegoOmni ()
* 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 ()
* 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