diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2024-10-10 07:29:58 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-10 08:29:58 -0600 |
| commit | 12eb254d769d84743b5cc6cd5424057c57eaf0ad (patch) | |
| tree | 4509be332b2ccfc6fe939f47740d68f7746eca3e /src/JSystem/JMessage/resource.cpp | |
| parent | 2fd702c0ac170a789af879b8b92a82d4dcc9080c (diff) | |
switch to dtk setup (#2203)
* switch to dtk setup
* some cleanup / fixes
* cleanup d_a_alink literals
* Restore doxygen, update CI & README.md (#1)
* Fix build image ref (#2)
---------
Co-authored-by: Luke Street <luke@street.dev>
Diffstat (limited to 'src/JSystem/JMessage/resource.cpp')
| -rw-r--r-- | src/JSystem/JMessage/resource.cpp | 259 |
1 files changed, 259 insertions, 0 deletions
diff --git a/src/JSystem/JMessage/resource.cpp b/src/JSystem/JMessage/resource.cpp new file mode 100644 index 0000000000..97c7073256 --- /dev/null +++ b/src/JSystem/JMessage/resource.cpp @@ -0,0 +1,259 @@ +// +// Generated By: dol2asm +// Translation Unit: resource +// + +#include "JSystem/JMessage/resource.h" +#include "string.h" +#include "dol2asm.h" + +// +// Types: +// + +namespace std { +template <typename A1, typename B1> +void lower_bound(/* ... */); +/* 802A94D4 */ /* std::lower_bound<u32 const*, u32> */ +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 */ +u16 JMessage::TResource::toMessageIndex_messageID(u32 param_0, u32 param_1, + bool* param_2) const { + // NONMATCHING +} + +/* ############################################################################################## */ +/* 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<Q28JMessage9TResource,0> */ +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() { +extern "C" void __dt__Q38JMessage18TResourceContainer10TCResourceFv() { + // NONMATCHING +} + +/* 802A8F6C-802A8FFC 2A38AC 0090+00 0/0 1/1 0/0 .text + * Get_groupID__Q38JMessage18TResourceContainer10TCResourceFUs */ +JMessage::TResource* JMessage::TResourceContainer::TCResource::Get_groupID(u16 param_0) { + // NONMATCHING +} + +/* 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<JMessage::locale::parseCharacter_function>( + 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() { +extern "C" void __dt__Q28JMessage6TParseFv() { + // NONMATCHING +} + +/* 802A91B8-802A92F4 2A3AF8 013C+00 1/0 0/0 0/0 .text + * parseHeader_next__Q28JMessage6TParseFPPCvPUlUl */ +#ifdef 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; + } +} +#else +bool JMessage::TParse::parseHeader_next(void const** param_0, u32* param_1, u32 param_2) { + // NONMATCHING +} +#endif + +/* 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<PCUl,Ul>__3stdFPCUlPCUlRCUl */ +extern "C" void func_802A94D4(void* _this, u32 const* param_0, u32 const* param_1, + u32 const& param_2) { + // NONMATCHING +}
\ No newline at end of file |
