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
Nekotekina
e321765c54
Split BEType.h to util/v128.hpp and util/to_endian.hpp
2020-12-13 16:34:45 +03:00
Nekotekina
36c8654fb8
Remove HERE macro
...
Some cleanup.
Add location to some functions.
2020-12-10 12:30:22 +03:00
Megamouse
6fcc68699a
unify patch log
2020-11-07 19:22:40 +01:00
Megamouse
511e9920c2
patch_engine: Apply patch when APP_VER is unknown
2020-09-21 11:59:57 +02:00
Megamouse
fb62c297fa
patch_manager: log g_tls_error
2020-09-10 06:58:44 +02:00
Megamouse
46e8b4f561
patch_manager: add download button
2020-09-09 20:34:17 +02:00
Megamouse
d0bb9d2b62
cheat_manager: move cheats.yml to patches folder
2020-07-29 13:18:33 +02:00
illusion
60f05fdbf3
move applied patch log level to success
2020-07-13 22:33:03 +02:00
Megamouse
55e907385b
patch_manager: warning for incompatible patches ( #8535 )
...
* patch_manager: warning for incompatible patches
This will open a warning dialog whenever the patch manager is opened and incompatible patches are detected.
* Apply suggestions from code review
Co-authored-by: Bird Egop <sampletext32@bk.ru>
Co-authored-by: Bird Egop <sampletext32@bk.ru>
2020-06-30 21:35:15 +02:00
Megamouse
6742fad753
patch_manager: fix import, use constants as keys
...
And improve import logging again
2020-06-30 00:45:17 +02:00
Megamouse
c6190fa95d
patch_manager: improve import logging
...
imported_patch.yml has to be the latest version too
2020-06-29 23:56:27 +02:00
Megamouse
98eb0cd3f2
patch_manager: fix legacy patches again
2020-06-29 23:56:27 +02:00
Megamouse
541e20cbec
patch_manager: allow Notes as sequence
2020-06-29 23:56:27 +02:00
Megamouse
a5368d766a
patch_manager: prefer specific > global (per hash)
2020-06-29 23:56:27 +02:00
Megamouse
cf2e2a0511
patch_manager: one patch per group across hashes
2020-06-29 23:56:27 +02:00
Megamouse
3a17eefde7
patch_manager: restrict All serials to All titles
2020-06-29 23:56:27 +02:00
Megamouse
c72a6f8e6f
patch_manager: prefer serial patches over All
2020-06-29 23:56:27 +02:00
Megamouse
6a486d3402
patch_manager: only apply one patch per group
...
So far this was purely handled in the GUI
2020-06-29 23:56:27 +02:00
Megamouse
e43db24b2c
patch_manager: add All override
...
All can now be used as a key for title, serial and/or app version.
If you check a patch for all ... then the patch will be applied regardless of what's checked for the game specifically, because we do not save 'Unchecked' patches.
2020-06-29 23:56:27 +02:00
Megamouse
12dded403f
patch_manager: implement serials and app_versions
2020-06-29 23:56:27 +02:00
Megamouse
abec850379
patch_manager: add hash to applied log message
2020-06-24 15:31:55 +02:00