mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-08-13 17:03:47 -04:00
09432ee7f4
* Initial Linux/GCC support commit * Add instructins for linux in the README * apply suggestions by @Erotemic and @Emill * Fix python 3.10 symlink line * Fix func_80041E80 type mismatch (#3) Type mismatch functions.h:664 * Makefile: clean OTRExporter/libultraship/ZAPDTR with distclean and fix CXX_FILES * Makefile: find C/CXX_FILES automatically * Makefile: remove ugly conditions in find commands * cleanup _MSC_VER usage * fix Windows build * cleanup extraction scripts * fix Windows build * Fix Windows path separator issue * fix rumble support for linux * use glew-cmake in dockerfile * add pulseaudio backend * fix ZAPDTR linkage * Check for "soh.elf" in directory (#6) hide second button if `soh.exe` or `soh.elf` is present * Fix hardcoded segment addresses (#5) * fix condition * hack lus -> soh dep for ZAPDTR Co-authored-by: sholdee <102821812+sholdee@users.noreply.github.com> Co-authored-by: qurious-pixel <62252937+qurious-pixel@users.noreply.github.com> Co-authored-by: GaryOderNichts <12049776+GaryOderNichts@users.noreply.github.com>
80 lines
2.0 KiB
C++
80 lines
2.0 KiB
C++
#pragma once
|
|
|
|
struct HookParameter {
|
|
const char* name;
|
|
void* parameter;
|
|
};
|
|
|
|
#define LOOKUP_TEXTURE "F3D::LookupCacheTexture"
|
|
#define GRAYOUT_TEXTURE "Kaleido::GrayOutTexture"
|
|
#define INVALIDATE_TEXTURE "GBI::gSPInvalidateTexCache"
|
|
#define CONTROLLER_READ "N64::ControllerRead"
|
|
|
|
#define AUDIO_INIT "AudioMgr::Init"
|
|
|
|
#define LOAD_TEXTURE "ResourceMgr::LoadTexByName"
|
|
|
|
#define UPDATE_VOLUME "AudioVolume::Bind"
|
|
|
|
#define IMGUI_API_INIT "ImGuiApiInit"
|
|
#define IMGUI_API_DRAW "ImGuiApiDraw"
|
|
|
|
#define WINDOW_API_INIT "WApiInit"
|
|
#define WINDOW_API_HANDLE_EVENTS "WApiHandleEvents"
|
|
#define WINDOW_API_START_FRAME "WApiStartFrame"
|
|
|
|
// Graphics API Hooks
|
|
#define GFX_PRE_START_FRAME "GFXApiPreStartFrame"
|
|
#define GFX_POST_START_FRAME "GFXApiPostStartFrame"
|
|
|
|
#define GFX_PRE_END_FRAME "GFXApiPreEndFrame"
|
|
#define GFX_POST_END_FRAME "GFXApiPostEndFrame"
|
|
|
|
#define GFX_ON_REZISE "GFXApiOnResize"
|
|
#define GFX_INIT "GFXApiInit"
|
|
#define GFX_SHUTDOWN "GFXApiShutdown"
|
|
|
|
// End
|
|
|
|
#ifdef __cplusplus
|
|
|
|
#define HOOK_PARAMETER(name, ptr) HookParameter({ name, static_cast<void*>(ptr) })
|
|
#define BIND_HOOK(name, func) ModInternal::registerHookListener({ name, [this](HookEvent call) { func(call); }})
|
|
#define BIND_PTR(name, type) static_cast<type>(call->baseArgs[name])
|
|
#define BIND_VAR(name, type) *BIND_PTR(name, type)
|
|
|
|
|
|
#include <functional>
|
|
#include <string>
|
|
#include <map>
|
|
#include <memory>
|
|
|
|
struct HookCall {
|
|
std::string name;
|
|
std::map<std::string, void*> baseArgs;
|
|
std::map<std::string, void*> hookedArgs;
|
|
bool cancelled = false;
|
|
};
|
|
|
|
typedef std::shared_ptr<HookCall> HookEvent;
|
|
typedef std::function<void(HookEvent)> HookFunc;
|
|
struct HookListener {
|
|
std::string hookName;
|
|
HookFunc callback;
|
|
int priority = 0;
|
|
};
|
|
|
|
namespace ModInternal {
|
|
void registerHookListener(HookListener listener);
|
|
void bindHook(std::string name);
|
|
void initBindHook(int length, ...);
|
|
bool callBindHook(int length, ...);
|
|
}
|
|
|
|
#else
|
|
|
|
void bind_hook(char* name);
|
|
void init_hook(int length, ...);
|
|
bool call_hook(int length, ...);
|
|
|
|
#endif |