Commit Graph
20047 Commits
Author SHA1 Message Date
yahfz 083859b94c putllc 2026-09-24 16:34:25 +03:00
Antonino Di GuardoandClaude Opus 5 0c382f4fc9 patch_engine: don't emit path-typed patch addresses as hex
save_patches always emitted the address element as fmt::format("0x%.8x"),
but for move_file and hide_file that element is a VFS path: load() keeps the
text in original_offset and skips u32 validation for those two types.
Round-tripping such a patch through save_patches replaced the source path
with 0x00000000.

The entry stays syntactically valid and keeps loading, so the patch is still
listed and can still be toggled in the Patch Manager while silently matching
no file. Re-downloading does not repair it either, since append_patches
discards an incoming patch whose Patch Version is not strictly greater.

Gate the emit on patch_type_uses_hex_offset, the predicate that already
existed for this and was used only on the load side. The numeric branch
keeps using offset rather than original_offset on purpose: an address
modifier is folded into offset at load time and the flat form emitted here
has nowhere to put it.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-24 13:45:26 +02:00
Antonino Di GuardoandClaude Opus 5 dc3c7327d8 patch_engine: make save_patches write atomically
save_patches opened the target with fs::rewrite (write + create + trunc),
then discarded the result of file.write() and returned true unconditionally.
A write that fails part way leaves a truncated file, load() rejects the
whole file on a parse error, and import_patches refuses to write when
load() fails, so every later import returns -1 with no in-app recovery.

75e66ab5e made the patch config and the pad config atomic but missed this
function; save_config, 70 lines up in the same file, already writes through
fs::pending_file and checks the result. Do the same here.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-24 13:45:26 +02:00
Megamouse c82221f292 cellGem: Allow custom camera_frame buffers
TV superstars demo passes its own buffer.
If we early out here we never increase the frame count and tracking
does not work properly.
2026-09-24 07:52:39 +02:00
Elad b5a174e933 LV2: Wait for an observable PPU schedular change from new threads 2026-09-23 23:13:17 +03:00
Elad f9b4d121ea Make sys_cond_signal_to permissive to CPU cycle errors 2026-09-23 23:13:17 +03:00
EladandAntonino Di Guardo c82e598950 LV2: Increase HW PPU Thread Signal Delay
Co-Authored-By: Antonino Di Guardo <[email protected]>
2026-09-23 23:13:17 +03:00
Elad 1e0e352f95 Util/stack_trace.cpp: Clean duplicate functions in CallStack dump 2026-09-23 23:13:17 +03:00
kd-11 56237b6858 rsx/lv2: Add a timeout to the queue drain logic
- Also adds an optimization to skip draining the queue if the command arg is the same.
2026-09-23 17:54:33 +03:00
kd-11 99a926d278 rsx: Force a full pipeline stall before invoking USER_COMMAND callback
- Proven with hardware tests
2026-09-23 17:54:33 +03:00
kd-11 ff40118b94 rsx/lv2: Fix back-to-back USER_COMMAND method invocation cloberring the callback argument 2026-09-23 17:54:33 +03:00
jpolo1224 fe9281f44a vk: run the conversion kernels 64-wide on Adreno
Adreno waves are 64 lanes, and a workgroup narrower than the wave does not pack
together with its neighbours -- it occupies a whole wave and masks the surplus
lanes off. At 32 that idled half of every wave on every dispatch, and these
kernels run on every texture upload of a kilobyte or more, plus every deswizzle
and detile.

Nothing argues the other way here. The kernels carry no shared memory and no
barriers, so group size is a scheduling hint with no LDS or synchronisation
cost to trade against.
2026-09-23 13:20:53 +03:00
Val Packett fdffb7d5f9 vk: Recognize Qualcomm Adreno drivers (blob and Mesa Turnip) 2026-09-23 13:20:53 +03:00
digant73 3fa2bf6688 Fix crash on DLC unlocked 2026-09-22 23:52:18 +03:00
Antonino Di Guardo c4d834480a Fix unpkg bugs- #19528
- PKG entry paths are converted to std::filesystem::path through explicit UTF-8 (utf8_to_wchar / wchar_to_utf8) instead of the narrow constructor, which read the bytes in the host ANSI code page and terminated the process on any it could not map (Shift-JIS file names such as s10c3_R126_<90 AC 91 CC>.mdat in Darkside Chronicles).
- The canonical path is converted back with UTF-8 as well, so a dev_hdd0 path with non-ASCII characters yields a valid key and    passes the containment check (upstream rejected every entry as "escapes installation directory").
- The installation directory is canonicalized without its closing / separators, like every entry: on a file system that cannot resolve it, the lexical form no longer keeps an empty last element that no entry can match (network drives).
- Absolute / . / .. checks run on the raw name bytes via a shared leaves_directory() helper; the .. case is now an installation failure instead of an emergency exit.
- The installation directory name read from the package is validated with the same helper and escaped.
- weakly_canonical is computed once per directory and reused for files not yet on disk (existing paths and folders are still    resolved whole): identical keys and verdicts, ~25x faster enumeration (6000 files: 1.7 s → 63 ms).
- Supersedes *19463 (trailing separator after the lexical fallback)
- Supersedes *19492
- Minor: map key moved instead of copied.
2026-09-22 20:07:28 +00:00
Elad 3efbf060a6 sys_fs: Fix SYS_APP_HOME readability control for disc games 2026-09-22 16:16:51 +03:00
kd-11 d08d568d5e vk: Fix renderpass keys attached to property blobs when seeding interpreter variants 2026-09-21 19:00:51 +03:00
kd-11 c938d3e049 vk: Support multiple attachments on renderpass key generation 2026-09-21 19:00:51 +03:00
kd-11 e59ed70470 rsx: Tweak logic regarding reuse of blit target sections
- Also optimizes for the common case where we overwrite the destination in full.
2026-09-21 19:00:51 +03:00
kd-11 accfecd2d1 vk: Expand the interpreter seed by taking most common formats into account 2026-09-20 21:09:01 +03:00
kd-11 507b395d4b vk: Support linking shaders with a common pipeline cache 2026-09-20 21:09:01 +03:00
kd-11 7022a322a6 vk/interpreter: Add more seed variants and remove pipeline cache from interpreter code 2026-09-20 21:09:01 +03:00
kd-11 71f8a5e09d vk: Clean up flat shading implementation 2026-09-20 21:09:01 +03:00
Walter 9e86f165d1 Revert "[LLVM SPU] Add InstCombine pass"
This reverts commit f4a74819d3.
2026-09-19 15:16:28 +03:00
Walter f4a74819d3 [LLVM SPU] Add InstCombine pass
The `InstCombine` is a very important pass for optimizing common expressions and simplifying logic. It could help produce sustainably better code at little cost.
2026-09-19 02:12:24 +03:00
Antonino Di Guardo 8db660b185 Fix sysFsReaddir #19512 2026-09-17 19:21:44 +00:00
kd-11 a90c841b39 rsx: Fix flush predictor behavior when using surface cache targets for blit engine 2026-09-17 21:42:07 +03:00
Megamouse e76fbf4489 Increase MSVC ccache to 7GB 2026-09-17 18:19:00 +02:00
Walter 92721aedfe [SPU LLVM] Avoid the SHUFB GFNI path when it prevents a OR combine
On non-AVX512 CPUs, the GFNI path can be expensive (on Intel) due to it requiring a variable blend. This patch prevents that case.
2026-09-17 14:09:29 +03:00
Edvard 6c0e2823f8 Add --big-picture CLI flag to force Big Picture Mode on launch (#19509) 2026-09-16 22:04:56 +00:00
Malcolmandjpolo1224 e13ee15791 SPU LLVM: Stop inverting float-to-int saturation on ARM64
- Fix CFLTS saturation in the approximate and accurate xfloat paths
- Original fix credit to jpolo1224 of armsx3 https://github.com/ARMSX2/ARMSX3/commit/424514fde67adb83540d39feea860b5eb17b3500
- Accurate-xfloat follow-up https://github.com/ARMSX2/ARMSX3/commit/19d23eb6913c34cb63c00861bf95e58c3144e78e

Co-authored-by: jpolo1224 <[email protected]>
2026-09-16 14:04:34 +03:00
Antonino Di Guardo 394a9e4b52 Unedat: Mute wrong log on edat and minor fixes 2026-09-16 09:45:36 +00:00
Yahfzandkd-11 a659805470 rsx: Reuse discarded render targets during surface splitting
Co-authored-by: kd-11 <[email protected]>
2026-09-16 08:06:56 +00:00
Malcolm e826098bcb SPU LLVM: Omit test_state and spu-null if they are unreachable 2026-09-16 09:28:19 +03:00
Megamouse 2d103407f8 cellMic: add EyeToy and PsEye types 2026-09-16 01:42:59 +02:00
schm1dtmac 4b9f2af41f [Mac OS X] Switch all Mac OS X CI to use MacPorts because of Homebrew 7 dropping Intel far too early.
This change really is the last straw I've had with Homebrew, I simply cannot trust that they won't do something similar to Apple Silicon in the future. Inevitably much of the Intel CI's downloaded deps will get built from source due to this which would cause build times to skyrocket, were we to keep using Homebrew.
2026-09-15 23:35:50 +02:00
EBgames7 ac6dc84e84 Infamous 2 Trophy Overlay Fix (#19473)
Infamous 2 displays infamous 1 trophy data in overlay if trophies are
present on local user account. If infamous 1 trophies are not present,
the overlay does not display any trophy data.

This code addition sets the trophy name list once (if empty) and
prevents future trophy contexts from changing it. The overlay now
displays the proper trophy data for infamous 2.
2026-09-15 20:47:40 +00:00
Megamouse fb62c6d03a clean up some includes 2026-09-15 22:01:55 +02:00
Megamouse be509deda0 Move emu callbacks to own file
Reduces some System.h includes
2026-09-15 22:01:55 +02:00
MohamedandClaude Fable 5 1b3e02044f LogitechG27: mirror mapped steering device presence on the usb bus
The emulated G27 was always attached while enabled, so games kept
reading a phantom wheel (centered steering after the previous commit,
formerly hard-left) and ignored pad steering input. Attach the emulated
device only while the mapped steering device is connected: games now
see the wheel plug in and out exactly like on real hardware, and pad
play works without disabling the option and restarting the game.

Also guard the personality reconnect against the device having been
detached between the game's mode-change request and the housekeeping
tick.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-09-15 21:10:22 +02:00
MohamedandClaude Fable 5 b7056bc88a LogitechG27: report neutral axis positions when the mapped device is missing
The emulated G27 fell back to MIN for every axis whose mapped SDL device
was not connected. For the steering axis MIN encodes full-left, so enabling
the emulated wheel without the physical device attached (or while playing
with a regular gamepad) made games receive permanent hard-left steering.
Fall back to the axis' neutral position instead: center for steering,
released for pedals (unchanged behavior for pedals).

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-09-15 21:10:22 +02:00
Megamouse 2868fbe4ed BUILDING.md: update vulkan install on linux 2026-09-15 20:16:21 +02:00
FlexBy420 c1b1d00b4c Qt: Overhaul trophy manager (#19428)
* Allow to search game by title or via comm id
* More info columns
* Seperated games list and trophy list instead of displaying both at the
same time
2026-09-15 17:23:28 +00:00
Megamouse 0646d36708 ps move tracker: only create threads on demand 2026-09-15 18:18:34 +02:00
Megamouse ca522cf84c fix cctype usage
According to the documentation, we should cast to unsigned char.
Anything negative is undefined behavior.
2026-09-15 17:38:26 +02:00
digant73 b6bdf0d92d Fix UTF-8 filename 2026-09-15 11:59:38 +03:00
Malcolm ec4b1ae655 SPU LLVM: Use TBL for ARM64 byteswaps 2026-09-15 10:50:56 +03:00
Megamouse 1b569fde4d Fix some warnings 2026-09-15 03:10:16 +02:00
Megamouse 6c4b749fb8 Add new stylesheets to VS filters 2026-09-15 03:10:16 +02:00
Megamouse 932336ac30 VS: Use Ninja to build glslang and add ccache 2026-09-15 03:10:16 +02:00