Maintenance: Second pass on unknown_XXXX members: 140 more renamed (61 files), named from the original binary (accesses at this+offse

Batch #14947 by ragnarok-clanker: no function's compiled code changes; checked with 596 compiled unit(s), including every includer of Source/Client/Input/Language.h, Source/Client/Input/LanguageTC.h, Source/Client/Mode/CGameMode.h, Source/Client/Mode/CLoginMode.h, Source/Client/Mode/EquipWindowLook.h, Source/Client/Session.h, Source/Contents/Actors/GameActor.h, Source/Contents/Actors/GraffiSkill.h, Source/Contents/Actors/GrannyGameActor.h, Source/Contents/Actors/Pc.h, Source/Contents/Camera/Camera.h, Source/Contents/Effects/EffectEmitter.h, Source/Contents/Effects/EffectPrimitiveState.h, Source/Contents/FlyingShipRouteInfo.h, Source/Contents/Ground/GroundGeometry.h, Source/Contents/Ground/GroundSpatial.h, Source/Contents/Items/ItemInfo.h, Source/Render/SpriteQuad.h, Source/Resource/EZeffectResource.h, Source/Resource/Models/AnimatedModelResource.h, Source/Resource/Models/GrannyModelResource.h, Source/Resource/Models/ModelMesh.h, Source/Resource/World/WorldResource.h, Source/UI/Dialogs/UIChooseWnd.h, Source/UI/Items/UISpellListWnd.h, Source/UI/Lists/UIListBoxTemplate.h, Source/UI/MiniPartyGrid.h, Source/UI/Quest/UIOngoingQuestInfo.h, Source/UI/Text/UIAchWnd.h, Source/UI/Window/UIMonsterInfoWnd.h, Source/UI/Window/UINavigationWnd.h, Source/UI/Window/UINewMakeCharWnd.h, Source/UI/Window/UITalkboxTrapInputWnd.h, Source/UI/Window/UIWindowMgr.h.
This commit is contained in:
ragnarok-clanker 2026-11-08 18:16:10 +00:00
commit fdbebbba25
61 changed files with 216 additions and 216 deletions

View file

@ -439,10 +439,10 @@ UIRoundBoxTooltipWnd::UIRoundBoxTooltipWnd() : UIFrameWnd(0), viewer(nullptr) {
// OFFSET: 0x00ACC7F0
// FUNCTION: fn_17750
CLanguageBase::CLanguageBase()
: unknown_0004(), candidateList(nullptr), candidateCount(0), pageSize(0), selection(0),
: fakeInput(), candidateList(nullptr), candidateCount(0), pageSize(0), selection(0),
candidateStorage(), text(), cursor(0), anchor(0), composition(), candidate(),
language(static_cast<std::uint16_t>(reinterpret_cast<std::uintptr_t>(GetKeyboardLayout(0)))), unknown_0094(0),
unknown_0098(0), servicePrefix() {
language(static_cast<std::uint16_t>(reinterpret_cast<std::uintptr_t>(GetKeyboardLayout(0)))), underlineStart(0),
underlineEnd(0), servicePrefix() {
this->codePage = g_inlineCharset ? LanguageCodePage(this->language) : g_textCodePage;
switch (static_cast<std::uint16_t>(GetUserDefaultLangID() & 0x3FF)) {

View file

@ -23,14 +23,14 @@ struct CLanguageBase {
virtual void EndComposition();
virtual void ResetCandidate();
/* 0004 */ std::deque<unsigned int> unknown_0004;
/* 0004 */ std::deque<unsigned int> fakeInput;
/* 0018 */ CANDIDATELIST* candidateList;
/* 001C */ int candidateCount;
/* 0020 */ int pageSize;
/* 0024 */ int selection;
/* 0028 */ std::vector<unsigned char> candidateStorage;
/* 0034 */ std::string text;
/* 004C */ int unknown_004C;
/* 004C */ int inputCursor;
/* 0050 */ int cursor;
/* 0054 */ int anchor;
/* 0058 */ std::string composition;
@ -40,8 +40,8 @@ struct CLanguageBase {
/* 008D */ unsigned char unknown_008D;
/* 008E */ std::uint16_t language;
/* 0090 */ unsigned codePage;
/* 0094 */ int unknown_0094;
/* 0098 */ int unknown_0098;
/* 0094 */ int underlineStart;
/* 0098 */ int underlineEnd;
/* 009C */ std::string servicePrefix;
/* 00B4 */ std::uint16_t alternateLanguage;
/* 00B6 */ unsigned char unknown_00B6[2];
@ -93,7 +93,7 @@ struct CLanguageTH : CLanguageBase {
};
#if defined(_WIN32) && !defined(_WIN64)
static_assert(offsetof(CLanguageBase, unknown_0004) == 0x0004);
static_assert(offsetof(CLanguageBase, fakeInput) == 0x0004);
static_assert(offsetof(CLanguageBase, candidateList) == 0x0018);
static_assert(offsetof(CLanguageBase, candidateStorage) == 0x0028);
static_assert(offsetof(CLanguageBase, text) == 0x0034);

View file

@ -17,7 +17,7 @@ struct TraditionalKeyMapping {
struct CLanguageTC : CLanguageBase {
/* 00B8 */ std::list<std::uint8_t> keys;
/* 00C0 */ std::array<TraditionalKeyMapping, 256> mappings;
/* 04C0 */ unsigned char unknown_04C0;
/* 04C0 */ unsigned char keyStrokeEnabled;
/* 04C1 */ std::uint8_t unknown04C1;
/* 04C2 */ unsigned char unknown_04C2[2];

View file

@ -70,7 +70,7 @@ struct SkillListEntry {
/* 0008 */ std::int16_t spCost;
/* 000A */ std::int16_t range;
/* 000C */ unsigned char upgradable;
/* 000D */ std::int16_t unknown_000D;
/* 000D */ std::int16_t learnedLevel;
};
#pragma pack(pop)
@ -124,7 +124,7 @@ public:
/* 00FC */ int isWaitingEnterRoom;
/* 0100 */ unsigned char equipmentRequestState[0x18];
/* 0118 */ std::string refuseWhisperName;
/* 0130 */ std::string unknown_0130;
/* 0130 */ std::string streamFileName;
/* 0148 */ std::string exchangeName;
/* 0160 */ CActorNameCardHolder nameCard;
/* 0194 */ std::map<std::uint32_t, int> guildMemberStatusCache;

View file

@ -59,8 +59,8 @@ struct CharacterInfo {
/* 008E */ char mapName[16];
/* 009E */ std::int32_t deleteDate;
/* 00A2 */ std::int32_t robe;
/* 00A6 */ std::int32_t unknown_00A6;
/* 00AA */ std::int32_t unknown_00AA;
/* 00A6 */ std::int32_t slotChangeCount;
/* 00AA */ std::int32_t nameChangeCount;
/* 00AE */ unsigned char sex;
};
@ -74,12 +74,12 @@ struct CharacterSlotExtension {
#pragma pack(pop)
struct LoginStringRecord {
/* 0000 */ std::string unknown_0000;
/* 0018 */ std::string unknown_0018;
/* 0030 */ std::string unknown_0030;
/* 0048 */ std::string unknown_0048;
/* 0060 */ std::string unknown_0060;
/* 0078 */ unsigned char unknown_0078[8];
/* 0000 */ std::string display;
/* 0018 */ std::string description;
/* 0030 */ std::string balloon;
/* 0048 */ std::string address;
/* 0060 */ std::string port;
/* 0078 */ unsigned char typeAndVersion[8];
};
#if defined(_WIN32) && !defined(_WIN64)
@ -132,7 +132,7 @@ public:
/* 6F45 */ unsigned char unknown_6F45[0x3];
/* 6F48 */ int selectedAccount;
/* 6F4C */ int selectedSecondaryAccount;
/* 6F50 */ std::string unknown_6F50;
/* 6F50 */ std::string keycryptErrorInfo;
/* 6F68 */ std::vector<MapStateEntry> mapStates;
/* 6F74 */ bool loginResponseReceived;
/* 6F75 */ bool otpPending;
@ -216,7 +216,7 @@ static_assert(offsetof(CLoginMode, characterCount) == 0x1CC);
static_assert(offsetof(CLoginMode, receivedCharacterCount) == 0x1D8);
static_assert(offsetof(CLoginMode, characters) == 0x4068);
static_assert(offsetof(CLoginMode, slotExtension) == 0x6EFC);
static_assert(offsetof(CLoginMode, unknown_6F50) == 0x6F50);
static_assert(offsetof(CLoginMode, keycryptErrorInfo) == 0x6F50);
static_assert(offsetof(CLoginMode, mapStates) == 0x6F68);
static_assert(sizeof(CLoginMode) == 0x6F7C);
#endif

View file

@ -13,7 +13,7 @@ struct EquipWindowLook {
/* 0018 */ int bodyPalette;
/* 001C */ int headPalette;
/* 0020 */ int robe;
/* 0024 */ int unknown_0024;
/* 0024 */ int bodyCostume;
/* 0028 */ char name[24];
};

View file

@ -6084,7 +6084,7 @@ static_assert(sizeof(GameModeStoredItemEntry) == 0x19);
#pragma pack(push, 1)
struct GameModeUiMessage {
/* 0000 */ std::uint16_t unknown_0000;
/* 0000 */ std::uint16_t packetType;
/* 0002 */ std::uint16_t type;
/* 0004 */ std::uint16_t length;
/* 0006 */ int values[6];
@ -6092,7 +6092,7 @@ struct GameModeUiMessage {
};
struct GameModeUiWhisperMessage {
/* 0000 */ std::uint16_t unknown_0000;
/* 0000 */ std::uint16_t packetType;
/* 0002 */ std::uint16_t type;
/* 0004 */ std::uint16_t length;
/* 0006 */ char target[0x19];
@ -6100,7 +6100,7 @@ struct GameModeUiWhisperMessage {
};
struct GameModeUiKindTextMessage {
/* 0000 */ std::uint16_t unknown_0000;
/* 0000 */ std::uint16_t packetType;
/* 0002 */ std::uint16_t type;
/* 0004 */ std::uint16_t length;
/* 0006 */ int kind;
@ -6109,7 +6109,7 @@ struct GameModeUiKindTextMessage {
};
struct GameModeUiNavigationMessage {
/* 0000 */ std::uint16_t unknown_0000;
/* 0000 */ std::uint16_t packetType;
/* 0002 */ std::uint16_t type;
/* 0004 */ std::uint16_t length;
/* 0006 */ char name[0x1E];
@ -6122,7 +6122,7 @@ struct GameModeUiNavigationMessage {
};
struct GameModeUiDestinationMessage {
/* 0000 */ std::uint16_t unknown_0000;
/* 0000 */ std::uint16_t packetType;
/* 0002 */ std::uint16_t type;
/* 0004 */ std::uint16_t length;
/* 0006 */ char mapName[0x1E];
@ -6131,7 +6131,7 @@ struct GameModeUiDestinationMessage {
};
struct GameModeUiDragMessage {
/* 0000 */ std::uint16_t unknown_0000;
/* 0000 */ std::uint16_t packetType;
/* 0002 */ std::uint16_t type;
/* 0004 */ std::uint16_t length;
/* 0006 */ int windowId;
@ -8016,7 +8016,7 @@ void CGameMode::ReceiveSkillList(int packetType, const std::vector<SkillListEntr
skill.upgradable = entry.upgradable;
skill.range = entry.range;
skill.name = skill.IdName(*g_session.m_hotkeyScript);
skill.learnedLevel = entry.unknown_000D;
skill.learnedLevel = entry.learnedLevel;
skill.apCost = skill.UseApAmount(*g_session.m_hotkeyScript, entry.level);
g_session.m_skillBundle.ApplyLevelChange(skill);

View file

@ -280,7 +280,7 @@ struct RouletteInfoSlot {
struct RouletteInfoPacket {
/* 0000 */ std::int16_t id;
/* 0002 */ std::int16_t length;
/* 0004 */ int unknown_0004;
/* 0004 */ int serial;
/* 0008 */ RouletteInfoSlot slots[42];
};
#pragma pack(pop)
@ -1305,7 +1305,7 @@ struct ItemEffectResultPacket {
struct AchievementStatePacket {
/* 0000 */ std::int16_t unknown_0000;
/* 0000 */ std::int16_t id;
/* 0002 */ std::int16_t type;
};
@ -3180,7 +3180,7 @@ struct GuildStorageLogPacketEntry {
/* 0008 */ int quantity;
/* 000C */ unsigned char operation;
/* 000D */ int refine;
/* 0011 */ unsigned char unknown_0011[8];
/* 0011 */ unsigned char uniqueId[8];
/* 0019 */ unsigned char identified;
/* 001A */ std::int16_t count;
/* 001C */ unsigned char cards[16];
@ -5421,7 +5421,7 @@ struct RodexMailPageEntry {
/* 0008 */ unsigned char isRead;
/* 0009 */ unsigned char type;
/* 000A */ char sender[24];
/* 0022 */ int unknown_0022;
/* 0022 */ int sentAt;
/* 0026 */ int expireTime;
/* 002A */ std::int16_t titleLength;
/* 002C */ char title[1];
@ -5564,7 +5564,7 @@ struct QuestHuntUpdateEntry {
struct QuestHuntUpdatePacket {
/* 0000 */ std::uint16_t packetType;
/* 0002 */ std::int16_t length;
/* 0004 */ std::int16_t unknown_0004;
/* 0004 */ std::int16_t count;
/* 0006 */ QuestHuntUpdateEntry entries[1];
};
#pragma pack(pop)
@ -5580,7 +5580,7 @@ struct QuestHuntUpdateEntry2 {
struct QuestHuntUpdatePacket2 {
/* 0000 */ std::uint16_t packetType;
/* 0002 */ std::int16_t length;
/* 0004 */ std::int16_t unknown_0004;
/* 0004 */ std::int16_t count;
/* 0006 */ QuestHuntUpdateEntry2 entries[1];
};
#pragma pack(pop)
@ -7365,7 +7365,7 @@ struct EquipItemUpdatePacket {
/* 0005 */ std::uint32_t cards[4];
/* 0015 */ ItemSlotOption options[5];
/* 002E */ unsigned char refine;
/* 002F */ unsigned char unknown_002F;
/* 002F */ unsigned char grade;
};
#pragma pack(pop)
@ -7430,7 +7430,7 @@ void CGameMode::RefreshInventoryOrEquipItem2(const unsigned char* data) {
for (long long index = 0; index < item.optionCount; ++index) {
reinterpret_cast<ItemSlotOption*>(item.options)[index] = packet->options[index];
}
item.grade = packet->unknown_002F;
item.grade = packet->grade;
if (lookup == 0) {
g_session.UpdateInventoryItem(item, 1);
@ -7528,7 +7528,7 @@ void CGameMode::ReceiveRankingList(const unsigned char* data) {
struct GuildStorageLogItem {
/* 0000 */ ITEM_INFO item;
/* 00F8 */ unsigned char unknown_00F8;
/* 00F8 */ unsigned char highlighted;
};
#pragma pack(push, 1)
@ -7537,7 +7537,7 @@ struct GuildStorageLogItemRecord {
/* 0004 */ std::uint32_t itemId;
/* 0008 */ std::uint32_t quantity;
/* 000C */ unsigned char operation;
/* 000D */ unsigned char unknown_000D[8];
/* 000D */ unsigned char uniqueId[8];
/* 0015 */ unsigned char identified;
/* 0016 */ std::int16_t type;
/* 0018 */ std::uint32_t cards[4];

View file

@ -6495,7 +6495,7 @@ void CGameMode::ApplyStatusChange(
#pragma pack(push, 1)
struct Window107Entry {
/* 0000 */ unsigned char unknown_0000[0x18];
/* 0000 */ unsigned char repairItemData[0x18];
};
#pragma pack(pop)
@ -8050,7 +8050,7 @@ void CGameMode::ReceiveEquipWindowMicroscope5(const unsigned char* packet) {
g_equipWindowLook.headPalette = *reinterpret_cast<const std::int16_t*>(packet + 0x28);
memcpy_s(g_equipWindowLook.name, sizeof(g_equipWindowLook.name), packet + 4, sizeof(g_equipWindowLook.name));
g_equipWindowLook.robe = *reinterpret_cast<const std::int16_t*>(packet + 0x26);
g_equipWindowLook.unknown_0024 = *reinterpret_cast<const std::int16_t*>(packet + 0x2C);
g_equipWindowLook.bodyCostume = *reinterpret_cast<const std::int16_t*>(packet + 0x2C);
if (!g_windowMgr.CloseWindow(WID_EQUIPWND_VIEWOTHER_1)) {
g_windowMgr.EnsureWindow(WID_EQUIPWND_VIEWOTHER_1);
@ -8085,7 +8085,7 @@ void CGameMode::ReceiveEquipWindowMicroscope6(const unsigned char* packet) {
g_equipWindowLook.headPalette = *reinterpret_cast<const std::int16_t*>(packet + 0x28);
memcpy_s(g_equipWindowLook.name, sizeof(g_equipWindowLook.name), packet + 4, sizeof(g_equipWindowLook.name));
g_equipWindowLook.robe = *reinterpret_cast<const std::int16_t*>(packet + 0x26);
g_equipWindowLook.unknown_0024 = *reinterpret_cast<const std::int16_t*>(packet + 0x2C);
g_equipWindowLook.bodyCostume = *reinterpret_cast<const std::int16_t*>(packet + 0x2C);
if (!g_windowMgr.CloseWindow(WID_EQUIPWND_VIEWOTHER_1)) {
g_windowMgr.EnsureWindow(WID_EQUIPWND_VIEWOTHER_1);
@ -15826,7 +15826,7 @@ struct PartyMemberInfoPacket {
/* 0000 */ std::uint16_t id;
/* 0002 */ std::uint32_t accountId;
/* 0006 */ std::int32_t leader;
/* 000A */ unsigned char unknown_000A[4];
/* 000A */ unsigned char position[4];
/* 000E */ unsigned char offline;
/* 000F */ char partyName[24];
/* 0027 */ char memberName[24];
@ -22304,7 +22304,7 @@ void CGameMode::ProcessIncomingPackets() {
entry.spCost = record->spCost;
entry.range = record->range;
entry.upgradable = record->upgradable;
entry.unknown_000D = record->level;
entry.learnedLevel = record->level;
skills.push_back(entry);
}
this->ReceiveSkillList(*reinterpret_cast<const std::int16_t *>(g_gameModePacketBuffer), skills);

View file

@ -984,7 +984,7 @@ void CLoginMode::End() {
g_soundMgr->EndSamples();
ResourceMgr::Instance().ClearUnused();
g_renderer->atlas.Clear();
this->unknown_6F50.clear();
this->keycryptErrorInfo.clear();
}
// OFFSET: 0x00D975C0
@ -2228,7 +2228,7 @@ void CLoginMode::ShowLoginError(int code, int argument) {
// OFFSET: 0x00D8C6A0
// FUNCTION: fn_22258
CLoginMode::CLoginMode() : wallpaperName(), noticeCommands(), unknown_6F2C(), accountInfo(), unknown_6F50(), mapStates() {
CLoginMode::CLoginMode() : wallpaperName(), noticeCommands(), unknown_6F2C(), accountInfo(), keycryptErrorInfo(), mapStates() {
this->fadeInRequested = 1;
this->nextKeepaliveTime = timeGetTime() + 12000;
this->savedInlineCharset = g_inlineCharset;
@ -3391,7 +3391,7 @@ struct CharServerEnterPacket {
/* 0002 */ std::uint32_t aid;
/* 0006 */ int authCode;
/* 000A */ int userLevel;
/* 000E */ std::uint16_t unknown_000E;
/* 000E */ std::uint16_t clientType;
/* 0010 */ unsigned char sex;
};
@ -3982,7 +3982,7 @@ void CLoginMode::OnChangeState(int value) {
g_charServerAccountIdPending = 1;
CharServerEnterPacket packet;
packet.id = 0x65;
packet.unknown_000E = 0;
packet.clientType = 0;
packet.aid = g_session.m_aid;
packet.authCode = account.authCode;
packet.userLevel = account.userLevel;

View file

@ -161,7 +161,7 @@ struct SubChatWndInfo {
struct SessionEntry00A4 {
/* 0000 */ std::string name;
/* 0018 */ unsigned char unknown_0018[0x0C];
/* 0018 */ unsigned char skillIdPositionAndMaxLevel[0x0C];
/* 0024 */ std::vector<int> values;
};
@ -185,8 +185,8 @@ public:
/* 008C */ std::list<CSkillInfo> m_mercSkills;
/* 0094 */ std::list<ShortcutCooldownIcon> m_mainCooldownIcons;
/* 009C */ std::list<ShortcutCooldownIcon> m_alternateCooldownIcons;
/* 00A4 */ std::map<std::string, SessionEntry00A4> unknown_00A4;
/* 00AC */ std::map<std::string, std::string> unknown_00AC;
/* 00A4 */ std::map<std::string, SessionEntry00A4> m_skillTreePositions;
/* 00AC */ std::map<std::string, std::string> m_jobInheritance;
/* 00B4 */ int m_simplifiedSkillList;
/* 00B8 */ int m_showSkillDescription;
/* 00BC */ unsigned char m_hotkeyPage;
@ -273,13 +273,13 @@ public:
/* 0F60 */ int m_autoOpenFriendWhisperWindow;
/* 0F64 */ unsigned char whisperOptions[0x08];
/* 0F6C */ const char* const* m_humanMaleHeadNames;
/* 0F70 */ unsigned char unknown_0F70[0x08];
/* 0F70 */ unsigned char m_humanMaleHeadNamesEndAndCapacity[0x08];
/* 0F78 */ const char* const* m_humanFemaleHeadNames;
/* 0F7C */ unsigned char unknown_0F7C[0x08];
/* 0F7C */ unsigned char m_humanFemaleHeadNamesEndAndCapacity[0x08];
/* 0F84 */ const char* const* m_imfNames;
/* 0F88 */ unsigned char additionalSpriteNames[0x14];
/* 0F9C */ const char* const* m_shieldJobNames;
/* 0FA0 */ unsigned char unknown_0FA0[0x08];
/* 0FA0 */ unsigned char m_shieldJobNamesEndAndCapacity[0x08];
/* 0FA8 */ std::vector<const char*> m_jobNameTable;
/* 0FB4 */ std::map<unsigned, const char*> m_jobNameTableWoman;
/* 0FBC */ std::map<unsigned, const char*> m_jobNameTableMan;
@ -301,7 +301,7 @@ public:
/* 1050 */ int petEggIndex;
/* 1054 */ int petPreviousHunger;
/* 1058 */ int m_petActionTable[5][5][7];
/* 1314 */ std::string unknown_1314[25];
/* 1314 */ std::string m_petTalkStrings[25];
/* 156C */ XmlDocument m_petTalkTable;
/* 159C */ XmlDocument m_monsterSkillInfo;
/* 15CC */ XmlDocument m_monsterTalkTable;
@ -369,12 +369,12 @@ public:
/* 5280 */ std::list<int> unknown_5280;
/* 5288 */ unsigned char unknown_5288[0x0C];
/* 5294 */ const char* const* m_bodyJobNames;
/* 5298 */ unsigned char unknown_5298[0x08];
/* 5298 */ unsigned char m_bodyJobNamesEndAndCapacity[0x08];
/* 52A0 */ const char* const* m_sexNames;
/* 52A4 */ unsigned char unknown_52A4[0x08];
/* 52A4 */ unsigned char m_sexNamesEndAndCapacity[0x08];
/* 52AC */ const char* const* m_weaponNamesBegin;
/* 52B0 */ const char* const* m_weaponNamesEnd;
/* 52B4 */ unsigned char unknown_52B4[0x04];
/* 52B4 */ unsigned char m_weaponNamesCapacityEnd[0x04];
/* 52B8 */ std::vector<const char*> m_accessoryNames;
/* 52C4 */ std::vector<const char*> m_robeNames;
/* 52D0 */ std::vector<std::string> m_navigationForbiddenMaps;
@ -417,10 +417,10 @@ public:
/* 54A8 */ int partyItemDistribute;
/* 54AC */ std::string partyRequestName;
/* 54C4 */ std::string partyName;
/* 54DC */ std::string unknown_54DC;
/* 54F4 */ std::string unknown_54F4;
/* 54DC */ std::string accountAddress;
/* 54F4 */ std::string registrationUrl;
/* 550C */ std::string storeTitle;
/* 5524 */ std::string unknown_5524;
/* 5524 */ std::string accountPort;
/* 553C */ std::string m_serverName;
union {
/* 5554 */ unsigned char whisperRecordStorage[4];
@ -559,9 +559,9 @@ public:
/* 6184 */ int playerAppearanceState;
/* 6188 */ int m_lastIntervalTime;
/* 618C */ const char* const* m_doramMaleHeadNames;
/* 6190 */ unsigned char unknown_6190[0x08];
/* 6190 */ unsigned char m_doramMaleHeadNamesEndAndCapacity[0x08];
/* 6198 */ const char* const* m_doramFemaleHeadNames;
/* 619C */ unsigned char unknown_619C[0x08];
/* 619C */ unsigned char m_doramFemaleHeadNamesEndAndCapacity[0x08];
/* 61A4 */ int automaticSkillHotkey;
union {
/* 61A8 */ unsigned char hotkeyAndSortOptions[0x10];