Commit graph

1212 commits

Author SHA1 Message Date
Eladash cdd6840826 Savestates/SPU: Complete fix for saving sys_spu_thread_receive_event 2022-07-12 15:15:42 +03:00
Eladash befd7ceb89 Savestates/sys_spu: Minor fix in saving sys_spu_thread_receive_event 2022-07-10 14:19:59 +03:00
Vestrel 98b730c806
Audio: device switching and channel count detection (#12246) 2022-07-08 17:13:38 +02:00
Nekotekina 4b787b22c8 Implement FN (lambda shortener)
Useful for some higher order functions.
Allows to make short lambdas even shorter.
2022-07-08 14:47:41 +03:00
Eladash 3a9928de65 Savestates: Log file descriptor information 2022-07-08 12:57:43 +03:00
Eladash 1fd5fb2f7e Savestates: Fix minor race with LV2 timers 2022-07-08 12:57:43 +03:00
Eladash 5f8f9e33f1 RSX/Savestates: Replace GCM hack with a proper fix 2022-07-08 12:57:43 +03:00
Eladash f0c71ae2ae Savestates: Fix saving sys_event_queue_destroy 2022-07-08 12:57:43 +03:00
Eladash d8f3029952 Log LV2 periodic timers 2022-07-06 19:43:25 +03:00
Eladash 09c28f75b3 Savestates: Fix LV2 timers (fixes audio in some games) 2022-07-06 19:43:25 +03:00
Eladash b692108f1e Savestates: HLE state saving POC in sys_lwmutex 2022-07-06 19:43:25 +03:00
Eladash bd9ba7ef1f Remove incorrect Emu.IsStopped() checks 2022-07-05 08:25:36 +02:00
Eladash a015bd1ebd Savestates: Add missing position placement 2022-07-05 08:25:36 +02:00
Eladash 3fc2194fd5 Savestates: Fix zombie PPU threads saving 2022-07-05 08:25:36 +02:00
Elad Ashkenazi fcd297ffb2
Savestates Support For PS3 Emulation (#10478) 2022-07-04 16:02:17 +03:00
Eladash f66256cc13 rsx: PS3 Native frame limiter improvements, add Infinite frame limiter
* Do not wait on DEVICE 0x30 semaphore, it seems like it is something to do with queue command synchronization.
 - This also fixes cellGcmSetFlipWithWaitLabel which is built specifically to enable accurate RSX flipping time, its waiting command is confirmed to be placed **AFTER** DEVICE 0x30 waiting.
* Fix default vsync state to be enabled. (and set it to enabled in cellGcmSetVBlankFrequency as well)
* Add experimental "Infinite" frame limiter mode.
* Fix spurious enabling of second vblank.
2022-06-25 15:30:41 +02:00
Nekotekina ea23525f66 sys_fs: Add mountpoint for /dev_ps2disc 2022-06-24 19:55:44 +03:00
Eladash 64399d45c1 vm: Make falloc return value bool
Allow to check properly for the success of 0 address allocation.
2022-06-22 21:01:37 +03:00
Eladash 71e07dc6c7 IdManager.h: Improvements
* Ensure ::PtrSame<T, Derived> is true.
* Allow id_base, id_step and id_count to be of enumeration type.
* Fix potential deadlock in kernel explorer.

idm::select:
* Allow to select multiple inherited object types for idm::select.
* Allow function reference types. (they don't allow access to operator() directly, use deducing std::function constructor instead)
* Ensure ::is_same_ptr<T, object_type> is true.
2022-06-22 17:24:47 +03:00
Jeff Guo cefc37a553
PPU LLVM arm64+macOS port (#12115)
* BufferUtils: use naive function pointer on Apple arm64

Use naive function pointer on Apple arm64 because ASLR breaks asmjit.
See BufferUtils.cpp comment for explanation on why this happens and how
to fix if you want to use asmjit.

* build-macos: fix source maps for Mac

Tell Qt not to strip debug symbols when we're in debug or relwithdebinfo
modes.

* LLVM PPU: fix aarch64 on macOS

Force MachO on macOS to fix LLVM being unable to patch relocations
during codegen. Adds Aarch64 NEON intrinsics for x86 intrinsics used by
PPUTranslator/Recompiler.

* virtual memory: use 16k pages on aarch64 macOS

Temporary hack to get things working by using 16k pages instead of 4k
pages in VM emulation.

* PPU/SPU: fix NEON intrinsics and compilation for arm64 macOS

Fixes some intrinsics usage and patches usages of asmjit to properly
emit absolute jmps so ASLR doesn't cause out of bounds rel jumps. Also
patches the SPU recompiler to properly work on arm64 by telling LLVM to
target arm64.

* virtual memory: fix W^X toggles on macOS aarch64

Fixes W^X on macOS aarch64 by setting all JIT mmap'd regions to default
to RW mode. For both SPU and PPU execution threads, when initialization
finishes we toggle to RX mode. This exploits Apple's per-thread setting
for RW/RX to let us be technically compliant with the OS's W^X
    enforcement while not needing to actually separate the memory
    allocated for code/data.

* PPU: implement aarch64 specific functions

Implements ppu_gateway for arm64 and patches LLVM initialization to use
the correct triple. Adds some fixes for macOS W^X JIT restrictions when
entering/exiting JITed code.

* PPU: Mark rpcs3 calls as non-tail

Strictly speaking, rpcs3 JIT -> C++ calls are not tail calls. If you
call a function inside e.g. an L2 syscall, it will clobber LR on arm64
and subtly break returns in emulated code. Only JIT -> JIT "calls"
should be tail.

* macOS/arm64: compatibility fixes

* vm: patch virtual memory for arm64 macOS

Tag mmap calls with MAP_JIT to allow W^X on macOS. Fix mmap calls to
existing mmap'd addresses that were tagged with MAP_JIT on macOS. Fix
memory unmapping on 16K page machines with a hack to mark "unmapped"
pages as RW.

* PPU: remove wrong comment

* PPU: fix a merge regression

* vm: remove 16k page hacks

* PPU: formatting fixes

* PPU: fix arm64 null function assembly

* ppu: clean up arch-specific instructions
2022-06-14 15:28:38 +03:00
RipleyTom da6434a65a
Implements sys_fs_fcntl 0xC0000008 & 0xC000001A (#11957) 2022-06-11 13:12:42 +01:00
Megamouse 2a1e3b2b77 sys_rsxaudio: use max channel count from configured sound_modes 2022-06-09 18:59:13 +02:00
Megamouse 61823a5d62 sys_rsxaudio: only update config if the fxo is initialized 2022-06-09 18:59:13 +02:00
Megamouse ba96c6f3bb cellAudioOut: properly implement downMixer
If the PS3 downMixer is enabled, the game uses 8 channel input and 2 or 6 channel output
2022-06-09 18:59:13 +02:00
Megamouse 8e667e69f6 initial cellGameThemeInstall and cellGameThemeInstallFromBuffer 2022-06-07 07:37:30 +02:00
Eladash f9bc7458d4 rsx: Resurgence of HLE GCM 2022-06-06 12:56:25 +02:00
Megamouse e9ba6fd034 Qt: use unique_ptr for Ui objects. Should fix some mem-leaks 2022-06-05 19:07:03 +02:00
Elad Ashkenazi 9bb7e8d614
rsx: Implement atomic FIFO fetching (stability improvement) (non-default setting) (#12107) 2022-06-04 15:35:06 +03:00
Megamouse 3402835c8e cellAudioOut: apply review fixes, add some comments 2022-06-02 13:12:04 +02:00
Megamouse 72e1e242a3 cellAudio: use format instead of downmix 2022-06-02 13:12:04 +02:00
Megamouse d47f1ef406 cellAudio: Implement application based downmix settings 2022-06-02 13:12:04 +02:00
Vestral 5b0badc215 sys_rsxaudio: timer fix 2022-05-29 14:59:12 +02:00
Eladash dd4722fc1f rsx: Fix second VBLANK time
Turns out that both VBLANK time and flip time clock at 80Mhz which is MFTB rate, just that cellGcmGetLastFlipTime is missing conversion to microseconds, so odd.
2022-05-29 14:23:28 +02:00
Eladash eec27f0e89 Revert "rsx: Fix FLIP time"
This reverts commit 256eb17ae5.
2022-05-29 14:23:28 +02:00
Eladash 256eb17ae5 rsx: Fix FLIP time 2022-05-28 13:00:42 +02:00
RipleyTom aaef4a2d5b More verbose errors in nt_p2p_port 2022-05-27 08:56:39 +02:00
Eladash 27b28cf6ec sys_spu: Fix spu_thread_group_terminate deadlock 2022-05-26 18:04:52 +03:00
Eladash a9a1204ab9 sys_rsx: Full reset of flip semaphore 2022-05-25 17:36:28 +03:00
Eladash 56f95934f5 Fix cellVdec regression to be harmonized with the new interrupts model 2022-05-25 17:36:28 +03:00
Eladash 961d41d0bd RawSPU: Reinvoke pending interrupts if missed 2022-05-25 11:46:51 +03:00
Vestral 608f823516 sys_rsxaudio: Add id to kernel explorer and some fixes 2022-05-23 13:10:46 +02:00
RipleyTom 3dc9a8b980 fix lv2_socket_native::accept 2022-05-23 07:36:51 +02:00
kd-11 d52bb78d2c rsx: Trivial non-blocking display synchronization 2022-05-21 16:35:35 +03:00
kd-11 e9bf3e13d0 rsx/zcull: Pause the main thread before flushing reports 2022-05-20 16:29:27 +03:00
kd-11 34220ec447 lv2: Make some struct declarations uniform 2022-05-20 16:29:27 +03:00
Eladash 7ddeb0d00f Implement sys_process_exit3 2022-05-19 13:59:52 +03:00
Eladash 524da5dc54 LV2: Memory state post-exitspawn fixes
* Fix memory capacity if SDK version of the following executable differs from the original process'.
* Keep user memory containers, they are not freed at exitspawn!

Hw test 4bf60023ee
2022-05-13 13:15:07 +03:00
Megamouse e494fc04e5 sceNp: add some constants 2022-05-10 21:55:35 +02:00
Megamouse a538f655be sys_fs_fcntl: hook up usb device info 2022-05-10 19:39:35 +02:00
RipleyTom 02d22dca95 Add Top Shot Elite controllers to whitelist 2022-05-05 22:33:50 +02:00
RipleyTom ce48d880d9 Fix for device2host control transfers 2022-05-05 19:24:01 +02:00
Vestrel d1e468fefb
sys_rsxaudio: Initial implementation (#11907) 2022-05-05 15:47:44 +02:00
RipleyTom 0ac90ac395 sys_net: ensures return from raw socket calls 2022-05-05 14:37:54 +02:00
Eladash f9a62667cf SPU/PPU Loader: Implement linker/PS3 compiler executable files loading 2022-05-03 20:47:36 +03:00
Nekotekina 5c1f79ab26 vm: remove g_mutex, use g_range_lock instead
Simplification and performance improvements.
2022-05-02 10:29:28 +03:00
Eladash 7329fa9cf5 TRPLoader: Use std::string_view 2022-04-25 20:15:10 +02:00
RipleyTom 563af4211a sys_net: Fix race between dnshook and nc 2022-04-17 00:06:21 +02:00
RipleyTom 895af3c3ab
sys_net: SYS_NET_ENETDOWN for offline dns rqsts (#11822) 2022-04-16 13:00:04 +01:00
Eladash 1d51f3af0c RSX-Debugger: Implement backwards scrolling
* Use 2 points of known true RSX code roots and follow them in order to peek at the current section of valid RSX code:
These roots are: current RSX instruction address and the last targeted address by a branch instruction.
2022-04-15 22:34:51 +03:00
RipleyTom 26d8120168 sys_net fixes and extra logging 2022-04-15 19:43:23 +02:00
RipleyTom d6b0263144 sys_net fixes
Fix lv2_socket_p2ps::connect
Fix sys_net_bnet_poll
2022-04-14 09:18:58 +02:00
RipleyTom 91768c025c Add some error handling to sys_usbd 2022-04-14 08:26:23 +02:00
RipleyTom 4d26535758 sys_net: bind & getsockname accuracy 2022-04-12 08:58:17 +02:00
RipleyTom 4087b4e6b9 sys_net: fix dns redirection 2022-04-10 15:12:33 +02:00
RipleyTom f8ea50caae sys_net: Fix return values being tagged as errors 2022-04-10 11:15:41 +02:00
RipleyTom c06cb4664a Various sys_net improvements
Implement P2PS select
Adjust P2P sendto return value
2022-04-09 21:56:53 +02:00
RipleyTom 855b23b3fe re-add scope to sys_net_bnet_poll 2022-04-09 20:24:08 +03:00
RipleyTom 72b2876b6a
sys_net refactor (#11740) 2022-04-09 14:51:22 +02:00
RipleyTom a4d715e25d Warning Fixes 2022-03-23 19:35:10 +01:00
Eladash e39797d860 Fix sys_fs_close FD state logging 2022-02-16 18:09:13 +03:00
Megamouse d172b9add6 Rename CallAfter to CallFromMainThread 2022-02-07 19:42:08 +01:00
RipleyTom 987166f4da Fix IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP 2022-02-06 20:37:12 +01:00
Eladash e951c619c5
Implement Emulator::GracefulShutdown() 2022-02-05 11:49:29 +01:00
RipleyTom 58fdf58150 Force close socket in sys_net_bnet_close 2022-01-17 21:27:20 +01:00
Nekotekina 580bd2b25e Initial Linux Aarch64 support
* Update asmjit dependency (aarch64 branch)
* Disable USE_DISCORD_RPC by default
* Dump some JIT objects in rpcs3 cache dir
* Add SIGILL handler for all platforms
* Fix resetting zeroing denormals in thread pool
* Refactor most v128:: utils into global gv_** functions
* Refactor PPU interpreter (incomplete), remove "precise"
* - Instruction specializations with multiple accuracy flags
* - Adjust calling convention for speed
* - Removed precise/fast setting, replaced with static
* - Started refactoring interpreters for building at runtime JIT
*   (I got tired of poor compiler optimizations)
* - Expose some accuracy settings (SAT, NJ, VNAN, FPCC)
* - Add exec_bytes PPU thread variable (akin to cycle count)
* PPU LLVM: fix VCTUXS+VCTSXS instruction NaN results
* SPU interpreter: remove "precise" for now (extremely non-portable)
* - As with PPU, settings changed to static/dynamic for interpreters.
* - Precise options will be implemented later
* Fix termination after fatal error dialog
2022-01-15 06:48:04 +03:00
Vestrel 1adc408ad7
More sys_uart packets (#11332)
* Additional sys_uart packets added
2022-01-10 03:43:54 +03:00
clienthax 350257e1a4 Fcntl 0xc0000007, 0xc0000015, 0xc000001c 2022-01-04 22:47:06 +03:00
clienthax 6837370a62 Handle SYS_NET_IPPROTO_IP get/setsockopt
Improve net logging.

Should allow latest vsh to load (Depending on windows version apparantly..)
2021-12-27 20:58:09 +03:00
Eladash 6ee9d0f35f sys_rsx: Outlaw mapping sys_vm memory to RSX IO address-space 2021-12-25 02:22:49 +03:00
DH 2981867375 sys_spu_thread: Removed unused field access 2021-12-02 21:36:57 +03:00
Eladash 0ab36ef44d
sys_spu: Implement SPU image segment info checks (#11211) 2021-12-02 13:17:10 +03:00
Megamouse 474baca6d8 rsx: default initialize RsxDisplayInfo 2021-12-01 21:55:53 +01:00
RipleyTom 4fe17fcecf
sys_usbd improvements (#11202) 2021-11-27 01:49:35 +00:00
RipleyTom 5e158bd3f2 Impl sys_usbd_get_device_location 2021-11-25 00:53:00 +01:00
clienthax 2b924175aa
Emulated v406 usio 2021-11-24 21:59:48 +01:00
Vestrel 37a722cc1d
Audio backend improvements
Callback based audio update.
Upgraded common backend interface.
Added Cubeb backend.
Support multiple audio providers.
Dropped pulse, alsa, openal backends.
2021-11-24 19:41:05 +01:00
Eladash c52d447381 sys_fs: Place all path-format checks upfront, implement more checks 2021-11-22 21:03:07 +03:00
Eladash f7b55ec8d4 lv2: Add missing reservation disowning in lv2_obj::yield 2021-11-22 14:48:34 +03:00
Megamouse 0d7b7585a8 Some typo/warning fixes 2021-11-16 09:31:16 +01:00
Eladash cfe08de951
Account empty EDAT (#11146)
* Improve sys_fs_open logging
2021-11-14 02:15:27 +03:00
Eladash 48ad959697
sys_event: Fix PPU queue forced uproot of waiters (#11147) 2021-11-13 20:22:54 +03:00
RipleyTom c194804fec NP: Implement sceNpBasicGetFriendListEntry 2021-11-08 13:10:40 +03:00
RipleyTom d41e405420 NP: Cache Manager + improvements 2021-11-08 13:10:40 +03:00
RipleyTom 516cb959cb rpcn: new allocator + refactoring of np_handler 2021-11-08 13:10:40 +03:00
Nick Renieris b70f08d850 The Velocity Improvements: RoomData/RoomMemberData commands & fixes
modules/np2: Correct some SceNpMaching2 ptr type endianness
np/handler: Use STL .contains() method
Ignore USECRYPTO & USESIGNATURE in recvfrom/sendto
Implement RoomData/RoomMemberData commands
2021-11-08 13:10:40 +03:00
Eladash c49ebba648 Fixes of PS3 filesystem EDAT/SDAT handling
* Return EFSSPEIFIC if encountered corrupted EDAT or an unmatched key in sys_fs_open and sys_fs_read.
* Fix validate_dev_klic() for license-free EDAT.
* Fix EDATADecrypter::ReadData() for when size + pos > file_size but pos < file_size.
* Try to save up to 16 decryption keys. Educated guess based on NPDRM file descriptors count llimit.
* Return LICENCE_NOT_FOUND if needed RAP file is not found in sceNpDrmIsAvailable.
* Check additional sys_fs_open errors for sceNpDrmOpen. (EISDIR, ENOTMOUNTED)
2021-11-04 21:32:15 +03:00
Eladash b84e95d768 rsx: Fixate time stamp of VBLANK 2021-11-01 10:04:53 +01:00
shockdude 590483b81f Add emulated Guitar Hero Live guitar controller in Settings I/O tab 2021-10-24 03:04:07 +02:00
RipleyTom 683c061e60 sys_net: getsockname on unbound p2p socket fix 2021-10-16 11:41:20 +02:00
RipleyTom 0e625e193e sys_net: redirects 0.0.0.0 packets on windows 2021-10-16 11:41:20 +02:00
shockdude cd73d738e5
Add emulated DJ Hero turntable controller in Settings I/O tab 2021-10-12 23:29:19 +02:00
Eladash ab50e5483e
GUI Utilities: Implement instruction search, PPU/SPU disasm improvements (#10968)
* GUI Utilities: Implement instruction search in PS3 memory
* String Searcher: Case insensitive search
* PPU DisAsm: Comment constants with ORI
* PPU DisAsm: Add 64-bit constant support
* SPU/PPU DisAsm: Print CELL errors in disasm
* PPU DisAsm: Constant comparison support
2021-10-12 23:12:30 +03:00
RipleyTom ea9dc9317d rpcn v0.4.0 2021-10-11 22:20:20 +02:00
Megamouse 2821eb7397 Remove some lwmutex log spam
I don't know if there's a reason for the warning message.
So I'll just change it and see how many developers throw insults at me :)
2021-09-26 21:28:17 +03:00
Megamouse 8f1dc7a2d4 Fix VFS regression
Implements cfg_mode
2021-09-25 19:21:59 +03:00
Eladash d0e31f4ec3 sys_fs: Add write log messages for SDATA/EDATA 2021-09-22 14:57:16 +03:00
Eladash 3e06446297 sys_fs: Fix sys_fs_read/write when nbytes is 0 2021-09-22 14:57:16 +03:00
Eladash 5ae7dbf77c Fix cellFsSdataOpenByFd flags 2021-09-22 14:57:16 +03:00
Eladash 38d5f688b3 cellAudio fix 2021-09-20 07:59:34 +02:00
Eladash 9c2d94ca1a sys_prx: Improve sys_prx_get_module_info error checking 2021-09-16 19:09:18 +03:00
Eladash ae4f837f57 sys_prx: Implement sys_prx_get_module_id_by_address 2021-09-16 19:09:18 +03:00
Eladash 8b48fd95fe Fix sys_prx_start/stop_module for older firmware
The old structure is only 32 bytes long, not containing prologue/epilogue functions.
2021-09-15 18:08:58 +03:00
Eladash 50ad7ba1f6 vm: Fix vm::unmap
* Make vm::unmap atomic, squash the memory unmapping process inside this function while still using the same VM mutex ownership.
* Make vm::unmap not fail due to random vm::get calls, shared_ptr reference count is no longer a condition.
* Fix sys_mmapper_free_address spuriously failing with EBUSY due to random vm::get calls.
* Fix sys_vm_unmap race condition due to non-atomic vm::unmap.
* Add an optional verification block ptr arg to vm::unmap, used by patches.
2021-09-13 20:53:34 +03:00
Eladash 677d5f09ce Add debugging info for when sys_tty_write is executed 2021-09-12 19:05:26 +03:00
Eladash c7f5475b56 Improve sys_fs_close logging 2021-09-12 19:05:26 +03:00
Eladash 1cbcf7e1ad Reimplement config selection for game startup
* Implement manual selection of config file.
* Implement default config option.
* Fix bug which led to 'force global config' to not work in some games. (any game using process relaunch such most game collections, RDR, MGS4 etc)
* Relax CLI config purpose - instead the emulator forever ignoring any other config except for the one provided in arg, use it only for the CLI-booted game.
2021-09-09 21:56:50 +02:00
Eladash dfbc49513d Debugger/Disasm: Name SPU Syscalls 2021-09-07 01:13:57 +02:00
Eladash fe0c164de2 sys_net: Anti-log spam enhancement 2021-09-04 11:58:59 +02:00
Megamouse 0debcfed0a Silence some warnings 2021-09-02 19:39:42 +02:00
Eladash 6781373727
Patch cooperate with system SPU group creation (#10791) 2021-08-29 22:03:17 +03:00
Whatcookie d0451932bf
Offset get_timebased_time at game boot (#10744)
- Avoids game bugs in the case where games convert the value read from the clock to a float before performing delta time calculations
2021-08-23 13:06:02 +01:00
Marco 5c0bf14554
Whitelist Kamen Rider Summonride Portal sys_usbd (#10722)
Co-authored-by: Megamouse <studienricky89@googlemail.com>
2021-08-21 11:08:56 +03:00
Justin Lewis c13a46b07b
Fix warnings about using deprecated inet_ntoa function (#10698)
* Replaced inet_ntoa with inet_ntop.

The warning in question is: "Warning	C4996	'inet_ntoa': Use
inet_ntop() or InetNtop() instead or define
_WINSOCK_DEPRECATED_NO_WARNINGS"
2021-08-18 07:16:38 +03:00
Eladash 063df64108 SPU/event queue: Implement protocol for SPU queue 2021-08-13 08:58:09 +03:00
Eladash 91737b11fe Fix sys_spu_thread_group_resume
Do not remove suspend flag when SPU group state is not SPU_THREAD_GROUP_STATUS_RUNNING after operation!
2021-08-12 22:24:54 +03:00
Eladash bf61c826d5 SPU/event queue: Atomically resume SPU group 2021-08-12 22:24:54 +03:00
Megamouse 430fd759fe sys_net: add missing range checks 2021-08-08 21:06:07 +02:00
Nekotekina 86d2316089 sys_net/NP: set some init dependencies
Ensure finalization order of network threads.
This should prevent some crashes.
2021-08-06 10:41:40 +03:00
Eladash 9ecb6c4e34 Fix sys_spu_thread_group_create 2021-08-05 08:12:34 +03:00
Eladash 9f67e00e40 sys_spu: Add one more limiting SPU threads creation condition 2021-08-04 21:39:57 +03:00
Eladash 8c3a4c260e Bugfix of sys_lwmutex_destroy 2021-08-04 09:03:17 +03:00
Eladash 06f4dfb9f1 SPU: Implement sys_spu_initialize and limit of physical SPU threads 2021-08-04 08:26:32 +03:00
Megamouse dc0a086400 sys_prx_unload_module: fix log message 2021-08-03 08:39:57 +02:00
Eladash a06a93d5ba Fix sys_storage_read 2021-07-30 17:22:43 +03:00
Nekotekina 658b4f70ef Fix some warnings 2021-07-30 09:31:36 +03:00
Eladash be9be6e5c9 Make sys_prx_unload_module use success type logging 2021-07-24 14:23:47 +03:00
Ilya Oleinik e51d16aa37 Initial implementation of sys_uart 2021-07-19 19:20:43 +03:00
Eladash 98e40d12ef sys_ppu: Implement sys_ppu_thread_rename 2021-07-19 12:37:33 +02:00
clienthax 65b2a0d538 stub rsxaudio 2021-07-18 21:08:03 +03:00
clienthax d099148961 sys_hid vsh 2021-07-18 14:20:33 +02:00
clienthax 441713d959
sys_storage vsh implementation (#10559)
Co-authored-by: Eladash <elad3356p@gmail.com>
2021-07-17 22:06:40 +02:00
clienthax e75e437a4a sys_ss vsh stubs 2021-07-17 21:35:47 +02:00
Eladash 81805945ce LV2: Fix IPC key reading from attributes 2021-07-17 20:02:21 +02:00
clienthax 7fe15f5f8d
Stub sys_fs mount functions for vsh (#10561)
Co-authored-by: Eladash <elad3356p@gmail.com>
2021-07-17 19:19:13 +02:00
clienthax 9c5c4457b6 Stub libfs_utility_init to bypass FSCK checks by vsh. 2021-07-17 18:56:07 +02:00
clienthax 1e605de31e sys_sm_get_ext_event2 stub 2021-07-17 18:35:26 +02:00
Eladash 8e2c34a003 PPU debugger: Implement PPU calling history 2021-07-17 17:28:23 +02:00
clienthax c2f0fbcd82 Stub sys_io for vsh. 2021-07-17 17:06:57 +02:00
clienthax 85b33e9cae Hack for msmw2.sprx timeout. 2021-07-17 14:39:36 +02:00
Eladash 6a7324ab3e kernel_explorer: Atomic PPU state updates 2021-07-10 22:20:37 +03:00
Megamouse fcbacf8afd sys_usbd: add PlayTV SCEH-0036 2021-07-08 22:06:48 +02:00
Eladash 0aed00a758
Improve thread aborting mechanism (#10490)
Call pseudo-virtual operator=(thread_state) of thread context.
2021-06-27 11:43:48 +03:00
Eladash 58847fa2ca sys_fs: Fix ENOTMOUNTED of open 2021-06-26 14:53:22 +03:00
Eladash 50be3bd2e5
kernel-explorer: devirtualize lv2_fs_object and print more information (#10487)
* Make lv2_fs_object an "abstract" structure with protected constructor.
* Improve kernel-explorer information for filesystem objects.
2021-06-24 16:47:14 +03:00
Nekotekina 72680c7707 sys_fs: improve sys_fs_open accuracy for /dev_bdvd
Based on software test.
2021-06-18 17:47:49 +03:00
Eladash 24e4a43ec4
lv2_timer: manage timers by separate thread (#10445)
Substitutes missing abort op for lv2_obj manager.
2021-06-15 15:04:51 +03:00
Eladash 11ab9b7fa9
Fix sys_event_flag_wait result set (#10404)
Set result upon syscall exit, not at the beginning.
2021-06-05 16:41:02 +03:00
Megamouse ac83871214 impressive typo fix 2021-05-31 23:01:13 +03:00
Ani a49446c9e9
Replace gsl::span for std::span (c++20) (#7531)
* Replace gsl::span for std::span (c++20)
* Replace gsl::byte with std::byte

Co-authored-by: Bevan Weiss <bevan.weiss@gmail.com>
2021-05-30 17:10:46 +03:00
Eladash f103004aa0
sys_prx/overlay: Fix disambiguator of module names opened by FD (#10340)
Don't append zero offset.
2021-05-26 23:38:17 +03:00
Eladash 44f0ca08e2 Simplify PPU exit 2021-05-25 22:47:23 +03:00
Eladash 9ba3e6d3f7 sys_mmapper: Fix IPC-enabled instances memory consumption 2021-05-24 23:16:06 +03:00
Nekotekina 2491aad6f2 types.hpp: implement min_v<>, max_v<>, SignedInt, UnsignedInt, FPInt concepts
Restrict smax to only work with signed values for consistency.
Cleanup <climits> includes.
Cleanup <limits> includes.
2021-05-23 19:43:51 +03:00
Eladash 309759b725 kernel-explorer: Save self mem-container ID and use it 2021-05-23 05:37:37 +03:00
Nekotekina 160b131de3 types.hpp: implement smin, smax, amin, amax
Rewritten the following global utility constants:
`umax` returns max number, restricted to unsigned.
`smax` returns max signed number, restricted to integrals.
`smin` returns min signed number, restricted to signed.
`amin` returns smin or zero, less restricted.
`amax` returns smax or umax, less restricted.

Fix operators == and <=> for synthesized rel-ops.
2021-05-22 12:10:57 +03:00
Eladash dcfd29c2d9 kernel-explorer: Implement PPU scheduler state information 2021-05-21 18:12:36 +02:00
Eladash 0811d2d527 Fix bug of sys_rsx_context_attribute
Mistake of reversing.
2021-05-20 09:25:51 +03:00
Eladash 3abf14beef Update sys_rsx_context_attribute 2021-05-20 09:25:51 +03:00
Eladash 638f20c80f Improve get_current_cpu_thread() 2021-05-20 09:25:51 +03:00
Eladash 2e28e2d293 lv2: Fix overflows of periodic timers 2021-05-17 13:17:45 +03:00
Eladash 8bd58b1ad4 Remove lv2_event_queue::check(weak_ptr) 2021-05-15 00:31:14 +03:00
Eladash c681395fb2 sys_interrupt: weak_ptr -> shared_ptr 2021-05-15 00:31:14 +03:00
Eladash 33580e0aa1 sys_timer: weak_ptr -> shared_ptr 2021-05-15 00:31:14 +03:00
Eladash 47436bd774 sys_spu: weak_ptr -> shared_ptr 2021-05-15 00:31:14 +03:00
Eladash 56471f4ad4 SPU: Optimize SPU ports/queues 2021-05-15 00:31:14 +03:00
Nekotekina 8ae727ca04 lv2_obj::create: fix pessimizing move
Could have been preventing copy elision.
2021-05-13 10:23:33 +03:00
Eladash acded1e08a
rsx: Move sys_rsx info to rsx::thread (#10258) 2021-05-09 19:16:14 +01:00
Eladash 31b55e0030 event queue: Structure size efficiency 2021-05-09 10:58:14 +03:00
Eladash 1e1880893a sys_interrupt: Save ID of self tag/handler 2021-05-09 10:58:14 +03:00
Eladash 363cc60c82 sys_event: Save ID of self event queue 2021-05-09 10:58:14 +03:00
Eladash 64997662d2 LV2: Fixup for IPC
* Fix typo in lv2_obj::create.
* Always save ipc_key as 0 for non-shared object creations, regardless of thbe value set by creation attribute.
* Show IPC key of shared memory (sys_mmapper) memory objects in kernel explorer.
2021-05-07 14:58:22 +03:00
Eladash 900ebf6583
sys_event: Typo fix (#10246) 2021-05-07 09:34:25 +01:00
Eladash 7b6482c01d
LV2: Improve IPC support (#10206)
* Remove custom event queue's IPC management of favour of universal LV2 approach.
* Move ipc_manager to FXO.
* Fix ipc_manager internal storage memory leak: deallocate entry when IPC object destroyed.
* Rewrite lv2_obj::create to be simpler (remove many duplicated code).
* Always execute lv2_obj::create under both IPC and IDM mutexes at once (not in non-atomic single-steps). Fixing potential case where concurrency can cause IDM to contain 2 or more different objects with the same IPC key with SYS_SYNC_NOT_CARE (instead of the same object).
* Do not rely on smart ptr reference count to tell if the object exists. Use similar approach as event queues as it makes error checkings accurate.
* Optimize lv2_event_port by using std::shared_ptr for queue which wasn't allowed before.
2021-05-07 09:58:30 +03:00
Eladash 0224c7a9eb SPU TG: Simplify state of saved SPU image data
Save only entry points instead of sys_spu_image structure.
2021-05-01 19:43:00 +03:00
Eladash daa53b77cf Simplify named_thread construction 2021-05-01 18:08:03 +03:00
Nekotekina 703ec474f5 Fixup for sys_time_get_timezone (3rd path)
Also simplify Linux path a bit.
2021-04-29 00:07:22 +03:00
Nekotekina a049c6fd6b Implement sys_time_get_timezone syscall
Try to get system timezone automatically.
Attempt to address #10195.
2021-04-27 22:21:58 +03:00
clienthax 7197dd751a
Fcntl e0000025 (#10172)
Co-authored-by: Eladash <elad3356p@gmail.com>
2021-04-24 21:43:09 +03:00
David Carlier 0b9e4ffe54 Mac OS build update and simplification, recent releases of macOS has clock_gettime support. 2021-04-24 12:55:21 +03:00
Megamouse 8fd3b26308 sys: more constants 2021-04-23 22:46:15 +02:00
Megamouse 617d21fa84 sys_prx: more constants 2021-04-23 22:02:52 +02:00
Megamouse 41b68ef353 some more constants 2021-04-23 22:02:52 +02:00
Eladash 72c85744b9 kernel-explorer: Show bound queue to port information
Show its IPC key or ID, depends on the queue's type.
2021-04-23 21:34:05 +03:00
David Carlier 082bbc7336 Following up on MacOS build fix.
Specialisation of llvm_value_t to allow build with LLVM this time.
2021-04-23 15:20:40 +03:00
clienthax 68fa377d13 Add dev_flash2+3 2021-04-18 14:49:29 +03:00
Nekotekina 9d4fcbf946 bs_t<>: fix/cleanup some operators 2021-04-17 15:54:33 +03:00
Nekotekina 19763f8973 Remove unnecessary default:breaks 2021-04-15 15:23:59 +03:00
Eladash a16cc3ac8a lv2: Remove flags from IPC-supported objects 2021-04-15 10:31:40 +03:00
Nekotekina ccb46df905 Minor fixups (removed unnecessary code) 2021-04-11 16:36:02 +03:00
Megamouse a16d8ba3ea More random changes 2021-04-11 14:01:51 +03:00
Nick Renieris 396c129d41 vm: Flag names (refactoring) 2021-04-06 13:07:54 +03:00
Nekotekina 963d150e93 Fix some -Weffc++ warnings (part 2) 2021-04-03 21:54:15 +03:00
Eladash e57f36fc5b Quick sys_sm_get_params implementation 2021-04-03 17:23:40 +03:00
Eladash 32116086b3 Implement _sys_prx_register_module loading imports/exports functionality 2021-04-03 17:23:40 +03:00
Eladash 878da3b474 Implement get_cellos_appname()
Identifying vsh.self and possibly other operating system executables in the future.
2021-04-03 17:23:40 +03:00
Nekotekina 2212a131ef Fix some -Weffc++ warnings (part 1) 2021-03-31 11:27:09 +03:00
Nekotekina b3fb6d7d18 Add and fix -Wredundant-decls (GCC) 2021-03-23 22:48:57 +03:00
Eladash 1213708b72
Replace some log errors (#9980) 2021-03-17 17:19:35 +03:00
Nekotekina 8fcebebae3 Implement lv2_mp_flag::cache
Identify /dev_hdd1 without unsafe path comparison.
2021-03-16 19:37:03 +03:00
Eladash 8716ac554f Fix sys_raw_spu_destroy 2021-03-16 19:31:52 +03:00
Eladash d7b4753007 Make gamedata installation atomic as real PS3 2021-03-16 19:31:52 +03:00
shockdude 6a14849381
sys_usbd: DJ Hero Turntable Emulation (#9965)
* Initial Turntable Emulation
2021-03-14 23:48:50 +03:00
Nekotekina c22e1e71f0 Continue fixing strict aliasing warnings 2021-03-13 18:02:37 +03:00
Eladash 729cd9284e debugger: Fix PPU threads pausing 2021-03-12 13:01:12 +03:00
Nekotekina 87af905018 Enable -Wunused-parameter 2021-03-06 18:07:08 +03:00
Eladash a5d74c5e96 GUI: Improve missing firmware handling
* Install PS3UPDAT.PUP at the spot when booting games whenever firmware is missing. The option to boot games without firmware is still supported when all firmware SPRX are HLEd in firmware settings.
* Pop-up a confirmation dialog in firmware installation if firmware is already installed.
2021-03-06 10:34:49 +01:00
RipleyTom 0eb0b1e1c9 Add some GT6 devices to whitelist 2021-03-03 17:30:16 +03:00
Nekotekina ea5e837bd6 fixed_typemap.hpp: return reference 2021-03-02 16:08:14 +03:00
Florin9doi dfee46604a Buzz settings 2021-02-28 22:36:47 +03:00
Eladash 112b7f6571 Fix Emulation::CallAfter
Most CallAfter usages were extremely wrong when ordered after Emu.Stop(). could result in anywhere from emulation stopping hangs to even segfaults.
track_emu_state = true is now the default, I haven't found cases which need need it disabled.
2021-02-23 17:55:36 +03:00
Eladash 932f31e37b Atomic PARAM.SFO writes 2021-02-23 11:29:23 +03:00
RipleyTom 81270f3142 Remove now useless code from sys_bnet_connect 2021-02-21 18:04:55 +03:00
Eladash eb0d006168
Fix most of "[x] thread is too sleepy" at Emu.Stop() (#9813)
* Fixes some thread sleep/wait calls
2021-02-21 16:43:02 +03:00
Nekotekina 038148bf06 Fix almost all GCC warnings 2021-02-17 22:59:04 +03:00
Eladash f43260bd58
Atomic waiting refactoring (#9208)
* Use atomic waitables instead instead of global thread wait as often as possible.
* Add ::is_stopped() and and ::is_paued() which can be used in atomic loops and with atomic wait. (constexpr cpu flags test functions)
* Fix notification bug of sys_spu_thread_group_exit/terminate. (old bug, enhanced by #9117)
* Function time statistics at Emu.Stop() restored. (instead of current "X syscall failed with 0x00000000 : 0")
2021-02-13 17:50:07 +03:00
Eladash 423cc1685c PPU LLVM: Reduce PRX/OVL compilation memory usage a little 2021-02-13 13:05:41 +03:00
Eladash 5ed0cc293d Fix PS3 process exit/exitspawn 2021-02-12 19:39:47 +03:00
Nekotekina b7ff2ecffb Patch system: export some info for future use
For now it's just a list of addresses.
For now it's not used (just a stub).
2021-02-07 11:02:31 +03:00
Eladash 478ae0715e Tiny fix for zombie PPU threads 2021-02-03 15:05:38 +03:00
Eladash e3b3b0cda7
PPU LLVM: Precompile all executable (PRX, MSELF, overlay) code at startup (#9680)
* Precompile LLVM cache at startup of games, like the GUI "Create PPU Cache" option.
* Allow OVL (overlay) precompilation as well (used by certain games).

Co-authored-by: Megamouse <studienricky89@googlemail.com>
Co-authored-by: Nekotekina <nekotekina@gmail.com>
2021-01-30 16:08:22 +03:00
Eladash 0652870204 New RSX Debugger 2021-01-28 17:40:26 +03:00
Nekotekina 53267e283b PPU LLVM: implement ppu_finalize
Properly free certain compiled PRX/OVL modules (except dev_flash)
2021-01-27 18:03:49 +03:00
Eladash 7f28489c70 Improve ppu_thread_cleaner a bit
Always join thread.
2021-01-21 21:32:13 +03:00
Eladash a58c12db0b SPU: fixup after #9630
Co-Authored-By: Ivan <nekotekina@gmail.com>
2021-01-21 21:32:13 +03:00
Eladash 12e1be2626 Implement thread_ctrl::wait_on (see #9208) 2021-01-21 18:31:51 +03:00
Eladash f81674232e Remove SPU and PPU destructors 2021-01-21 18:31:51 +03:00
Eladash e4c3b1c2bd vm: Remove vm::dealloc_verbose_nothrow 2021-01-15 17:37:52 +03:00
Nekotekina db8e6fe7a7 Enable -Wunused-variable 2021-01-12 14:34:14 +03:00
Nekotekina 586440622b Silence another warning (clang) 2021-01-07 12:46:45 +03:00
Florin9doi f1c61067bc
Buzz! emulated controller (#9504)
* Buzz emulated controller
Co-authored-by: Florin9doi <Florin9doi@users.noreply.github.com>
Co-authored-by: Ivan <nekotekina@gmail.com>
2020-12-31 21:02:03 +03:00
Florin9doi 733f31f90e Allow USB passthrough for THQ uDraw GameTablet 2020-12-25 14:27:24 +03:00
Nekotekina bd269bccaf types.hpp: remove intrinsic includes
Replace v128 with u128 in some places.
Removed some unused files.
2020-12-21 21:11:25 +03:00
Nekotekina eec11bfba9 Move align helpers to util/asm.hpp
Also add some files:
GLTextureCache.cpp
VKTextureCache.cpp
2020-12-18 18:07:42 +03:00
Nekotekina 05099e2ae1 Replace uint64_t with u64 2020-12-18 12:23:53 +03:00
Nekotekina 534c63bf57 Replace uint8_t with u8 2020-12-18 12:23:53 +03:00
Nekotekina fb29933d3d Add usz alias for std::size_t 2020-12-18 12:23:53 +03:00
Nekotekina 4cfa9b11f3 Move busy_wait() to asm.hpp 2020-12-18 12:23:53 +03:00
Eladash 7eb16e13bb PRX loader: Fix libfs_155.sprx loading
Fix relocations' segments referencing when there are "empty" (memsize=0) LOAD segments.
2020-12-15 11:16:45 +03:00
Megamouse 03ad5c6830
Salvaging code (#9432)
* Minor input refactoring

* fix sys_config_unregister_io_error_listener log message

* Remove unused variables in RepaintTextColors

Co-authored-by: GermanAizek <GermanAizek@yandex.ru>
2020-12-14 14:33:43 +01:00
Eladash e5603fec1e Firmware libraries settings overhaul 2020-12-13 21:52:24 +03:00