Commit Graph

3053 Commits

Author SHA1 Message Date
Marcin Mikołajczyk
ac65e57708
Merge da38e0c2f3 into 23710f397e 2025-06-04 07:22:20 +02:00
Stephen Miller
23710f397e
Reduce clamp threshold to 2MB (#3034)
A proposed solution to the non-GPU memory asserts seen in RESIDENT EVIL 2 (CUSA09193)
2025-06-03 22:17:35 -07:00
Dmugetsu
88f6cb4d41
clean up main window from extraction remains (#3035) 2025-06-04 00:26:04 +03:00
Marcin Mikołajczyk
5b6fc788b3
Fix passing user data in user-triggered equeue events (#2948) 2025-06-03 11:42:20 -07:00
Marcin Mikołajczyk
da38e0c2f3 Move conditional rendering calls closer to actual draws 2025-06-03 19:39:31 +01:00
Stephen Miller
997d04ce8b Core: Pthread affinity fixups (#3021)
* posix_pthread_attr_getschedparam

* Fixes for scePthreadGetAffinity and scePthreadSetAffinity

Looking at FreeBSD source, and our other pthread functions, we should be using our FindThread function to get the appropriate thread if thread != g_curthread.
2025-06-03 19:39:31 +01:00
Fire Cube
9794700ef6 Add support for game folder and fail early if eboot.bin is missing or corrupt (#3027) 2025-06-03 19:39:31 +01:00
Schweeeeeeeeeeeeeeee
68ceff3801 Add missing dependency for Fedora (#3005)
Propablly missing because of fedora 42?
2025-06-03 19:39:31 +01:00
Stephen Miller
58b417e98e Core: Protect fixes (#3029)
* Swap do-while to while

If we use a do-while loop, we waste time if `aligned_size = 0`.  This is also still accurate to FreeBSD behavior, where it returns success if `start == end` during mprotect.
This also effectively prevents the memory assert seen in updated versions of RESIDENT EVIL 2 (CUSA09193)

* Move prot validation outside loop

The prot variable shouldn't change during a mprotect call, so we can check the flags before protecting instead.
Also cleans up the code for prot validation.
This should improve performance, and is more accurate to FreeBSD code.

* Add logging for protect calls

This will help in debugging future problems
2025-06-03 19:39:31 +01:00
mailwl
91de8b574d Network Play: set user signed in (#2944)
* Network Play: set user signed in

* get signedIn status from config

---------

Co-authored-by: georgemoralis <giorgosmrls@gmail.com>
2025-06-03 19:39:31 +01:00
Stephen Miller
a8fd5ba5c7 Emulate libSceGnmDriver's init behavior (#3024)
This time, perform it after the LoadSharedLibraries call, which places it after the various init memory mappings GFD engine titles perform.
2025-06-03 19:39:31 +01:00
kalaposfos13
62c87a64c9 Fix SSH remote links (#3025) 2025-06-03 19:39:31 +01:00
Stephen Miller
6f2b81c9b9 Libs: libSceVoice stubs (#3022)
* voice lib stubs

Primarily for GTA V

* Clang
2025-06-03 19:39:31 +01:00
WujekFoliarz
a085a67928 Fix touchpad handling and change gyro calculation (#3006)
* Change touchpad handling and orientation calculation

* remove unnecessary includes in pad.cpp

* remove the cmake command arguments

* remove the weird file

* try to fix formatting

* limit new gyro and touchpad logic to controller 1

* remove cout

* fix formatting and add the handle check to scePadRead

* swap y and z back
2025-06-03 19:39:31 +01:00
¥IGA
5f6092b861 Qt: Set Minimum Icon Size List to 48 (#3018) 2025-06-03 19:39:31 +01:00
Stephen Miller
ac0a82369b Revert new GPU map logic (#3019)
Something's wrong somewhere, and there's just too many places that somewhere could be for me to debug it right now.
2025-06-03 19:39:31 +01:00
Marcin Mikołajczyk
e59f3c8da2 Provide custom border color to samplers (#3014) 2025-06-03 19:39:31 +01:00
Marcin Mikołajczyk
529def845d Misc opcodes fixes (#3009) 2025-06-03 19:39:31 +01:00
Marcin Mikołajczyk
2adcf18dfd Handle R128 bit in MIMG instructions (#3010) 2025-06-03 19:39:31 +01:00
Marcin Mikołajczyk
7a1dacc473 Handle V_CVT_F64_U32 (#3008) 2025-06-03 19:39:31 +01:00
Stephen Miller
754639a1ef Core: More Memory Cleanup & Fixes (#2997)
* Only perform GPU memory mapping when GPU can access it

This better aligns with hardware observations, and should also speed up unmaps and decommits, since they don't need to be compared with the GPU max address anymore.

* Reserve fixes

ReserveVirtualRange seems to follow the 0x200000000 base address like MemoryPoolReserve does.
Both also need checks in their flags Fixed path to ensure we're mapping in-bounds. If we're not in mapping to our address space, we'll end up reserving and returning the wrong address, which could lead to weird memory issues in games.

I'll need to test on real hardware to verify if such changes are appropriate.

* Better sceKernelMmap

Handles errors where we would previously throw exceptions. Also moves the file logic to MapFile, since that way all the possible errors are in one place.
Also fixes some function parameters to align with our current standards.

* Major refactor

MapDirectMemory, MapFlexibleMemory, ReserveVirtualRange, and MemoryPoolReserve all internally use mmap to perform their mappings. Naturally, this means that all functions have similar behaviors, and a lot of duplicate code.
This add necessary conditional behavior to MapMemory so MemoryPoolReserve and ReserveVirtualRange can use it, without disrupting the behavior of MapDirectMemory or MapFlexibleMemory calls.

* Accurate phys_addr for non-direct mappings

* Properly handle GPU access rights

Since my first commit restricts GPU mappings to memory areas with GPU access permissions, we also need to be updating the GPU mappings appropriately during Protect calls too.

* Update memory.cpp

* Update memory.h

* Update memory.cpp

* Update memory.cpp

* Update memory.cpp

* Revert "Update memory.cpp"

This reverts commit 2c55d014c0.

* Coalesce dmem map

Aligns with hardware observations, hopefully shouldn't break anything since nothing should change hardware-wise when release dmem calls and unmap calls are performed?
Either that or Windows breaks because Windows, will need to test.

* Implement posix_mprotect

Unity calls this
Also fixes the names of sceKernelMprotect and sceKernelMtypeprotect, though that's more of a style change and can be reverted if requested.

* Fix sceKernelSetVirtualRangeName

Partially addresses a "regression" introduced when I fixed up some asserts.
As noted in the code, this implementation is still slightly inaccurate, as handling this properly could cause regressions on Windows.

* Unconditional assert in MapFile

* Remove protect warning

This is expected behavior, shouldn't need any logging.

* Respect alignment

Forgot to properly do this when updating ReserveVirtualRange and MemoryPoolReserve

* Fix Mprotect on free memory

On real hardware, this just does nothing. If something did get protected, there's no way to query that information.
Therefore, it seems pretty safe to just behave like munmap and return size here.

* Minor tidy-up

No functional difference, but looks better.
2025-06-03 19:39:31 +01:00
georgemoralis
537394bd54 New Crowdin updates (#2982)
* New translations en_us.ts (Spanish)

* New translations en_us.ts (Spanish)

* New translations en_us.ts (Turkish)
2025-06-03 19:39:31 +01:00
Fire Cube
f91cf9f869 Libs: CompanionUtil (#2963)
* impl

* more

* move log

* cleanup type definitions

* error code cleanup and clang

* cleanup ugly RE code

* shame

* clang

---------

Co-authored-by: georgemoralis <giorgosmrls@gmail.com>
2025-06-03 19:39:31 +01:00
georgemoralis
8a5c056ed3 Implemented sceNetInetNtop in RE (#3003)
* implemented sceNetInetNtop in RE

* some logging

* added freebsd_inet_ntop4

* freebsd_inet_ntop6

* fixups based on reviews

* review fixes
2025-06-03 19:39:31 +01:00
Stephen Miller
8cdd8dd725
Core: Pthread affinity fixups (#3021)
* posix_pthread_attr_getschedparam

* Fixes for scePthreadGetAffinity and scePthreadSetAffinity

Looking at FreeBSD source, and our other pthread functions, we should be using our FindThread function to get the appropriate thread if thread != g_curthread.
2025-06-03 03:43:56 -07:00
Fire Cube
c09d1c3cff
Add support for game folder and fail early if eboot.bin is missing or corrupt (#3027) 2025-06-03 13:34:29 +03:00
Schweeeeeeeeeeeeeeee
ca0f458505
Add missing dependency for Fedora (#3005)
Propablly missing because of fedora 42?
2025-06-03 09:40:31 +03:00
Stephen Miller
bb3f8af81a
Core: Protect fixes (#3029)
* Swap do-while to while

If we use a do-while loop, we waste time if `aligned_size = 0`.  This is also still accurate to FreeBSD behavior, where it returns success if `start == end` during mprotect.
This also effectively prevents the memory assert seen in updated versions of RESIDENT EVIL 2 (CUSA09193)

* Move prot validation outside loop

The prot variable shouldn't change during a mprotect call, so we can check the flags before protecting instead.
Also cleans up the code for prot validation.
This should improve performance, and is more accurate to FreeBSD code.

* Add logging for protect calls

This will help in debugging future problems
2025-06-03 09:29:25 +03:00
mailwl
eed99141b3
Network Play: set user signed in (#2944)
* Network Play: set user signed in

* get signedIn status from config

---------

Co-authored-by: georgemoralis <giorgosmrls@gmail.com>
2025-06-03 09:11:18 +03:00
Stephen Miller
2c78272185
Emulate libSceGnmDriver's init behavior (#3024)
This time, perform it after the LoadSharedLibraries call, which places it after the various init memory mappings GFD engine titles perform.
2025-06-03 08:02:51 +03:00
kalaposfos13
1930a2132c
Fix SSH remote links (#3025) 2025-06-02 19:02:37 +03:00
Stephen Miller
6bdd83684b
Libs: libSceVoice stubs (#3022)
* voice lib stubs

Primarily for GTA V

* Clang
2025-06-01 19:30:03 +03:00
WujekFoliarz
b1af1334c9
Fix touchpad handling and change gyro calculation (#3006)
* Change touchpad handling and orientation calculation

* remove unnecessary includes in pad.cpp

* remove the cmake command arguments

* remove the weird file

* try to fix formatting

* limit new gyro and touchpad logic to controller 1

* remove cout

* fix formatting and add the handle check to scePadRead

* swap y and z back
2025-06-01 19:13:02 +03:00
¥IGA
bb199865cf
Qt: Set Minimum Icon Size List to 48 (#3018) 2025-06-01 14:52:09 +03:00
Stephen Miller
c09e463b8e
Revert new GPU map logic (#3019)
Something's wrong somewhere, and there's just too many places that somewhere could be for me to debug it right now.
2025-05-31 17:35:52 +03:00
Marcin Mikołajczyk
4019319d92
Provide custom border color to samplers (#3014) 2025-05-30 12:04:31 -07:00
Marcin Mikołajczyk
790b54bf29
Misc opcodes fixes (#3009) 2025-05-29 18:51:36 -07:00
Marcin Mikołajczyk
2091bc5651
Handle R128 bit in MIMG instructions (#3010) 2025-05-29 16:56:24 -07:00
Marcin Mikołajczyk
8fffdc3918
Handle V_CVT_F64_U32 (#3008) 2025-05-29 12:20:16 -07:00
Stephen Miller
6cdc52cdde
Core: More Memory Cleanup & Fixes (#2997)
* Only perform GPU memory mapping when GPU can access it

This better aligns with hardware observations, and should also speed up unmaps and decommits, since they don't need to be compared with the GPU max address anymore.

* Reserve fixes

ReserveVirtualRange seems to follow the 0x200000000 base address like MemoryPoolReserve does.
Both also need checks in their flags Fixed path to ensure we're mapping in-bounds. If we're not in mapping to our address space, we'll end up reserving and returning the wrong address, which could lead to weird memory issues in games.

I'll need to test on real hardware to verify if such changes are appropriate.

* Better sceKernelMmap

Handles errors where we would previously throw exceptions. Also moves the file logic to MapFile, since that way all the possible errors are in one place.
Also fixes some function parameters to align with our current standards.

* Major refactor

MapDirectMemory, MapFlexibleMemory, ReserveVirtualRange, and MemoryPoolReserve all internally use mmap to perform their mappings. Naturally, this means that all functions have similar behaviors, and a lot of duplicate code.
This add necessary conditional behavior to MapMemory so MemoryPoolReserve and ReserveVirtualRange can use it, without disrupting the behavior of MapDirectMemory or MapFlexibleMemory calls.

* Accurate phys_addr for non-direct mappings

* Properly handle GPU access rights

Since my first commit restricts GPU mappings to memory areas with GPU access permissions, we also need to be updating the GPU mappings appropriately during Protect calls too.

* Update memory.cpp

* Update memory.h

* Update memory.cpp

* Update memory.cpp

* Update memory.cpp

* Revert "Update memory.cpp"

This reverts commit 2c55d014c0.

* Coalesce dmem map

Aligns with hardware observations, hopefully shouldn't break anything since nothing should change hardware-wise when release dmem calls and unmap calls are performed?
Either that or Windows breaks because Windows, will need to test.

* Implement posix_mprotect

Unity calls this
Also fixes the names of sceKernelMprotect and sceKernelMtypeprotect, though that's more of a style change and can be reverted if requested.

* Fix sceKernelSetVirtualRangeName

Partially addresses a "regression" introduced when I fixed up some asserts.
As noted in the code, this implementation is still slightly inaccurate, as handling this properly could cause regressions on Windows.

* Unconditional assert in MapFile

* Remove protect warning

This is expected behavior, shouldn't need any logging.

* Respect alignment

Forgot to properly do this when updating ReserveVirtualRange and MemoryPoolReserve

* Fix Mprotect on free memory

On real hardware, this just does nothing. If something did get protected, there's no way to query that information.
Therefore, it seems pretty safe to just behave like munmap and return size here.

* Minor tidy-up

No functional difference, but looks better.
2025-05-29 18:56:03 +03:00
georgemoralis
aca8e7e9eb
New Crowdin updates (#2982)
* New translations en_us.ts (Spanish)

* New translations en_us.ts (Spanish)

* New translations en_us.ts (Turkish)
2025-05-29 12:42:52 +03:00
Fire Cube
eb9f66c349
Libs: CompanionUtil (#2963)
* impl

* more

* move log

* cleanup type definitions

* error code cleanup and clang

* cleanup ugly RE code

* shame

* clang

---------

Co-authored-by: georgemoralis <giorgosmrls@gmail.com>
2025-05-29 12:33:56 +03:00
georgemoralis
7f0503bf8b
Implemented sceNetInetNtop in RE (#3003)
* implemented sceNetInetNtop in RE

* some logging

* added freebsd_inet_ntop4

* freebsd_inet_ntop6

* fixups based on reviews

* review fixes
2025-05-29 11:59:34 +03:00
Marcin Mikołajczyk
f1cdd0168a Fixes 2025-05-28 20:15:20 +01:00
georgemoralis
06f83de97d
Merge branch 'main' into predication 2025-05-28 20:12:00 +03:00
squidbus
95f04b746d
equeue: Move small timer check to WaitForEvents. (#3000) 2025-05-28 19:54:47 +03:00
Marcin Mikołajczyk
c52778a2d9 Fixes 2025-05-28 00:11:37 +01:00
Marcin Mikołajczyk
4a49e2bb31 Include a barrier for conditional rendering read 2025-05-27 23:35:09 +01:00
Marcin Mikołajczyk
979e17459f clang-format 2025-05-27 23:35:09 +01:00
Marcin Mikołajczyk
34f0f03f99 Use conditional rendering based on the occlusion query results 2025-05-27 23:35:09 +01:00