From 32b94f16e5ff0a5aff0b4a854e3401fdd247dd62 Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Sat, 31 Oct 2026 14:05:56 +0000 Subject: [PATCH] Decompile 5 functions in Source/Resource/GifResource.cpp, Source/Resource/GifResource.h, ... Batch #8072 by eAthena: 0 byte-identical, 5 confirmed by peer review. - fn_07862 CGifRes::CGifRes: logic confirmed by peer review - fn_07981 C3dGrannyModelRes::C3dGrannyModelRes: logic confirmed by peer review - fn_09931 UINpcSprWnd::UINpcSprWnd: logic confirmed by peer review - fn_10387 UISwapEquipmentWnd::UISwapEquipmentWnd: logic confirmed by peer review - fn_11109 UIStaticItem::`scalar deleting destructor': logic confirmed by peer review Peer-reviewed-by: Yommy, gordaoprogramas, pedrao Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes). --- Source/Resource/GifResource.cpp | 9 +++++++++ Source/Resource/GifResource.h | 1 + Source/Resource/Models/AnimatedModelResource.cpp | 12 ++++++++++++ Source/Resource/Models/GrannyModelResource.h | 1 + Source/UI/Items/UISwapEquipmentWnd.cpp | 8 ++++++++ Source/UI/Items/UISwapEquipmentWnd.h | 1 + Source/UI/Quest/UIRenewQuestWnd.cpp | 7 +++++++ Source/UI/Quest/UIRenewQuestWnd.h | 5 +---- Source/UI/UIStaticItem.cpp | 5 +++++ Source/UI/UIStaticItem.h | 1 + 10 files changed, 46 insertions(+), 4 deletions(-) diff --git a/Source/Resource/GifResource.cpp b/Source/Resource/GifResource.cpp index 042d8d8f..85e45680 100644 --- a/Source/Resource/GifResource.cpp +++ b/Source/Resource/GifResource.cpp @@ -52,6 +52,15 @@ namespace { } } +// INLINED +CBitmapRes::CBitmapRes() { +} + +// OFFSET: 0x0074A250 +// FUNCTION: fn_07862 +CGifRes::CGifRes() : loopCount(0), unknown_0132(0), currentFrame(0), lastFrameTime(0), animated(false), frameChanged(false) { +} + // INLINED CGifRes::CGifRes(BitmapResourceContext& context) : CBitmapRes(context), loopCount(0), unknown_0132(0), currentFrame(0), lastFrameTime(0), animated(false), frameChanged(false) { diff --git a/Source/Resource/GifResource.h b/Source/Resource/GifResource.h index 58500266..b8174bb1 100644 --- a/Source/Resource/GifResource.h +++ b/Source/Resource/GifResource.h @@ -12,6 +12,7 @@ class CGifRes : public CBitmapRes { public: using Frame = std::pair; + CGifRes(); explicit CGifRes(BitmapResourceContext& context); ~CGifRes() override; void Slot02() override; diff --git a/Source/Resource/Models/AnimatedModelResource.cpp b/Source/Resource/Models/AnimatedModelResource.cpp index c1f1ebb3..1266fc14 100644 --- a/Source/Resource/Models/AnimatedModelResource.cpp +++ b/Source/Resource/Models/AnimatedModelResource.cpp @@ -241,6 +241,18 @@ GrannyAnimationLibrary::~GrannyAnimationLibrary() { } } +// OFFSET: 0x00755340 +// FUNCTION: fn_07981 +C3dGrannyModelRes::C3dGrannyModelRes() { + this->position[0] = 0.0f; + this->position[1] = 0.0f; + this->position[2] = 0.0f; + this->instance = nullptr; + this->model = nullptr; + this->job = 0; + this->unknown_03B0 = 0; +} + // INLINED C3dGrannyModelRes::C3dGrannyModelRes(ModelResourceContext& context) : m_context(&context) { this->position[0] = 0.0f; diff --git a/Source/Resource/Models/GrannyModelResource.h b/Source/Resource/Models/GrannyModelResource.h index eb4d80ab..dd815b05 100644 --- a/Source/Resource/Models/GrannyModelResource.h +++ b/Source/Resource/Models/GrannyModelResource.h @@ -220,6 +220,7 @@ struct GrannyHairPivot { class C3dGrannyModelRes : public CRes { public: + C3dGrannyModelRes(); explicit C3dGrannyModelRes(ModelResourceContext& context); C3dGrannyModelRes* Create() override; bool Load(const char* name) override; diff --git a/Source/UI/Items/UISwapEquipmentWnd.cpp b/Source/UI/Items/UISwapEquipmentWnd.cpp index 85dd3998..6c4da209 100644 --- a/Source/UI/Items/UISwapEquipmentWnd.cpp +++ b/Source/UI/Items/UISwapEquipmentWnd.cpp @@ -29,6 +29,14 @@ // GLOBAL: gl_24874 unsigned long g_swapEquipmentTick; +// OFFSET: 0x0082F560 +// FUNCTION: fn_10387 +UISwapEquipmentWnd::UISwapEquipmentWnd(UIWindowContext& windows, UIFrameContext& frames) + : UIFrameWnd(windows, frames, 0), m_swapButton(nullptr), unknown_00BC(0), unknown_00C0(timeGetTime()), unknown_00D4(-1), unknown_00D8(-1), + unknown_00DC(-1) { + this->geometry.unknown_0030 = 0; +} + // OFFSET: 0x0082F990 // FUNCTION: fn_10390 void UISwapEquipmentWnd::Slot10(int x, int y, std::intptr_t value) { diff --git a/Source/UI/Items/UISwapEquipmentWnd.h b/Source/UI/Items/UISwapEquipmentWnd.h index 5d51f1fa..efbc7f39 100644 --- a/Source/UI/Items/UISwapEquipmentWnd.h +++ b/Source/UI/Items/UISwapEquipmentWnd.h @@ -21,6 +21,7 @@ public: class UISwapEquipmentWnd : public UIFrameWnd { public: + UISwapEquipmentWnd(UIWindowContext& windows, UIFrameContext& frames); void Slot10(int x, int y, std::intptr_t value) override; void Slot15(int width, int height) override; void Slot26(int x, int y) override; diff --git a/Source/UI/Quest/UIRenewQuestWnd.cpp b/Source/UI/Quest/UIRenewQuestWnd.cpp index f944518d..1f9bf961 100644 --- a/Source/UI/Quest/UIRenewQuestWnd.cpp +++ b/Source/UI/Quest/UIRenewQuestWnd.cpp @@ -46,6 +46,13 @@ struct PACKET_CZ_ACTIVE_QUEST { // GLOBAL: gl_25172 bool g_renewQuestTitlesPending = true; +// OFFSET: 0x007F9070 +// FUNCTION: fn_09931 +UINpcSprWnd::UINpcSprWnd(UIWindowContext& context) + : UIWindow(context, 0), m_mapName(), m_action(nullptr), m_sprite(nullptr), m_destinationX(0), m_destinationY(0) { + this->m_mapName.clear(); +} + // OFFSET: 0x007F9240 // FUNCTION: fn_09933 void UINpcSprWnd::SetSprite(int width, int height, std::string name) { diff --git a/Source/UI/Quest/UIRenewQuestWnd.h b/Source/UI/Quest/UIRenewQuestWnd.h index 75df2254..98e98fa7 100644 --- a/Source/UI/Quest/UIRenewQuestWnd.h +++ b/Source/UI/Quest/UIRenewQuestWnd.h @@ -21,10 +21,7 @@ struct UIButtonContext; class UINpcSprWnd : public UIWindow { public: - __declspec(noinline) explicit UINpcSprWnd(UIWindowContext& context) - : UIWindow(context, 0), m_mapName(), m_action(nullptr), m_sprite(nullptr), m_destinationX(0), m_destinationY(0) { - this->m_mapName.clear(); - } + __declspec(noinline) explicit UINpcSprWnd(UIWindowContext& context); // INLINED ~UINpcSprWnd() override { this->m_mapName.clear(); diff --git a/Source/UI/UIStaticItem.cpp b/Source/UI/UIStaticItem.cpp index 8b901ae1..cb86c41a 100644 --- a/Source/UI/UIStaticItem.cpp +++ b/Source/UI/UIStaticItem.cpp @@ -5,3 +5,8 @@ UIStaticItem::UIStaticItem(UIWindowContext& windows, ItemDescriptions& descriptions, UIButtonContext& controls, WindowManagerWindows& windowList) : UIWindow(windows, 0), m_item(), m_descriptions(&descriptions), m_controls(&controls), m_windows(&windowList) { } + +// OFFSET: 0x00871A00 +// FUNCTION: fn_11109 +UIStaticItem::~UIStaticItem() { +} diff --git a/Source/UI/UIStaticItem.h b/Source/UI/UIStaticItem.h index 1d28a800..da7d76db 100644 --- a/Source/UI/UIStaticItem.h +++ b/Source/UI/UIStaticItem.h @@ -11,6 +11,7 @@ class WindowManagerWindows; class UIStaticItem : public UIWindow { public: UIStaticItem(UIWindowContext& windows, ItemDescriptions& descriptions, UIButtonContext& controls, WindowManagerWindows& windowList); + ~UIStaticItem() override; void Paint() override; void Slot28(int x, int y) override; void Slot32(int x, int y) override;