Commit graph

4600 commits

Author SHA1 Message Date
Megamouse a597368c46 SPU: fix some wierd typos (may be wrong, no idea) 2023-09-02 12:10:36 +03:00
Eladash f9f2657c98 SPU LLVM: Optimize spu_idisable 2023-09-01 18:08:15 +03:00
Eladash 02b5cae2ad Precompile PRX/ELF extension 2023-08-30 16:47:45 +03:00
Eladash ba41e466cf Hotfix SPU Cache Spam For Game Collections 2023-08-30 16:47:45 +03:00
Eladash ee9477dc21 SPU: support pure SPU code precompilation discovery 2023-08-30 08:45:29 +03:00
Eladash 37212a632c SPU: Refactor function discovery 2023-08-30 08:45:29 +03:00
Elad Ashkenazi 105c5759f3 Add SPU Precompilation to Create PPU Cache 2023-08-30 08:45:29 +03:00
Elad Ashkenazi 3d2229ca05 SPU LLVM Precompilation Fixup 2023-08-28 13:33:43 +03:00
Eladash b5faf5800b SPU LLVM Precompilation
Implement function SPU function discovery in images or random SPU code
2023-08-28 09:03:56 +03:00
Malcolm Jestadt 290ff5b839 Zero register optimization for AVX-512-VBMI
- Take advantage of the fact that AVX instructions zero the upper 128 bits for a nice optimization when one input vector is zeroed
2023-08-28 05:09:30 +03:00
Eladash be0a789e7d PPU Analyzer: Fix OPD section validation 2023-08-27 02:11:01 +03:00
Megamouse 75af7dc269 cellPad: fix lost status during cellPad_NotifyStateChange
CELL_PAD_STATUS_CUSTOM_CONTROLLER was lost when setting reported_status.
2023-08-27 00:18:23 +02:00
Megamouse 9d88102520 cellPad: fix potential out of bounds read and u32 warnings 2023-08-27 00:18:23 +02:00
Megamouse 656f971823 cellPad: some readability updates 2023-08-27 00:18:23 +02:00
Megamouse 08d9cbfe48 cellPad: implement cellPadPeriphGetData default logic and add some comments 2023-08-26 22:10:15 +02:00
Eladash 82c5c4d285 PPU Analyzer: Analyze whole segment 0 when patches are applied
Improve greedy instruction search.
2023-08-25 12:52:02 +03:00
Eladash 68c70dd1b9 Savestates: Fix config_event_entry compatibility 2023-08-25 12:52:02 +03:00
Megamouse 8772219492 Remove unused variable in PPUThread.cpp 2023-08-23 21:42:59 +02:00
Megamouse 6b7f4cbe17 cellPad: remove unused variables 2023-08-23 21:42:59 +02:00
Megamouse d8af3ea855 overlays: fix some warnings, simplify code, use move and references 2023-08-23 21:42:59 +02:00
Eladash 4794869bd8 sceNpDrm: Slow down sceNpDrmIsAvailable 2023-08-23 10:14:29 +03:00
Eladash 4462b7be5c cellGame: Make cellGameDataCheck slower
* Turns out cellGameBootCheck is actually quite fast.
* cellGameDataCheck is incredibly slow, slower for DISC type.
* Set 0 sizeKB for when RET_NONE is about to be returned.
2023-08-23 10:14:29 +03:00
Eladash 756ab1191e PPU Analyzer: Fix for unaligned sections 2023-08-23 10:14:29 +03:00
Eladash a001e6ef09 Progress Dialog: Fix race on PPU compilation status 2023-08-22 05:40:53 +03:00
Megamouse e28b705f0d Input: Add PS Move navigation controller
Add the ps move navigation controller to pad types.
Use proper pad class profiles.
2023-08-21 23:48:56 +02:00
Eladash 1843a27c2a LV2/Loader: Fix kernel regions addresses 2023-08-21 14:36:54 +03:00
Eladash 7a0185dbcc PPU/debugger: Fixup 2023-08-21 14:36:54 +03:00
Eladash 17302a9422 Debugger/PPU: Superior Callstack Detection 2023-08-20 22:43:41 +03:00
Eladash 8236a0fa2d Fixup cellPadPeriphGetInfo 2023-08-19 17:18:40 +03:00
Eladash 730badd378 cellAudio: Move and partially fix _mxr000 hack 2023-08-18 11:37:29 +03:00
Eladash 8b212f2169 PPU: Fix LVRX bad memory access 2023-08-17 17:59:45 +03:00
Eladash c8f8ecc4d6 LV2: Fixup reservation notifications 2023-08-17 13:02:57 +03:00
Eladash 6adc7f9ee6 SPU: Use usermode waiting for busy GETLLAR loop 2023-08-17 09:02:28 +03:00
Eladash dddd12f66b CELL: Postponed address notifications 2023-08-17 09:02:28 +03:00
oltolm d062fc1d31 sys_net.cpp: fix compiler warning 2023-08-15 20:56:39 +02:00
Elad Ashkenazi 968762c135 Fix PPU SELF Precompilation 2023-08-14 18:47:20 +03:00
Megamouse 0e23b89352 cellRec: add more encoder options 2023-08-13 21:35:07 +02:00
Elad Ashkenazi 219ee76bf2 cellPad: Fixup sys_config management 2023-08-13 14:20:39 +03:00
Megamouse 39bbf17caf cellRec: fix width of encoder frames
Turns out the pitch was accidentally used as width, leading to an out of bounds read/write.
I kept the pitch in the struct for completeness' sake. It may be needed later, if only for error checks.
2023-08-13 00:37:19 +02:00
Malcolm Jestadt f2e782f5dd SPU LLVM: Inline timer reads for WrDec and RdDec
- Uses RDTSC to emulate the spu decrementer
2023-08-13 00:16:35 +03:00
Malcolm Jestadt 512f0a814c SPU LLVM: Fix for AVX-512 CFLTU path
- vcvvtps2udq doesn't turn negative numbers into 0, fix by using signed integer max with 0 instead of vrangeps
2023-08-12 02:55:08 +03:00
Elad Ashkenazi 5668b1bd7a
PPU Loader: Fixup stack alignment after envp fix 2023-08-12 02:03:24 +03:00
Eladash eae1c5afdd PPU Loader: Fix main()'s envp 2023-08-11 05:07:27 +03:00
Eladash 4bbe885f35 LV2/cellPad: Implement priority-based connection updates 2023-08-10 09:31:49 +03:00
Eladash a2416bf7f5 cellPad: Fix max_connect in GetInfo
This value is saved and loaded from cellPadInit as is.
2023-08-10 09:31:49 +03:00
Eladash df24305698 PPU/Debugger: Fix op_branch_targets 2023-08-08 10:22:05 +03:00
Eladash cdc0441405 PPU: Fixup interpreter and analyzer 2023-08-08 10:22:05 +03:00
Eladash edf4f7eacc PPU/Patches: Fix CALLOC patch with interpreter 2023-08-07 19:01:38 +03:00
Eladash 8e75e940dd cellSaveData: Fix check 58, implement checks 77 and 76 2023-08-07 19:01:38 +03:00
Eladash d694600146 PPU Loader: Fixup virtual load for non PRX 2023-08-07 19:01:38 +03:00
Eladash 0989f62256 cellGame: Add some LV2 sleep
Those functions are supposed to take a really long time, and in this time the caller PPU waits for VSH.
2023-08-07 10:56:15 +03:00
Eladash 63f045ef2e Add some error checking to sys_fs_chmod 2023-08-07 10:56:15 +03:00
Eladash 91b68f3b45 PPU Analyzer: Fixup verify_func 2023-08-07 06:48:44 +03:00
Eladash 39910885d9 PPU: fix leak when precompiling SELF files 2023-08-06 21:37:10 +03:00
Eladash 506ec0f947 PPU Loader: Fix imports/exports in virtual mode 2023-08-06 21:37:10 +03:00
Eladash c96f3a877f PPU Analyzer: Add more function constraints 2023-08-06 21:37:10 +03:00
Eladash 2a0278fbb1 Fixup SPU/PPU Cache Abortion 2023-08-06 21:37:10 +03:00
Eladash ee869a49f4 PPU Precompilation Fixup 2023-08-06 10:38:40 +03:00
Megamouse 343ba8733b Merge xfloat options 2023-08-06 09:30:53 +03:00
Eladash 971c12b937 Fixup log message in sys_memory_allocate 2023-08-06 08:26:17 +03:00
Eladash 6547fa9cc3 PPU LLVM: Fixup VSH Precompilation 2023-08-06 08:26:17 +03:00
Eladash 4eaa03e9ba PPU: A few more minor bugfixes 2023-08-06 08:26:17 +03:00
Eladash d0b3891002 PPU LLVM Cache Fixup 2023-08-06 08:26:17 +03:00
Eladash e25936c1f1 PPU LLVM/RawSPU: Fixup MMIO crossing-out 2023-08-06 08:26:17 +03:00
Whatcookie d4cf12bc17
LV2: Improve sys_timer_usleep by using CPU usermode waiting
* Linux: set timerslack to minimum value
- Linux delays the wakeup of threads to save power, this feature isn't needed for this application

* Utils: Add detection for waitpkg and monitorx extensions
- These instructions are used for user mode wait instructions

* lv2: Use user mode wait instructions instead of yielding when appropriate
2023-08-05 11:49:30 +03:00
Eladash 744a1528cc Optimize memory usage of ELF loader
Do not duplicate shdr memory when it is present in phdr.
2023-08-03 16:19:55 +03:00
Eladash 06c9b95e09 PPU LLVM/SPU/Non-TSX: Obnoxiously responsive and obedient PPU for SPU requests 2023-08-03 15:04:37 +03:00
trigger 0f3dfec7f2 direct return in ppu_check 2023-08-03 12:35:06 +03:00
Ivan Chikish d34287b2cc Linux: use futex_waitv syscall for atomic waiting
In order to make this possible, some unnecessary features were removed.
2023-08-02 21:46:06 +03:00
Megamouse bb2d7063c4 Update ffmpeg 2023-08-02 08:21:47 +02:00
Megamouse d119cf6e96 Qt6 port 2023-07-31 20:03:24 +03:00
Megamouse 9b3a878c18 cellAudioIn: reduce log spam
Some logs I've seen are 20% filled with this stuff.
2023-07-31 13:19:55 +03:00
Megamouse 365b264656 cellMsgDialogAbort: do not return CELL_MSGDIALOG_ERROR_DIALOG_NOT_OPENED 2023-07-31 13:19:55 +03:00
Whatcookie fd6829f757
SPU LLVM: AVX-512 optimization for CFLTU (#14384)
- Takes advantage of vrangeps and the new float to uint instructions from AVX-512
- Down from 6 to 3 instructions

TODO: Somehow ensure that this is what llvm outputs using CreateFPToUI?
2023-07-29 09:01:01 +03:00
Talkashie dabb2cc9a0
Fix typos, improve consistency
Fixes typos where spelling or grammar is objectively wrong.
Changes wording and capitalization in some areas to be more consistent with other areas.
2023-07-28 13:09:06 +03:00
Whatcookie 4ecb06c901
SPU LLVM: Optimize common SFI+ROTQMBY pattern 2023-07-28 10:26:40 +03:00
Elad Ashkenazi 9265ff53d0
Include spu.log inside RPCS3.log when SPU Debug is true 2023-07-27 19:15:32 +03:00
Eladash 75ad56338b SPU/Non-TSX: Implement cuncurrent reservations 2023-07-27 02:50:01 +03:00
Eladash db24ce7708 SPU/MFC: Format command more consistently 2023-07-27 02:50:01 +03:00
Eladash 2d45ecff22 cellSaveData: Adjust to non-TSX 2023-07-27 02:50:01 +03:00
Elad Ashkenazi 106f31db6a sceNpTrophy: Minor UB fixup
id.data[9] is char while isprint should accept u8.
2023-07-26 17:56:44 +03:00
brian218 9a5bdc9b4f sys_fs: Updated sys_fs_fcntl(0xc0000015&0xc000001c)'s error handling according to real hardware testing 2023-07-26 13:10:51 +03:00
brian218 0b829be798 sys_fs: Fixed up sys_fs_fcntl(0xc0000007) aka cellFsArcadeHddSerialNumber according to real hardware testing 2023-07-26 13:10:51 +03:00
Megamouse 94bb75fb7c sceNpTrophy: Check if a trophy configuration file exists before starting the install process 2023-07-25 22:00:19 +02:00
Eladash 7d84d0f83e sceNpTrophy: Initial commSign checking of CreateContext 2023-07-25 21:40:35 +03:00
oltolm bc40b61ef1 rename fs::stat to fs::get_stat 2023-07-25 12:15:08 +03:00
Megamouse 13575029c0 cellSaveData: add some more error logging 2023-07-25 11:12:16 +03:00
Eladash 782344eed8 Debugger: Make break-all non-default 2023-07-24 17:07:15 +03:00
Eladash 9d3e626b55 Minor ppu_initialize fix 2023-07-24 17:07:15 +03:00
Eladash a6e8b9037a ppu: Make install function log message trace 2023-07-24 17:07:15 +03:00
Eladash 3bbc2c1f4c PPU Analyzer: Fixup get_ptr() 2023-07-23 17:58:54 +03:00
Eladash 99671b754f Add ppu_module::get_ref() to ease debugging 2023-07-23 17:58:54 +03:00
Eladash 9fc5f6271b Update SPU reservation notifier mask 2023-07-23 17:58:54 +03:00
Eladash 9ff91c29f2 Invalidate Savestates 2023-07-23 17:58:54 +03:00
Megamouse 568e7481d8 sys_fs: use path instead of u8path
Japanese PS3 games often use unicode paths which hard crash the std::filesystem::string() method.
wstring() would work in these cases, but I guess we can just use path() instead of u8path().
2023-07-20 07:22:07 +03:00
Eladash 50dad6801b SPU LLVM: Use get_known_bits() in SHUFB 2023-07-18 22:27:45 +03:00
Malcolm Jestadt ee7475a9d4 SPU LLVM: Handle SHUFB special cases with a lookup table
- Needs 3 instructions to handle the special cases, since x86 lacks an 8 bit simd shift instruction
2023-07-18 22:27:45 +03:00
Elad Ashkenazi 41d38975f7 Savestates/sys_fs: Utilize fs::file::get_id to fix an old bug 2023-07-17 08:09:09 +03:00
Eladash eecadab387 Implement fs::file::get_id()
File descripor ID with 2 provided ways to compare between them:
1. is_mirror_of():
 Test if identical:
  For example: when LHS writes one byte to a file at X offset, RHS file be able to read that exact byte at X offset)

2. is_coherent_with():
 Test if both files point to the same file:
  For example: if a file descriptor pointing to the complete file exists and is being truncated to 0 bytes from non-
  -zero size state: this has to affect both RHS and LHS files.
2023-07-17 08:09:09 +03:00
Eladash e27e6c0b2d Implement PPU usleep control setting hack 2023-07-17 07:17:11 +03:00