Commit Graph

205 Commits

Author SHA1 Message Date
David Gow
e87184b502
Fix the OpenGL backends on non-glx Linux platforms (and remove GLEW dependency) (#446)
* Work around issues with depth-buffer size on EGL-based platforms

The OpenGL 1.1 and OpenGL ES 2.0 backends can break on EGL-based platforms,
such as Wayland, or X11 with SDL_VIDEO_FORCE_EGL=1. One of the reasons for
this (the other being glew on the GL1.1 backend) is that SDL/egl get very
confused by the way we set OpenGL attributes, particularly SDL_GL_DEPTH_SIZE,
resulting in SDL_GL_CreateContext() failing with EGL_BAD_MATCH.

The exact cause of this is unknown, but it seems to be a combination of:
- SDL_GL_SetAttribute() is supposed to be called _before_ the window is
  created, and we're calling it afterward.
- Creating several test windows during the enumeration process, mixing
  and matching between OpenGL and OpenGL ES profiles.

The "most correct" solution is probably to delay creating the game window
until the backend creation process, rather than before the enumeration
occurs. But that's a real refactor, which could cause other issues.

Instead, set the 24-bit bit depth (which we've hardcoded anyway) before
creating the window, and use SDL_GL_ResetAttributes() when creating backends.

This seems to work here in all of the cases I was able to try (modulo the GLEW
dependency, which is removed in the next patch).

* miniwin: Remove GLEW dependency for OpenGL 1.1

GLEW normally backs directly onto glXGetProcAddress on Linux, which is broken
on non-GLX setups, such as Wayland (but also X11 with EGL, and presumably KMSDRM).

Replace it with manual calls to SDL_GL_GetProcAddress() for the VBO path.

Note, however, that SDL_opengl.h includes "windows.h", so conflicts with the
miniwin implementation, which breaks builds on windows.

In order to work around this, we do what the Direct3D9 implementation does and
push all of the OpenGL calls to a separate file, actual.cpp.

Going forward, it may make sense to load _all_ OpenGL entry points via SDL,
which would allow us to avoid linking directly with libGL/libOpenGL, and
therefore eliminate the separate build dependency altogether, as well as
allowing more runtime configurability as to the OpenGL library to load.

(But that's definitely a bit uglier, and also useful very rarely.)
2025-06-29 17:47:09 +02:00
Christian Semmler
020969c483
Add transition type to ini (#441) 2025-06-29 02:49:46 +02:00
Christian Semmler
a987595e1e
1.0 compatibility (#434)
* Make Infocenter compatible with 1.0 versions

* Fix

* Emscripten patch

* Fix

* Fix Emscripten patch

* Window title

* Naming

* Don't exit car build automatically in 1.0

* Disable character selection by clicking icon in 1.0

* Remove obsolete includes
2025-06-27 02:30:24 +02:00
Carson
7797729a3f
Add option to remove startup delay (#395)
* Add startup delay option

* Remove build option

* Add comment back
2025-06-25 20:27:53 -07:00
Anders Jenbo
b65284a7a0
Move 2D drawing and upscaling to the renderer (#348) 2025-06-25 19:45:26 +02:00
Christian Semmler
87b4c0412e
Enhance compatibility of FetchFS (#424) 2025-06-24 22:03:54 +00:00
Christian Semmler
822a6a338c
Fix debug window 2025-06-24 09:23:32 -07:00
Danct12
3698f4fb0c
Bump version for SDL_SCALEMODE_PIXELART to 3.3.0 (#403) 2025-06-22 17:54:35 +00:00
Christian Semmler
5a756f033b
Set UseJoystick to true by default (#397) 2025-06-22 18:49:06 +02:00
Christian Semmler
92e0cb0845
Fix JoystickIndex ini default (#400) 2025-06-22 18:34:05 +02:00
Anders Jenbo
3678c97ec3
Allow for building on slightly older SDL3 versions (#394) 2025-06-22 03:29:37 +02:00
Christian Semmler
c2b8abea36
Fix Windows file finding (#369) 2025-06-21 18:06:08 +02:00
Steven
ed71ac8ec2
Added in game fullscreen toggling (#358) 2025-06-21 07:09:33 -07:00
Anders Jenbo
922794e7ea
Fix loading files from CD or HD (#357) 2025-06-21 15:19:25 +02:00
Christian Semmler
48fd42ea36
Check for files (#352)
* Check for files

* Fix
2025-06-21 00:45:21 +02:00
Christian Semmler
da825d42d4
Fix debug window 2025-06-17 10:40:25 -07:00
Anders Jenbo
eab95514d6
Add an OpenGL ES 2.0 renderer (#287) 2025-06-17 03:47:23 +02:00
Christian Semmler
c234689ae8
Add Emscripten customizations for libwasmfs (#309) 2025-06-14 21:53:36 +02:00
Anders Jenbo
975764dc17
Align OpenGL and SDL_GPU specular with software (#305) 2025-06-14 18:05:25 +02:00
Christian Semmler
2733ffcf69
Fix presenter progress event (#300) 2025-06-13 16:32:25 +00:00
Christian Semmler
5080e372f9
Emscripten port (#229)
* Emscripten port

* Fix NCC

* Update CMakeLists.txt

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

* Update CMakeLists.txt

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

* Update CMakeLists.txt

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

* Update CMakeLists.txt

* cmake: set iniparser cmake options in local scope

* ci: try adding emscripten to test matrix

* cmake: try to make CMake install package more usable

* cmake: fix typo

* Update CMakeLists.txt

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

* Add support for .ini loading

* Different default full screen behavior for Emscripten

* Add comments

* Add web platform

---------

Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>
Co-authored-by: Anonymous Maarten <anonymous.maarten@gmail.com>
2025-06-13 00:26:43 +02:00
Anders Jenbo
bbb0de6e9a
Implement full screen (#290) 2025-06-12 22:51:52 +02:00
Anonymous Maarten
99c0d2d744
Enable callgrind for specific scenarios (#276) 2025-06-10 23:03:12 +00:00
Christian Semmler
9ebeda5c0e
Add Max LOD and Max Allowed Extras configs (#273)
* Add new config options

* Fix defaults

* Use global for `m_maxAllowedExtras`

* Revert
2025-06-10 01:08:13 +00:00
Anonymous Maarten
7e9acc8d04
Add IDirect3DRMMiniwinDevice interface (#267) 2025-06-09 16:34:37 +00:00
Joshua Peisach
e520a47e2f
Port CONFIG to Qt (#210)
Co-authored-by: Anonymous Maarten <anonymous.maarten@gmail.com>
Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>
2025-06-03 03:48:04 +02:00
Anders Jenbo
ef7499bdb9 Restructure miniwin and add support for 3D backends 2025-05-29 04:07:53 +02:00
Anonymous Maarten
b24271a51b
Move miniwin to sdl3gpu subdirectory + add suffix to classes (#170) 2025-05-25 17:38:02 +00:00
Christian Semmler
110d9d4f7d
Update isleapp.cpp (#169) 2025-05-25 07:39:41 -07:00
Anonymous Maarten
183efa3d8f
More debug features: pause/step/resume (#140)
* More debug features: pause/step/resume

* Fix palette order (I think)

* Revert "Fix palette order (I think)"

This reverts commit a81de08f78.
2025-05-21 19:54:22 +02:00
Wouter Wijsman
911330e61c
Use SDL_EVENT_QUIT for window close (#126) 2025-05-21 19:33:53 +02:00
Anonymous Maarten
9d06cd9e53
Show imgui window when starting app with --debug (#138)
* Show imgui window when starting app with --debug

* g_closed test in SDL_AppIterate is still needed

* Allow disabling isleapp debugging by configuring with -DISLE_DEBUG=OFF

* clang-format
2025-05-20 23:36:51 +02:00
Christian Semmler
23182618cc
Merge remote-tracking branch 'isle/master' 2025-05-19 17:16:56 -07:00
Erik Schulze
d67318e78b
propagate name changes from commit fce97ea (#1508)
* propagate name changes from commit fce97ea

* remove dependency on omni types

* rename parameter too
2025-05-19 21:25:52 +02:00
AllMeatball
b1dfbe9925
isleapp: Show error dialog if NOCD.si or ISLE.si fails to load (#95)
* isleapp: Show error dialog if NOCD.si fails to load

* isleapp: Return bool in IsleApp::Tick

foxtacles recommended me to return a boolean for if tick failed
instead of just setting `g_closed` and setting `g_closeResult`
to set the return value of the program exit.

I also think this is the better solution. since a similar solution
was used in LoadConfig.

* isleapp: Better error logs & return false in places

foxtacles recommended to use SDL's logging api to show detailed errors
and using false in two places where it should exit because of failure.

This commit adds these two things.

* isleapp: Add missing error dialog when ISLE.si fails

* isleapp: Add missing error dialog when ISLE.si fails

* isleapp: Remove weird duplicate message box

* Move error dialog to loop

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2025-05-16 23:08:45 +02:00
Anders Jenbo
9ae96cbff6
Implement a functional DirectDraw (#81) 2025-05-15 20:45:53 -07:00
Christian Semmler
662385e60a
Merge branch 'master' of github.com:isledecomp/isle-portable 2025-05-14 16:40:16 -07:00
Christian Semmler
aec7426665
Merge remote-tracking branch 'isle/master' 2025-05-14 16:40:05 -07:00
Anders Jenbo
fce97ea06f
Correct check for lighting support (#1486) 2025-05-15 01:39:55 +02:00
AllMeatball
da056ee45f
isleapp: Add icon upon window creation (#85)
* isleapp/res: Add icon.h

* isleapp: Set icon on non-windows systems

* isleapp: Fix formating to match with .clang-format

* isleapp: Remove _WIN32 ifdefs

This is closer to the original code. I thought it would let Windows
set the icon itself not set the icon upon window creation.

* isleapp: Load internal .BMP instead of raw pixels

This should fix the endianess problem I mentioned in the PR.

* isleapp: Only load icon from IOStream if it's valid

* isleapp: Disable format checking in ISLE/res/

* ISLE/res/resource.h: Prevent recursive inclusion

* ISLE: Remove isle.h from resource.h

also rename isle.h to isle_bmp.h

* isleapp: Fix formatting
2025-05-15 01:18:41 +02:00
Anonymous Maarten
537cde485a
Remove d3drm-wine (#75)
* remove d3drm-wine

* Update miniwin/miniwin/src/miniwin_ddraw.cpp

Co-authored-by: Anders Jenbo <anders@jenbo.dk>

* Run clang-format

* Update miniwin/miniwin/src/miniwin.cpp

Co-authored-by: Anders Jenbo <anders@jenbo.dk>

* Update miniwin/miniwin/src/miniwin_ddraw.cpp

Co-authored-by: Anders Jenbo <anders@jenbo.dk>

---------

Co-authored-by: Anders Jenbo <anders@jenbo.dk>
2025-05-13 19:18:20 +00:00
AllMeatball
c48935a64b
Create config with sane defaults if not already present (#71)
* Create config with sane defaults if not present

* isleapp: Use binary mode for iniFP

Windows treats newlines differently then on *nix systems. Using binary mode makes this consistent.

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

* isleapp: Remove extern "C"

It seems like it's fine including these libraries without extern "C"

* isleapp: Use boolean return in LoadConfig

This to check if the config loaded correctly or not.
Seems to be a good solution to the file loading issue.

Maybe there's a better solution
SetupWindow failing because of a config erroring seems a bit odd.

* isleapp: Remove that dumb use after free.

I forgot you don't specify a filename you specify a *file pointer*

* isleapp: Fix iniFP to be in proper scope

This also fixes the missing parameter in `iniparser_dump_ini`

* .gitignore: Exclude the kate .cache folder

* isleapp: Match prototype of LoadConfig in header

* isleapp: Fix formating to comply with .clang-format

* isleapp: Don't create new config if manually set

---------

Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>
2025-05-12 17:25:16 -07:00
Anders Jenbo
08b2dab108
Make things build on Linux (#69) 2025-05-12 23:10:53 +02:00
Ramen2X
2b3e7176d3
make all calls to winapi format-agnostic (#1470) 2025-05-11 15:03:32 -04:00
Anonymous Maarten
b97aea42d2
Use SDL_KeyCode in LEGO1.dll (#51)
* Pass SDL_Keycode in LEGO1.dll

* ISLE.EXE: use iniparser for getting isle.mediaPath

* Use SDL_isdigit instead of isdigit

* clang-format

* hdPath is a better default for mediaPath

* Replaced a stray 'A' with SDLK_A

* Use SDL_Keycode to store the ogel cheat code
2024-12-29 18:56:47 +01:00
Anonymous Maarten
05cfe4ee25
Even more SDL usage (#49)
* Texture pixel data is passed through as const data

* Use SDL_Surface/SDL_Palette in LegoImage

* Use SDL_Process to run subprocess

* Pass SDL_Window handle to SDL_ShowSimpleMessageBox

this makes sure the message dialog is shown as modal dialog and is on top

* Log errors during initialization

* Show SDL error during initialization

* Include <climits> for INT_MAX

* Replace _access with SDL_GetPathInfo

* Use SDL_RemovePath instead of DeleteFile

* Use SDL_RenamePath instead of MoveFile

* Use MxS32 in legoutils.cpp

* Update LEGO1/lego/legoomni/src/common/legoutils.cpp

* Naming

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-12-28 16:52:34 +01:00
Anonymous Maarten
65adfe7d64
More use of SDL (#47)
* Use SDL_GetPerformance(Counter|Frequency) in MxStopWatch

* Fix flic.h for gcc Linux compiler

* cmake: remove left-over message

* Replace some more stricmp with SDL_strcasecmp

* Pass SDL_Window* to LEGO1.DLL, and pass window events through SDL event handler

* clang-format

* Use SDL_Timer for unknown input dragging events

* Fix naming

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-12-27 18:44:14 +01:00
Anonymous Maarten
bb4db6caac
Use SDL3 functions in more locations (#44)
* Use strcasecmp, strncasecmp, strlwr, strupr and itoa from SDL

* Use SDL_GetTicks instead of timeGetTime

* Use MxDSFile::OPEN_READ instead of OF_READ

* Use SDL_IOStream to read bitmaps

* Use SDL_LogXXX instead of OutputDebugString

* Undo mxvideoparam.h change

* Revert "Undo mxvideoparam.h change"

This reverts commit 4a20cf6c46.

* Fix _MxTrace

* Reapply "Undo mxvideoparam.h change"

This reverts commit b3a09dc520.

* fix _MxTrace

* Use __declspec(dllexport) for exporting symbols from dll

Refactored CMake script such that all objects are passed to the lego1 library.

* clang-format

* fix msvc build

* MSVC fixed for real now?

* Forgot about d3drm_guid

* Fix naming issue

* Use Uint64 in LegoCarBuild::Tickle for dTime
2024-12-24 18:04:46 -07:00
Ramen2X
4cd4b55ae7
replace directinput joystick APIs with SDL (#41) 2024-12-19 19:25:49 -05:00
Christian Semmler
e7a604c61c
SDL3 fixes (#32) 2024-10-03 21:50:32 +02:00
Christian Semmler
0f3f6b6940
Fix SDL3 interfaces 2024-09-05 12:19:29 -07:00
Christian Semmler
9b48c8e5b1
Fix SDL3 interfaces 2024-09-05 12:15:04 -07:00
Christian Semmler
be12560248
SDL3 fixes (#31) 2024-07-28 19:18:01 +02:00
Christian Semmler
49a304d0b9
merge 2024-07-04 16:09:48 -07:00
Christian Semmler
bee101b1f4
Add clang-tidy readability-redundant-inline-specifier (#1060)
* Add clang-tidy readability-redundant-inline-specifier

* fix

* Update CONTRIBUTING.md

* format

* fix
2024-07-05 01:06:32 +02:00
Christian Semmler
3819dd0dae
merge 2024-07-01 16:52:14 -07:00
MS
4a87c3bc44
Small update to datacmp and roadmap (#1048)
* Match uninit variables with all nulls

* Enable _pnhHeap variable for ISLE

* Roadmap bugfix for ordinal import dummy addrs

* Format fix
2024-06-28 14:58:35 -07:00
Anonymous Maarten
196259c6c9
Parse cli arguments + log with SDL_Log (#30)
* cmake: copy DLL dependencies to output path

This also copies SDL3.dll from an external path when using system
dependencies.

* Only include <SDL3/SDL.h>

* isle: parse cli argument (--ini for custom ini path)

* Use SDL_CreateWIndowWithProperties to create SDL window

Less branching => Clearer code

* Log mxdirectx failure using SDL_Log + E_NOINTERFACE

* Fix d3drm32.def for msvc

* Define D3DRM_WINE when using d3drm from wine

* Ignore failed assertions from d3drm unimplemented functions

* inparser will/should create libiniparser.lib for static libraries and iniparser.lib for a shared library
2024-06-26 11:24:40 -07:00
Anonymous Maarten
659a54b221
Add support for building x64 executables (#29)
* 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
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
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
974cb8e6d3 Merge commit 'c22c6f337960f0c4c2f1170e857417926cbeeb0f' into new-isle-portable 2024-06-25 20:00:25 +02:00
Anonymous Maarten
3d59615274 Merge commit 'ba378eb22442d71fe4f23a5c818cdfad16d3b16d' into new-isle-decomp 2024-06-25 19:57:16 +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
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
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
be4c351d7d
Rename Start/StopTimer to Pause/Resume (#1007)
* Rename Start/StopTimer to Pause/Resume

* Fix
2024-06-09 13:39:22 -04:00
Christian Semmler
6e7e9a3f20
Add more annotations to ISLE (#990)
* Minor improvements in ISLE.EXE

* Add more annotations

* Fix

* Comment out

* Fix lint
2024-06-05 12:31:23 +02:00
Christian Semmler
df20b05510
Define cursor enum and custom cursor window message (#980)
* Define cursor enum and custom cursor window message

* Fix param name

* Remove unused header
2024-06-01 16:07:58 +02:00
Christian Semmler
b67af71f33
Improve naming, use virtual key constants (#979) 2024-06-01 04:46:05 +02:00
Christian Semmler
1b1d2ecde6
Refactor LegoOmni into LegoMain/Scripts (#883)
* Refactor LegoOmni into LegoMain/Scripts

* Fix guard
2024-05-04 14:06:32 +02:00
Christian Semmler
51adf75b9b
(Refactor) Use more forward declarations (#881)
* Use more forward declarations

* Use more forward declarations

* Add more forward declarations

* Fix
2024-05-03 18:19:12 +02:00
MS
53b3d0b195
Add datacmp to CI (#746) 2024-03-29 07:58:59 -04: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
Nathan M Gilbert
84af3e2158
Match some names/values (#545)
* Match some names/values

* Fix mingw warning as error
2024-02-10 00:40:52 +01:00
Christian Semmler
a2c1bd66b3
Various changes to IsleApp (#531)
* ISLE experiment

* Annotations

* Remove define.cpp

* Remove header

* Fix types

* Leave as MxLong for now
2024-02-05 15:01:48 +01:00
MS
264b9e815b
Match static function variables (#530)
* Match static function variables

* IsleApp::Tick static variables
2024-02-05 12:43:13 +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
Anonymous Maarten
5f413165cc
Spinoff some sources to static libraries (#484)
* 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
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
MS
aaa18bc9e2
Decomp parser: indirect globals and string markers (#446)
* Enable string annotations and indirect globals

* Adding some STRING annotations

* Library functions
2024-01-17 12:56:34 +01:00
Joshua Peisach
763fcf8980
ElevatorBottom ctor/dtor (#436)
* ElevatorBottom ctor

* ElevatorBottom destructor

* Use setters

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2024-01-14 22:58:00 +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
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
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
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
Christian Semmler
afd24fbe18
Implement MxStreamController::FUN_100c1a00 (#357)
* Implement MxStreamController::FUN_100c1a00

* Move include
2023-12-24 21:00:20 +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
02aaf1533f
Increased ISLE accuracy (#319)
* Improve WndProc accuracy

* Another accuracy fix for `WndProc`
2023-12-09 18:49:13 +01: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
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