1
0
mirror of https://github.com/RPCS3/rpcs3.git synced 2024-11-22 02:32:36 +01:00
rpcs3/Utilities/bin_patch.h

49 lines
676 B
C
Raw Normal View History

2017-03-29 01:54:05 +02:00
#pragma once
#include "BEType.h"
#include <vector>
#include <string>
#include <unordered_map>
enum class patch_type
{
load,
2017-03-29 01:54:05 +02:00
byte,
le16,
le32,
le64,
lef32,
lef64,
2017-03-29 01:54:05 +02:00
be16,
be32,
be64,
bef32,
bef64,
2017-03-29 01:54:05 +02:00
};
class patch_engine
{
struct patch
{
patch_type type;
u32 offset;
u64 value;
template <typename T>
T& value_as()
{
return *reinterpret_cast<T*>(reinterpret_cast<char*>(&value));
}
2017-03-29 01:54:05 +02:00
};
// Database
std::unordered_map<std::string, std::vector<patch>> m_map;
public:
// Load from file
void append(const std::string& path);
// Apply patch (returns the number of entries applied)
std::size_t apply(const std::string& name, u8* dst) const;
2017-03-29 01:54:05 +02:00
};