Commit graph

9960 commits

Author SHA1 Message Date
kd-11 b6b9085773 rsx: Use unsigned variables to avoid sign problems when calculating stipple bits 2021-01-21 10:24:49 +03:00
Nekotekina 241989c5fa Fix new warnings
Added CELL_GCM_CONTEXT_DMA_NOTIFY_MAIN_0+ enums.
Added CELL_GCM_CONTEXT_DMA_TO_MEMORY_GET_NOTIFY0+ enums.

Co-authored-by: Eladash <elad3356p@gmail.com>
2021-01-20 12:27:37 +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
RipleyTom 5662867730 Change the way skylander ID is generated 2021-01-20 08:46:39 +03:00
Eladash dbecf0fa50 Introducing RSX debugger entry (main debugger) 2021-01-19 22:55:12 +03:00
Megamouse 62cb532460 Qt: hotfix for downloader
I accidentally broke the download progress bar in the last related PR.
I should've put more trust in the sanity of the younger version of myself.
This should fix it.
2021-01-18 22:41:31 +01: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
Nekotekina 8a2a76da1e texture_cache: fix some warnings in AUDIT 2021-01-18 13:49:59 +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 0ac68def49 vm_native.cpp: minor compilation fix 2021-01-17 15:14:11 +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
Alex James d7a8d385d8 CMake: Use find_package to find SDL2
This ensures that the SDL2 uses an absolute library path, which is
necessary when SDL2 isn't present in the default link directories (e.g.
on macOS).
2021-01-17 13:51:03 +03:00
Nekotekina aaaeb66cc8 vm: Minor fix in vm::close
Supplied size was wrong.
2021-01-15 20:12:30 +03:00
Nekotekina 4ed76a15ff Use different approach in shm::unmap_critical (Linux)
For now, set protection to PROT_NONE.
Attempt to address #9609
2021-01-15 20:11:09 +03:00
Nekotekina b5837d1271 Memory: use MADV_DONTDUMP if available (Linux)
Also refactor other madvise() usage
2021-01-15 19:54:41 +03:00
Eladash e4c3b1c2bd vm: Remove vm::dealloc_verbose_nothrow 2021-01-15 17:37:52 +03:00
Nekotekina ea916fd7e1 Memory: fix critical bug in shm::unmap_critical (Linux)
It was leaving holes in reserved areas.
Windows is unaffected.
2021-01-14 18:04:29 +03:00
Nekotekina 4bee8dc37f Crypto: modernize key_vault.h
Use constexpr, remove warning guards
2021-01-14 15:23:52 +03:00
Nekotekina 8b01d05146 Crypto: modernize ec.h
Add const, use u8
2021-01-14 15:17:07 +03:00
Nekotekina 376e564cff Crypto: make global vars in ec.cpp thread_local 2021-01-14 12:01:41 +03:00
Nekotekina caf02d1841 Crypto: don't modify EDAT_IV (all zeros)
I didn't notice where it gets restored to zeros.
2021-01-13 21:57:38 +03:00
Nekotekina 6cf73fad13 Crypto: workaround -Wunused-variable
Ignore for key vault for now.
2021-01-13 19:02:14 +03:00
Megamouse cfe660ab35 Qt/curl: fix segfault in curl
The QThread lived longer than the m_curl object.
This lead to a crash when closing RPCS3 while the download is still in progress.
2021-01-13 19:01:58 +03:00
Megamouse 8eaf76394c Qt/Input: Use ellipsis as "mouse deadzone"
This is experimental and smoothens the existing square shaped deadzone
2021-01-13 11:25:33 +01:00
Megamouse a692adefd7 Remove legacy patch support 2021-01-13 10:39:17 +01:00
Eladash e05f1c37ad memory viewer: Close all instances after emulation exit 2021-01-12 23:57:36 +03:00
Eladash 923fcc3b3d utils::shm: Hotfix after #9578 2021-01-12 23:57:36 +03:00
Eladash c50b9bc4b4
utils::shm: Make map_self() atomic (#9578) 2021-01-12 19:53:18 +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
Megamouse eb77495d5f Implement richtext_item_delegate
And use it in pkg_install_dialog
2021-01-12 14:13:15 +01:00
Megamouse 270d602a26 Add filename to multi pkg installation
Some packages are indistinguishable otherwise
2021-01-12 14:13:15 +01:00
Megamouse dd41ee68de Simplify numbered_widget_item 2021-01-12 14:13:15 +01:00
Megamouse 46dc40f3f1 Add filename to single pkg installation
Some file info is indistinguishable otherwise
2021-01-12 14:13:15 +01:00
Megamouse 7c7af2e102 fix rebase conflicts 2021-01-12 14:13:15 +01:00
Megamouse 36189b8c3b Try to distinguish between Update and DLC (Part 2) 2021-01-12 14:13:15 +01:00
Megamouse cde802b16c Move blocking code in order to free the explorer 2021-01-12 14:13:15 +01:00
Megamouse 1500e5f588 Try to distinguish between Update and DLC 2021-01-12 14:13:15 +01:00
Megamouse fbe91fb245 fix linux compilation 2021-01-12 14:13:15 +01:00
Megamouse 321e7d6977 Don't hide the PKG install progress dialog after each package 2021-01-12 14:13:15 +01:00
Megamouse 56488a4ac9 Use boolean values in unedat 2021-01-12 14:13:15 +01:00
Megamouse 4a75f44d47 Minor include cleanup in utlis.h 2021-01-12 14:13:15 +01:00
Megamouse deb4b03200 Add VERSION fallback to GetPkgInfo 2021-01-12 14:13:15 +01:00
Megamouse df94c906da Add more info to PKG install progress dialog
And fix installation of single packages
2021-01-12 14:13:15 +01:00
Megamouse 4d50d9daa4 unpkg: add missing break and some cleanup 2021-01-12 14:13:15 +01:00
Megamouse 0624bdc72d Use package reader in pkg_install_dialog 2021-01-12 14:13:15 +01:00
Megamouse ccec6e53c0 Rename package_reader member variables 2021-01-12 14:13:15 +01:00
Megamouse 68d411918d Read patchsets from compat db 2021-01-12 14:13:15 +01:00
Nekotekina 0af452720e RSX: Fix possible bug in memory streaming utils 2021-01-12 15:06:31 +03:00
Nekotekina db8e6fe7a7 Enable -Wunused-variable 2021-01-12 14:34:14 +03:00
Nekotekina 631d7d0ce7 Enable -Wunknown-pragmas 2021-01-12 13:01:17 +03:00
Nekotekina ed345e5b65 Enable -Winvalid-offsetof 2021-01-12 13:01:17 +03:00
Nekotekina d3a66af7d6 Enable -Wcomment warning 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
Megamouse 838cbe1840 tiny include fix 2021-01-11 13:04:46 +03:00
Eladash 70804e2ba6 kernel explorer: Make it single-instance tool 2021-01-10 20:30:23 +01:00
Eladash 07c925223b rsx: Fix index array offset bits 2021-01-10 18:40:02 +03:00
kd-11 c2cbc62be6 vk: Refactor some uber-headers
- VKHelpers was the rug everything was swept under for a long time.
  This commit essentially deprecates its usage across most of the backend.
2021-01-10 12:04:31 +03:00
Nekotekina 9d74d42f2a Fix compilation for gcc-11
In response to #9557
2021-01-09 14:38:01 +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
Megamouse 72e1d03860 Qt: ugly fix for ugly deprecation warning
Apparently Qt wants us to implement each comparison on our own, and there is no simple replacement for this.
2021-01-08 14:36:49 +03:00
Megamouse ed1b8f2545 game_list: fix deprecation warning
We only need to check if the data is valid for clicks on empty space in the game grid. I don't remember why I initially checked < 0
2021-01-08 14:36:49 +03:00
Nekotekina 1ad0f24ecd Fix or silence Qt warnings 2021-01-07 13:18:48 +03:00
Nekotekina 586440622b Silence another warning (clang) 2021-01-07 12:46:45 +03:00
Nekotekina 6231b07d2a Silence one warning (clang) 2021-01-07 12:42:15 +03:00
Nekotekina 1dcf5e4f85 Error on no return type warning
Added non-existing noreturn destructor to fmt::throw_exception (for clang).
2021-01-07 11:56:16 +03:00
Nekotekina 9ba8f4795c Remove redundant #pragma once 2021-01-06 23:33:37 +03:00
Eladash 951fe3491e PS3 Loader: Fix sections memorizing 2021-01-06 23:21:38 +03:00
Nekotekina 6ae1f1b02c VFS: fixup handling . and .. after #9528 2021-01-05 16:16:01 +03:00
Nekotekina 673e84920b fixed_typemap.hpp: remove useless reporters 2021-01-05 16:16:01 +03:00
Eladash d1e1c14dc3 VFS: Escape path components which end with space or period 2021-01-05 16:15:47 +03:00
Megamouse 11db3151ae
VK refactoring Part 2 (#9542) 2021-01-05 10:49:03 +03:00
matoro 187216096d Build: Add include for building on certain configs 2021-01-04 10:04:51 +03:00
kd-11 3f9b699eef rsx: Fix ambiguous call to min(float16_t, float) 2021-01-04 02:28:24 +03:00
kd-11 cbe0000d23 Improved Zen chip detection 2021-01-03 19:31:18 +03:00
Eladash 0e278d2299 rsx: Make FP shader cache load lock-free 2021-01-03 01:47:07 +03:00
Eladash 21d725daa5 rsx: Fix shader cache of 2 or less pipelines 2021-01-03 01:47:07 +03:00
Eladash 247e90b3d0 rsx: Shaders cache loading and saving bugfixes
* Fixed crash whenever files are missing from the cache.
* Fixed crash whenever files are empty.
* Fixed crash whenever file creation/overwrite of cache files failed. (handled by fs::write_file)
* Fixed crash whenever there are any subdirectories inside the pipelines cache directories.
* Overwrite invalid shader cache files if encountered such.
* Optimizations have been added.
2021-01-03 01:47:07 +03:00
Ani 2b8eb8deb6 rpcs3_version: Bump to 0.0.14 2020-12-31 23:15:54 +03:00
Megamouse 7262f3d0b7 VK: make static chip_family_tables const 2020-12-31 22:57:17 +03:00
Megamouse 6f80fd0063 VK: move static chip_family_tables to cpp 2020-12-31 22:57:17 +03:00
Megamouse 7a51b7a019 VK: move helpers to vkutils 2020-12-31 22:57:17 +03:00
Megamouse d9eb31000d VK: refactoring part 1 2020-12-31 22:57:17 +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 8a5620592b Implement util/fifo_mutex.hpp
Prototype. Uses 2 bytes.
Added minor fix to slow_mutex.hpp as well.
2020-12-31 20:07:50 +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
Eladash c4c6dc19a5 memory viewer: Implement SPU mode, fix address GOTO 2020-12-30 15:42:56 +03:00
Eladash 7fc26b1fab rsx: Implement Texture LOD Bias addend setting 2020-12-30 15:37:21 +03:00
Eladash c0e121abef rsx: Fix RSXTexture.h spacing 2020-12-30 15:37:21 +03:00
Eladash 7db13fdeff rsx: Move Anisotropic Filter Override to RSX state 2020-12-30 15:37:21 +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
JohnHolmesII e04b2eebc3 Warnings: Silence false warnings about fatal code paths 2020-12-29 14:17:34 +03:00
JohnHolmesII 02b684b810 Warnings: Warnings use kebab case, Mr. Kot 2020-12-29 14:17:34 +03:00
kd-11 18c120ab9f rsx: Revert an accidental deletion 2020-12-28 21:49:11 +03:00
kd-11 f87dd91b52 rsx: Allow attempted fetch of non-existent surface 2020-12-28 21:49:11 +03:00
RipleyTom 4a8a161a43 Improve skylander portal emulator 2020-12-27 22:20:58 +01:00
Nekotekina e3dec420a2 vm_native.cpp: conditionally define c_madv_free 2020-12-27 12:19:50 +03:00
Nekotekina 1e32311a65 Use MAP_NORESERVE when available in mmap (Linux)
Used in: memory_reserve, memory_decommit (vm_native.cpp)
2020-12-27 10:20:42 +03:00
Marin Baron 92e5bb88e8 Remove std typeinfo 2020-12-27 00:30:16 +03:00
Eladash 66581d115b vm: Fix access violations on super memory, support super memory in vm::get_addr 2020-12-26 17:56:49 +03:00
Florin9doi 733f31f90e Allow USB passthrough for THQ uDraw GameTablet 2020-12-25 14:27:24 +03:00
kd-11 a96b4412d3 rsx: Do not rely on program env state, instead, always use program ucode analysis results when doing codegen
- Some things can be present in program env but not ucode state
  e.g A texture can be active and bound in a redirected manner but not actually be used in ucode
  In such a case, only the ucode analysis or decompilation can decide whether to inject decoding routines
2020-12-25 02:39:08 +03:00
kd-11 bee76fc8d1 rsx: Refactor shader codegen and fix shadow sampling on depth-float 2020-12-25 02:39:08 +03:00
kd-11 d9cb1a6319 vk: Fix more spec violations 2020-12-25 02:39:08 +03:00
Nekotekina 567d23d856 Implement util/auto_typemap.hpp
Used in vm::block_t as an example.
2020-12-24 14:55:25 +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 0055d84bd6 Partial revert of 43c87e99b0 2020-12-23 08:25:56 +03:00
Eladash d17d22139e SPU Debugger: Print reservation data 2020-12-23 08:25:56 +03:00
Eladash 87b6284275 memory viewer: Only allow "words" steps in powers of 2 2020-12-23 08:25:56 +03:00
Eladash 2c6b974f24 Fixup memory viewer SPU headers for RawSPU 2020-12-23 08:25:56 +03:00
Eladash 020acc8235 GUI: Rewrite GOTO address tools in debugger tools 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 6357b9a04f perf_meter.cpp: register only named threads
Can workaround some possible problems.
2020-12-22 14:32:30 +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
Nekotekina b7bf316c1a Don't randomly include "stdafx.h"
It's file for precompiled headers.
Include what is used, don't rely on transitive includes.
2020-12-22 14:32:30 +03:00
Nekotekina 41ee792f95 MSVC: remove MemLeak build support
There are better memleak detection tools.
1) Requires to guard placement new and external libs
2) Doesn't work thoroughly
2020-12-22 14:32:30 +03:00
Fro Zen acadaeed3a Change skylander variants to use hex 2020-12-22 08:58:36 +01:00
Jan Beich 96bde3df81 atomic.hpp: revert Clang < 11 workaround for u128 2020-12-22 09:00:34 +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 5f618814f6 atomic.hpp: use u128 as storage for masks/values 2020-12-21 13:51:23 +03:00
Eladash 43c87e99b0 Debugger: Switch from NoThread when the emulation is running
And fix UpdateUnitList() when the emulation is stopped at initial startup.
2020-12-21 13:46:26 +03:00
Eladash 74a09a6338 PPU memory must be exec memory when using debugger's "Next Instruction" feature 2020-12-21 13:46:26 +03:00
Eladash 2b9c407dc3 Mask PC in debugger_frame::keyPressEvent for SPU
SPU only has 256kb of memory, need to work with this.
2020-12-21 13:46:26 +03:00
Eladash 59ed222205 Disasm: read instruction contents only once
Memory is volatile and may be changed by guest threads, ensure the decoded instruction matches with the data.
2020-12-21 13:46:26 +03:00
Eladash 2c06043617 Debugger: correctness fixes and cleanup
* Remove m_current_choice, it's not correct to rely on thread name entry. In extreme corner cases a newly thread can be created, old destroyed with the same entry name. (reoccuring LV2 SPU/PPU ID)
* Remove m_no_thread_selected, can be easily replaced with std::weak_ptr expired() function and is more accurate this way.
* In HandleBreakpointRequest: only remove breakpoint on valid PPU thread and not any thread! also fix potential nullptr deref if thread has recently been destroyed.
2020-12-21 13:46:26 +03:00
Eladash ef884642e4 Cleanup disasm classes a bit 2020-12-21 13:46:26 +03:00
kd-11 e449111c33 vk: Fixup for renderpass issues 2020-12-19 12:58:44 +03:00
Megamouse 066e53da55 minor cleanup 2020-12-19 08:33:53 +01:00
Eladash c74b2cb085 memory viewer: Fix resizing down 2020-12-18 21:00:09 +01: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 d254a5736b Fix bug with vector arg alignment in BIND_FUNC and callbacks. 2020-12-18 18:07:42 +03:00
Megamouse b655e4aa47 Emu: implement on_exit callback 2020-12-18 16:05:40 +01:00
Nekotekina 1adec3d8e5 Hotfix: Emu.Quit after Emu.Stop 2020-12-18 13:37:14 +03:00
Nekotekina db9b7db531 Cleanup and move sysinfo.h -> util/sysinfo.hpp 2020-12-18 12:55:54 +03:00
Nekotekina 05099e2ae1 Replace uint64_t with u64 2020-12-18 12:23:53 +03:00
Nekotekina 77352a2a86 Replace uint32_t with u32 2020-12-18 12:23:53 +03:00
Nekotekina ae633292c0 Replace int32_t with s32 2020-12-18 12:23:53 +03:00
Nekotekina d6042cf891 Replace uint16_t with u16 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 360c4d1554 Simplify f16 type 2020-12-18 12:23:53 +03:00
Nekotekina 4cfa9b11f3 Move busy_wait() to asm.hpp 2020-12-18 12:23:53 +03:00
Megamouse 908465b274 memory viewer: improve layout and resize 2020-12-18 09:58:12 +01:00
Megamouse a7f10d142e fix warning 2020-12-18 09:58:12 +01:00
Megamouse e855673802 memory viewer: check width and height in image viewer 2020-12-18 09:58:12 +01:00
Megamouse 112ac7bd13 memory viewer: fix RGB Image viewer crash 2020-12-18 09:58:12 +01:00