Commit graph

24135 commits

Author SHA1 Message Date
swurl 863b0e9e86
fix translations
Signed-off-by: swurl <swurl@swurl.xyz>
2025-05-10 13:34:25 -04:00
swurl 28d2b06380 Options for Data Migration (#95)
Copy, move, or link

Co-authored-by: KeatonTheBot <onikeaton@gmail.com>
Signed-off-by: swurl <swurl@swurl.xyz>

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/95
Co-authored-by: swurl <swurl@swurl.xyz>
Co-committed-by: swurl <swurl@swurl.xyz>
2025-05-10 15:40:15 +00:00
swurl 09c72e9f98 update translate (#100)
Co-authored-by: Pavel Barabanov <pavelbarabanov94@gmail.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/100
Co-authored-by: swurl <swurl@swurl.xyz>
Co-committed-by: swurl <swurl@swurl.xyz>
2025-05-10 15:39:35 +00:00
swurl be552c37a1 ui/overlay: Fix enhanced frame pacing naming and disable frameskip for now. (#99)
Signed-off-by: swurl <swurl@swurl.xyz>
2025-05-10 11:38:06 -04:00
Pavel Barabanov bc649965ee Translation of new features (Android) 2025-05-10 12:19:44 +03:00
Maran Br 8f5a65bdb0 Fixes second controller not detected in DKTF and possibly other games 2025-05-09 14:20:53 +00:00
swurl aa333e6fb1 Vulkan 1.4 and New Extensions (#93)
- Add descriptor_indexing, VIDS, provoking_vertex
- Fix up EDS
- Implement VK 1.4

Co-authored-by: JPikachu <jpikachu.eden@gmail.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/93
Co-authored-by: swurl <swurl@swurl.xyz>
Co-committed-by: swurl <swurl@swurl.xyz>
2025-05-09 14:19:51 +00:00
MrPurple666 d75dc79f26 Some fixes before Release (#92)
Co-authored-by: MrPurple666 <antoniosacramento666@gmail.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/92
2025-05-08 23:03:52 +00:00
swurl f786802b9b User Data Migration from Citron, Sudachi, and Yuzu (#91)
Includes citron, sudachi, yuzu

currently broken, because the eden dir is always made early?

Signed-off-by: swurl <swurl@swurl.xyz>

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/91
Co-authored-by: swurl <swurl@swurl.xyz>
Co-committed-by: swurl <swurl@swurl.xyz>
2025-05-08 22:16:07 +00:00
swurl d659d6f5b4 Runtime option for flushing logs by line (#90)
Signed-off-by: swurl <swurl@swurl.xyz>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/90
Co-authored-by: swurl <swurl@swurl.xyz>
Co-committed-by: swurl <swurl@swurl.xyz>
2025-05-08 06:20:20 +00:00
crueter 4661909f4c Firmware 20.0.0 Initial Implementation & Android: Uninstall Firmware Button
Co-authored-by: Pavel Barabanov <pavelbarabanov94@gmail.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/89
Co-authored-by: crueter <crueter@noreply.localhost>
Co-committed-by: crueter <crueter@noreply.localhost>
2025-05-07 20:15:25 +00:00
Briar 668bcb94db Android: A few fixes
- Fix icon size
- Change some description strings

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/88
Co-authored-by: Briar <205427297+icy-briar@users.noreply.github.com>
Co-committed-by: Briar <205427297+icy-briar@users.noreply.github.com>
2025-05-07 18:21:57 +00:00
Briar 49c6b1a66a Fix bAd commit revert 2025-05-06 17:59:19 -07:00
JPikachu 82c89b7bc3 revert 8390c7dff7038b55f31388f79d67e24d4328fbfd
revert Add rasterizer_accelerated (#79)

Credit: Antique - [Sudachi] Dev (https://sudachi.emuplace.app/)
2025-05-06 17:59:19 -07:00
JPikachu c8e2accf55 Add rasterizer_accelerated (#79)
Credit: Antique - [Sudachi] Dev (https://sudachi.emuplace.app/)
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/79
Co-authored-by: JPikachu <jpikachu@noreply.localhost>
Co-committed-by: JPikachu <jpikachu@noreply.localhost>
2025-05-06 17:58:48 -07:00
edendev b01e20414f Readd Revert Problematic Commits 2025-05-04 08:24:54 +00:00
edendev 4181b53e19 revert Remove problematic commits
revert Remove problematic commits
2025-05-04 08:17:03 +00:00
MrPurple666 b689d74bc9 Remove problematic commits 2025-05-03 16:01:11 -03:00
Briar 54c3c4503a android: Add initial frontend for LAN network rooms (#76)
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/76
Co-authored-by: Briar <205427297+icy-briar@users.noreply.github.com>
Co-committed-by: Briar <205427297+icy-briar@users.noreply.github.com>
2025-05-03 17:53:09 +00:00
Pavel Barabanov d9eea0dc72 renamed SetTouchScreenOutputRanges to SetTouchScreenOutputRanges [20.0.0+] 2025-05-03 06:26:24 +03:00
Pavel Barabanov d55e400c7c started adding services for firmware 20.0.0 without implementation 2025-05-03 06:15:23 +03:00
Briar 559eb0a488 renderer_vulkan: Use raw surface handles and improve release logic (#75)
Should fix or at least lessen the crashes when leaving runtime emulation on both Android / PC
Also, may have improved the time required to leave the game

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/75
Co-authored-by: Briar <205427297+icy-briar@users.noreply.github.com>
Co-committed-by: Briar <205427297+icy-briar@users.noreply.github.com>
2025-05-02 18:42:58 +00:00
MrPurple666 7bd606bece Merge https://git.eden-emu.dev/eden-emu/eden 2025-04-30 16:19:06 -03:00
MrPurple666 bb2f527b16 Use a different approach for the LRU toggle 2025-04-30 16:11:15 -03:00
MrPurple666 b5bec371ae Add toggle for LRU 2025-04-30 04:05:45 -03:00
MrPurple666 4cf41673ba Fix some issues in RAII 2025-04-30 03:57:11 -03:00
JPikachu 8599c47fe0 service: sm/kernel/loader: Implement QueryPointerBufferSize, automatic pointer buffer sizing, and SM service improvements
This commit introduces multiple improvements to IPC handling and system management services, enhancing game compatibility and emulator stability.

--- 1. Fully Implemented QueryPointerBufferSize Service:
- Exposes the per-process IPC pointer buffer size through `QueryPointerBufferSize` instead of returning stubbed values.
- Added `m_pointer_buffer_size` field to `KProcess`, initialized with a safe default (0x8000).
- Introduced getter and setter methods (`GetPointerBufferSize()` / `SetPointerBufferSize()`).
- Registered new handler in `sm_controller` for handling QueryPointerBufferSize requests.
- Ensures accurate buffer size reporting for games relying on this service.

--- 2. Automatic Pointer Buffer Sizing Per-Game:
- Automatically determines heap size by parsing `main.npdm` from the game’s ExeFS:
  - Heap size > 1 GiB → pointer buffer size set to `0x10000`.
  - Heap size > 512 MiB → pointer buffer size set to `0xC000`.
  - Otherwise, defaults to `0x8000`.
- Gracefully handles missing or malformed `main.npdm` by falling back to default settings.
- Automatically configures pointer buffer size during `AppLoader_NCA::Load`.
- Added logging for heap size detection and buffer size configuration for easier debugging.

--- 3. SM Service Improvements:
- Added full implementation of `QueryPointerBufferSize` within the SM service framework.
- Cleaned up stubbed methods and ensured correct domain handling.
- Registered new service commands (e.g., `SetPointerBufferSize` and `QueryPointerBufferSize`) in `sm_controller`.
- Improved session handling with proper conversion to domain objects where necessary.

--- Benefits:
- Greatly improves compatibility with games that require larger IPC pointer buffers
- Eliminates the need for manual per-game pointer buffer overrides.
- More accurate emulation of Switch system services, improving stability for both commercial titles and homebrew.
- Provides cleaner logging for easier debugging and maintenance.
- Future-proofs IPC handling for upcoming titles with higher memory demands.

--- Additional Notes:
- Default pointer buffer size remains 0x8000 for smaller titles or if heap size cannot be determined.
- Falls back to safe defaults without affecting overall emulator performance.
- All new service calls properly registered and integrated without breaking existing functionality.
2025-04-30 06:35:22 +00:00
JPikachu e57b12d020 vulkan_device: Fully disable dynamic state extensions/features when dyna_state = 0
If the user selects dynamic state = 0, force-disable all Vulkan dynamic state extensions and related struct fields.
This ensures compatibility with drivers and simplifies shader pipeline logic.

Also logs all removals for clarity.
2025-04-30 06:34:49 +00:00
swurl 04578ac5b6 fix syntax
Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-30 06:34:49 +00:00
JPikachu 6abdda8072 vulkan_device: Remove must_emulate_scaled_formats = false for all Qualcomm and Arm processes 2025-04-30 06:34:49 +00:00
JPikachu 0de8f866db vulkan_device: Dynamically control scaled format emulation based on dynamic state setting fixing the "0" option
If the setting dyna_state is set to 0 (dynamic state disabled), must_emulate_scaled_formats is forced "true" for proper rendering.
If dyna_state is set to 1, 2, or 3 (dynamic state enabled), must_emulate_scaled_formats is forced "false" for proper dyna-state use.

This change applies globally after all device-specific quirks and is logged clearly at boot for easier debugging.
2025-04-30 06:34:49 +00:00
JPikachu e4e27ef86b implement: New API for Multiplayer Support 2025-04-30 06:34:25 +00:00
Pavel Barabanov 37a508c3ba Add USE AUTO STUB to Android 2025-04-30 03:00:46 +03:00
Pavel Barabanov 56e619c872 Remove the stub for GetCradleFwVersion 2025-04-30 02:52:04 +03:00
MrPurple666 449a2497ea Initial MMO implementation
MMO (Multithreaded Memory Operations)
2025-04-28 16:44:35 -03:00
MrPurple666 4e7f6ef694 Better FastMemcpy and FastMemset
Use 16-byte copy paths
2025-04-28 16:44:21 -03:00
MrPurple666 476e0fe432 Use 4MB cache size instead of 1MB 2025-04-28 16:38:44 -03:00
MrPurple666 0b35e89ab9 Some RAII fixes 2025-04-28 16:27:54 -03:00
MrPurple666 a58799aca7 Initial RAII implementation 2025-04-28 16:27:42 -03:00
MrPurple666 abc7e71ecd Replace std::memcpy/memset with intrinsics on known sizes 2025-04-28 16:27:30 -03:00
MrPurple666 b695ca5a2a Revert some wip changes 2025-04-28 16:14:42 -03:00
swurl 808276b48a Dynamic State Fixes (#57)
- Forcefully disabled dynamic state extensions if Vulkan reports that
  the device doesn't support it (need to update UI for this)
- Adds some more supported state 3 extensions
- Adds back stencil reinterpretation
- default to 0 on Android and 1 on desktop

Signed-off-by: swurl <swurl@swurl.xyz>

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/57
Co-authored-by: swurl <swurl@swurl.xyz>
Co-committed-by: swurl <swurl@swurl.xyz>
2025-04-27 17:07:49 -04:00
swurl de2009575e fix cmake formatting
Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-24 16:19:38 -04:00
swurl a8f105d4ff Merge branch 'game-warnings'
Closes #55

Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-24 16:00:29 -04:00
swurl 9f806138ab Merge branch 'log-by-line'
Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-24 15:58:49 -04:00
CamilleLaVey 30670bd92a Merge pull request 'Add configurations for VkExtendedDynamicState extensions' (#53) from crueter/eden:dynamic-state-config into master
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/53
2025-04-24 19:55:58 +00:00
CamilleLaVey fa950aaeca Merge pull request 'Fix Qt <6.7 build and allow speed limit to be saved' (#52) from crueter/eden:fix-limit-speed into master
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/52
2025-04-24 19:55:16 +00:00
swurl 7a9011b82d add tick marks to desktop slider
Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-24 15:32:42 -04:00
Briar 13eb5e1be4 android: Add dyna_state setting to UI 2025-04-24 21:20:49 +02:00
swurl c5f98d0388 switch bad updates list to hex
Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-24 13:40:43 -04:00
swurl 01065a89a5 fix android setting
Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-24 12:09:59 -04:00
swurl 83cf9774e1 switch dynamic state to a slider
Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-24 12:08:01 -04:00
swurl e8ad10350e Warn about updates for affected games
Some games suck with updates on Yuzu, this lets the user know about it.
Currently, only Tears of the Kingdom is known to be affected, but this
can easily be expanded to include more games.

Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-24 11:55:19 -04:00
swurl c140529a75 add notice for extensions
Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-24 11:07:17 -04:00
swurl 918d6d3514 proper placement of clip distance init
Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-24 11:00:28 -04:00
swurl 9cb03cd007 Log by line compilation option
Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-24 10:58:22 -04:00
swurl eb90246803 use macro to remove eye destruction
Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-23 22:14:57 -04:00
swurl b47c0e07a3 Proper linking between states
Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-23 21:58:06 -04:00
swurl a137760b48 add dynamic state settings to android settings
Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-23 21:09:45 -04:00
swurl 1949e7c438 Add dynamic state extension configs
Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-23 20:57:53 -04:00
swurl 446e362530 remove duplicate code in statusbar
Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-23 20:09:59 -04:00
swurl 8795b96d46 Fix Qt <6.7 build and allow speed limit to be saved
Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-23 18:36:39 -04:00
JPikachu c64c404a2f Enable ExtendedDynamicState 3 2025-04-23 19:01:56 +01:00
edendev e96383615b Fixed typo 2025-04-22 21:02:48 -07:00
edendev 8823f12f18 Enable ExtendedDynamicState 2 and other features 2025-04-22 20:59:02 -07:00
edendev 5080513a5e Enable ExtendedDynamicState 1 across platforms 2025-04-22 18:22:25 -07:00
JPikachu c64f1994c7 Fix complination issues by making clip_distance_written static 2025-04-21 13:34:28 -04:00
JPikachu fc1a3b6310 shader compiler: Ensure all clip distances are initialized when used
Thank you to Ryujinx (riperiperi specifically) for the pointer towards clip distances
Huge thanks to crueter for finding where the code works and Camille for giving pointers along the way.
2025-04-21 13:34:24 -04:00
MrPurple666 52a692b73a Merge branch 'purple' of https://git.eden-emu.dev/MrPurple666/eden into purple 2025-04-19 19:27:01 -03:00
MrPurple666 7a62776d11 fix duplicated on merge 2025-04-19 19:26:04 -03:00
MrPurple666 f65c3042c4 Merge branch 'master' into purple 2025-04-19 21:54:56 +00:00
MrPurple666 6ac5eaea11 Merge https://git.eden-emu.dev/eden-emu/eden into purple 2025-04-19 18:53:45 -03:00
swurl f2db4dd3a1 Fix CI Building For Windows, Android & Linux 2025-04-19 14:46:06 -07:00
EmulationEnjoyer fcec7995af feat(shader): implement geometry shader invocation info
- Update EmitInvocationInfo in SPIRV backend to handle geometry shader stage

ref: 1266fad681 (diff-4cbf73a98ed4ad649a4a6f38b569bc31fcf68cf7)
2025-04-19 18:05:29 -03:00
MrPurple666 44dc152a2b Add InputTopologyVertices from torzu adapted to eden 2025-04-19 17:56:48 -03:00
FireBurn b03d51f06f Include memory header
This stops build failures for missing std::shared_ptr which is in multiple files

Signed-off-by: FireBurn <mike@fireburn.co.uk>
2025-04-19 17:56:48 -03:00
EmulationEnjoyer a5a7cb8a24 chore(HLE): Update HLE API version constants
- Updated Horizon OS version to 19.0.1 and NintendoSDK version to 1.0. Adjusted `VERSION_HASH`, `DISPLAY_VERSION`, and `DISPLAY_TITLE` to match the new firmware versions.

ref: fcb6444037
2025-04-19 17:56:48 -03:00
EmulationEnjoyer cb135ba86f shader/recompiler: Revert NVN storage buffer bias range
- Return to original NVN bias values which better cover the full range of storage buffer accesses:
- offset_begin: 0x110 -> 0x100
- offset_end: 0x610 -> 0x700

The wider range ensures we catch all valid storage buffer accesses
while maintaining the same alignment requirements.

ref: 2564e721df
2025-04-19 17:56:48 -03:00
EmulationEnjoyer e6d0c5ea42 arm: Skip duplicate consecutive addresses in backtrace output
ref: aa56430f2a
2025-04-19 17:56:48 -03:00
Zephyron cf1bcb02c5 service/vi: Improve OpenDisplay validation
Updates the OpenDisplay function in IApplicationDisplayService to properly
validate display names. Instead of only accepting "Default", now validates
against all known valid display names: "Default", "External", "Edid",
"Internal", and "Null".

- Changes log level from WARNING to DEBUG since this is no longer stubbed
- Adds proper validation for all valid display names
- Returns ResultOperationFailed for invalid display names
- Improves logging by including the requested display name
2025-04-19 17:19:38 -03:00
Zephyron 728de0406e vulkan: Improve memory allocation robustness
Enhances the Vulkan memory allocator with better OOM handling and memory
alignment:

* Add memory recovery by cleaning up empty allocations before failing
* Implement proper fallback to non-device-local memory
* Simplify memory alignment handling for different vendors
* Add better error logging for allocation failures
* Add IsEmpty() helper to track unused allocations
* Fix alignment requirements for Adreno (4KB) vs other vendors

These changes improve the robustness of memory allocation, particularly
in low-memory situations, and streamline vendor-specific alignment
requirements.
2025-04-19 17:19:16 -03:00
Laconix ee384f57c2 Turn off predictive back gesture to fix hardware back button not working in android 13 or higher 2025-04-18 15:59:59 +01:00
swurl c8a4cf715f windows actions (again) (#39)
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/39
Co-authored-by: swurl <swurl@swurl.xyz>
Co-committed-by: swurl <swurl@swurl.xyz>
2025-04-17 04:50:25 +00:00
MrPurple666 19d28cf97b Fix linux build 2025-04-15 01:03:41 -03:00
Pavel Barabanov ee03ac227d Fixes the launch of some games on firmware versions 18 and above. 2025-04-15 05:59:18 +03:00
Pavel Barabanov b66ebe638b Qlauncher firmware 19 2025-04-14 14:18:13 -04:00
JPikachu d6eff706f2 Service: am: enhance UnpopInData, GetHdcpAuthenticationState and GetHdcpAuthenticationStateChangeEvent
Thanks to Sudachi and Torzu for some help and referance.
2025-04-14 14:18:13 -04:00
swurl 2d3a3f035b fix pre alpha warning label
Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-14 14:18:13 -04:00
JPikachu 2149362378 Update "yuzu is not affiliated with Nintendo" to "eden is not affiliated with Nintendo" 2025-04-14 14:18:13 -04:00
MrPurple666 909a94783c fixes out_audio_controller build error 2025-04-14 12:23:30 -03:00
Zephyron 389327d3f0 vulkan: Add Samsung driver workarounds
Add workarounds for Samsung Xclipse GPUs:

- Disable extendedDynamicState3ColorBlendEquation as it is broken in Samsung
  drivers, similar to AMD drivers
- Add Samsung's proprietary driver to the validated driver list for clock
  boosting
- Fix log message to indicate both AMD and Samsung drivers have broken
  color blend equation support

Remove stray logical OR operator from validated_driver condition.
2025-04-14 12:17:19 -03:00
Zephyron cae9d9b9e8 service/audio: implement Unknown5000 and add debug commands
- Add Unknown5000 implementation to create duplicate controller interface
- Add new debug-related command handlers:
  * OverrideDefaultTargetForDebug (50001)
  * SetForceOverrideExternalDeviceNameForDebug (50003)
  * ClearForceOverrideExternalDeviceNameForDebug (50004)
- Add proper debug logging for interface creation
- Update header with new function declaration
- Fix missing commas in function registration array

These changes improve the audio controller implementation by
adding support for interface duplication and debug override
functionality. The implementation maintains proper interface
lifetime management using SharedFrom.
2025-04-14 12:15:52 -03:00
Pavel Barabanov 1bd86b08f2 Qlauncher firmware 19 2025-04-14 12:10:33 -03:00
JPikachu d87ba21d05 Service: am: enhance UnpopInData, GetHdcpAuthenticationState and GetHdcpAuthenticationStateChangeEvent
Thanks to Sudachi and Torzu for some help and referance.
2025-04-14 12:10:06 -03:00
MrPurple666 604e700a19 fix overlay options with pavel's changes and add a skipping information 2025-04-14 04:40:40 -03:00
MrPurple666 a98ac705e4 Merge branch 'pr-25' into purple 2025-04-14 04:29:24 -03:00
Pavel Barabanov b43dfff894 Eden’s Veil setting 2025-04-14 03:50:37 -03:00
MrPurple666 73d973dad6 Based on CamilleLaVey code, fix MSAA and Depth Stencil 2025-04-13 17:19:59 -03:00
darktux eb536ef8a8 Return correct amount of values from IFriendService::GetReceivedFriendRequestCount 2025-04-13 15:39:17 -03:00
darktux 26eece092f Fix NROs crashing and loading infinitely (#3)
Commit from Suyu, looks like Yuzu devs forgot to initialize memory here.

Comment from darktux: I've changed the use of memset to std::fill.

Co-authored-by: Belal Ashraf <nullequal@noreply.localhost>
Reviewed-on: http://y2nlvhmmk5jnsvechppxnbyzmmv3vbl7dvzn6ltwcdbpgxixp3clkgqd.onion/darktux/torzu/pulls/3
Co-authored-by: darktux <darktux@y2nlvhmmk5jnsvechppxnbyzmmv3vbl7dvzn6ltwcdbpgxixp3clkgqd.onion>
Co-committed-by: darktux <darktux@y2nlvhmmk5jnsvechppxnbyzmmv3vbl7dvzn6ltwcdbpgxixp3clkgqd.onion>
2025-04-13 15:39:03 -03:00
Briar fe51be43c1 android: Enhance FPS Overlay with more customizable options
- Now the fps follows theme color set in settings
- Added the ability to toggle stats on and off depending on user preference
- Now you are able to change the fps position and add a background behind it for easier reding

New added stats for the overlay are

FPS
FRAMETIME,
SPEED,
APP_RAM_USAGE,
SYSTEM_RAM_USAGE,
BATTERY_TEMPERATURE,
2025-04-13 05:36:30 +02:00
MrPurple666 e26a256a44 Fix Zephyron commits 2025-04-13 00:23:18 -03:00
Zephyron 777111dfb4 feat(video_core): Fix Linux compilation issues in Hybrid Memory Manager
- Added missing <thread> header for std::thread usage
- Added <fcntl.h> for O_CLOEXEC and O_NONBLOCK definitions
- Fixed struct initialization order in uffdio_copy to match declaration order

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-04-12 23:42:39 -03:00
Zephyron 34693001aa Add Windows support to Hybrid Memory Manager
This commit adds Windows-specific implementation of the fault-managed memory
system, providing similar functionality to the existing Linux/Android implementation.

Key changes:
- Added Windows-specific memory management using VirtualAlloc/VirtualFree
- Implemented Windows vectored exception handler for page fault handling
- Added proper memory protection and page fault handling on Windows
- Updated memory snapshot functionality to work on Windows
- Added proper cleanup of Windows-specific resources
- Fixed type conversion issues in memory management code
- Added proper error handling for Windows memory operations
- Fixed VRAM Memory Layout Mode to allow up to 12Gb

The implementation uses Windows-specific APIs:
- VirtualAlloc/VirtualFree for memory management
- AddVectoredExceptionHandler for page fault handling
- VirtualProtect for memory protection management

This change maintains feature parity with the Linux/Android implementation
while using Windows-native APIs for better performance and reliability.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-04-12 23:42:24 -03:00
Zephyron 9615e910f9 feat(video_core): Implement HybridMemory for advanced Vulkan memory management
Adds a new cross-platform memory management system with enhanced capabilities:
- Fault-managed memory allocation for Linux/Android platforms
- Memory snapshot and differential snapshot support
- Predictive memory reuse tracking for optimized access patterns
- Vulkan compute buffer integration
- User-configurable settings for enabling features

The system integrates with the existing Vulkan renderer to provide more
efficient memory handling, especially for compute-intensive workloads.

Co-authored-by: boss.sfc <boss.sfc@citron-emu.org>
Co-committed-by: boss.sfc <boss.sfc@citron-emu.org>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-04-12 23:41:26 -03:00
Zephyron 0c5659a198 video_core: Enhance Vulkan shader compilation with async threading system
Implement a robust asynchronous shader compilation system inspired by commit
1fd5fefcb17fe7fe65faed1c991fb41db782ab0f. This enhancement provides:

- True multi-threaded shader compilation with atomic status tracking
- Persistent disk caching for faster shader loading
- Command queue system for background processing
- Integration with Citron's scheduler for better resource management
- Parallel shader loading to reduce startup times
- Improved error handling and recovery mechanisms

These changes significantly reduce shader compilation stuttering and improve
overall performance when using asynchronous shaders. The implementation
maintains compatibility with Citron's existing architecture while adding
more robust threading capabilities.

Co-authored-by: boss.sfc <boss.sfc@citron-emu.org>
Co-committed-by: boss.sfc <boss.sfc@citron-emu.org>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-04-12 23:39:24 -03:00
Zephyron b550c6e3cc feat(vulkan): implement enhanced texture and shader management
This commit adds improved Vulkan functionality to the Citron emulator:

- Add thread-safe texture management with automatic error recovery
- Implement shader caching with validation support
- Add robust error handling for Vulkan operations
- Implement platform-specific initialization for Windows, Linux, and Android

These enhancements improve stability when handling texture loading errors
and provide better recovery mechanisms for Vulkan failures.

Co-authored-by: boss.sfc <boss.sfc@citron-emu.org>
Co-committed-by: boss.sfc <boss.sfc@citron-emu.org>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-04-12 23:39:19 -03:00
Zephyron 991770b84f build: fix linux compilation
- Removes unnecessary \ from Copyright Line Causing Linux Builds To Fail

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-04-12 23:37:27 -03:00
Zephyron c57a5fef92 WIP: Enhance shader compilation performance and control
This commit adds new settings and optimizations for shader compilation:

- Add new settings:
  - use_enhanced_shader_building: Enable enhanced shader compilation
  - shader_compilation_priority: Control shader compilation priority

- Improve shader compilation performance:
  - Optimize worker thread allocation based on CPU cores
  - Add smarter async shader compilation heuristics
  - Prioritize vertex and fragment shader compilation
  - Add performance tracking and logging

- Add performance monitoring:
  - Track shader compilation times
  - Log slow shader compilations
  - Monitor async shader compilation statistics

This is a work in progress commit. Further optimizations and refinements
will be needed based on testing and feedback.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-04-12 23:37:11 -03:00
JPikachu bc86307ad6 Service: Add AliasRegionExtraSize
Thanks to Briar for finding and testing the Service
Credit: Antique - [Sudachi] Dev (https://sudachi.emuplace.app/)
2025-04-12 22:54:32 -03:00
MrPurple666 be4bc3b477 WIP: DO-NOT-MERGE: NCE experiments: Better Pre-Fetch implementation
should make it more performatic as in use with new lru cache implmentation
2025-04-12 22:54:32 -03:00
MrPurple666 739e5c47ea WIP: DO-NOT-MERGE: NCE experiments: Better LRU cache implementation
It uses a better lru implementation, since initial as basic functions to LRU, use a modern system to it to make performance better
2025-04-12 22:54:32 -03:00
MrPurple666 ce1a1912ae RenderVulkan Experiments: DO-NOT-MERGE: Only recreate when necessary and NEAREST 2025-04-12 22:54:32 -03:00
MrPurple666 2a793d610d RenderVulkan Experiments: DO-NOT-MERGE: Introduce functionality to frame interpolation
The functionality acts much more like a real-time downscale since the FSR1 used by Yuzu is not compatible with a real interpolation and is just upscale and downscale.
2025-04-12 22:54:32 -03:00
Pavel Barabanov 38737f26e5 Optimize SpiriV output 2025-04-12 22:54:32 -03:00
Pavel Barabanov bd2f935c4d delete "enable" in setting.h 2025-04-12 22:54:32 -03:00
Pavel Barabanov be2e838f0d FRAME_SKIPPING and FRAME_INTERPOLATION only android and delete "enable" 2025-04-12 22:54:32 -03:00
Pavel Barabanov 70c2439d8c Add sync core speed 2025-04-12 22:54:32 -03:00
Pavel Barabanov d25bea5762 Android: add FRAME_SKIPPING and FRAME_INTERPOLATION 2025-04-12 22:54:32 -03:00
MrPurple666 f9f311c014 Revert "Merge branch 'pr-12'"
This reverts commit dfe104bbb96b52f47943462c296ecbcb046dffdf, reversing
changes made to 45683a4034.
2025-04-12 22:54:32 -03:00
JPikachu 61d4233228 Rename Yuzu logo to Eden 2025-04-13 01:15:36 +01:00
JPikachu e0795f2b40 Service: Add AliasRegionExtraSize
Thanks to Briar for finding and testing the Service
Credit: Antique - [Sudachi] Dev (https://sudachi.emuplace.app/)
2025-04-12 16:23:47 +01:00
JPikachu a6c9177ad1 Implement additions to nvdr services
Fixes log error: "[  41.472933] Debug <Critical> core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp:operator():81: Assertion Failed! Unimplemented ioctl=C0084713"

Credit: Antique - Sudachi dev, for the base Implementation and Citron for slight additions.
2025-04-11 17:48:09 -03:00
Zephyron 45683a4034 video_core/vulkan: Improve texture format conversion handling
Refactors and improves the texture format conversion system in the Vulkan
renderer:

- Adds proper sRGB to linear conversion for depth formats
- Improves shader accuracy for ABGR8 SRGB to D24S8 conversion
- Adds gamma correction and proper depth range clamping
- Moves GetSupportedFormat implementation to header
- Cleans up format conversion switch statement
- Removes redundant format conversion paths

The changes improve accuracy when converting between color and depth
formats, particularly for sRGB sources. The shader improvements ensure
proper gamma correction and depth range handling.

Technical changes:
- Improves sRGB to linear conversion in fragment shader
- Adds proper depth value clamping
- Consolidates format conversion logic
- Removes duplicate GetSupportedFormat implementation
2025-04-11 17:05:41 -03:00
Zephyron 3e835ac3aa video_core: Add new shader format conversion pipelines
Adds several new shader-based format conversion pipelines to support additional
texture formats and operations:

- RGBA8 to BGRA8 conversion
- YUV420/RGB conversions
- BC7 to RGBA8 decompression
- ASTC HDR to RGBA16F decompression
- RGBA16F to RGBA8 conversion
- Temporal dithering
- Dynamic resolution scaling

Updates the texture cache runtime to handle these new conversion paths and adds
helper functions to check format compatibility for dithering and scaling
operations.

The changes include:
- New shader files and CMake entries
- Additional conversion pipeline setup in BlitImageHelper
- Extended format conversion logic in TextureCacheRuntime
- New format compatibility check helpers
2025-04-11 17:05:30 -03:00
Zephyron 5cb3153f15 video_core: Add sRGB to D24S8 depth-stencil conversion support
Implements conversion from sRGB color formats to D24S8 depth-stencil format
in the Vulkan renderer. This change includes:

- New fragment shader convert_abgr8_srgb_to_d24s8.frag that handles proper
  sRGB to linear conversion before depth calculation
- Added shader to CMake build system
- Extended BlitImageHelper with new conversion pipeline and methods
- Updated texture cache to handle sRGB to D24S8 format conversion paths

The conversion properly handles sRGB color space by first converting to
linear space before calculating luminance values for the depth component,
while preserving alpha channel data for the stencil component.
2025-04-11 17:05:20 -03:00
MrPurple666 3d43fecece WIP: DO-NOT-MERGE: NCE experiments: Initial LRU 2025-04-11 17:05:06 -03:00
MrPurple666 27ceda2c6c WIP: DO-NOT-MERGE: NCE experiments: Fix build errors 2025-04-11 17:04:55 -03:00
MrPurple666 777b674edf WIP: DO-NOT-MERGE: NCE experiments: Some optimizations on pre-fetch and cache 2025-04-11 17:04:45 -03:00
MrPurple666 d36031849e WIP: DO-NOT-MERGE: NCE experiments: Ensure guest context reflects thread state during unlock 2025-04-11 17:04:34 -03:00
MrPurple666 d621707001 WIP: DO-NOT-MERGE: NCE experiments
botw boots but with poor performance
2025-04-11 17:04:24 -03:00
JPikachu 4957950b55 revert 789bbd7ab5
This needs to be put aside for now, but may be implemented again later
2025-04-10 03:45:51 +00:00
crueter 9278eac8f0 Fix controls config dialog
Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-10 02:38:34 +02:00
crueter 9cef9f5dce Update fmt to allow for v11
Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-10 01:11:22 +02:00
Briar 216ded6997 android: Improve network gateway handling 2025-04-10 00:40:07 +02:00
PabloMK7 5f0542c2bf Pre alpha watermark
* android: Add pre-alpha warning dialog and banner

* qt: android: Add pre-alpha warning banner
2025-04-10 00:18:18 +02:00
Briar 077592903e core: Add support for game settings overrides (#6)
* core: Add support for game settings overrides
---------

Co-authored-by: Gamer64 <76565986+Gamer64ytb@users.noreply.github.com>
Co-authored-by: zhang wei <zwdreams@gmail.com>
2025-04-09 23:44:33 +02:00
Briar 8ef4da686c Refactor Android Game Screen UI
* Port SearchFragment functionality to GameFragment @kleidis

Co-authored-by: Briar <205427297+icybriarr@users.noreply.github.com>

* Remove the bottom navigation bar and SearchFragment remaining code @ishan09811

* Add 2 new game view types `Grid & `List` to GameAdapter @kleidis

* Fix padding on header

* Change app name to uppercase

---------

Co-authored-by: Kleidis <167202775+kleidis@users.noreply.github.com>
Co-authored-by: Briar <205427297+icybriarr@users.noreply.github.com>
Co-authored-by: Ishan09811 <156402647+Ishan09811@users.noreply.github.com>
2025-04-09 00:01:32 +02:00
JPikachu 52eab40fc8 Implement LogicOP Workaround for Vulkan on AMD GPUs
This fixes black sewers in Paper Mario: TTYD
Credit: Antique - [Sudachi] Dev (https://sudachi.emuplace.app/)
2025-04-08 19:17:28 +02:00
Briar 6f45ab5344 Revert "Disabled MCO_USE_VMEM_ALLOCATOR because standard stack size seems to suffice"
This reverts commit ada5dcf01a.
2025-04-06 22:52:55 -03:00
Mr_Purple_666 90bda9fee5 Use u32 instead of int
fix windows build error
2025-04-04 03:40:50 +02:00
MrPurple666 2d2e9208d2 Unified torzu and sudachi friend.cpp + fix android build on dma_pusher 2025-04-04 03:40:49 +02:00
Pavel Barabanov 409946d1e6 Added the GetKeyCodeMapByPort service, thanks JPikachu for the tip. 2025-04-04 03:40:49 +02:00
Pavel Barabanov c09347ff5f Slightly changed the overlay design 2025-04-04 03:40:49 +02:00
pavelbarabanov 70c151fba0 Обновить src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt
- Add MEM overlay
- Add thermal overlay to show temperature in C/F with color indication
2025-04-04 03:40:49 +02:00
JPikachu 7c4fdaf528 Update freind, nifm and nim stubs
Credit: Antique - [Sudachi] Dev (https://sudachi.emuplace.app/)
2025-04-04 03:40:49 +02:00
Zephyron 0071e980b8 video_core: Enforce safe memory reads for compute dispatch
- Modify DmaPusher to use safe memory reads when handling compute
  operations at High GPU accuracy
- Prevent potential memory corruption issues that could lead to
  invalid dispatch parameters
- Previously, unsafe reads could result in corrupted launch_description
  data in KeplerCompute::ProcessLaunch, causing invalid vkCmdDispatch
  calls
- By enforcing safe reads specifically for compute operations, we
  maintain performance for other GPU tasks while ensuring compute
  dispatch stability

This change requires >= High GPU accuracy level to take effect.
2025-04-04 03:40:49 +02:00
EmulationEnjoyer d5bb26bf3e Implement HID function stub "SetGestureOutputRanges" (#105)
Add function stub for "SetGestureOutputRanges" in HID service

Fixes userspace panic when booting Donkey Kong Country Returns HD:

> Debug <Critical> core\hle\service\service.cpp:operator ():78: Assertion Failed!
Unknown / unimplemented function '92(<unknown>)': port='hid' cmd_buf={[0]=0x6, [1]=0x8000000C, [2]=0x1, [3]=0x0, [4]=0x4F434653, [5]=0x0, [6]=0x0, [7]=0x0, [8]=0x49434653}
> Service.AM <Info> core\hle\service\am\service\application_functions.cpp:SetTerminateResult:187: (STUBBED) called, result=0x1a80a (2010-0212)
> Debug.Emulated <Critical> core\hle\kernel\svc\svc_exception.cpp:Break:52: Userspace PANIC! info1=0x0000001086D02C4C, info2=0x0000000000000004
> Debug.Emulated <Critical> core\hle\kernel\svc\svc_exception.cpp:operator ():33: debug_buffer_err_code=1A80A
> Debug.Emulated <Critical> core\hle\kernel\svc\svc_exception.cpp:Break:102: Emulated program broke execution! reason=0x0000000000000000, info1=0x0000001086D02C4C, info2=0x0000000000000004

ref: 132077e18f

![](https://i.imgur.com/hbBnlYs.png)

Reviewed-on: http://vub63vv26q6v27xzv2dtcd25xumubshogm67yrpaz2rculqxs7jlfqad.onion/torzu-emu/torzu/pulls/105
Co-authored-by: EmulationEnjoyer <emulationenjoyer@noreply.localhost>
Co-committed-by: EmulationEnjoyer <emulationenjoyer@noreply.localhost>
2025-04-04 03:40:49 +02:00
EmulationEnjoyer 2c02c18c86 Update src/audio_core/common/feature_support.h
Updated AudioCore Revision from 11 -> 13
2025-04-04 03:40:49 +02:00
Zephyron 789bbd7ab5 kernel: Implement SystemResourceSize info type for VAMM initialization
Adds support for InfoType::SystemResourceSize (0x1C) which is required for
proper initialization of the Virtual Address Memory Manager (VAMM). This
implementation:

1. Adds SystemResourceSize to the InfoType enum in svc_types.h
2. Implements the GetInfo handler for SystemResourceSize in svc_info.cpp
3. Returns 512MB (0x20000000 bytes) as the system resource size
4. Adds debug logging for the SVC call

The 512MB value is chosen based on typical system resource allocations
needed for VAMM initialization on the Nintendo Switch.

This fixes crashes in games that rely on VAMM functionality, particularly
during nn::os::detail::VammManager::InitializeIfEnabled().
2025-04-04 03:40:49 +02:00