Commit Graph

48 Commits

Author SHA1 Message Date
Eladash
e79fc867c5 Patches: Add savable breakpoints patch type 2023-09-26 11:06:01 +03: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
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
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
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
Eladash
f98595bee5 Patches/PPU: Add jump_link patch type 2021-09-10 11:46:39 +03:00
Megamouse
3c0681ad6d Qt: patch creator 2021-09-04 10:39:32 +02: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
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
p01arst0rm
1de7ac3c67 added inline suggestion to patch_engine_version to prevent duplicate includes 2021-04-13 09:14:53 +03:00
Nekotekina
2212a131ef Fix some -Weffc++ warnings (part 1) 2021-03-31 11:27:09 +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
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
Megamouse
511e9920c2 patch_engine: Apply patch when APP_VER is unknown 2020-09-21 11:59:57 +02:00
Megamouse
46e8b4f561 patch_manager: add download button 2020-09-09 20:34:17 +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
cf2e2a0511 patch_manager: one patch per group across hashes 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
5affc459a2 patch manager: Allow partial patch file import 2020-06-21 15:48:30 +02:00
Megamouse
cd4ed11700 patch manager: Add patch removal to context menu
Also avoid saving empty patch maps
2020-06-21 15:48:30 +02:00
Megamouse
fd2cd84555 patch manager: Skip lower patch_versions 2020-06-21 15:48:30 +02:00
Megamouse
bf978ac8ca patch manager: properly check patch versions
Also abort patch import of lower patch versions
2020-06-21 15:48:30 +02:00
Megamouse
d3c6472c0f patch manager: replace Version and Title keys
With Patch Version and Game Title
2020-06-21 15:48:30 +02:00
Megamouse
591624b96c patch manager: avoid patch import inconsistencies
Save the original patch value instead of the interpreted value
2020-06-21 15:48:30 +02:00
Megamouse
2323cd2a2d patch manager: move title + serials to patch level
Also bump patch file version to 1.1
2020-06-21 15:48:30 +02:00
Megamouse
cc5c89539b patch manager: improve error handling
There shouldn't be much left that can crash this thing
2020-06-21 15:48:30 +02:00
Megamouse
a7ee059419 patch manager: import patches 2020-06-21 15:48:30 +02:00
Megamouse
4a03f06175 patch manager: add checkbox for "enable legacy" 2020-06-11 16:31:49 +02:00
Megamouse
2dca8d84e1 patch manager 2020-06-11 13:15:25 +02:00
Malcolm Jestadt
ad8988afd3 Embedded SPU elf patching
- PS3 games include both PPU and SPU code in their PPU executables, so to make patching games that make use of the same SPU libraries easier, we add a system to find and patch them.
- Patches for this system still use SPU LS (Local Storage) addresses despite the fact that we aren't loading anything into SPU LS at this time. The patches are checked against each segment and patched in place.
2020-01-28 02:13:37 +03:00
Nekotekina
dfd50d0185 Implement std::bit_cast<>
Partial implementation of std::bit_cast from C++20.
Also fix most strict-aliasing rule break warnings (gcc).
2019-06-02 23:22:16 +03:00
Nekotekina
18d472b7e1 Patch: new 'load' syntax
[load, path_name1] - load sequence
[load, path_name2, -0x40] - same, but modify the addresses by -64
2017-09-19 15:07:07 +03:00
Nekotekina
f91f2e3e6d Patch: add floating point support
Also count applied entries
2017-07-17 18:36:54 +03:00
Nekotekina
78b9c64f67 Simple patch engine 2017-03-30 12:04:59 +03:00