Commit Graph

95 Commits

Author SHA1 Message Date
Megamouse
59c58aa3cf fix some warnings 2023-12-30 19:07:35 +01:00
Eladash
e79fc867c5 Patches: Add savable breakpoints patch type 2023-09-26 11:06:01 +03:00
Megamouse
f199ad7a42 patches: Improve location logging for invalid note sequence 2023-08-12 14:43:47 +02:00
Megamouse
d119cf6e96 Qt6 port 2023-07-31 20:03:24 +03:00
oltolm
bc40b61ef1 rename fs::stat to fs::get_stat 2023-07-25 12:15:08 +03:00
Eladash
95fb7859d2 Fixup patches 2023-07-24 17:07:15 +03:00
Megamouse
3381144d2e Patches: improve location logging of some invalid nodes 2023-07-13 08:40:19 +02:00
Megamouse
a19883f875 Patches: do not allow empty patch names 2023-07-13 08:40:19 +02:00
Megamouse
02bac61c9c Patches: validate yml patch offset values 2023-07-13 08:40:19 +02:00
Eladash
083b4f0d3b Patches: Fix potential RPCS3 crashes due to invalid patches 2023-07-13 07:38:46 +03:00
Eladash
554b27a82a PPU LLVM: Implement SELF precompilation
Do not use PS3 memory for precompilation.
2023-06-28 18:34:33 +03:00
Megamouse
cc145eaf2e patches: fix move_file/hide_file error 2023-03-04 19:18:36 +01:00
Eladash
382a7c94a2 Patches: Virtual move/remove game files patches 2023-03-03 20:56:11 +01:00
Megamouse
f0c8f6d47b patch_manager: check config values before applying them 2023-02-22 01:17:36 +01:00
Megamouse
a29dc3893f patch_manager: change wording 2023-02-22 01:17:36 +01:00
Megamouse
c6f392bf6c patch_manager: allow multiple dynamic values 2023-02-22 01:17:36 +01:00
Megamouse
f2ded2fdb7 patch_manager: Add dropdown labels 2023-02-22 01:17:36 +01:00
Megamouse
080737fd1f patch_manager: add more dynamic to dynamic patches 2023-02-22 01:17:36 +01:00
Megamouse
1040757556 patch_manager: add ability to add dynamic patches 2023-02-22 01:17:36 +01:00
Margen67
5bb89328d0 Remove whitespace 2023-02-15 08:58:02 +01:00
Megamouse
9b7eaf5117 Improve error logging 2023-01-09 21:06:51 +01:00
Eladash
7df093c94b Make it work with LLVM
Allow multiple entries for a single code.
2022-12-09 21:16:05 +03:00
Eladash
f572e29a13 PPU: Add new patch function for SONIC 06 2022-12-09 21:16:05 +03:00
Nekotekina
6ff6a4989a Implement at32() util
Works like .at() but uses source location for "exception".
2022-09-26 18:04:15 +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
Timo654
afae58b231 Interpret negative values in game patches 2022-04-18 17:01:19 +03:00
Megamouse
b04bd5fa74 patch_manager: check if address has hex format 2022-04-12 10:21:21 +02:00
Megamouse
4dfb47cdd9 Patch manager: check for invalid value node 2022-04-09 21:26:06 +02:00
Megamouse
499fe3e218 Patch manager: add node location to patch errors 2022-04-09 21:26:06 +02:00
Nekotekina
e3e6fb5489 Don't use vm::preallocated flag in patch enclave allocs 2021-12-26 14:40:21 +03:00
Eladash
75e66ab5e0 Make pad and patches config savinng atomic 2021-10-10 09:34:50 +02:00
Eladash
65c9cd99cd Patches/PPU: Implement HLE/LLE/With-TOC function call patches
Example patches:
  [ jumpf, 0x12340, "cellGcmSys:cellGcmSetFlip"] // Places a call to cellGcmSetFlip at 0x12340
  [ jumpf, 0x12340, "cellGcmSys:0xDC09357E"] // Same, using FNID
  [ jumpf, 0x12340, 0x2345678 ] # Function OPD based call eading OPD at 0x2345678
2021-09-26 20:49:57 +03:00
Megamouse
129ade2f73 System: only init fxo objects if a game is started
The progress_dialog and patch system aren't needed unless a game is started.
Before, they were both initialized everytime we added a single game to the game list or even when simply started RPCS3.
This both means that a thread was needlessly idling all the time and even worse: The patch.yml was read countless times when we didn't need it.
2021-09-17 22:45:14 +02: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
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
Megamouse
3c0681ad6d Qt: patch creator 2021-09-04 10:39:32 +02: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
Eladash
ddb042148d Patches/LLVM: Implement Complex Patches Support 2021-08-26 23:04:32 +03:00
Eladash
7fdbadf645 patch_manager: Prefer specific patches over global patches 2021-08-09 18:12:17 +02:00
Nekotekina
5724d2d4c7 Simplify umax
Add operator less and conversion operator.
2021-04-29 12:21:12 +03:00
Megamouse
a16d8ba3ea More random changes 2021-04-11 14:01:51 +03:00
Nekotekina
a4fdbf0a88 Enable -Wstrict-aliasing=1 (GCC)
Fixed partially.
2021-03-09 03:10:15 +03:00
Nekotekina
629d608d4f Patch engine: add bd32, bd64 and utf8 patch types
bd32 is the same as be32 with a hint it's not executable.
utf8 is NOT null-terminated string, null can be added manually.
2021-02-12 21:43:30 +03:00
Eladash
e26ae9899c Reimplement/fix PRX patches 2021-02-12 15:27:59 +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
Megamouse
a692adefd7 Remove legacy patch support 2021-01-13 10:39:17 +01:00
RipleyTom
bef2c50b03 Remove bom in Utilities dir 2020-12-25 10:07:40 +03:00
Nekotekina
fb29933d3d Add usz alias for std::size_t 2020-12-18 12:23:53 +03:00