// // Generated By: dol2asm // Translation Unit: resource // #include "JSystem/JMessage/resource.h" #include #include "dol2asm.h" #include "string.h" // // Types: // namespace std { template void lower_bound(/* ... */); /* 802A94D4 */ /* std::lower_bound */ void func_802A94D4(void* _this, u32 const*, u32 const*, u32 const&); }; // namespace std // // Forward References: // extern "C" void toMessageIndex_messageID__Q28JMessage9TResourceCFUlUlPb(); extern "C" void __ct__Q38JMessage18TResourceContainer10TCResourceFv(); extern "C" void __dt__Q38JMessage18TResourceContainer10TCResourceFv(); extern "C" void Get_groupID__Q38JMessage18TResourceContainer10TCResourceFUs(); extern "C" void Do_create__Q38JMessage18TResourceContainer10TCResourceFv(); extern "C" void Do_destroy__Q38JMessage18TResourceContainer10TCResourceFPQ28JMessage9TResource(); extern "C" void __ct__Q28JMessage18TResourceContainerFv(); extern "C" void setEncoding__Q28JMessage18TResourceContainerFUc(); extern "C" void setEncoding___Q28JMessage18TResourceContainerFUc(); extern "C" void __ct__Q28JMessage6TParseFPQ28JMessage18TResourceContainer(); extern "C" void __dt__Q28JMessage6TParseFv(); extern "C" void parseHeader_next__Q28JMessage6TParseFPPCvPUlUl(); extern "C" void parseBlock_next__Q28JMessage6TParseFPPCvPUlUl(); extern "C" void parseCharacter_1Byte__Q28JMessage6localeFPPCc(); extern "C" void parseCharacter_2Byte__Q28JMessage6localeFPPCc(); extern "C" void func_802A94D4(void* _this, u32 const*, u32 const*, u32 const&); extern "C" void* sapfnParseCharacter___Q28JMessage18TResourceContainer[5]; // // External References: // extern "C" void parseCharacter_ShiftJIS__Q28JMessage6localeFPPCc(); extern "C" void parseCharacter_UTF8__Q28JMessage6localeFPPCc(); extern "C" void* __nw__FUl(); extern "C" void __dl__FPv(); extern "C" void __dt__Q37JGadget6binary19TParse_header_blockFv(); extern "C" void __dt__Q27JGadget13TNodeLinkListFv(); extern "C" void Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget13TLinkListNode(); extern "C" void Erase__Q27JGadget13TNodeLinkListFPQ27JGadget13TLinkListNode(); extern "C" void _savegpr_28(); extern "C" void _restgpr_28(); extern "C" extern void* __vt__Q37JGadget6binary19TParse_header_block[5]; extern "C" f32 ga4cSignature__Q28JMessage4data[1 + 1 /* padding */]; // // Declarations: // /* 802A8CDC-802A8EC0 2A361C 01E4+00 0/0 1/1 0/0 .text * toMessageIndex_messageID__Q28JMessage9TResourceCFUlUlPb */ // NONMATCHING - instruction order u16 JMessage::TResource::toMessageIndex_messageID(u32 lowerHalf, u32 upperHalf, bool* isMsgValid) const { if (!mMessageID.get()) { return 0xFFFF; } u32 val = -1; bool check = true; switch (mMessageID.get_formSupplement()) { case 0: if (upperHalf) { check = false; } val = lowerHalf; break; case 1: if (lowerHalf > 0xFFFFFF || upperHalf > 0xFF) { check = false; } val = ((lowerHalf << 8) & 0xFFFFFF00) | (upperHalf & 0xFF); break; case 2: if (lowerHalf > 0xFFFF || upperHalf > 0xFFFF) { check = false; } val = ((lowerHalf << 16) & 0xFFFF0000) | (upperHalf & 0xFFFF); break; case 3: if (lowerHalf > 0xFF || upperHalf > 0xFFFFFF) { check = false; } val = ((lowerHalf << 24) & 0xFF000000) | (upperHalf & 0x00FFFFFF); break; case 4: if (lowerHalf) { check = false; } val = upperHalf; break; default: return 0xFFFF; } if (isMsgValid) { *isMsgValid = check; } if (val == 0xFFFFFFFF) { return 0xFFFF; } const u32* first = (u32*)mMessageID.getContent(); const u32* last = (u32*)(first + mMessageID.get_number()); const u32* lower; if (mMessageID.get_isOrdered()) { lower = std::lower_bound(first, last, val); if (lower == last || *lower != val) { return 0xFFFF; } } else { lower = first; while (lower != last && *lower != val) { lower++; } if (lower == last) { return 0xFFFF; } } return (lower - first); } /* 803C9C80-803C9C94 -00001 0014+00 1/1 0/0 0/0 .data * sapfnParseCharacter___Q28JMessage18TResourceContainer */ JMessage::locale::parseCharacter_function JMessage::TResourceContainer::sapfnParseCharacter_[5] = { NULL, JMessage::locale::parseCharacter_1Byte, JMessage::locale::parseCharacter_2Byte, JMessage::locale::parseCharacter_ShiftJIS, JMessage::locale::parseCharacter_UTF8, }; /* 803C9C94-803C9CA8 026DB4 0014+00 2/2 0/0 0/0 .data __vt__Q28JMessage6TParse */ SECTION_DATA extern void* __vt__Q28JMessage6TParse[5] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)__dt__Q28JMessage6TParseFv, (void*)parseHeader_next__Q28JMessage6TParseFPPCvPUlUl, (void*)parseBlock_next__Q28JMessage6TParseFPPCvPUlUl, }; /* 803C9CA8-803C9CBC 026DC8 0014+00 2/2 0/0 0/0 .data * __vt__Q38JMessage18TResourceContainer10TCResource */ SECTION_DATA extern void* __vt__Q38JMessage18TResourceContainer10TCResource[5] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)__dt__Q38JMessage18TResourceContainer10TCResourceFv, (void*)Do_create__Q38JMessage18TResourceContainer10TCResourceFv, (void*)Do_destroy__Q38JMessage18TResourceContainer10TCResourceFPQ28JMessage9TResource, }; /* 803C9CBC-803C9CD0 026DDC 0014+00 2/2 0/0 0/0 .data * __vt__Q27JGadget42TLinkList_factory */ SECTION_DATA extern void* data_803C9CBC[5] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)NULL, (void*)NULL, (void*)NULL, }; /* 802A8EC0-802A8EF8 2A3800 0038+00 1/1 0/0 0/0 .text * __ct__Q38JMessage18TResourceContainer10TCResourceFv */ // need to fix TLinkList_factory vtable stuff JMessage::TResourceContainer::TCResource::TCResource() { // NONMATCHING } /* 802A8EF8-802A8F6C 2A3838 0074+00 1/0 2/2 0/0 .text * __dt__Q38JMessage18TResourceContainer10TCResourceFv */ // need to fix TLinkList_factory vtable stuff JMessage::TResourceContainer::TCResource::~TCResource() {} /* 802A8F6C-802A8FFC 2A38AC 0090+00 0/0 1/1 0/0 .text * Get_groupID__Q38JMessage18TResourceContainer10TCResourceFUs */ // NONMATCHING JMessage::TResource* JMessage::TResourceContainer::TCResource::Get_groupID(u16 groupID) { JGadget::TContainerEnumerator enumerator(this); while (enumerator) { const TResource* res = &(*enumerator); if (res->field_0xc.get_groupID() == groupID) return (TResource*)res; } return NULL; } /* 802A8FFC-802A9048 2A393C 004C+00 1/0 0/0 0/0 .text * Do_create__Q38JMessage18TResourceContainer10TCResourceFv */ JMessage::TResource* JMessage::TResourceContainer::TCResource::Do_create() { TResource* new_res = new TResource(); return new_res; } /* 802A9048-802A906C 2A3988 0024+00 1/0 0/0 0/0 .text * Do_destroy__Q38JMessage18TResourceContainer10TCResourceFPQ28JMessage9TResource */ void JMessage::TResourceContainer::TCResource::Do_destroy(JMessage::TResource* param_0) { delete param_0; } /* 802A906C-802A90B8 2A39AC 004C+00 0/0 2/2 0/0 .text __ct__Q28JMessage18TResourceContainerFv */ JMessage::TResourceContainer::TResourceContainer() : mEncodingType(0), pfnParseCharacter_(NULL) {} /* 802A90B8-802A90F0 2A39F8 0038+00 1/1 0/0 0/0 .text * setEncoding__Q28JMessage18TResourceContainerFUc */ void JMessage::TResourceContainer::setEncoding(u8 e) { if (e == 0) { mEncodingType = e; pfnParseCharacter_ = NULL; } else { setEncoding_(e); } } /* 802A90F0-802A9130 2A3A30 0040+00 1/1 0/0 0/0 .text * setEncoding___Q28JMessage18TResourceContainerFUc */ void JMessage::TResourceContainer::setEncoding_(u8 e) { mEncodingType = e; pfnParseCharacter_ = JGadget::toValueFromIndex( e, sapfnParseCharacter_, 5, NULL); } /* 802A9130-802A9158 2A3A70 0028+00 0/0 2/2 0/0 .text * __ct__Q28JMessage6TParseFPQ28JMessage18TResourceContainer */ JMessage::TParse::TParse(JMessage::TResourceContainer* pContainer) { pContainer_ = pContainer; pResource_ = NULL; } /* 802A9158-802A91B8 2A3A98 0060+00 1/0 0/0 0/0 .text __dt__Q28JMessage6TParseFv */ JMessage::TParse::~TParse() {} /* 802A91B8-802A92F4 2A3AF8 013C+00 1/0 0/0 0/0 .text * parseHeader_next__Q28JMessage6TParseFPPCvPUlUl */ // NONMATCHING bool JMessage::TParse::parseHeader_next(void const** ppData_inout, u32* puBlock_out, u32 param_2) { const void* pData = *ppData_inout; data::TParse_THeader header(pData); *ppData_inout = header.getContent(); *puBlock_out = header.get_blockNumber(); if (memcmp(header.get_signature(), &data::ga4cSignature, sizeof(data::ga4cSignature))) { return 0; } if (header.get_type() != 'bmg1') { return 0; } u8 encoding = header.get_encoding(); if (encoding != 0) { if (!pContainer_->isEncodingSettable(encoding)) { return 0; } pContainer_->setEncoding(encoding); } if (param_2 & 0x10) { return 1; } TResourceContainer::TCResource* resContainer = &pContainer_->resContainer_; pResource_ = resContainer->Do_create(); if (pResource_ == NULL) { return param_2 & 0x20; } else { resContainer->Push_back(pResource_); pResource_->setData_header(header.getRaw()); return 1; } } /* 802A92F4-802A9490 2A3C34 019C+00 1/0 0/0 0/0 .text * parseBlock_next__Q28JMessage6TParseFPPCvPUlUl */ bool JMessage::TParse::parseBlock_next(void const** param_0, u32* param_1, u32 param_2) { // NONMATCHING } /* 802A9490-802A94A8 2A3DD0 0018+00 1/0 0/0 0/0 .text * parseCharacter_1Byte__Q28JMessage6localeFPPCc */ int JMessage::locale::parseCharacter_1Byte(char const** string) { u8 parse_char = **string; *string = *string + 1; return parse_char; } /* 802A94A8-802A94D4 2A3DE8 002C+00 1/0 0/0 0/0 .text * parseCharacter_2Byte__Q28JMessage6localeFPPCc */ int JMessage::locale::parseCharacter_2Byte(char const** string) { u8** tmp_str = (u8**)string; u8 hi = **tmp_str; *tmp_str = *tmp_str + 1; u8 lo = **tmp_str; int parse_char = (hi << 8) | lo; *tmp_str = *tmp_str + 1; return parse_char; } /* 802A94D4-802A9528 2A3E14 0054+00 1/1 0/0 0/0 .text lower_bound__3stdFPCUlPCUlRCUl */ /* extern "C" void func_802A94D4(void* _this, u32 const* param_0, u32 const* param_1, u32 const& param_2) { // NONMATCHING } */