You've already forked pico-loader
mirror of
https://github.com/LNH-team/pico-loader.git
synced 2026-01-09 16:28:35 -08:00
62 lines
2.6 KiB
C++
62 lines
2.6 KiB
C++
#pragma once
|
|
#include <memory>
|
|
#include "SdkVersion.h"
|
|
#include "PatchHeap.h"
|
|
#include "PatchCodeCollection.h"
|
|
|
|
class LoaderPlatform;
|
|
|
|
/// @brief Class providing a context for performing patches on retail rom arm7 or arm9.
|
|
class PatchContext
|
|
{
|
|
public:
|
|
PatchContext(void* data, u32 dataSize, void* twlData, u32 twlDataSize,
|
|
SdkVersion sdkVersion, u32 gameCode, const LoaderPlatform* loaderPlatform)
|
|
: _data(data), _dataSize(dataSize), _twlData(twlData), _twlDataSize(twlDataSize)
|
|
, _sdkVersion(sdkVersion), _gameCode(gameCode), _loaderPlatform(loaderPlatform) { }
|
|
|
|
/// @brief Tries to find the given \p pattern of the given \p byteLength in the ntr region.
|
|
/// @param pattern The pattern to find.
|
|
/// @param byteLength The length of the pattern.
|
|
/// @return A pointer to the first location where the pattern was found, or \c nullptr if the pattern was not found.
|
|
u32* FindPattern32(const u32* pattern, u32 byteLength) const;
|
|
|
|
/// @brief Tries to find the given \p pattern of the given \p byteLength in the twl region.
|
|
/// @param pattern The pattern to find.
|
|
/// @param byteLength The length of the pattern.
|
|
/// @return A pointer to the first location where the pattern was found, or \c nullptr if the pattern was not found.
|
|
u32* FindPattern32Twl(const u32* pattern, u32 byteLength) const;
|
|
|
|
/// @brief Returns the patch heap of this context.
|
|
/// @return The patch heap of this context.
|
|
constexpr PatchHeap& GetPatchHeap() { return _patchHeap; }
|
|
|
|
/// @brief Returns the patch code collection of this context.
|
|
/// @return The patch code collection of this context.
|
|
constexpr PatchCodeCollection& GetPatchCodeCollection() { return _patchCodeCollection; }
|
|
|
|
/// @brief Returns the SDK version of the rom that is being patched.
|
|
/// @return The SDK version of the rom that is being patched.
|
|
constexpr SdkVersion GetSdkVersion() const { return _sdkVersion; }
|
|
|
|
/// @brief Returns the game code of the rom that is being patched.
|
|
/// @return The game code of the rom that is being patched.
|
|
constexpr u32 GetGameCode() const { return _gameCode; }
|
|
|
|
/// @brief Returns the loader platform that should be used for the patches.
|
|
/// @return The loader platform that should be used for the patches.
|
|
constexpr const LoaderPlatform* GetLoaderPlatform() { return _loaderPlatform; }
|
|
|
|
private:
|
|
void* _data;
|
|
u32 _dataSize;
|
|
void* _twlData;
|
|
u32 _twlDataSize;
|
|
SdkVersion _sdkVersion;
|
|
u32 _gameCode;
|
|
|
|
PatchHeap _patchHeap;
|
|
PatchCodeCollection _patchCodeCollection;
|
|
const LoaderPlatform* _loaderPlatform;
|
|
};
|