Commit Graph

3548 Commits

Author SHA1 Message Date
TheTurtle
35933d61fc tiling: Pass correct tile split to shader (#3515) 2025-09-04 13:16:35 -07:00
kalaposfos13
487bcaae85 Game specific configs (#3376)
* poc

* Set up variable game specific variable copies

* Set up getters to return the game specific option if it exists

* Avoid exceptions if a value isn't in the config

* Make sure the custom configs folder exists

* Update + review comments + rewrite

* The loathsome clang-formatter

* Specify which getter/setter is used everywhere
2025-09-04 21:25:04 +03:00
georgemoralis
e06667d307 SaveData fixes IXXXXXX (#3511)
* fixed possible savepath issue

* one more fix
2025-09-04 15:16:50 -03:00
kalaposfos13
bcbe07e6b1 Hotkey config changes (#3391)
* This works, but it's missing some hotkeys and the GUI isn't hooked up to anything now

* More hotkeys

* Remove debug log

* clang

* accidentally used the wrong value here

* gui changes for new backend (#10)

* gui changes for new backend

* fix lmeta

* don't erase non-hotkey lines

* do not erase hotkey configs in kbm or controller guis

* Fix repeated inputs

* Documentation

---------

Co-authored-by: rainmakerv2 <30595646+rainmakerv3@users.noreply.github.com>
2025-09-04 20:47:06 +03:00
georgemoralis
e8abbd4305 New Crowdin updates (#3500)
* New translations en_us.ts (Turkish)

* New translations en_us.ts (Spanish)

* New translations en_us.ts (Polish)

* New translations en_us.ts (Albanian)

* New translations en_us.ts (Ukrainian)

* New translations en_us.ts (German)

* New translations en_us.ts (Greek)

* New translations en_us.ts (Vietnamese)

* New translations en_us.ts (Indonesian)

* New translations en_us.ts (Romanian)

* New translations en_us.ts (French)

* New translations en_us.ts (Arabic)

* New translations en_us.ts (Catalan)

* New translations en_us.ts (Danish)

* New translations en_us.ts (Finnish)

* New translations en_us.ts (Hungarian)

* New translations en_us.ts (Italian)

* New translations en_us.ts (Japanese)

* New translations en_us.ts (Korean)

* New translations en_us.ts (Lithuanian)

* New translations en_us.ts (Dutch)

* New translations en_us.ts (Portuguese)

* New translations en_us.ts (Russian)

* New translations en_us.ts (Slovenian)

* New translations en_us.ts (Swedish)

* New translations en_us.ts (Chinese Simplified)

* New translations en_us.ts (Chinese Traditional)

* New translations en_us.ts (Portuguese, Brazilian)

* New translations en_us.ts (Persian)

* New translations en_us.ts (Norwegian Bokmal)

* New translations en_us.ts (Serbian (Latin))

* New translations en_us.ts (Urdu (Pakistan))

* New translations en_us.ts (Italian)

* New translations en_us.ts (Russian)

* New translations en_us.ts (Chinese Simplified)

* New translations en_us.ts (Norwegian Bokmal)

* New translations en_us.ts (Catalan)

* New translations en_us.ts (Persian)

* New translations en_us.ts (Swedish)

* New translations en_us.ts (Turkish)

* New translations en_us.ts (Spanish)

* New translations en_us.ts (Polish)

* New translations en_us.ts (Albanian)

* New translations en_us.ts (Ukrainian)

* New translations en_us.ts (German)

* New translations en_us.ts (Greek)

* New translations en_us.ts (Vietnamese)

* New translations en_us.ts (Indonesian)

* New translations en_us.ts (Romanian)

* New translations en_us.ts (French)

* New translations en_us.ts (Arabic)

* New translations en_us.ts (Catalan)

* New translations en_us.ts (Danish)

* New translations en_us.ts (Finnish)

* New translations en_us.ts (Hungarian)

* New translations en_us.ts (Italian)

* New translations en_us.ts (Japanese)

* New translations en_us.ts (Korean)

* New translations en_us.ts (Lithuanian)

* New translations en_us.ts (Dutch)

* New translations en_us.ts (Portuguese)

* New translations en_us.ts (Russian)

* New translations en_us.ts (Slovenian)

* New translations en_us.ts (Swedish)

* New translations en_us.ts (Chinese Simplified)

* New translations en_us.ts (Chinese Traditional)

* New translations en_us.ts (Portuguese, Brazilian)

* New translations en_us.ts (Persian)

* New translations en_us.ts (Norwegian Bokmal)

* New translations en_us.ts (Serbian (Latin))

* New translations en_us.ts (Urdu (Pakistan))

* New translations en_us.ts (Italian)

* New translations en_us.ts (Russian)

* New translations en_us.ts (Russian)

* New translations en_us.ts (Turkish)

* New translations en_us.ts (Spanish)

* New translations en_us.ts (Polish)

* New translations en_us.ts (Albanian)

* New translations en_us.ts (Ukrainian)

* New translations en_us.ts (German)

* New translations en_us.ts (Greek)

* New translations en_us.ts (Vietnamese)

* New translations en_us.ts (Indonesian)

* New translations en_us.ts (Romanian)

* New translations en_us.ts (French)

* New translations en_us.ts (Arabic)

* New translations en_us.ts (Catalan)

* New translations en_us.ts (Danish)

* New translations en_us.ts (Finnish)

* New translations en_us.ts (Hungarian)

* New translations en_us.ts (Italian)

* New translations en_us.ts (Japanese)

* New translations en_us.ts (Korean)

* New translations en_us.ts (Lithuanian)

* New translations en_us.ts (Dutch)

* New translations en_us.ts (Portuguese)

* New translations en_us.ts (Russian)

* New translations en_us.ts (Slovenian)

* New translations en_us.ts (Swedish)

* New translations en_us.ts (Chinese Simplified)

* New translations en_us.ts (Chinese Traditional)

* New translations en_us.ts (Portuguese, Brazilian)

* New translations en_us.ts (Persian)

* New translations en_us.ts (Norwegian Bokmal)

* New translations en_us.ts (Serbian (Latin))

* New translations en_us.ts (Urdu (Pakistan))

* New translations en_us.ts (Chinese Simplified)

* New translations en_us.ts (Catalan)

* New translations en_us.ts (Norwegian Bokmal)

* New translations en_us.ts (Swedish)

* New translations en_us.ts (Russian)

* New translations en_us.ts (Norwegian Bokmal)
2025-09-04 12:42:10 +03:00
baggins183
df52585086 Allow vector and scalar offset in buffer address arg to LoadBuffer/StoreBuffer (#3439)
* Allow vector and scalar offset in buffer address arg to
LoadBuffer/StoreBuffer

* remove is_ring check

* fix atomics and update pattern matching for tess factor stores

* remove old asserts about soffset

* small fixes

* copyright

* Handle sgpr initialization for 2 special hull shader values, including tess factor buffer offset
2025-09-03 20:54:23 -07:00
georgemoralis
59eea3b49e [ci skip] Qt GUI: Update Translation. (#3507)
Co-authored-by: georgemoralis <4313123+georgemoralis@users.noreply.github.com>
2025-09-03 13:34:10 +03:00
georgemoralis
59f00dc051 [ci skip] Qt GUI: Update Translation. (#3505)
Co-authored-by: georgemoralis <4313123+georgemoralis@users.noreply.github.com>
2025-09-02 22:04:21 +03:00
rainmakerv2
77b1d11796 Qt: Add FSR options to settings GUI (#3504)
* Qt: Add FSR settings to settings GUI

* Move FSR settings from Imgui.ini to main config

* move passing fsr settings to presenter constuctor

* cleanup: use struct instead of function call

* cleanup: make variable names consistent with others

* Update fsr settings real-time in qt, save button in Imgui

* Linux build fix, missing running game check

* syntax fix

* Change gamerunning checks to if (presenter)
2025-09-02 12:03:33 -07:00
UltraDaCat
d9b4618085 Use icons, music and background images of updates if available (#3494)
* Update game_info.h

* fix clang game_info.h

* SceUpdateChecker game_info.h

* fix clang game_info.h

* fix clang(darn you space) game_info.h

* there was another space... game_info.h

* Update game_info.h

* fix clang game_info.h
2025-09-01 18:18:30 -07:00
squidbus
c43ab1217d shader_recompiler: Relax dual source blending assert to allow up to two targets. (#3495) 2025-09-01 16:42:48 -07:00
squidbus
9246b4277b config: Add present mode option. (#3502)
* config: Add present mode option.

* settings_dialog: Add details for present modes.
2025-09-01 16:42:31 -07:00
UltraDaCat
f09c0e5a28 Add an option to change DLC path from the settings (#3501)
* Update settings_dialog.ui

* Update settings_dialog.cpp

* rename PLACEHOLDER settings_dialog.cpp

* Move DLC above save data settings_dialog.ui
2025-09-01 11:08:53 -07:00
rainmakerv2
b4a82bfcdd Qt: prevent saving/canceling for remapping/hotkeys dialogs while waiting for inputs (#3499)
* prevent saving/canceling dialog while mapping mode is enabled

* do not disable cancel button

* diable defaults button
2025-09-01 11:08:17 -07:00
georgemoralis
47e0d488d8 New Crowdin updates (#3451)
* New translations en_us.ts (Polish)

* New translations en_us.ts (Korean)

* New translations en_us.ts (Russian)

* New translations en_us.ts (Korean)

* New translations en_us.ts (French)

* New translations en_us.ts (French)

* New translations en_us.ts (Urdu (Pakistan))
2025-09-01 08:04:38 +03:00
georgemoralis
3de73371c1 [ci skip] Qt GUI: Update Translation. (#3498)
Co-authored-by: georgemoralis <4313123+georgemoralis@users.noreply.github.com>
2025-09-01 08:04:12 +03:00
Stephen Miller
bcea7a02c3 Return EINVAL if mmap is called with length 0 (#3496)
Hit by some multimedia apps
2025-08-31 16:14:51 -07:00
Marcin Mikołajczyk
be8c35eef1 Implement send/recvmsg (#3487)
* Implement send/recvmsg

* Windows

* fixed windows

* cleanups

* updated

* suggestions

---------

Co-authored-by: georgemoralis <giorgosmrls@gmail.com>
2025-09-01 01:02:26 +03:00
squidbus
af9947a862 semaphore: Fix determining wait status when canceled/deleted (#3490) 2025-08-31 14:39:57 -07:00
UltraDaCat
ba65408608 Toggle to enable/disable logging (#3493)
* Update config.cpp

* Update config.h

* Update backend.cpp

* Update settings_dialog.cpp

* Update settings_dialog.ui

* fix clang settings_dialog.cpp

* fix description in settings_dialog.cpp

* added back the backslash settings_dialog.cpp

* move enable logging and separate log files to logger settings_dialog.ui
2025-08-31 13:11:49 -07:00
UltraDaCat
e6f0ee7ed2 Move QT plugins to the qtplugins folder on Windows QT builds (#3491)
* test build.yml

* add qt.conf for windows-qt

* test 2 build.yml

* Update build.yml

* placeholder license and copyright in qt.conf

* proper copyright qt.conf

* Add files via upload

* Delete qt.conf from root

* changes to build.yml

* Update REUSE.toml
2025-08-31 04:19:52 -07:00
squidbus
52d2c4ddc1 semaphore: Invert priority order. (#3488)
* semaphore: Invert priority order.

* playgo: Lower logs for some spammed functions.
2025-08-30 19:24:58 -07:00
squidbus
31aa7539d3 sampler: Fix custom border color fallback condition. (#3489) 2025-08-30 18:42:49 -07:00
Stephen Miller
c26f56ab02 Handle offsets and format overrides in fetch shaders (#3486)
Co-authored-by: TheTurtle <47210458+raphaelthegreat@users.noreply.github.com>
2025-08-30 14:20:23 -07:00
Loong
ed3f9ee626 Fix error compiling with certain math functions in std namespace (#3383)
e.g. error: no member named 'atan2f' in namespace 'std'
2025-08-29 21:22:34 -07:00
rainmakerv2
507bd777f9 Qt: enforce set order for kbm string mapping to prevent duplicate combo mappings (#3461)
* enforce set order for kbm string mapping to prevent duplicate combo mappings

* remove F keys for now

* re-add escape case to unmap

* cleanup
2025-08-29 21:18:31 -07:00
squidbus
af322c3a2f renderer_vulkan: Ignore blend parameters when disabled. (#3485) 2025-08-29 20:25:57 -07:00
squidbus
673b2afaa8 vk_platform: Remove workaround to use Vulkan loader on macOS. (#3484) 2025-08-29 18:29:34 -07:00
squidbus
32244c097c shader_recompiler: Implement V_ADD_F64 and loading 64-bit float from SGPR. (#3483) 2025-08-29 18:11:21 -07:00
squidbus
bfa5c508ce constant_propagation_pass: Handle a few more bitwise instructions. (#3482)
Co-authored-by: TheTurtle <47210458+raphaelthegreat@users.noreply.github.com>
2025-08-29 18:11:14 -07:00
squidbus
62ddc0664b vk_scheduler: Properly initialize vulkan structures in RenderState. (#3479) 2025-08-29 17:28:20 -07:00
Stephen Miller
56626111ab Properly use float type for float buffer atomics (#3480)
Co-authored-by: TheTurtle <47210458+raphaelthegreat@users.noreply.github.com>
2025-08-29 17:18:10 -07:00
Stephen Miller
6f26f66d77 Handle ExecLo source in S_FF1_I32_B64 (#3481)
Co-authored-by: TheTurtle <47210458+raphaelthegreat@users.noreply.github.com>
2025-08-29 16:59:11 -07:00
Stephen Miller
ae89a492ea shader_recompiler: Initialize all ClipDistance and CullDistance values (#3478)
* Initialize all values in clip_distances

Co-Authored-By: TheTurtle <47210458+raphaelthegreat@users.noreply.github.com>

* Clang

* Apply initializer for CullDistance

---------

Co-authored-by: TheTurtle <47210458+raphaelthegreat@users.noreply.github.com>
2025-08-29 16:47:30 -07:00
Stephen Miller
90757d6d09 Handle S_LSHL_B32 in ParseCopyShader (#3477)
Fixes an assert in My First Gran Turismo

Co-authored-by: TheTurtle <47210458+raphaelthegreat@users.noreply.github.com>
2025-08-29 16:33:19 -07:00
Stephen Miller
412355aab4 shader_recompiler: Support multiple attributes using the same load in vertex fetch shaders (#3475)
* Support multiple uses of the same load.

Co-Authored-By: TheTurtle <47210458+raphaelthegreat@users.noreply.github.com>

* Keep base_sgpr as a s32

Requires manually casting to s32 now.

---------

Co-authored-by: TheTurtle <47210458+raphaelthegreat@users.noreply.github.com>
2025-08-29 16:06:40 -07:00
TheTurtle
8ae45559fc vector_interpolation: Address some assertions (#3473) 2025-08-29 13:44:45 -07:00
Missake212
d4a2ca01bf QT version in the Windows build instructions (#3474) 2025-08-29 13:43:24 -07:00
squidbus
e85308c011 vk_pipeline_cache: Add storage images to descriptor heaps. (#3472) 2025-08-29 08:03:14 -07:00
squidbus
8ed6572393 vk_graphics_pipeline: Prioritize depth clip when separate clip/clamp control is not supported. (#3471) 2025-08-29 07:45:53 -07:00
squidbus
1d459474a2 externals: Update SDL3 (#3466) 2025-08-27 21:42:24 -07:00
kalaposfos13
10afc6b3c6 Replace direct usage of wrgsbase and rdgsbase with a more portable solution (#3464) 2025-08-27 03:12:39 -07:00
rainmakerv2
adcf4d9749 test 6.9.2 update (#3463) 2025-08-26 22:41:17 -07:00
Stephen Miller
e172323dd0 Libraries: libSceVrTracker stubs (#3462)
* libSceVrTracker stubs, structs, enums, and errors

* sceVrTrackerQueryMemory

* Clang and slight struct cleanup

* Implement sceVrTrackerInit

* Store memory pointers and sizes

Mainly for future developers, since I doubt these memory areas will be particularly useful for these stubs.

* sceVrTrackerRegisterDevice

I haven't really identified the difference between the two register device functions, but I do know that they both internally call the internal function with slightly different parameters.

* sceVrTrackerUnregisterDevice

Also changes Hmd and Move handles to be values closer to what real hardware returns, since this function seemingly relies on handles being different for all these device types.

* sceVrTrackerTerm

* Additional error checks in sceVrTrackerRegisterDeviceInternal

* sceVrTrackerGetTime

* sceVrTrackerRecalibrate

Recalibration succeeds on real hardware (at least for some device types), so I've left the stub log intact.

* Update vr_tracker.cpp

* sceVrTrackerSetDurationUntilStatusNotTracking stub

Only handled the error checks, so I left the stub log intact.

* sceVrTrackerGpu* functions

Most of these can't succeed without a camera attached.
2025-08-26 17:16:10 -07:00
Stephen Miller
dcb256c930 libSceHmdSetupDialog stubs (#3460)
Basic stubs designed to get some VR-optional titles further.
2025-08-25 18:11:35 -07:00
Stephen Miller
1b2ac916f1 Filesystem: Abstract handling of directory files (#3455)
* Rename SceKernelIovec to OrbisKernelIovec

Fixes the naming scheme to match the rest of the project.

* Type fixups

Noticed this while working on the actual thing this PR is about.

* More type fixups

* Update file_system.cpp

* Abstract directory handling

* Clang

* Directory fstat

* Fix dirent loading logic

* PfsDirectory size

Seemed to be hardcoded when I ran tests, so I've hardcoded it here.
Also fixed up the reclen-aligning logic based on hardware observations.

* GetDents cleanup

Bring back the bytes < 512 error return from before, as that's still something that can be checked for out here.
I've also swapped the file type stuff to run from a switch case, so that the check for invalid file type can be used as the default case

* Support reading directories

* getdents

For PfsDirectory, getdents behaves like read does on normal directories. Since dirents are stored internally with a different struct, this means getdents has to convert the dirents before returning data.
For NormalDirectory, getdents is identical to read, so it can just call read and set the basep output.

* Directory readv

* Directory preadv

Since the file mutex is locked before these calls, messing with dirents_index like this shouldn't cause any weird side effects.

* return ORBIS_OK instead of 0

to better align with our coding standards.

* Directory lseek

* Un-modify CMakePresets.json

I keep this modified locally for Linux, but accidentally pushed it.

* Clang

* Fix mac compile

* Potential windows compile fix?

* Filename fix

* Fix normal directory d_reclen

* Comment cleanup

* Remove unnecessary dirent conversion logic

On real hardware, the records are still returned with the same reclen, despite the change in structure.

* PfsDirectory dirents_index fixes

Some weird stuff happens once you reach eof on directories.
Thankfully, PfsDirectories are rather tame in this regard.

* Change comment

* Rewrite normal directory reads

The logic for these seems to behave like a normal file, so instead of tracking a dirents_index, keep an internal buffer representing the file contents, and copy that to output buffers as needed.

* Update pfs_directory.cpp

* Clang

* Fix normal dirents

When rewriting the code, I forgot to account for the increased reclen value for the last dirent in the buffer.

* PfsDirectory::lseek fixes

Based on some additional tests, it seems like lseek unconditionally returns dirents_index, not the actual file position.
Also fixed some bugs with the logic for calculating the proper offset when games do wonky things, and fixed a potential area where games could crash.

* Downgrade stat and fstat log to debug

These functions can get pretty spammy.

* PfsDirectory: Properly track if end of file is reached

Using the metric `dirents_index < directory_content_size` fails when `directory_content_size` is larger than the actual directory size we report.
Since, from what I can tell, PfsDirectories shouldn't ever report more than 0x10000 bytes for size, this change is necessary.

* Revert "PfsDirectory: Properly track if end of file is reached"

I need to do some hardware tests to see if all this excess logic is actually necessary.

* Fix PfsDirectory directory_size

Turns out, if your game has over 1000 files in a folder, it will actually cause the size to increase.

* Update copyright date

* Move devices and directories into file_sys

I've also updated the copyright dates on all these files.

* C++ style type casts

* Remove unnecessary memset

* Use a vector for the data buffer

Simplifies logic for freeing the buffer, based on review suggestions.

* Fix potential oob array access

* Change type casts in Create function

* Clang

* std::memcpy instead of memcpy

* NormalDirectory::lseek cleanup

* Create constants for directory alignment values.

* Use const wherever possible

* Includes cleanup
2025-08-25 23:41:24 +03:00
Randomuser8219
56599bcba4 Certain changes to README (#3456)
* README updates

Several improvements

* Update README.md
2025-08-25 18:54:57 +03:00
squidbus
25d1defb5b shader_recompiler: Do not emit Layer when emulating primitive type with tessellation. (#3457)
Layer must be output from the final pre-rasterization stage, so when tessellation is
being used the vertex shader cannot set it. We could pass it through to the tessellation
shaders in some way, but unless it becomes an issue that's more effort than it's worth.
2025-08-25 04:17:20 -07:00
squidbus
875724a982 memory_patcher: Fix isEnabled not being reset between patches. (#3458) 2025-08-25 12:17:08 +02:00
TheTurtle
c90781d3e2 renderer_vulkan: Resore color write dynamic state (#3453) 2025-08-24 14:30:59 -07:00