Commit graph

118 commits

Author SHA1 Message Date
Misha
9256554406
Implement LegoCameraController::Notify & TimeROI::FUN_100a9b40 (#707)
* 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
Misha
eaa935f646
Finish LegoVariables class (#698)
* 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
Christian Semmler
0a4db65b24
Implement/match Isle::Enable (#681)
* Implement/match Isle::Enable

* Fix order
2024-03-16 19:20:44 +01:00
Christian Semmler
70e8796af3
Implement/match LegoEntity::VTable0x3c (#680) 2024-03-16 03:20:44 +01:00
Nathan M Gilbert
d07d7edc81
Implement methods to load dta files. (#673)
* 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
Christian Semmler
10ae05a888
Add missing size assert 2024-03-15 16:35:28 +01:00
Christian Semmler
0e146f08d6
Implement/match LegoNavController::CalculateNewPosDir (#675)
* Implement/match LegoNavController::CalculateNewPosDir

* Fix naming

* Fix naming
2024-03-15 16:33:32 +01:00
Christian Semmler
7edad07d18
Implement/match LegoEntity::GetWorldPosition/Direction/Up (#672)
* Implement/match LegoEntity::GetPosition/Direction/Up

* Rename
2024-03-13 20:29:28 -04:00
Christian Semmler
0f2aee1849
Implement/match LegoPointOfViewController::SetEntity (#668)
* Implement/match LegoPointOfViewController::SetEntity

* Fix order
2024-03-13 19:03:30 +01:00
Christian Semmler
0623e6a766
Implement/match LegoPointOfViewController::Tickle (#667) 2024-03-13 18:46:20 +01:00
MS
e3d7188ec9
Use AUTOLOCK macro (#660)
* 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
Christian Semmler
d090b449d1
Add CalcWorldBoundingVolumes (#651) 2024-03-10 15:29:16 +01:00
Christian Semmler
8069923651
Refactor files based on beta debug build (#645)
* 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
6fa4a0dbec
Implement/match LegoPartPresenter::Store (#643) 2024-03-09 19:03:21 +01:00
Christian Semmler
9e2f37e7ca
Implement LegoTexturePresenter::Read and Store (#641)
* LegoTexturePresenter::Read

* Implement LegoTexturePresenter::Store

* Rename

* Fix naming
2024-03-09 16:49:13 +01:00
Christian Semmler
a12146f52f
Implement/match LegoEntity::VTable0x34 (#633)
* 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 (#632)
* Implement/match LegoEntity::SetWorldTransform and ResetWorldTransform

* Add param name
2024-03-06 19:25:45 +01:00
Christian Semmler
a93e2ae0d3
Implement/match LegoEntity::SetLocation (#629)
* Implement/match LegoEntity::SetLocation

* Remove comment
2024-03-05 20:31:57 +01:00
Christian Semmler
3b2bd0e9d4
Implement/match LegoEntity::SetROI (#628) 2024-03-05 19:35:28 +01:00
Christian Semmler
c9210c02fb
Bootstrap LegoLOD, implement/match ViewManager::FUN_100a66a0 (#625)
* Bootstrap LegoLOD, implement/match ViewManager::FUN_100a66a0

* Fixes

* Try fix

* Try this

* Fix
2024-03-04 22:57:35 +01:00
Christian Semmler
d3b575169e
Implement/match LegoModelPresenter::FUN_1007ff70 (#622) 2024-03-04 18:26:36 +01:00
Misha
c2a46b058b
implement various LegoWorldPresenter functions (#621)
* 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
Christian Semmler
01f07a323c
Implement ModelDb (WDB reader/parser) (#619)
* WIP Read WDB

* Fixes

* WIP

* WIP

* WIP

* WIP

* Match

* Match

* Fix Compare

* Rename member
2024-03-03 21:35:56 +01:00
Christian Semmler
de5cd98b76
Implement/match ViewManager::RemoveAll (#616)
* 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 (#615) 2024-03-02 19:40:42 +01:00
Christian Semmler
fb6eed9bff
Match StartAction functions, remove NextFragment (#610) 2024-03-01 19:07:07 +01:00
Christian Semmler
49d6c88912
Match ParseExtra functions (#605)
* Match ParseExtra functions

* Match MxStillPresenter::ParseExtra

* Match remaining ParseExtra functions
2024-02-29 19:15:20 +01:00
Nathan M Gilbert
4d84157888
Implement Save, Load, DeleteState (#602)
* 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
Nathan M Gilbert
124b73046b
Continued work on LegoGameState (#596)
* Continued work on LegoGameState

* Fixes/matches/refactor

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-26 17:19:16 +01:00
Nathan M Gilbert
13fc4e3285
LegoGameState::SwitchArea (#590) 2024-02-24 14:55:00 +01:00
Joshua Peisach
51520aaae6
LegoActor: destructor, SetROI (#588)
* LegoActor: destructor, SetROI

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-23 18:51:49 +01:00
Christian Semmler
58482ff676
Bootstrap anim.lib (#577)
* Bootstrap anim.lib

* Fix order

* Fix LegoMorphKey
2024-02-18 18:43:42 +01:00
Christian Semmler
332d8da695
Fix LegoROI / add TimeROI (#572)
* 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 (#571)
* Implement/match LegoOmni::GetScriptIndex

* Fix type

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

* Add missing file
2024-02-17 01:34:30 +01:00
Misha
f378b2e535
implement LegoWorldPresenter::ParseExtra (#551) 2024-02-10 18:54:38 +01:00
Misha
223b07ee3d
Implement LegoModelPresenter::ReadyTickle (#546)
* Implement LegoModelPresenter::ReadyTickle

* Update legoworld.h

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-02-10 00:41:35 +01:00
Christian Semmler
434deecee4
Implement/match remaining LegoWorld functions (#526)
* Implement/match remaining LegoWorld functions

* Move functions

* Move function

* Fix function location

* Fix function return type
2024-02-04 18:33:37 +01:00
Christian Semmler
558bda4dd2
Implement LegoWorld::Enable (#516)
* WIP VTable0x68

* Improve match

* Match

* Fix

* Fix

* Move vars

* Match

* Add call to Isle

* Rename functions

* Fix style
2024-02-02 18:18:46 +01:00
Anonymous Maarten
9e686e2a87
cmake+ci: run clang-tidy (#512)
* cmake+ci: run clang-tidy

* Remove DESCRIPTION from LEGO1/LegoOmni.mingw.def

* Add initial .clang-tidy and fixes

* fix file perms

* Comment out DESCRIPTION

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

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

* Update .clang-tidy

* Fix typo in .clang-tidy

* Attempt to generate an action error

* Revert "Attempt to generate an action error"

This reverts commit 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
Christian Semmler
19c771b85d
Implement/match LegoWorld::PresentersPending (#494)
* Implement/match LegoWorld::PresentersPending

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

* Match

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

* Fix comparison

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

* Add annotations

* Fix include guard

* Make stub

* Change MxPresenterSet to MxCoreSet

* Improve match

* Match

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

* Rename lists

* Rename cursors

* Rename cursor

* Rename functions

* Remove a comment

* Rename more functions

* Fix return type
2024-01-26 22:00:02 +01:00
Christian Semmler
a3868e3808
Implement/match LegoWorld::FUN_10021790 (#486)
* Implement/match LegoWorld::FUN_10021790

* Improve match

* Match

* Specify python package versions

* Use wildcard version

* Use const atom

* Use const atom
2024-01-26 18:03:29 +01:00
MS
a19165a749
LegoWorld::LegoWorld to 100% (#480) 2024-01-22 16:18:46 +01:00
Misha
7b0d4dd502
Implement Infocenter::InitializeBitmaps (#478) 2024-01-21 18:38:22 +01:00
MS
b5a3c5feea
Enforce vtable match (#464)
* vtable enforce

* Vtable progress

* IslePathActor subclasses

* LegoState subclasses

* LegoWorld subclasses

* Presenter progress

* Remaining presenters

* All but two that need new files

* Merge into vtable branch (#3)

* Implement MxDisplaySurface::VTable0x44 (#467)

* Update mxdisplaysurface.cpp

* add arguments to header

* Fix glitched bitmaps

* WIP fixes

* Match

* Fix

* Changes

* Fixes

---------

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

* Implmement PoliceState::VTable0x1c (#468)

* Implmement PoliceState::VTable0x1c

* Fixes

---------

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

* Implement Lego3DView::Render (#470)

* Implement Lego3DView::Render

* use MxDouble

* Revert "use MxDouble"

This reverts commit a006b60e2066b79ded3e15e143a302d8fd707deb.

* Begin work on Police class (#469)

* Begin work on Police class

* Use JukeBox::e_policeStation value

* Fixes

---------

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

* Implement MxDisplaySurface::CreateCursorSurface (#471)

* Update mxdisplaysurface.cpp

* Fixes

* Update legovideomanager.cpp

* Match to 100%

---------

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

---------

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

* Police fix

* Finish

* motocycle lower case

* Update historybook.h

* Update hospitalstate.h

* Update jetski.h

* Update legoinputmanager.h

* Update legolocomotionanimpresenter.h

* Update pizza.h

* Update act3shark.h

* Update ambulancemissionstate.h

* Update bumpbouy.h

* Update doors.h

---------

Co-authored-by: Misha <106913236+MishaProductions@users.noreply.github.com>
Co-authored-by: Christian Semmler <mail@csemmler.com>
Co-authored-by: Joshua Peisach <itzswirlz2020@outlook.com>
2024-01-20 18:04:46 -05:00
Misha
61dd687f53
Implement InfoCenter folder vtable stubs (#456)
* Implement InfoCenter vtable stubs

* fix build

* Update infocenterdoor.cpp

* Update infocenterdoor.cpp

* Update legoworld.h

* Update elevatorbottom.h

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-18 20:24:15 -05:00
Misha
c0af1dbac4
implement LegoOmni::FUN_1005b4f0 (#450)
* push changes

* push changes

* fixes

* Changes

* Use proper values

* Name vtable function

---------

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

* Minor style updates/fixes

---------

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

* fixes

* Implement Infocenter::HandleEndAction

* match Infocenter::StopCutScene

* implement Infocenter::HandleKeyPress

* fixes

* Update infocenter.cpp

* Update legoworld.cpp

* use enums

* WIP Fixes

* Fix

* Fix

* Fix

* Rename function

* Change enum

* Update enums

* Refactor another enum

* Refactor MxDSType

* Refactor HashTableOpt

* Fixes

* Refactor tickle enum

* Update other enums

* Add EnumConstantName to ncc

* Move enum to global namespace

* Rename enum

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-17 17:53:53 +01:00
Christian Semmler
6af0c6cb1a
Implement/match a few LegoEntity functions (#445)
* Implement/match a few LegoEntity functions

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

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

* Update infocenter.cpp

* Minor adjustments

---------

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

* Decomp marker corrections

* Fix a few annotations

* Fix IslePathActor dtor

* Fix audio presenter

* Fix LegoEntity::Create

* Fix Pizza and related

* Fix path part

* Add missing annotations

* Add missing annotations

* Add more missing annotations

* Fix MxNotificationParam

* More fixes

* More fixes

* Add missing annotations

* Fixes

* More annotations

* More annotations

* More annotations

* More annotations

* Fixes and annotations

* Find imports and thunk functions

* Fix more bugs

* Add some markers for LEGO1 imports, fix SIZE comment

* Add more annotations

* Rename annotation

* Fix bugs and annotations

* Fix bug

* Order

* Update legoanimpresenter.h

* Re-enable print-rec-addr option

---------

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

* Add ddtor

---------

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

* Update legoworld.cpp

* Update legoworld.cpp

* Minor style fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-13 21:00:11 +01:00
Christian Semmler
d24f5db42f
Matrix/vector refactor (#426) 2024-01-12 19:34:38 -05:00
Misha
3c0bf7191c
implement LegoWorldPresenter deconstructor (#425)
* Implement LegoWorldPresenter::~LegoWorldPresenter

* Rename incorrect function name

* fixes

* Rename functions

* fix format
2024-01-12 23:27:07 +01:00
Christian Semmler
516e16faf6
Further clean up Omni/LegoOmni separation (#423)
* Fix inline functions

* Whitespace

* Try this

* Fix MxEntity

* Further fixes

* Move main out

* Replace tickle code
2024-01-11 16:02:55 +01:00
Anonymous Maarten
b996fff6fa
Support building isle with modern MSVC + msys2 (#421)
* cmake: detect older MSVC and define ENABLE_DECOMP_ASSERTS to enable decomp asserts

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

* Silence deprecated CRT releated warnings

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

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

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

* Implement empty ViewLODList::Dump method

* Also enable "compat mode" for newer MSVC compilers

* Only do decomp assertions when using older MSVC compilers

* msys2 mingw compat (cannot pass reference of rvalue)

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

* Add FIXME comment to LEgo3DView::m_previousRenderTime

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

* include string.h for strlen

* Fix overrides

* Fix constness of method

* Fixes

* Formatting

* Add size assert for MxFrequencyMeter

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

* Set vcvars for msvc

* msys2 needs the msys2 shell

* Build in default shell

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

* Print bitness

* Use amd64_x64 cross tools

* Minor updates

* Add more names

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-10 23:34:32 +01:00
Misha
58085df6b0
Implement most of LegoCameraController (#419)
* Implement LegoCameraController subclasses

* Update legopovcontroller.cpp

* fixes

* Update legocameracontroller.cpp

* fix naming conventions

* Update legopointofviewcontroller.h

* Update legopointofviewcontroller.h

* Fixes

* Match LegoPointOfViewController::Create

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-09 10:43:21 +01:00
Christian Semmler
c47206617d
Reorganize sources and files (#414)
* Reorganize sources

* Refactor

* Remove relative paths

* Renames

* Fix gitignore

* Remove stuff

* Try fixing format script

* Fix format

* Fix format

* Fix naming script

* Test format

* Fix format
2024-01-08 10:58:49 +01:00