Decompile 3 functions in Source/UI/Acceptance/UIChooseSellBuyWnd.cpp, Source/Contents/Configuration/ServiceConfiguration.h, ...

Batch #9377 by secret: 0 byte-identical, 3 confirmed by peer review.

- fn_12107 UIChooseWarpWnd::Slot44: logic confirmed by peer review
- fn_12110 UIExchangeWnd::Slot44: logic confirmed by peer review
- fn_12117 UISayDialogWnd::Slot44: logic confirmed by peer review

Peer-reviewed-by: gordaoprogramas, Montyla, Toshiro
Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
This commit is contained in:
ragnarok-clanker 2026-11-01 09:45:26 +00:00
commit 7b9ff1b0f7
6 changed files with 109 additions and 1 deletions

View file

@ -1,6 +1,9 @@
#ifndef RAGNAROK_SOURCE_CONTENTS_CONFIGURATION_SERVICECONFIGURATION_H
#define RAGNAROK_SOURCE_CONTENTS_CONFIGURATION_SERVICECONFIGURATION_H
#include <string>
#include <vector>
extern signed char g_language;
extern bool g_serviceFlag05;
extern bool g_serviceFlag06;
@ -15,6 +18,7 @@ extern const char* g_patcherExeName;
extern const char* g_runPatcherMessage;
extern const char* g_windowName;
extern char g_launchServerName[24];
extern std::vector<std::string> g_loadingScreens;
const char* GetLicenceText();
void InitializeServiceStrings();

View file

@ -154,6 +154,9 @@ const char* g_bookmarkKeySuffix = bookmarkKeySuffixText;
// GLOBAL: gl_25332
int g_window315Enabled = 1;
// GLOBAL: gl_25391
bool g_randomLoadingScreen;
// OFFSET: 0x0087B500
// FUNCTION: fn_11241
void UIChatHisBox::Configure(int x, int y, int width, int height, unsigned char) {
@ -6386,3 +6389,95 @@ int CSession::GetTraitStat(int type) {
// OFFSET: 0x008C8330
// OFFSET: 0x008C8A50
// OFFSET: 0x008D4320
// FUNCTION: fn_12107
std::vector<unsigned char> UIChooseWarpWnd::Slot44() {
std::vector<unsigned char> records;
{
const auto record = BuildReplayTaggedRecord(21950, nullptr, 0);
records.insert(records.end(), record.begin(), record.end());
}
for (auto choice = this->m_choices.begin(); choice < this->m_choices.end(); ++choice) {
const auto record = BuildReplayTaggedRecord(21953, choice->c_str(), choice->size());
records.insert(records.end(), record.begin(), record.end());
}
{
const auto record = BuildReplayTaggedRecord(21951, nullptr, 0);
records.insert(records.end(), record.begin(), record.end());
}
return records;
}
// OFFSET: 0x008D4E70
// FUNCTION: fn_12110
std::vector<unsigned char> UIExchangeWnd::Slot44() {
std::vector<unsigned char> records;
{
const auto record = BuildReplayTaggedRecord(20600, nullptr, 0);
records.insert(records.end(), record.begin(), record.end());
}
{
const auto record = BuildReplayTaggedRecord(20603, &this->unknown_0108, sizeof(this->unknown_0108));
records.insert(records.end(), record.begin(), record.end());
}
{
const auto record = BuildReplayTaggedRecord(20604, &this->unknown_010C, sizeof(this->unknown_010C));
records.insert(records.end(), record.begin(), record.end());
}
{
const auto record = BuildReplayTaggedRecord(20602, this->unknown_00F0.c_str(), this->unknown_00F0.size());
records.insert(records.end(), record.begin(), record.end());
}
{
const auto record = BuildReplayTaggedRecord(20605, &this->unknown_00CC, sizeof(this->unknown_00CC));
records.insert(records.end(), record.begin(), record.end());
}
{
const auto record = BuildReplayTaggedRecord(20606, &this->unknown_00D0, sizeof(this->unknown_00D0));
records.insert(records.end(), record.begin(), record.end());
}
{
const auto record = BuildReplayTaggedRecord(20607, &this->unknown_00D4, sizeof(this->unknown_00D4));
records.insert(records.end(), record.begin(), record.end());
}
{
const auto record = BuildReplayTaggedRecord(20608, &this->unknown_00D8, sizeof(this->unknown_00D8));
records.insert(records.end(), record.begin(), record.end());
}
{
const auto record = BuildReplayTaggedRecord(20609, &this->unknown_00DC, sizeof(this->unknown_00DC));
records.insert(records.end(), record.begin(), record.end());
}
{
const auto record = BuildReplayTaggedRecord(20601, nullptr, 0);
records.insert(records.end(), record.begin(), record.end());
}
return records;
}
// OFFSET: 0x008D6D40
// FUNCTION: fn_12117
std::vector<unsigned char> UISayDialogWnd::Slot44() {
std::vector<unsigned char> records;
{
const auto record = BuildReplayTaggedRecord(22500, nullptr, 0);
records.insert(records.end(), record.begin(), record.end());
}
const UITagTextViewer* viewer = static_cast<UITagTextViewer*>(this->m_viewer);
for (auto text = viewer->m_texts.begin(); text != viewer->m_texts.end(); ++text) {
const auto record = BuildReplayTaggedRecord(22503, text->c_str(), text->size());
records.insert(records.end(), record.begin(), record.end());
}
{
const auto record = BuildReplayTaggedRecord(22504, &this->unknown_00D4, sizeof(this->unknown_00D4));
records.insert(records.end(), record.begin(), record.end());
}
{
const auto record = BuildReplayTaggedRecord(22501, nullptr, 0);
records.insert(records.end(), record.begin(), record.end());
}
return records;
}
// OFFSET: 0x008E30B0

View file

@ -3,6 +3,9 @@
#include "UI/Window/UIFrameWnd.h"
#include <string>
#include <vector>
struct UIButtonContext;
struct UIListBoxContext;
class UIListBox;
@ -11,8 +14,11 @@ class UIChooseWarpWnd : public UIFrameWnd {
public:
void Slot15(int width, int height) override;
void Paint() override;
std::vector<unsigned char> Slot44() override;
/* 00B4 */ UIListBox* m_list;
/* 00B8 */ int unknown_00B8;
/* 00BC */ std::vector<std::string> m_choices;
protected:
UIButtonContext* m_controls;

View file

@ -9,11 +9,12 @@
class UILoadingWnd : public UIFrameWnd {
public:
UILoadingWnd(UIWindowContext& windows, UIFrameContext& frames);
void Slot15(int width, int height) override;
void Paint() override;
int SendMsg(UIWindow* sender, int message, std::intptr_t argument1, std::intptr_t argument2, std::intptr_t argument3, std::intptr_t argument4) override;
/* 00B4 */ unsigned char unknown_00B4[0x4];
/* 00B8 */ UIBarGraph* m_progressBar;
/* 00B8 */ UIBarGraph2* m_progressBar;
};
#endif

View file

@ -23,6 +23,7 @@ public:
void Slot11() override;
void Slot19() override;
void Paint() override;
std::vector<unsigned char> Slot44() override;
int ButtonX(UIBitmapButton* button);
};

View file

@ -42,6 +42,7 @@ public:
void Slot32(int x, int y) override;
void Slot35(int delta) override;
void Slot19() override;
std::vector<unsigned char> Slot44() override;
void LayoutButtons();
void CancelInput();