HLE: Improve naming

Replace 'function' with 'hook' when appropriate
This commit is contained in:
Sepalani 2020-08-28 20:29:05 +04:00
commit 4c75b96254
6 changed files with 37 additions and 37 deletions

View file

@ -21,19 +21,9 @@
namespace HLE
{
using HookFunction = void (*)();
// Map addresses to the HLE hook function id
// Map addresses to the HLE hook index
static std::map<u32, u32> s_hooked_addresses;
struct Hook
{
char name[128];
HookFunction function;
HookType type;
HookFlag flags;
};
// clang-format off
constexpr std::array<Hook, 23> os_patches{{
// Placeholder, os_patches[0] is the "non-existent function" index
@ -148,16 +138,16 @@ void Reload()
PatchFunctions();
}
void Execute(u32 current_pc, u32 instruction)
void Execute(u32 current_pc, u32 hook_index)
{
const unsigned int function_index = instruction & 0xFFFFF;
if (function_index > 0 && function_index < os_patches.size())
hook_index &= 0xFFFFF;
if (hook_index > 0 && hook_index < os_patches.size())
{
os_patches[function_index].function();
os_patches[hook_index].function();
}
else
{
PanicAlert("HLE system tried to call an undefined HLE function %i.", function_index);
PanicAlert("HLE system tried to call an undefined HLE function %i.", hook_index);
}
}
@ -178,12 +168,12 @@ u32 GetHookByFunctionAddress(u32 address)
return (symbol && symbol->address == address) ? index : 0;
}
HookType GetFunctionTypeByIndex(u32 index)
HookType GetHookTypeByIndex(u32 index)
{
return os_patches[index].type;
}
HookFlag GetFunctionFlagsByIndex(u32 index)
HookFlag GetHookFlagsByIndex(u32 index)
{
return os_patches[index].flags;
}

View file

@ -10,6 +10,8 @@
namespace HLE
{
using HookFunction = void (*)();
enum class HookType
{
Start, // Hook the beginning of the function and execute the function afterwards
@ -24,6 +26,14 @@ enum class HookFlag
Fixed, // An arbitrary hook mapped to a fixed address instead of a symbol
};
struct Hook
{
char name[128];
HookFunction function;
HookType type;
HookFlag flags;
};
void PatchFixedFunctions();
void PatchFunctions();
void Clear();
@ -31,14 +41,14 @@ void Reload();
void Patch(u32 pc, std::string_view func_name);
u32 UnPatch(std::string_view patch_name);
void Execute(u32 _CurrentPC, u32 _Instruction);
void Execute(u32 current_pc, u32 hook_index);
// Returns the HLE function index of the address
// Returns the HLE hook index of the address
u32 GetHookByAddress(u32 address);
// Returns the HLE function index if the address matches the function start
// Returns the HLE hook index if the address matches the function start
u32 GetHookByFunctionAddress(u32 address);
HookType GetFunctionTypeByIndex(u32 index);
HookFlag GetFunctionFlagsByIndex(u32 index);
HookType GetHookTypeByIndex(u32 index);
HookFlag GetHookFlagsByIndex(u32 index);
bool IsEnabled(HookFlag flag);
@ -56,18 +66,18 @@ bool IsEnabled(HookFlag flag);
template <typename FunctionObject>
bool ReplaceFunctionIfPossible(u32 address, FunctionObject fn)
{
const u32 function = GetHookByFunctionAddress(address);
if (function == 0)
const u32 hook_index = GetHookByFunctionAddress(address);
if (hook_index == 0)
return false;
const HookType type = GetFunctionTypeByIndex(function);
const HookType type = GetHookTypeByIndex(hook_index);
if (type != HookType::Start && type != HookType::Replace)
return false;
const HookFlag flags = GetFunctionFlagsByIndex(function);
const HookFlag flags = GetHookFlagsByIndex(hook_index);
if (!IsEnabled(flags))
return false;
return fn(function, type);
return fn(hook_index, type);
}
} // namespace HLE