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