Commit graph

1296 commits

Author SHA1 Message Date
Anonymous Maarten
659a54b221
Add support for building x64 executables (#29)
Some checks are pending
Build / Current ${{ matrix.toolchain.name }} (map[clang-tidy:true d3drm-from-wine:true dx5-libs:false msys-env:mingw-w64-i686 msystem:mingw32 name:msys2 mingw32 shell:msys2 {0} werror:true]) (push) Waiting to run
Build / Current ${{ matrix.toolchain.name }} (map[clang-tidy:true d3drm-from-wine:true dx5-libs:false msys-env:mingw-w64-x86_64 msystem:mingw64 name:msys2 mingw64 shell:msys2 {0} werror:true]) (push) Waiting to run
Build / Current ${{ matrix.toolchain.name }} (map[d3drm-from-wine:false dx5-libs:true name:MSVC (32-bit) setup-cmake:true setup-msvc:true setup-ninja:true shell:sh vc-arch:amd64_x86]) (push) Waiting to run
Build / Current ${{ matrix.toolchain.name }} (map[d3drm-from-wine:true dx5-libs:false name:MSVC (64-bit) setup-cmake:true setup-msvc:true setup-ninja:true shell:sh vc-arch:amd64]) (push) Waiting to run
Format / C++ (push) Waiting to run
Naming / C++ (push) Waiting to run
* d3drm: store LPVOID data instead of DWORD

* m_extraCharacterId is an integer, not a pointer

* 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.

* x86's stdcall becomes MS's x64 calling canvention

* Fix 64-bit mxdsbuffer pointer arithmetic

* Casting from void* to a smaller-sized integer needs an intermediate equally-sized integer

* Don't cast address to scalar (this is fishy)

* Add mingw64 build to the ci matrix

* Ignore -Wdiscarded-qualifiers warning with const vtables

* Ignore different 'const' qualifiers with MSVC

* Create d3dxof import library for MSVC

* DESCRIPTION in .def file(s) is deprecated

* Assume mmx is supported on x64, require a test for x86 and disabled on other archs

* 32- and 64-bit LEGO1.dll export different symbol names

* Introduce d3drm_guid containing the guids of d3drm

* Disable __wine_dbg_cdecl

* Include d3drm directory with EXCLUDE_FROM_ALL

* lego1 leaks d3drm headers

* Add dxfile.h

* Add 64-bit MSVC to the build matrix

* cmake: using ISLE_USE_DX5 means going all-in

* Load d3dxof.dll dynamically

* cmake: don't emit a warning about bitness anymore
2024-06-25 18:47:43 -07:00
Anonymous Maarten
554a679dc0 Merge commit '8113a17167e92133f5a0793967bf1e485dafd07a' into new-isle-decomp 2024-06-25 20:22:08 +02:00
Anonymous Maarten
ec19d5edb0 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-25 20:02:58 +02:00
Christian Semmler
0f77823a7e Update README.md 2024-06-25 20:02:58 +02:00
Christian Semmler
806afaa210 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-25 20:02:58 +02:00
Anonymous Maarten
d537d69d13 Merge commit 'd869d565c282b89bffefd8b298048dfbbbc7808b' into new-isle-portable 2024-06-25 20:02:43 +02:00
Anonymous Maarten
974cb8e6d3 Merge commit 'c22c6f337960f0c4c2f1170e857417926cbeeb0f' into new-isle-portable 2024-06-25 20:00:25 +02:00
Christian Semmler
71559309a9 Rename InitPresenters to Create, remove this keyword (#1000) (#20) 2024-06-25 19:57:18 +02:00
Anonymous Maarten
3d59615274 Merge commit 'ba378eb22442d71fe4f23a5c818cdfad16d3b16d' into new-isle-decomp 2024-06-25 19:57:16 +02:00
Anonymous Maarten
8d5bfb40d9 Merge commit '828b35e9d22c7a17f7af4906049b56e0b1f4c789' into new-isle-decomp 2024-06-25 19:55:43 +02:00
Christian Semmler
0d452a7fe2 Fix cursors (#17) 2024-06-25 19:51:12 +02:00
Christian Semmler
4bf9174c15 Add SDL cursors (#16)
* Add SDL cursors

* Fix naming
2024-06-25 19:51:12 +02:00
Christian Semmler
8a2bbcac84 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-25 19:51:12 +02:00
Christian Semmler
f87c1a0b6f Use SDL macros for return values 2024-06-25 19:51:12 +02:00
Christian Semmler
880ae98f0b 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-25 19:51:12 +02:00
Christian Semmler
636996caf6 Improve naming, use virtual key constants (#979) (#13) 2024-06-25 19:51:12 +02:00
Christian Semmler
931fcd0381 Fix missing return 2024-06-25 19:51:12 +02:00
Christian Semmler
65036e1a36 Use SDL window instead of Win32 window (#12)
* Use SDL window

* Fixes

* Update README

* Remove unused decl

* Consistent use

* Add comment about fullscreen
2024-06-25 19:51:12 +02:00
Anonymous Maarten
3190a6c23a Merge commit '77af1a5483780db06f09558d248a4766763c8701' into new-isle-decomp 2024-06-25 19:51:12 +02:00
Christian Semmler
dda6778665 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-06-25 19:51:12 +02:00
Christian Semmler
889bd4c1cd Add SDL callbacks to isleapp (#9)
* Add SDL callbacks to isleapp

* Update README.md

* Update README.md
2024-06-25 19:51:12 +02:00
Christian Semmler
21502ecf18 Replace Windows threads with SDL threads (#8)
* Replace Windows threads with SDL threads

* Wait for thread in dtor
2024-06-25 19:51:12 +02:00
Christian Semmler
641ae70ab9 Replace Windows CriticalSection with SDL Mutex (#7)
* Replace Windows CriticalSection with SDL Mutex

* Update README.md
2024-06-25 19:51:12 +02:00
Christian Semmler
6f2481e8d6 Use USHRT_MAX instead of MAXWORD (#975) (#6) 2024-06-25 19:51:12 +02:00
Anonymous Maarten
fc76114a36 Merge commit '76435d803f768be8da9821d72b98306a4b043ad2' into new-isle-decomp 2024-06-25 19:51:12 +02:00
Christian Semmler
6f1aebbb02 Add SDL3 and replace Windows semaphores (#4)
* Add SDL3 and replace Windows semaphores

* Try this

* Change for now
2024-06-25 19:50:27 +02:00
Anonymous Maarten
94081312c3 Merge commit 'ac41854149776a30b7acaa89808cee0a7cad7380' into new-isle-decomp 2024-06-25 19:50:27 +02:00
Christian Semmler
4258fb0deb Add back some stuff from decomp (#2)
* Add ncc script

* add requirements.txt

* Add other builds

* Add with submodules

* Comment out for now

* Add
2024-06-25 19:49:59 +02:00
Christian Semmler
f3f8480834 Update CONTRIBUTING.md 2024-06-25 19:49:59 +02:00
Christian Semmler
42f74b6592 Update README.md 2024-06-25 19:49:59 +02:00
Christian Semmler
3ec9c98daf Update TODO comments 2024-06-25 19:49:59 +02:00
Anonymous Maarten
c1f20a4502 Merge commit '6774784b37ec185297191c0dd87251a53f3c7e4c' into new-isle-decomp 2024-06-25 19:49:56 +02:00
Christian Semmler
dc61d91e99 Remove SmartHeap 2024-06-25 19:48:57 +02:00
Christian Semmler
6d07a284df Remove naming script (for now) 2024-06-25 19:48:57 +02:00
Christian Semmler
e4e959d70b Check out submodules 2024-06-25 19:48:57 +02:00
Christian Semmler
751693489c Update README 2024-06-25 19:48:57 +02:00
Christian Semmler
874f3a26ff Adjust GH actions 2024-06-25 19:48:57 +02:00
Christian Semmler
e2263ca8ae Add rudimentary README 2024-06-25 19:48:57 +02:00
Christian Semmler
3fdf45968e Remove decomp tools 2024-06-25 19:48:57 +02:00
Christian Semmler
a548770f7e Add libsmacker to replace smack.lib 2024-06-25 19:48:56 +02:00
Anonymous Maarten
8113a17167
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
2024-06-25 17:56:30 +02:00
Christian Semmler
62307e1819
Implement/match LegoPlantManager::FUN_10026c50 (#1043)
* Minor fixes

* Implement/match LegoPlantManager::FUN_10026c50
2024-06-25 17:28:10 +02:00
jonschz
c9c130eb87
Implement AnimState (#1042)
* Implement LegoAnim

* fix: minor issues

* fix ncc complaints

* refactor: address review comments

---------

Co-authored-by: jonschz <jonschz@users.noreply.github.com>
2024-06-21 14:41:01 -04:00
Christian Semmler
1d666f62e5
Implement/match LegoPlantManager interaction functions (#1041) 2024-06-19 18:57:05 +02:00
Christian Semmler
656e7fc674
Implement/match more LegoPlantManager functions (#1040) 2024-06-19 18:02:54 +02:00
Christian Semmler
e507f42717
Implement/match LegoPlantManager::CreatePlant (#1039)
* Implement/match LegoPlantManager::CreatePlant

* Update names

* Fix name

* Fix

* Fix
2024-06-18 19:35:03 +02:00
Christian Semmler
1a46d370ec
Bootstrap LegoPlantManager, add plants data (#1038)
* Bootstrap LegoPlantManager, add plants data

* Naming

* Move

* Fix
2024-06-17 20:11:27 +02:00
Christian Semmler
e4e0f4e4d3
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
2024-06-16 16:47:53 +02:00
Christian Semmler
68023379d8
Implement/match Bike (#1036) 2024-06-16 15:54:40 +02:00
jonschz
d869d565c2
Fix Ghidra import script re-importing unchanged functions (#1035)
* feat: Reuse enums instead of recreating them every time

* feat: Support verifying return values larger than 4 bytes

* feat: Ignore `__$ReturnUdt` in template functions

* run formatter

---------

Co-authored-by: jonschz <jonschz@users.noreply.github.com>
2024-06-16 08:50:32 -04:00