From 26ff979bdec4f7ed6cf1c9b5ed1ead4c3b0febe5 Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Wed, 28 Oct 2026 12:35:57 +0000 Subject: [PATCH] Decompile 3 functions in Source/UI/Window/UIWindow.cpp, Source/Client/Mode/CGameMode.h, ... Batch #1400 by Yommy: 0 byte-identical, 3 confirmed by peer review. - fn_03560 UIWindow::Slot44: logic confirmed by peer review - fn_03565 CGameMode::MapName: logic confirmed by peer review - fn_03568 UINavigationV4Wnd::IsListShown: logic confirmed by peer review Reviewed-by: ragnarok-clanker --- Source/Client/Mode/CGameMode.h | 8 +++++++- Source/UI/Navigation/UINavigationV4Wnd.h | 1 + Source/UI/Window/UIWindow.cpp | 16 +++++++++++++++- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/Source/Client/Mode/CGameMode.h b/Source/Client/Mode/CGameMode.h index ddbc098c..d9334f16 100644 --- a/Source/Client/Mode/CGameMode.h +++ b/Source/Client/Mode/CGameMode.h @@ -6,13 +6,16 @@ #include "Contents/ActorNameCard.h" #include +#include class CView; struct WorldScene; class CGameMode : public CMode { public: - /* 0058 */ unsigned char unknown_0058[0x74]; + /* 0058 */ unsigned char unknown_0058[0x10]; + /* 0068 */ char mapName[16]; + /* 0078 */ unsigned char unknown_0078[0x54]; /* 00CC */ WorldScene* scene; /* 00D0 */ CView* camera; /* 00D4 */ unsigned char unknown_00D4[0x8C]; @@ -20,9 +23,12 @@ public: /* 0194 */ unsigned char unknown_0194[0x174]; /* 0308 */ ModeDragState drag; /* 03C8 */ unsigned char unknown_03C8[0x2A8]; + + std::string MapName(); }; #if defined(_WIN32) && !defined(_WIN64) +static_assert(offsetof(CGameMode, mapName) == 0x68); static_assert(offsetof(CGameMode, scene) == 0xCC); static_assert(offsetof(CGameMode, camera) == 0xD0); static_assert(offsetof(CGameMode, nameCard) == 0x160); diff --git a/Source/UI/Navigation/UINavigationV4Wnd.h b/Source/UI/Navigation/UINavigationV4Wnd.h index 73d7351f..17e9a4a9 100644 --- a/Source/UI/Navigation/UINavigationV4Wnd.h +++ b/Source/UI/Navigation/UINavigationV4Wnd.h @@ -21,6 +21,7 @@ public: bool ClearRouteTexts(); void LayoutWithoutDetails(); void LayoutWithDetails(); + bool IsListShown() const; /* 00B4 */ UIWindow* unknown_00B4; /* 00B8 */ UIWindow* unknown_00B8; diff --git a/Source/UI/Window/UIWindow.cpp b/Source/UI/Window/UIWindow.cpp index 7c6ac270..e379e8c7 100644 --- a/Source/UI/Window/UIWindow.cpp +++ b/Source/UI/Window/UIWindow.cpp @@ -1,3 +1,4 @@ +#include "Client/Mode/CGameMode.h" #include "Client/Mode/ModeCursor.h" #include "Client/Mode/ModeEvents.h" #include "Network/TextEncoding.h" @@ -424,7 +425,8 @@ void UIWindow::Slot43() { // OFFSET: 0x005C4480 // FUNCTION: fn_03560 std::vector UIWindow::Slot44() { - return {}; + std::vector result; + return result; } // OFFSET: 0x005C8F60 @@ -1181,6 +1183,18 @@ bool UINavigationV4Wnd::ClearRouteTexts() { return true; } +// OFFSET: 0x005C4520 +// FUNCTION: fn_03565 +std::string CGameMode::MapName() { + return this->mapName; +} + +// OFFSET: 0x005C45D0 +// FUNCTION: fn_03568 +bool UINavigationV4Wnd::IsListShown() const { + return this->unknown_00D4->geometry.unknown_0030 != 0; +} + // OFFSET: 0x005C4690 // FUNCTION: fn_03575 void UINavigationV4Wnd::LayoutWithoutDetails() {