Commit Graph

3895 Commits

Author SHA1 Message Date
kalaposfos13
6e675c32f2
Do not crash on encountering an unknown option in PosixSocket::SetSocketOptions (#4346)
* what's one more hacky bypass on this pile of already existing hacky bypasses amirite

* Stub only that one option vue needs
2026-05-10 14:18:39 +01:00
kalaposfos13
66112bc90a
Refactor pad handles (#4386)
* Set up [userid, type, index] -> pad_handle mapping and hook up currently existing GameControllers backend to it

* just use basic oop principles why are we even shoving callee responsibility in caller logic

* support special pads

* random edge case I thought of

* return error if handle is already opened, redirect scePadOpenExt to scePadOpen

* scePadClose

* error out if trying to close an unopened handle

* oof

* logging
2026-05-10 11:04:20 +03:00
Stephen Miller
d3597c7f18
Kernel.Vmm: Fix protection check for file mappings (#4388) 2026-05-09 16:09:51 -07:00
squidbus
05ccc586ff
shader_recompiler: Remove shared memory bounds checking. (#4385) 2026-05-10 00:07:24 +03:00
Valdis Bogdāns
05df651cd8
Add IME keyboard layout and panel metrics support (#3973)
* Add IME keyboard layout and panel metrics support

- Introduced new header and implementation files for IME keyboard layout handling.
- Added structures for viewport metrics, keyboard grid layout, and drawing parameters.
- Implemented functions to compute viewport and panel metrics for the IME dialog.
- Enhanced the IME dialog UI to utilize the new keyboard layout and metrics.
- Updated input handling to support new keyboard interactions and layout adjustments.
- Added caret management and text normalization features in the IME dialog state.
- Improved window positioning logic to accommodate different screen resolutions.

* fix for Maxos Linux builds

* Align IME behavior with real PS4 libSceIme/Dialog flow

Features:
- Add validation helpers for IME option/language/extended-option masks
- Implement `sceImeGetPanelSize` sizing logic
- Replace `sceImeSetTextGeometry` no-op path with real state/argument validation
- Align panel sizing/validation paths closer to PS4 IME behavior
- Improve panel text/caret handling reliability during UI updates
- Add IME panel movement via controller right stick
- Support mouse drag repositioning for the panel
- Respect `FIXED_POSITION` by disabling movement when locked

Updates:
- Tighten `sceImeOpen` checks (user/type/input method, handler, work alignment, reserved, overlap)
- Validate initial/runtime text rules (`\n`/`\r` and surrogate rejection) in open/set-text paths
- Enforce caret bounds and null-caret behavior in `sceImeSetCaret`
- Update `sceImeUpdate` to return `NOT_OPENED` in invalid states and respect handler matching
- Harden `ImeHandler` against null state/callback execution paths
- Optimize keyboard grid rendering by reusing per-frame buffers
- Reduce input callback allocations with fixed-size buffers
- Harden panel update paths for invalid handler/open-state cases
- Clamp panel position to visible screen bounds
- Apply stick deadzone/speed scaling for stable movement
- Keep panel coordinates consistent with IME coordinate mode

* 🤦‍♂️

* Enhance IME UI and Input Handling

- Introduced BrightenColor function to adjust color brightness for UI elements.
- Improved UTF-16 character handling with new functions to count UTF-16 units and reject input based on UTF-16 limits.
- Added functionality to clamp input buffer to UTF-16 limits, ensuring text input does not exceed specified limits.
- Refactored virtual pad input handling to encapsulate left stick directions and panel movement.
- Enhanced IME UI drawing logic to incorporate new input handling and navigation features.
- Updated keyboard layout handling to support dynamic configurations and improved navigation shortcuts.
- Integrated additional font ranges for better language support in the IME, including Chinese, Arabic, and Thai.
- Improved overall code structure and readability by utilizing modern C++ features such as std::vector and std::array.

* Remove non existing Roboto Medium font from IME initialization

* Enhance IME Dialog and UI with Improved Gamepad Navigation and Key Mapping

- Added support for disabling gamepad input through OrbisImeDisableDevice in ImeDialogState.
- Updated ImeKbLayout to modify key mappings for better character input, including changes to punctuation keys.
- Implemented enhanced left stick navigation with repeat functionality in ImeUi, allowing for smoother input handling.
- Introduced new constants for stick navigation delays and repeat intervals to improve responsiveness.
- Refactored input handling logic to accommodate both virtual and gamepad inputs, ensuring consistent behavior across devices.
- Added functionality to clear all text in the input field with a specific shortcut, aligning with expected user behavior.

* clang

* Enhance IME functionality with improved gamepad navigation and layout handling

* ime: fix specials/accent layout mapping and dynamic panel resize handling

- Expand specials/accent keyboard layouts to a 7-row model and move function keys to fixed bottom rows.
- Add variable row-height support to the keyboard grid (`fixed_bottom_rows`, `bottom_row_h`) and compute row offsets/span heights from layout config.
- Preserve function-row height in `ime_ui` and `ime_dialog_ui` while distributing remaining height across typing rows.
- Make mode-switch focus layout-driven by resolving `SymbolsMode`/`SpecialsMode` action keys in the active layout instead of relying on implicit row assumptions.
- Track panel layout anchor deltas in `ime_dialog_ui` and use press-offset dragging so cursor remains on the originally pressed point when panel dimensions/position change.

* Add IME UI enhancements and shared utilities

- Introduced new states for panel navigation and selector fade in `ime_ui.h`.
- Added a new header file `ime_ui_shared.h` containing utility functions and structures for virtual pad input handling, including deadzone application and stick navigation direction resolution.
- Updated `font_stack.cpp` to include additional Unicode ranges for general punctuation in the font atlas.

* Refactor IME settings: remove deprecated accessibility options and update references to use new settings structure

* Refactor IME UI Navigation and Activation Logic

- Introduced a new mechanism for handling virtual button repeat actions, improving responsiveness for gamepad navigation.
- Added support for stick navigation with adjustable repeat rates and initial delays, enhancing user experience during input.
- Removed the ImeSelectorFadeState structure and related logic to streamline the IME keyboard layout drawing process.
- Simplified the activation logic for menus, ensuring that menu activation is more intuitive and responsive to user input.
- Adjusted the navigation threshold for stick inputs to improve sensitivity and control.
- Cleaned up the code by removing unused variables and consolidating repeated logic into reusable functions.

* Refactor IME UI shared header: streamline code and improve structure

- Removed unused includes and redundant structures.
- Consolidated virtual pad snapshot handling and input state management.
- Introduced new structures for OSK pad input and navigation handling.
- Updated function signatures for clarity and consistency.
- Enhanced keyboard parameter application for OSK shortcuts.
- Improved overall readability and maintainability of the code.

* Refactor OskShortcutActionResult to simplify triangle button press handling

* Enhance IME Keyboard Layout and UI Functionality

- Added new key glyphs for Shift and Caps Lock in ime_kb_layout.h.
- Improved keyboard navigation logic to skip non-action keys.
- Introduced new constants for selector IDs in ime_ui.cpp for better readability.
- Refactored keyboard row and column clamping logic for clarity.
- Enhanced selector drawing logic with fade and pulse effects for better user feedback.
- Implemented functions for cycling keyboard case states and toggling keyboard family modes.
- Added functionality to focus on keyboard action keys based on their actions.
- Improved edit menu handling with new templated functions for better code reuse.
- Updated caret blinking logic to improve text input experience.
- Expanded symbol ranges in font_stack.cpp to include keyboard symbols.

---------

Co-authored-by: w1naenator <valdis.bogdans@hotmail.com>
2026-05-09 23:41:14 +03:00
rainmakerv2
c79abb6df4
ImGui:: Add position and icon arguments for notifications (#4383)
* add position arg

* add icon args

* fixup

* fix the fixup
2026-05-09 20:29:31 +03:00
squidbus
ac61f4aee2
shader_recompiler: Strip out manual bounds checking (#4380) 2026-05-09 10:05:18 -07:00
rainmakerv2
82c760135f
ImGui:: Notifications (#4379)
* notifications

* cleanup

* clang
2026-05-09 11:14:11 +03:00
Stephen Miller
8bcc19248e
Core: Fix argv[0] value (#4378)
* Fix executable path

* Remove args.empty() check

Emulator::Run adds the guest executable path, so arguments will never be empty.
2026-05-09 11:13:47 +03:00
oltolm
442a07a707
Fix compilation with mingw-w64 (#4365)
* cmake: apply sirit unused-command-line-argument flag only with Clang

* shader_recompiler: move Opcode magic_enum range customization to opcodes.h

Define the magic_enum range for Shader::Gcn::Opcode as a proper enum_range specialization in opcodes.h instead of relying on translation-unit macros in translate.cpp.

This makes the customization visible where the enum is used and avoids the GCC linkage/build issue.

* thread: use Windows thread naming path for MinGW-w64

Switch the thread naming guard from _MSC_VER to _WIN32 so MinGW-w64 builds use the Windows SetThreadDescription implementation instead of falling through the POSIX branch.

This matches the platform rather than the compiler and avoids the MinGW-w64 build issue.
2026-05-08 22:36:55 -07:00
Hog
7132795b7a
Refactor memory size handling to better handle vdec titles (#4373)
* Refactor memory size constants and calculations

Updated memory size handling in video decoder functions.

* Refactor video decoder frame size calculations

Updated frame size computation to use worst-case dimensions and adjusted alignment values.

* Refactor alignment logic to use Common::AlignUp
2026-05-08 09:28:44 -05:00
Stephen Miller
d85a5013ec
Kernel.Fs: Stub fstat on random devices (#4368) 2026-05-06 15:40:41 -07:00
Stephen Miller
b10c3c7697
Stub an actual code for sceNpAuthGetAuthorizationCode functions (#4369)
I've had exactly one game specifically complain about the auth code being empty. Provide some code so relevant titles work a little better.
2026-05-06 15:40:14 -07:00
Stephen Miller
6623489d3d
Libs: Proper names for some functions (#4366)
* Add new ulobjmgr names

* libScePad function

* Clang
2026-05-06 23:31:32 +03:00
Ploo
5302e63fc1
fix: prevent system spdlog from conflicting with externals/spdlog on FreeBSD (#4362)
Signed-off-by: lizzie <lizzie@eden-emu.dev>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
2026-05-06 22:04:39 +03:00
Niram7777
4a554535bb
Vulkan fix sync issue, probably never caused issue but it makes validation happy (#4348)
[Render.Vulkan] <Error> (shadPS4:GpuComm) vk_platform.cpp:57 DebugUtilsCallback: SYNC-HAZARD-READ-AFTER-WRITE: vkCmdBeginRendering():
READ_AFTER_WRITE hazard detected. vkCmdBeginRendering reads pRenderingInfo.pColorAttachments[0] (VkImageView 0x5f1a0000005f1a[ImageView 1920x1080x1 0x244980000:0x2aa9800 1:1 0:0 (Color)], loadOp VK_ATTACHMENT_LOAD_OP_LOAD), which was previously written during an image layout transition initiated by vkCmdPipelineBarrier2[gfx:0x213a04c50:DrawIndexAuto].
The current synchronization allows
VK_ACCESS_2_SHADER_READ_BIT accesses at VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT|VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT|VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT|VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT|VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT|VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT|VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI,
VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT accesses at VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT,
but to prevent this hazard, it must allow VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT accesses at VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT.
2026-05-05 14:24:33 -07:00
Stephen Miller
4ee33c6636
Core: Fix trophy extraction for games with separated updates (#4355) 2026-05-05 14:22:26 -07:00
squidbus
8175194bba
misc: Fix initializer order warnings (#4358) 2026-05-05 14:21:21 -07:00
Stephen Miller
4d3827c349
Avoid out-of-bounds array access when checking custom color for TV Remote (#4356) 2026-05-04 17:34:33 -07:00
Niram7777
6633d7252c
Log read setting from old toml outside the [Log] section (#4342) 2026-05-05 02:21:28 +03:00
Marcin Mikołajczyk
34b35b526e
Neo: Float16 packed math (#4354) 2026-05-04 15:21:20 -07:00
Marcin Mikołajczyk
26eaa3e3af
Neo: 16bit shift instructions (#4351) 2026-05-04 10:13:42 -07:00
rainmakerv2
ad102a173a
Imgui: make imgui emulator settings accessible with hotkey (#4345)
* put all big picture files in same folder

* Fix includes

* Update main.cpp

* make imgui settings dialog accessible by hotkey
2026-05-04 13:51:08 +03:00
Kravickas
ea8bed1c94
Implement sceGnmInsertDingDongMarker (#4340) 2026-04-30 22:03:28 -07:00
Marcin Mikołajczyk
a3e25efad5
Neo: V_MAD_MIX opcodes (#4338) 2026-04-30 16:56:27 -07:00
Marcin Mikołajczyk
f90b89ce61
Float shenanigans (#4327) 2026-04-30 16:55:39 -07:00
Stephen Miller
1956b791d4
Properly clear handle data on close (#4339) 2026-04-30 16:55:04 -07:00
Stephen Miller
e7d571c8da
Common: Restore old log filter behavior (#4336)
* Restore old log filter behavior

Not sure exactly why this hadn't happened yet.

* Suggested change

* Update documentation to include changes

* Remove mention of debug log class

Debug is both a valid class and level, kinda confusing to use it as an example in my opinion.

* Error instead of assert

* Missing include
2026-04-30 23:00:21 +03:00
kalaposfos13
5bfec866b1
Change ASSERT macros to be do while loops instead of lambdas to preserve original function names in the log (#4337)
* Change ASSERT macros to be do while loops instead of lambdas to preserve original function names in the log

* copyright 2026
2026-04-30 19:42:54 +03:00
TheThunderTurner
6d0318a840
Fix assertion condition for request_id limit (#4334) 2026-04-29 10:02:19 -05:00
Stephen Miller
475696c542
Bump enum range to fix unknown opcode logging (#4333) 2026-04-29 07:11:41 +03:00
Marcin Mikołajczyk
76729835d7
Neo: bit and alu instructions (#4332) 2026-04-28 14:54:15 -07:00
Marcin Mikołajczyk
7755e98a2f
Parse Data Parallel Primitive (#4331) 2026-04-28 12:53:13 -07:00
baggins183
09c20d4636
Add support for LsHsEsGs (tess + geometry) pipelines where tess in onchip and geometry is offchip (#4328) 2026-04-28 22:41:09 +03:00
georgemoralis
cf238acea9
fixed truncate of request_id data (#4330) 2026-04-28 19:06:43 +03:00
Marcin Mikołajczyk
d47b0524ce
V_ADD3_U32 and V_OR3_B32 (#4326) 2026-04-27 13:35:37 -07:00
Marcin Mikołajczyk
fba374442c
file_sys: apply case-insensitive search to mods_path on GNU/Linux and macOS (#4312) (#4310)
The case-insensitive fallback search() in GetHostPath is only
invoked for patch_path and host_path, so mods whose file or folder
capitalization does not exactly match the guest path are silently
bypassed even when the files are present. Mirror the existing
search(patch_path) pass for mods_path, placed first to preserve
mod > patch > base precedence.

Co-authored-by: Matías Buzzo <matias@mbuzzo.com>
2026-04-27 18:07:05 +03:00
Matías Buzzo
f98f1aac5a
file_sys: apply case-insensitive search to mods_path on GNU/Linux and macOS (#4312)
The case-insensitive fallback search() in GetHostPath is only
invoked for patch_path and host_path, so mods whose file or folder
capitalization does not exactly match the guest path are silently
bypassed even when the files are present. Mirror the existing
search(patch_path) pass for mods_path, placed first to preserve
mod > patch > base precedence.
2026-04-27 11:00:31 +03:00
rainmakerv2
5d506c98aa
Fix big picture crash on some compiled builds (#4321)
* Update main.cpp

* pass executable name to big picture mode
2026-04-27 10:03:51 +03:00
Stephen Miller
e33a185423
Recompiler: Use num_records to check if an inline buffer exists (#4323)
* Change buffer check to use num_records instead

* Fix the address fixup check

Since base_address == 0 is possible, this should specifically check against 1 (which we reserve for null buffers).
Kinda shocked TLOU/Uncharted worked at all without setting this.
2026-04-27 08:39:00 +03:00
Jun-Hong Cheng
a762f70df3
Fix Vulkan device sorting logic violating strict weak ordering (#4322) 2026-04-25 13:57:00 -07:00
squidbus
47f5cc1437
shader_recompiler: Only forward declared number of vertex inputs. (#4293)
* shader_recompiler: Only forward declared number of vertex inputs.

* shader_recompiler: Account for clip distance emulation in number of exports.
2026-04-25 18:33:29 +03:00
Niram7777
5a15eb4d94
Fix log async thread name and custom setting not loaded (#4319)
* Log fix thread name in async

* Log always load custom settings

* Log always in color like before spdlog
2026-04-25 17:19:30 +03:00
Marcin Mikołajczyk
99f2480e21
Neo: V_*_F16 arithmetic ops (#4311) 2026-04-25 12:51:02 +02:00
Stephen Miller
2c9eee1eb5
Reduce address space size for FreeBSD (#4318) 2026-04-25 09:14:34 +03:00
georgemoralis
737d23b28b
Save fixes VIIIIX (#4315)
* fix issue with concurrent writes , this fix racing with permission denied

* optimize

* fixup
2026-04-24 15:16:15 -05:00
georgemoralis
f710074500
return proper error if user is invalid (#4317) 2026-04-24 23:06:34 +03:00
shinra-electric
615949ea40
CI: Silence some warnings (#4314)
* Bump checkout version

* Don't install ninja
2026-04-24 17:50:49 +03:00
Valdis Bogdāns
e455a2f41a
go-to-noto-again (#4309)
* renderer: update font handling and add new font support
- Added support for multiple NotoSans fonts including Arabic, Thai, and CJK.
- Refactored font loading logic to use FontStack for better management.
- Removed deprecated NotoSansJP font and updated font paths in CMake.

* optimize atlas size

---------

Co-authored-by: w1naenator <valdis.bogdans@hotmail.com>
2026-04-23 18:52:04 +03:00
georgemoralis
f24ad8568e
Revert "renderer: update font handling and add new font support (#4305)" (#4308)
This reverts commit 417d91cc79.
2026-04-23 17:18:32 +03:00