659 Commits

Author SHA1 Message Date
Ash 2da6590657 feat: FPS Limiter (#1446)
* Add interpolation frame rate cap

* wip: reworked framelimiter

Based on my testing this is a bit more stable in frametimes.

* wip: efficiency improvement + windows build fix

Significantly improve efficiency by using a hybrid approach.

* wip: UI changes

* wip: end frame AFTER limiting

* wip: remove unused include

* wip: minor ui code change

Makes it easier to remove/add presets

* Simplify Limiter UI

- Change enableFrameInterpolation to an enum with off/capped/unlimited values
- Simplify the UI to use 2 settings (unlock framerate + a max value entry)

* wip: slight limiter simplification

* wip: implement review suggestions

* wip: fix syntax error

* wip: revert enum order + replace old checks

* Fix compile error

---------

Co-authored-by: SailorSnoW <sailorsnow@pm.me>
Co-authored-by: Loïs <49660929+SailorSnoW@users.noreply.github.com>
Co-authored-by: SuperDude88 <82904174+SuperDude88@users.noreply.github.com>
Co-authored-by: Luke Street <luke@street.dev>
2026-05-17 20:11:32 -06:00
TakaRikka ec281a475f Merge pull request #1573 from TwilitRealm/j2dindtexmtx-be
Endian-swap indirect texture matrix in J2D data
2026-05-17 18:23:15 -07:00
doop 2be2615e61 Endian-swap indirect texture matrix in J2D data
Fixes copy/delete effects on the file screen.
2026-05-18 00:46:45 +00:00
PJB3005 629cd2f9d3 Missed these in JASHeapCtrl.h 2026-05-18 02:16:43 +02:00
PJB3005 831a34ac8f Right, the definition needs the specifier too 2026-05-18 02:15:12 +02:00
PJB3005 05edbec827 Tag operator new overloads with noexcept
According to the C++ standard, regular operator new must always return a valid pointer, and allocation failure should throw an exception.

The original game did not use exceptions, and instead had its operator new return null on alloc failure.

Clang and GCC seem to be enforcing the standard here, and this is causing crashes on non-Windows platforms like https://sentry.twilitrealm.dev/organizations/twilitrealm/issues/952/, where a JAISe allocation failure (custom pooled operator new overload) crashes the game when it should be handled gracefully. MSVC seems to not make use of this opportunity, meaning the code works as intended.

Tagging the operators with noexcept seems to satisfy GCC, but I admit cppreference is very light on details here.
2026-05-18 02:06:38 +02:00
gymnast86 ef43b94370 Add options for binding custom buttons to specific actions (#1141)
* custom action framework and first person custom action

* add bind for midna call

* custom binding for opening dusklight menu

* turbo speed button action

* text descriptions

* fix not stopping default GC controller menu combo

* more explanation text

* block bind actions when in the dusklight menu
2026-05-12 19:36:07 -06:00
doop d0f8ea56f9 Interpolate more things (#699)
* Interpolate trim height

* Interpolate (some) fades
2026-05-08 11:50:44 -06:00
qwertyquerty 39d43a8d8f Keyboard mouse binding controls (#682)
* kbm controls

* submodule

* files.cmake

* a

* Fixes

* include <cstring> in J3DStruct.h

---------

Co-authored-by: Luke Street <luke@street.dev>
2026-05-06 22:07:28 -06:00
Luke Street 230868af3c Add autosave spinner & make RmlUi respect 4:3
Resolves #627
2026-05-05 23:18:11 -06:00
Jasper St. Pierre 1ee0f862e1 map highlight fix 2026-05-02 11:45:01 -07:00
Jasper St. Pierre 6b327c9f61 disable jpa interp for now
closes #618
2026-05-02 11:44:21 -07:00
TakaRikka 1c5686f71b Merge pull request #616 from TwilitRealm/HRTF
Emulate Surround option
2026-05-01 22:51:25 -07:00
TakaRikka b9e0f2b9ca Merge pull request #611 from TwilitRealm/26-05-01-heap-crash-log
Improve heap crash logging
2026-05-01 22:19:33 -07:00
madeline 93c8bcc210 hrtf 2026-05-01 13:04:08 -07:00
Jasper St. Pierre 2c987b0211 build fix 2026-05-01 00:17:51 -07:00
Jasper St. Pierre 3d860ad454 jpa interp start 2026-05-01 00:12:26 -07:00
PJB3005 48b98a5432 Make JKRExpHeap OOM logging more verbose 2026-05-01 08:50:55 +02:00
Jasper St. Pierre ce9a5c06d5 heap name 2026-04-30 22:19:19 -07:00
madeline 06e6b0d47e fix safety bit on interp fixes #507 2026-04-23 03:58:35 -07:00
madeline b06c1911c6 Merge branch 'main' of https://github.com/TakaRikka/dusk 2026-04-22 22:33:59 -07:00
madeline bfd8b9f453 make state share loads basically instant 2026-04-22 22:27:14 -07:00
Luke Street 5fcffa0b4f Use SDL_GetTicksNS instead of std::chrono 2026-04-22 17:18:18 -06:00
Luke Street 30a99c22f1 Reorganize ImGui menus (#456)
* Reorganize ImGui menus

* Fix crash_reporting.cpp

* Update aurora
2026-04-20 20:45:16 -06:00
Luke Street 8b9f09bda5 Frame interp: Fix cloud shadow flickering (#446) 2026-04-19 21:31:34 -06:00
TakaRikka 1cf14f176c Merge pull request #438 from TwilitRealm/frame-interp-simplify
Frame interp simplify
2026-04-19 14:58:38 -07:00
Jasper St. Pierre 2f84f0eaa4 j3d small cleanup 2026-04-19 14:16:38 -07:00
Jasper St. Pierre 53c005c4f1 jutfader doc 2026-04-19 12:48:50 -07:00
Jasper St. Pierre bb9a88d7dc frame interp camera cleanups 2026-04-19 02:25:00 -07:00
Jasper St. Pierre 8d3cb51157 frame interp simplify 2026-04-18 23:26:28 -07:00
TakaRikka 7fff3b5ae0 Merge pull request #430 from TwilitRealm/fix/JAISeqMgr
Fix JAISeqMgr
2026-04-18 22:57:57 -07:00
Jasper St. Pierre b3f8fecfe4 water interpolation fix 2026-04-18 22:17:35 -07:00
Pheenoh fcfcb35929 fix JAISeqMgr beginStartSeq_ to check free memory before allocation 2026-04-18 19:53:40 -06:00
Luke Street 2ec6f65572 Merge remote-tracking branch 'refs/remotes/origin/main' into unhackify-widescreen
# Conflicts:
#	src/m_Do/m_Do_main.cpp
2026-04-17 23:12:58 -06:00
Luke Street 5c20f527ac Widescreen rework & IR scaling 2026-04-17 23:11:43 -06:00
Irastris 59d2014fb9 Frame Interp: UI Pacing Simplification 2026-04-17 23:24:47 -04:00
Lurs edea6a1418 fix #260 and potentially more 2026-04-17 16:12:53 +02:00
Irastris 0508acaa79 Frame interp: Dreamworks' Turbo (2013) 2026-04-14 21:59:24 -04:00
CraftyBoss ec091ac3af change ANDROID define to TARGET_ANDROID 2026-04-14 03:18:21 -07:00
CraftyBoss 35650784c3 Merge branch 'main' into android-building 2026-04-14 03:17:07 -07:00
CraftyBoss 86c1e21ac1 fix compilation error
GlyphTextures no longer exists
2026-04-14 03:07:47 -07:00
CraftyBoss a2f8fffc8d Merge branch 'main' into android-building 2026-04-14 02:48:24 -07:00
TakaRikka 38cfaae940 Merge pull request #360 from TwilitRealm/26-04-13-font-opts
Text Rendering optimizations
2026-04-14 02:38:59 -07:00
CraftyBoss b7f3dbb8b3 Merge remote-tracking branch 'origin/main' into android-building
# Conflicts:
#	CMakeLists.txt
2026-04-14 01:03:50 -07:00
Irastris d32dc7481e Frame interp: Initial presentation sync implementation 2026-04-14 02:41:11 -04:00
Irastris 8ea0352fed Frame interp: Initial presentation sync implementation 2026-04-14 02:33:44 -04:00
PJB3005 143aa51eb3 Make JUTResFont load all texture data into one texture
Together with the previous change, this enables entire blocks of text to be rendered in one draw call.
2026-04-13 19:09:16 +02:00
PJB3005 18995f3d7c Enable some draw call merging in text rendering
Don't set state between characters if possible.

Next step is page merging so it can do full lines of text at once.
2026-04-13 13:27:21 +02:00
CraftyBoss 5e6d240d0f Merge remote-tracking branch 'origin/main' into android-building 2026-04-13 01:05:16 -07:00
Jasper St. Pierre 9f22f27909 fixes and cleanups for j3d material 2026-04-12 20:14:24 -07:00