Commit Graph

3745 Commits

Author SHA1 Message Date
georgemoralis
1b6e30975e
Merge branch 'main' into rec_fixes1 2026-03-18 13:23:31 +02:00
georgemoralis
20db2f721e fixed main 2026-03-18 13:23:11 +02:00
Kravickas
2ca342970a
MIP fixes (#4141)
* int32-modifiers

GCN VOP3 abs/neg modifier bits always operate on the sign bit (bit 31)
regardless of instruction type. For integer operands this means:
	
abs = clear bit 31   (x & 0x7FFFFFFF)
neg = toggle bit 31  (x ^ 0x80000000)

* int64-modifiers

Previously GetSrc64<IR::U64> completely ignored input modifiers
for integer operands. Now unpacks to two U32s, modifies the high
dword's bit 31 (= bit 63 of the 64-bit value), and repacks.

* V_MUL_LEGACY_F32

GCN V_MUL_LEGACY_F32: if either source is zero, result is +0.0
regardless of the other operand (even NaN or Inf). Standard IEEE
multiply produces NaN for 0*Inf. The fix adds a zero-check select
before the multiply.
2026-03-18 10:05:20 +02:00
rosenkolev1
9a3e7b097c
Make thread TidCounter atomic (#4133) 2026-03-18 09:40:37 +02:00
georgemoralis
6e843d0c4b feeling dangerous , let's re-enable lod where supported 2026-03-17 22:18:26 +02:00
baggins183
1bb152d976
IMAGE_STORE_MIP fallback (#4075)
* fallback for IMAGE_STORE_MIP when not natively supported

* Lod should be treated as absolute, independent of sharp's base_level (judging by other implemented instructions)

* fix descriptor set layouts

* dumb error

* force fallback for testing

* treat Lod as relative to base_level

* optimization when lod index is constant
2026-03-17 21:47:19 +02:00
shinra-electric
88c3437240
Bump ccache-action (#4138) 2026-03-17 18:36:59 +02:00
georgemoralis
80e1c296c5 cleanup 2026-03-17 18:15:55 +02:00
georgemoralis
46ad72cecf fixed vcclo 2026-03-17 16:45:30 +02:00
kalaposfos13
e6b743032d
Don't print unresolved libc and libSceFios2 stubs (#4137) 2026-03-17 15:58:31 +02:00
georgemoralis
3a3ef5b05f started 0.15.1 WIP 2026-03-17 10:26:34 +02:00
georgemoralis
4d62930075 tagged 0.15.0 release 2026-03-17 09:22:22 +02:00
georgemoralis
17b38edeb5 avoid using u64 emmiter 2026-03-17 07:38:32 +02:00
georgemoralis
6ea8587826 fixed typo 2026-03-16 23:51:32 +02:00
georgemoralis
5535b3f5ab brackets 2026-03-16 23:35:48 +02:00
georgemoralis
ff40a9240f SignedConstIntNeg values are encoded relative to a base value 2026-03-16 23:27:24 +02:00
Stephen Miller
221629b8b5 Select for U64 constants 2026-03-16 16:13:24 -05:00
georgemoralis
760133c9cc made cmp_u64 a real u64 compare use it at your own risk 2026-03-16 21:23:51 +02:00
georgemoralis
ab8f4fdfc7 exec is not permitted 2026-03-16 20:45:43 +02:00
georgemoralis
65c1a7b205 handle src1 as VectorGPR in cmp_u64 2026-03-16 20:43:54 +02:00
shinra-electric
30ff9cf050
CI: Update actions/cache due to Node 20 deprecation (#4128)
* Upload-artifact v4 --> v6

* Download-artifact v5 --> v8

* Checkout v5 --> v6

* cache v4 --> v5
2026-03-14 19:15:29 +02:00
Stephen Miller
844cfe5185
Lib.Ssl2: Stub data for sceSslGetCaCerts (#4127)
* Test

* More robust logic for storing and freeing dummy data

Anything heap allocated is invalidated when the function returns. Use malloc to allocate the string instead, and make sure to free those allocations in sceSslFreeCaCerts.
2026-03-14 17:12:26 +02:00
Санька Четвёртый
f336096b12
PSF file format: close file after encode() (#4122) 2026-03-13 12:38:22 +02:00
kalaposfos13
67ffd0334b
Properly fix game flag handling (#4119)
* fix the fix for the fix

* fine there's no debug info then because of Ubuntu things
2026-03-12 17:15:04 +01:00
Stephen Miller
c8b3d63e7e
Core: Fix game arguments (#4118)
* Fix game arguments.

Tested with Crash Team Racing Nitro Fueled

* Fix the fix

This callback runs unconditionally, so only perform erase if we actually place anything in gameArgs
2026-03-12 08:53:12 +02:00
Stephen Miller
ac3786f533
Fix return type for ImageAtomicU32CmpSwap (#4115)
Somedays I wonder how I miss these details. But hey, least there are two other people who also missed this 😅
2026-03-10 16:25:22 -07:00
Stephen Miller
3ee06a91df
Relocate imports on HLE loads (#4113)
Now that dynamic HLE loads happen after the eboot loads, HLEs for most "preload" modules wouldn't detect if you didn't have libSceRtc dumped. This was because, while we stored all the new symbols from the HLE lib, we weren't relocating loaded modules to use these symbols.
2026-03-10 07:25:45 +02:00
Stephen Miller
85476e55ea
Recompiler: Implement IMAGE_ATOMIC_CMPSWAP (#4109)
* To implement ImageAtomicCmpSwap

...but it doesn't work, so here it shall stay.

* a fix

* Clang

* Add to MayHaveSideEffects

I missed this while digging through IR code.
2026-03-09 18:02:22 +02:00
TheTurtle
df6bb8562e
renderer_vulkan: Force subgroup size to 64 when possible (#4111) 2026-03-09 17:46:51 +02:00
TheTurtle
e16ba06ab0
shader_recompiler: Support 32 thread sharing mode (#4110) 2026-03-09 17:33:58 +02:00
kalaposfos13
0579569f13
Improve signal emulation (#4108)
* improve signal emulation

* make the sce function use the new posix ones

* ifdefing away the issues

* fix me being very tired yesterday night

* let macOS handle SIGRT signals with the native sigaction call instead of an early error return

* windows still has no clue what the fuck is going on

* the loathsome clang-formatter

* fix oact

* return the guest handler, not the host one

* Clear any existing signal mask for game threads.

* don't rely on implementation specific things

* Fix Windows support and sceKernelRaiseException bug

* Review suggestions

@kalaposfos13 suggested I push these.

---------

Co-authored-by: Stephen Miller <56742918+StevenMiller123@users.noreply.github.com>
2026-03-09 14:20:14 +02:00
Stephen Miller
cc6af03adf
Lib.SysModule: Proper HLE implementation (#4102)
* Replace sysmodule enums with table

Dumped this from the 12.52 module, using a script I created.

* Better documentation

* Separate from system libraries

That system folder is going to be getting quite large if I left all the sysmodule stuff in there.

* More arrays from library

* Found another preload list

Ghidra really hates decompiling libSceSysmodule, so I didn't notice this one at first.
Also documented specific versions tied to each preload list.

* Start work on implementation

* Some basic implementations

* Initial stub for module loading

Just enough to see if the logic functions appropriately.

* Clang

* sceSysmoduleLoadModule

Now I need to get sceSysmodulePreloadModuleForLibkernel done so that we don't have bugs from not loading internal LLEs.

* sceSysmoduleLoadModuleInternal

* sceSysmodulePreloadModuleForLibkernel

I have successfully broken quite literally everything.
I shall debug this tomorrow.

* Slight fix

* Maybe fix?

* Change log

Enjoy the log spam 😄

* Increased defined stub count

Now that libc and libSceLibcInternal loads later, all the auto stubs are getting consumed by it.

* sceSysmoduleUnloadModule stub

Also a couple fixes. Sysmodule does pass argc and argv to game modules, but only after loading them once to check  binaries.
Shouldn't matter for the most part.

* Clang

* Less stubs

2 thousand is seemingly enough.

* sceSysmoduleLoadModuleInternalWithArg

Doesn't hurt to have, since Apex Legends calls it.

* Oops

* Oops 2

* Rename isModuleLoaded to getModuleHandle

Review comment

* Remove debug game module loads

These cases only trigger when specific sceRegMgr key values are set, and for our purposes, we can treat that case as false.

* Allow preloading to fail

For kalaposfos

* Clang
2026-03-08 21:48:03 +02:00
Stephen Miller
014b11e9da
Return an empty certificate (#4104)
This is enough to get past initialization checks in Rise of the Tomb Raider.
2026-03-07 09:15:32 +02:00
georgemoralis
50d5ce9a83
fixed an issue in sceKernelRemoveExceptionHandler (#4086)
* fixed an issue in sceKernelRemoveExceptionHandler

* fixed comment
2026-03-07 08:55:17 +02:00
Pavel
89e74828e6
fixup r128 (#4100) 2026-03-05 22:44:37 +02:00
georgemoralis
14450d330f
CopyImage stencil fixes (#4095)
* stencil fixes hope it fixes driveclub

* revert image copy to the one that had driveclub worked

* reverted texture cache change

* some more fixes and reverts

* added logging for overlap again
2026-03-03 08:52:12 +02:00
Stephen Miller
1f5430e4c2
More targeted fix (#4096)
Cyberpunk's issue seems to actually come from the incrementing in the loop. It wasn't clear while debugging, but the problem is that the pattern the game supplies causes match to fail when str_wild_it hits the end, and then tries iterating past end due to the loop condition.
Our pattern matching code seems broken for the case Cyberpunk triggers, but since I'm not aware of the intricacies of how real hardware behaves, best to just revert the loop condition change and instead break the loop before the broken iteration.
2026-03-02 20:35:58 +02:00
Niram7777
fc949a7449
CI wget linuxdeploy retries (#4093) 2026-03-02 20:32:28 +02:00
georgemoralis
e5d7dc4090
the uber fix (#4092) 2026-03-01 21:02:21 +02:00
georgemoralis
636efaf2b5
changed readbacks mode to Relaxed,Precised (#4091) 2026-03-01 20:49:55 +02:00
Stephen Miller
dbf23a66af
fix (#4088) 2026-03-01 07:30:19 +02:00
rainmakerv2
6a8c50c3a2
Low readbacks mode (#4085) 2026-02-28 17:17:11 +02:00
Stephen Miller
49c2a4999b
Lib.Net: Misc fixes (#4082)
* Fix Windows-specific incorrect error in PosixSocket::Connect

* Hide typical non-blocking errors

* Also hide EWOULDBLOCK from recvfrom

* Fix the resolver fix
2026-02-28 09:09:01 +02:00
Stephen Miller
aae10ecdf7
Lib.GnmDriver: Implement sceGnmDrawIndirectMulti (#4083) 2026-02-27 21:32:32 -08:00
Stephen Miller
8bb29695ed
Lib.Net: Proper resolver errors when isConnectedToNetwork is disabled (#4081)
* Force resolver errors when not connected to network

Error values are based on real hardware testing.
sceNetResolverGetError is based on libSceNet decompilation.

* Update net_resolver.h
2026-02-28 00:50:41 +02:00
evill33t
19d2027105
skipped guest/host marker parsing/calls when disabled (#4078)
* skipped guest/host marker parsing/calls when disabled

* clang-format

---------

Co-authored-by: Ronny Stiftel <ronny.stiftel@tomcom.de>
2026-02-26 17:02:14 +02:00
georgemoralis
f91b8410fd
SDL Audio3d (#4077)
* implemented dummy audio3d for sdl

* removed sdl::free
2026-02-26 15:31:50 +02:00
Vladislav Mikhalin
e1ecd8e98c
threads: initialize tls on thread creation (take 2) (#4070) 2026-02-24 20:35:05 +03:00
kalaposfos13
af9cbb8e8a
Fix some logic bugs in sceHttpUriParse (#4067) 2026-02-24 09:00:17 +02:00
ElBread3
407d287fb1
tweak LoadFigure and RemoveFigure (#4071) 2026-02-23 21:30:57 +02:00