From df522f1abb05ba0c9f0a4e99ccf34d196d2a16b3 Mon Sep 17 00:00:00 2001 From: gymnast86 Date: Fri, 21 Aug 2026 18:46:47 -0700 Subject: [PATCH] add hooks for custom text colors --- mods/randomizer/src/hooks.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/mods/randomizer/src/hooks.cpp b/mods/randomizer/src/hooks.cpp index 5c621a2b83..cb19e87a34 100644 --- a/mods/randomizer/src/hooks.cpp +++ b/mods/randomizer/src/hooks.cpp @@ -201,6 +201,10 @@ DEFINE_HOOK_SYMBOL("dComIfGs_getCollectSmell", u8(), getCollectSmell); DEFINE_HOOK(&dEvt_control_c::skipper, dEvt_control_c__skipper); +DEFINE_HOOK_SYMBOL("getFontCCColorTable", u32(u8, u8), getCCColorTable); +DEFINE_HOOK_SYMBOL("getFontGCColorTable", u32(u8, u8), getGCColorTable); + + namespace randomizer::ui { dialogSelectModeState g_dialogSelectModeState = SelectReady; } @@ -3055,6 +3059,27 @@ void hookReplaceEvtControlSkipper(ModContext*, void* args, void* retval, void*) *static_cast(retval) = doSkip; } +void hookPostGetColorTable(ModContext*, void* args, void* retval, void* userdata) { + auto& returnColor = *static_cast(retval); + if (returnColor != 0xFFFFFFFF) { + return; + } + + auto i_color = mods::arg(args, 0); + switch (i_color) { + case 9: + returnColor = 0x4BBE4BFF; // Dark Green + break; + case 10: + returnColor = 0x4B96D7FF; // Blue + break; + case 11: + returnColor = 0xBFBFBFFF; // Silver + break; + default: + break; + } +} } @@ -3213,6 +3238,9 @@ ModResult initialize() { ADD_HOOK_REPLACE(dEvt_control_c__skipper, hookReplaceEvtControlSkipper); + ADD_HOOK_POST(getCCColorTable, hookPostGetColorTable); + ADD_HOOK_POST(getGCColorTable, hookPostGetColorTable); + return MOD_OK; } @@ -3344,6 +3372,9 @@ ModResult uninstall() { mods::hook::uninstall(svc_hook); + mods::hook::uninstall(svc_hook); + mods::hook::uninstall(svc_hook); + return MOD_OK; } }