Commit Graph

64 Commits

Author SHA1 Message Date
Anonymous Maarten
a36829031b lego1 leaks d3drm headers 2024-06-26 01:31:28 +02:00
Anonymous Maarten
4c69ded866 Include d3drm directory with EXCLUDE_FROM_ALL 2024-06-26 01:31:28 +02:00
Anonymous Maarten
d36c8dc94b Disable __wine_dbg_cdecl 2024-06-26 01:31:28 +02:00
Anonymous Maarten
ccab074bf8 Introduce d3drm_guid containing the guids of d3drm 2024-06-26 01:31:28 +02:00
Anonymous Maarten
5ebbf0b3a9 32- and 64-bit LEGO1.dll export different symbol names 2024-06-26 01:31:28 +02:00
Anonymous Maarten
2f25748dec Assume mmx is supported on x64, require a test for x86 and disabled on other archs 2024-06-26 01:31:28 +02:00
Anonymous Maarten
8436d70274 DESCRIPTION in .def file(s) is deprecated 2024-06-26 01:31:28 +02:00
Anonymous Maarten
1f45f1d89a Create d3dxof import library for MSVC 2024-06-26 01:31:28 +02:00
Anonymous Maarten
a49d2df39f Ignore different 'const' qualifiers with MSVC 2024-06-26 00:34:13 +02:00
Anonymous Maarten
8886508ae8 Merge remote-tracking branch 'origin/master' into build-mingw64 2024-06-25 19:04:23 +02:00
Christian Semmler
492954f347
Updates from isledecomp/isle (#27)
* Implement/match Bike (#1036)

* Implement/match Motocycle, consistent notification names (#1037)

* Implement/match Motocycle, consistent notification names

* Format

* Fix

* Fix return types

* Fix return type

* Fix annotations

* Rename function

* Bootstrap LegoPlantManager, add plants data (#1038)

* Bootstrap LegoPlantManager, add plants data

* Naming

* Move

* Fix

* Implement/match LegoPlantManager::CreatePlant (#1039)

* Implement/match LegoPlantManager::CreatePlant

* Update names

* Fix name

* Fix

* Fix

* Implement/match more LegoPlantManager functions (#1040)

* Implement/match LegoPlantManager interaction functions (#1041)

* Implement AnimState (#1042)

* Implement LegoAnim

* fix: minor issues

* fix ncc complaints

* refactor: address review comments

---------

Co-authored-by: jonschz <jonschz@users.noreply.github.com>

* Implement/match LegoPlantManager::FUN_10026c50 (#1043)

* Minor fixes

* Implement/match LegoPlantManager::FUN_10026c50

* Backports of isle-portable x64 fixes (#1044)

* Introduce LPD3DRM_APPDATA typedef for setting d3drm appdata

* Fix warning about assigning const string literals to variable char pointers

* Don't cast pointers to integers on non-32-bit architectures

* memset 2nd argument is int

* Assume cpuid is available on x86_64, needs testing on i386 and unavailable on anything else

* Store HFILE in its own member variable

* Updates

---------

Co-authored-by: jonschz <17198703+jonschz@users.noreply.github.com>
Co-authored-by: jonschz <jonschz@users.noreply.github.com>
Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>
2024-06-25 18:12:08 +02:00
Anonymous Maarten
9dd761ae76 Ignore -Wdiscarded-qualifiers warning with const vtables 2024-06-25 16:05:13 +02:00
Anonymous Maarten
46e1ba6450 Add mingw64 build to the ci matrix 2024-06-25 15:46:40 +02:00
Anonymous Maarten
f45939187f cmake: don't emit a warning about bitness anymore 2024-06-25 15:46:40 +02:00
Anonymous Maarten
da69f7faa9 Don't cast address to scalar (this is fishy) 2024-06-25 15:46:40 +02:00
Anonymous Maarten
d5135f997f Casting from void* to a smaller-sized integer needs an intermediate equally-sized integer 2024-06-25 15:46:40 +02:00
Anonymous Maarten
c7a4e6b2b1 Assume cpuid is available on x86_64, needs testing on i386 and unavailable on anything else 2024-06-25 15:46:40 +02:00
Anonymous Maarten
e22ebd4382 Fix 64-bit mxdsbuffer pointer arithmetic 2024-06-25 15:46:40 +02:00
Anonymous Maarten
27c6f7969c Store HFILE in its own member variable 2024-06-25 15:46:40 +02:00
Anonymous Maarten
da96d4d871 memset 2nd argument is int 2024-06-25 15:46:40 +02:00
Anonymous Maarten
a1c1dd3b80 Don't cast pointers to integers before comparison 2024-06-25 15:46:40 +02:00
Anonymous Maarten
6e47c6b295 Fix warning about assigning const string literals to variable char pointers 2024-06-25 15:46:40 +02:00
Anonymous Maarten
9a2de9bccc x86's stdcall becomes MS's x64 calling canvention 2024-06-25 15:46:40 +02:00
Anonymous Maarten
a37ca7aa75 cmake: look for iniparser using config file first, then try our custom module file
Our custom module file is still useful.
My linux distro does not package the cmake files.
2024-06-25 15:41:48 +02:00
Anonymous Maarten
15f874803d d3drm: store LPVOID data instead of DWORD 2024-06-25 15:39:15 +02:00
Anonymous Maarten
e7fb67bb9f
Fix mingw build + copy d3drm from wine (#25)
* Fix engineConfig declaration crossing jump

This fixes the following error:
```
/src/isle-portable/LEGO1/omni/src/audio/mxsoundmanager.cpp: In member function 'virtual MxResult MxSoundManager::Create(MxU32, MxBool)':
/src/isle-portable/LEGO1/omni/src/audio/mxsoundmanager.cpp:119:1: error: jump to label 'done'
  119 | done:
      | ^~~~
/src/isle-portable/LEGO1/omni/src/audio/mxsoundmanager.cpp:78:22: note:   from here
   78 |                 goto done;
      |                      ^~~~
/src/isle-portable/LEGO1/omni/src/audio/mxsoundmanager.cpp:84:26: note:   crosses initialization of 'ma_engine_config engineConfig'
   84 |         ma_engine_config engineConfig = ma_engine_config_init();
      |                          ^~~~~~~~~~~~
```

* Fix 'invalid conversion from 'SDL_FunctionPointer' {aka 'void (*)()'} to 'void*'

* /SAFESEH:NO is a VC thing

* SDL3 is still instable

* Cannot forward declare and use enum

* Remove MusicManager from public LEGO1.DLL interface

* Copy d3d from wine git 6c5d17af07a318d754c0c21023b2d162a0d3725d

* Build d3drm-wine with 32-bit mingw

* cmake: move 3rd party targets to cmake script in 3rdparty directory

* cmake: bump minimum required CMake version to 3.25 to allow adding a subproject with SYSTEM automatically applied

An alternative would be to use SYSTEM in target_include_directories in the 3rd party cmake script.

* Add a minimal Findiniparser.cmake (not all distributions carry the upstream iniparser-config.cmake files)

* Add wine's d3drm headers

* cmake: merge ISLE_USE_DX5_LIBS into ISLE_USE_DX5

* cmake: Build all shared libraries in the binary output directory (to avoid PATH issues)

* ci: enable msys2 mingw32 build

* Disable clang-tidy on d3drm wine

* Thread functions must have SDLCALL call convention

* cmake: disable clang-tidy for miniaudio and libsmacker as well

* Hopefully fix c++ format and skip ncc naming violation

* clang-format violations keep up popping out of nowhere

* No need for lego/legoomni/include

* ncc: define SDLCALL as empty instead
2024-06-24 07:25:51 -07:00
Christian Semmler
07e65a2f4c
Update README.md 2024-06-16 15:30:16 +02:00
Christian Semmler
8a802bcf85
Replace DirectSound with miniaudio (#21)
* Add miniaudio

* WIP

* static const

* Fix missing looping

* Fix volume

* Implement 3D sound, WIP

* Remove unused WinMM code

* Update README.md

* Fixes

* Fix naming

* Fix naming

* disable ma threading

* Invert Z axis for OpenGL system

* Update comment

* Set rolloff

* Fix minimize/maximize suspension

* Rename function

* SDL3: changed macro name
2024-06-16 15:26:04 +02:00
Christian Semmler
419bc2a44e
Updates from isledecomp/isle (#23)
* Fix remaining vtordisp issues (#1016)

* Fix LegoRaceActor

* Fix LegoRaceMap

* Fix LegoCarRaceActor

* Fix LegoJetskiRaceActor

* Fix LegoJetski

* Fix LegoRaceCar

* Downgrade orig addr unique message to debug

* Implement/match Ambulance::HandleEndAction (#1018)

* Implement/match Ambulance::HandleClick (#1019)

* Implement/match Ambulance::HandleClick

* Remove junk

* Add Ambulance::FUN_10036e60

* Implement/match Ambulance::Tickle (#1021)

* Match LegoMeterPresenter::ParseExtra (#1022)

* Match LegoMeterPresenter::ParseExtra

* Add LegoMeterPresenter to factory

* Add call to parent

* Add missing TODO

* Implement/match Ambulance::ActivateSceneActions (#1023)

* Fix CaveEntity class (#1024)

* Fix CaveEntity class

* Rename function

* Implement/match JailEntity::HandleClick and CaveEntity::HandleClick (#1025)

* Implement/match JailEntity::HandleClick and CaveEntity::HandleClick

* Fix

* Add remaining classes, implement/match LegoObjectFactory (#1026)

* Add missing classes

* Match LegoObjectFactory

* Remove semicolon

* Add symbol

* Fix

* Implement/match Ambulance::VTable0x70 (#1027)

* Implement/match Ambulance::HandleButtonDown (#1028)

* Implement/match Ambulance::HandlePathStruct (#1029)

* Implement/match Ambulance::HandlePathStruct

* Add annotation

* Implement/match remaining Ambulance functions (#1030)

* Fix camera glitch (#1031)

* Implement LegoAnimScene::FUN_1009f490 (#1032)

* Implement LegoAnimScene::FUN_1009f490

* Update legoanim.cpp

* Update legoanim.cpp

* Update legoanim.cpp

* Bugfix for LegoMeterPresenter::DrawMeter (#1033)

* feat: Implement several ::Serialize functions (#1017)

* feat: Implement many ::Serialize functions

* address review comments, part 1 [skip ci]

* address review comments, part 2 [skip ci]

* review comments (final part)

* refactor: Remove Read/Write duplication

* fix merge conflict

* Match PizzeriaState::Serialize again

* Remove unused variable, add LegoVehicleBuildState::Serialize

* Implement AnimState::Serialize

* fix: Conform with naming scheme

* refactor: change names back

* refactor: int to MxS32

---------

Co-authored-by: jonschz <jonschz@users.noreply.github.com>

---------

Co-authored-by: MS <disinvite@users.noreply.github.com>
Co-authored-by: jonschz <17198703+jonschz@users.noreply.github.com>
Co-authored-by: jonschz <jonschz@users.noreply.github.com>
2024-06-16 15:15:03 +02:00
Christian Semmler
b945993ee3
Updates from isledecomp/isle (#22)
* Act2PoliceStation::Notify (#1002)

* Act2PoliceStation::Notify

* Match code

---------

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

* Match Ambulance::StopScriptOnAmbulance and StopScriptOnEntity (#1003)

* Match Ambulance::StopScriptOnAmbulance and StopScriptOnEntity

* Rename for consistency

---------

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

* TowTrack and LegoAct2 destructors (#1005)

* Add some missing dtors

* Add missing 'override'

* Rename Start/StopTimer to Pause/Resume (#1007)

* Rename Start/StopTimer to Pause/Resume

* Fix

* Begin LegoRace class (#1014)

* Begin LegoRace

* Match functions

---------

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

* Implement/match LegoFlcTexturePresenter (#1015)

* Implement/match LegoFlcTexturePresenter

* Move files

* Fix

* Fix

---------

Co-authored-by: Joshua Peisach <itzswirlz2020@outlook.com>
Co-authored-by: MS <disinvite@users.noreply.github.com>
Co-authored-by: Mikhail Thompson <mishakeys20@gmail.com>
2024-06-10 17:57:20 +02:00
Christian Semmler
f7dca7a4fe
Rename InitPresenters to Create, remove this keyword (#1000) (#20) 2024-06-07 22:17:20 +02:00
Christian Semmler
e0af725fb6
Updates from isledecomp/isle (#19)
* Refactor JukeBox, add enum for music (#988)

* Refactor JukeBox, add enum for music

* add BETA annotation

* Fix BETA annotation

* Fix BETA annotation

* Fix

* Consolidate state and building entity classes (#989)

* Match LegoCacheSoundManager::FindSoundByKey (#991)

* Match LegoCacheSoundManager::FindSoundByKey

* Remove space

* Implement/match LegoActor::Mute (#992)

* Add more annotations to ISLE (#990)

* Minor improvements in ISLE.EXE

* Add more annotations

* Fix

* Comment out

* Fix lint

* Add enum for actor IDs (#993)

* Implement/match LegoEntity::ClickAnimation (#994)

* Implement/match LegoEntity::VTable0x38

* Update names

* Implement/match LegoEntity::SwitchSound / SwitchMove / SwitchColor / SwitchMood (#995)

* Implement/match LegoEntity::SwitchSound

* Name

* Name

* Implement/match LegoEntity::SwitchMove

* Mood

* Implement/match LegoCharacterManager::SwitchColor (#996)

* Implement/match IslePathActor::Exit (#997)

* Implement/match IslePathActor::Exit

* Name

* Name

* Partially fix vector interface

* Revert "Partially fix vector interface"

This reverts commit 6e7a1e2b08fd82012b28be3054eeff65428eb4d1.

* Revert "Revert "Partially fix vector interface""

This reverts commit e3860e3c9fa1f8937b702d6c81d6e3bb4dadecc6.

* Fix

* Remove some COMPAT_MODE

* Implement/match Ambulance::Notify (#998)

* Update isleapp.cpp

* Streamline MxVideoParamFlags (#999)

* Streamline MxVideoParamFlags

* Remove this-> from MxOmniCreateFlags

---------

Co-authored-by: MS <disinvite@users.noreply.github.com>
2024-06-07 21:32:27 +02:00
Christian Semmler
c038d8d46e
Updates from isledecomp/isle (#18)
* Implement/match Lego3DSound::Create (#981)

* Implement/match Lego3DSound::Create

* Add space

* Naming

* Changes

* Name/rename functions in LegoCharacterManager (#982)

* Name/rename functions in LegoCharacterManager

* Name flag

* Implement/match Lego3DSound::UpdatePosition (#983)

* Implement/match Lego3DSound::SetDistance and Reset (#984)

* Implement/match LegoSoundManager::UpdateListener (#985)

* Implement/match LegoCacheSound::Create and LegoLoadCacheSoundPresenter::StreamingTickle (#986)

* Implement/match LegoCacheSound::Create

* Naming

* Fix naming

* Fix parens

* Implement/match LegoCacheSound::Play and Lego3DSound::FUN_10011a60 (#987)

* Implement/match LegoCacheSound::Play and Lego3DSound::FUN_10011a60

* Update names

* Update
2024-06-02 17:26:15 +02:00
Christian Semmler
3502c3f912
Fix cursors (#17) 2024-06-02 17:20:41 +02:00
Christian Semmler
20cfd57e35
Add SDL cursors (#16)
* Add SDL cursors

* Fix naming
2024-06-01 16:54:17 +02:00
Christian Semmler
9409a5641f
Define cursor enum and custom cursor window message (#980) (#15)
* Define cursor enum and custom cursor window message

* Fix param name

* Remove unused header
2024-06-01 16:10:17 +02:00
Christian Semmler
ea0ca98292 Use SDL macros for return values 2024-05-31 23:20:14 -04:00
Christian Semmler
a3f408d6be
Remove dependency on dinput, use SDL keyboard state for navigation (#14)
* WIP

* Use SDL kb state for navigational keys

* Remove linking against dinput
2024-06-01 05:13:27 +02:00
Christian Semmler
1d136ab2bb
Improve naming, use virtual key constants (#979) (#13) 2024-06-01 04:48:41 +02:00
Christian Semmler
0b6c220b4f Fix missing return 2024-05-31 18:05:05 -04:00
Christian Semmler
fd5ca4c4dc
Use SDL window instead of Win32 window (#12)
* Use SDL window

* Fixes

* Update README

* Remove unused decl

* Consistent use

* Add comment about fullscreen
2024-05-31 23:56:00 +02:00
Christian Semmler
bb6228ad34
Updates from isledecomp/isle (#11)
* Rename LegoEdge::GetOpposingPoint to LegoEdge::CWVertex (#977)

* Fix Radio::HandleControl COMPAT_MODE branch (#978)

---------

Co-authored-by: DmitriLeon2000 <dmitryaveron2000@gmail.com>
2024-05-31 23:20:32 +02:00
Christian Semmler
75e767200b
Replace Windows registry with .ini file (#10)
* Replace Windows registry with .ini file

* Update README.md

* Update CMakeLists.txt

* comment

* set CMake policy

* Try this

* Try this

* Adjust comments
2024-05-31 20:04:00 +02:00
Christian Semmler
e38d877131
Add SDL callbacks to isleapp (#9)
* Add SDL callbacks to isleapp

* Update README.md

* Update README.md
2024-05-31 16:45:51 +02:00
Christian Semmler
9c83acb3b1
Replace Windows threads with SDL threads (#8)
* Replace Windows threads with SDL threads

* Wait for thread in dtor
2024-05-30 22:56:44 +02:00
Christian Semmler
c24221a674
Replace Windows CriticalSection with SDL Mutex (#7)
* Replace Windows CriticalSection with SDL Mutex

* Update README.md
2024-05-30 22:38:42 +02:00
Christian Semmler
1365bf0e2b
Use USHRT_MAX instead of MAXWORD (#975) (#6) 2024-05-30 22:04:55 +02:00
Christian Semmler
7d36abda90
Updates from isledecomp/isle (#5)
* Style refactor omni/system components (#974)

* Style refactor omni/system components

* Fix

* Fix

* Update
2024-05-30 21:23:21 +02:00
Christian Semmler
47997da1e9
Add SDL3 and replace Windows semaphores (#4)
* Add SDL3 and replace Windows semaphores

* Try this

* Change for now
2024-05-30 20:41:20 +02:00
Christian Semmler
6ddd86dcbe
Updates from isledecomp/isle (#3)
* Implement/match LegoPathActor::ParseAction (#946)

* Implement/match LegoPathActor::ParseAction

* Fix naming

* Space

* Implement/match Isle::UpdateGlobe (#947)

* Implement/match Isle::UpdateGlobe

* Change function access

* Implement/match Isle::CreateState and related (#948)

* Implement/match actor Create functions (#949)

* Implement/match Isle::Escape (#950)

* Implement/match Isle::FUN_10033350 (#951)

* Implement/match Isle::HandleType19Notification (#952)

* Implement/match Isle::HandleType19Notification

* Fix

* Implement/match LegoAnimationManager::FUN_10063b90 (#953)

* Implement/match LegoAnimationManager::FUN_100648f0 (#954)

* Implement LegoROI::FUN_100a9410 (#955)

* WIP

* WIP

* Remove space

* Fix

* Implement/match LegoExtraActor::VTable0x6c (#956)

* Match LegoUnknown::FUN_1009a1e0 (#957)

* Fix extra actor collisions (#958)

* Implement/match IslePathActor::FUN_1001b660 (#960)

* Refactor MxBitmap (again) (#961)

* Remove this

* Starting list of beta addrs

* Static for height-specific abs, fix StrechBits

* MxBitmap refactor

* Implement/match LegoPathBoundary::FUN_100586e0 and FUN_10057fe0 (#962)

* Implement/match LegoAnimPresenter::FUN_1006b140 (#963)

* Implement LegoMeterPresenter::DrawMeter (#964)

* Implement LegoMeterPresenter::DrawMeter

* New MxRect16 header, offsets and size annotations

* Missing mxtypes include

* Implement/match LegoAnimationManager::FUN_10063270 (#965)

* Implement/match LegoAnimMMPresenter::FUN_1004b840 (#966)

* Implement/match LegoAnimationManager::FUN_10062e20 (#967)

* Beta match MxPalette (#968)

* Beta match MxPalette

* Modern compiler fix

* Implement/match LegoCameraController::FUN_10012290 and FUN_10012320 (#969)

* Implement/match LegoControlManager::FUN_100293c0 (#970)

* Implement/match Pizzeria::HandleClick (#971)

* Implement/match Lego3DWavePresenter::StartingTickle (#972)

* Implement/match Lego3DWavePresenter::StartingTickle

* Fix annotation

* Add StreamingTickle

* Rename

* Add static HandlerClassName function (#973)

* Add static HandlerClassName function

* Use method in PresenterNameDispatch

---------

Co-authored-by: disinvite@users.noreply.github.com <disinvite@users.noreply.github.com>
2024-05-30 19:20:36 +02:00