Nekotekina
790fd9ce14
SPU DMA: implement cmp_rdata_avx
...
Use technique similar to mov_rdata_avx with inline assembly.
2020-04-28 17:58:26 +03:00
Eladash
7da8ba5c15
Wait for SPU event to be received in sys_spu_thread_group_exit
...
Also use atomic check for group->run_state outside the mutex,
explicitly forbid group termination while we are waiting for an event to be received.
2020-04-28 14:58:17 +03:00
Eladash
a9c18964b6
Add missing cpu state check sys_spu_thread_receive_event
2020-04-28 14:58:17 +03:00
Eladash
fe7933b0d2
Make ESTAT consistent in sys_spu_thread_group_terminate
2020-04-28 14:58:17 +03:00
Eladash
9506676223
SPU debugger: dump Stall Stat and SRR0
2020-04-28 14:27:40 +03:00
Eladash
7d7909149f
SPU: Detect reservation spinning loop
2020-04-28 14:27:40 +03:00
Eladash
3be687cd18
PPU: Fix LWARX/LDARX on TSX path
2020-04-28 14:27:40 +03:00
Eladash
e423128a32
SPU: New GETLLAR technique
2020-04-28 14:27:40 +03:00
Nekotekina
3ec73b651e
SPU DMA: more tuning for mov_rdata_avx
...
Avoid unaligned stores.
Prefer asm path if __AVX2__ is not set.
Don't emit vzeroupper if __AVX__ is set.
2020-04-27 18:05:52 +03:00
Nekotekina
4f71c570bd
SPU DMA: disable memcpy path
...
Due to update of the alternative path (SSE/AVX)
2020-04-26 22:36:55 +03:00
Nekotekina
8ae2554505
Implement mov_rdata_avx
2020-04-26 22:36:45 +03:00
Nekotekina
58ba6d68bb
Don't use std::popcount (workaround)
...
It seems MSVC uses POPCNT instruction when compiling for SSE2.
2020-04-25 18:01:39 +03:00
scribam
3fd3bd7ca1
spu: Add some "if constexpr"
2020-04-25 14:56:47 +03:00
Megamouse
e4cb9ef7cd
cellpad: add pclass_profile flags
2020-04-25 10:17:48 +02:00
Megamouse
4e6d95c5b8
Qt/input/cellpad: enable product choice
2020-04-25 10:17:48 +02:00
Eladash
256c74def2
sys_rsx: Fix error code instead of success on invalid context
2020-04-23 14:01:04 +03:00
Eladash
c48ccc6f3c
sys_rsx: Fix zcull bind error checking regression
2020-04-23 14:01:04 +03:00
Eladash
8c747bf0a2
sys_rsx: More error checks for ZCULL area binding
...
And clamp zcull offset to 256MB, it's unknown if only the error check clamps or it is clamped entirely.
2020-04-21 16:18:32 +01:00
Eladash
dbce10d0e3
PPU LLVM: Fix rounding regression of FNMADDS, FNMSUBS ( #8066 )
...
* PPU LLVM: Fix rounding regression of FNMADDS, FNMSUBS
2020-04-19 20:55:26 +01:00
rxys
5101bc189e
Fix FMA copypasta ( #8060 )
2020-04-19 19:17:19 +01:00
Eladash
5960de2e20
PPUAnalyzer: Check if TOC from OPD is a valid address
2020-04-19 10:56:42 +01:00
Eladash
1cb3bf6dab
Minor fixup for unimplemented syscall args dump
2020-04-19 10:56:42 +01:00
Eladash
0bf73ba0bc
PPU debugger: report functions on registers display
2020-04-19 10:56:42 +01:00
Eladash
368bd7cf02
PPU debugger: read 32-bit pointer instead of 64-bit
...
PPU ABI supports only 32-bit pointers in userland, also fix it to use super ptr.
2020-04-19 10:56:42 +01:00
Eladash
83c7f6f149
debugger: Rephrase "Current function" to "In function"
...
Takes less space which makes actual function name display a bit nicer.
Also the meaning is clearer.
2020-04-19 10:56:42 +01:00
Eladash
6210507a37
sys_rsx: Fix tiles on MAIN memory error checking
2020-04-18 10:20:03 +03:00
Eladash
06d4505992
sceNp: Override k_licensee for PE game category
...
Co-Authored-By: AniLeo <ani-leo@outlook.com>
2020-04-17 11:41:50 +01:00
Eladash
a3f2dfa232
sys_isolated_spu
2020-04-17 11:41:50 +01:00
Eladash
921b1aadfb
lv2: Log all arguments of unimplemented syscalls
2020-04-17 11:41:50 +01:00
Nekotekina
c7fe8567b8
Experimental squashing of reservation memory area.
...
Enables trivial synchronization between shared mem.
Reduces memory usage, but potentially degrades performance.
Rename an overload of vm::passive_lock to vm::range_lock.
2020-04-16 02:25:43 +03:00
Eladash
8cb1f4fe26
liblv2 HLE: Fix spu_elf_info loader for SCE SPU images ( #8045 )
2020-04-15 21:19:46 +01:00
Nekotekina
074b9f94db
Fix regression in SPU ASMJIT
...
Incorrect arithmetics.
2020-04-15 12:19:15 +03:00
Nekotekina
b1b67a13c6
Revert "Replace rotate utils with std::rotl" (partial)
...
This reverts commit 4d8bfe328b .
2020-04-14 19:45:53 +03:00
Eladash
bc3b70c338
Fix ppu_rotate_mask
2020-04-14 19:10:30 +03:00
Eladash
63be05d5d3
minor ppu fixup
...
does not affect anything except consistency.
2020-04-14 17:09:58 +03:00
Eladash
ec1e82bc9d
SPU debugger: Implement blocking functions dumping
2020-04-14 17:09:58 +03:00
scribam
f37adc4188
Add fallthrough attribute
2020-04-14 17:06:58 +03:00
Nekotekina
4d8bfe328b
Replace rotate utils with std::rotl
...
More include cleanup.
2020-04-14 16:05:58 +03:00
Nekotekina
f72af2973d
Replace utils::popcnt32 with std::popcount
...
Cleanup includes.
2020-04-14 16:05:58 +03:00
Nekotekina
032e7c0491
Replace utils::cntlz{32,64} with std::countl_zero
2020-04-14 16:05:58 +03:00
Nekotekina
d0c199d455
Replace utils::cnttz{32,64} with std::countr_{zero,one}
...
Make #include <bit> mandatory.
2020-04-14 16:05:58 +03:00
Eladash
2dcc3255b2
Fix sys_net_bnet_sendto ( #8026 )
2020-04-13 18:49:12 +01:00
JohnHolmesII
a8a83c9724
cellRtc: Extend before shift, per decompiled output
2020-04-13 14:37:11 +03:00
JohnHolmesII
f0b1c8302a
Fix order of operations warning
2020-04-13 14:37:11 +03:00
Eladash
c8b8cafeec
PPU: Merge reservations store functions into one
2020-04-13 14:34:37 +03:00
RipleyTom
791c0da236
Add Disney Portal to passthroughs ( #8022 )
2020-04-13 11:49:42 +01:00
Eladash
b45d836b89
sys_net: Fix sys_net_bnet_bind page faults
...
+ EINVAL checks
2020-04-13 04:34:10 +01:00
Eladash
8f32d44635
sys_net: Fix sys_net_bnet_sendto
2020-04-13 04:34:10 +01:00
Eladash
9fb30f130a
sys_net: Fix sys_net_bnet_getsockopt
...
+ EINVAL checks
2020-04-13 04:34:10 +01:00
Eladash
d91d420981
sys_net: EINVAL check in sys_net_bnet_listen
2020-04-13 04:34:10 +01:00
Eladash
442035c251
sys_net: EINVAL checks in sys_net_bnet_accept
2020-04-13 04:34:10 +01:00
Eladash
063902728b
sys_net: EINVAL checks in sys_net_bnet_recvfrom
2020-04-13 04:34:10 +01:00
Eladash
60a63fa4b6
sys_net: Fix sys_net_bnet_getsockname page faults
...
+ EINVAL checks
2020-04-13 04:34:10 +01:00
Eladash
7399a3f1e9
sys_net: Fix sys_net_bnet_getpeername page faults
...
+ EINVAL checks
2020-04-13 04:34:10 +01:00
Eladash
c4f6968aae
sys_net: Fix sys_net_bnet_connect page faults
...
+ EINVAL checks
2020-04-13 04:34:10 +01:00
Eladash
00957ca4bf
sys_net: Fix sys_net_bnet_select page faults
2020-04-13 04:34:10 +01:00
Eladash
179a9b3bf0
sys_net: Fix sys_net_bnet_poll page faults
2020-04-13 04:34:10 +01:00
Eladash
cb14805d78
rsx fp/vp analyzers: Fix strict type aliasing and improve codegen
2020-04-12 16:48:43 +03:00
Eladash
ae1ff1e96d
ppu exec loader: Log TLS image information
2020-04-12 10:30:38 +01:00
Eladash
bb950cbb3b
vm: Fix possible IDM deadlock with Page Fault Notifications (partial)
2020-04-12 10:30:38 +01:00
Whatcookie
6b0f7a8f55
PPU LLVM: Optimize altivec FMA with 0 addend ( #8013 )
...
- When VMADDFP and VNMSUBFP are used with a constant addend of 0, they can be simplified into a single floating multiply
2020-04-12 09:52:21 +01:00
Eladash
8e61c65c0d
Fixup ::as_rvalue
2020-04-11 22:55:55 +03:00
Eladash
141d62fbf9
Implement ::as_rvalue
2020-04-11 21:58:36 +03:00
Eladash
e407018bb5
rsx: Write ref+get atomically
...
May contribute to better FIFO synchronization in some cases.
2020-04-11 21:21:15 +03:00
Eladash
ff74c241c7
rsx: Fix get_optimal_blit_target_properties for local memory
2020-04-11 21:21:15 +03:00
Eladash
d69bec8f59
rsx: Fix vblank thread stop regression
2020-04-11 21:21:15 +03:00
Eladash
504ba8d824
rsx: Fix grammer issue (binded -> bound)
2020-04-11 21:21:15 +03:00
Eladash
8228fa1ece
sys_rsx: Warn if RSX is not idle during crucial points
2020-04-11 21:21:15 +03:00
Eladash
1f9f455801
sys_rsx: Implement error checks for Zcull/Tiles binding
...
* Check zcull/tiles offset if bigger than max MAIN/LOCAL size.
* Check memory mapping of offset if location is MAIN.
* Check pitch/size for 0 as coming from hw tests.
* In addition: fix 'bound' check of tiles, seem to rely on the bits location is in.
* Add locks for zcull/tiles/displaybuffer binding.
2020-04-11 21:21:15 +03:00
Eladash
5ba26e247b
sys_rsx: Implement LLE cellGcmSysGetLastVBlankTime
2020-04-11 21:21:15 +03:00
Eladash
d451a0b7b7
SPU LLVM: Improve FNMS
...
Should be more accurate with postive/negative zero inputs according to docs while being more optimized.
TODO: Check SPU precise interptreter.
2020-04-09 17:27:14 +03:00
Eladash
158b24ec25
SPU LLVM: Add accurate double-precision FMA support
2020-04-09 17:27:14 +03:00
Nekotekina
1b68f90e42
Tweak TSC calibration
...
Round to 3 digits after dot (count in MHz).
2020-04-09 16:23:33 +03:00
clienthax
765b14a8ba
Implement cellRtc HLE ( #7933 )
2020-04-09 15:54:41 +03:00
Eladash
cce946f10e
spu: typo fix
2020-04-08 19:23:13 +03:00
Eladash
c948c9305c
sys_ppu_thread_create: read function descriptor immediately and save it
2020-04-08 19:23:13 +03:00
Eladash
c0f4fb6e35
SPU debugger: dump reservation address
2020-04-08 14:35:44 +03:00
Eladash
cc8f024c6c
Fixup ppu/spu_thread::dump_all()
2020-04-08 14:35:44 +03:00
Eladash
995fa63f4c
sys_rsx: Fixup after #7978
2020-04-08 11:33:26 +03:00
Eladash
f7536bbce0
sys_rsx: Fix gcm events spam
...
In realhw the events are only sent if they are masked in driver_info->handlers as well.
2020-04-07 20:43:28 +03:00
Eladash
3f48450408
sys_rsx: Minor atomicity fixes
2020-04-07 20:43:28 +03:00
Víctor "IlDucci
a38d2461c9
Linguistic changes ( #7917 )
2020-04-07 17:10:04 +02:00
Nekotekina
91d80aa7b9
Implement jit_compiler::check
...
Instead of checking file existence (because file may be damaged).
2020-04-07 16:09:47 +03:00
Nekotekina
7939160178
Shorten SPU LLVM Worker name to SPUW.#
...
For debugging.
2020-04-07 15:55:30 +03:00
Nekotekina
3eabec0030
SPU: Fix SPU Precise interpreter
2020-04-07 15:42:27 +03:00
Eladash
8f3ad8b81a
Fix cellGameDataCheckCreate2 error broken check ( #7976 )
2020-04-07 14:03:03 +03:00
Megamouse
b1fdbc7fcc
Move some format functions
2020-04-06 20:59:58 +02:00
Silent
fd09dde911
cellSearch: Change search state before invoking callbacks
2020-04-05 16:35:56 +03:00
Eladash
dc5cdb3bb4
sys_ppu_thread: reduce global memory stats after thread creation
2020-04-05 15:23:09 +03:00
RipleyTom
f33373ca1b
Add Lego Dimensions Portal to usb passthroughs
2020-04-05 14:23:54 +03:00
Nekotekina
ae140a1ac9
SPU LLVM: improve stack mirror format in Mega mode
...
Store first instruction for additional validation.
Should fix some problems.
I didn't touch ASMJIT.
2020-04-04 21:40:42 +03:00
Nekotekina
8053d2602a
SPU LLVM: implement bisect helper (debugging tool)
...
Added two new settings: SPU LLVM Lower/Upper Bound
By manipulating values, conditionally avoid compiling programs.
It uses hash of the programs (64-bit start hash of SHA-1).
Programs which aren't compiled run with interpreter.
2020-04-04 21:38:40 +03:00
Nekotekina
18dbd788e6
SPU DisAsm: fix disasm for BINZ and similar instruction
2020-04-04 21:38:40 +03:00
Nekotekina
a53d0d50b3
SPU LLVM: add alternative ROTQBY implementation
...
Used if SSSE3 is not available (exec_rotqby).
2020-04-04 21:38:40 +03:00
Nekotekina
f05e24e8e8
SPU LLVM: make LS loads/stores volatile
...
Fixes PS1 classics and possibly something else.
2020-04-04 21:38:40 +03:00
Eladash
0b24b09a06
sys_fs: Lock dev_hdd1 mount point at cellSysCacheClear
2020-04-04 19:36:16 +01:00
Eladash
a178374052
sys_fs: Limit NPDRM FDs to 16
...
Co-Authored-By: Silent <cookieplmonster@users.noreply.github.com>
2020-04-04 19:36:16 +01:00
Eladash
63080c22a3
Fix ppu_thread::dump_callstack()
2020-04-04 00:06:51 +03:00
Eladash
55baaea8e7
liblv2 HLE: Fix sys_lwcond_signal mode 3
2020-04-03 19:42:25 +03:00
Eladash
13820d6802
SPU debugger: Show channels data
2020-04-03 18:37:21 +03:00
Eladash
0beea91d5e
Minor debugger fixups
2020-04-03 18:37:21 +03:00
Eladash
3f559cd86e
Fix sys_cond_destroy ( #7931 )
...
Dereference cond count in sys_cond_destroy
2020-04-03 12:45:59 +03:00
Nick Renieris
6cbb12e5cd
PPUThread: String & hex previews for register pointers in register dump
2020-04-03 01:36:35 +01:00
Nick Renieris
1231274e0f
CPUThread: Split dump() info to separate methods
2020-04-03 01:36:35 +01:00
Eladash
92f821aeb1
PPU LLVM: Add FMA accuracy setting ( #7874 )
...
* PPU LLVM : Match PS3 for the instructions fmadd, fmadds, fmsub, fmsubs, fnmadd, fnmadds, fnmsub, fnmsubs
Co-authored-by: doesthisusername <yfirestorm@gmail.com>
2020-03-31 20:01:10 +03:00
Eladash
fdd7f0645d
Some typos ( #7908 )
...
* sys_lwcond: replace writer lock with reader lock
* sys_rsx: Typo fix
* sys_net: Fixup for buffer reading
2020-03-31 16:44:50 +03:00
Eladash
29be815302
rsx: Implement DECR memory layout ( #7906 )
2020-03-31 05:12:30 +01:00
Eladash
1510505b30
Fix sys_rwlock_wlock timeout event
2020-03-30 14:22:15 +03:00
Eladash
019aae8bec
sys_net: Fix access violation handling ( #7901 )
...
Should fix page faults notifications on unmapped menory on Gran Turismo 5.
2020-03-30 05:53:17 +01:00
Whatcookie
cc100f4008
Fix alignment on embedded spu elf searching ( #7894 )
...
- They are actually 128 byte (1024 bit) aligned.
2020-03-29 03:54:45 +01:00
Nekotekina
dcc269128f
SPU LLVM: runtime multithreaded compilation
...
Active for CPU with 12 or more threads.
2020-03-28 17:17:51 +03:00
Nekotekina
9db088e17b
SPU LLVM: log hash in some places
2020-03-28 17:17:51 +03:00
Eladash
66bd8308d9
lv2: Wait for rescheduling before confirming timeouts ( #7875 )
2020-03-28 03:16:59 +00:00
AniLeo
c00ee7ed5b
hle: cellSysutilNpEula
...
Add missing function names and stub all functions
Co-Authored-By: Eladash <elad3356p@gmail.com>
Co-Authored-By: Eladash <elad3356p@gmail.com>
2020-03-27 15:26:28 +03:00
Eladash
36d8553f9c
liblv2 HLE: Fix entryx of start/stop prx functions
2020-03-26 17:52:45 +03:00
Eladash
7ed570dc4a
PPU LLVM: Add relocation 5 for ADDIS
...
+ Add some more for u16 relocations (4, 5, 6), simplify logic.
2020-03-26 17:52:45 +03:00
Nekotekina
fa29c5aa94
ppu_iname: refactor to use actual strings
2020-03-26 15:28:41 +03:00
Nekotekina
8d1a9dce91
spu_iname: refactor to use actual strings
2020-03-26 15:26:55 +03:00
Eladash
453478c98b
PPU LLVM: Log unsupported relocation opcode
2020-03-26 15:22:45 +03:00
Eladash
ccc7cb7994
Log IDs of loaded prx modules
2020-03-26 15:22:45 +03:00
Eladash
150d1bcdd5
sys_prx_unload_module: Implement CELL_PRX_ERROR_NOT_REMOVABLE
2020-03-25 16:22:47 +03:00
Eladash
e1f2f3f081
sys_prx: Improve sys_prx_start/stop_module
...
* Add missing error codes, "internal" errors are ones which are not reachable from liblv2.sprx functions
* Implement SYS_PRX_NO_RESIDENT (unloading module) for _sys_prx_start_module.
2020-03-25 16:22:47 +03:00
Eladash
717dd1625c
sys_prx: Implement sys_prx_get_module_list
2020-03-25 16:22:47 +03:00
Nekotekina
471db3219d
Finalize constexpr ppu_decoder<> thing
...
Move SSSE3 checks to runtime in PPUInterpreter.cpp
2020-03-25 11:18:48 +03:00
Nekotekina
1ceb779a38
Make ppu_decoder<> objects constexpr (partial)
2020-03-24 13:46:46 +03:00
Nekotekina
a936533eb1
Make spu_decoder<> objects constexpr
2020-03-24 12:18:37 +03:00
Eladash
eb1de04ca8
_sys_lwmutex_lock: log new case of ESRCH
2020-03-23 23:18:21 +03:00
Eladash
2aff36647a
Make sceNpDrmProcessExitSpawn(2) execute sys_game calls correctly
2020-03-23 23:18:21 +03:00
Eladash
52360b3f98
liblv2 HLE: Fix sys_lwmutex_lock assertation
2020-03-23 21:37:37 +03:00
Eladash
08e66ab14c
Minor warning fixes
2020-03-23 21:37:37 +03:00
Eladash
3de41bfea7
_sys_lwcond_signal: Make mode 3 respect ordering of the sleep queue
2020-03-23 21:37:37 +03:00
Megamouse
1537f505a5
cellGem: fix move_handler::mouse left click
2020-03-23 15:10:01 +03:00
Nekotekina
5ebc538d7e
Workaround for VS 16.5
...
Strange codegen bug didn't promote s32 to u64.
2020-03-23 14:48:49 +03:00
Eladash
537f175f52
Another fixup after #7826
2020-03-23 11:54:19 +03:00
Eladash
017ef5a94e
Minor fixup after #7826
2020-03-23 10:59:51 +03:00
Eladash
cccc32fa9d
sys_lwmutex/lwcond: track lwcond waiters ( #7826 )
...
In lwmutex destroy syscall, wait for pending waiters.
2020-03-23 10:30:17 +03:00
Emmanuel Gil Peyrot
425e032a62
SPU: Copy with memcpy() instead of hand-rolled SSE2
...
In some very unscientific benchmark:
spu_thread::do_dma_transfer() was taking 2.27% of my CPU before, now
0.07%, while __memmove_avx_unaligned_erms() was taking 1.47% and now
2.88%, which added makes about 0.8% saved.
2020-03-22 15:51:03 +03:00
Nekotekina
e606130262
Memoize and print r3-r6 under Current function in the ppu_thread::dump()
2020-03-22 14:13:52 +03:00
Eladash
dc839e1784
lv2: Do not lose r3 data on syscalls
...
Allows to get the ID of the lv2 sync objects in the debugger by looking at r3's content.
2020-03-22 12:41:02 +03:00
Eladash
01cafc042d
cellSaveData: Ensure savedata_context members are 16-byte aligned
...
I saw stvx v128{0} (aligned 16-bytes store) usage on the first 16-bytes of CellSaveDataCBResult before funcStat in fw.
Also I saw 4 stw of u32{0} on it as well before funcFile, funcFixed and funcList.
So just add the resets for result before all callbacks, and make all
members of savedata_ontext 16 -byte aligned in case there are more
members guaranteed to be aligned.
2020-03-21 19:05:20 +03:00
Eladash
ceaee0ec68
cellSaveData: Clear traces of setList setup from setBuf->buf, add missing memset
...
* Always memset 0 setBuf->buf (to bufSize) before funcStat if the direcory is not new.
* Always memset 0 setBuf->buf (to bufSize) if listGet->dirNum became non-zero (listGet->dirListNum can be zero yet memset still occurs) .
* Clear traces of setList setup before funcStat (after funcFixed/List, only if listGet->dirNum != 0, callback can hack this value and prevent the memset).
2020-03-21 19:05:20 +03:00
Eladash
b6a288d383
cellSaveData: Skip directory items in savedata_get_list_item
2020-03-21 19:05:20 +03:00
Eladash
ae14eb0747
Minor fix of cellUserInfoGetStat
...
stat == nullptr is allowed, fix invalid id error code.
2020-03-21 19:05:20 +03:00
Eladash
be0e586671
cellSaveData: Add error checks for cellSaveData(User)GetListItem
2020-03-21 19:05:20 +03:00
Eladash
66916df4ae
cellSaveData: Set listSet->focusPosition to LISTHEAD by default
2020-03-21 19:05:20 +03:00
Eladash
fae46bf194
cellSaveData: Add CELL_SAVEDATA_ERROR_NOUSER
2020-03-21 19:05:20 +03:00
Eladash
e1cb827488
PPU Precise: Fix FMADDS, FMSUBS, FNMSUBS, FNMADDS
2020-03-21 16:32:09 +03:00
Eladash
3a36b713ce
Dont spam syscalls stats if emu is paused
2020-03-21 16:31:18 +03:00
Megamouse
f1127f1894
overlays: implement osk panels
2020-03-19 21:10:08 +01:00
Eladash
1dbb5422a2
Avoid a segfault when reading ppu stack contents in debuggers
...
TODO: lock vm mutex.
2020-03-19 14:18:05 +03:00
Eladash
7139c4fbab
Fix bug introduced by #7797
2020-03-19 07:22:05 +03:00
Malcolm Jestadt
0bfdc1f62e
PPU LLVM: Improve VMADDFP and VNMSUBFP
...
- Use native FMA to emulate VMADDFP, with a fallback for processors that don't support FMA
- Use native FMA to emulate VNMSUBFP as well, but note that it differs from the emulated path with regards to negative zero
2020-03-19 06:47:16 +03:00
Eladash
b11e8f8b8d
Minor fix of sys_ppu_thread_yield return value
...
Account for a special case where threads were rotated but no context
switch was made.
2020-03-19 06:45:14 +03:00
Eladash
7be35315da
Fix lv2 sys_lwcond/sys_lwmutex kernel explorer names
2020-03-19 06:45:14 +03:00
Nekotekina
6a2571d0e1
SPU: print current chunk hash in dump
2020-03-18 18:28:46 +03:00
Eladash
03a6d67c6c
Log sys_lwmutex/sys_lwcond names as strings
...
Use std::string_view instead of creating a temporary NTS string when reading object name.
2020-03-17 18:22:13 +03:00
Eladash
a9f492b605
sys_spu: Fix oops in sys_raw_spu_destroy after #7782
...
'id' is not the idm id, also explicitly join the thread so a situation where the thread is still active and communicating other threads (e.g via MMIO or MFC) yet its ID is removed won't happen. (logic breakage, destroyed thread can't be active)
2020-03-17 18:22:13 +03:00
Eladash
664d606123
Add return value of sys_ppu_thread_yield
2020-03-17 18:22:13 +03:00
Eladash
00d25a191b
lv2: Uncomment sys_ppu_thread_stop/restart
2020-03-17 18:22:13 +03:00
Eladash
3566faabd9
Add missing lv2_obj::sleep when joining interrupt thread
2020-03-16 21:06:33 +03:00
Eladash
7e224c5585
cellVdecClose: Followup fix to #7663
...
Avoid executing sys_interrupt_thread_disestablish on different ppu thread with the same ID.
2020-03-16 21:06:33 +03:00
Eladash
9e14e835e7
Fix sys_raw_spu_destroy
2020-03-16 21:06:33 +03:00
Nekotekina
45389dca51
PPU: minor fix for ppu_join_status::max
...
Don't treat it as special "invalid" value.
2020-03-14 20:36:56 +03:00
Eladash
4e6934c9dc
Minor idm::remove_verify usage optimization in sys_interrupty.cpp
...
Avoid copying a shared ptr, create a weak ptr instead.
2020-03-14 19:26:37 +02:00
Eladash
74c05ec5ee
PPU Disasm: Fix non-link extended BCCTR forms
2020-03-14 19:26:22 +02:00
Eladash
83a2204f87
PPU Disasm: Fixup BCCTR after #7775
2020-03-14 18:30:14 +02:00
Eladash
c16124f0d9
idm: Fix minor race in cellVdecClose, sys_raw_spu_destroy...
...
Because of racing removal of IDs vs the shared pointer owned object
2020-03-14 18:30:14 +02:00
Eladash
efe6e1eb0a
sys_ppu_thread: Make PPU id removal after exit atomic with descheduling
...
* Make PPU id removal after exit atomic with descheduling
* Make joining thread scheduling atomic with thread exit sleep.
* Update sys_ppu_thread_stop/restart.
* Add idm::remove_verify.
2020-03-14 18:30:14 +02:00
Eladash
c3d36940c7
cellSaveData: do not allow to read/write/delete system files in funcFile
...
Return param error 70 as realhw in this case.
2020-03-14 16:12:18 +03:00
Eladash
ff341fe597
PPU Disasm: Fix branches spacing
...
Null terminator was added at the end which prevented proper spacing.
2020-03-14 16:12:18 +03:00
Eladash
db71d4852a
cellSaveData: Fix adding file entries to PARAM.SFO on error
2020-03-14 16:12:18 +03:00
Eladash
88ee198d78
cellSaveData: return ERROR_FAILURE on funcFile deletion failures
2020-03-14 16:12:18 +03:00
Eladash
5d78d81c00
cellSaveData: Filter directory lists to allowed savedata directories
...
Filters "." and "..", as well as possible wrong directories added by the user.
2020-03-13 22:43:27 +03:00
Eladash
b21b4faca8
cellSaveData: Fixed savedata lock after fmt::throw_exception
2020-03-13 22:43:27 +03:00
Eladash
d58f52ff31
cellSaveData: Add some listSet error checks
...
* Check listSet->fixedListNum.
* Check listSet->fixedList for nullptr and its directory items names.
* Check listSet->focusDirName for nullptr and directory name.
* Check listSet->newData->iconPosition.
* Check listSet->newData->dirName for nullptr and directory string.
* Check statSet->setParam->parental_level for old sdk.
* Return an error if listSet->focusPosition is NEWDATA and listSet->newData is nullptr.
* Simplify savedata directory list selection.
2020-03-13 22:43:27 +03:00
Eladash
54af8ec544
cellSaveData: funcFile fixes
...
* Allow '_' at filenames start and extension.
* Check if reading offset is valid, fix error code to CELL_SAVEDATA_ERROR_FAILURE.
* Don't create empty file on error of write ops.
* Don't allow "." and ".." filenames on funcFile, return CELL_SAVEDATA_ERROR_BROKEN.
2020-03-13 22:43:27 +03:00
Eladash
fdf47f43d8
cellSaveData: refactor param error 70 checks
...
Also extend the check to check empty name.
2020-03-13 22:43:27 +03:00
Nekotekina
04dedb17eb
Disable exception handling.
...
Use -fno-exceptions in cmake.
On MSVC, enable _HAS_EXCEPTION=0.
Cleanup throw/catch from the source.
Create yaml.cpp enclave because it needs exception to work.
Disable thread_local optimizations in logs.cpp (TODO).
Implement cpu_counter for cpu_threads (moved globals).
2020-03-12 16:03:08 +03:00
Megamouse
3ea94c286b
input/overlays: fix premature pad interception removal
...
shader compilation and trophy notifications shouldn't cancel the pad interception during proper dialogs
2020-03-10 19:04:32 +01:00
Bird Egop
4e25daffa6
Explicitly rename has_512 into has_avx512 ( #7751 )
2020-03-10 19:21:00 +03:00
Eladash
af7cdcb5c7
Add forgotten error check in sys_spu_thread_group_connect_event
2020-03-09 16:07:14 +03:00
Nekotekina
9dca2887d8
Fixup for Emu.Pause()
...
Remove some reduntant calls.
Don't pause on unknown sys_fs_fcntl operation.
2020-03-08 22:03:16 +03:00
Eladash
5692c3de04
Fix sceNpUtilCmpNpId
2020-03-08 12:49:34 +03:00
Eladash
892f74d762
rsx: Improve frame-limiter ( #7723 )
...
* rsx: Improve frame-limiter accuracy
* lv2: Improve lv2_obj::wait_timeout response time for aborting threads
* rsx: Make stretch to display area setting dynamic
* rsx: Redefine 'auto' frame limiter to obey vblank rate
* rsx: Make frame limiter setting dynamic
* rsx: Make frame-limiter compatible with dynamic changes
2020-03-08 01:11:35 +03:00
Eladash
deb6bd3e25
Atomic sys_prx_load_module_list error checks
2020-03-07 22:03:38 +03:00
kd-11
6e3406b3f5
video: Allow selection of 3D stereo resolutions
2020-03-07 16:58:35 +03:00
Nekotekina
e4a81b1d13
Move Log.h to util/logs.hpp
2020-03-07 12:29:23 +03:00
Nekotekina
a166d3680e
Don't throw on invalid whence (return fs::error::einval)
2020-03-07 11:52:54 +03:00
Eladash
1669e95870
Implement lv2_file::open()
...
Return accurate error codes in prx_load_module, sys_spu_image_open and overlay_load_module.
2020-03-06 21:16:46 +03:00
Nekotekina
acd50eefaf
Try to use designated initializers
2020-03-06 09:42:49 +03:00
Eladash
f6cf36f6a7
Fix _sys_prx_get_module_info p0pt->filename writing with 0 size
2020-03-05 18:28:56 +03:00
Nekotekina
0a41999818
PPU LLVM: fix regression from warning fixes
...
Forgot that negative power is used here.
2020-03-05 11:07:40 +03:00
Megamouse
21b6495aaa
Fix ui and sys_net warnings
2020-03-04 22:28:05 +01:00
Nekotekina Aux1
250736ece5
Fix warnings in emucore
2020-03-04 21:23:34 +03:00
RipleyTom
f1f5c91386
Fake PSN ( #7516 )
2020-03-04 13:55:35 +00:00
Nekotekina
bdbc7b5f1d
PPU: use named_thread_group to compile modules
...
Improves internal logic by not using too many threads.
2020-03-04 14:10:38 +03:00
Nekotekina
5b0476e772
Update LLVM to new llvm-mirror (LLVM 11)
...
Use clang-cl to build LLVM on Windows.
2020-03-03 18:33:02 +03:00
Nekotekina
68f50c7035
Fix ppu_syscall_usage thread waiting
...
Fixed 10s hang on exit
2020-03-03 18:33:02 +03:00
Eladash
5c3d417b35
Fix cellGameDataCheck's game data creation with PARAM.SFO set/get
2020-03-03 18:31:43 +03:00
Nekotekina
01db83bc36
SPU LLVM: Rewrite fma32x4 to match FM and older asmjit stuff
2020-03-03 11:31:20 +03:00
Eladash
de1774d8f2
cellSaveData: fix doneGet->sizeKB ( #7674 )
...
* cellSaveData: fix doneGet->sizeKB
* [⚠️ ] Warning: beware of typos [⚠️ ]
2020-03-03 11:24:49 +03:00
Nekotekina
3105b21909
Print PPU Syscall Usage Stats
...
* Every 10 seconds
* On normal exit
2020-03-02 20:48:20 +03:00
Nekotekina
bd234a7668
sys_ppu: another fixup
2020-03-02 10:35:54 +03:00
Nekotekina
c7fa4e2375
Fixup
2020-03-01 22:40:48 +03:00
Nekotekina
6ee9153329
sys_ppu_thread: fixing detached threads
2020-03-01 22:29:03 +03:00
kd-11
582c98359e
videoOut: Resolve 'auto' aspect ratio
...
- 'Auto' is not an actual aspect ratio, just a dont-care flag to set the
display to the best fit aspect ratio.
Decay this option into a proper ratio for cellVideoOutGetState to
return legal values.
2020-03-01 20:10:11 +03:00
Eladash
7dfd50d5cc
cellSaveData: followup to #7652
2020-03-01 20:09:46 +03:00
Nekotekina
b05b16aedc
sys_ppu: Hotfix for detached threads
2020-03-01 18:30:16 +03:00
Eladash
ffd5a9e91c
cellSaveData: Add some error checks for fixedSet, fileSet params
2020-03-01 10:56:41 +02:00
kd-11
14aebeac58
video-out: Allow applications to successfully change display resolution
...
- Avoids a situation where a game configures output correctly but gets back bogus information later when querying.
- Should fix games being broken at some resolutions but not others.
2020-03-01 00:16:52 +03:00
Eladash
655f7ce8a2
cellSaveData: Add null funcStat check
...
it's ordered specially for some functions
2020-03-01 00:14:45 +03:00
Eladash
c11074a128
RawSPU: fix race condition in RunCntl stop request
2020-02-29 21:54:54 +03:00
InvoxiPlayGames
ef6854ca46
sys_usbd: Guitar Hero Live controller emulation ( #7336 )
...
* Initial GHLtar emulation
* Add GHLtar to CMakeLists and VS project, zero the buffer and remove unused header values
* Fix coding style issues and include headers
* Remove redundant if, improve code formatting
* Remove needless includes
Co-authored-by: Ivan <Nekotekina@users.noreply.github.com>
2020-02-29 21:40:44 +03:00
Eladash
50f51be06a
Improve sys_timer_get_information ( #7638 )
...
* Improve sys_timer_get_information
* sys_timer_disconnect_event_queue sets STATE_STOP regardless of port connection status.
* sys_timer_get_information sets 0 for period and next_expire if the timer is stopped.
* Fix two minor races in lv2_timer thread
* If the timer thread is about to fire an event of queue x, then another thread disconnects the queue, then restarts the timer and connects the event queue, then the timer thread sends an event - event data combination (source, data1, data2, next) may be inaccurate.
* If the timer thread is about to send an event (periodically), then another thread stops the timer and starts it again with sys_timer_start_periodic_absolute, timer.expire in info->timer_state in sys_timer_get_information may be inaccurate.
2020-02-29 17:15:25 +03:00
Nekotekina
f72971f19f
Implement named_thread_group
2020-02-29 16:55:25 +03:00
Eladash
5a73943be6
Fix sys_timer_destroy
...
Also some cleanup.
2020-02-29 13:06:14 +03:00
Eladash
34a0c3f488
cellSaveData: Add error param 72, 73 checks for file write ops
2020-02-29 13:06:14 +03:00
Eladash
8762f2a588
Use more starts_with
2020-02-29 13:06:14 +03:00
Eladash
d7dd4897f8
Allow 0x30000000 > addr >= 0x2000000 ppu loader exec allocations (workaround)
2020-02-29 13:06:14 +03:00
Nekotekina
a84077f174
sys_ss: use BCryptGenRandom on Win32
2020-02-29 12:15:42 +03:00
Nekotekina
490f58ff3c
Try to purge thread_state::detached
...
It's rarely necessary, but can cause unexpected problems.
2020-02-28 21:11:13 +03:00
Eladash
05bb6e1545
Improve sceNpDrmVerifyUpgradeLicense(2), sceNpDrmIsAvailable(2)
...
* sceNpDrmVerifyUpgradeLicense(2): copied string from content_id is 47 chars in length at max, is no null term was found it forces string termiation.
* sceNpDrmIsAvailable(2): Same with drm path just that it's 256 chars at max.
2020-02-28 19:10:39 +03:00
Nekotekina
65eeee0f4c
Remove cancerous lf_value<>
...
Replace thread names (generic, PPU, SPU) with new shared pointers.
Devirtualize cpu_thread::get_name (used in single case).
2020-02-28 18:54:46 +03:00
Eladash
30f7c81cc5
cellSaveData: Implement/Fix param error 22 for funcFile, funcDone, funcFixed and funcList
2020-02-28 16:47:51 +01:00
Ivan
e133c7a7dc
Merge pull request #7506 from elad335/patch-1
...
PPU exec/ovlm ldr: restrict allocations
2020-02-27 22:55:30 +03:00
Eladash
0eabfdcadd
cellSavedata: reset padding of g_savedata_context
2020-02-27 22:31:31 +03:00
Eladash
d86241bbcd
cellSaveData: reset fileSet and fileGet->reserved everytime
2020-02-27 22:31:31 +03:00
Eladash
42a0512c66
cellSaveData: Avoid passing vm pointer to native API
2020-02-27 22:31:31 +03:00
Eladash
556aba46b5
cellSaveData: do not fail on empty directory
2020-02-27 22:31:31 +03:00
Megamouse
ee46ad1ca9
move overlays code to headers
2020-02-26 23:43:18 +01:00
gamerforEA
762c106e19
sys_prx_.cpp: Fix RAII locks usage (without local variables they destroyed immediately after construction)
2020-02-27 00:38:55 +03:00
gamerforEA
93552a5958
Apply some Clang-Tidy fixes
2020-02-27 00:38:55 +03:00
Eladash
4d3cdca7f6
Stub sys_spu_thread_group_set_cooperative_victims and syscall_253
2020-02-26 18:17:13 +00:00
Eladash
0d4f8ca234
fs: Make fs::get_dir_size able to report an error
2020-02-26 18:17:13 +00:00
Megamouse
2341749485
overlays: add overlay_osk.h
2020-02-25 21:57:49 +03:00
Nekotekina
b59bb16fad
Threads: removed outdated on_abort detection deemed unnecessary
...
May cause regressions.
2020-02-25 15:48:25 +03:00
Megamouse
f7666f44da
Untangle GUI and input includes
2020-02-24 16:31:01 +01:00
Nekotekina
1dc2eb1cc8
Avoid deprecated av_register_all with version check.
2020-02-23 20:58:02 +03:00
Emmanuel Gil Peyrot
1a702de9e4
cellVdec: replace deprecated ffmpeg function
...
avcodec_decode_video2() is deprecated, now replaced with
avcodec_send_packet() and avcodec_receive_frame().
2020-02-23 20:21:59 +03:00
Nekotekina
f1241c572c
Fix some deprecation warnings (plunder cellAdec btw)
2020-02-23 20:21:59 +03:00
JohnHolmesII
9b7d28b5dd
cellSaveData.cpp: Use ref instead of copy
2020-02-23 09:38:04 +03:00
JohnHolmesII
479a64c4e8
Remove some inline compiler pragmas
2020-02-23 09:38:04 +03:00
AniLeo
fa3fde7a29
hle: Fix cellAvconfExt function registrations
...
Co-authored-by: Clienthax <clienthax@gmail.com>
2020-02-22 17:27:58 +03:00
AniLeo
3aa293a7a3
hle: cellAuthDialog
...
Basic RE of cellAuthDialog, stubs functions
2020-02-22 16:03:14 +03:00
Nekotekina
96be40bf30
Implement cellMsgDialog closing thread
...
Fixing deprecation warning.
2020-02-22 15:17:02 +03:00
Eladash
24d3e2b2b8
cellGameDataCheckCreate(2): More improvements
...
* IsNewData is false only if PARAM.SFO exists.
* Don't create directory on error (setParam == nullptr && isNewData).
* Return CELL_GAMEDATA_ERROR_BROKEN if PARAM.SFO exists on target directory yet is not from GD category.
2020-02-21 21:15:55 +03:00
Nekotekina
5e75a0c497
Disable cotire on travis
...
Make some workarounds for clang because it poorly supports -Wold-style-cast
2020-02-21 17:03:54 +03:00
Nekotekina
972e0ab31d
Remove -Wno-reorder and make it an error
2020-02-21 15:20:34 +03:00
Eladash
54f2c27ba0
cellGameDataCheckCreate(2): Set nullptr in setParam
...
* setParam is nullptr by default.
* if setParam is null and it's new data, return error code.
2020-02-21 14:49:45 +03:00
Eladash
0ba1f8f4ef
Fix cellDiscGameGetBootDiscInfo on error
...
* Always set first dword to 0, other bytes are untouched,
2020-02-21 14:49:45 +03:00
Eladash
4d7e53d7a0
cellGameDataCheckCreate(2): Check dirName
2020-02-21 14:49:45 +03:00
Eladash
0c757222cb
Minor improvements to sys_ss_random_number_generator
...
* Replace CELL_EABORT with exception.
* Improve error codes a bit.
* pkg_id == 1 should not return an error if root permission is present.
* Avoid passing vm pointers to native API, use temp buffer instead.
2020-02-21 14:49:45 +03:00
Eladash
dd85e733d3
Fixup for #7304
2020-02-20 20:31:56 +03:00
Nekotekina
92e3eaf3ff
Fix signed-unsigned comparisons and mark warning as error (part 2).
2020-02-19 22:54:58 +03:00
Nekotekina
771eff273b
First part of fixing sign-compare warning (inside be_t).
2020-02-19 22:54:58 +03:00
Eladash
6de91a1691
HLE cellGcmSys: Make IOTable accurate
...
Affects cellGcmAddressToOffset when using addresses above 0xC0000000
2020-02-19 18:11:30 +00:00
Eladash
1aa11440e0
HLE cellGcmSys: Make cellGcmUnmapEaIoAddress accurate
2020-02-19 18:11:30 +00:00
Eladash
df8d0cde4a
RSX/SPU: Accurate reservation access
2020-02-19 18:11:30 +00:00
Eladash
f02b4801b2
Fix max SPURS threads regression
2020-02-18 19:20:40 +00:00
Eladash
727d783959
RawSPU: protect NPC from writes/reads in running state
2020-02-18 18:09:10 +00:00
Eladash
fad8b38b28
sys_spu: protect sys_spu_image members in kernel mode
...
Save relevant info in idm, set sys_spu_image segs and nsegs members to 0.
2020-02-18 18:09:10 +00:00
Nekotekina
8a176de6a1
Restore -Wenum-compare and fix some [=] warnings
2020-02-18 17:37:30 +03:00
Nekotekina
c48ceafc15
sys_sync.h: fix warning (signed prio)
2020-02-18 14:53:23 +03:00
Nekotekina
ee6494c14b
Use strcpy_trync in cellAvConfExt.cpp (silence warnings)
2020-02-18 14:53:23 +03:00
Nekotekina
f08c778d2c
Use more starts_with/ends_with.
...
Remove ends_with global func.
2020-02-18 14:53:23 +03:00
Nekotekina
244e74ebe2
Try to ignore some annoying warning (seems CIB)
2020-02-17 20:56:03 +03:00
Megamouse
fe75311be2
move config structs to own files and clean up some headers
2020-02-17 15:08:17 +03:00
Eladash
812d03894b
PPU exec/ovlm ldr: restrict allocations
2020-02-16 22:48:23 +02:00
Eladash
c1bdaccd8c
sceNpTrophyRegisterContext: Fix off by one progress callbacks count
2020-02-15 23:32:29 +01:00
Eladash
4421831c8b
sceNpTrophyRegisterContext: Fix values passed to first callback
2020-02-15 23:32:29 +01:00
Eladash
d03804b523
Fix sceNpTrophyGetTrophyInfo
...
* Only writeback data on success.
* Fix a typo on error code of invalid trophy ID.
2020-02-15 23:32:29 +01:00
Eladash
299af768e8
HLE cellGcmSys: Make cellGcmAddressToOffset accurate
2020-02-15 14:07:52 +03:00
Eladash
04e0bf2eff
Whitespace fix after #7087
...
Was this close to enter programmers' hell.
2020-02-15 11:37:13 +03:00
Eladash
cdda19c79f
Fix recursive locking in sceNpTrophyUnlockTrophy
2020-02-15 10:41:15 +03:00
Eladash
fa9330d0e0
Log returned reqspace in sceNpTrophyGetRequiredDiskSpace
2020-02-15 10:41:15 +03:00
Eladash
ddeb39d8de
HLE cellGcmSys: Fix unmapping
2020-02-14 17:11:26 +03:00
Eladash
78c49e7331
cellSearch: another memory access fix
2020-02-12 20:02:18 +03:00
Eladash
9760053c8c
cellSearch: Fix id memory access ( #7476 )
2020-02-12 18:17:45 +03:00
Silent
3006b003c4
Implement links as a cellSearch specific concept
...
Linking in VFS is done only from cellSearchPrepareFile and works
by mounting virtual files to host FS files
2020-02-12 12:49:02 +03:00
Silent
e30637351e
Move SearchState to a fxo object so it resets with emulation
2020-02-12 12:49:02 +03:00
Silent
d2b83c69bb
cellSearch updates from Brolijah
...
Co-authored-by: Brolijah <brolijahrh@gmail.com>
2020-02-12 12:49:02 +03:00
Eladash
bdab26ec09
rsx: rewrite io mappings
...
Along with some with fixes to cellGcmSys HLE.
2020-02-10 21:39:39 +00:00
RipleyTom
98f91457bf
Small sys_usbd changes
2020-02-10 21:47:48 +03:00
Nekotekina
4bc431ec31
Silence deprecation warning (implicit capture of this on [=])
2020-02-10 14:47:12 +03:00
Eladash
80eff58950
cellAudio: Implement cellAudioSet/RemoveNotifyEventQueueEx
2020-02-09 12:31:55 +00:00
Eladash
1915fe75a4
VSH: Stubs
2020-02-08 23:07:03 +03:00
Eladash
9d1bb60ad7
cellGcm HLE: fix cellGcmMapMainMemory
...
Fix arguments order, softcode RsxReports::report offset.
2020-02-08 22:18:56 +03:00
Eladash
629eddfb9f
sceNpTrophy: Implement SCE_NP_TROPHY_ERROR_CONTEXT_NOT_REGISTERED
2020-02-08 11:11:59 +00:00
Eladash
1f94c8f272
sceNpTrophyGetGameProgress Fix
2020-02-08 11:11:59 +00:00
eladash
f901846acb
RawSPU: execute MFC proxy cmd after reading CMDStatus
...
Implement MFC proxy argument sequence checking.
2020-02-06 20:43:38 +00:00
Eladash
37513b1898
SPU reservations: Do not access violate under vm::writer_lock
...
TODO: Throw exception when encountering page faults notification enabled memory
2020-02-06 00:27:17 +00:00
Eladash
f8b3c48af7
sys_spu: Implement proper SPU group flags ( #7320 )
...
* sys_spu: Implement proper SPU group flags
2020-02-05 20:46:05 +00:00
Eladash
049e392a97
Make preferred spu threads dynamically adjustable
2020-02-05 10:06:07 +00:00
Nekotekina
c0f80cfe7a
Use attributes for LIKELY/UNLIKELY
...
Remove LIKELY/UNLIKELY macro.
2020-02-05 10:42:34 +03:00
Eladash
49e11b7cfd
cellVdecQueryAttrEx: Add some error checks for MPEG2
2020-02-05 05:01:07 +00:00
Eladash
6a32ceaab5
cellVdecQueryAttrEx: Add workaround for codec specific info
2020-02-05 05:01:07 +00:00
Eladash
acc7320cae
Fix cellVdecGetPicItem
...
Fix potential overflow, race condition and correctness fixes for picInfo_addr
2020-02-05 05:01:07 +00:00
Eladash
e9e8f0c5b7
cellGame: report not found sfo params
2020-02-04 18:29:52 +03:00
Eladash
cb52ee0a4d
cellGame: report fs::remove_all failure
2020-02-04 18:29:52 +03:00
Eladash
4488312e81
Avoid out of memory with cellGameGetParamString
2020-02-04 18:29:52 +03:00
Nekotekina
f9a8efe406
SPU LLVM: gisable NewGVN pass
...
It goes into an endless loop with memory leak for some reason.
2020-02-03 11:16:03 +03:00
Eladash
e57c01907e
cellVdec: Improve cellVdecQuery and cellVdecOpen
2020-02-02 09:01:32 +03:00
InvoxiPlayGames
c1180d76dd
sys_usbd: Fix bug preventing multiple USB devices
2020-02-01 12:34:42 +03:00
Nekotekina
6dfd97f0b6
Modernize SPU logging (spu_log variable) and remove log legacy
...
Remove legacy macro (LOG_ERROR, etc)
2020-02-01 11:52:52 +03:00
Nekotekina
327bb2d8f0
Modernize PPU logging (ppu_log variable)
2020-02-01 11:52:24 +03:00
Nekotekina
21f7b0ff0f
Remove HLE log channel
2020-02-01 11:52:24 +03:00
Nekotekina
15391f45d0
Modernize RSX logging (rsx_log variable)
2020-02-01 11:52:22 +03:00
Nekotekina
3eca2d5d6c
Remove legacy LOADER log channel
2020-02-01 07:49:38 +03:00
Nekotekina
1d0f359406
logs: add more log channels instead of GENERAL
2020-01-31 16:44:48 +03:00
Nekotekina
007a7a5859
Fixup for LOG system.
...
Register all channels at program initialization and allow duplicates.
2020-01-31 12:09:52 +03:00
Eladash
92466165f6
Increase Maximum Vblank Rate and Clocks Scale
...
Allow x30 times the speed of vblank rate + clocks scale of original PS3.
In theory a 60 fps limit game which scales frame limit perfectly with vblank rate can be played at up to 1800 fps with this change.
And:
* Fixed lv2 sleep with Clocks Scaling
* Make these settings dynamicaly adjustable.
* Avoid code duplication
2020-01-29 21:42:41 +01:00
Malcolm Jestadt
ad8988afd3
Embedded SPU elf patching
...
- PS3 games include both PPU and SPU code in their PPU executables, so to make patching games that make use of the same SPU libraries easier, we add a system to find and patch them.
- Patches for this system still use SPU LS (Local Storage) addresses despite the fact that we aren't loading anything into SPU LS at this time. The patches are checked against each segment and patched in place.
2020-01-28 02:13:37 +03:00
Ivan
7f07b79c04
Partial revert of #7180
...
PC is PS
2020-01-27 07:05:18 +03:00
RipleyTom
610a6a1404
Increases number of buffers when buffering
2020-01-27 02:13:30 +00:00
Eladash
a7aef22754
ppu: Log SELF header information and CIA of caller HLE functions
2020-01-27 01:21:40 +00:00
Eladash
4e0070f16d
Log sys_spu thread group and thread names
...
Also safely read thread name after relevant error checks passed.
2020-01-26 20:32:10 +00:00
Eladash
7ae679adbe
Fix logging of ppu name in sys_ppu_thread_create/rename
2020-01-26 20:32:10 +00:00
Eladash
d481c3c7fd
cellGameGet/SetParamString: Implement CELL_GAME_ERROR_NOTSUPPORTED
2020-01-26 20:32:10 +00:00
Eladash
a9162a3f57
SPU LLVM: Improve approximate FCMGT
2020-01-26 18:37:07 +00:00
Eladash
e4ba096190
VSH: sys_mmapper
...
* Implement syscalls sys_mmapper_allocate_shared_memory_ext, sys_mmapper_allocate_shared_memory_from_container_ext.
* Implement multi-process shared memory allocations.
2020-01-24 20:08:30 +00:00
Eladash
46df58b662
sys_usbd: Add error_code
2020-01-24 19:25:52 +00:00
Eladash
95ed2ef62e
cellGcm HLE: Add error_code
2020-01-24 19:25:52 +00:00
Megamouse
3f076d63e3
HLE: add error checks to cellAudioInGetDeviceInfo
2020-01-23 10:50:55 +01:00
Megamouse
3e8a5c6395
HLE: add some more constants
2020-01-23 10:50:55 +01:00
Megamouse
18f167ddd0
HLE: Fix error checks in cellAudioInRegisterDevice
2020-01-23 10:50:55 +01:00
Maksim Derbasov
1abdee242a
small improvement ( #7288 )
...
* small improvement
* comments addressed
Co-authored-by: kd-11 <15904127+kd-11@users.noreply.github.com>
2020-01-22 12:28:48 +00:00
Eladash
949cfa7fdb
Fix cellVdecSetFrameRate error check
2020-01-21 16:45:41 +03:00
Eladash
fe381b8581
SPU: Add SPU LS to debugger
2020-01-21 16:45:41 +03:00
Eladash
160ddcf86b
SPU: Minor FREST bugfix
2020-01-21 16:45:41 +03:00
Eladash
f05a3da964
Fix lv2_file::op_write regression
2020-01-21 16:45:41 +03:00
Nekotekina
ddda09607d
SPU: fixup for STOP 0w0
2020-01-21 16:32:00 +03:00
Eladash
9993df9b8b
RawSPU: fix race between spu start and stop
...
This race could lead to spu status bits indicate RUNNING status, but cpu state being stopped.
Fix it by making sure cpu state is set before spu status.
2020-01-21 14:08:39 +03:00
Nekotekina
98a8eeaac2
SPU: properly support STOP 0x0 instruction
2020-01-20 23:40:10 +03:00
Nekotekina
3617f12a1e
sys_fs: avoid possible out of memory on file reads/writes
...
Use fixed-sized intermediate buffer.
2020-01-20 16:00:20 +03:00
Nekotekina
63f67c88cc
sys_fs: better stub sys_fs_fcntl(0xc0000006)
...
This syscall does something to classify filesystems by mountpoint.
2020-01-20 16:00:20 +03:00
Nekotekina
1b1b804d7e
sys_fs: add /dev_flash mountpoint
2020-01-20 16:00:20 +03:00
Nekotekina
55cb96ab3b
sys_fs: fix CELL_EIO condition in cellFsReadWithOffset
2020-01-20 16:00:20 +03:00
Megamouse
5ef3465f65
cellVdec: (experimental) allow AV_PIX_FMT_YUVJ420P
2020-01-20 00:33:25 +01:00
Megamouse
9a27cc9442
cellVdec: improve error checks
2020-01-20 00:33:25 +01:00
Megamouse
4dbad6cce6
fix some random warnings
2020-01-19 16:38:17 +01:00
Eladash
b07b5c9005
Fix sys_spu_thread_initialize for attr->name_len is 0 and attr->name is not null
...
If name_len is 0 name is empty, in any other case name is not empty (attr->name == nullptr isn't allowed in this case).
Check name_len and option for invalid values as fw.
2020-01-18 18:46:13 +03:00
Eladash
9d15083c61
Fix sys_ppu_thread_create/rename thread name range
2020-01-18 18:46:13 +03:00
Eladash
14b99d9e8b
Write nread/nwrite in cellFsWrite/Read regardless of error checks
2020-01-18 15:56:05 +03:00
Nekotekina
e2512e78b6
sys_fs: always close locked file in sys_fs_close
...
Syscall returns EBUSY but succeeds nevertheless.
2020-01-17 00:24:07 +03:00
Nekotekina
a005090d3d
sys_fs: use constant in sys_fs_disk_free
2020-01-17 00:24:07 +03:00
Eladash
c9b0f0e734
SPU: Fix FREST
2020-01-16 23:42:50 +03:00
Eladash
9084209cfc
Update cellVdecSetFrameRate error checking
2020-01-15 23:29:32 +01:00
Eladash
1ccb3c4492
rsx: Verify local memory offset
2020-01-15 13:23:56 +03:00
Eladash
01035d35bd
sys_process: Fix sys_process_get_id, add error_code ( #7246 )
2020-01-14 21:32:41 +03:00
Megamouse
be2d225d96
sceNpTrophy: deny unlocking of platinum trophies
2020-01-13 22:50:05 +01:00
Eladash
765bd6b6c6
SPU: Optimize gpr reset for MSVC
2020-01-11 22:56:46 +03:00
Nekotekina
aeed349a99
sys_fs: adjust permissions for /dev_bdvd
...
Remove write permissions returned by stat, fstat, etc.
Also make sys_fs_open return CELL_EPERM on write attempt.
2020-01-11 04:48:42 +03:00
Nekotekina
8447d75dda
sys_fs: improve sys_fs_lsn_lock
...
It appears it does nothing only on /dev_hdd0 or /host_root (HOSTFS).
2020-01-11 03:44:52 +03:00
Nekotekina
fc6356a74c
sys_fs: adjust /dev_bdvd block size
...
From test.
2020-01-11 03:05:26 +03:00
Nekotekina
87cd653c6e
sys_fs: improve sys_fs_disk_free
...
Fix error codes and arg checks.
2020-01-11 01:10:50 +03:00
Nekotekina
7e35fd54a8
sys_fs: improve sys_fs_fcntl(0xc0000002)
...
Always obtain free space on /dev_hdd0.
2020-01-11 01:09:30 +03:00
Nekotekina
582ee80552
sys_fs: correct block size for /dev_hdd1
2020-01-10 05:24:43 +03:00
Nekotekina
0b4b87f069
sys_fs: fix sys_fs_get_block_size
...
Don't check file existence on /dev_hdd0.
Relax check on some mountpoints.
Fix CELL_EISDIR error condition.
2020-01-10 05:19:18 +03:00
Nekotekina
a8e1afa0af
sys_net: fix sys_net_bnet_select arg check (nfds)
2020-01-10 03:21:27 +03:00
Eladash
71df5044fc
sys_vm_get_statistics: Write timestamp
2020-01-09 20:43:03 +00:00
RipleyTom
4a5559ee65
Add buzz controllers to usb whitelist
2020-01-09 07:51:16 +00:00
Nekotekina
7523416a12
sys_fs: return CELL_ENOTSUP in sys_fs_fcntl(0xc0000006)
2020-01-09 04:15:20 +03:00
Nekotekina
9075208c80
sys_fs: fix logging in sys_fs_get_block_size
2020-01-09 04:15:20 +03:00
Nekotekina
d477889763
sys_fs: fix mountpoint detection
2020-01-09 04:15:20 +03:00
Nekotekina
f5cb147f8d
sys_fs: improve sys_fs_get_block_size values
...
Affected other syscalls:
sys_fs_fget_block_size
sys_fs_stat
sys_fs_fstat
sys_fs_fcntl (cellFsGetDirectoryEntries, cellFsGetFreeSize)
For default values:
Return sector_size = 512.
Return 4th arg = 512.
Fod /dev_bdvd:
Sector size = 2048.
Block size = 2048.
2020-01-07 23:16:17 +03:00
Nekotekina
63e669c0cf
sys_fs: fix sys_fs_fget_block_size
...
Return flags via last argument.
2020-01-07 21:55:19 +03:00
Nekotekina
9c54305e10
sys_fs: disable sys_fs_lsn_lock/unlock
...
According to test, nothing seems to happen.
Disable CELL_EBUSY errors associated with Stream Support API.
2020-01-07 21:55:19 +03:00
Nekotekina
f3d52de429
sys_fs: Adjust flags of /app_home mountpoint
2020-01-07 21:55:19 +03:00
kd-11
ad845861be
video: Remove pointless aspect ratio option
...
- The auto option is used when requesting the system is works like a
"dont care" specifier to tell the system to use what settings have been
passed in by HDMI EDID or the user TV type setting. Since this option
simulates the "TV type setting", auto makes no sense and is also not
something you can select on a PS3.
- Also adds a few missing checks.
2020-01-07 15:56:54 +03:00
Nekotekina
55f9a56e45
Fix sys_tty_write (UTF-8 encoding of literals)
2020-01-06 23:23:04 +03:00
Megamouse
632cc79c54
cellGame: add more checks
2020-01-06 10:47:13 +01:00
Megamouse
e7845357e2
sceNpTrophy: unlock platinum trophies
2020-01-05 19:47:31 +01:00
Nekotekina
4450ae0c7a
sys_fs: fix CELL_FS_O_APPEND emulation
...
Don't use fs::append (not capable of).
Fix sys_fs_ftruncate (remove wrong workaround).
2020-01-05 18:15:55 +03:00
Nekotekina
9fc0aec066
sys_fs_stat: fix split file handling
...
Allow single-file case (consistently with sys_fs_open)
2020-01-05 18:15:55 +03:00
Nekotekina
bed2d558a6
sys_fs: implement CELL_EROFS error
...
Implement lv2_mp_flag::read_only.
Currently only /dev_bdvd is affected.
2020-01-05 18:15:55 +03:00
Nekotekina
d5f0957558
Implement lv2_fs_mount_point with mount point flags
...
Implement some actual mount points
Implement lv2_mp_flag::no_uid_gid
2020-01-05 18:15:43 +03:00
Eladash
872be25ed1
cellFs: Fix cellFsLseek with negative whence
2020-01-04 22:38:53 +03:00
Eladash
9d2c9e5d62
cellFs: Improve cellFsGetDirectoryEntries
2020-01-04 22:38:53 +03:00
Nekotekina
28fb0d1741
Fix lv2_fs_object::name
...
Recreate path from actual decoded components.
2020-01-04 21:44:03 +03:00
Nekotekina
691a57a4da
Add BOM to sys_tty.cpp
2020-01-04 01:32:21 +03:00
Megamouse
b3ad89cc8b
cellSaveData: remove duplicate yield
2020-01-03 14:22:40 +01:00
Megamouse
c9aee27d48
VK: remove unused init function declaration
2020-01-03 14:22:40 +01:00
Megamouse
7af2ebb6f4
cellSaveData: use errDialog to skip error dialogs
2020-01-02 05:49:03 +01:00
Eladash
4c20881f8f
Fixup after #6933 ( #7166 )
...
* fixup
* Get rid of obsolute arg in lv2_obj::awake
* nvm ill do this later
* Typo fix of the decade
2020-01-01 17:38:05 +00:00
Eladash
7cc6881a57
Implement sceNpTrophyTerm resources deallocation
...
- Implement sceNpTrophyAbortHandle, if handle is aborted an error code will be returned on its usage.
- Free context & handles in sceNpTrophyTerm.
- Return SCE_NP_TROPHY_ERROR_INVALID_ARGUMENT on invalid context & handles ids.
- Implement id resource shortage error checking.
- Check negative sceNpTrophyGetTrophyInfo trophy id.
- Minor error checking fix for sceNpTrophySetSoundLevel
2019-12-31 22:32:23 +03:00
Eladash
71c4a2a15f
Silence some log messages
2019-12-31 22:27:27 +03:00
Eladash
9690854e58
Some cleanup
...
* Prefer default initializer over std::memset 0 when possible and more readable.
* Use std::format in trophy files name obtaining.
* Use vm::ptr<>::operator bool() instead of comparing vm::ptr to vm::null or using addr().
* Add a few std::memset calls in hle where it matters (or in some places just to document an actual firmware memcpy call).
2019-12-31 22:27:27 +03:00
Eladash
c2eb9a583d
Implement ps3 application root flags detection
2019-12-31 22:22:06 +03:00
Eladash
b30be0fbc1
Update cellVoiceCreatePort syntax
2019-12-31 19:05:06 +03:00
Eladash
9958a83d10
Make spu_channel_4_t::clear() atomic
...
By removing separate value3 write, fixes a rare race introduced by #6917 .
2019-12-31 19:05:06 +03:00
Eladash
3257552227
Minor spu_channel_4_t optimization
2019-12-31 19:05:06 +03:00
Eladash
ec9622b513
Fix ppu_patch invalid address check
2019-12-31 18:57:14 +03:00
Eladash
8427af8886
Implement runtime PPU executable code modification via Cheat Manager
2019-12-31 18:57:14 +03:00
Megamouse
93a6e9e4e4
Improve cellImeJp ( #7014 )
...
* HLE: add error_code and definitions for cellImeJp
* HLE: add function parameters to cellImeJp
* HLE: improve cellImeJp
* HLE: further improve cellImeJp
* HLE: simplify cellImeJp
2019-12-31 16:02:10 +01:00
Megamouse
a5c5927468
cellSaveData: only show dialogs in fixed functions
2019-12-31 14:15:43 +01:00
Eladash
3e80727f8e
Allow unimplemented HLE functions detection by bot
2019-12-30 23:48:39 +03:00
Eladash
b59a825e48
Minor fixup after #6894
2019-12-30 23:46:45 +03:00
Eladash
45cff1219c
Allow sys_raw_spu_create_tag to be called more than once
2019-12-30 23:46:45 +03:00
Eladash
923cd7ad72
SPU LLVM: rewrite comparison on non-xfloat path of CFLTU, CFLTS
...
CFLTU on non-xfloat path is accurate as xfloat path now.
* Also optimize FCTIW like FCTIWZ (PPU)
2019-12-30 22:20:34 +03:00
Nekotekina
ef8872c0d7
sys_net: fix sys_net_bnet_connect on Windows
...
Properly write is_connecting variable.
2019-12-29 21:53:43 +03:00
Nekotekina
01b1b21efd
sys_net: add a workaround for WSAPoll with timeout
...
Don't call WSAPoll with empty socket list.
2019-12-29 21:24:13 +03:00
Megamouse
45dc5d9b02
cellSaveData: improve ppu schedule during dialogs
2019-12-29 14:22:58 +01:00
Megamouse
c4b4ce46b8
cellSaveData: don't pause apps during dialogs
2019-12-29 14:22:58 +01:00
Megamouse
0b78404337
cellSaveData: get confirmation if not CELL_SAVEDATA_OPTION_NOCONFIRM
2019-12-29 01:19:04 +01:00
Megamouse
ff0089bc6f
cellSaveData: add more constants
2019-12-29 01:19:04 +01:00
Megamouse
bb7848f6e5
cellSaveData: add error dialog to callback result errors
2019-12-29 01:19:04 +01:00
Megamouse
47da907366
cellSaveData: add confirmation dialog for save data interactions
2019-12-29 01:19:04 +01:00
Megamouse
ef6f565dbd
silence some annoying warnings
2019-12-28 15:40:57 +01:00
Nekotekina
70e26eeb45
LLVM: compress PPU cache
...
Compress PPU modules to .gz (backward compatible with uncompressed cache)
2019-12-27 23:12:16 +03:00
Megamouse
e83dfedff9
stub cellRemotePlay and cellResc and cellStorage
2019-12-24 11:54:32 +01:00
Nekotekina
abe2cc196a
sys_net: fixup for race condition
...
Don't reset is_connecting without checking correctness.
Also cleanup dead WIN32 code.
2019-12-23 22:39:18 +03:00
RipleyTom
90e4fe23c5
WSAPoll workaround
2019-12-23 22:31:09 +03:00
linkmauve
e9c5c6e6bf
Move input to its own directory ( #7126 )
2019-12-22 17:39:42 +01:00
Eladash
c65bb0d267
Avoid shifting by greater/equal than max bits values in ppu_rotate_mask
2019-12-22 04:35:57 +03:00
Markus Stockhausen
a36f0497ce
Improve approximate xfloat
...
- Disable denormals for SPU threads
- Add clamping helpers
2019-12-22 01:26:34 +03:00
Nekotekina
3b46c9cb6a
SPU LLVM: use FMA with approx xfloat when available
...
Emulate FMA with double precision if unsupported natively.
2019-12-21 17:53:34 +03:00
Eladash
db4041e079
Implement rounded_div
...
Round-to-nearest integral based division, optimized for unsigned integral.
Used in sceNpTrophyGetGameProgress.
Do not allow signed values for aligned_div(), align().
2019-12-20 14:47:04 +03:00
Eladash
6dd4003154
Fix cellNetCtlNetStartDialogUnloadAsync
2019-12-20 10:20:32 +01:00
Megamouse
7fcef227af
sceNpTrophy: minor optimizations
2019-12-19 18:15:22 +01:00
Eladash
8d955cfb8c
Hotfix sceNpTrophyGetTrophyUnlockState
2019-12-18 13:07:55 +01:00
Eladash
e380a8c279
Fix sceNpTrophyGetGameProgress ( #7103 )
...
* Fix sceNpTrophyGetGameProgress
Was missing multiplication by 100.
* apply requested changes
* Enforce round-to-nearest rounding mode
2019-12-17 22:43:00 +00:00
Eladash
3efd5f360c
PPU DisAsm: Again
2019-12-15 19:55:23 +03:00
Jayveer
364ba95d26
Updated sys_net to use WSAPoll on win32 as this fixes connection issues
...
in Metal Gear Online. Also aligns with implementations on non win32
platforms
2019-12-13 21:52:29 +03:00
Nekotekina
321f7e7197
Fix missing-braces warnings
2019-12-13 03:21:43 +03:00
Nekotekina
69e81da57b
Fix some warnings
2019-12-13 02:08:52 +03:00
Megamouse
038694ae28
cellGem: add some explanatory comments
2019-12-10 23:20:13 +01:00
Megamouse
691c7cde67
cellGem: cleanup some spacings
2019-12-10 23:20:13 +01:00
Zangetsu38
af8ebc76e2
Modules/cellGem: Implement pos, quat and handle_pos in Gemstate for mouse.
...
Modules/cellGem: Fix name for gem_image_state.
Modules/cellGem: Implement projectiion(x/y) in gem_image_State for mouse.
Modules/cellGem: Add cross, triangle, circle and start with use middle click for mouse.
Modules/cellGem: Refactor global code.
Modules/cellGem: fix some warning with initializing value.
2019-12-10 23:20:13 +01:00
VelocityRa
ac2b0c9752
PSMove: Rudimentary mouse emulation.
2019-12-10 23:20:13 +01:00
Eladash
6a4ba9d562
Fix warning about truncation
2019-12-07 10:22:11 +01:00
Eladash
a5b3b0df40
sceNpBasicAddBlockListEntry: Add connection check
2019-12-07 10:22:11 +01:00
Eladash
963d5fb981
sceNpBasicAddPlayersHistory(Async) fixes
...
* Check if count == 0.
* u64 typos fixed.
* description won't be checked if null.
* Check each npid provided, not only the first.
2019-12-07 10:22:11 +01:00
Eladash
5142d7c011
Minor fixup after #7068
2019-12-06 19:59:29 +03:00
Eladash
5631382623
sys_spu: Fix SPU Thread Id
...
* Removed wrong code in sys_spu_thread_group_terminate.
* SPU Thread ID is accurate, including 5th thread id "rule".
* Fixed possible use-after-free access of spu_thread::group member.
* RawSPU ID management simplified.
2019-12-06 19:59:29 +03:00
Eladash
e050dcbc52
Move size write in cellGamePatchCheck
2019-12-05 23:31:46 +03:00
Eladash
98970884c8
Make sys_tty accurate in release console mode, message saving in log
2019-12-05 23:31:46 +03:00
Eladash
401813f962
Revert part of #7044
...
oops.
2019-12-05 23:31:46 +03:00
Eladash
a2c69e4a2e
sys_spu_thread_group_dis/connect_event Improvements
2019-12-05 23:31:46 +03:00
Nekotekina
835892aa51
C-style cast cleanup VII
2019-12-05 02:10:15 +03:00
Nekotekina
185c067d5b
C-style cast cleanup V
2019-12-03 17:23:00 +03:00
Megamouse
46ca39ec4d
Add Emu.HasGui() to properly hide Qt dialogs in no-gui mode
2019-12-03 09:12:51 +01:00
Megamouse
d73f04da13
cellSaveData: avoid nullptr if there is no dialog
2019-12-03 07:59:10 +01:00
Nekotekina
bf11a28fb5
C-style cast cleanup IV
2019-12-01 22:12:33 +03:00
Eladash
d45fbc331c
Fix error checking of cellGameContentPermit
2019-12-01 21:11:43 +03:00
Eladash
1a6e8e20dc
cellGameBootCheck Improvements
...
* size->sysSizeKB returns 4kb. (hw tested, unknown if in different situations this value changes)
* Return CELL_GAME_ERROR_BROKEN on failure to init. (hw tested)
* Write to dirName only when type is HDD game. (REd)
* Don't write to *size on errors, make it happen after *attributes and *type writes. (REd)
2019-12-01 21:11:43 +03:00
Eladash
37c220af72
Fix sceNpTrophyRegisterContext hack
2019-12-01 21:11:43 +03:00
Nekotekina
28eacc616a
C-style cast cleanup III
2019-12-01 00:32:44 +03:00
Nekotekina
ad9c9f0183
C-style cast cleanup II
2019-11-30 18:17:45 +03:00
Nekotekina
5b9df53c13
C-style cast cleanup (partial)
...
Replace C-style casts with C++ casts.
2019-11-29 00:35:23 +03:00
Eladash
8bd52c9843
Fix sys_spu_thread_un/bind_queue queue existence check
2019-11-28 01:54:45 +03:00
Eladash
9cc3838e49
Fix possible division by zero in sys_spu_thread_write/read_ls
2019-11-28 01:54:45 +03:00
Eladash
b8220ec12f
Stub sys_spu_thread_group_log
2019-11-28 01:54:45 +03:00
Eladash
038c6bb234
Avoid calling lv2_obj::sleep sequantially in sceNpTrophyRegisterContext
...
Also fix a correctness issue with queued.
2019-11-27 21:41:40 +01:00
Eladash
3b06214f88
Decrease memory stats in cellGemInit if needed
...
Also:
* fix state reset of cellGem
* Check max_connect == 0 in cellGemInit
2019-11-27 21:41:40 +01:00
Eladash
b5f6b27f86
cellSysutilGetSystemParamString improvements
...
- Check bufsize, must match to max string length
- Add missing cases for ParamId 0x1008, 0x1011, 0x1012, 0x1024
- Set actual current username in buffer on id == ID_CURRENT_USERNAME
2019-11-26 20:21:33 +00:00
Nekotekina
2290c389d6
vm: implement vm::try_access, vm::ptr::try_read/write
2019-11-26 00:12:45 +03:00
Nekotekina
1b9a3e6077
SPU: internal refactoring, add spu_program
...
Use struct (spu_program) instead of std::vector<u32>.
2019-11-26 00:01:38 +03:00
Nekotekina
4caf747729
SPU LLVM: detect mpy32 pattern
2019-11-26 00:01:38 +03:00
Eladash
70ace4bb83
Fix cellAudioCreateNotifyEventQueue queue depth
...
TODO: global sdk value used is set in cellAudioInit, which means sdk var value is 0 before it's initialization, currently safely set queue size to 8 in this case.
2019-11-25 09:04:56 +00:00
Eladash
17ae70b935
Implement cellAudioCreateNotifyEventQueueEx
2019-11-25 09:04:56 +00:00
Eladash
40db205f5d
Fix cellVoiceCreatePort
2019-11-25 09:04:56 +00:00
Eladash
1233c48d92
cellAudio: Implement event source
2019-11-25 09:04:56 +00:00
Eladash
f4ac8a2e0c
cellVoice: Fix NOT_INIT checks, implement 0 event source handling
2019-11-25 09:04:56 +00:00
Eladash
c9066e7236
cellVoice Update
...
* Use shared lock wherever possible.
* Fix cellVoiceSetVolume.
* Fix error logging of cellVoiceCreateNotifyEventQueue, cellAudioCreateNotifyEventQueue
2019-11-25 09:04:56 +00:00
Eladash
fd433779bb
sys_prx: Tiny improvement
2019-11-25 09:04:56 +00:00
Nekotekina
f31233b822
sys_net: don't report SYS_NET_EWOULDBLOCK in blocking syscalls
2019-11-22 18:56:40 +03:00
Nekotekina
5c55d4f2fe
sys_net: format both negative and positive sys_net_error values
2019-11-22 18:56:13 +03:00
Eladash
6ad8b0a443
sys_net: Add error_code
2019-11-21 22:51:22 +03:00
Eladash
8d5ef2c7b9
Clamp volume in cellAudioAdd/2c/6c/Data
...
Same as firmware, NaN and Inf are flushed to zero.
2019-11-20 21:58:43 +03:00
Markus Stockhausen
cd6b6c8a4f
Lightweight putllc() for non-TSX if no data changed
...
This replaces the totally messed up PR #6728
Some games make heavy use of getllar() & putllc() without even changing data.
In this case avoid unneccesary heavy locking of the PPU threads on non-TSX
hosts.
2019-11-19 18:10:29 +03:00
Megamouse
2152a77005
HLE: stub cellCrossController some more
2019-11-18 23:42:49 +01:00
Megamouse
41505117a7
HLE: stub cellCelpEnc and cellCelp8Enc
2019-11-18 23:42:49 +01:00
Megamouse
ca59ab59e9
HLE: add even more error_code
2019-11-18 23:42:49 +01:00
Nekotekina
db4e201fee
SPU LLVM: use updateGlobalMapping instead of addGlobalMapping
...
...Where appropriate.
Fix to incorrect addGlobalMapping usage.
Also use clearAllGlobalMappings at compilation start.
2019-11-17 22:15:59 +03:00
Nekotekina
f30b81f8b0
SPU LLVM: change patchpoint name generation
...
Allow 2 or more patchpoint from a single address.
2019-11-17 22:07:08 +03:00
Megamouse
0b28f0fa14
HLE: add more error_code
2019-11-16 10:38:56 +01:00
Eladash
0f2adab05f
Disallow NaN in cellVideoOutSetGamma
2019-11-16 11:21:10 +03:00
Eladash
610463a425
cellSysutilGetSystemParamInt(ID_PAD_RUMBLE) changed to return ON status
2019-11-15 20:17:51 +01:00
Eladash
da12969898
cellSysUtil: Add a few CELL_SYSUTIL_ERROR_VALUE checks
2019-11-15 20:17:51 +01:00
Eladash
894658f14c
cellSysutil: Log error code
2019-11-15 20:17:51 +01:00
Eladash
25382a7dae
Restore cellPadSetActDirect's reserved error check
2019-11-15 20:17:51 +01:00
Nekotekina
abbf3c4d16
SPU LLVM: add SPU profiling to compilation thread
...
Run another thread to collect profile data from SPU threads.
Use this data to prioritize compiling hot spot SPU blocks.
Implement stx::init_mutex::wait_for_initialized() helper.
2019-11-11 23:13:13 +03:00
Eladash
a21d7def33
SPU: Don't break blocks on DSYNC instruction in Safe mode ( #6731 )
2019-11-11 23:12:21 +03:00
Eladash
3f3ce53c67
Fix string length check in cellGameThemeInstall
...
vm::ptr::size() returns sizeof type instead.
2019-11-10 14:32:15 +03:00
Eladash
e8cc9d1f52
Loader: Fix default sdk version
...
Note: sdk version checks are unsigned checks, such value results in always true.
2019-11-10 14:32:15 +03:00
Eladash
1986944c61
Implement sysutil_check_name_string
...
* Fully implement 3, 4, 16 and 17 error checks of cellSaveData.
* cellSysCacheMount restrict characters in ID.
* cellHddGameCheck restricts characters in dirName.
2019-11-10 14:32:15 +03:00
Nekotekina
a83cbf63c6
Remove gsl::finally only use
2019-11-09 19:30:06 +01:00
Nekotekina
6ea02c23a0
Fix SSSE3 usage in PPUInterpreter.cpp
...
Fixup
2019-11-09 20:39:56 +03:00
Nekotekina
1cca00ec3a
Fix SSSE3 usage in PPUThread.cpp
...
Remove legacy ifdefs, allow SSSE3 usage in AppImages.
2019-11-09 20:10:59 +03:00
Nekotekina
191675bf31
Remove gsl::finally only use
2019-11-09 19:11:01 +03:00
Nekotekina
0d629743ca
cellSysCache: poison opened cache files on cache clear
...
Make opened files return CELL_EIO after cache clear.
2019-11-09 14:50:41 +03:00
Nekotekina
73ee6abb0f
cellSysCache: return /dev_hdd1 root
...
It simplifies internal logic a little.
2019-11-09 14:43:19 +03:00
Nekotekina
e0bc276205
cellSysCache: keep mounted /dev_hdd1 after exitspawn
2019-11-09 14:43:19 +03:00
Nekotekina
ccac9d4777
Remove throwing and catching cpu_flag::stop
...
Since there is spu_runtime::g_escape function now.
2019-11-08 19:27:11 +03:00
Nekotekina
587ae17aa2
Simplify fmt::throw_exception
...
Gradual exception deprecation: disallow choosing exception type.
However, the function itself can remain here forever.
2019-11-08 19:27:11 +03:00
Eladash
af0bd7136d
PPU Disasm: Fix RC OE enabled instructions view
2019-11-07 14:09:23 +03:00
Nekotekina
03b9ee27c5
Virtualize cellSysCache
...
Allows caches from multiple games to coexist.
Also change the way of handling cache IDs (file-less).
2019-11-06 14:12:43 +03:00
Nekotekina
da135fbfcc
SPU LLVM: Disable "special" branch patchpoints
2019-11-04 22:52:03 +03:00
Eladash
7475be99ab
lv2: Check ipc_key value if object is process shared
2019-11-03 14:59:47 +03:00
eladash
33fe0fdd6b
Add missng check for key in cellAudioSetNotifyEventQueue
...
key is checked once according to hw test.
2019-11-03 14:59:47 +03:00
Eladash
f41f5054f7
sys_spu Fixup after #6864
2019-10-29 23:13:16 +03:00
Eladash
b99992d570
sys_spu: Fix SNR and Inbound Mailbox state reset
...
Also remove bugged ESTAT check at sys_spu_thread_write_spu_mb.
2019-10-29 18:34:28 +03:00
Eladash
739f68271f
SPU LLVM: fix MFC CMD enqueuing
2019-10-29 18:16:08 +03:00
Eladash
f88a135b5b
Fix lv2_config_service_event event id reset
2019-10-29 18:15:26 +03:00
Eladash
114b9498bf
Remove unjustified use of idm::import_existing in sys_config
2019-10-29 18:15:26 +03:00
Eladash
8b6383b489
lv2: Correct alignment of some attributes structs
2019-10-29 18:15:41 +03:00
Eladash
3e4cbf67f6
sys_rwlock_wlock: Fix typo
2019-10-29 18:15:26 +03:00
Hula Hoop
200ec5c4b3
Super-important PR ( #6900 )
...
* Fix capitalisation errors and typos
* Oops
2019-10-28 17:44:44 +03:00
Eladash
65e47490c4
cellSysCacheClear/Mount() improved
...
Clear() error checking simplified a bit
Mount() now clears cache if ID was changed from last or NULL specified.
Implemented vfs::host::remove_all():
Clear() now uses vfs::host::remove_all() to match behaviour on Windows with ps3
2019-10-27 15:56:16 +03:00
Nekotekina
83f253636a
SPU LLVM: verbose patchpoints in "giga table"
2019-10-27 13:04:05 +03:00
Nekotekina
16edb5bdd0
SPU Analyser: don't compile on "analyser failed"
2019-10-27 13:04:05 +03:00
Nekotekina
5f00b32867
SPU: fixup for duplicates in recompilers
...
Fixup for the edge case.
2019-10-27 13:04:05 +03:00
Nekotekina
37dbbce194
SPU LLVM: Enable "Giga table" in Mega mode
...
Was previously only enabled in Giga mode.
Also fill the table with branch patchpoints.
2019-10-27 13:04:05 +03:00
Nekotekina
8c28c4e8ec
SPU: Make recompilers lock-free.
2019-10-26 23:33:18 +03:00
Nekotekina
9ac6ef6494
SPU: cleanup former OOM handling
...
Remove cpu_flag::jit_return.
It's obsolete now, and worked only in SPU ASMJIT anyway.
2019-10-26 21:24:12 +03:00
MSuih
f3ed26e9db
Small warnings cleanup ( #6671 )
...
* Ignore more warnings
These are intentional
* Signed/unsigned mismatch when comparing
* Explictly cast values
* Intentionally discard a nodiscard value
* Change ppu_tid to u32
* Do not use POSIX function name on Windows
* Qt: Use horizontalAdvance instead of width
* Change progress variables to u32
2019-10-25 13:32:21 +03:00
arabek
63a0b97dd1
Normalize audio when downmixing to avoid clipping ( #6867 )
...
* Normalize audio when downmixing to avoid clipping
Idea came from this topic:
https://hydrogenaud.io/index.php?topic=104214.msg855199#msg855199
Fixes very loud audio in Motorstorm (and probably other games
when playing over headphones/stereo speakers with
Downmix to Stereo option enabled)
2019-10-25 12:56:47 +03:00
Marin Baron
4599d58413
Fix debug build gcc/clang linker.
...
Create temporary variable to resolve undefined reference.
[ 98%] Linking CXX executable ../bin/rpcs3
/usr/bin/ld : Emu/librpcs3_emu.a(sys_vm.cpp.o) : dans la fonction « sys_vm_t::~sys_vm_t() » :
/mnt/raid/Git/rpcs3/rpcs3/Emu/Cell/lv2/sys_vm.cpp:21 : référence indéfinie vers « id_manager::id_traits<sys_vm_t, void>::invalid »
collect2: erreur: ld a retourné le statut de sortie 1
make[2]: *** [rpcs3/CMakeFiles/rpcs3.dir/build.make:426: bin/rpcs3] Error 1
2019-10-24 14:34:38 +03:00
JohnHolmesII
0842724f94
Update cellVoice.cpp
...
Caused warnings. Not sure what the actual intention was, this may need to be inverted.
This commit assumes that erase() returning 0 is a sign that deletion
failed, or that there was corruption. There should be a port there.
2019-10-24 14:19:52 +03:00
Nekotekina
6e19881b82
Update LLVM (10)
2019-10-23 16:01:14 +03:00
Emmanuel Gil Peyrot
9d1b7af2eb
Avoid std::move() for copy elision
...
This could disable zero-copy optimisations, which is the opposite of
what we want.
2019-10-22 16:11:43 +03:00
Eladash
586fe11e22
Fix cellGcm HLE regression
...
Also correct flags.
2019-10-22 13:45:09 +03:00
Nekotekina
b329bb604c
SPU LLVM: implemented asynchronous compilation
...
Implemented interpreter-based pre-recompiler.
Interpreter functions are build with SPU LLVM.
2019-10-21 19:29:34 +03:00
Eladash
cbecbc264e
cellGcm: Fix driver_info->memory_size
...
based hw test
2019-10-21 15:31:45 +03:00
eladash
730e9cde84
sys_rsx: Improve allocations and error checks
...
* allow sys_rsx_device_map to be called twice: in this case the DEVICE address retrived from the previous call returned
* Add ENOMEM checks for sys_rsx_memory_allocate and sys_rsx_context_allocate
* add EINVAL check for sys_rsx_context_allocate if memory handle is not found
* Separate sys_rsx_device_map allocation from sys_rsx_context_allocate's
* Implement sys_rsx_memory_free; used by cellGcmInit upon failure
* Added context_id checks
* Throw if sys_rsx_context_allocate was called twice.
2019-10-21 15:31:45 +03:00
Eladash
c16319f959
PPU Precise: Fix fused float ops misaccuracy by using fma
...
Also cleanup add64_flags, remove redundent copy of s_ppu_itype.
2019-10-20 20:58:31 +03:00
Eladash
79a3a7ce4c
Add exception for sys_usbd_initialize
2019-10-20 15:28:26 +01:00
Eladash
a1e7cdf1e9
Forcefully awake waiters in sys_usbd_finalize
...
This is a no-op from cellUsbd side but happens on lv2 side as well.
2019-10-20 15:28:26 +01:00
Eladash
d90696be90
sys_usbd Tiny update
2019-10-20 15:28:26 +01:00
Eladash
6c2307fb96
cellVoice: Initial Implementation
...
Implement system service events, error checking and some functions.
2019-10-20 15:16:53 +01:00
Eladash
fa73175754
sceNpBasicGetEvent error checks improved
2019-10-20 14:56:44 +01:00
Eladash
d9a97d8674
sceNpUtil Improvements
2019-10-20 14:56:44 +01:00
Megamouse
0ef7ad129d
cellNetCtl: improve param checks
2019-10-19 19:20:18 +02:00
Megamouse
e6aeb7ecb9
stub cellKey2Char
2019-10-19 19:13:33 +02:00
Megamouse
0bad56da67
cellScreenshot: initial implementation
2019-10-17 21:24:25 +02:00
Megamouse
60f3ed7607
stub cellSsl
2019-10-17 20:32:33 +02:00
Nekotekina
00895862e1
Fix sys_vm_t destructor
...
It's not a destructor's job to free vm like this.
2019-10-17 19:57:29 +03:00
eladash
95752607ea
sys_spu: Don't reset snr config at group_start()
...
Also first check for EINVAL in sys_spu_thread_set_spu_cfg
2019-10-16 21:11:29 +03:00
Eladash
6dd96d3db9
Fixes for cellUserInfoGetList
...
- Don't allow all args to be nullptr at once.
- Fill listBuf with zeroes for unwritten entries
- Fix userId set in listBuf
Similarly to what the firmware does
2019-10-16 21:11:29 +03:00
Eladash
47c3d945aa
spu/ppu-diasm: Fixup for #6772 , #6722
2019-10-16 21:11:29 +03:00
Nekotekina
0fe46934de
Fix "SPU Interpreter (fast)"
...
Regression after #6770
2019-10-16 14:20:35 +03:00
Eladash
4ed2c7b594
error checking bugfix for sceNpTrophyCreateContext
...
options = 1 is allowed.
2019-10-16 00:50:58 +03:00
Eladash
b03c2fc856
sys_cond_wait: Fix mutex acquire when signaling thread didnt pass ownership immediatly
2019-10-16 00:50:58 +03:00
Eladash
ab02c56725
sceNpTrophyRegisterContext verbose logging in TROPHY_ERROR_ILLEGAL_UPDATE error
...
Also use safer checking when creating trophy ctxt dir
2019-10-16 00:50:58 +03:00
Eladash
80b4ac23e5
spu disasm: Show interrupts status modifiers on indirect branches
...
That's how the assembler represents it as well.
2019-10-16 00:50:58 +03:00
Nekotekina
eafbc77c0d
SPU LLVM: Always use linux-gnu target triple (affects Windows)
...
Unify internal code generation to make better use of GHC calling convention.
Ideally, it would just work on Windows as well, but some random bug appeared.
This bug was causing freezes on SPU LLVM compilation.
This commit desperately attempts to workaround it.
2019-10-15 18:04:50 +03:00
Nekotekina
c69fe0f664
SPU Profiler preview
...
Add option "SPU Profiler" (disabled by default).
Works only with SPU recompilers.
Results are flushed on pausing.
2019-10-15 17:42:57 +03:00
Malcolm Jestadt
1a9e06d3c6
Linux: Change default Sleep Timers accuracy to host
...
- This doesn't change existing configs
- Also sets the host_min_quantum to the true value
- Restores lost TODO: comment
2019-10-15 00:32:31 +03:00
Eladash
7e08fff91d
ppu disasm: Improve CR bits manipulation instructions formatting
2019-10-14 20:44:23 +03:00
Eladash
3910b2465e
Fix unknown BCLR forms formatting
2019-10-14 20:44:23 +03:00
Eladash
75ee668922
Log fs::g_tls_error on ACCESS_ERROR errors
2019-10-14 20:44:23 +03:00
Nekotekina
076a80d71e
Random space fixes
2019-10-14 19:42:35 +03:00
Eladash
1e303e9f97
ppu disasm: Implement BCLR's, BCCTR's and BC's extended mnemonics
...
Also:
BCCTR cr bit is now shown as cr(bit/4)[bit % 4]
BLRL is now shown properly
BDN?Z[TF](LR?)L?A? branches are now implemented.
2019-10-14 13:54:56 +01:00
Eladash
5978b1f28f
ppu disasm: Fix AA BC formatting
2019-10-14 13:54:56 +01:00
Eladash
1d07c40aa5
Fix state reset in cellMic, cellAudio, cellCamera ( #6761 )
2019-10-13 19:26:11 +03:00
Nekotekina
ac712bf4e3
lf_queue: remove explicit notify(), notify in push() instead
...
Should be cheap enough now if there are no waiters.
2019-10-12 22:45:17 +03:00
Nekotekina
5624b001ae
lf_queue: add range-for support (endless loop with waiting)
2019-10-12 22:37:52 +03:00
Nekotekina
16dd72b3e3
Replace some uses of Emu.IsStopped()
...
Poll thread state instead.
2019-10-12 21:12:47 +03:00
Nekotekina
49e96b39dd
[SPU, TSX] Fix reservation corruption in PUTLLC
...
Change reservation locking logic.
2019-10-12 15:41:24 +03:00
Megamouse
07022fd3b6
stub cellVoice
2019-10-12 10:16:01 +02:00
Eladash
0172e097f7
Fix cellCameraInit (camera_handler::null)
2019-10-11 21:55:10 +02:00
Eladash
5cc12ef22e
cellCamera: Log error code
2019-10-11 21:55:10 +02:00
plappermaul
925f2ce02f
Use Linux timers for sleeps up to 1ms ( #6697 )
...
* Use Linux timers for sleeps up to 1ms (v3)
The current sleep timer implementation basically offers two variants. Either
wait the specified time exactly with a condition variable (as host) or use a
combination of it with a thread yielding busy loop afterwards (usleep timer).
While the second one is very precise it consumes CPU loops for each wait call
below 50us. Games like Bomberman Ultra spam 30us waits and the emulator hogs
low power CPUs. Switching to host mode reduces CPU consumption but gives a
~50us penalty for each wait call. Thus extending all sleeps by a factor of
more than two.
The following bugfix tries to improve the system timer for Linux by using
Linux native timers for small wait calls below 1ms. This has two effects.
- Host wait setting has much less wait overhead
- usleep wait setting produces lower CPU overhead
2019-10-09 20:03:34 +03:00
Nekotekina
8f604ddded
Fix log format misuse
...
Harden log channel methods against non-constant string.
2019-10-09 02:14:52 +03:00
Nekotekina
a29d4150df
GDB Server: fix and cleanup
...
Move source files to Emu/GDB.cpp, GDB.h
Remove "WITH_GDB" option, enable GDB Server by default.
Change class name to gdb_thread.
Alias for external access gdb_server.
Change config option name to "GDB Server"
Bind on 127.0.0.1 by default.
2019-10-09 00:11:44 +03:00
Nekotekina
9d4de51cb6
Use g_fxo for network thread
...
Minor refactoring
2019-10-08 23:12:54 +03:00
Eladash
0f3c5f9e5a
Fix verification failure on Emu.Stop() at sys_cond_wait
2019-10-08 23:12:34 +03:00
Eladash
af417c93d0
cellGemUpdateStart/Finish error checking improved
...
* camera_frame = NULL is now checked for CELL_GEM_NO_VIDEO (applied both on start and finish)
* camera_frame = NULL on Start() still starts the update
* Implemented NOT_FINISHED/STARTED
All of those were reversed and hw tested.
2019-10-08 23:12:34 +03:00
Megamouse
278050f8d0
add cellPadFilter functions
2019-10-08 08:21:30 +02:00
Megamouse
29c77132cb
add error code to cellPadInfoPressMode and cellPadInfoSensorMode
2019-10-08 08:21:30 +02:00
Megamouse
f8c6cc2476
cellMic: add some params
...
makes me wonder if dev_num should always be s32
2019-10-08 08:21:30 +02:00
Eladash
36de3d4f4c
sys_gpio Cleanup
2019-10-08 02:52:33 +03:00
Eladash
c2278fb879
spu: Mask SRR0 at write
2019-10-08 02:52:33 +03:00
Megamouse
3455d76970
cellPadGetData: clear buttons if input is ignored but not intercepted.
...
needed in Hotline Miami and NinJa Gaiden Sigma, fixes Gran Turismo 6 regression
2019-10-07 19:25:50 +02:00
Megamouse
d402507be2
cellOskDialog: add some param checks
2019-10-07 19:25:50 +02:00
Nekotekina
239f53568c
SPU: optimize function dispatch in trampolines
...
Add a top-level hashtable
2019-10-06 16:03:38 +03:00
Nekotekina
8031180373
Add dummy alert param to thread_ctrl::wait API
2019-10-06 16:03:10 +03:00
Eladash
9e929a25d4
rsx: Default initailize zcull reports padding
2019-10-05 15:00:50 +03:00
Eladash
08e674aa28
sys_cond fixes ( #6584 )
...
* sys_cond fixes
sys_cond_wait is now signaled atomically (regression fix)
Fix a corner case with sys_cond_wait and sys_cond_destroy EBSUY check (waiter count was inaccurate if thread is not the owner of mutex)
Add not about EBUSY corner case (TODO)
* Fix inconcistency in sys_cond_destroy and ETIMEDOUT
.. event at sys_cond_wait regarding waiters count.
Now waiters count is properly connected to the mutex owner actions after ETIMEDOUT in sys_cond_wait.
2019-10-03 23:05:34 +03:00
Eladash
286d62d09c
sceNp2Init: use u32 in poolsize
2019-10-02 01:52:42 +01:00
Eladash
b9b879c3d3
Bugfix for sceNpUtilCmpNpId
...
Fix checking bounds, use memcmp
Fix result store on sceNpUtilCmpNpIdInOrder
2019-09-28 16:02:55 +03:00
Nekotekina
bd1a24b894
Tidy endianness support (se_t) implementation
...
Move se_t and se_storage to util/endian.hpp
Use single template instead of two specializations.
Add minor optimization for MSVC.
Remove v128 dependency.
Try to enable intrinsics for unaligned data.
Fix minor bug in u16/u32/u64 specializations.
2019-09-28 15:39:50 +03:00
Eladash
feabe71183
SPU: Rewrite BGX
2019-09-28 03:42:22 +03:00
Eladash
e315b39822
SPU: Rewrite CGX
2019-09-28 03:42:22 +03:00
Eladash
d0503dc937
SCE_NP_ERROR_OFFLINE logging disabled
2019-09-28 03:16:01 +03:00
Eladash
7f725e0655
sys_rsx: Format special sys_rsx invalid param error, warning fixes
2019-09-28 03:16:01 +03:00
Nekotekina
57f2189b1a
cellSaveData: fix VFS escape usage
2019-09-27 19:04:16 +03:00
Nekotekina
465b16e786
Finally remove fxm from IdManager
2019-09-26 23:26:36 +03:00
Nekotekina
c065a21b74
cellMsgDialog: use g_fxo
2019-09-26 23:26:36 +03:00
Nekotekina
3c72069ae6
cellOskDialog: use g_fxo
2019-09-26 23:26:36 +03:00
Nekotekina
a6edcca6e6
Use g_fxo for spu_cache
2019-09-26 23:26:36 +03:00
Nekotekina
b48cdc2260
Use g_fxo for global ppu_module instance
...
Also fix autonomous PRX/SPU loading sequence.
2019-09-26 23:26:36 +03:00
Nekotekina
240b4a8bd8
cellGameData: use g_fxo for content_permission
2019-09-26 23:26:36 +03:00
Nekotekina
ccf9543b44
Improve vfs::host::unlink on Windows (for sys_fs_rmdir)
...
Possibly fixes sys_fs_rmdir and other cases of directory removal.
Make sure the directory with deleted files always becomes empty.
For this purpose, temp files are moved to the root of the device.
2019-09-25 18:47:38 +03:00
Nekotekina
cd843bda6e
cellSaveData: always commit changes on error in funcFile loop
...
Make sure the changes which are already done are written.
2019-09-25 18:47:38 +03:00
Nekotekina
f841b47b6b
cellSaveData: add auto maintenance routine in Emu.Init()
...
This routine:
1) Removes junk backup directories
2) Fixes interrupted save data process in edge case
This case can happen if emu terminates between two atomic renames.
Also use directory renaming technique for delete op.
Also rewrite recreate operation to be part of atomic process.
2019-09-25 18:47:38 +03:00
RipleyTom
e0d501124f
Only free the list if libusb_get_device_list succeeded
2019-09-25 01:07:04 +03:00
RipleyTom
4de301a961
Implement sys_usbd_event_port_send
2019-09-24 09:18:33 +02:00
JohnHolmesII
c62a667fb1
Fix null pointer check (clang warnings)
2019-09-24 09:11:50 +02:00
Nekotekina
feee3838eb
Revert "Revert "Remove shared_cond and simplify reservation waiting""
...
This reverts commit b70c08a2e8 .
2019-09-24 05:01:00 +03:00
Nekotekina
40fcd457bf
cellSaveData fixup
2019-09-23 03:15:41 +03:00
Eladash
2494091353
cellSaveData: Log param error code ( #6587 )
2019-09-23 03:07:23 +03:00
Eladash
718491c56d
ppu disasm: Improve BC formatting
2019-09-23 02:35:56 +03:00
Eladash
2c47e39f08
ppu disasm: Improve disassembly of BCTR and LWSYNC
2019-09-23 02:35:56 +03:00
Megamouse
88388f1efc
sceNpSns: add more logging
2019-09-22 10:16:55 +02:00
Megamouse
2dc71cfe51
sceNpTrophy: add errors from RE
2019-09-22 10:16:55 +02:00
Nekotekina
e7d67f9732
Fix unwanted statichle_handler init
2019-09-21 03:59:43 +03:00
Megamouse
caef52e3b3
Input: don't intercept pads after system dialogs, but still ignore input
2019-09-20 22:12:40 +02:00
Megamouse
571bb914f5
cellPad: fix out of bounds warning
2019-09-20 22:12:40 +02:00
Megamouse
7193d407b9
Input: Remove unused flush member
2019-09-20 22:12:40 +02:00
kd-11
2c76f47eec
rsx: Restructure flip code and frame scoping
...
- Add an explicit frame scope marker tied in with the queue_prepare command
Since queue_prepare is emitted at the end of a frame, it can be used as end-of-frame in games that emit this
- If this command is not emitted, fifo flatenner and frameskip will not work
2019-09-19 23:10:09 +03:00
Eladash
c50119aefa
Fix sceNp2Init
2019-09-19 08:26:29 +02:00
Nekotekina
538a5cc9d8
Silence skylander message
2019-09-19 02:16:14 +03:00
Nekotekina
4b19e55fcc
Use g_fxo for cellKb, cellMouse
...
Use init_mutex
2019-09-19 02:16:14 +03:00
Nekotekina
353a7ff8e6
cellCamera: use g_fxo
2019-09-19 02:16:14 +03:00
Nekotekina
a4951ec407
Use g_fxo for global lv2_memory_container
2019-09-18 21:24:04 +03:00
RipleyTom
7e2bb0fd1f
Adds initialization checks back in sys_usbd
2019-09-18 21:19:40 +03:00
Nekotekina
3eba0f4523
sys_usbd: use g_fxo
2019-09-17 15:23:40 +03:00
Nekotekina
7e2edc2232
sys_usbd: rearrange includes
2019-09-17 15:10:58 +03:00
Nekotekina
c2fe2ac4a4
cellMic: use g_fxo
2019-09-17 02:46:34 +03:00
Nekotekina
36a528067c
cellAudio: use g_fxo
2019-09-17 02:46:34 +03:00
Nekotekina
76314520ef
cellAudio: use vm::gvar to allocate working memory
2019-09-17 02:46:34 +03:00
Nekotekina
584174d371
vm::gvar: add array support
2019-09-17 02:46:34 +03:00
RipleyTom
2b8890b193
CellPadLdd functions implementation
2019-09-17 01:17:48 +03:00
RipleyTom
e98c7f4e1a
sys_usbd implementation
2019-09-17 01:17:48 +03:00
Nekotekina
b70c08a2e8
Revert "Remove shared_cond and simplify reservation waiting"
...
This reverts commit 0a96497e13 .
2019-09-14 00:02:48 +03:00
Nekotekina
2fc8844315
atomic.hpp: add atomic wait mask support
2019-09-13 15:53:34 +03:00
Megamouse
32a4c2242b
sceNp: fixups
2019-09-13 06:18:49 +02:00
Nekotekina
0a96497e13
Remove shared_cond and simplify reservation waiting
...
Use atomic wait for reservations
Cleanup some obsolete code
2019-09-10 19:25:39 +03:00
Nekotekina
d13ff285d1
Rewrite cond_variable to use waitable atomics
...
Increase max_timeout and fix max_timeout usage
2019-09-10 19:25:39 +03:00
Nekotekina
b91661ae71
Remove timeout support from lf_queue::wait
...
Add notify method and use atomic wait
2019-09-10 19:25:39 +03:00
Wojtek Arabczyk
cb66d05693
Fix warnings in rpcs3/Emu/Cell/Modules/sceNp.cpp
2019-09-09 19:16:02 +03:00
Megamouse
aa262889f2
cellVdec: add error_code
2019-09-08 20:54:43 +03:00
Megamouse
6aacec4694
cellMouse: add error_code
2019-09-08 20:54:43 +03:00
Megamouse
c111209639
cellGem: add error_code
2019-09-08 20:54:43 +03:00
Nekotekina
693d54553c
Fix compilation
2019-09-08 19:26:10 +03:00
Megamouse
cb00b71c4b
sceNp: add error_code and some param checks ( #6416 )
...
* sceNp: add error_code and basic implementations
* sceNp: and fix some structs
* sceNpSns: improvements
* sceNpUtil: improvements
* sceNpTus: improvements
2019-09-08 18:36:10 +03:00
Nekotekina
0c69b7da8f
Fix ppu_interpreter::MTFSFI
...
Out of bounds error.
2019-09-08 14:50:50 +03:00
Megamouse
cddc045c69
cellPad: disable reserved bit check in cellPadSetActDirect
2019-09-08 08:49:15 +02:00
Nekotekina
d0db7ca6bd
cellSaveData fixup ( #6393 )
...
Increase entry max size
2019-09-05 14:49:03 +03:00
RipleyTom
8de1239132
Simulate BSD FS for file order presentation in savedata
2019-09-05 03:01:46 +03:00
isJuhn
aaae437ca3
PPUInterpreter.cpp: remove SSE4.1 requirement in FCTIWZ, FCTID and FCTIDZ
2019-09-04 14:05:33 +03:00
isJuhn
08c12f4c00
File.cpp: add rounding_alignment argument to get_dir_size to allow GetSizeKB functions to report size more accurately
2019-09-03 03:19:49 +03:00
Nekotekina
a5be410e3f
[noexcept] Don't throw on unimplemented HLE functions.
...
Getting rid of exceptions.
2019-09-02 14:43:31 +03:00
Nekotekina
81a110f346
Fix system time wraparound
...
Implement utils::udiv128, utils::div128
2019-08-30 22:02:25 +03:00
Nekotekina
b3f5d6d85b
Put lv2_obj::awake calls under mutex
2019-08-29 02:44:12 +03:00
Nekotekina
9672ad53cd
Fix SPRX building on AppImage builds
2019-08-27 17:25:55 +03:00
Nekotekina
b6b7d7b48c
sys_cond_wait fixup
2019-08-27 15:38:18 +03:00
Nekotekina
ec8c5453bc
Fix sys_cond_wait
...
Schedule PPU thread before relocking.
Don't lock mutex in notify functions.
2019-08-27 15:13:01 +03:00
Nekotekina
fd839243ec
Revert PR 6405
2019-08-27 14:05:38 +03:00
Nekotekina
796a6646f7
Silence statichle
2019-08-27 13:56:50 +03:00
Nekotekina
dd79a5efb7
Remove fxm::make_always
2019-08-27 03:50:15 +03:00
Nekotekina
e41b234dc4
Use g_fxo for cellSysCache
2019-08-27 03:50:15 +03:00
Nekotekina
d2eba2387b
Use g_fxo for display_manager
2019-08-27 03:50:15 +03:00
Nekotekina
4ec3e968ff
Use g_fxo for jit_core_allocator
2019-08-27 03:50:15 +03:00
Nekotekina
3dd6961ee5
Use g_fxo in PPUThread.cpp misc
...
Replace fxm::get_always
2019-08-27 03:50:15 +03:00
Nekotekina
ebdb0781fa
Use g_fxo for statichle_handler
2019-08-27 03:50:15 +03:00
Nekotekina
84e44d3372
Use g_fxo for ppu_linkage_info
2019-08-27 03:50:15 +03:00
Nekotekina
2a37a4bcea
Use g_fxo for cellPad
...
Rename pad_t -> pad_info
2019-08-27 03:50:15 +03:00
Nekotekina
928719b658
Use g_fxo for rsx::avconf
2019-08-27 03:50:15 +03:00
Nekotekina
7a00b5f809
Use g_fxo for patch_engine
2019-08-27 03:50:15 +03:00
Nekotekina
cfdd298693
Use g_fxo for cellMusicDecode
2019-08-27 03:50:15 +03:00
Nekotekina
7b0d834477
Use g_fxo for gem_camera_shared
2019-08-27 03:50:15 +03:00
Nekotekina
e4a7e8c058
Use g_fxo for cellGem
...
Rename gem_t -> gem_config
2019-08-27 03:50:15 +03:00
Nekotekina
1d3c18f4e2
Use g_fxo for cellGcm
...
Rename CellGcmSysConfig -> gcm_config
2019-08-27 03:50:15 +03:00
Nekotekina
9a2338a5ca
Use g_fxo for fs_aio_manager (dummy)
2019-08-27 03:50:15 +03:00
Nekotekina
38a06c4b14
Use g_fxo for SysRsxConfig
...
Rename to lv2_rsx_config
2019-08-27 03:50:15 +03:00
Nekotekina
cf44038435
Use g_fxo for lv2_config
2019-08-27 03:50:15 +03:00
Nekotekina
8304043d00
Use g_fxo for sysutil_cb_manager
2019-08-27 03:50:15 +03:00
Eladash
a921fe3351
lv2: Wait for rescheduling before confirming ETIMEOUT
2019-08-27 03:44:34 +03:00
Eladash
35a3bed91a
sys_cond_wait: Wait for rescheduling before relocking
2019-08-27 03:44:34 +03:00
Megamouse
32b5b11a83
cellSaveData/overlays: prevent possible array out of bounds in list view
2019-08-26 21:09:20 +02:00
Nekotekina
6165bd68c0
Use g_fxo for avconf_manager
2019-08-22 15:14:33 +03:00
Megamouse
94dd6c2007
cellSaveData: improve param.sfo creation
2019-08-22 08:05:12 +02:00
Megamouse
896cfd2ade
cellSaveData/cellMsgDialog: implement cellSaveDataDelete
2019-08-22 08:05:12 +02:00
Megamouse
0b720aeb59
cellSaveData: ignore dot and dotdot
2019-08-22 08:05:12 +02:00
Megamouse
b3c1759853
cellSaveData/overlays/Qt: fix some warnings and a possible nullptr deref
2019-08-22 08:05:12 +02:00
Nekotekina
8cf025bf71
Use g_fxo for cellWebBrowser
...
Rename browser_t -> browser_info
2019-08-22 02:13:39 +03:00
Nekotekina
2b55bde104
Use g_fxo in cellRudp
...
Rename rudp_t -> rudp_info
2019-08-22 02:13:39 +03:00
Nekotekina
02fe1ef7ff
Use g_fxo for cellSearch
...
Rename search_t -> search_info
2019-08-22 02:13:39 +03:00
Nekotekina
93d5c0a38e
Use g_fxo for cellRec
...
Rename rec_t -> rec_info
2019-08-22 02:13:39 +03:00
Nekotekina
2740fafa64
Use g_fxo for page_fault_notification_entries
2019-08-22 02:13:39 +03:00
Nekotekina
54952f6ad6
Use g_fxo for LoadedNpdrmKeys_t
...
Rename to loaded_npdrm_keys
2019-08-22 02:13:39 +03:00
Nekotekina
a85a8796d3
Use g_fxo for page_fault_event_entries
2019-08-22 02:13:39 +03:00
Nekotekina
606601441d
Use g_fxo for cellMusic
...
Replace music_t with music_state
2019-08-22 02:13:39 +03:00
Nekotekina
8517ccfdfa
Add new typemap for always existing objects
...
Not to be confused with singletons or global variables.
2019-08-22 02:13:39 +03:00
Nekotekina
7db2e2537f
Don't call lv2_obj::awake_all with empty list
...
Fixup after #5883
2019-08-22 02:13:39 +03:00
JohnHolmesII
5817e2a359
Fix mismatched enum string formats in sys_config
2019-08-18 18:39:17 +02:00
Megamouse
b3aff3a1c6
cellKb: fix large ASCII characters for some compilers
2019-08-18 08:18:15 +02:00
Megamouse
eedf96e1f4
Qt: fix diacritics in keyboard handler
2019-08-18 08:18:15 +02:00
Megamouse
7408f50d71
cellKb: improve key conversion
2019-08-18 08:18:15 +02:00
Megamouse
86a8b5924a
Add option for keyboard layout
2019-08-18 08:18:15 +02:00
Eladash
62414cee15
Do not allow SYS_SYNC_PRIORITY_INHERIT in sys_semaphore_create (EINVAL)
2019-08-18 04:01:16 +03:00
eladash
0af342a978
PPU Precise: FPCC handling on float ops implemented
2019-08-18 04:01:16 +03:00
Nekotekina
dd86aa472d
Fix _sys_lwcond_queue_wait
...
Fixup after #5883
2019-08-18 00:19:31 +03:00
Nekotekina
6535fb0603
Fix _sys_lwcond_signal_all
...
Fixup after #5883
2019-08-18 00:19:31 +03:00
yahfz
1444492eab
lv2: Allow sys_sync_priority_inherit
2019-08-17 23:11:08 +03:00
eladash
050339bb3e
PPU/LV2: Make thread-lists scheduling atomic
2019-08-17 22:46:36 +03:00
Eladash
0d88f037ff
Add new accuracy control for PUTLLUC accuracy setting (non-TSX)
...
With the option enabled GET commands are blocked until the current PUTLLC/PUTLLUC executer on that address finishes
Additional improvements:
- Minor race fix of sys_ppu_thread_exit (wait until the writer finishes)
- Max number of ppu threads bumped to 8
2019-08-17 00:42:46 +03:00
Eladash
d8402008dd
Stub sys_process_get_number_of_object(object == SYS_SPUPORT_OBJECT)
2019-08-16 23:49:24 +03:00
Eladash
0dce6be8cb
Implement lv2_spu_image
...
- Improved sys_spu_image_.. error checking
- sys_process SYS_SPUIMAGE_OBJECT handling implemented
2019-08-16 23:49:24 +03:00
Eladash
80827aa31a
Stub sys_process_get_number_of_object(object == SYS_TRACE_OBJECT)
2019-08-16 23:49:24 +03:00
Eladash
6540fecdc3
Add another pattern to ppu analyzer imports
2019-08-16 22:55:04 +03:00
Megamouse
8debdfcd09
handle empty callback returns
2019-08-14 23:54:09 +02:00
Nekotekina
f8f3067deb
Always check page_allocated in vm::check_addr
2019-08-14 20:28:34 +03:00
Nekotekina
d45c743877
Remove lib_loading_type::automatic
...
This is former default and is now obsolete.
2019-08-14 20:28:34 +03:00
Nekotekina
4f22559ff0
Remove dumb overloads of atomic_op, fetch_op
...
And lf_queue::apply.
Fix inlining problem by passing F by value.
2019-08-14 20:28:34 +03:00
Nekotekina
cf16ee5eb5
Implement lib_loading_type::liblv2list
2019-08-14 20:28:34 +03:00
Nekotekina
ae46333e99
Implement lib_loading_type::liblv2both
2019-08-14 20:28:34 +03:00
Eladash
19825366f5
Fixup for fixup
2019-08-13 17:55:45 +01:00
Eladash
a902874b01
Fixup after #6286
2019-08-13 13:34:14 +03:00
Eladash
a4896eb6df
Fix race on cellVdecClose TLS cleanup
2019-08-13 04:56:00 +03:00
Eladash
30c72b105e
Fix race on notifying vdec thread in cellVdecGetPicture
...
Can dereference nullptr if cellVdecClose was called simultaneously.
2019-08-13 04:56:00 +03:00
Eladash
14ac70dfbf
Avoid using _sys_ppu_thread_exit in _sys_interrupt_thread_disestablish
2019-08-13 04:56:00 +03:00
Eladash
4b82006984
ppu: Improve LWSYNC
...
Block load<->load reordering as real lwsync.
2019-08-13 04:56:00 +03:00
eladash
4f00af6000
ppu interpreter: Allow non-ssse3 to use fast path
...
byte shuffle is now removed which was the barrier for ssse3 check.
2019-08-13 04:56:00 +03:00
Eladash
6d3fc3a386
core config: Expose min/max ranges of integral settings and use it
2019-08-13 04:56:00 +03:00
Eladash
cd4e895c04
Use error_code in mmapper_thread_recover_page_fault
2019-08-13 04:56:00 +03:00
Eladash
629d8e3a51
Fix sys_time_get_current_time() date
2019-08-13 04:56:00 +03:00
Eladash
6d0f2ae58a
ppu interpreter: Improve SRD/SLD
2019-08-13 04:56:00 +03:00
Eladash
a560498cd4
ppu: Improve FCTIW, FCTIWZ, FCTID and FCTIDZ
2019-08-13 04:56:00 +03:00
Eladash
0a5b6ad928
Add missing EALIGN check for sys_mmapper_search_and_map
2019-08-11 21:43:13 +03:00
Eladash
a832581201
Fix sys_vm address boundary checks (fix vsize)
2019-08-11 21:43:13 +03:00
Eladash
ecb3b62787
Fix CELL_CAMERA_ERROR_NOT_INIT check in cellCameraSetNotifyEventQueue when camera set to null
...
Don't worry, this was a duplicated check for null camera setting.
2019-08-11 21:43:13 +03:00
Eladash
96527eee5b
idm: Fix bug in ID searching
...
* ID checking now checks if (id % step) == 0
* Extend possible ID range to allow UINT32_MAX (as long as base is non-zero)
2019-08-11 21:43:13 +03:00
Eladash
5c904bf3e2
Fix max allocations for DECR mode (sys_memory)
2019-08-11 21:43:13 +03:00
Eladash
cbcd06d1dc
ppu: Stack size allocation improvements
2019-08-11 21:43:13 +03:00
Eladash
3ce18fd960
Implement vm::page_executable ( #6330 )
...
Fixes segfaults when attenpting to set segfaults on non-executable memory.
2019-08-11 21:04:17 +03:00
Eladash
94d33003a3
Write zero in attr->pad (sys_memory_get_page_attribute)
...
Its included in lv2 as well.
2019-08-10 19:47:37 +03:00
Eladash
25e47e0de0
Fix vm::check_addr memory state check
2019-08-10 19:47:37 +03:00
Eladash
112ad9dda2
Allow to load liblv2.sprx with manual/both lib loading options ( #6274 )
2019-08-07 18:41:27 +03:00
Eladash
c219417f62
sys_vm: Fix sys_vm_invalidate
2019-08-03 14:29:17 +01:00
Eladash
72fb3ba794
perf hotfix for sys_timer_usleep
2019-08-01 23:38:09 +03:00
eladash
e40b76b253
sys_lwcond: Extract protocol from lwmutex at creation
...
This is the only reason theres a need to specify lwmutex_sq id at creation. unlike sys_cond, lwcond isn't connected to lwmutex at the lv2 level.
SYS_SYNC_RETRY fix is done explicitly at the firmware level.
This fixes issues when the original lwcond and lwmutexol data got corrupted or deallocated, this can happen when the program simply memcpy the control data to somewhere else.
Or if it uses direct lv2 the lwcond conrol param can even be NULL which will make it access violate when dereferncing it. (This param is unchecked and can be anything)
2019-07-29 21:58:04 +03:00
eladash
7508ae6e65
Add EAGAIN check for sys_memory_contianer_create
2019-07-29 21:55:59 +03:00
eladash
1e5e0f3b5e
make sys_fs_closedir atomic
2019-07-29 21:55:59 +03:00
Nekotekina
949f33c8a4
Fix sys_config_get_io_event syscall name
2019-07-29 21:55:59 +03:00
Eladash
829047ecdb
ppu disasm: Improve ORI and ORIS disassembly
2019-07-29 18:28:39 +03:00
Eladash
997e3046e3
vm/sys_overlay Improvements
...
- Implement sys_overlay_load_module_by_fd.
- Implement special segment allocation when ppc_seg flag is specified.
2019-07-28 14:23:58 +03:00
Eladash
fcc75c8b0f
rsx: Write atomically semaphore updates and fix zcull timestamp
2019-07-26 21:27:55 +03:00
Eladash
22994d15fb
Fix cellCamera events support with clocks scaling
2019-07-26 21:27:55 +03:00
Eladash
c53f0dd7b5
rsx: Fix gcm unmap events
2019-07-26 21:27:55 +03:00
Eladash
49aefc0795
Prefetch MFC list elements ( #5345 )
...
* Prefetch mfc list elemets to protect from overwriting
Also move some stuff away from command processing such as a few constant arguments setup
2019-07-24 01:13:45 +03:00
Eladash
85b1152e29
Timers scaling and fixes
2019-07-23 00:09:01 +01:00
Eladash
d17be2c2ec
Fix similar bug in sys_rsx_context_iomap
...
TODO: Is there an rsxmem unmap event for those cases?
2019-07-22 15:16:43 +03:00
Eladash
cf4d715284
typo fix (to squash)
2019-07-22 15:16:43 +03:00
Eladash
2b721b9e29
correctness fix
...
Not that it really matters because of gcm's lwmutex but just in case the syscall is useb directly.
2019-07-22 15:16:43 +03:00
Eladash
492c9e3c7c
Fix sys_rsx_context_iounmap partial unmapping
2019-07-22 15:16:43 +03:00
Rui Pinheiro
070c3af50f
Initial sys_config implementation
2019-07-22 02:44:45 +03:00
Nekotekina
1b140c8e97
SPU Recompiler: optimize JIT memory consumption
...
Avoid rebuilding trampoline for every function at startup.
This should fix Out of Memory error in some cases.
2019-07-19 04:56:35 +03:00
Nekotekina
736ec4035e
Fixup for SPU Recompilers, regression after #6210
2019-07-15 19:51:58 +03:00
Nekotekina
cb5c26f2b5
Fix SPU Interpreter regression after #6147
2019-07-15 16:34:34 +03:00
Nekotekina
c01f1a8968
Avoid transitive include of vm_ref.h
...
Add forward declarations of vm::_ref_base
Remove default AT = u32 in _ptr_base and _ref_base (doesn't play well).
2019-07-15 15:46:46 +03:00
Nekotekina
cfa1416d64
sys_spu: add vm::temporary_unlock
2019-07-14 18:33:23 +03:00
Nekotekina
1a1eff66bc
sys_timer: add vm::temporary_unlock
2019-07-14 18:21:56 +03:00
Nekotekina
bc1617758c
sys_semaphore: add vm::temporary_unlock
2019-07-14 18:18:03 +03:00
Nekotekina
6126a98111
sys_rwlock: add vm::temporary_unlock
2019-07-14 18:14:15 +03:00
Nekotekina
e1293b14f8
sys_net: add vm::temporary_unlock
2019-07-14 18:11:00 +03:00
Nekotekina
f5ee8c1292
sys_interrupt: add vm::temporary_unlock
2019-07-14 18:08:18 +03:00
Nekotekina
0a88a23bf5
sys_event: add vm::temporary_unlock
2019-07-14 18:06:02 +03:00
Nekotekina
cbfa6cc91f
sys_vm: add vm::temporary_unlock
2019-07-14 17:55:26 +03:00
Nekotekina
38d4e3c184
sys_mmapper: add vm::temporary_unlock
2019-07-14 17:51:03 +03:00
Nekotekina
7398cfc950
sys_event_flag: add vm::temporary_unlock
2019-07-14 17:37:58 +03:00
Nekotekina
22e4ef147a
SPU TSX: fix "Preferred SPU Threads"
2019-07-14 17:33:20 +03:00
Eladash
3de885c7a6
Dealloc exec cache after sys_prx/overlay_unload_module
...
Must come before vm::dealloc of it.
2019-07-13 16:59:58 +03:00
Eladash
c4d8ef4340
rsx: Allow to configure vblank rate
...
Removed "HLE protection" hack from sys_rsx_context_attribute
2019-07-12 00:19:56 +03:00
RipleyTom
6c6b973342
Microphone implementation
2019-07-11 20:13:12 +01:00
Eladash
537d3f2548
Log last function on debug pause or exception, dump cpu_thread state on access violation
2019-07-10 17:35:39 +03:00
Eladash
d7a2d42d8f
MFC: Fix Tag Status report for sync/eieio/barrier commands
2019-07-10 17:35:39 +03:00
Nekotekina
d1db6a6827
Revert incorrect usage of le_t in name_u64
2019-07-09 12:07:58 +03:00
Eladash
6fba3dd90c
Misc correctness improvement
...
Use let_<u64> for name_64 and prefer it when possible.
2019-07-09 11:52:34 +03:00
Eladash
4c2fb54b99
Fix possible inconsistencies for sys_memory mem stats report
2019-07-04 22:35:22 +03:00
msuih
690cdff0d3
Minor fixes
...
- Fix a typo in OpenAL
- Fix typo in cellHttp.h
- Unused variables in catch
- Use 64-bit shifts
- Use use_count with shared pointers, unique is depracated and getting removed
- Explicitly cast boolean to int
- Signed/unsigned issues with loop variables
- Fix missing return statement (the code path is unreachable, but compiler wants a return)
- */ ouside of comment
- Fix duplicate layout name
2019-07-01 04:33:23 +03:00
msuih
d57124d075
Explicitly cast size_t to integer types
2019-07-01 04:33:23 +03:00
msuih
146e43b6ec
Do not use negative unsigned literals
2019-07-01 04:33:23 +03:00
Eladash
43f919c04b
Fixup after #6143 ( #6146 )
...
vm::spu max address was overflowing resulting in issues, so cast to u64 where needed. Fixes #6145 .
Use vm::get_addr instead of manually substructing vm::base(0) from pointer in texture cache code.
Prefer std::atomic_thread_fence over _mm_?fence(), adjust usage to be more correct.
Used sequantially consistent ordering in semaphore_release for TSX path as well.
Improved memory ordering for sys_rsx_context_iounmap/map.
Fixed sync bugs in HLE gcm because of not using atomic instructions.
Use release memory barrier in lwsync for PPU LLVM, according to this xbox360 programming guide lwsync is a hw release memory barrier.
Also use release barrier where lwsync was originally used in liblv2 sys_lwmutex and cellSync.
Use acquire barrier for isync instruction, see https://devblogs.microsoft.com/oldnewthing/20180814-00/?p=99485
2019-06-29 18:48:42 +03:00
Eladash
1ee7b91646
Refactoring ( #6143 )
...
Prefer vm::ptr<>::ptr over vm::get_addr.
Prefer vm::_ptr/base over vm::g_base_addr with offset.
Added methods atomic_t<>::bts and atomic_t<>::btr .
Removed obsolute rsx:🧵 :Read/WriteIO32 methods.
Removed wrong check in semaphore_release.
Added handling for PUTRx commands for RawSPU MFC proxy.
Prefer overloaded methods of v128 instead of _mm_... in VPKSHUS ppu interpreter precise.
Fixed more potential overflows that may result in wrong behaviour.
Added io/size alignment check for sys_rsx_context_iounmap.
Added rsx::constants::local_mem_base which represents RSX local memory base address.
Removed obsolute rsx:🧵 :main_mem_addr/ioSize/ioAddress members.
2019-06-29 01:27:49 +03:00
JohnHolmesII
232a35b6fc
Various small warning fixes
...
-Indentation warnings
-prevent shift overflow
-This was declared extern in all contexts. Remove this for initialization
-Fix main return types. OH CANADA!
-Silence extraneos 'unused expression' warning
-Force use return value (warning)
-Remove tautological compare copy-pasta (char always < 256)
2019-06-28 01:45:29 +03:00
JohnHolmesII
d0eae7bab1
Fix -Wsign-compare a little bit
...
Explicitly mark loop types (per review)
2019-06-28 01:45:29 +03:00
JohnHolmesII
22917084d9
Explcitly mark overflow in various SIMD functions. Doing so silently
...
created warnings.
2019-06-28 01:40:52 +03:00
JohnHolmesII
ebb1ae6408
Properly ignore SIMD macros to avoid warning
2019-06-28 01:40:52 +03:00
JohnHolmesII
23094b48bb
Fix warnings related to -Wswitch
...
Add default cases.
Move default breaks to newline
Add proper handling in some instances.
Add missing enums to switches
2019-06-28 01:40:52 +03:00
JohnHolmesII
be521ff0ab
Fix warnings related to parentheses
2019-06-25 20:36:32 -07:00
Malcolm Jestadt
31afd046b0
lv2: sys_timer_usleep improvements for linux
...
-The minimum quantum on linux appears to be 50 microseconds by default, not 100
-Do not wait for the last quantum to avoid sleeping too long
2019-06-25 20:20:05 +01:00
kd-11
4ff77a8555
rsx: Improve balancing of the offloader thread
...
- Use two counters to avoid atomic operations
- Yield instead of sleeping because some games are very sensitive to timing
2019-06-25 20:50:54 +03:00
Lassi Hämäläinen
c963c51a60
Remove unnecessary header includes
...
- Manually removed lot of unneeded #includes to clean code and reduce
compilation time
- Reordered some of the #includes to be in more logical order
2019-06-25 17:11:10 +03:00
Lassi Hämäläinen
e9e87b8bd9
Add missing #includes to header files
...
- Multiple header files where missing #includes to other headers that
where used in the header. Correct header was included in correct
order in source files which caused everything to compile.
- Added missing #includes so header files correctly include all their
dependencies and fixes problems with IDEs being unable to parse
headers correctly due to missing symbols
2019-06-25 17:11:10 +03:00
Lassi Hämäläinen
499035512b
Split Emu/Memory into more logical headers
...
- Add vm_locking.h and vm_reservation.h and move relevant functions
and types to these headers.
- Change include order and make vm_ptr.h, vm_var.h and vm_ref.h headers
usable invidually and them including vm.h instead of other way around
- Because usage of vm::ptr now requires including vm_ptr.h instead of
vm.h updated multiple #includes
- Added additional #includes to vm_reservation.h and vm_locking to
where vm::reservation_* and locking related functions are used
2019-06-25 17:11:10 +03:00
Eladash
ade291e73d
Fix potential overflow in sys_vm
2019-06-21 00:02:52 +03:00
Nekotekina
517a2bc34a
sys_lwcond: add vm::temporary_unlock
2019-06-20 14:46:32 +03:00
Nekotekina
a935203a18
sys_lwmutex: add vm::temporary_unlock
2019-06-20 14:46:32 +03:00
Nekotekina
b9b591bf02
Fix SPU Loop Detection
2019-06-20 14:46:32 +03:00
Nekotekina
5753b3222e
sys_memory: add vm::temporary_unlock
2019-06-19 20:45:59 +03:00
Nekotekina
d021d9e14a
sys_mutex: add vm::temporary_unlock
2019-06-19 20:39:39 +03:00
Nekotekina
89a31292dc
sys_cond: add vm::temporary_unlock
2019-06-19 20:39:29 +03:00
Nekotekina
5d45a3e47d
Implement cpu_thread::suspend_all
...
Remove Accurate PUTLLC option.
Implement fallback path for SPU transactions.
2019-06-19 20:36:12 +03:00
Eladash
d52953fca6
minor UB fix
2019-06-17 02:52:43 +03:00
Ivan
0fe26f8293
Add sys_rsx_context_iomap workaround
...
Don't fail with CELL_EINVAL on vm::main.
2019-06-17 01:17:02 +03:00
Megamouse
b29a89807e
cellPad: set len to 0 if pads are being intercepted by the system
2019-06-15 00:24:10 +02:00
Megamouse
3f00b485a0
cellMsgDialogAbort: don't call on_close and properly re-enable pads
2019-06-15 00:24:10 +02:00
Nekotekina
2bc0ea37ab
sys_fs: yield PPU on disk access ops
2019-06-08 19:34:55 +03:00
Nekotekina
9dc0368079
Rename cond_x16 to shared_cond
...
Extend capacity from 16 to 32.
Remove redundant m_total counter.
2019-06-04 16:37:50 +03:00
Nekotekina
447029a700
Implement fs::file::write_gather (Vectored I/O)
2019-06-03 23:18:39 +03:00
Nekotekina
31994dd3b2
Rename cond_one to unique_cond
...
Remove redundant in_cv in cellVdec
2019-06-02 23:22:16 +03:00
Nekotekina
dfd50d0185
Implement std::bit_cast<>
...
Partial implementation of std::bit_cast from C++20.
Also fix most strict-aliasing rule break warnings (gcc).
2019-06-02 23:22:16 +03:00
scribam
790962425c
Fix some "-Wpedantic" warnings
2019-06-01 22:59:23 +03:00
scribam
09c9996f31
Use empty() instead of comparing size() with 0
...
Recommendation from Clang-Tidy: https://clang.llvm.org/extra/clang-tidy/checks/readability-container-size-empty.html
2019-06-01 22:59:23 +03:00
scribam
bf557ea6e6
Use the more efficient character literal overload for find_first_of/find_last_of
...
Recommendation from Clang-Tidy: https://clang.llvm.org/extra/clang-tidy/checks/performance-faster-string-find.html
2019-06-01 22:59:23 +03:00
Megamouse
cafa4521ee
Better Support For Game Collections ( #4450 )
2019-06-01 01:12:30 +03:00
Megamouse
f48589005d
handle some more warnings
2019-05-28 21:47:49 +02:00
Megamouse
34964e0e4f
handle some warnings
2019-05-28 21:47:49 +02:00
Nekotekina
71b71537a0
SPU TSX: implement Accurate PUTLLC option
...
Allow spurious PUTLLC failure if disabled (default).
2019-05-25 22:23:23 +03:00
Nekotekina
b839cc9d5b
SPU TSX: restore busy_wait in GETLLAR
2019-05-25 21:41:11 +03:00
Nekotekina
7de3c410cf
SPU/PPU: update reservation logic on TSX path transactions
...
Make use of lock bits in reservation counters.
On PPU, fallback to compare_and_swap instead of desperate retry.
On SPU, lighten write set on retry by 'locking' outside of the transaction.
2019-05-20 14:32:50 +03:00
Nekotekina
9abb303569
vm: expand reservation lock bit area to 7 bit
...
This is minor change.
2019-05-19 17:46:55 +03:00
Nekotekina
85920253b3
SPU ASMJIT: fix BISLED
...
Properly prevent losing branch target (addr) vs get_events result (flags).
Move get_events() to the beginning.
Match BISL indirect_branch() args.
2019-05-17 23:44:19 +03:00
Nekotekina
6416fee986
SPU ASMJIT: fix indirect branch target order
...
Check stack mirror first, as in SPU LLVM.
2019-05-17 23:44:19 +03:00
Nekotekina
bf7ee2de4c
SPU: fix spu_runtime::g_tail_escape (unused yet)
2019-05-17 23:44:19 +03:00
Nekotekina
2cf139c7a8
SPU analyser: minor Safe fix
...
Properly handle known indirect branch target as a function call target.
2019-05-17 23:44:19 +03:00
Nekotekina
a016728a9e
SPU LLVM: re-enable stack mirror
...
It was disabled due to other bugs which should be fixed now.
2019-05-16 04:12:08 +03:00
Nekotekina
a69329fe02
SPU ASMJIT: Fix Giga mode
...
This is embarassing.
Fixed local instruction table computation (indirect branch).
2019-05-16 04:11:05 +03:00
Nekotekina
26d131ef29
SPU LLVM: Fix Giga mode
...
Forgot to adjust global chunk table computation.
2019-05-16 04:02:33 +03:00
Nekotekina
91897fa69d
SPU LLVM/ASMJIT: fix BRA/BRASL instructions for PIC
...
Handle absolute branch addressing correctly.
2019-05-16 02:41:31 +03:00
Nekotekina
f95ec8a37c
SPU LLVM: simplify jump table computation
...
Remove one add operation and adjust constants instead.
2019-05-16 00:54:50 +03:00
Nekotekina
b138d25b97
SPU Disasm: fix absolute addressing in some instructions.
...
STQA, LQA, BRA, BRASL instructions.
2019-05-16 00:53:37 +03:00
Nekotekina
a921af1e96
SPU LLVM/ASMJIT: remove minor unnecessary code
2019-05-16 00:52:52 +03:00
Nekotekina
43ae4b3f33
SPU LLVM/ASMJIT: add missing PC clamping
...
Minor fix, since it's mostly impossible to overflow.
2019-05-16 00:51:47 +03:00
Nekotekina
007108100e
SPU: implement spu_runtime::g_tail_escape
...
May help to avoid gateway costs in some cases.
2019-05-15 18:47:40 +03:00
Nekotekina
4e75d2c2f7
SPU LLVM: don't save $2 in optimized functions
2019-05-15 16:41:57 +03:00
Nekotekina
adc7d96683
SPU LLVM: simplify function prototype
...
Pass only $3
2019-05-15 16:18:13 +03:00
Nekotekina
16401722f1
SPU LLVM: fix $SP passing in functions, write PC on halt
...
Allows to skip updating $SP in optimizable functions.
2019-05-15 15:42:03 +03:00
Nekotekina
09eb633f69
SPU ASMJIT: increase stack frame size
...
It seems Windows has minimal stack frame size 0x28.
2019-05-15 02:16:08 +03:00
Nekotekina
3753d27aba
SPU: fix Giga mode (kinda)
...
Don't scan before the entry point.
Disable stack mirror in SPU LLVM.
Improve analyser logic for holes.
2019-05-14 22:15:04 +03:00
Nekotekina
c481472faf
SPU ASMJIT: add PIC support (fix)
...
Also cleanup and adapt for GHC CC.
2019-05-14 22:15:04 +03:00
Nekotekina
82295d131a
SPU LLVM: split LLVM IR dump to spu-ir.log
...
Also move disasm to spu_recompiler_base::dump.
Interleave disasm with block target info for convenience.
2019-05-14 22:15:04 +03:00
Nekotekina
ea554ae828
Implement 'Max SPURS Threads' option (hack)
...
Pauses SPURS threads beyond limit automatically if set.
2019-05-14 22:15:04 +03:00
Nekotekina
1eed421774
SPU LLVM: use branch patchpoints again
...
Renewed and adapted for PIC and all branch types.
This may address performance degradation after #5923 .
2019-05-14 22:15:04 +03:00
Nekotekina
2f6707d0a0
SPU LLVM: regain some efficiency
...
Avoid returns from the recompiler gateway, favoring tail calls.
This may address performance degradation after #5923 .
2019-05-14 22:15:04 +03:00
Nekotekina
f33b81545e
SPU: implement recompiler gateway function in assembly
...
Use GHC calling convention directly for SPU object entry points.
This may address performance degradation after #5923 .
2019-05-14 22:15:04 +03:00
Nekotekina
a74fd27e3d
SPU LLVM: fix SPU termination (spu_escape) on Windows
...
Adjust restored stack pointer for the lack of tail call.
2019-05-14 22:15:04 +03:00
Nekotekina
cc8c635855
SPU: PIC support preview
...
SPU ASMJIT not supported yet.
Giga mode not supported properly.
2019-05-14 22:15:04 +03:00
scribam
6c5ea068c9
Remove redundant semicolons
...
Fix "-Wextra-semi" warnings
2019-05-12 18:32:11 +03:00
Rui Pinheiro
1f82a26a9c
SPU LLVM: Fix Mega
2019-05-12 00:39:42 +03:00
Nekotekina
8194c92f1c
SPU LLVM: disable GHC CC for chunks on Windows
...
Causes fatal error inside LLVM.
2019-05-11 02:35:16 +03:00
Nekotekina
5d33d9a3d9
Enable most warnings in GCC
2019-05-11 02:13:19 +03:00
Nekotekina
7492f335e9
SPU analyser: basic function detection in Giga mode
...
Misc: fix EH frame registration (LLVM, non-Windows).
Misc: constant-folding bitcast (cpu_translator).
Misc: add syntax for LLVM arrays (cpu_translator).
Misc: use function names for proper linkage (SPU LLVM).
Changed function search and verification in Giga mode.
Basic stack frame layout analysis.
Function detection in Giga mode.
Basic use of new information in SPU LLVM.
Fixed jump table compilation in SPU LLVM.
Disable broken optimization in Accurate xfloat mode.
Make compiled SPU modules position-independent in SPU LLVM.
Optimizations include but not limited to:
* Compiling SPU functions as native functions when eligible
* Avoiding register context write-out
* Aligned stack assumption (CWD alike instruction)
2019-05-11 02:13:19 +03:00
eladash
13d8e33d9a
Return ESRCH if ppu thread ID was not found in sys_cond_signal_to
2019-05-07 08:58:07 +03:00
eladash
4e2650af91
Fix sys_rwlock_wlock timedout event
...
If the rwlock is currently acquired by a writer signaling readers is wrong and will lead to EPERM for wunlock!
Only signal blocked readers if the rwlock is currently acquired by readers
2019-05-07 08:58:07 +03:00
eladash
ca08418dc1
Fix sys_rwlock_runlock on waiting readers
...
readers can wait on the sleep queue if a writer lock has been blocked before it, in this case after runlock: writer should acquire the lock but the r's sleep queue is still not empty!
2019-05-07 08:58:07 +03:00
Megamouse
c1e245ae73
Emu: msg_dialog_frame fixup: don't reject on Close to prevent Emu.Stop()
2019-05-05 16:29:50 +02:00
Megamouse
b639584acc
Emu/Qt: Fix Boot Recent when using BootGame(add_only=true)
2019-05-05 16:29:50 +02:00
Megamouse
b0a24665e5
Emu: msg_dialog_frame fixes
2019-05-05 16:29:50 +02:00
Nekotekina
a703460fc6
SPU ASMJIT: skip some unused analyser steps
...
May improve performance
2019-05-04 19:35:13 +03:00
Nekotekina
ba1ec1d5d6
SPU analyser: remove use_ra from HBR
...
Since this is a hint instruction, we don't really use reg value here.
2019-05-04 18:33:58 +03:00
Nekotekina
45ce8db6cb
SPU Analyser: fix reg origin regression
...
Propagate phi instead of claiming new values
2019-05-04 18:29:47 +03:00
Nekotekina
4bd022f778
SPU analyser: minor logic fix and cleanup
...
Don't fill any chunk info for now (design mistake).
2019-05-03 14:18:22 +03:00
Nekotekina
6c34d7104e
SPU analyser: fix excessive workload list size
...
Typo grade; regression
2019-05-02 23:29:02 +03:00
Nekotekina
54dc617f39
SPU analyser: internal spu_itype optimization
...
Use only 1 byte for instruction type.
Flags are transformed into range comparisons.
2019-05-02 19:32:09 +03:00
Nekotekina
15bd3b8724
SPU: fix minor UB in STQD/LQD instructions
2019-05-02 18:00:49 +03:00
Nekotekina
2b4da18709
SPU LLVM: fix xfloat regression
...
It was an old bug with possible hidden use of deleted instructions.
2019-05-02 13:39:43 +03:00
Nekotekina
d48dc29e55
SPU LLVM: fix perf regression
...
Bug in the analyser was created recently in #5882 .
2019-05-02 13:39:43 +03:00
Nekotekina
69d2ea35b9
SPU: minor analyser cleanup
2019-05-02 13:39:43 +03:00
Nekotekina
a4c4ee9cb2
SPU: fix excessive cache size regression
2019-05-02 13:39:43 +03:00
Nekotekina
1bc5e27507
SPU LLVM: move reg origin search to analyser
...
Refactor SPU analyser (block_info struct).
Fill register use info (currently unused).
2019-05-01 00:37:15 +03:00
Nekotekina
1294e0d189
SPU LLVM: improve codegen in loops
...
Use a trick in check_state to improve LICM pass.
2019-05-01 00:37:15 +03:00
Nekotekina
e09c6ea4b4
SPU analyser: add spu_iflag
...
Register information about register accesses.
2019-04-30 14:33:27 +03:00
Nekotekina
716737ecf2
LLVM DSL: expression matching (alpha)
...
Implement remaining instructions.
Implement match_expr method.
Implement helper methods.
2019-04-30 14:33:27 +03:00
eladash
3bd29b8bac
Fix Unregistered HLE function access
2019-04-29 23:04:16 +03:00
eladash
ea1c9a2e17
Fix PPU Breakpoints and ppu_check_toc
2019-04-29 23:04:16 +03:00
Nekotekina
2ade3c594c
LLVM DSL: expression matching (preview 2)
...
Implement more instructions.
2019-04-25 03:33:18 +03:00
Nekotekina
8754bbd444
SPU LLVM: add match_vr<> template
...
Returns reg value only if type is compatible, avoiding bitcast.
2019-04-24 23:55:41 +03:00
Nekotekina
dd9bd1338b
SPU LLVM: add get_vrs<> template
2019-04-24 23:55:41 +03:00
Nekotekina
3e0b45719d
LLVM DSL: rewrite zshuffle, shuffle2, build
...
Add llvm_const_vector template.
2019-04-24 23:55:41 +03:00
Nekotekina
b02503963e
LLVM DSL: rewrite splat, fsplat, vsplat
...
Add llvm_const_float and llvm_splat templates.
2019-04-24 23:55:41 +03:00
Nekotekina
c83e65f29e
LLVM DSL: rewrite extract and insert
2019-04-24 23:55:41 +03:00
Nekotekina
b7b93eae13
SPU LLVM: minor bitcast cleanup
...
Remove redundant explicit constand propagation in some instructions.
2019-04-24 23:55:41 +03:00
Nekotekina
ac473eb400
Rewrite cpu_translator::rol, add fshl and fshr
...
Use new funnel shift intrinsics
2019-04-24 23:55:41 +03:00
Nekotekina
42448cf3e5
Remove cpu_translator::scarry, cpu_translator::merge
2019-04-24 23:55:41 +03:00
Nekotekina
524aac75ed
LLVM DSL: rewrite bitcast, zext, sext, trunc, select, min, max ops
...
Are made composable in expressions similar to arithmetic ops.
Implement noncast in addition to bitcast (no-op case).
Implement bitcast constant folding.
Fixed some misuse of sext<>.
2019-04-24 23:55:41 +03:00
Nekotekina
dc9118ef50
LLVM DSL refactoring
...
Properly forward value categories in expression structs.
Simplify SFINAE tests (is_llvm_expr, llvm_common_t) in global operators.
Add llvm_const_int and remove llvm_add_const, llvm_sub_const, etc.
Add llvm_ord and llvm_uno for FP comparison via >=< operators.
Replace cpu_translator::fcmp with fcmp_ord and fcmp_uno.
2019-04-24 23:55:41 +03:00
Ani
a24ede4f40
cellPad: Update vendor and product IDs
...
- Used IDs were not from the Guitar Hero instruments but in fact from the Rock Band ones. Sets the correct Guitar Hero IDs and adds the Rock Band ones on comments. TODO: Allow selecting the specific devices on the PAD Settings.
- Adds DJ Hero Turntable VID/PID.
- Adds Dance Dance Revolution Mat VID/PID.
2019-04-20 23:17:13 +01:00
eladash
3a5f4ed757
Print SPU Group ID on the debugger
2019-04-20 20:43:58 +01:00
eladash
450e2c9a0e
cellSaveData: Add missing SDK version check for setParam->reserved2 check
2019-04-20 20:43:58 +01:00
eladash
ae5a4b697e
Fix cellSaveDataListAutoSave/Load unk flags
2019-04-20 01:04:41 +03:00
eladash
1e9d3346d1
Reschedule in cellMsgDialogOpen2
2019-04-20 01:04:41 +03:00
eladash
9446bd2d3f
Handle a few more cellSaveData errors
...
* Check directory existence if setParam is NULL (dont create directory)
* Fix mask for reCreateMode
* Check a few setParam fields including reserved buffers.
* Fix sizeKb when the dir is empty except from PARAM.SFO
* Fix error checking when CELL_SAVEDATA_RECREATE_YES is specified but setParam is NULL (Doesnt do anything, simply errors)
2019-04-20 01:04:41 +03:00
eladash
6f76e34104
rsx: Fix race on clearing native_ui vs emu_requested flag
2019-04-20 01:04:41 +03:00
eladash
67f098627a
Fix sys_spu group ID
2019-04-20 01:04:41 +03:00
eladash
ff11d9a3bd
Improve scheduler control for cellSaveData
...
TODO: There are probably more spots where we should yield.
A little more at the start because PacketRead is called twice.
Dont use sys_timer_usleep because it will just call this_thread::yield() repeatedly.
2019-04-20 01:04:41 +03:00
eladash
9497270da5
Implement initial arguments error checking for cellSaveData
2019-04-20 01:04:41 +03:00
eladash
2b4bc588dc
Put missing check_state() in some places
...
Fixes a few verification failures while closing the emulator with HLE liblv2
2019-04-20 01:04:41 +03:00
eladash
f25587d24c
rsx: Write vblank semahpre, minor semaphore acquire optimization
2019-04-20 01:04:41 +03:00
Nekotekina
7865982208
Fix static_hle log channel definition
2019-04-16 23:49:18 +03:00
Nekotekina
52c589ed3d
Revert disabling AVX path in SPU verification.
...
It was experimental and builds for tests are available in history.
2019-04-16 23:49:18 +03:00
Nekotekina
9060177dbd
SPU transactions: add SSE path if AVX is not available
...
This handles hypothetical situation when AVX is disabled system-wise.
Also refactored register use, to match Windows path with Linux path.
This reduces read set a little at the cost of stack use.
2019-04-16 23:49:18 +03:00
msuih
baf42430d6
Decrease severity of sys_net_bnet_close
2019-04-16 18:39:57 +03:00
Nekotekina
136fc8cfe3
SPU ASMJIT: avoid AVX in verification (experimental)
2019-04-14 18:03:45 +03:00
Nekotekina
c1edae73c5
SPU ASMJIT: move vzeroupper a bit
2019-04-14 15:10:54 +03:00
Nekotekina
8deb20e928
SPU: write cache before compiling
2019-04-13 22:56:11 +03:00
Nekotekina
0d415407c7
sys_fs_unlink: add CELL_EISDIR check
2019-04-12 12:24:36 +03:00
Nekotekina
f40320bcae
Fix cellVdecOpen
...
Use pseudo-address in sys_ppu_thread_create calls
2019-04-11 21:20:22 +03:00
TGEnigma
38cc92ec45
Add _sys_ppu_thread_create and sys_ppu_thread_rename error checks
2019-04-11 18:14:05 +03:00
eladash
8da78c098c
SPU LLVM: Fix branch to self at start of block state check
2019-04-11 17:47:52 +03:00
eladash
eba8e2284b
SPU LLVM: Fix CFLTU
...
Clamp properly result from both sides!
TODO: Figure out whats different CreateFPToUi has from CFLTU and why it fails here.
2019-04-11 17:47:52 +03:00
eladash
969af86eba
SPU: Implement BISLED
...
DFCMGT instruction removed, it was wrong to add to begin with
ASMJIT: Fix compilation of double compare instructions, move exception to runtime instead of compiletime!
Jarves confirmed that he implemented this instruction because of that bug with asmjit only, affected God Of War 3
2019-04-11 17:47:52 +03:00
eladash
b307aff9eb
Prefetch byteswapped opcodes in ppu interpreter
2019-04-11 17:47:52 +03:00
eladash
1c462abc37
Make sure to update cia when calling in unknown hle table func access
2019-04-11 17:47:52 +03:00
eladash
3304e3b0b7
PPU LLVM: Fix STSWI and LSWI
2019-04-11 17:47:52 +03:00
eladash
f028737db8
Implement fallback for PPU LLVM
...
This matches with interpreter implementation, fixing unregistered functions in lost cases
2019-04-11 17:47:52 +03:00
eladash
a9014a8cac
ppu Fast/Precise: Fix SIMD instructions VSUM2SWS, VPKSWSS, VPKSHUS, VPKSHSS
...
Also rewrite VPKSHUS for speed.
2019-04-11 17:47:52 +03:00
eladash
e21504d52d
ppu interpreter: Improve FPCC field handling
2019-04-11 17:47:52 +03:00
eladash
aa44ef1f44
Fix default PPU nj status
...
TODO: Support it...
2019-04-11 17:47:52 +03:00
eladash
d555eeb0f4
Check start status in sys_prx_start/stop_module
2019-04-11 17:47:52 +03:00
Inviuz
52a12185a0
Initial sys_overlay
2019-04-10 23:25:09 +03:00
scribam
1d947daa81
hle: Add some more functions
2019-04-10 22:15:35 +03:00
Nekotekina
40142420c1
Implement vfs::host::unlink
...
Emulate POSIX behaviour in sys_fs_unlink.
This should allow to delete opened files transparently on Windows.
2019-04-10 13:58:12 +03:00
Nekotekina
9736773c04
Implement vfs::host::rename
...
With spurious access error workaround
2019-04-10 13:58:12 +03:00
Nekotekina
3354f068fc
PPU/SPU transactions: ease cache line interference (TSX path)
...
Touch memory on the same memory page, but different cache lines.
2019-04-10 13:58:12 +03:00
scribam
f30af3ccd2
hle: Add more missing functions
2019-04-07 23:31:15 +03:00
scribam
8dbf2638e2
hle: Add some missing functions
...
0xBA50BC23 => cellCelpEncOpenExt
0x1AC58D11 => cellHttpFlushCache
0xA39FE9DC => cellHttpEndCache
0xB4FA3111 => cellHttpInitCache
0x4A18A89E => sceNpMatchingSetRoomInfoNoLimit
0xB020684E => sceNpMatchingGetRoomInfoNoLimit
2019-04-05 17:28:10 +01:00
eladash
182054b8af
Implement sys_vm_append/return_memory
2019-03-31 14:57:21 +03:00
eladash
3c0564c9b7
Fix timer state after event queue was destroyed
...
* Hw tests show state is unaffected by external destruction of the event queue
* Minor race regarding state check fixed (can result in an undestroyable state)
2019-03-31 14:57:21 +03:00
eladash
90490f775d
Fix sys_timer_usleep specifically with 0 sleep time
...
Remove context switch, replace it with host yield() for giving some cpu time for SPUs ans RSX
2019-03-31 14:57:21 +03:00
eladash
1ed2055ec1
Fix cellVdecGetPicItem element popping behaviour
2019-03-31 14:57:21 +03:00
eladash
f2bbae9db4
Remove handle in cellVdecClose
2019-03-31 14:57:21 +03:00
eladash
8eb59271a5
Improve error checking of cellVdecOpen
...
Those are the initial argument checks done by the firmware
2019-03-31 14:57:21 +03:00
eladash
d6025c6764
Fix cellPadGetInfo port status returned
...
ASSIGN_CHANGES flag is not returned in this func.
2019-03-31 14:57:21 +03:00
eladash
47ca1b1dda
Minor optimizations in cellPad
...
- Dont bother with shared_ptr since all pad_t management is going under the pad mutex.
- Change m_pads type into std::array since its size is known
2019-03-31 14:57:21 +03:00
scribam
f15eb88f59
hle: Fix cellSysutilAvcExt module
...
And add cellSysutilAvcExtSetChatMode and cellSysutilAvcExtSetChatGroup
functions
2019-03-31 00:55:55 +03:00
scribam
1916cc1691
hle: Add cellSysmoduleUnloadModuleInternal and cellSysmoduleLoadModuleInternal functions
2019-03-30 23:52:56 +03:00
scribam
f369aeab7a
hle: Add FT_Get_X11_Font_Format function
2019-03-30 23:52:56 +03:00
scribam
0e9313d2df
hle: Add cellFontInitLibraryFreeType function
2019-03-30 23:52:56 +03:00
Nekotekina
d873802b9c
Use LLVM 9
...
Use new add/sub with saturation intrinsics
2019-03-30 01:36:48 +03:00
Nekotekina
7e0b941e9f
PPU LLVM: implement get_vrs<>() adaptor
...
Make use of structured bindings
2019-03-30 01:36:48 +03:00
Nekotekina
d77fed6105
SPU LLVM: remove wrong dead code
2019-03-29 17:00:53 +03:00
scribam
a254a203bb
hle: Add libad_async and libad_core modules
2019-03-27 21:41:44 +00:00
Nekotekina
71b88cdc82
New SPU interpreter (SPU fast)
...
Use LLVM to build SPU interpreter.
Simplify interpreter loop.
2019-03-27 20:33:44 +03:00
scribam
a9eb321814
hle: Add sceNpEulaAbort function
2019-03-26 23:19:01 +03:00
scribam
956d039415
hle: Add cellVideoPlayerUtility module
2019-03-24 19:16:49 +03:00
scribam
581b205f73
hle: Add cellPesmUtility module
2019-03-24 19:16:49 +03:00
scribam
6c40b9f3e0
hle: Add cellDtcpIpUtility module
2019-03-24 19:16:49 +03:00
scribam
d6bf18eabc
hle: Add some sceNpMatchingInt functions
2019-03-24 17:29:18 +03:00
scribam
32ae7e466c
hle: Add cellNetAoi module
2019-03-24 17:29:18 +03:00
Nekotekina
7ea04d5d76
Minor optimization in SPU analyser
...
Reduce vector copy/allocation
2019-03-23 02:43:41 +03:00
Nekotekina
4b381fbbb1
Implement spu_runtime::reset
...
To handle JIT: Out Of Memory error.
2019-03-23 02:43:41 +03:00
Nekotekina
1880a17f79
SPU recs: implement spu_runtime::find
...
Use this function to link to existing functions from branch patchpoints.
Don't compile from branch patchpoints.
2019-03-23 02:43:41 +03:00
Nekotekina
31304f4234
SPU rec: refactor some trampoline generation
...
Move branch/dispatch trampoline generation at startup.
2019-03-23 02:43:41 +03:00
Nekotekina
3794f65bb6
Add cpu_flag::jit_return
2019-03-23 02:43:41 +03:00
Nekotekina
849411693a
PPU LLVM: add MemoryManager3
...
For temporary allocations.
Add flags in jit_compiler constructor.
2019-03-23 02:43:41 +03:00
Nekotekina
466d58ccef
SPU LLVM: fix branch patchpoints
...
Forgot to passthrough 3rd arg (rip)
2019-03-23 02:43:41 +03:00
Nekotekina
e9b6beadfc
SPU LLVM: implement static branch weights
...
May help branch prediction in some cases
2019-03-13 21:14:55 +03:00
Nekotekina
388d49db80
SPU LLVM: fix SPU MMIO in TSX mode
2019-03-13 21:14:55 +03:00
Nekotekina
688aabc6c9
Add _sys_lwmutex_unlock2 syscall name
2019-03-12 23:55:13 +03:00
eladash
4a28319edf
Implement SPU page faults notifications
...
* Implement both RawSPU and threaded SPU page fault recovery
* Guard page_fault_notification_entries access with a mutex
* Add missing lock in sys_ppu_thread_recover_page_fault/get_page_fault_context
* Fix EINVAL check in sys_ppu_thread_recover_page_fault, previously when the event was not found begin() was erased and
CELL_OK was returned.
* Fixed page fault recovery waiting logic:
- Do not rely on a single thread_ctrl notification (unsafe)
- Avoided a race where ::awake(ppu) can be called before ::sleep(ppu) therefore nop-ing out the notification
* Avoid inconsistencies with vm flags on page fault cause detection
* Fix sys_mmapper_enable_page_fault_notification EBUSY check
from RE it's allowed to register the same queue twice (on a different area) but not to enable page fault notifications twice
2019-03-12 13:28:31 +03:00
eladash
a43e7c172c
Fix shared memory page flags
...
TODO: From hw testing, it seems like sys_memory_get_page_attribute and sys_rsx_context_iomap check page size a little differently
get_page_attribute() always go by area flags, sys_rsx_context_iomap checks page by the page granularity
This means that if the area page size 64k, but shared memory is mapped with SYS_MEMORY_GRANULARITY_1M
It can be mapped for rsxio, but the page attribute will indicate 64k page size :thonk:
rsxio memory is verified to need 1m pages.
2019-03-08 23:44:46 +03:00
eladash
7470388e5a
Use error_code in sys_rsx
2019-03-08 23:44:46 +03:00
eladash
26bcd0a4de
Small improvements to sys_event_flag
...
- From RE, only protocols SYS_SYNC_FIFO and SYS_SYNC_PRIORITY are valid
- Use conditional atomic op store in a few places
- Properly revert changes in sys_event_flag_set when aomic op fails
2019-03-08 23:44:46 +03:00
elad
fc253165e2
Correctness fix for RSXIOMem
...
- Make RSXIOMem volatile.
- Hint the compiler to check only once the address returned.
2019-03-08 23:44:46 +03:00
elad
b7da3ea5cd
Release ppu thread before ShowSaveDataDialog, Fixes #4031
2019-03-08 23:44:46 +03:00
elad
f272a5f779
sys_lwmutex fixup after #5680
...
sys_lwcond_wait unlocks always with the 'usual' unlocking flags
2019-03-08 23:44:46 +03:00
RipleyTom
61bd2ea799
Adds VID/PID for Guitar Hero guitar & drum
2019-03-08 17:52:48 +00:00
elad
3c9f03968c
Yield before flushing io buffers in fsync (sys_fs) ( #5506 )
2019-03-08 16:07:14 +00:00
Nekotekina
4ea76def7c
Update sys_lwmutex_lock and sys_lwmutex_unlock (liblv2 HLE)
...
Implement missing SYS_SYNC_RETRY logic
Following #5680
2019-03-06 15:09:50 +03:00
eladash
e38b7aee5a
check address in sys_rsx_context_iomap
...
* Fix 0 vm page flags to behave like 1m flags, follows c8a681e60
* check if address exists and valid for rsx io allcations (must be allocated on 1m pages)
2019-03-05 21:23:24 +03:00
Nekotekina
fb64b28886
SPU LLVM: reintroduce branch patchpoints
...
Previously only used on SPU ASMJIT, may improve perf in some cases.
Now refactored to spu_runtime::make_branch_patchpoint.
2019-03-01 00:08:20 +03:00
Nekotekina
7f6a410770
Add dummy __has_builtin macro, use rotate builtins if possible
2019-03-01 00:08:19 +03:00
Nekotekina
765d15f23f
Optimize SPU trampolines
...
Load values in EAX and reuse it if possible
2019-03-01 00:08:19 +03:00
Nekotekina
f143035af1
Fix sys_spu_thread_group_join wait condition
...
After waiting, thread group cannot be safely accessed
Following #5643
2019-03-01 00:08:19 +03:00
RipleyTom
de5379a69f
Static hle implementation
2019-02-27 22:54:59 +03:00
eladash
a22297f205
exception throwing fix in sys_lwmutex_create
...
arg6 doesnt exist, if arg4 is not negative name is discarded and treated as 0.
2019-02-27 22:16:08 +03:00
eladash
d4459af4b3
Implement _sys_lwmutex_unlock (SYS_SYNC_RETRY mode)
2019-02-27 22:16:08 +03:00
RipleyTom
ad6b0ee122
Adds class type to controller options
2019-02-27 18:13:19 +00:00
Megamouse
b107718869
sysPrxForUser: improve crash dump functions
...
this might fix some crashes that could appear in the todo logging itself
2019-02-26 21:53:59 +00:00
German
45c31a99a3
Fix true clear string container in PPUModule.cpp
2019-02-18 16:34:16 +03:00
elad
63a9421634
Fix race in sys_lwcond_wait on error code
2019-02-16 21:41:59 +03:00
Megamouse
d4888a4973
cellSysCacheMount: don't return RET_OK_RELAYED on empty cacheId
...
The system cache is supposed to be cleared but I don't think we wanna do that
2019-02-13 01:55:07 +03:00
Megamouse
4a1499e0be
cellMsgDialog: optionally make dialogs blocking and fix exit condition
...
and apply review fixes
2019-02-12 21:06:10 +03:00
Megamouse
fe79e541dd
cellGame: improve exit functions
2019-02-12 21:06:10 +03:00
Megamouse
17a5e0bc98
cellGame: add error_code
2019-02-12 21:06:10 +03:00
eladash
d6995f40c7
Fixup for sys_lwcond_signal_x error checking
2019-02-11 01:13:29 +03:00
eladash
fa647bc121
Fix race condion in sys_spu_thread_group_join
2019-02-10 18:20:24 +03:00
eladash
84d42ecb65
Add EFAULT checks to spu_thread_group_join, ppu_thread_join
...
Order of checks is based on firmware
2019-02-10 00:16:57 +03:00
eladash
0861226271
Make more use of the new atomic_t<>::release
2019-02-10 00:16:57 +03:00
eladash
e3ee481f01
Make sys_spu_thread_group_join return once per termination
2019-02-10 00:16:57 +03:00
kd-11
9ed9d7e947
overlays/osk: Implement native osk interface
2019-02-02 11:54:01 +03:00
eladash
d4a24433e8
Fix DECR mode allocations (sys_memory)
2019-01-31 16:03:38 +03:00
Nekotekina
400718dfd9
cellSaveData: try to handle occasional failures
...
Retry moving directory on FILE_ACCESS_ERROR
2019-01-31 01:08:30 +03:00
Nekotekina
58358e85dd
spu_runtime::add minor optimization
...
Use preallocated vectors in trampoline generation subroutine
2019-01-29 03:32:16 +03:00
Nekotekina
2b66abaf10
Implement atomic_t<>::release
...
More relaxed store with release memory order
2019-01-29 03:32:16 +03:00
Nekotekina
50922faac9
Remove SPUThread::jit_dispatcher
...
Use global array - save memory
Move the array to JIT memory
2019-01-29 03:32:16 +03:00
Nekotekina
4292997a01
Added jit_runtime class
...
Is a memory manager for ASMJIT, replaces asmjit::JitRuntime
Unified memory manager for ASMJIT and LLVM
Unified SPU trampoline generation
Remove previous workarounds
2019-01-29 03:32:16 +03:00
eladash
587fe421ee
Make ppu main_thread unjoinable
2019-01-25 18:04:33 +03:00
eladash
56b7581ade
Return error code in sys_ppu_thread_get_join_state
2019-01-25 18:04:33 +03:00
elad
afeacc171f
Fix spurious abort in sys_rwlock_tryrlock and sys_semaphore_trywait ( #5579 )
...
Use full cmpxchg loop to prevent occasional return of CELL_EBUSY
2019-01-22 23:10:17 +03:00
Nekotekina
4f152ad126
SPU: multithread compilation
...
Allow parallel compilation of SPU code, both at startup and runtime
Remove 'SPU Shared Runtime' option (it became obsolete)
Refactor spu_runtime class (now is common for ASMJIT and LLVM)
Implement SPU ubertrampoline generation in raw assembly (LLVM)
Minor improvement of balanced_wait_until<> and balanced_awaken<>
Make JIT MemoryManager2 shared (global)
Fix wrong assertion in cond_variable
2019-01-22 22:02:02 +03:00
Megamouse
8d5d44141e
rsx/Qt: fix some undefined behavior in progress_dialog CallAfters
2019-01-22 12:04:01 +03:00
Nekotekina
59e0296281
cellMsgDialog: fix error spam on CELL_OK
2019-01-18 16:49:17 +03:00
eladash
a11d76249d
Patch ppu main thread prio
2019-01-17 21:58:09 +03:00
elad
fc92ae4085
SPU/PPU atomics performance and LR event fixes ( #5435 )
...
* Fix SPU LR event setting in atomic commands according to hw test
* MFC: increment timestamp for PUT cmd in non-tsx path
* MFC: fix reservation lost test on non-tsx path in regard to the lock bit
* Reservation notification moved out of writer_lock scope to reduce its lifetime
* Use passive_lock/unlock in ppu atomic inctrustions to reduce redundancy
* Lock only once for dma transfers (non-TSX)
* Don't use RDTSC in reservation update logic
* Remove MFC cmd args passing to process_mfc_cmd
* Reorder check_state cpu_flag::memory check for faster unlocking
* Specialization for 128-byte data copy in SPU dma transfers
* Implement memory range locks and isolate PPU and SPU passive lock logic
2019-01-15 18:31:21 +03:00
eladash
f19fd23227
spu: Fix support for multiple lists when one is stalled
2019-01-15 02:33:22 +03:00
Megamouse
58a22d1461
cellSaveData: add error_code
2019-01-14 21:12:13 +01:00
Nekotekina
c5026f7109
cellVdec: fix minor race
2019-01-14 01:24:05 +03:00
Nekotekina
a419e98acb
Move PPU and shader cache
...
New hash-based location (already used for SPU)
Bump PPU cache version, improve naming and decrease size
Remove fs::get_data_dir
Disable boot.elf cache
2019-01-14 01:24:05 +03:00
Nekotekina
aefee04c4a
SPU analyser: fix branch to self
...
Fixed not filling the predeccessor list on BR-to-self on entry point
Version bumped (v1-tane)
Closes #5353
2019-01-14 00:01:27 +03:00
Nekotekina
74d684b57e
cellAudio: fix template arg style
...
Add constexpr if
2019-01-14 00:01:27 +03:00
Nekotekina
435f60d503
lf_queue: add iterator support
...
Allow range-for loop over an object returned by `pop_all()`
2019-01-13 14:45:36 +03:00
Nekotekina
cfdf50dcff
SPU: ensure sys_spu_thread_group_join receives correct exit status
...
Following #5334
2019-01-13 14:45:36 +03:00
Nekotekina
453344c232
cellSaveData: workaround possible issues with symlinks
...
Don't use ../ location for temporary directories
2019-01-13 14:45:36 +03:00
Nekotekina
bd9131ae1c
Implement fs::get_cache_dir
...
Win32: equal to config dir for now
Linux: respect XDG_CACHE_HOME if specified
OSX: possibly incomplete
2019-01-13 14:45:36 +03:00
Megamouse
022550a43b
cellOskDialog: use atomic_op for state operations
2019-01-12 23:39:01 +01:00
Megamouse
d7cc97433d
cellOskDialogUnloadAsync: guarantee 0 terminated return string
2019-01-12 23:39:01 +01:00
Megamouse
fce9f352a9
cellOskDialog: fix cellOskDialogAbort
2019-01-12 23:39:01 +01:00
Megamouse
f9c1b15bf4
cellOskDialog: fix cellOskDialogUnloadAsync return string
...
fixes Class of Heroes 2G
2019-01-12 23:39:01 +01:00
Rui Pinheiro
3406acd8c9
Fixups for audio PR
2019-01-12 22:22:03 +03:00
Rui Pinheiro
49fbf9bf0f
Tweaks to buffering algorithm
...
Increase untouched buffer timeout when some of the buffers have been
touched. Might improve audio quality on games that suffered from
miniscule popping even when buffering was enabled (such as DeS).
In addition, made time stretching algorithm slightly more aggressive.
Includes some other tiny tweaks as well.
2019-01-12 21:29:56 +03:00
Rui Pinheiro
48db0430d4
Misc. Tweaks
2019-01-12 21:29:56 +03:00
Rui Pinheiro
650bc0c1f2
Fix game pausing/unpausing
2019-01-12 21:29:56 +03:00
Rui Pinheiro
f17f984721
Add timeout for untouched buffers
2019-01-12 21:29:56 +03:00
Rui Pinheiro
8f6043b568
Change cellAudio diagnostic messages to Trace
2019-01-12 21:29:56 +03:00
Rui Pinheiro
67f9397746
Various fixes
...
In addition, linux builds (and ALSA/PA) now work again
2019-01-12 21:29:56 +03:00
Rui Pinheiro
4f39457858
Rewrite OpenAL backend to support new features
2019-01-12 21:29:56 +03:00
Rui Pinheiro
892deb1552
Implement basic time stretching + Tweaks
2019-01-12 21:29:56 +03:00
Rui Pinheiro
5159d3559e
Implement Audio Backend Capabilities querying
...
Also renames "AudioThread" to "AudioBackend". The new name is more
descriptive of what the class really is responsible for, since the
backends are not responsible for managing the audio thread.
NOTE: Right now only XAudio2 is supported
2019-01-12 21:29:56 +03:00
Rui Pinheiro
2addbe6be2
Implement basic cellAudio buffering
2019-01-12 21:29:56 +03:00
Megamouse
e18e9909af
cellOsk fixup
2019-01-12 08:26:04 +01:00
RipleyTom
fad80ed443
revert part of #5529
2019-01-12 06:59:07 +01:00
Megamouse
e3ea29599d
cellGame: fix some installation issues
...
fixes HAWX2 (at least until it crashes again)
2019-01-11 03:36:22 +03:00
Megamouse
e5aede7aa7
cellOskDialog: initial code for cellOskDialogSetSeparateWindowOption
2019-01-10 13:05:48 +01:00
Megamouse
17058113df
cellOskDialog: add multi-line option and handle more permutations (WIP)
2019-01-10 13:05:48 +01:00
Megamouse
4a8b30c625
cellOskDialog: cellOskDialogExtRegisterConfirmWordFilterCallback
2019-01-10 13:05:48 +01:00
Megamouse
e0ac244fed
split MsgDialogBase
2019-01-10 13:05:48 +01:00
Megamouse
d5303b0b64
add error_code to cellOskDialog and cellMsgDialog
2019-01-10 13:05:48 +01:00
Megamouse
7cc4239cc2
cellOskDialog: add message
2019-01-10 13:05:48 +01:00
Megamouse
cc30b4e5be
cellOskDialog: don't send input signals without seperate screen enabled
2019-01-10 13:05:48 +01:00
Megamouse
16f2975792
cellOskDialog: properly handle dialog states to improve param checks
2019-01-10 13:05:48 +01:00
RipleyTom
37c621ebbf
cellSysutilCheckCallback forced granularity
2019-01-03 02:15:01 +03:00
Nekotekina
7a4282b4c0
cellSysutil: drain callback queue at single step
...
This way if a new callback is registered in a process,
it will not be executed immediately in the same loop.
Remove mutex, use lock-free queue.
2019-01-03 02:15:01 +03:00
Megamouse
3b83e223d8
cellOskDialog: add some param checks
2019-01-02 15:45:51 +01:00
Megamouse
0e7fd45504
cellOskDialog: add Constants
2019-01-02 15:45:51 +01:00
Megamouse
ad5cdc38cd
cellOskDialog: implement CellOskDialogInputFieldResult
...
fixes abort and cancel
2019-01-02 15:45:51 +01:00
Megamouse
6f7b25de90
implement CELL_PAD_INFO_INTERCEPTED
2019-01-02 15:45:51 +01:00
Megamouse
a4f67ccb87
Add log messages for PPU compilation
2018-12-31 23:03:03 +03:00
RipleyTom
7ebd3bbcbf
Fixes issues where the mutex is destroyed while an unlock is happening
2018-12-31 01:39:47 +03:00
eladash
483ee5e488
Fix sys_vm_memory_map address base
2018-12-30 20:12:32 +00:00
eladash
79a6a2c7fb
Debug console emulation
2018-12-30 20:12:32 +00:00
eladash
2ea061b9c7
Set total memory size according to sdkver
2018-12-30 20:12:32 +00:00
eladash
c0eb4965f2
mmapper_allocate_memory improvement
...
Added cases 0 for allocation granularity size,
alike sys_memory_allocate, the alignment of this case is 1mb.
2018-12-30 20:12:32 +00:00
RipleyTom
c6e47a573d
cellVideoOutConfigure minor fix.
2018-12-30 17:58:20 +03:00
eladash
26d47afec6
hle gcm: Fix cellGcmGetReportDataAddressLocation
...
* Never return NULL (also apllies to similar functions)
* Base offset is 0x0e000000 for main location
* Default location is LOCAL
Info was taken from disasm of gcm
2018-12-30 15:04:59 +01:00
RipleyTom
aa306dd356
Trophy changes
2018-12-27 19:11:51 +01:00
eladash
4b65c3943c
Fix sys_semaphore_post count check
2018-12-26 23:03:27 +03:00
eladash
653a4ef0df
Set group status INIT on last thread stopped
...
this fixes the group status after sys_spu_thread_exit when not joining the spu group
2018-12-25 19:59:41 +03:00
scribam
7c74bafaf3
sceNp: improve sceNpManagerGetNetworkTime function ( #5451 )
2018-12-25 17:13:11 +03:00
Nekotekina
d7be0a96f3
SPU LLVM: approximate xfloat option
...
Adapt previous SPU ASMJIT changes made by @kd-11
FM, FMA, FNMS, FMS are approximated.
FCGT, FCMGT are accurate.
2018-12-24 16:04:46 +03:00
Nekotekina
f750b4c420
cellSaveData: try to address #5415
2018-12-24 16:04:46 +03:00
Nekotekina
522f5ea645
Fix cellFsGetFreeSize (following #5304 )
...
Simplify device name extraction
2018-12-24 16:04:46 +03:00
kd-11
9c46386dd4
rsx: Check av configuration when selecting display buffers!
...
- Some applications have mismatch between video output configuration and display buffer sizes
2018-12-24 09:05:19 +03:00
isshininu
9717e19be2
sceNpTrophy: use SCE_NP_TROPHY_STATUS_INSTALLED instead of SCE_NP_TROPHY_STATUS_NOT_INSTALLED
...
* Update sceNpTrophy.cpp
* Revert "Update sceNpTrophy.cpp"
* Update sceNpTrophy.cpp
* Update sceNpTrophy.cpp
2018-12-22 13:53:38 +01:00
eladash
69fc1f2613
Added CAMERA_NOT_INIT checks for no camera setting
2018-12-20 08:52:09 +01:00
Megamouse
6b1d80ec25
cellCamera: fix read_mode
2018-12-20 08:02:44 +01:00
Megamouse
bc3ab7a9d9
Input: Enable In-Game Pad Config Reset
2018-12-17 19:41:18 +01:00
eladash
fd894d4c69
hle gcm: Fix cellGcmGetNotifyDataAddress
2018-12-15 19:40:18 +03:00
eladash
8cbaa8627c
Do not rely on cellPadInit in native ui
2018-12-15 13:51:16 +01:00
RipleyTom
077e710e3a
sys_fs_fcntl with parameter 0xC0000002 should extract device path from the given path and use that to gather free space information
2018-12-10 14:24:07 +03:00
Nekotekina
d6afba96f1
cellSaveData: fix 'Already exists' error
2018-12-10 01:43:47 +03:00
eladash
fb8302817f
ppu: Set link unconditionally
2018-12-10 01:34:02 +03:00
RipleyTom
5207b00973
Extra Handling of result value of funcStat CB.
2018-12-08 18:44:00 +03:00
elad
90265edfcd
SPU MFC: avoid copying of the lockline onto the stack in putllc/putlluc ( #5392 )
2018-12-04 21:09:55 +03:00
kd-11
504ab5a6d4
rsx: Minor cleanup to silence stupid compiler warnings
2018-12-03 20:01:23 +03:00
scribam
24a8d0aeef
sceNp: add SCE_NP_ERROR_ID_NOT_FOUND for sceNpBasic*Entry* functions
2018-12-03 15:26:29 +03:00
kd-11
e01d2f08c9
rsx: Refactor FIFO
...
- Removes fifo structures from common RSXThread
- Sets up a dedicated FIFO controller
- Allows for configurable queue optimizations
2018-11-30 23:51:25 +03:00
Nekotekina
96cabeadff
Rewrite condition variables
...
Implement helper functions balanced_wait_until and balanced_awaken
They include new path for Windows 8.1+ (WaitOnAddress)
shared_mutex, cond_variable, cond_one, cond_x16 modified to use it
Added helper function utils::popcnt16
Replace most semaphore<> with shared_mutex
2018-11-29 01:30:05 +03:00
Nekotekina
f442a8a84c
SPU TG: add thread group stop counter
...
Fix possible race condition introduced by waiting on `running` value
2018-11-27 23:37:26 +03:00
Nekotekina
febe4d4a10
Implement class cond_x16
...
Use as reservation notifier
Limited to 16 threads but allows more precise control of contention
2018-11-26 00:23:29 +03:00
Nekotekina
7f1cbb1136
Fix 16 bit audio mode
...
Pointed by @ruipin, some backends may be affected
Reuse float buffer for conversion result
2018-11-24 02:55:29 +03:00
eladash
4baa159523
cellFsOpen flag fix
2018-11-24 02:54:48 +03:00
eladash
3c7f02d99d
Fix libcamera regression
2018-11-19 19:05:39 +03:00
Nekotekina
65ca934452
cellSaveData: fix truncation size (regression)
2018-11-17 14:40:11 +03:00
Nekotekina
12ceceff19
cellSaveData: restore atime/mtime for unmodified files
2018-11-17 14:40:11 +03:00
isJuhn
225310e04b
Add null alloc_addr checks to sys_memory_allocate and sys_memory_allocate_from_container
2018-11-16 18:37:07 +00:00
RipleyTom
f4fb5200a0
cellVdecGetPicture accurate error checking
2018-11-15 20:06:49 +03:00
Nekotekina
0044eb44e2
Cleanup after #5310 (SPU thread groups)
...
Move lambda into a cpu_stop()
Use running thread counter to synchronize with sys_spu_thread_group_join()
Use SPU_STATUS_STOPPED_BY_STOP exclusively for sys_spu_thread_exit() as before
Remove unnecessary waiting in sys_spu_thread_group_exit()
Rollback some minor unnecessary changes
Use shared_mutex in SPU TG
2018-11-14 12:50:24 +03:00
RipleyTom
0e0a82e536
Ensures threads are stopped in join
2018-11-13 10:19:28 +03:00
eladash
2e1aec4de8
Implement sys_spu_thread_tryreceive_event
2018-11-12 21:12:33 +03:00
RipleyTom
fada8b6594
Increases stack allocation for callbacks.
2018-11-12 15:09:26 +03:00
eladash
57b7892de6
Fix typo in sys_fs_mkdir
...
create_path is a less resticted version of create_dir, it doesnt check for EEXIST for one.
2018-11-12 13:28:58 +03:00
Nekotekina
2fd384ae95
SPU LLVM: check state in every callable chunk
...
It's often redundant but may be necessary
2018-11-09 16:19:59 +03:00
eladash
90f816595a
Fix cellPadGetData
...
* Remove complete buffer clear
* If pressure sensitivity option is not specified, write zeroes (should this be handled from our actual controller handler?)
* Check sensor setting before reporting changes
2018-11-07 15:46:51 +03:00
eladash
3332a10052
ppu: Fix threads scheduler
...
*Set priority under a lock
*Fix yield command making threads going out of scheduler control by removing it from the queue (not a bug that affects compatibility)
2018-11-07 13:06:29 +03:00
eladash
3fd17e43a3
lv2: Fix lwcond_queue_wait lock acquiring
2018-11-07 13:06:29 +03:00
eladash
3faaf9e7fb
lv2: Fix lwmutex locking
2018-11-07 13:06:29 +03:00
eladash
777f36e604
Fix error code checking of sys_lwcond_signal_x
2018-11-07 13:06:29 +03:00
Nekotekina
488928eca2
Fix SPU STOP instruction
...
Check thread state after STOP instruction
2018-11-05 14:35:50 +03:00
Nekotekina
f06e6be2c1
Disable npc update for SPU thread groups
2018-11-05 13:14:11 +03:00
Nekotekina
eaa17b7f7c
cellSaveData: anti-corruption precautions
...
Try to commit changes atomically
2018-11-05 13:14:11 +03:00
Nekotekina
6104685ad6
Implement cond_one sync primitive
...
Change futex() args to use unsigned int
2018-11-05 13:14:11 +03:00
eladash
43b75ccf04
cellGame: Add missing nullptr checks
...
if the param is null pointer, the library simply skips writing into it. also fix the order of writes.
2018-11-02 19:47:37 +03:00
eladash
3a7f5b970f
ppu: Fix stack base
2018-11-02 02:16:29 +03:00
eladash
2058d024ce
Fix cellGcmInit (workaround)
2018-10-28 20:09:09 +03:00
Dennis Luxen
36d4614d12
Fix a warning that shift overflows data type width ( #5116 )
2018-10-23 18:49:01 +03:00
eladash
5ee351234c
rsx-capture: unbreak
2018-10-23 18:02:03 +03:00
eladash
d14c8a03b3
typo fix
2018-10-20 22:27:48 +03:00
msuih
56ea45f9d5
Add setting for master volume
2018-10-20 16:35:01 +03:00
Nekotekina
1b37e775be
Migration to named_thread<>
...
Add atomic_t<>::try_dec instead of fetch_dec_sat
Add atomic_t<>::try_inc
GDBDebugServer is broken (needs rewrite)
Removed old_thread class (former named_thread)
Removed storing/rethrowing exceptions from thread
Emu.Stop doesn't inject an exception anymore
task_stack helper class removed
thread_base simplified (no shared_from_this)
thread_ctrl::spawn simplified (creates detached thread)
Implemented overrideable thread detaching logic
Disabled cellAdec, cellDmux, cellFsAio
SPUThread renamed to spu_thread
RawSPUThread removed, spu_thread used instead
Disabled deriving from ppu_thread
Partial support for thread renaming
lv2_timer... simplified, screw it
idm/fxm: butchered support for on_stop/on_init
vm: improved allocation structure (added size)
2018-10-19 22:22:35 +03:00
Nekotekina
430e2243ac
Fix audio_thread buffer deallocation race
2018-10-19 22:22:35 +03:00
Nekotekina
73d35b0236
Remove CALL_FUNC, implement ppu_execute<>()
2018-10-19 22:22:35 +03:00
scribam
8540399ecb
ppu-interpreter: improve vminfp instruction
2018-10-12 21:30:14 +03:00
elad
623f1b35f6
rsx_capture/gcm: Fix tile binding ( #5246 )
...
* gcm: Fix tile offset setting
highest bit signifyies location, so ignore that while reading the offset.
* rsx-capture: Fix tile binding
fixes division by zero when dividing by pitch when the tile is not bound.
* rsx-capture: Fix zcull binding
2018-10-12 19:05:08 +03:00
scribam
39272eef45
ppu-interpreter: improve vsl/vsr instructions
2018-10-08 00:15:26 +03:00
scribam
cc846eb670
ppu-interpreter: improve fnmadd/fnmadds instructions ( #5183 )
...
* ppu-interpreter: improve fnmadd instruction
* ppu-interpreter: improve fnmadds instruction
2018-10-04 00:49:19 +03:00
Megamouse
49e5212a8f
RSX/Overlays: Add option for japanese button layout
2018-10-03 23:08:33 +02:00
eladash
4174d7274d
sys_rsx: fix log spam
2018-10-03 20:57:46 +03:00
Nekotekina
1b740995a4
Refactor audio_thread (g_idm)
2018-10-02 23:26:54 +03:00
Nekotekina
1456678316
Refactor audio/camera/mic threads
2018-10-02 02:22:26 +03:00
Nekotekina
da6ce80f4f
Make vm::get_super_ptr return contiguous memory
...
Cleanup RSX code complexity
2018-09-27 23:37:13 +03:00
Nekotekina
306f95a9ae
New named_thread template (preview)
...
Old class named_thread renamed to old_thread
It's too hard to move in a single commit
2018-09-27 14:04:16 +03:00
Nekotekina
4ef384a161
Fix cellVdecClose
...
Thanks Micaelis#6971
2018-09-27 14:04:16 +03:00
Nekotekina
b2f29cd4d4
LLVM: remove false alarm errors
...
Writable sections ARE supported
2018-09-27 12:16:43 +03:00
Nekotekina
a8a8cd88a0
Implement lf_queue<>, lf_value<>
...
lf_queue<>: unbound FIFO queue with dynamic linked-list
lf_value<>: concurrently-assignable value readable without locking at the cost of memory (using dynamic linked list)
Add atomic_t<>::compare_exchange
2018-09-27 12:16:43 +03:00
kd-11
a3d44b5e1f
rsx: Cleanup changes for the flip patch
2018-09-24 16:44:02 +03:00
Jake
699eadc84f
rsx: Move render flip from rsx queue command to flip command
2018-09-24 16:44:02 +03:00
eladash
1a6c819176
cellgcm: Fix SET_REFERENCE initial value
2018-09-20 01:05:40 +03:00
Nekotekina
dce14a359a
Rename lv2_spu_group::num to max_num
2018-09-19 14:15:15 +03:00
eladash
05cd3712a3
spu: Fix MMIO index checking
2018-09-17 17:24:54 +03:00
Nekotekina
b94e98aed5
Rewrite sys_fs_opendir
...
Rewrite lv2_dir object
Support split files and mount points
2018-09-15 17:18:40 +03:00
Nekotekina
c5676e5649
Remove thread_ctrl::atexit
...
It was only a workaround for poor C++11 thread_local support
2018-09-15 17:09:56 +03:00
Nekotekina
f2229a5f53
PPU reservations: ensure aligned atomic ops
...
Store aligned 64 bits to ppu.rdata
Don't save reservation size
2018-09-15 17:09:56 +03:00
Nekotekina
e8b5555630
Rewrite vfs::get and vfs::mount
...
Preprocess . and .. correctly
Don't use recursive locking
Also use std::string_view
Fix format system for std::string and std::string_view
Fix fmt::merge for std::string_view
2018-09-15 17:09:56 +03:00
Megamouse
ed7012c9db
cellKb/Qt: Improve basic keyboard
...
Sadly the shift in Qt is a bit counter productive.
You'll have to hack another key as shift until i figured it out
2018-09-13 22:01:30 +02:00
eladash
cd11ae5d8b
ppu: Fix extreme reservation corner case
2018-09-12 23:17:53 +03:00
scribam
f294729b28
ppu: improve lvebx/lvehx/lvewx instructions
2018-09-11 21:20:52 +03:00
Nekotekina
2226125728
atomic_t<>: remove inline assignment
...
Add atomic_op/fetch_op overloads with template argument (may be removed in future)
Remove args... in atomic_op (capturing lambda is preferred)
2018-09-09 12:59:24 +03:00
Nekotekina
3ac1b46df2
Add option "HLE lwmutex"
...
Replaces lwmutex/lwcond implementation with alternative one
2018-09-09 01:02:19 +03:00
Alex James
5237779136
cellCamera: Fix check_dev_num call in cellCameraOpenEx
2018-09-08 20:07:10 +03:00
Nekotekina
fb5cdf9769
atomic_t<>: extend fetch_op to support cancellation
...
Use std::invoke inside atomic_op/fetch_op
Remove op_fetch because it's easily replaced
Add fetch_dec_sat algorithm (conditional decrement)
2018-09-08 00:32:04 +03:00
Nekotekina
ed9fb8405b
Move rotate/cntlz/cnttz helpers to Utilities/asm.h
2018-09-08 00:32:04 +03:00
Nekotekina
ee96807305
Remove explicit_bool_t, ignore, multicast<>
...
Remove vm::ptr operator %
This was a bad idea but explicit_bool_t was created almost for it
Other removed types are unused and have little to no meaning
2018-09-08 00:32:04 +03:00
Nekotekina
99ffc3fca9
Use std::invoke_result_t
...
Also simplify idm code
2018-09-08 00:32:04 +03:00
Nekotekina
d750e955c3
Use std::uncaught_exceptions()
...
Also remove wrong attributes
2018-09-08 00:32:04 +03:00
Ofek
d7b0344091
Fix trophy regression
...
Hopefully
Correct status order
2018-09-07 20:04:37 +03:00
Zion Nimchuk
46812d46ba
better stub sceNpUtilBandwidthTestGetStatus
2018-09-07 12:38:51 +03:00
scribam
d7bb59cd99
c++17: use std::size
2018-09-06 13:15:59 +03:00
scribam
7724161c14
c++17: use std::clamp
2018-09-06 13:15:59 +03:00
scribam
02ba529eea
sys_usbd: add sys_usbd_event_port_send function
2018-09-05 19:53:09 +03:00
Nekotekina
ca5158a03e
Cleanup semaphore<> (sema.h) and mutex.h (shared_mutex)
...
Remove semaphore_lock and writer_lock classes, replace with std::lock_guard
Change semaphore<> interface to Lockable (+ exotic try_unlock method)
2018-09-03 23:00:36 +03:00
Nekotekina
5e556a87ff
Adjust cellMic log levels
2018-09-03 21:40:36 +03:00
Nekotekina
ce4c4696dd
Try to get rid of SIZE_32 macro
2018-09-03 21:40:36 +03:00
Nekotekina
7bccdbf157
Make vm::var unmoveable
...
Fix bugs with discarding vm::make_var result
2018-09-03 21:40:36 +03:00
Nekotekina
8abe6489ed
Mega-cleanup for atomic_t<> and named bit-sets bs_t<>
...
Remove "atomic operator" classes
Remove test, test_and_set, test_and_reset, test_and_complement global functions
Simplify atomic_t<> with constexpr if, remove some garbage
Redesign bs_t<> to use class, mark its methods constexpr
Implement atomic_bs_t<> for optimizations
Remove unused __bitwise_ops concept (should be in other header anyway)
Bitsets can now be tested via safe bool conversion
2018-09-03 21:40:36 +03:00
Nekotekina
69f0ad0d68
Remove ALIGN_32 macro
...
It's never used in expressions like SIZE_32(T) * n, so it doesn't help to fix any warning issued due to truncation.
2018-09-03 21:40:36 +03:00