Commit graph

3885 commits

Author SHA1 Message Date
Nekotekina d28b0ba2fa SPU LLVM: implement spu_re, spu_rsqrte
Improve matching with peek_through_bitcasts() helper.
Implement erase_stores() helper.
2021-09-17 10:23:43 +03:00
Nekotekina aba332d4c4 SPU LLVM: make intrinsics for most xfloat instructions 2021-09-17 10:23:43 +03:00
Nekotekina 543fb7a9cb LLVM DSL / SPU LLVM: implement infinite precision shifts
Remove old make_*** helpers in favor of matcheable expressions.
2021-09-17 10:23:43 +03:00
Nekotekina 67b3fc70f8 LLVM DSL: implement absd and match helpers
Matcheable expression absd(a, b) (absolute difference).
2021-09-17 10:23:43 +03:00
Nekotekina 4b8ee85995 LLVM DSL: reimplement pshufb, add 'calli'
Implement postponed custom intrinsic replacement.
Make bitcast operator static like other ones.
2021-09-17 10:23:43 +03:00
Nekotekina 86ead1b93b SPU LLVM: implement FI instruction
Use approximate reciprocal in FRSQEST.
2021-09-17 10:23:43 +03:00
Nekotekina 1685769bd9 LLVM DSL: reimplement fmuladd, force hw fma if present 2021-09-17 10:23:43 +03:00
Nekotekina 2acb6ed60d SPU LLVM: optimize SHUFB for permutation-only shuffles
Drop constant generation when unused.
2021-09-17 10:23:43 +03:00
Nekotekina 144244e902 SPU LLVM: implement missing constant mask handling in SHUFB 2021-09-17 10:23:43 +03:00
Nekotekina 7cf9d1380b LLVM DSL: add line number in get_const_vector automatically 2021-09-17 10:23:43 +03:00
Nekotekina f188019244 LLVM DSL: reimpelement fsqrt, fabs 2021-09-17 10:23:43 +03:00
NicknineTheEagle 4fcc1c0f31 Fully implement sceNpDrmVerifyUpgradeLicense 2021-09-16 23:54:53 +02:00
Megamouse 1a2fad4eac
cellSearch: more stubs and implementations (#10578) 2021-09-16 22:05:29 +01: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 f98595bee5 Patches/PPU: Add jump_link patch type 2021-09-10 11:46:39 +03:00
Eladash fafefb2cf5 Fixup No.3 after #10779 2021-09-10 11:46:39 +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 bd66dfedc9 Do not allow to unpause after fatal error occured in emulation
* Plus fix #10590
2021-09-09 19:30:54 +02:00
Eladash dfbc49513d Debugger/Disasm: Name SPU Syscalls 2021-09-07 01:13:57 +02:00
Megamouse 0525070898 remove deprecated avcodec_register_all
We already use newer avcodec code anyway.
2021-09-06 10:00:34 +02:00
Eladash fe0c164de2 sys_net: Anti-log spam enhancement 2021-09-04 11:58:59 +02:00
Eladash ea2c5294df cellCamera: 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
Nekotekina 06f733a7f2 Fixup No.2 for #10779 2021-09-01 16:56:38 +03:00
Nekotekina ad6a72e369 Fixup for #10779 2021-09-01 14:38:20 +03:00
Eladash b40ed5bdb7
Patches/PPU: Extend and improve patching capabilities (code allocations, jumps to any address) (#10779)
* Patches/PPU: Implement dynamic code allocation + Any-Address jump patches

Also fix deallocation path of fixed allocation patches.
2021-09-01 13:38:17 +03:00
Malcolm Jestadt 43cc62d267 SPU LLVM: Add m_use_vnni
- Alderlake and Sapphirerapids will require an update to the llvm fork before they can be detected
2021-08-31 14:02:05 +03:00
Malcolm Jestadt d304b52391 SPU LLVM: Add VNNI optimized variant of sumb
- Uses vpdpbusd to horrizontally add values, for some reason this is much faster than the normal horizontal add instructions.
2021-08-31 14:02:05 +03:00
Malcolm Jestadt a86b278115 SPU LLVM: Expand byteswap elimination to more instructions 2021-08-31 14:02:05 +03:00
Eladash 6781373727
Patch cooperate with system SPU group creation (#10791) 2021-08-29 22:03:17 +03:00
Eladash ddb042148d Patches/LLVM: Implement Complex Patches Support 2021-08-26 23:04:32 +03:00
Megamouse 72f0637efe Windows/Audio: add listener for device change
For some reason XAudio2 doesn't automatically change the device anymore.
So let's just listen for the OnDefaultDeviceChanged event and update the cell audio thread if necessary.
2021-08-25 22:44:16 +02: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
Whatcookie c62deeefd4
SPU LLVM: Add approximate FCEQ/FCMEQ (#8729)
- It's 100% accurate, but will sit under approx xfloat anyways
- Attempts to use a single instruction when 1 value is constant
2021-08-22 10:13:34 +03: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
Megamouse ac986c7c61 fix some warnings 2021-08-15 21:02:38 +02:00
Megamouse 53bfc6fa59 cellGem: fix floating point warning 2021-08-13 20:45:18 +02:00
Eladash 063df64108 SPU/event queue: Implement protocol for SPU queue 2021-08-13 08:58:09 +03:00
Eladash f1f93b8f81 SPU: Remove outdated assertation 2021-08-13 08:58:09 +03:00
Eladash 5784ffc972 Fixup PPU breakpoints 2021-08-12 22:24:54 +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 f0d51899c1 input: fix minor data race
While usually not exposed to the user, there was a slight chance that user input was read in a dirty state.
This became apparent during usage of the new pressure sensitivity button
2021-08-09 11:29:46 +02: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
Nekotekina 064fc81697 Fix warnings 2021-08-06 10:41:40 +03:00
Megamouse a146aabcaf cellGem: Disable Alignment Checks 2021-08-05 13:10:08 +02:00
Eladash 9ecb6c4e34 Fix sys_spu_thread_group_create 2021-08-05 08:12:34 +03:00
Megamouse 3ccfb86e1b cellGem: use existing constant for sphere radius 2021-08-05 02:26:20 +02:00
Megamouse 9c21f43df6 cellGem: fix Deadstorm Pirates regression 2021-08-05 02:02:34 +02:00
Megamouse 87c07679e1 cellGem: add calibration logic with 0.5 second delay 2021-08-05 02:02:34 +02:00
Megamouse 6de4c27b32 cellGem: fix controller connection check 2021-08-05 02:02:34 +02:00
Megamouse 995e9b5f9f cellGem: reset struct on controller reset 2021-08-05 02:02:34 +02:00
Megamouse e03f323fdd cellGem: add some more checks 2021-08-05 02:02:34 +02:00
Megamouse f2bca2ef67 cellGem: set cellGemGetCameraState values 2021-08-05 02:02:34 +02:00
Megamouse 0b88d5f077 cellGem: implement cellGemHSVtoRGB 2021-08-05 02:02:34 +02:00
Eladash 9f67e00e40 sys_spu: Add one more limiting SPU threads creation condition 2021-08-04 21:39:57 +03:00
Eladash 9d71369b2c Fixup HLE lwmutex 2021-08-04 21:39:57 +03:00
Megamouse 2dd0f488a1 cellGem: cellGemPrepareVideoConvert update 2021-08-04 20:28:34 +02:00
Megamouse dd7f24b20e cellGem: fix mouse positions 2021-08-04 20:28:34 +02:00
Megamouse ccb7531289 cellGem: update cellGemGetState 2021-08-04 20:28:34 +02:00
Megamouse 4d0179174a cellGem: add more mouse buttons 2021-08-04 20:28:34 +02:00
Megamouse 3ddcf60a11 cellGem: add some more error checks 2021-08-04 20:28:34 +02:00
Megamouse 3b581aaf94 cellGem: disable tracking in cellGemForceRGB 2021-08-04 20:28:34 +02:00
Megamouse 0c68a6afdd cellGem: improve hue handling 2021-08-04 20:28:34 +02:00
Megamouse fd29382290 cellGem: fix fake move calibration status flag
Apparently OCCURRED means that there are flags to be checked, while SUCCEEDED means that everything went smoothly.
2021-08-04 20:28:34 +02:00
Megamouse 1d3f91a1b8 cellGem: add ext_id and SHARP_SHOOTER_DEVICE_ID 2021-08-04 20:28:34 +02:00
Megamouse 999252a806 cellGem: fix typos, add some comments and reorder 2021-08-04 20:28:34 +02:00
Eladash f807ebf9ba PPU: Improve accuracy of "Accurate PPU 128 reservations" mode 2021-08-04 18:18:59 +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 af89eb5404 ppu compilation: fix facepalm (double increase) 2021-08-03 08:39:57 +02:00
Megamouse dc0a086400 sys_prx_unload_module: fix log message 2021-08-03 08:39:57 +02:00
Nekotekina 05d1b3605e Fixup for SPU Debug mode (bad SHA1)
Should fix crashes due to read out of bounds.
2021-08-01 10:12:08 +03:00
Eladash a0c1b250b6 Fix HLE LWMutex setting - Implement dynamic initialization of HLE functions 2021-07-31 21:47:22 +03:00
Megamouse 6527eef655 System: add progress update on existing modules
This could cause dialogs to seemingly finish at e.g. 50/100 modules because the existing modules weren't accounted for.
2021-07-31 16:06:18 +02:00
Eladash f39a0a5fbe Debugger: Add some error pop-ups for invalid operations
* Show error window when setting breakpoints on these conditions:
- SPU/RSX are selected. (not supported)
- When using non-interpreters decoders.
- Non-executable memory is specified.
* Do not allow instruction stepping for non-interpreters decoders.
* Clear breakpoints when the game is stopped.
* Fix setting breakpoints on HLE functions.
2021-07-31 15:27:30 +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
Nekotekina fc5840cda6 SPU Cache: allow to dump cache upon startup
Print also some stats (if SPU Debug is enabled).
2021-07-30 09:21:11 +03:00
Megamouse bb9c063e80 Remove unused ppu_initialize declaration 2021-07-29 10:18:20 +02:00
Eladash be9be6e5c9 Make sys_prx_unload_module use success type logging 2021-07-24 14:23:47 +03:00
Megamouse 50354253c8 replace some random Emu.Pause with fatal errors 2021-07-20 19:47:00 +02:00
Eladash c84e5489f2
vsh.self: Fix execution on default settings (#10586) 2021-07-20 00:36:32 +02: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
Eladash e6e0210e73 Extend ppu_thread::call_history_t formatter 2021-07-19 09:28:46 +02:00
Eladash 83a2f06e3a PPU debugger: Make calling history detect common LLE functions trampolines 2021-07-19 09:28:46 +02:00
Eladash a5c3c7d2e5
cellSaveData/UNIX: Optimize IO (#10574) 2021-07-18 21:08:04 +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
Eladash b087d79a08 PPU debugger: Implement function names at the starting instruction 2021-07-18 13:23:18 +02:00
Eladash 6f6503ee32 cellSaveData: Fixup funcDone result check 2021-07-17 23:30:26 +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 1e9afdc289 Formatting Library: Implement byte arrays formatting 2021-07-17 18:10:43 +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
RipleyTom a34201ebff
Fix deref in sceNpMatching2CreateContext (#10539) 2021-07-14 00:11:14 +01: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
Megamouse e75de44907 cellGame: treat media apps as CELL_GAME_GAMETYPE_HDD
This is kinda hacky but it fixes some errors in PlayTv
2021-07-08 22:06:48 +02:00
Megamouse 161fa95066 cellGame: improve logging 2021-07-08 22:06:48 +02:00
Megamouse e212f16962 sceNp: fix invalid ctx dereference
Fixes "Buzz! Quiz Player" Offline Gameplay
2021-07-01 23:09:23 +02:00
Eladash 9b050a33e4 Fix HLE callbacks within context of HLE PPU stack variables 2021-06-28 14:31:28 +03:00
Eladash b6fccee6a4 Improve ppu_thread::stack_push
Save actual stack memory allocation size locally. (not in PS3 memory)
2021-06-28 14:09:24 +03:00
Nekotekina 571bdfc828 Fixup for #10490
Restore explicit signaling of RSX thread for now.
2021-06-27 14:02:32 +03: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
Megamouse b6128c5dfa cellSearch: extend media_info for video files 2021-06-25 09:41:32 +03:00
Megamouse 68a1da31a0 cellSearch: move audio info to separate util file 2021-06-25 09:41:32 +03:00
Megamouse 7e0f2f9b12 sceNp: add some more constants 2021-06-25 09:41:32 +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 3c614d95b8 fs: alternative fs::pending_file implementation (Win32)
Use MOVEFILE_WRITE_THROUGH instead of sync() on commit().
2021-06-20 22:08:24 +03:00
Eladash aaa20c0ff0
cellCamera/cellGem: Fix time stretching setting (#10476) 2021-06-20 21:25:13 +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 039ca6e839 Fix cellMouse/Keyboard initialization 2021-06-17 20:43:43 +02: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 d81a5b1423 SPU LLVM: Add missing WRCH PC updates 2021-05-29 15:26:52 +03:00
Megamouse a2da525064 cellVdec: silence "Unsupported time_base" error log spam 2021-05-29 12:46:21 +02:00
Malcolm Jestadt 7c2b08b9b6 SPU LLVM: Expand branch optimizations for more instructions 2021-05-29 13:07:35 +03:00
Eladash 7d89938624 cellPad: do not use recusrive mutex 2021-05-28 20:25:16 +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 48870f3e8b TROPUSR: Loader Improvements
* Replace invalid TROPUSR.DAT with empty new ones. (+report an error)
* Fix return code of Load whenever TROPUSR.DAT hadn't existed before.
* Add header magic test.
* sceNpTrophyRegisterContext will abort if TROPUSR.DAT generation failed.
2021-05-21 16:43:34 +03: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
Nekotekina 1d0f6eebdc Improve error_code (new formatting constructor)
Minor cleanup in formatting utilities.
2021-05-19 22:41:16 +03:00
Nekotekina 8217840acc Simplify error_code class
Remove "not an error" detection trait. Use fixed CellNotAnError class.
Use constructor overload to disable reporting it.
2021-05-19 00:48:45 +03:00
Malcolm Jestadt 52780e65e7 SPU LLVM: Optimize branching
- Detect a pattern where vpmovmskb and a check against the sign bit can be used instead of checking against zero
2021-05-17 16:59:20 +03:00
Eladash 57cd4ff3c6
Move HLE table address to FXO (#10284) 2021-05-17 14:22:27 +03:00
Eladash 2e28e2d293 lv2: Fix overflows of periodic timers 2021-05-17 13:17:45 +03:00
Eladash 7a9a46e093 kernel-explorer: Implement SPU ports/interrupt tags information 2021-05-15 09:00:12 +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 a992a5fba9 cellAudio: 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
Eladash cacb852a1e Emulation stopping bugfix 2021-05-14 15:35:07 +03:00
Nekotekina 6dca588370 SPU LLVM: improve MPYH instruction
Rewritten to use 16-bit multiplication, as in SPU ASMJIT.
2021-05-13 23:16:53 +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
Megamouse 3c37036f7a save-overlays: add entry size info 2021-04-30 00:30:26 +02:00
Megamouse 14b6d6291b save-overlays: add localization 2021-04-30 00:30:26 +02:00
Megamouse 11f57f259c cellSaveData: keep focus after confirmation cancel
It was very annoying to be thrown to beginning of the list after cancelling the confirmation.
2021-04-30 00:30:26 +02:00
Nekotekina f8e05f8e3c Remove redundant operators != 2021-04-29 22:57:40 +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
Nekotekina 86a8e0716f Test alterable aggregates via overriding be_t
Checking how it might look like without introducing too many changes.
Alteration of its behaviour as a "template template" argument allows:
 - normal access
 - easier aggregate inspection
 - memory access interception
2021-04-25 19:00:16 +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 1caf81811a Move unspecific Emulator code out of System.cpp 2021-04-24 11:21:22 +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
Megamouse 087dccd194 Implement most of cellUserInfo 2021-04-23 05:50:19 +03:00
Nekotekina 67649d7976 SPU LLVM: restore lost comment 2021-04-21 13:33:44 +03:00
Malcolm Jestadt 6247969ede SPU LLVM: Absolute final fixes for icelake shufb paths
- The constant mask was accessing bits in reverse order of what was expected
2021-04-21 11:00:02 +03:00
Malcolm Jestadt efd38fa940 SPU LLVM: Improve byteswap elimination
- Use the data before it has been swapped rather than relying on a second byteswap to cancel out the first
2021-04-20 23:24:21 +03:00
Malcolm Jestadt 551472220e SPU LLVM: Remove icelake shufb paths for now 2021-04-20 23:24:21 +03:00
Malcolm Jestadt 53f13a9721 SPU LLVM: Final fixup for icelake shufb paths
- The cause of the problems was due to the constant mask for gf2p9affineqb being used as the first argument, instead of the second argument.
2021-04-20 13:07:24 +03:00
Megamouse aa0afc9a4e Input: avoid mouse events when unused 2021-04-20 00:06:23 +02:00
Eladash a0d1cf26d0 Reduce precompilation failure log level (error -> notice) 2021-04-19 23:18:31 +03:00
Nekotekina 0c9c481cee Use requires syntax in more places
Change style in some places.
2021-04-19 16:51: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
Eladash 67e2e154fa Replace simple_type with std::common_type 2021-04-17 10:27:55 +03:00
Malcolm Jestadt 0a7df9d02e SPU LLVM: add AVX-512 SPU verification
- This is hidden behind a new setting, as some cpus may downclock agressively when executing 512 wide instructions
2021-04-16 09:35:26 +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
Eladash 5ca6381624 Implement "PPU LLVM Precompilation" control setting 2021-04-10 18:06:46 +03:00
Nekotekina 3107f37864 Fix psf::load error for error::stream 2021-04-10 00:43:08 +03:00
Megamouse 17f5fec538
sceNp: fix rap file regression (#10084) 2021-04-09 21:37:57 +01:00
Megamouse 03b76b4606 Emu: some cleanup 2021-04-09 21:03:49 +02:00
Eladash a8d5a8734a Loader/cellGame: Do not crash on invalid PSF files 2021-04-09 20:58:30 +03:00
Megamouse d10584ac6c DRM: Search all user directories for rap files 2021-04-09 08:47:59 +02:00
Nekotekina 95725bf7fc Add -Werror=missing-noreturn (GCC, clang)
May be useful to diagnose functions which fail assertions unconditionally.
2021-04-08 10:29:47 +03:00
Megamouse 02febd3f65 Workaround: Skip progress_dialog during gameplay 2021-04-06 21:39:34 +03:00
Nick Renieris 396c129d41 vm: Flag names (refactoring) 2021-04-06 13:07:54 +03:00
Nekotekina 6f1f75bc8f Minor progress dialog refactoring
Add rsx::overlays::progress_dialog class (identical to message_dialog).
Don't use Emu.CallAfter() for native dialogs.
Make g_progr_ptotal waitable.
2021-04-03 22:38:04 +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
Eladash 7b57b8f2ca debugger: Implement ability to pause entire emulation on breakpoint 2021-04-01 19:11:55 +03:00
Nekotekina e9a45a2f45 Implement scoped_progress_dialog
Create Emu/system_progress.hpp
Remove atomic g_progr_show
2021-03-31 23:40:09 +02:00
Nekotekina 2212a131ef Fix some -Weffc++ warnings (part 1) 2021-03-31 11:27:09 +03:00
Megamouse 870224cde0 Emu/overlay: ingame native overlay PPU compilation 2021-03-31 09:38:30 +02:00
Eladash 1e71deb0db rsx: Compile shaders when CELL is not running 2021-03-30 11:13:47 +03:00
Megamouse ba45daff35 Qt: some cleanup in debugger 2021-03-24 20:47:51 +01:00
Nekotekina b3fb6d7d18 Add and fix -Wredundant-decls (GCC) 2021-03-23 22:48:57 +03:00
Eladash 1864419561 Fix SPU mapped memory page size 2021-03-19 22:25:08 +03:00
Megamouse 43ac33c2b4 cellSaveDataEnableOverlay 2021-03-18 11:11:34 +03:00
Eladash 1d7fbd6a9a Fix sceNpTrophyGet(Trophy/Game)Icon 2021-03-17 22:31: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
Nekotekina f801dc6558 Save all 8 syscall_args 2021-03-16 19:33:37 +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
Eladash a9b0d25c01
PPU Debugger: Fixup for syscall arguments (#9932) 2021-03-16 16:20:45 +03:00
shockdude 6a14849381
sys_usbd: DJ Hero Turntable Emulation (#9965)
* Initial Turntable Emulation
2021-03-14 23:48:50 +03:00
Nekotekina 0327ecc5c1 Enable -Wduplicated-cond (GCC) 2021-03-13 18:46:59 +03:00
Nekotekina c22e1e71f0 Continue fixing strict aliasing warnings 2021-03-13 18:02:37 +03:00
Eladash aff63028d4 SCE Decryption: Detect illegal RAP files 2021-03-13 11:51:40 +01:00
Eladash 923ba6f3bb Fix sysutil_send_system_cmd at Emu.Stop() 2021-03-12 21:01:48 +03:00
Eladash 729cd9284e debugger: Fix PPU threads pausing 2021-03-12 13:01:12 +03:00
Eladash cfa2d4aaa8 Loader: Log FNID of imported/exported functions 2021-03-11 15:23:58 +03:00
Nekotekina 03332c340d Implement utils::bless (pointer cast)
Tries to workaround strict aliasing troubles.
Don't confuse with std::bless which works differently.
2021-03-10 16:02:00 +03:00
Eladash 63ecb56b51 PPU interpreter hotfix 2021-03-10 13:41:13 +03:00
Nekotekina a4fdbf0a88 Enable -Wstrict-aliasing=1 (GCC)
Fixed partially.
2021-03-09 03:10:15 +03:00
Nekotekina 53af2dbb3f Add/fix warning -Wignored-qualifiers (GCC/clang)
Fix simple_array::const_iterator as a part of it.
2021-03-09 03:09:50 +03:00
xddxd df338f0552 Move sys_crashdump to it's own file and make it a module itself 2021-03-08 22:57:35 +03:00
Malcolm Jestadt e5d0e035d0 SPU LLVM: Rearange FM instruction for better performance
- Doesn't eliminate any instructions, but allows for better out of order execution.
2021-03-08 15:48:36 +03:00
Nekotekina 87af905018 Enable -Wunused-parameter 2021-03-06 18:07:08 +03:00
GitArUs f8097a428c
Allow games to list all savedata (#9547)
* cellSaveData - allow games to list all savedata, not only those they own.

Co-authored-by: Megamouse <studienricky89@googlemail.com>
2021-03-06 16:01:04 +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
Timothy Redaelli fa5a2b6a85 SPUThread.cpp: remove "__attribute__((always_inline))"
cmp_rdata and mov_rdata are using __attribute__((always_inline)),
without inline, that is not supported on current g++ (see RPCS3#1546).

Moreover __attribute__((always_inline)) is a noop if used without inline so
just remove it.

A proper fix is to move the 2 functions in an header file as static
(with FORCE_INLINE) so it can be correctly inlined by the compiler.
2021-03-04 12:17:27 +03:00
RipleyTom 0eb0b1e1c9 Add some GT6 devices to whitelist 2021-03-03 17:30:16 +03:00
Nekotekina 52fe86b56c fixed_typemap.hpp: make it a bit fool-proof
Require objects to be non-copyable (move is still allowed).
2021-03-02 21:58:49 +03:00
Eladash 004ebfdaee SPU debugger: Implement MFC journal
* Allow to dump up to 1820 commands with up 128 bytes of data each, using key D with the debugger.
2021-03-02 21:57:51 +03:00
Nekotekina ea5e837bd6 fixed_typemap.hpp: return reference 2021-03-02 16:08:14 +03:00
Nekotekina d788b12a8e fixed_typemap.hpp: reduce indirection
Backported some changes from auto_typemap.hpp
Implemented methods init(), reset(), clear()
Disabled recreation support.
2021-03-02 16:08:14 +03:00
Florin9doi dfee46604a Buzz settings 2021-02-28 22:36:47 +03:00
Megamouse a7c9827ad4
Improve cellScreenshot (#9851)
* Fix screenshot logging

* Update libpng to 1.6.37

* cellScreenshot: Write text chunks
* cellScreenshot: add overlay image
* screenshot_manager: add /dev_hdd0/photo/

* read_png_file: use deleter instead of manual close

* cellScreenshot: use Qt for overlays
* cellScreenshot: don't apply overlay to regular img
* screenshot_manager: add mount hack for VFS
* cellScreenshot: escape the whole path
2021-02-28 22:05:04 +03:00
Nekotekina f580bee32c Rewrite cellNetCtlNetStartDialogLoadAsync hack 2021-02-28 20:20:17 +03:00
RipleyTom 67378c7dea Add CELL_NET_CTL_INFO_DHCP_HOSTNAME impl 2021-02-26 11:58:42 +03:00
Nekotekina a90ad62fc0 Remove garbage SPUW perf report 2021-02-23 18:24:50 +03:00
Nekotekina 090a769bf6 Implement fs::sync (Linux/POSIX) 2021-02-23 18:24:50 +03:00
Nekotekina 014846cf31 cellSaveData: fix minor issues 2021-02-23 18:24:50 +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 68a878264c Minor GUI fix for PPU interpreter at "precompilation" 2021-02-23 17:35:45 +03:00
Eladash 9ccf39b27f Atomic SPU LS capture writes 2021-02-23 11:29:23 +03:00
Eladash d4af8dd89a Fix atomicity of savedata/trophy data writes 2021-02-23 11:29:23 +03:00
Eladash 932f31e37b Atomic PARAM.SFO writes 2021-02-23 11:29:23 +03:00
Eladash 96400234a8 Remove cpu_thread destructor 2021-02-22 12:47:45 +03:00
Megamouse f0b7afd7cc cellPad: minor optimization 2021-02-22 10:45:40 +01:00
RipleyTom 8be2a55ccc Add mutex lock for NP changes 2021-02-21 18:04:55 +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
Eladash 20eb4352fb
debugger: Fix single stepping (#9793) 2021-02-19 14:53:09 +03:00
Nekotekina 038148bf06 Fix almost all GCC warnings 2021-02-17 22:59:04 +03:00
Nekotekina 1446254a03 Add error on missing 'override'
For consistency.
2021-02-15 20:21:30 +03:00
Nekotekina 8e6e57de86 Enable -Wunused-function warning 2021-02-15 14:39:53 +03:00
Eladash f009d36811 Update log messages of PPU/SPU hashes and patches applied 2021-02-14 09:35:42 +01: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 cf384795d2 debugger: Improve PPU string constraints 2021-02-13 16:00:26 +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
Eladash e26ae9899c Reimplement/fix PRX patches 2021-02-12 15:27:59 +03:00
Nekotekina 4f8cac731b Fix SAFE_BUFFERS attribute for GCC 2021-02-09 12:33:50 +03:00
Nekotekina 0057c89eaa PPU Analyser: follow fallbacks in some cases
Fallback is an "invisible" branch to the next instruction.
This may be necessary for certain cases when patches are used.
2021-02-07 11:02:45 +03:00
Nekotekina 9e9a55df46 PPU LLVM: compile instructions from patches
For now, only as a single instruction at a time.
2021-02-07 11:02:31 +03:00
Nekotekina 9463238490 PPU Analyser: minor fixups for end pointer
Add more sanity checks for sections.
Remove some redundancy.
2021-02-07 11:02:31 +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 fad89f1c3b
Fix tiny race in PPU breakpoints (#9731)
If the PPU has just being paused by the debugger, before it entered the breakpoint handler, the PPU would continue onto the next instruction skipping the breakpoint but then being paused on it instead.
2021-02-07 00:25:40 +03:00
Eladash 4f85f151fd SPU: Always signal the debugger about termination 2021-02-03 15:05:38 +03:00
Eladash 478ae0715e Tiny fix for zombie PPU threads 2021-02-03 15:05:38 +03:00
Nekotekina 08aaae7999 PPU LLVM: workaround patch handling
Try to address #9704
2021-02-02 10:33:13 +03:00
Nekotekina 58eef983e2 PPU Analyser: fix constraints for all elfs.
Added for main executable and OVLs.
Forgot to use it not just for SPRX.
2021-02-01 19:14:24 +03:00
Nekotekina 7b40859eff Remove unused header 2021-02-01 19:14:01 +03:00
Nekotekina d0126f0fa0 Fix freezes in HLE Vdec and SPU LLVM precompilation.
Freezes could accidentally occur on close or ingame.
Deprecate range-for loop on lf_queue.
This is a part of PR #9208

Co-authored-by: Eladash <elad3356p@gmail.com>
2021-02-01 19:14:01 +03:00
Nekotekina 0c034ad7de PPU LLVM: upgrade to GHC call conv
Get rid of some global variables.
Implement ppu_escape (unused yet).
Bump PPU cache version to v4.
2021-02-01 11:30:50 +03:00
Nekotekina aeeceb7d0b Minor fixups 2021-02-01 11:30:50 +03:00
Nekotekina d5f16ce272 PPU Analyser: better constraints for SPRX 2021-02-01 11:30:50 +03:00
Nekotekina c89362f6a2 PPU LLVM: don't use module name as PRX indicator 2021-02-01 11:30:50 +03:00
Nekotekina 8a029159cd PPU Analyser: compile certain functions on per-instruction basis
PPU LLVM: optimize small blocks
2021-02-01 11:30:50 +03:00
Nekotekina 891ebd0cb1 PPU Analyser: use reloc info (disabled for now)
Add blocks from relocations.
2021-02-01 11:30:50 +03:00
Nekotekina 382509d778 PPU LLVM: Implement inline __add_get_ov 2021-02-01 11:30:50 +03:00
Nekotekina f9ee8978ff PPU LLVM: improve analyser
Compile possibly executable holes between detected functions.
Add unused "PPU LLVM Greedy Mode" option (for future updates).
Add "nounwind" attribute to compiled functions (reduces size).
2021-02-01 11:30:50 +03:00
Nekotekina cf6606065d PPU: fix some typos in asm code 2021-01-31 20:00:04 +03:00
Eladash 82c86ed2f7 Implement standalone OVL (overlay) loading mode
* Allow to load OVL alone.
* Add error checks in ppu_load_exec(), do not crash on error.
* Fix crash on exit from standalone PRX mode, allow kernel explorer to work with it as well for the added OVL mode.
2021-01-31 15:47:05 +03:00
Megamouse c464e90d5d Fix stop exit of check_only ppu_initialize 2021-01-31 12:18:32 +03:00
Megamouse 670d2b191c Minor optimization for check_only ppu_initialize 2021-01-31 12:18:32 +03:00
Megamouse 7bddb87306 Simplify compile threads 2021-01-31 12:18:32 +03:00
Megamouse 2025f02105 Search for more game data directories.
Also properly remove duplicate paths
2021-01-31 11:42:33 +03:00
Megamouse 1078626eea Fix ppu compilation progress dialog
We could only increase the value because we completely based the dialog on cellMsgDialog.
This led to an issue where the dialog would increase its maximum and thus decrease the current percentage.
It then couldn't decrease and was stuck on the old percentage.
2021-01-30 21:34:16 +01:00
Eladash 16c6b44f55
Fix #9680 (#9687)
Fix regression from #9680
2021-01-30 19:05:02 +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
Nekotekina bb2cc196a6 Fixup for preloading SPRX from MSELF
Forgot to append the offset.
Forgot to use different loop variable.
2021-01-29 21:26:34 +03:00
Eladash d3bc96a201 Fix minor issue with usage of STL thread::hardware_concurrency() 2021-01-29 18:23:29 +03:00
Nekotekina 11ba6e45ab Add MSELF support to SPRX precompilation.
Add ppu_precompile() function in PPUThread.cpp

Co-authored-by: Eladash <elad3356p@gmail.com>
2021-01-29 13:34:43 +03:00
Eladash 0652870204 New RSX Debugger 2021-01-28 17:40:26 +03:00
Nekotekina 34274ec391 Purge unused typeid() invocations 2021-01-28 10:23:29 +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
Nekotekina ee288340b0 Implement thread_ctrl::scoped_priority
RAII priority control (+1, or -1)
2021-01-25 21:49:16 +03:00
Nekotekina a69248299d SPU: Don't use shm::map_critical in SPU LS allocations
Use shm::try_map instead until proper area is found.
2021-01-25 17:45:47 +03:00
Malcolm Jestadt 486d48e4f8 SPU LLVM: Optimize ROTQBY family for VBMI
- Avoid masking pshufb index by 0xf by using vpermb instead.
- Also fix conversion of vperm2b index to ShuffleVector index.
2021-01-25 13:18:23 +03:00
Ani 7c62574e59 spu: Restore workers priority after initialization 2021-01-24 16:40:59 +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
Nekotekina f944573b3c Fix old warnings: remove strncpy
Use strcpy_trunc instead.
Change some sce structs.
2021-01-20 12:26:09 +03:00
Nekotekina f9bc682115 Refactor some 'offending' code a bit (no effect)
It appears linkage errors were rare even in debug mode (GCC/clang).
2021-01-18 21:58:28 +03:00
Malcolm Jestadt a2e8e3090c SPU LLVM: Optimize FSM following comparison
- FSM following a comparison instruction can be optimized to a single shuffle instruction
2021-01-17 16:52:44 +03:00
Nekotekina def364fe28 SPU LLVM: add splat_scalar helper
Unrolls into zshuffle from the preferred slot.
2021-01-17 15:13:28 +03:00
Eladash e4c3b1c2bd vm: Remove vm::dealloc_verbose_nothrow 2021-01-15 17:37:52 +03:00
Eladash e1f95ceb54
sceNpTrophy: Fix sceNpTrophyRegisterContext for handler abortion (#9586)
* Implement handler abortion during context registration.
* Fixed recursive calls to sceNpTrophy functions such as by callbacks from registering context.
* Turns out the reader lock for context registeration was incorrect because ctxt->tropusr and trophy directory are being modified. Made it an exclusive lock after callback.
2021-01-12 19:14:51 +03:00
Nekotekina db8e6fe7a7 Enable -Wunused-variable 2021-01-12 14:34:14 +03:00
Nekotekina ed345e5b65 Enable -Winvalid-offsetof 2021-01-12 13:01:17 +03:00
Megamouse 52deff06ba
Random stuff (#9589)
* minor coding style adjustment

* Qt: simplify osk dialog buttons

* replace std::find_if with convenience functions

* RSX: use sv in swizzle comparison

idk, I'll remove this if it was intentional.

* overlays/osk: rename enter to return

This one confused me and make me look for a bug that caused the "enter" key to be disabled, while it was actually the return key (obviously xD).
2021-01-12 12:59:50 +03:00
Eladash bf6f43ec3a Utils: Rewrite fmt::split 2021-01-08 22:23:48 +03:00
Megamouse 36159c2bd4 Add comment for deprecated avcodec_register_all
Apparently this is now done automatically and doesn't even need to be called at all
2021-01-08 14:36:49 +03:00
Nekotekina 586440622b Silence another warning (clang) 2021-01-07 12:46:45 +03:00
Eladash 951fe3491e PS3 Loader: Fix sections memorizing 2021-01-06 23:21:38 +03:00
Chris f8589de476
Initial playlist-based custom soundtracks support (#9362)
* Initial playlist-based custom soundtracks support

This is the initial implementation of playlist-based (cellSearch) custom soundtracks support.
It is based on the initial work by @Megamouse and currently uses a directory-based approach to manage albums and utilizes FFMPEG to read audio metadata.

Background: The real PS3 can import music in XMB from USB into its internal storage (/dev_hdd0/music) and additionally stores metadata (artist, trackname, tracknumber, ...) in a database (/dev_hdd0/mms/db/metadata_db_hdd). Games can make use of imported music via cellSearch.

For the time being, this implementation does NOT make use of metadata_db_hdd as the db-format is not well understood and a folder-based approch is easier to use. Users only have to create folders inside /dev_hdd0/music and add music to it to create a "playlist". This playlists contents will be sorted alphabetically. As a result, users could prefix numbers to the audio-files to force a specific order.

The only really supported audio format is MP3. I also added support for AAC, AC3, WMA, ATRAC3 and ATRAC3 plus, however, non of these formats were successfully tested for several reasons. AC3 and WMA are not enabled in the current FFMPEG build which makes reading codec-specific data impossible. We could enable these later if we want to. AAC actually could work but I was not able to get it working in WipeOut HD Fury. My guess is that the game does not support AAC. Finally, I could not find any ATRAC3 (or Plus) music to test with.

This implementation currently only implements parts of cellSearchStartListSearch() and cellSearchStartContentSearchInList(). There are several other functions which are still completely unimplemented and will probably be needed by other games. However, this implementation is a starting-point and is enough for WipeOut and maybe a few other games.

A video which showcases this custom soundtrack support is available here: https://www.youtube.com/watch?v=4nu1OCtONTY

Next steps:
 - Utilize sortKey in cellSearchStartContentSearchInList()
 - Eliminate TODOs
 - Implement the missing other functions
 - Test on more games - I do not own many that support custom soundtracks

Signed-off-by: gladiac1337 <gladiac@gmail.com>

Co-authored-by: Megamouse <studienricky89@googlemail.com>
Co-authored-by: Ani <ani-leo@outlook.com>
Co-authored-by: Ivan <nekotekina@gmail.com>
2020-12-31 22:47:09 +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
Nekotekina 5227e65808 vm: implement vm::atomic_op, fetch_op helpers
Can help to reduce lambda depth hell a little.
2020-12-30 20:11:02 +03:00
Malcolm Jestadt c952e99f3e SPU LLVM: Fix edgecase in icelake codegen 2020-12-29 22:01:11 +03:00
Nekotekina 35322b5d14 Remove deprecated _bit accessor from v128
Complicated (a lot of code), confusing (ambiguous)
2020-12-29 21:04:28 +03:00
Nekotekina 6b96807112 Reimplement utils::popcnt64
Implement utils::popcnt128
2020-12-29 15:28:02 +03:00
Florin9doi 733f31f90e Allow USB passthrough for THQ uDraw GameTablet 2020-12-25 14:27:24 +03:00
Eladash c94a98e15a Fix minor typo 2020-12-23 20:50:33 +03:00
Eladash 72e6e87d82 Fix SPU ELF loader 2020-12-23 20:50:33 +03:00
Eladash d17d22139e SPU Debugger: Print reservation data 2020-12-23 08:25:56 +03:00
Nekotekina a8e0d261b7 types.hpp: more cleanup
Also fix compilation.
2020-12-22 19:08:09 +03:00
Nekotekina 43a58df8a0 Butcher narrow cast a little (don't print value).
Also remove some forward declarations from util/types.hpp
If they don't work properly, it's easier to remove them.
2020-12-22 14:32:30 +03:00