Commit Graph

143 Commits

Author SHA1 Message Date
Anonymous Maarten
85ff14e997
Remove debug window (#736)
* Remove debug window

* LEGO1: remove a few exports

* LEGO1: Remove a few `friend class DebugViewer` declarations
2025-11-21 14:20:37 +00:00
It's Rhew!
c2b0211304
Switch port (#731)
* - Set defaults if ini exists, but empty.
- Create a new dictionary object, not use null object.

* Switch Port

Todo: Fix: Misc crashes when interacting on island.
Todo: Fix: Joystick pointer is slow to move.
Todo: Fix: Touch doesn't behave.

* Fix: base GetPathInfo fixup in the SDL implementation, with check for null SDL_PathInfo.
Fix: Disable imgui shell functions.

Todo: Display imgui debug if enabled.

* Fix: Correction to suite style guidelines

* - Switch build homebrew NRO
- CI/CD to build Switch

* Fix typo in CI

* clang-format fix

* Clang-format against isleapp.cpp

* Use correct docker container for CI/CD

* Remove SDL fixups and use an SDL3 port with fixes.
Fixes crash bug and world issues!

* Fix: use Clang-Format 17 instead of 21

---------

Co-authored-by: SnepOMatic (Rhew) <github@rhew.co.uk>
2025-11-15 23:51:19 +01:00
Christian Semmler
39d2f52987
Free dictionary on failed load (#733)
Free the dictionary if it failed to load.
2025-11-10 19:38:40 -07:00
It's Rhew!
bad285500a
- Set defaults if ini exists, but empty. (#730)
- Create a new dictionary object, not use null object.

Co-authored-by: SnepOMatic (Rhew) <github@rhew.co.uk>
2025-11-11 02:16:33 +00:00
olebeck
47736862a7
Add PSVita port (#541)
* add psvita to cmake

* no PIE for vita

* add modules to vpk

* use custom pvr apphint

* select correct renderer for sdl renderer

* patch sdl3 shaders, got something on screen!

* use proper cmake patch for sdl

* add missing module

* remove test window which causes a bug in the vita sdl port to show up

* add gxm renderer (not working with display yet)

* avoid sdl renderer for vita, seems broken

* make gxm renderer work with new d3drm

* fix rendering somewhat, some geometry shows up

* support paletted textures directly to avoid copying the texture twice

* fix Draw2DImage

* make 3d work, broken lights

* clean up a bit

* fix normals matrix

* remove some unneeded changes

* forgot env var

* wrong env dest

* run clang format

* correct texture address mode, use tlsf instead of sceClibMspace

* double buffered uniforms seem to work now

* missed a line

* update GXMRenderer_EnumDevice

* hopefully actually fix uniform buffers

* run clang-format

* remove a change thats not needed

* improve fragment shader performance

* add vita to dist folder

* add base for vita config app

* add config self to vpk

* transform touch events to virtual size

* add livearea graphics

* Update cmake file to include livearea assets

* put manual in the right place

* add sample rco

* add messagebox on vita

* triple buffer textures because fences arent a thing on vita and making draw&cpu sync would be too slow

* make config app not crash on launch

* change defaults

* update gxm renderer with interface changes

* split 2d and 3d shaders completely

* update gxm renderer

* fix transition on gxm

* clang format

* move config cmake

* move CONFIG_vita

* always clear before drawing 2d image

* hopefully fix windows build

* clang-format fix broken includes

* order again

* undo moving qt cmake to its own list

* move uic search path

* use ifdefs for all d3drm backends, cpack to generate vpk

* cmake wrong escape

* small cleanups in gxm renderer

* defer texture delete to avoid overwriting the texture during a frame

* clang-format

* more of the layout for config

* remove top buttons

* use SceAppSettings instead of custom ui

* use select for back to info center on vita, to make screenshots possible again

* remove accidentally left in add_subdirectory

* adjust diskpath to be like other ports

* use vita_create_vpk and not cpack

* gxm: msaa support, fix wrong file path

* gxm: add mipmaps (disabled)

* clang-format

* fix open isle.ini with fopen

* add missing strings

* use iniparser_set not dictionary_set

* add default save path to config

* load config app after initializing ini on vita

* fix config build

* change the default disk & cd path, update the paf library

* update paf library headers

* include orders for clang-format

* clean up

* make shader compiler not required

* move asm language

* warn instead of error when shader source is changed when no compiler is found

---------

Co-authored-by: Li <li@silica.codes>
Co-authored-by: Christian Semmler <mail@csemmler.com>
2025-10-31 23:23:12 +00:00
Christian Semmler
d890e3db58
Add default MSAA and Anisotropic values to .ini generation (#717) 2025-09-24 19:51:47 +00:00
Christian Semmler
7eb1692290
Remove SDL3 workaround for missing mouse add events (#711) 2025-09-13 18:14:42 +02:00
Christian Semmler
73c6be7abf
Clean up config code (#679)
* Clean up config code

* Export function

* Fix
2025-08-15 18:56:36 +02:00
Cookie
f06731784e
Android port (#656)
* initial files

* get building

* proper paths & default to virtual mouse

* Wrap gradle under cmake & build SDL3.aar

run cmake with  -DANDROID_NDK_PATH=/path/to/ndk to generate the .aar & run the gradle build

if using Android Studio you will have to run the aar script manually(or do the cmake cmd) then put the normal cmake args inside '-PcmakeArgs="-DCMAKE_BUILD_TYPE=Release ...."'  at `Settings > Build, Execution, Deployment > Gradle-Android Compiler > Command-line Options`
Check CMakeLists.txt Android build block for more info

* workflow and format

* dont cmake -> gradle -> cmake

* icons

* prevent first start crash due to missing isle.ini

dont force require gles3 (vulkan & software are options)

* cleanup

* cmake script & ci cleanup

use a cmake script to downoad SDL3 sources for aar building

* script cleanups & gradle stub for android studio

handle the env var setting for the sdl3 aar build script

* signing

needed repository secrets:
- keystore  :  key.jks in base64
- keystorePassword  :  Key store password
- keyAlias  :  Key alias, ex key0
- keyPassword  :  Key Password

* conditionally run action without keys

* compile SDL once & cross-platformize gradle tasks

* suggestions

* use find_package over manual configuration

* use MxString

---------

Co-authored-by: Anders Jenbo <anders@jenbo.dk>
Co-authored-by: Christian Semmler <mail@csemmler.com>
2025-08-15 15:12:35 +00:00
VoxelTek
e8140f9d51
Fix debug, improve isle-config (#672)
* Fix debug, improve `isle-config`

* Change to const char, rename to p_execName
2025-08-13 14:29:07 +00:00
Christian Semmler
6a8aaaabe2
Add widescreen.si to web port (#666)
* Add widescreen.si to web port

* Move logic
2025-08-11 04:41:42 +02:00
Christian Semmler
f677fe5091
Merge branch 'master' of github.com:isledecomp/isle-portable 2025-07-23 13:21:45 -07:00
Christian Semmler
c774a8edde
Merge remote-tracking branch 'isle/master' 2025-07-23 13:21:39 -07:00
Christian Semmler
1a2e03de47
Make Anisotropic filtering configurable (#641) 2025-07-23 20:18:05 +00:00
Christian Semmler
a5a3c4ec83
Upgrade OpenGL ES renderer to 3.0, add option for MSAA (#636) 2025-07-23 18:00:48 +00:00
VoxelTek
8f6bfe078b
Add MSAA to isle-config, improve Exclusive Fullscreen resolution options. (#638)
* Add dropdown for exclusive fullscreen resolutions

* Add MSAA support

* Make clang-format happy

* Fix tab order

* Make clang-format happy again
2025-07-23 19:33:39 +02:00
Fabian Neundorf
eae038f6a9
Clear unknowns in MxVideoParamFlags (#1648) 2025-07-22 20:58:00 +02:00
Christian Semmler
e86fd71560
Handle SDL_EVENT_FINGER_CANCELED (#633) 2025-07-20 16:33:53 +00:00
Christian Semmler
10195dcbcb
Add more rumble events (#627)
* Add more rumble events

* Add check for haptic
2025-07-18 22:52:42 +00:00
Christian Semmler
38213275cf
Proper cleanup on user requested exit (#624) 2025-07-18 21:40:25 +00:00
VoxelTek
84bd0a1a87
Rework of isle-config, add resolution adjustment and max framerate settings (#608)
* Add resolution adjustment, framerate limit, etc

- isle-config has been reworked to be a smaller, more organised window
- resolution adjustment has now been added to isle-config, so that the resolution on windowed game start can be set
- max framerate setting added to isle-config
- higher-quality options disabled in isle-config if computer has too little RAM (unlikely)

* Make clang-format happy

* Switch to MxS32, move variable declaration to end

* Adjust sizing of resolution spinboxes

* Add full screen video mode

When full screen is enabled, the game goes full-screen, and the screen resolution changes.

* Rework to add Exclusive Fullscreen option.

* Remove comment

* Raise max LoD value to 60

* Fix tab order

* Simplify code
2025-07-16 02:29:45 +00:00
VoxelTek
b6a4f65db4
Add CLI help message, accessible with --help (#614)
* Add CLI --help argument

* Make clang-format happy

* Move to switch instead of creating temp var

* Remove unnecesary break

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

* Remove unnecesary break 2

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

* Make clang-format happy again

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
2025-07-16 00:29:42 +00:00
Christian Semmler
deca5e5a2e
Add device and gamepad haptics to web port (#613)
* Add device and gamepad haptics to web port

* Update skip.yml
2025-07-15 23:50:14 +00:00
Christian Semmler
f20fc475c7
Integrate SDL Haptic API (#607)
* Integrate SDL Haptic API

* Close other devices

* Fixes
2025-07-15 23:47:37 +02:00
Christian Semmler
19edb0340e
Remove SDL mouse/touch event bug workaround (#606)
* Remove SDL mouse/touch event bug workaround

* Small refactor

* Add include
2025-07-14 18:51:11 +00:00
Christian Semmler
21ce906a32
Add haptic feedback (rumble) (#596)
* Add rumble event for hit actor

* Add ini option
2025-07-13 20:26:47 -07:00
Christian Semmler
232ef07b51
Allow extensions to define options (#590)
* Allow extensions to define their own options

* Fixes

* Remove logging
2025-07-13 02:30:29 +00:00
Christian Semmler
42bac60ec5
Add new touch control scheme ("gamepad") (#587)
* Add new touch control scheme

* Add export

* Fix enum naming
2025-07-13 04:13:37 +02:00
Christian Semmler
7c91a14875
Extended full screen capabilities for Web port (#584)
* Extended full screen capabilities for Web port

* Add Emscripten patches

* Add back newline
2025-07-12 03:05:33 +02:00
Helloyunho
96f60cb683
🩹 fix: touch screens go beep and done (#573) 2025-07-10 12:43:46 +02:00
Christian Semmler
68c967ebdf
Add extensions, TextureLoader (#570)
* Add extensions, `TextureLoader`

* Fix wording

* Add to default ini

* Add folder to flatpak

* Use different enable strategy
2025-07-10 00:24:59 -07:00
Helloyunho
4e8ac86415
Dynamically on/off virtual cursor (#567)
*  feat: eliminate need of draw_cursor config

* 🩹 fix: type mismatch
2025-07-10 08:58:17 +02:00
Helloyunho
9d8cb64a19
Add iOS Port (#566)
*  feat: add ios support

* ⚗️ chore: trying some experiments to make ci working

* ⚗️ chore: is it really ci version problem?

* 💚 fix: it really is just a ci version issue

* 🩹 fix: go as low as possible

* 🩹 fix: support ipad
2025-07-10 08:34:52 +02:00
olebeck
4446aaaf53
translate and scale touch coordinates to the viewport (#565) 2025-07-09 12:55:26 +00:00
Christian Semmler
37c6abe3b5
Disable offscreen canvases in case of no WebGL support (#559) 2025-07-08 21:43:34 +02:00
Helloyunho
b82cfc4b36
Recheck through gamepads when gamepad is added or removed (#546)
* 🩹 fix: recheck through gamepads when gamepad is added or removed

* 🚑️ fix: oops i forgot to put lego1_export
2025-07-07 02:36:37 +00:00
Helloyunho
04bcfde38b
Add Xbox One/Series X|S port (#526)
* chore: update README.md

*  feat: got the audio working

* 🔧 feat: add appxmanifest

* 🩹 fix: remove opengl stuff

* ⚗️ feat: add button support

* ⚗️ chore: try to make less modification from upstream

* 🩹 fix: doesnt compile

*  feat: forcibly draw cursor and map right joystick to cursor

* 🩹 fix: remap joystick

* 🎨 fix: formatting

* 🎨 fix: cmakelists formatting

* 🩹 fix: 3ds build

* 👷 feat: add xbox one ci build

* 💚 fix: github hates xbox series naming

* 💚 fix: dont run cpack for xbox one, vs does that for you

* 💚 fix: xbox one need to use vs as generator

* 💚 fix: please

* 💚 fix: it could be msix not bundle

* 💚 fix: try recursive directory search when upload release

* 🔨 feat: support cpack

* 👷 feat: better packaging

* 💚 fix: ignore if mv fails

* 🔧 feat: add mouse sensitivity config

* 🔥 chore: dont need you

* ⚗️ chore: use d3d11

*  feat: hardware acceleration!!

* 🚸 chore: change default cd path so user can easily copy the assets to xbox

* 🧑‍💻 chore: improve reusability

* 🚨 fix: formatting error

* 🚸 chore: draw cursor by default

* 🎨 chore: cmakelists formatting

* chore: match with upstream

* chore: more matching with upstream

* chore: don't need you

* 🩹 fix: apply changes

* 🔥 fix: we don't need controller map anymore

* 🩹 fix: use isle style include guard

* 🩹 fix: last newline fix

* 👷 chore: use cpack

* 💚 fix: try to fix ci

* 💚 fix: i tried my best...
2025-07-06 07:28:00 -07:00
Helloyunho
dbff98f354
🩹 fix: click trigger spam clicks (#537) 2025-07-06 15:22:21 +02:00
Anders Jenbo
fd0b6bcaca
Some quick dpad mouse control (#533) 2025-07-06 05:45:27 +00:00
Anders Jenbo
004b88e02e
Start virtual mouse at center of screen (#532) 2025-07-06 07:06:14 +02:00
Helloyunho
80514e2af7
Support gamepad (#527) 2025-07-05 21:27:24 +02:00
Anders Jenbo
92a96282b3
Fix tabbign in and out of fullscreen (#514) 2025-07-04 04:48:09 +02:00
Christian Semmler
f1b22ee025
Allow Web port to be playable in Firefox Private (#513) 2025-07-04 01:28:45 +02:00
Helloyunho
0191be7461
Make draw cursor feature work for modern platforms (#480) 2025-07-03 18:05:46 +02:00
Christian Semmler
10b6d28cf8
Revert "Add resizable property to window creation (#477)"
This reverts commit 0e70735549.
2025-07-02 08:06:09 -07:00
VoxelTek
0e70735549
Add resizable property to window creation (#477)
Add resizable property to window creation. Allows Close button to be present in some cases where it did not appear.
2025-07-02 15:16:54 +02:00
Joshua Peisach
1ff768935e
3DS Port (#450)
* [WIP] 3ds port

Recommit of everything after the 2d renderer merge

* VERY AWESOME FEATURE FRFR

* Stopped CPU suicide and app crashing for now

* put in Texture3DS function thing

* Fix clear color

* Implement 2D rendering via Citro3D

* Set 3dsx smdh metadata

* Render world content, sort of

* Push mesh dynamically

* Remove Citro3D init hacks

* Clean up Citro3D implementation

* Try to upload meshes and convert matricies

* Fix 3D rendering

* Apply optimizations

* Implement lighting

* Set 3dsx smdh metadata

* Revert "Apply optimizations"

This reverts commit 6660082fef.

* Apply optimizations

* Added a cleaner icon (#4)

* Fix pure buffer clear frames (#9)

* Disable OpenGL on 3DS (#10)

* Fix tiled textures and improve UI image quality (#11)

* Create 3DS default config overrides

* 3ds: implement apt hooks

* remove unused import

* Apply suggestions from code review

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

* Update miniwin/src/d3drm/backends/citro3d/renderer.cpp

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

* Separate 3DS apt hook code + move cmake 3ds into ISLE_BUILD_APP

* miniwin: use citro3dd if debugging

* Optimize texture encoding (#12)

* Cleanup

* Set correct mipmap level for UI textures (#13)

* cpack: include the .3dsx

* Add 3DS CI

* Fix CI

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

* syntax

* Refactor c3d renderer (#14)

* Refactor c3d renderer

* format

* Apply suggestions from code review

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

---------

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

* n3ds: just distribute the .3dsx

* upload 3dsx

* Skip uploading 3DS artifacts

* Update ci.yml

* Update ci.yml

* Remove extraneous ifdef

---------

Co-authored-by: MaxBrick <maximusbrick@gmail.com>
Co-authored-by: Anders Jenbo <anders@jenbo.dk>
Co-authored-by: Steven <139715581+StevenSYS@users.noreply.github.com>
Co-authored-by: Christian Semmler <mail@csemmler.com>
Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>
2025-07-01 02:43:10 +00:00
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