Commit graph

540 commits

Author SHA1 Message Date
Christian Semmler
855e548516
Make comparison more obvious 2024-01-07 21:23:09 -05:00
Christian Semmler
569d8ace96
Fix actions not ending 2024-01-07 20:55:32 -05:00
Christian Semmler
091ecd5935
Move some classes to LegoOmni (#417) 2024-01-08 12:45:07 +01:00
Christian Semmler
c47206617d
Reorganize sources and files (#414)
* Reorganize sources

* Refactor

* Remove relative paths

* Renames

* Fix gitignore

* Remove stuff

* Try fixing format script

* Fix format

* Fix format

* Fix naming script

* Test format

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

* MxOmni::m_timerRunning is a MxBool

* MxDirect3D::m_unk0x88c is a MxBool

* MxBackgroundAudioManager::m_unk0x13c is a MxS32

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

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

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

* Use `FALSE` for m_timerRunning

* Format

* Format

* Remove comment

* Limit scope for variables in compat mode

* clang-format

---------

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

* Implement/match LegoView/1

* Lego3DView

* Fixes

* Lego3DManager

* Remove garbage

* Remove garbage

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

* Rename smack files to lowercase

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

* cmake: dxguid must come after dinput

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

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

* g_mcoreCount seem to be signed integers

* LegoCameraController: return references to static data in stub functions

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

* Override MxAtomId::operator!=

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

* Fix template functions for mingw

* iterator object is used after the for loop

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

* Add stub ViewLODListManager::Lookup

* Fixes

* Format

* Remove unnecessary COMPAT_CONST use

---------

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

* Match

* Remove duplicate annotations

* Add missing annotations

* Rename list functions

* Fix

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

* Fix name

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

* Update mxactionnotificationparam.cpp

* Match to 100%

---------

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

* Update legomodelpresenter.cpp

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

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

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

* Match

---------

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

* WIP

* WIP

* Rename class

* Rename vars

* Rename function

* Rename

* Rename flag

* Fix deletion of modeArray

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

* Fixes

---------

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

* WIP

* Implement/match most remaining MxDirect3D device enumeration functions

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

* WIP

* WIP

* WIP

* WIP

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

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

* Improve match of EnumDirectDrawCallback

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

* Change type

* Annotate copy ctor

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

* Remove padding

---------

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

* Match

* Changes

* Fix format

* Style fixes

* Update naming.yml

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

* Fixes

* Fixes

* Fixes

* Remove comments

* Create native palette in LegoVideoManager

* Improvements

* Improvements

* Improvements

* Improvements

* Improvements

* Improvements

* Improvements

* Improvements

* Fixes

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

* Add Counting functions, more on SetPalette

* Finish base implementation of SetPalette and begin cleanup

* clang-format

* Fixes/improvements

* Format

* Fix naming

---------

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

* Adjustments to MxRect32

* Spacing

* Changes

* Spacing

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

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

* Update infocenter.cpp

* Update infocenter.cpp

* Update infocenter.cpp

* Update infocenter.cpp

* Update infocenter.cpp

* Match LegoWorld::Tickle

---------

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

* Update legoutil.cpp

* Fixes / match

---------

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

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

* Remove 'Self' type int (3.11+)

* Add temp reference for entrypoints

* ISLE using multithreaded libc

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

* Use parent class call

---------

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

* Update lego3dview.cpp

* fix

* fixes

* fix wrong vtable address

* Fixes/matches

* Fix Lego3DView

* Use undefined

* More fixes

* Rename

* Rename pad

* Add blank line

* Delete stuff

---------

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

* String constants annotated with STRING

* fix variable name

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

* Update legopalettepresenter.cpp

* Update legopalettepresenter.h

---------

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

* Add member offsets in HospitalState header

* Remove unhelpful comment

---------

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

* Fixes

---------

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

say that 5 times fast

* Fixes

---------

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

* Fixes

---------

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

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

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

* fixes

* fix

* formatting

---------

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

* push changes

* fix

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

* Finish LegoEntityPresenter::ReadyTickle

* Update legoentitypresenter.h

* use empty

* Formatting

---------

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

* fixes

* Fixes

* Add annotations

---------

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

* fix format

* param name fix

* rename functions

* match MxStreamController::RemoveSubscriber

* implement rest of MxDSBuffer

* Fixes and better matches

* Matche ParseChunk 100%

* Match MxDiskStreamProvider::VTable0x20

* Match MxDSBuffer::CalcBytesRemaining

* Minor stuff

* Minor improvements

* Refactor functions

---------

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

* Fixes

---------

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

* improve match of SwapBuffers

* rename function

* Improve match of MxDSBuffer::FUN_100c67b0

---------

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

* further debugging and fixes

* add more functions

* Update mxdiskstreamprovider.cpp

* fix build

* implement MxDiskStreamProvider::PerformWork

* Update mxdiskstreamprovider.cpp

* Update mxdiskstreamprovider.cpp

* Update mxdssource.h

* remove debug prints

* Update mxdiskstreamprovider.cpp

* Mostly match MxDiskStreamController::FUN_100c8540

* Mostly match MxDiskStreamProvider::FUN_100d1780

* Mostly match MxDiskStreamProvider::PerformWork

* Fixes

* Retype some members

* Various annotations

---------

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

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

* naming conventions

* Fixes

---------

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

* Fix MxRAMStreamController::VTable0x20 match

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

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

* Rename variable

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

* remove accidently commited code

* Update mxstreamcontroller.cpp

* implement MxDiskStreamController::VTable0x30

* implement MxDiskStreamController::VTable0x28

* Update mxdiskstreamcontroller.cpp

* FUN_100c7d10 & FUN_100c8360

* fix format

* Match MxDiskStreamController::FUN_100c7980

* Improve match of MxDiskStreamController::VTable0x28

* Match MxDiskStreamController::FUN_100c7d10

* Minor style fix

---------

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

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

* fix format

* rename the class

* Update MxUnknown100dbdbc.cpp

* rename class

* fix clang format

* Remove accidently committed code

* Update LEGO1/legoomni.cpp

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

* fix

* fix 2

---------

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

* Minor fixes

---------

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

* Fix include guard

* Update mxregion.cpp

* Match MxRegion::VTable0x18

* Fix

* Fix matches

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

* Match MxDisplaySurface::FUN_100ba640

* Match LegoVideoManager::EnableFullScreenMovie

---------

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

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

* Add comment about incorrect structure

* Fix naming

* Fix name

* Add a comment about SDK

* Add names from Smacker SDK

* Use SMACK.LIB and interface

* Use RAD.H defined types

* Use different commets

* Fix member offset

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

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

* Update mxstreamcontroller.cpp

* fix build

* MxStreamChunk

* fix format

* Match functions

* Add a comment

---------

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

* fix build

* Update mxstreamcontroller.cpp

* fixes + improve match

* Update mxomni.cpp

* Update mxdsobject.h

* improve match

* Update mxactionnotificationparam.h

* MxOmni::HandleActionEnd

* fixes

* Update LEGO1/mxstreamer.cpp

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

* A bunch of fixes

---------

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

* Match Isle::Notify

---------

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

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

* Update animstate.h

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

* fix

* Update isle.cpp

* add notify + fix typo

* Update legoutil.h

* Match Isle::Create

---------

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

* fix order

* fix naming convention

* Update legogamestate.cpp

* fix

* Add stub ScoreStruct

---------

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

* Add changes

---------

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

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

* Fix names

* Fix some issues

* Disable warning

---------

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

* Fix formatting

* fix naming conventions

* use no parameter name for FUN_100c67b0

* fixes

* fixes

* Update mxramstreamcontroller.h

* fix build
2023-12-13 18:11:07 -05:00
MS
5f8e26fc5b
Use relocation table with reccmp (#327) 2023-12-13 17:30:34 -05:00
Misha
403b3dddb4
Implement MxDiskStreamController::VTable0x20 (#325)
* push code

* fixes

* Update mxdiskstreamcontroller.h

* Update mxdsstreamingaction.h

* Match MxDiskStreamController::VTable0x20

* Move declaration

* Remove cast

---------

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

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

* Use parameter to `DeleteAll` instead of separate function

* StartAction match

* Implement/match rest of MxCompositePresenter

* Move annotation

* Add parameter name

* Merge

* Remove junk

* Move annotation

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

* Add symlink

* Fixes

* Try this

* Try this

* Try this

* Try this

* Add include path

* Update style

* Update style

* Add more rules

* Fix style

* Update styles

* Fix name parameter

* Fix MxParam p

* Fix m_unk0x pattern

* Allow 4 digits for relative hex

* Add missing offset

* Fix some parameters

* Fix some vtables

* Fix more vtables

* Update rules, fixes

* More fixes

* More fixes

* More fixes

* More fixes

* More fixes

* More fixes

* More fixes

* Fix last issue

* Update readme

* Update readme

* Update CONTRIBUTING.md

* Fix annotations

* Rename

* Update CONTRIBUTING.md

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

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

* Adjust `README.md`

* Relocate annotation

* linter

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

* type hint compat

* Rename github action, better argparse for linter

* Type hints, working test for byname ignore

* Move annotation

* CI rename and enable warnfail, enforce mode always on

* Two step linting

* or one step

* continue on error

* two jobs instead

* Fixes

---------

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

* Use parameter to `DeleteAll` instead of separate function

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

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

* Remove newline

* Fix script

* Patch C2.EXE to disable C4786 warning

* Delete compile.cmd

* py-fixes

* Update tools/patch_c2.py

* Update tools/patch_c2.py

---------

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

* Refactor list cursors

* Add decomp markers for list cursors

* Fix decomp markers

* MxRegionListCursor edit to prevent accuracy drop

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

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

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

* High level overview:

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

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

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

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

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

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

* Formatting

* Restructure changes using Tgl naming / details

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

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

* Move d3drm link requirement

* Fixups FloatMatrix -> FloatMatrix4

* Fix order

* Full fix for ordering problems

* Put back accidentally removed include.

* Fix call which should have been Release

* Use new and delete for DeepClone

* Missing Tgl:: on CreateRenderer

* Revert change to bool return value.

* Rename Something -> Unk

* Return paramter naming convention to what Tgl used

* Add scalar ddtor to verify inline destructor

* Fix order

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

* Remove duplicate destructor.

* Check all inline destructors

* Fix dtor comments

* Third time's the charm

* Alphabetical sort

* Decomp adjustments

* Add d3drm files to clang-format

---------

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

* Remove MxUnkList

* Use TickleState_Idle

* Add all annotations

* Add vtable

* Add Notify

* Update mxcompositepresenter.h

* Remove extra TEMPLATE

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

* Fix a comment

* Fix accidental clang-formatting

* Fix order

* Fix order

* Remove junk

* Fix OFFSET

* Adjustments based on new suggestions

* Annotate globals

* Globals in ISLE

* More globals

* Merge from parser2 branch

* Allow prepending space for exact marker match

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

* fix test from previous

* Count tab stops for indented functions to reduce MISSED_END_OF_FUNCTION noise

* FUNCTION to SYNTHETIC where needed

* Missed marker conversion on SetAtomId

* pylint cleanup, remove unused code

* Fix unexpected function end, add more unit tests

* Be more strict about synthetic name syntax

* Revert "Missed marker conversion on SetAtomId"

This reverts commit 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 (#306) 2023-12-01 05:59:32 -05:00
Joshua Peisach
f7dcdf9894
MxFlcPresenter vtable70, m_unk64 (#304)
* MxFlcPresenter: vtable70

* begin work on MxFlcPresenter's m_unk64

* Add another function that makes use of the FLIC header

* Remove space

---------

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

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

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

* Name m_unk65

* Match WriteToSoundBuffer

* Remove header

* Match StreamingTickle

* Name more variables

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

* fix function ordering

* Fix it all

---------

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

* fix formatting

* fix format

* Fixes

* Fix order

---------

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

* More flexible match on module name. Bugfix on blank_or_comment

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

* Refactor checkorder into reusable isledecomp module

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

* Refactor of state machine to prepare for reccmp integration

* Use isledecomp lib in reccmp

* Build isledecomp in GH actions, fix mypy complaint

* Ensure unit test cpp files will be ignored by reccmp

* Allow multiple offset markers, pep8 cleanup

* Remove unused variable

* Code style, remove unneeded module and TODO

* Final renaming and type hints

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

* Fix checkorder issues

* Add GH action

* Test error case

* Works

* Fixes

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2023-11-21 09:44:45 +01:00