mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2026-03-28 22:49:42 -06:00
Some checks are pending
Build and Release / reuse (push) Waiting to run
Build and Release / clang-format (push) Waiting to run
Build and Release / get-info (push) Waiting to run
Build and Release / windows-sdl (push) Blocked by required conditions
Build and Release / windows-qt (push) Blocked by required conditions
Build and Release / macos-sdl (push) Blocked by required conditions
Build and Release / macos-qt (push) Blocked by required conditions
Build and Release / linux-sdl (push) Blocked by required conditions
Build and Release / linux-qt (push) Blocked by required conditions
Build and Release / linux-sdl-gcc (push) Blocked by required conditions
Build and Release / linux-qt-gcc (push) Blocked by required conditions
Build and Release / pre-release (push) Blocked by required conditions
* add simple IPC protocol to allow communication via stdin/stdout * ipc: add PATCH_MEMORY command enables patches & cheates
53 lines
1.3 KiB
C++
53 lines
1.3 KiB
C++
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
#pragma once
|
|
#include <cstring>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#if defined(WIN32)
|
|
#define EXPORT __declspec(dllexport)
|
|
#else
|
|
#define EXPORT __attribute__((visibility("default")))
|
|
#endif
|
|
|
|
namespace MemoryPatcher {
|
|
|
|
extern EXPORT uintptr_t g_eboot_address;
|
|
extern uint64_t g_eboot_image_size;
|
|
extern std::string g_game_serial;
|
|
extern std::string patchFile;
|
|
|
|
enum PatchMask : uint8_t {
|
|
None,
|
|
Mask,
|
|
Mask_Jump32,
|
|
};
|
|
|
|
struct patchInfo {
|
|
std::string gameSerial;
|
|
std::string modNameStr;
|
|
std::string offsetStr;
|
|
std::string valueStr;
|
|
std::string targetStr;
|
|
std::string sizeStr;
|
|
bool isOffset;
|
|
bool littleEndian;
|
|
PatchMask patchMask;
|
|
int maskOffset;
|
|
};
|
|
|
|
std::string convertValueToHex(const std::string type, const std::string valueStr);
|
|
|
|
void OnGameLoaded();
|
|
void AddPatchToQueue(patchInfo patchToAdd);
|
|
|
|
void PatchMemory(std::string modNameStr, std::string offsetStr, std::string valueStr,
|
|
std::string targetStr, std::string sizeStr, bool isOffset, bool littleEndian,
|
|
PatchMask patchMask = PatchMask::None, int maskOffset = 0);
|
|
|
|
static std::vector<int32_t> PatternToByte(const std::string& pattern);
|
|
uintptr_t PatternScan(const std::string& signature);
|
|
|
|
} // namespace MemoryPatcher
|