diff options
Diffstat (limited to 'src/d/msg/d_msg_string_base.cpp')
| -rw-r--r-- | src/d/msg/d_msg_string_base.cpp | 221 |
1 files changed, 140 insertions, 81 deletions
diff --git a/src/d/msg/d_msg_string_base.cpp b/src/d/msg/d_msg_string_base.cpp index 0b3937331a..64e960db8e 100644 --- a/src/d/msg/d_msg_string_base.cpp +++ b/src/d/msg/d_msg_string_base.cpp @@ -4,10 +4,14 @@ // #include "d/msg/d_msg_string_base.h" +#include "d/msg/d_msg_class.h" #include "d/com/d_com_inf_game.h" #include "d/meter/d_meter2_info.h" #include "dol2asm.h" #include "dolphin/types.h" +#include "JSystem/JUtility/JUTAssert.h" +#include "JSystem/JKernel/JKRArchive.h" +#include "JSystem/J2DGraph/J2DTextBox.h" // // Forward References: @@ -84,16 +88,53 @@ SECTION_DATA extern void* __vt__16dMsgStringBase_c[8] = { }; /* 802493B4-80249528 243CF4 0174+00 0/0 2/2 0/0 .text __ct__16dMsgStringBase_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dMsgStringBase_c::dMsgStringBase_c() { - nofralloc -#include "asm/d/msg/d_msg_string_base/__ct__16dMsgStringBase_cFv.s" +dMsgStringBase_c::dMsgStringBase_c() { + field_0x20 = 0; + getResource(); + mpResCont = new JMessage::TResourceContainer(); + JUT_ASSERT(33, mpResCont != 0); + mpCtrl = new jmessage_string_tControl(); + JUT_ASSERT(36, mpCtrl != 0); + mpRefer = new jmessage_string_tReference(); + JUT_ASSERT(39, mpRefer != 0); + mpSeqProc = new jmessage_string_tSequenceProcessor(mpRefer, mpCtrl); + JUT_ASSERT(42, mpSeqProc != 0); + mpRenProc = new jmessage_string_tRenderingProcessor(mpRefer); + JUT_ASSERT(45, mpRenProc != 0); + mpParse = new JMessage::TParse(mpResCont); + JUT_ASSERT(48, mpParse != 0); + mpRefer->setResourceContainer(mpResCont); + mpCtrl->setSequenceProcessor(mpSeqProc); + mpCtrl->setRenderingProcessor(mpRenProc); + mpParse->parse(field_0x1c, 0); + mpCtrl->reset(); + mpCtrl->resetResourceCache(); } -#pragma pop /* 80249528-80249700 243E68 01D8+00 0/0 1/1 0/0 .text __dt__16dMsgStringBase_cFv */ +// linklist begin/front/pop_front iterator stack +#ifdef NONMATCHING +dMsgStringBase_c::~dMsgStringBase_c() { + mpResCont->destroyResource_all(); + delete mpResCont; + mpResCont = NULL; + delete mpCtrl; + mpCtrl = NULL; + delete mpRefer; + mpRefer = NULL; + delete mpSeqProc; + mpSeqProc = NULL; + delete mpRenProc; + mpRenProc = NULL; + delete mpParse; + mpParse = NULL; + + void* iVar1 = dMeter2Info_getMsgResource(); + if (iVar1 == NULL) { + dComIfGp_getMsgDtArchive(0)->removeResourceAll(); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -102,78 +143,111 @@ asm dMsgStringBase_c::~dMsgStringBase_c() { #include "asm/d/msg/d_msg_string_base/__dt__16dMsgStringBase_cFv.s" } #pragma pop - -/* ############################################################################################## */ -/* 80399C98-80399C98 0262F8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80399C98 = "zel_00.bmg"; -#pragma pop +#endif /* 80249700-80249768 244040 0068+00 1/1 2/2 0/0 .text getResource__16dMsgStringBase_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgStringBase_c::getResource() { - nofralloc -#include "asm/d/msg/d_msg_string_base/getResource__16dMsgStringBase_cFv.s" +void dMsgStringBase_c::getResource() { + field_0x1c = dMeter2Info_getMsgResource(); + if (field_0x1c == NULL) { + field_0x1c = JKRGetTypeResource('ROOT', "zel_00.bmg", dComIfGp_getMsgDtArchive(0)); + } } -#pragma pop /* 80249768-802498D8 2440A8 0170+00 1/1 1/1 0/0 .text * getStringLocal__16dMsgStringBase_cFUlP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgStringBase_c::getStringLocal(u32 param_0, J2DTextBox* param_1, J2DTextBox* param_2, - JUTFont* param_3, COutFont_c* param_4, u8 param_5) { - nofralloc -#include "asm/d/msg/d_msg_string_base/getStringLocal__16dMsgStringBase_cFUlP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc.s" +f32 dMsgStringBase_c::getStringLocal(u32 param_1, J2DTextBox* param_2, J2DTextBox* param_3, + JUTFont* param_4, COutFont_c* param_5, u8 param_6) { + if (dMeter2Info_getMsgResource() != NULL) { + if (param_1 > 5000) { + if (field_0x1c != dMeter2Info_getStageMsgResource()) { + field_0x1c = dMeter2Info_getStageMsgResource(); + mpParse->parse(field_0x1c, 0x80); + } + } else { + if (field_0x1c != dMeter2Info_getMsgResource()) { + field_0x1c = dMeter2Info_getMsgResource(); + mpParse->parse(field_0x1c, 0x80); + } + } + } + mpRefer->init(param_2, param_3, param_4, param_5, param_6); + mpRefer->setColor(param_2->getCharColor(), param_2->getGradColor()); + mpCtrl->setMessageID(param_1, 0, NULL); + mpCtrl->update(); + mpCtrl->render(); + f32 lineLength = mpRefer->getLineLength(0); + mpCtrl->reset(); + mpCtrl->resetResourceCache(); + return lineLength; } -#pragma pop - -/* ############################################################################################## */ -/* 80454D70-80454D78 003370 0004+04 2/2 0/0 0/0 .sdata2 @4046 */ -SECTION_SDATA2 static f32 lit_4046[1 + 1 /* padding */] = { - 0.0f, - /* padding */ - 0.0f, -}; /* 802498D8-80249A48 244218 0170+00 1/1 1/1 0/0 .text * getStringPageLocal__16dMsgStringBase_cFUlUcUcP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgStringBase_c::getStringPageLocal(u32 param_0, u8 param_1, u8 param_2, - J2DTextBox* param_3, J2DTextBox* param_4, - JUTFont* param_5, COutFont_c* param_6, u8 param_7) { - nofralloc -#include "asm/d/msg/d_msg_string_base/func_802498D8.s" +// Matches with literals +f32 dMsgStringBase_c::getStringPageLocal(u32 param_1, u8 param_2, u8 param_3, + J2DTextBox* param_4, J2DTextBox* param_5, + JUTFont* param_6, COutFont_c* param_7, u8 param_8) { + if (dMeter2Info_getMsgResource() != NULL) { + if (param_1 > 5000) { + if (field_0x1c != dMeter2Info_getStageMsgResource()) { + field_0x1c = dMeter2Info_getStageMsgResource(); + mpParse->parse(field_0x1c, 0x80); + } + } else { + if (field_0x1c != dMeter2Info_getMsgResource()) { + field_0x1c = dMeter2Info_getMsgResource(); + mpParse->parse(field_0x1c, 0x80); + } + } + } + mpRefer->init(param_4, param_5, param_6, param_7, param_8); + mpRefer->setNowPage(param_2); + mpRefer->setLineMax(param_3); + mpRefer->setColor(param_4->getCharColor(), param_4->getGradColor()); + mpCtrl->setMessageID(param_1, 0, NULL); + mpCtrl->update(); + mpCtrl->render(); + mpCtrl->reset(); + mpCtrl->resetResourceCache(); + return 0.0f; } -#pragma pop /* 80249A48-80249A70 244388 0028+00 0/0 1/1 0/0 .text getPageMax__16dMsgStringBase_cFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgStringBase_c::getPageMax(int param_0) { - nofralloc -#include "asm/d/msg/d_msg_string_base/getPageMax__16dMsgStringBase_cFi.s" +u8 dMsgStringBase_c::getPageMax(int param_0) { + s16 lineCount = mpRefer->getLineCount(); + u8 pageMax = (lineCount / param_0) & 0xff; + if (lineCount % param_0 != 0) { + return pageMax + 1; + } + return pageMax; } -#pragma pop /* 80249A70-80249BAC 2443B0 013C+00 1/1 0/0 0/0 .text getMessageLocal__16dMsgStringBase_cFUlPc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgStringBase_c::getMessageLocal(u32 param_0, char* param_1) { - nofralloc -#include "asm/d/msg/d_msg_string_base/getMessageLocal__16dMsgStringBase_cFUlPc.s" +f32 dMsgStringBase_c::getMessageLocal(u32 param_1, char* param_2) { + if (dMeter2Info_getMsgResource() != NULL) { + if (param_1 > 5000) { + if (field_0x1c != dMeter2Info_getStageMsgResource()) { + field_0x1c = dMeter2Info_getStageMsgResource(); + mpParse->parse(field_0x1c, 0x80); + } + } else { + if (field_0x1c != dMeter2Info_getMsgResource()) { + field_0x1c = dMeter2Info_getMsgResource(); + mpParse->parse(field_0x1c, 0x80); + } + } + } + mpRefer->init(NULL, NULL, NULL, NULL, 0); + mpCtrl->setMessageID(param_1, 0, NULL); + mpCtrl->update(); + mpCtrl->render(); + mpCtrl->reset(); + mpCtrl->resetResourceCache(); + strcpy(param_2, mpRenProc->getString()); + return 0.0f; } -#pragma pop /* 80249BAC-80249BB0 2444EC 0004+00 1/0 0/0 0/0 .text * drawFontLocal__16dMsgStringBase_cFP10J2DTextBoxUcffffUlUc */ @@ -184,39 +258,24 @@ void dMsgStringBase_c::drawFontLocal(J2DTextBox* param_0, u8 param_1, f32 param_ /* 80249BB0-80249BD0 2444F0 0020+00 1/0 0/0 0/0 .text * getString__16dMsgStringBase_cFUlP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm f32 dMsgStringBase_c::getString(u32 param_0, J2DTextBox* param_1, J2DTextBox* param_2, +f32 dMsgStringBase_c::getString(u32 param_0, J2DTextBox* param_1, J2DTextBox* param_2, JUTFont* param_3, COutFont_c* param_4, u8 param_5) { - nofralloc -#include "asm/d/msg/d_msg_string_base/getString__16dMsgStringBase_cFUlP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc.s" + return getStringLocal(param_0, param_1, param_2, param_3, param_4, param_5); } -#pragma pop /* 80249BD0-80249BF8 244510 0028+00 1/0 0/0 0/0 .text * getStringPage__16dMsgStringBase_cFUlUcUcP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgStringBase_c::getStringPage(u32 param_0, u8 param_1, u8 param_2, J2DTextBox* param_3, +f32 dMsgStringBase_c::getStringPage(u32 param_0, u8 param_1, u8 param_2, J2DTextBox* param_3, J2DTextBox* param_4, JUTFont* param_5, COutFont_c* param_6, u8 param_7) { - nofralloc -#include "asm/d/msg/d_msg_string_base/getStringPage__16dMsgStringBase_cFUlUcUcP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc.s" + return getStringPageLocal(param_0, param_1, param_2, param_3, param_4, param_5, param_6, param_7); } -#pragma pop /* 80249BF8-80249C18 244538 0020+00 1/0 1/0 0/0 .text getMessage__16dMsgStringBase_cFUlPc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMsgStringBase_c::getMessage(u32 param_0, char* param_1) { - nofralloc -#include "asm/d/msg/d_msg_string_base/getMessage__16dMsgStringBase_cFUlPc.s" +f32 dMsgStringBase_c::getMessage(u32 param_0, char* param_1) { + return getMessageLocal(param_0, param_1); } -#pragma pop /* 80249C18-80249C1C 244558 0004+00 1/0 0/0 0/0 .text * resetStringLocal__16dMsgStringBase_cFP10J2DTextBox */ |
