From 51aba51a3f7e3700900752cc61f0155214023df5 Mon Sep 17 00:00:00 2001 From: momo5502 Date: Sun, 23 Oct 2016 19:39:46 +0200 Subject: [PATCH] Material dump stuff --- src/Components/Modules/Materials.cpp | 32 +++++++++++++++++++++++++--- src/Components/Modules/Materials.hpp | 5 +++++ 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/src/Components/Modules/Materials.cpp b/src/Components/Modules/Materials.cpp index 180ceb95..8fdcbad2 100644 --- a/src/Components/Modules/Materials.cpp +++ b/src/Components/Modules/Materials.cpp @@ -93,6 +93,23 @@ namespace Components } } +#ifdef DEBUG + void Materials::DumpImageCfg(int, const char*, const char* material) + { + Materials::DumpImageCfgPath(0, nullptr, Utils::String::VA("images/%s.iwi", material)); + } + + void Materials::DumpImageCfgPath(int, const char*, const char* material) + { + FILE* fp; + if (!fopen_s(&fp, "dump.cfg", "a")) + { + fprintf(fp, "dumpraw %s\n", material); + fclose(fp); + } + } +#endif + Materials::Materials() { Materials::ImageNameLength = 7; @@ -110,9 +127,18 @@ namespace Components Utils::Hook(0x5A30D9, Materials::DeathMessageStub, HOOK_JUMP).Install()->Quick(); #ifdef DEBUG - // Ignore missing images - Utils::Hook::Nop(0x51F5AC, 5); - Utils::Hook::Nop(0x51F4C4, 5); + if (Flags::HasFlag("dump")) + { + Utils::Hook(0x51F5AC, Materials::DumpImageCfg, HOOK_CALL).Install()->Quick(); + Utils::Hook(0x51F4C4, Materials::DumpImageCfg, HOOK_CALL).Install()->Quick(); + Utils::Hook(0x53AC62, Materials::DumpImageCfgPath, HOOK_CALL).Install()->Quick(); + } + else + { + // Ignore missing images + Utils::Hook::Nop(0x51F5AC, 5); + Utils::Hook::Nop(0x51F4C4, 5); + } #endif // Renderer::OnFrame([] () diff --git a/src/Components/Modules/Materials.hpp b/src/Components/Modules/Materials.hpp index b04e1723..06ac0e8f 100644 --- a/src/Components/Modules/Materials.hpp +++ b/src/Components/Modules/Materials.hpp @@ -22,5 +22,10 @@ namespace Components static int WriteDeathMessageIcon(char* string, int offset, Game::Material* material); static void DeathMessageStub(); + +#ifdef DEBUG + static void DumpImageCfg(int, const char*, const char* material); + static void DumpImageCfgPath(int, const char*, const char* material); +#endif }; }