- Properly load all MAT4 data
New fields/inlines/structs are based on what HD does. Still looking for ways to clean things up, particularly getMatInitData.
Adds an Output Resampling option to the Video tab to allow choosing between the old Bilinear sampler and a new Area sampler. Area sampling produces a much cleaner, softer image when downscaling, and a significantly sharper image when upscaling. This can also serve as a halfway decent anti-aliasing substitute until we have a more proper implementation.
* 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>
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.
We screwed up when redacting git history before release, and
accidentally rewrote all but *two* of the entire history of decomp. This
is me re-merging the history with "git merge -s ours"
* Adds option to unbind using controller only
* Adds a new cheat to let you transform from the start of the game, without Midna or the Shadow Crystal
* Revert "Adds a new cheat to let you transform from the start of the game, without Midna or the Shadow Crystal"
This reverts commit 51ed736729.
* Do not allow unbinding the A or B buttons to prevent softlocks when no other input sources are available (e.g. playing on a TV)
* change 'and' to '&&' in accordance with code standards
* Add a button to reset to default controls, and hides the digital L and R binds except on advanced menu.
* Rename Controller mentions to Device + Extra menu sounds
* Shouldn't add a column here
* Changes mentions of controller to device in accordance with #1479
---------
Co-authored-by: MelonSpeedruns <melonspeedruns@stratobox.net>
* added .zed/ to gitignore (editor configs)
* remember window position upon closing
* Save window location on SDL_EVENT_WINDOW_MOVED or SDL_EVENT_WINDOW_RESIZED
* Fix code format mistakes
* Also persist window width/height
* Undo change to input::handle_event
* Undo aurora submodule change
---------
Co-authored-by: Luke Street <luke@street.dev>