summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhatal175 <hatal175@users.noreply.github.com>2024-01-03 05:37:15 +0200
committerGitHub <noreply@github.com>2024-01-02 19:37:15 -0800
commitd5d59471ea885faeb3ca0909e1329082b67a9b90 (patch)
tree45a20bec694afc4762cd0f4655dca4506e48b07d
parentbe10df47608afc4c346e7dba2aac56eca59c45b6 (diff)
Match most of d_msg_string_base (#2021)
-rw-r--r--asm/d/msg/d_msg_string_base/__ct__16dMsgStringBase_cFv.s102
-rw-r--r--asm/d/msg/d_msg_string_base/func_802498D8.s97
-rw-r--r--asm/d/msg/d_msg_string_base/getMessageLocal__16dMsgStringBase_cFUlPc.s84
-rw-r--r--asm/d/msg/d_msg_string_base/getMessage__16dMsgStringBase_cFUlPc.s9
-rw-r--r--asm/d/msg/d_msg_string_base/getPageMax__16dMsgStringBase_cFi.s11
-rw-r--r--asm/d/msg/d_msg_string_base/getResource__16dMsgStringBase_cFv.s28
-rw-r--r--asm/d/msg/d_msg_string_base/getStringLocal__16dMsgStringBase_cFUlP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc.s97
-rw-r--r--asm/d/msg/d_msg_string_base/getStringPage__16dMsgStringBase_cFUlUcUcP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc.s11
-rw-r--r--asm/d/msg/d_msg_string_base/getString__16dMsgStringBase_cFUlP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc.s9
-rw-r--r--include/JSystem/J2DGraph/J2DTextBox.h3
-rw-r--r--include/JSystem/JGadget/linklist.h35
-rw-r--r--include/JSystem/JMessage/control.h13
-rw-r--r--include/JSystem/JMessage/processor.h4
-rw-r--r--include/JSystem/JMessage/resource.h14
-rw-r--r--include/d/msg/d_msg_class.h9
-rw-r--r--include/d/msg/d_msg_string_base.h12
-rw-r--r--src/d/msg/d_msg_string_base.cpp221
17 files changed, 218 insertions, 541 deletions
diff --git a/asm/d/msg/d_msg_string_base/__ct__16dMsgStringBase_cFv.s b/asm/d/msg/d_msg_string_base/__ct__16dMsgStringBase_cFv.s
deleted file mode 100644
index 01bc1f7cca..0000000000
--- a/asm/d/msg/d_msg_string_base/__ct__16dMsgStringBase_cFv.s
+++ /dev/null
@@ -1,102 +0,0 @@
-lbl_802493B4:
-/* 802493B4 94 21 FF E0 */ stwu r1, -0x20(r1)
-/* 802493B8 7C 08 02 A6 */ mflr r0
-/* 802493BC 90 01 00 24 */ stw r0, 0x24(r1)
-/* 802493C0 93 E1 00 1C */ stw r31, 0x1c(r1)
-/* 802493C4 7C 7F 1B 78 */ mr r31, r3
-/* 802493C8 3C 80 80 3C */ lis r4, __vt__16dMsgStringBase_c@ha /* 0x803C1478@ha */
-/* 802493CC 38 04 14 78 */ addi r0, r4, __vt__16dMsgStringBase_c@l /* 0x803C1478@l */
-/* 802493D0 90 03 00 00 */ stw r0, 0(r3)
-/* 802493D4 38 00 00 00 */ li r0, 0
-/* 802493D8 B0 03 00 20 */ sth r0, 0x20(r3)
-/* 802493DC 48 00 03 25 */ bl getResource__16dMsgStringBase_cFv
-/* 802493E0 38 60 00 20 */ li r3, 0x20
-/* 802493E4 48 08 58 69 */ bl __nw__FUl
-/* 802493E8 7C 60 1B 79 */ or. r0, r3, r3
-/* 802493EC 41 82 00 0C */ beq lbl_802493F8
-/* 802493F0 48 05 FC 7D */ bl __ct__Q28JMessage18TResourceContainerFv
-/* 802493F4 7C 60 1B 78 */ mr r0, r3
-lbl_802493F8:
-/* 802493F8 90 1F 00 04 */ stw r0, 4(r31)
-/* 802493FC 38 60 00 38 */ li r3, 0x38
-/* 80249400 48 08 58 4D */ bl __nw__FUl
-/* 80249404 7C 60 1B 79 */ or. r0, r3, r3
-/* 80249408 41 82 00 0C */ beq lbl_80249414
-/* 8024940C 4B FE 67 51 */ bl __ct__24jmessage_string_tControlFv
-/* 80249410 7C 60 1B 78 */ mr r0, r3
-lbl_80249414:
-/* 80249414 90 1F 00 08 */ stw r0, 8(r31)
-/* 80249418 38 60 00 88 */ li r3, 0x88
-/* 8024941C 48 08 58 31 */ bl __nw__FUl
-/* 80249420 7C 60 1B 79 */ or. r0, r3, r3
-/* 80249424 41 82 00 0C */ beq lbl_80249430
-/* 80249428 4B FE 64 99 */ bl __ct__26jmessage_string_tReferenceFv
-/* 8024942C 7C 60 1B 78 */ mr r0, r3
-lbl_80249430:
-/* 80249430 90 1F 00 0C */ stw r0, 0xc(r31)
-/* 80249434 38 60 00 8C */ li r3, 0x8c
-/* 80249438 48 08 58 15 */ bl __nw__FUl
-/* 8024943C 7C 60 1B 79 */ or. r0, r3, r3
-/* 80249440 41 82 00 14 */ beq lbl_80249454
-/* 80249444 80 9F 00 0C */ lwz r4, 0xc(r31)
-/* 80249448 80 BF 00 08 */ lwz r5, 8(r31)
-/* 8024944C 4B FE 75 BD */ bl __ct__34jmessage_string_tSequenceProcessorFPC26jmessage_string_tReferenceP24jmessage_string_tControl
-/* 80249450 7C 60 1B 78 */ mr r0, r3
-lbl_80249454:
-/* 80249454 90 1F 00 10 */ stw r0, 0x10(r31)
-/* 80249458 38 60 05 58 */ li r3, 0x558
-/* 8024945C 48 08 57 F1 */ bl __nw__FUl
-/* 80249460 7C 60 1B 79 */ or. r0, r3, r3
-/* 80249464 41 82 00 10 */ beq lbl_80249474
-/* 80249468 80 9F 00 0C */ lwz r4, 0xc(r31)
-/* 8024946C 4B FE 77 5D */ bl __ct__35jmessage_string_tRenderingProcessorFPC26jmessage_string_tReference
-/* 80249470 7C 60 1B 78 */ mr r0, r3
-lbl_80249474:
-/* 80249474 90 1F 00 14 */ stw r0, 0x14(r31)
-/* 80249478 38 60 00 0C */ li r3, 0xc
-/* 8024947C 48 08 57 D1 */ bl __nw__FUl
-/* 80249480 7C 60 1B 79 */ or. r0, r3, r3
-/* 80249484 41 82 00 10 */ beq lbl_80249494
-/* 80249488 80 9F 00 04 */ lwz r4, 4(r31)
-/* 8024948C 48 05 FC A5 */ bl __ct__Q28JMessage6TParseFPQ28JMessage18TResourceContainer
-/* 80249490 7C 60 1B 78 */ mr r0, r3
-lbl_80249494:
-/* 80249494 90 1F 00 18 */ stw r0, 0x18(r31)
-/* 80249498 80 1F 00 04 */ lwz r0, 4(r31)
-/* 8024949C 80 7F 00 0C */ lwz r3, 0xc(r31)
-/* 802494A0 90 03 00 04 */ stw r0, 4(r3)
-/* 802494A4 80 1F 00 10 */ lwz r0, 0x10(r31)
-/* 802494A8 80 7F 00 08 */ lwz r3, 8(r31)
-/* 802494AC 90 03 00 04 */ stw r0, 4(r3)
-/* 802494B0 80 1F 00 14 */ lwz r0, 0x14(r31)
-/* 802494B4 80 7F 00 08 */ lwz r3, 8(r31)
-/* 802494B8 90 03 00 08 */ stw r0, 8(r3)
-/* 802494BC 80 1F 00 1C */ lwz r0, 0x1c(r31)
-/* 802494C0 90 01 00 08 */ stw r0, 8(r1)
-/* 802494C4 80 7F 00 18 */ lwz r3, 0x18(r31)
-/* 802494C8 38 81 00 08 */ addi r4, r1, 8
-/* 802494CC 38 A0 00 00 */ li r5, 0
-/* 802494D0 48 09 34 41 */ bl parse_next__Q37JGadget6binary19TParse_header_blockFPPCvUl
-/* 802494D4 80 7F 00 08 */ lwz r3, 8(r31)
-/* 802494D8 48 05 E0 FD */ bl reset__Q28JMessage8TControlFv
-/* 802494DC 80 7F 00 08 */ lwz r3, 8(r31)
-/* 802494E0 80 83 00 04 */ lwz r4, 4(r3)
-/* 802494E4 28 04 00 00 */ cmplwi r4, 0
-/* 802494E8 41 82 00 0C */ beq lbl_802494F4
-/* 802494EC 38 00 00 00 */ li r0, 0
-/* 802494F0 90 04 00 08 */ stw r0, 8(r4)
-lbl_802494F4:
-/* 802494F4 80 83 00 08 */ lwz r4, 8(r3)
-/* 802494F8 28 04 00 00 */ cmplwi r4, 0
-/* 802494FC 41 82 00 0C */ beq lbl_80249508
-/* 80249500 38 00 00 00 */ li r0, 0
-/* 80249504 90 04 00 08 */ stw r0, 8(r4)
-lbl_80249508:
-/* 80249508 38 00 00 00 */ li r0, 0
-/* 8024950C 90 03 00 10 */ stw r0, 0x10(r3)
-/* 80249510 7F E3 FB 78 */ mr r3, r31
-/* 80249514 83 E1 00 1C */ lwz r31, 0x1c(r1)
-/* 80249518 80 01 00 24 */ lwz r0, 0x24(r1)
-/* 8024951C 7C 08 03 A6 */ mtlr r0
-/* 80249520 38 21 00 20 */ addi r1, r1, 0x20
-/* 80249524 4E 80 00 20 */ blr
diff --git a/asm/d/msg/d_msg_string_base/func_802498D8.s b/asm/d/msg/d_msg_string_base/func_802498D8.s
deleted file mode 100644
index 75de2b75ee..0000000000
--- a/asm/d/msg/d_msg_string_base/func_802498D8.s
+++ /dev/null
@@ -1,97 +0,0 @@
-lbl_802498D8:
-/* 802498D8 94 21 FF C0 */ stwu r1, -0x40(r1)
-/* 802498DC 7C 08 02 A6 */ mflr r0
-/* 802498E0 90 01 00 44 */ stw r0, 0x44(r1)
-/* 802498E4 39 61 00 40 */ addi r11, r1, 0x40
-/* 802498E8 48 11 88 DD */ bl _savegpr_23
-/* 802498EC 7C 78 1B 78 */ mr r24, r3
-/* 802498F0 7C 99 23 78 */ mr r25, r4
-/* 802498F4 7C BA 2B 78 */ mr r26, r5
-/* 802498F8 7C DB 33 78 */ mr r27, r6
-/* 802498FC 7C FC 3B 78 */ mr r28, r7
-/* 80249900 7D 1D 43 78 */ mr r29, r8
-/* 80249904 7D 3E 4B 78 */ mr r30, r9
-/* 80249908 7D 5F 53 78 */ mr r31, r10
-/* 8024990C 8A E1 00 4B */ lbz r23, 0x4b(r1)
-/* 80249910 3C 60 80 43 */ lis r3, g_meter2_info@ha /* 0x80430188@ha */
-/* 80249914 38 63 01 88 */ addi r3, r3, g_meter2_info@l /* 0x80430188@l */
-/* 80249918 80 83 00 10 */ lwz r4, 0x10(r3)
-/* 8024991C 28 04 00 00 */ cmplwi r4, 0
-/* 80249920 41 82 00 64 */ beq lbl_80249984
-/* 80249924 28 19 13 88 */ cmplwi r25, 0x1388
-/* 80249928 40 81 00 34 */ ble lbl_8024995C
-/* 8024992C 80 18 00 1C */ lwz r0, 0x1c(r24)
-/* 80249930 80 63 00 14 */ lwz r3, 0x14(r3)
-/* 80249934 7C 00 18 40 */ cmplw r0, r3
-/* 80249938 41 82 00 4C */ beq lbl_80249984
-/* 8024993C 90 78 00 1C */ stw r3, 0x1c(r24)
-/* 80249940 80 18 00 1C */ lwz r0, 0x1c(r24)
-/* 80249944 90 01 00 0C */ stw r0, 0xc(r1)
-/* 80249948 80 78 00 18 */ lwz r3, 0x18(r24)
-/* 8024994C 38 81 00 0C */ addi r4, r1, 0xc
-/* 80249950 38 A0 00 80 */ li r5, 0x80
-/* 80249954 48 09 2F BD */ bl parse_next__Q37JGadget6binary19TParse_header_blockFPPCvUl
-/* 80249958 48 00 00 2C */ b lbl_80249984
-lbl_8024995C:
-/* 8024995C 80 18 00 1C */ lwz r0, 0x1c(r24)
-/* 80249960 7C 00 20 40 */ cmplw r0, r4
-/* 80249964 41 82 00 20 */ beq lbl_80249984
-/* 80249968 90 98 00 1C */ stw r4, 0x1c(r24)
-/* 8024996C 80 18 00 1C */ lwz r0, 0x1c(r24)
-/* 80249970 90 01 00 08 */ stw r0, 8(r1)
-/* 80249974 80 78 00 18 */ lwz r3, 0x18(r24)
-/* 80249978 38 81 00 08 */ addi r4, r1, 8
-/* 8024997C 38 A0 00 80 */ li r5, 0x80
-/* 80249980 48 09 2F 91 */ bl parse_next__Q37JGadget6binary19TParse_header_blockFPPCvUl
-lbl_80249984:
-/* 80249984 80 78 00 0C */ lwz r3, 0xc(r24)
-/* 80249988 7F 84 E3 78 */ mr r4, r28
-/* 8024998C 7F A5 EB 78 */ mr r5, r29
-/* 80249990 7F C6 F3 78 */ mr r6, r30
-/* 80249994 7F E7 FB 78 */ mr r7, r31
-/* 80249998 7E E8 BB 78 */ mr r8, r23
-/* 8024999C 4B FE 60 11 */ bl init__26jmessage_string_tReferenceFP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc
-/* 802499A0 80 78 00 0C */ lwz r3, 0xc(r24)
-/* 802499A4 9B 43 00 83 */ stb r26, 0x83(r3)
-/* 802499A8 80 78 00 0C */ lwz r3, 0xc(r24)
-/* 802499AC 9B 63 00 82 */ stb r27, 0x82(r3)
-/* 802499B0 80 7C 01 08 */ lwz r3, 0x108(r28)
-/* 802499B4 90 61 00 10 */ stw r3, 0x10(r1)
-/* 802499B8 80 1C 01 04 */ lwz r0, 0x104(r28)
-/* 802499BC 90 01 00 14 */ stw r0, 0x14(r1)
-/* 802499C0 80 98 00 0C */ lwz r4, 0xc(r24)
-/* 802499C4 90 04 00 78 */ stw r0, 0x78(r4)
-/* 802499C8 90 64 00 7C */ stw r3, 0x7c(r4)
-/* 802499CC 80 78 00 08 */ lwz r3, 8(r24)
-/* 802499D0 7F 24 CB 78 */ mr r4, r25
-/* 802499D4 38 A0 00 00 */ li r5, 0
-/* 802499D8 38 C0 00 00 */ li r6, 0
-/* 802499DC 48 05 DF 19 */ bl setMessageID__Q28JMessage8TControlFUlUlPb
-/* 802499E0 80 78 00 08 */ lwz r3, 8(r24)
-/* 802499E4 48 05 DC 51 */ bl update__Q28JMessage8TControlFv
-/* 802499E8 80 78 00 08 */ lwz r3, 8(r24)
-/* 802499EC 48 05 DC D1 */ bl render__Q28JMessage8TControlFv
-/* 802499F0 80 78 00 08 */ lwz r3, 8(r24)
-/* 802499F4 48 05 DB E1 */ bl reset__Q28JMessage8TControlFv
-/* 802499F8 80 78 00 08 */ lwz r3, 8(r24)
-/* 802499FC 80 83 00 04 */ lwz r4, 4(r3)
-/* 80249A00 28 04 00 00 */ cmplwi r4, 0
-/* 80249A04 41 82 00 0C */ beq lbl_80249A10
-/* 80249A08 38 00 00 00 */ li r0, 0
-/* 80249A0C 90 04 00 08 */ stw r0, 8(r4)
-lbl_80249A10:
-/* 80249A10 80 83 00 08 */ lwz r4, 8(r3)
-/* 80249A14 28 04 00 00 */ cmplwi r4, 0
-/* 80249A18 41 82 00 0C */ beq lbl_80249A24
-/* 80249A1C 38 00 00 00 */ li r0, 0
-/* 80249A20 90 04 00 08 */ stw r0, 8(r4)
-lbl_80249A24:
-/* 80249A24 38 00 00 00 */ li r0, 0
-/* 80249A28 90 03 00 10 */ stw r0, 0x10(r3)
-/* 80249A2C C0 22 B3 70 */ lfs f1, lit_4046(r2)
-/* 80249A30 39 61 00 40 */ addi r11, r1, 0x40
-/* 80249A34 48 11 87 DD */ bl _restgpr_23
-/* 80249A38 80 01 00 44 */ lwz r0, 0x44(r1)
-/* 80249A3C 7C 08 03 A6 */ mtlr r0
-/* 80249A40 38 21 00 40 */ addi r1, r1, 0x40
-/* 80249A44 4E 80 00 20 */ blr
diff --git a/asm/d/msg/d_msg_string_base/getMessageLocal__16dMsgStringBase_cFUlPc.s b/asm/d/msg/d_msg_string_base/getMessageLocal__16dMsgStringBase_cFUlPc.s
deleted file mode 100644
index b6525a69c4..0000000000
--- a/asm/d/msg/d_msg_string_base/getMessageLocal__16dMsgStringBase_cFUlPc.s
+++ /dev/null
@@ -1,84 +0,0 @@
-lbl_80249A70:
-/* 80249A70 94 21 FF E0 */ stwu r1, -0x20(r1)
-/* 80249A74 7C 08 02 A6 */ mflr r0
-/* 80249A78 90 01 00 24 */ stw r0, 0x24(r1)
-/* 80249A7C 39 61 00 20 */ addi r11, r1, 0x20
-/* 80249A80 48 11 87 5D */ bl _savegpr_29
-/* 80249A84 7C 7D 1B 78 */ mr r29, r3
-/* 80249A88 7C 9E 23 78 */ mr r30, r4
-/* 80249A8C 7C BF 2B 78 */ mr r31, r5
-/* 80249A90 3C 60 80 43 */ lis r3, g_meter2_info@ha /* 0x80430188@ha */
-/* 80249A94 38 63 01 88 */ addi r3, r3, g_meter2_info@l /* 0x80430188@l */
-/* 80249A98 80 83 00 10 */ lwz r4, 0x10(r3)
-/* 80249A9C 28 04 00 00 */ cmplwi r4, 0
-/* 80249AA0 41 82 00 64 */ beq lbl_80249B04
-/* 80249AA4 28 1E 13 88 */ cmplwi r30, 0x1388
-/* 80249AA8 40 81 00 34 */ ble lbl_80249ADC
-/* 80249AAC 80 1D 00 1C */ lwz r0, 0x1c(r29)
-/* 80249AB0 80 63 00 14 */ lwz r3, 0x14(r3)
-/* 80249AB4 7C 00 18 40 */ cmplw r0, r3
-/* 80249AB8 41 82 00 4C */ beq lbl_80249B04
-/* 80249ABC 90 7D 00 1C */ stw r3, 0x1c(r29)
-/* 80249AC0 80 1D 00 1C */ lwz r0, 0x1c(r29)
-/* 80249AC4 90 01 00 0C */ stw r0, 0xc(r1)
-/* 80249AC8 80 7D 00 18 */ lwz r3, 0x18(r29)
-/* 80249ACC 38 81 00 0C */ addi r4, r1, 0xc
-/* 80249AD0 38 A0 00 80 */ li r5, 0x80
-/* 80249AD4 48 09 2E 3D */ bl parse_next__Q37JGadget6binary19TParse_header_blockFPPCvUl
-/* 80249AD8 48 00 00 2C */ b lbl_80249B04
-lbl_80249ADC:
-/* 80249ADC 80 1D 00 1C */ lwz r0, 0x1c(r29)
-/* 80249AE0 7C 00 20 40 */ cmplw r0, r4
-/* 80249AE4 41 82 00 20 */ beq lbl_80249B04
-/* 80249AE8 90 9D 00 1C */ stw r4, 0x1c(r29)
-/* 80249AEC 80 1D 00 1C */ lwz r0, 0x1c(r29)
-/* 80249AF0 90 01 00 08 */ stw r0, 8(r1)
-/* 80249AF4 80 7D 00 18 */ lwz r3, 0x18(r29)
-/* 80249AF8 38 81 00 08 */ addi r4, r1, 8
-/* 80249AFC 38 A0 00 80 */ li r5, 0x80
-/* 80249B00 48 09 2E 11 */ bl parse_next__Q37JGadget6binary19TParse_header_blockFPPCvUl
-lbl_80249B04:
-/* 80249B04 80 7D 00 0C */ lwz r3, 0xc(r29)
-/* 80249B08 38 80 00 00 */ li r4, 0
-/* 80249B0C 38 A0 00 00 */ li r5, 0
-/* 80249B10 38 C0 00 00 */ li r6, 0
-/* 80249B14 38 E0 00 00 */ li r7, 0
-/* 80249B18 39 00 00 00 */ li r8, 0
-/* 80249B1C 4B FE 5E 91 */ bl init__26jmessage_string_tReferenceFP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc
-/* 80249B20 80 7D 00 08 */ lwz r3, 8(r29)
-/* 80249B24 7F C4 F3 78 */ mr r4, r30
-/* 80249B28 38 A0 00 00 */ li r5, 0
-/* 80249B2C 38 C0 00 00 */ li r6, 0
-/* 80249B30 48 05 DD C5 */ bl setMessageID__Q28JMessage8TControlFUlUlPb
-/* 80249B34 80 7D 00 08 */ lwz r3, 8(r29)
-/* 80249B38 48 05 DA FD */ bl update__Q28JMessage8TControlFv
-/* 80249B3C 80 7D 00 08 */ lwz r3, 8(r29)
-/* 80249B40 48 05 DB 7D */ bl render__Q28JMessage8TControlFv
-/* 80249B44 80 7D 00 08 */ lwz r3, 8(r29)
-/* 80249B48 48 05 DA 8D */ bl reset__Q28JMessage8TControlFv
-/* 80249B4C 80 7D 00 08 */ lwz r3, 8(r29)
-/* 80249B50 80 83 00 04 */ lwz r4, 4(r3)
-/* 80249B54 28 04 00 00 */ cmplwi r4, 0
-/* 80249B58 41 82 00 0C */ beq lbl_80249B64
-/* 80249B5C 38 00 00 00 */ li r0, 0
-/* 80249B60 90 04 00 08 */ stw r0, 8(r4)
-lbl_80249B64:
-/* 80249B64 80 83 00 08 */ lwz r4, 8(r3)
-/* 80249B68 28 04 00 00 */ cmplwi r4, 0
-/* 80249B6C 41 82 00 0C */ beq lbl_80249B78
-/* 80249B70 38 00 00 00 */ li r0, 0
-/* 80249B74 90 04 00 08 */ stw r0, 8(r4)
-lbl_80249B78:
-/* 80249B78 38 00 00 00 */ li r0, 0
-/* 80249B7C 90 03 00 10 */ stw r0, 0x10(r3)
-/* 80249B80 80 7D 00 14 */ lwz r3, 0x14(r29)
-/* 80249B84 38 83 00 54 */ addi r4, r3, 0x54
-/* 80249B88 7F E3 FB 78 */ mr r3, r31
-/* 80249B8C 48 11 EF A1 */ bl strcpy
-/* 80249B90 C0 22 B3 70 */ lfs f1, lit_4046(r2)
-/* 80249B94 39 61 00 20 */ addi r11, r1, 0x20
-/* 80249B98 48 11 86 91 */ bl _restgpr_29
-/* 80249B9C 80 01 00 24 */ lwz r0, 0x24(r1)
-/* 80249BA0 7C 08 03 A6 */ mtlr r0
-/* 80249BA4 38 21 00 20 */ addi r1, r1, 0x20
-/* 80249BA8 4E 80 00 20 */ blr
diff --git a/asm/d/msg/d_msg_string_base/getMessage__16dMsgStringBase_cFUlPc.s b/asm/d/msg/d_msg_string_base/getMessage__16dMsgStringBase_cFUlPc.s
deleted file mode 100644
index 35552843da..0000000000
--- a/asm/d/msg/d_msg_string_base/getMessage__16dMsgStringBase_cFUlPc.s
+++ /dev/null
@@ -1,9 +0,0 @@
-lbl_80249BF8:
-/* 80249BF8 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 80249BFC 7C 08 02 A6 */ mflr r0
-/* 80249C00 90 01 00 14 */ stw r0, 0x14(r1)
-/* 80249C04 4B FF FE 6D */ bl getMessageLocal__16dMsgStringBase_cFUlPc
-/* 80249C08 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 80249C0C 7C 08 03 A6 */ mtlr r0
-/* 80249C10 38 21 00 10 */ addi r1, r1, 0x10
-/* 80249C14 4E 80 00 20 */ blr
diff --git a/asm/d/msg/d_msg_string_base/getPageMax__16dMsgStringBase_cFi.s b/asm/d/msg/d_msg_string_base/getPageMax__16dMsgStringBase_cFi.s
deleted file mode 100644
index 2f78a10372..0000000000
--- a/asm/d/msg/d_msg_string_base/getPageMax__16dMsgStringBase_cFi.s
+++ /dev/null
@@ -1,11 +0,0 @@
-lbl_80249A48:
-/* 80249A48 80 63 00 0C */ lwz r3, 0xc(r3)
-/* 80249A4C A8 A3 00 80 */ lha r5, 0x80(r3)
-/* 80249A50 7C 05 23 D6 */ divw r0, r5, r4
-/* 80249A54 54 03 06 3E */ clrlwi r3, r0, 0x18
-/* 80249A58 7C 00 21 D6 */ mullw r0, r0, r4
-/* 80249A5C 7C 00 28 51 */ subf. r0, r0, r5
-/* 80249A60 4D 82 00 20 */ beqlr
-/* 80249A64 38 03 00 01 */ addi r0, r3, 1
-/* 80249A68 54 03 06 3E */ clrlwi r3, r0, 0x18
-/* 80249A6C 4E 80 00 20 */ blr
diff --git a/asm/d/msg/d_msg_string_base/getResource__16dMsgStringBase_cFv.s b/asm/d/msg/d_msg_string_base/getResource__16dMsgStringBase_cFv.s
deleted file mode 100644
index d269bc3688..0000000000
--- a/asm/d/msg/d_msg_string_base/getResource__16dMsgStringBase_cFv.s
+++ /dev/null
@@ -1,28 +0,0 @@
-lbl_80249700:
-/* 80249700 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 80249704 7C 08 02 A6 */ mflr r0
-/* 80249708 90 01 00 14 */ stw r0, 0x14(r1)
-/* 8024970C 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 80249710 7C 7F 1B 78 */ mr r31, r3
-/* 80249714 3C 60 80 43 */ lis r3, g_meter2_info@ha /* 0x80430188@ha */
-/* 80249718 38 63 01 88 */ addi r3, r3, g_meter2_info@l /* 0x80430188@l */
-/* 8024971C 80 03 00 10 */ lwz r0, 0x10(r3)
-/* 80249720 90 1F 00 1C */ stw r0, 0x1c(r31)
-/* 80249724 80 1F 00 1C */ lwz r0, 0x1c(r31)
-/* 80249728 28 00 00 00 */ cmplwi r0, 0
-/* 8024972C 40 82 00 28 */ bne lbl_80249754
-/* 80249730 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
-/* 80249734 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */
-/* 80249738 80 A3 5C F4 */ lwz r5, 0x5cf4(r3)
-/* 8024973C 3C 60 52 4F */ lis r3, 0x524F /* 0x524F4F54@ha */
-/* 80249740 38 63 4F 54 */ addi r3, r3, 0x4F54 /* 0x524F4F54@l */
-/* 80249744 3C 80 80 3A */ lis r4, d_msg_d_msg_string_base__stringBase0@ha /* 0x80399C98@ha */
-/* 80249748 38 84 9C 98 */ addi r4, r4, d_msg_d_msg_string_base__stringBase0@l /* 0x80399C98@l */
-/* 8024974C 48 08 C3 ED */ bl getGlbResource__10JKRArchiveFUlPCcP10JKRArchive
-/* 80249750 90 7F 00 1C */ stw r3, 0x1c(r31)
-lbl_80249754:
-/* 80249754 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 80249758 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 8024975C 7C 08 03 A6 */ mtlr r0
-/* 80249760 38 21 00 10 */ addi r1, r1, 0x10
-/* 80249764 4E 80 00 20 */ blr
diff --git a/asm/d/msg/d_msg_string_base/getStringLocal__16dMsgStringBase_cFUlP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc.s b/asm/d/msg/d_msg_string_base/getStringLocal__16dMsgStringBase_cFUlP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc.s
deleted file mode 100644
index 27530016a7..0000000000
--- a/asm/d/msg/d_msg_string_base/getStringLocal__16dMsgStringBase_cFUlP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc.s
+++ /dev/null
@@ -1,97 +0,0 @@
-lbl_80249768:
-/* 80249768 94 21 FF C0 */ stwu r1, -0x40(r1)
-/* 8024976C 7C 08 02 A6 */ mflr r0
-/* 80249770 90 01 00 44 */ stw r0, 0x44(r1)
-/* 80249774 DB E1 00 38 */ stfd f31, 0x38(r1)
-/* 80249778 39 61 00 38 */ addi r11, r1, 0x38
-/* 8024977C 48 11 8A 51 */ bl _savegpr_25
-/* 80249780 7C 7E 1B 78 */ mr r30, r3
-/* 80249784 7C 9F 23 78 */ mr r31, r4
-/* 80249788 7C B9 2B 78 */ mr r25, r5
-/* 8024978C 7C DA 33 78 */ mr r26, r6
-/* 80249790 7C FB 3B 78 */ mr r27, r7
-/* 80249794 7D 1C 43 78 */ mr r28, r8
-/* 80249798 7D 3D 4B 78 */ mr r29, r9
-/* 8024979C 3C 60 80 43 */ lis r3, g_meter2_info@ha /* 0x80430188@ha */
-/* 802497A0 38 63 01 88 */ addi r3, r3, g_meter2_info@l /* 0x80430188@l */
-/* 802497A4 80 83 00 10 */ lwz r4, 0x10(r3)
-/* 802497A8 28 04 00 00 */ cmplwi r4, 0
-/* 802497AC 41 82 00 64 */ beq lbl_80249810
-/* 802497B0 28 1F 13 88 */ cmplwi r31, 0x1388
-/* 802497B4 40 81 00 34 */ ble lbl_802497E8
-/* 802497B8 80 1E 00 1C */ lwz r0, 0x1c(r30)
-/* 802497BC 80 63 00 14 */ lwz r3, 0x14(r3)
-/* 802497C0 7C 00 18 40 */ cmplw r0, r3
-/* 802497C4 41 82 00 4C */ beq lbl_80249810
-/* 802497C8 90 7E 00 1C */ stw r3, 0x1c(r30)
-/* 802497CC 80 1E 00 1C */ lwz r0, 0x1c(r30)
-/* 802497D0 90 01 00 0C */ stw r0, 0xc(r1)
-/* 802497D4 80 7E 00 18 */ lwz r3, 0x18(r30)
-/* 802497D8 38 81 00 0C */ addi r4, r1, 0xc
-/* 802497DC 38 A0 00 80 */ li r5, 0x80
-/* 802497E0 48 09 31 31 */ bl parse_next__Q37JGadget6binary19TParse_header_blockFPPCvUl
-/* 802497E4 48 00 00 2C */ b lbl_80249810
-lbl_802497E8:
-/* 802497E8 80 1E 00 1C */ lwz r0, 0x1c(r30)
-/* 802497EC 7C 00 20 40 */ cmplw r0, r4
-/* 802497F0 41 82 00 20 */ beq lbl_80249810
-/* 802497F4 90 9E 00 1C */ stw r4, 0x1c(r30)
-/* 802497F8 80 1E 00 1C */ lwz r0, 0x1c(r30)
-/* 802497FC 90 01 00 08 */ stw r0, 8(r1)
-/* 80249800 80 7E 00 18 */ lwz r3, 0x18(r30)
-/* 80249804 38 81 00 08 */ addi r4, r1, 8
-/* 80249808 38 A0 00 80 */ li r5, 0x80
-/* 8024980C 48 09 31 05 */ bl parse_next__Q37JGadget6binary19TParse_header_blockFPPCvUl
-lbl_80249810:
-/* 80249810 80 7E 00 0C */ lwz r3, 0xc(r30)
-/* 80249814 7F 24 CB 78 */ mr r4, r25
-/* 80249818 7F 45 D3 78 */ mr r5, r26
-/* 8024981C 7F 66 DB 78 */ mr r6, r27
-/* 80249820 7F 87 E3 78 */ mr r7, r28
-/* 80249824 7F A8 EB 78 */ mr r8, r29
-/* 80249828 4B FE 61 85 */ bl init__26jmessage_string_tReferenceFP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc
-/* 8024982C 80 79 01 08 */ lwz r3, 0x108(r25)
-/* 80249830 90 61 00 10 */ stw r3, 0x10(r1)
-/* 80249834 80 19 01 04 */ lwz r0, 0x104(r25)
-/* 80249838 90 01 00 14 */ stw r0, 0x14(r1)
-/* 8024983C 80 9E 00 0C */ lwz r4, 0xc(r30)
-/* 80249840 90 04 00 78 */ stw r0, 0x78(r4)
-/* 80249844 90 64 00 7C */ stw r3, 0x7c(r4)
-/* 80249848 80 7E 00 08 */ lwz r3, 8(r30)
-/* 8024984C 7F E4 FB 78 */ mr r4, r31
-/* 80249850 38 A0 00 00 */ li r5, 0
-/* 80249854 38 C0 00 00 */ li r6, 0
-/* 80249858 48 05 E0 9D */ bl setMessageID__Q28JMessage8TControlFUlUlPb
-/* 8024985C 80 7E 00 08 */ lwz r3, 8(r30)
-/* 80249860 48 05 DD D5 */ bl update__Q28JMessage8TControlFv
-/* 80249864 80 7E 00 08 */ lwz r3, 8(r30)
-/* 80249868 48 05 DE 55 */ bl render__Q28JMessage8TControlFv
-/* 8024986C 80 7E 00 0C */ lwz r3, 0xc(r30)
-/* 80249870 38 80 00 00 */ li r4, 0
-/* 80249874 4B FE 61 C5 */ bl getLineLength__26jmessage_string_tReferenceFi
-/* 80249878 FF E0 08 90 */ fmr f31, f1
-/* 8024987C 80 7E 00 08 */ lwz r3, 8(r30)
-/* 80249880 48 05 DD 55 */ bl reset__Q28JMessage8TControlFv
-/* 80249884 80 7E 00 08 */ lwz r3, 8(r30)
-/* 80249888 80 83 00 04 */ lwz r4, 4(r3)
-/* 8024988C 28 04 00 00 */ cmplwi r4, 0
-/* 80249890 41 82 00 0C */ beq lbl_8024989C
-/* 80249894 38 00 00 00 */ li r0, 0
-/* 80249898 90 04 00 08 */ stw r0, 8(r4)
-lbl_8024989C:
-/* 8024989C 80 83 00 08 */ lwz r4, 8(r3)
-/* 802498A0 28 04 00 00 */ cmplwi r4, 0
-/* 802498A4 41 82 00 0C */ beq lbl_802498B0
-/* 802498A8 38 00 00 00 */ li r0, 0
-/* 802498AC 90 04 00 08 */ stw r0, 8(r4)
-lbl_802498B0:
-/* 802498B0 38 00 00 00 */ li r0, 0
-/* 802498B4 90 03 00 10 */ stw r0, 0x10(r3)
-/* 802498B8 FC 20 F8 90 */ fmr f1, f31
-/* 802498BC CB E1 00 38 */ lfd f31, 0x38(r1)
-/* 802498C0 39 61 00 38 */ addi r11, r1, 0x38
-/* 802498C4 48 11 89 55 */ bl _restgpr_25
-/* 802498C8 80 01 00 44 */ lwz r0, 0x44(r1)
-/* 802498CC 7C 08 03 A6 */ mtlr r0
-/* 802498D0 38 21 00 40 */ addi r1, r1, 0x40
-/* 802498D4 4E 80 00 20 */ blr
diff --git a/asm/d/msg/d_msg_string_base/getStringPage__16dMsgStringBase_cFUlUcUcP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc.s b/asm/d/msg/d_msg_string_base/getStringPage__16dMsgStringBase_cFUlUcUcP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc.s
deleted file mode 100644
index b2e0f01313..0000000000
--- a/asm/d/msg/d_msg_string_base/getStringPage__16dMsgStringBase_cFUlUcUcP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc.s
+++ /dev/null
@@ -1,11 +0,0 @@
-lbl_80249BD0:
-/* 80249BD0 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 80249BD4 7C 08 02 A6 */ mflr r0
-/* 80249BD8 90 01 00 14 */ stw r0, 0x14(r1)
-/* 80249BDC 88 01 00 1B */ lbz r0, 0x1b(r1)
-/* 80249BE0 90 01 00 08 */ stw r0, 8(r1)
-/* 80249BE4 4B FF FC F5 */ bl getStringPageLocal__16dMsgStringBase_cFUlUcUcP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc
-/* 80249BE8 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 80249BEC 7C 08 03 A6 */ mtlr r0
-/* 80249BF0 38 21 00 10 */ addi r1, r1, 0x10
-/* 80249BF4 4E 80 00 20 */ blr
diff --git a/asm/d/msg/d_msg_string_base/getString__16dMsgStringBase_cFUlP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc.s b/asm/d/msg/d_msg_string_base/getString__16dMsgStringBase_cFUlP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc.s
deleted file mode 100644
index 9f52106bed..0000000000
--- a/asm/d/msg/d_msg_string_base/getString__16dMsgStringBase_cFUlP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc.s
+++ /dev/null
@@ -1,9 +0,0 @@
-lbl_80249BB0:
-/* 80249BB0 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 80249BB4 7C 08 02 A6 */ mflr r0
-/* 80249BB8 90 01 00 14 */ stw r0, 0x14(r1)
-/* 80249BBC 4B FF FB AD */ bl getStringLocal__16dMsgStringBase_cFUlP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc
-/* 80249BC0 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 80249BC4 7C 08 03 A6 */ mtlr r0
-/* 80249BC8 38 21 00 10 */ addi r1, r1, 0x10
-/* 80249BCC 4E 80 00 20 */ blr
diff --git a/include/JSystem/J2DGraph/J2DTextBox.h b/include/JSystem/J2DGraph/J2DTextBox.h
index 057809adb9..979c9039c1 100644
--- a/include/JSystem/J2DGraph/J2DTextBox.h
+++ b/include/JSystem/J2DGraph/J2DTextBox.h
@@ -123,6 +123,9 @@ public:
return (J2DTextBoxHBinding)((mFlags >> 2) & 3);
}
+ JUtility::TColor getCharColor() { return mCharColor; }
+ JUtility::TColor getGradColor() { return mGradientColor; }
+
// private:
/* 0x0100 */ JUTFont* mFont;
/* 0x0104 */ JUtility::TColor mCharColor;
diff --git a/include/JSystem/JGadget/linklist.h b/include/JSystem/JGadget/linklist.h
index 932f0f2705..e7552610d1 100644
--- a/include/JSystem/JGadget/linklist.h
+++ b/include/JSystem/JGadget/linklist.h
@@ -2,6 +2,7 @@
#define LINKLIST_H
#include "dolphin/types.h"
+#include "JSystem/JUtility/JUTAssert.h"
namespace JGadget {
struct TLinkListNode {
@@ -24,6 +25,7 @@ struct TNodeLinkList {
node = node->getNext();
return *this;
}
+ TLinkListNode* operator->() { return node; }
TLinkListNode* node;
};
@@ -55,8 +57,13 @@ struct TNodeLinkList {
}
iterator begin() {
- iterator iter(ocObject_.mNext);
- return iter;
+ return iterator(ocObject_.getNext());
+ }
+
+ u32 size() { return count; }
+ bool empty() { return size() == 0; }
+ iterator pop_front() {
+ return erase(begin());
}
/* 802DCA1C */ ~TNodeLinkList();
@@ -78,6 +85,12 @@ struct TLinkList : public TNodeLinkList {
struct iterator : TNodeLinkList::iterator {
iterator(TNodeLinkList::iterator iter) : TNodeLinkList::iterator(iter) {}
+ T& operator*() { return *operator->(); }
+ T* operator->() {
+ TLinkListNode* node = TNodeLinkList::iterator::operator->();
+ JUT_ASSERT(541, node != 0);
+ return Element_toValue(node);
+ }
};
struct const_iterator : TNodeLinkList::const_iterator {
@@ -86,7 +99,7 @@ struct TLinkList : public TNodeLinkList {
const T* operator->() const {
return Element_toValue(TNodeLinkList::const_iterator::operator->());
}
- const T& operator*() const { return *operator->();}
+ const T& operator*() const { return *operator->(); }
const_iterator& operator++() {
TNodeLinkList::const_iterator::operator++();
return *this;
@@ -117,9 +130,7 @@ struct TLinkList : public TNodeLinkList {
}
TLinkList::iterator begin() {
- TNodeLinkList::iterator node_iter = TNodeLinkList::begin();
- TLinkList::iterator iter(node_iter);
- return iter;
+ return iterator(TNodeLinkList::begin());
}
TLinkList::const_iterator begin() const {
@@ -130,6 +141,11 @@ struct TLinkList : public TNodeLinkList {
TLinkList::iterator iter(TLinkList::end());
this->Insert(iter, element);
}
+
+ T& front() {
+ JUT_ASSERT(642, !empty());
+ return *begin();
+ }
};
template<typename T, int I>
@@ -147,6 +163,13 @@ struct TLinkList_factory : public TLinkList<T, I> {
virtual ~TLinkList_factory() {}
virtual T* Do_create() = 0;
virtual void Do_destroy(T*) = 0;
+ void Clear_destroy() {
+ while (!empty()) {
+ T* item = &front();
+ pop_front();
+ Do_destroy(item);
+ }
+ }
};
template <typename T, int I>
diff --git a/include/JSystem/JMessage/control.h b/include/JSystem/JMessage/control.h
index b94516abe5..36fbebfc47 100644
--- a/include/JSystem/JMessage/control.h
+++ b/include/JSystem/JMessage/control.h
@@ -39,6 +39,19 @@ struct TControl {
const char* getMessageText_begin() const { return pMessageText_begin_; }
void* getMessageEntry() const { return pEntry_; }
+ void setSequenceProcessor(TSequenceProcessor* processor) { pSequenceProcessor_ = processor; }
+ void setRenderingProcessor(TRenderingProcessor* processor) { pRenderingProcessor_ = processor; }
+ void resetResourceCache() {
+ if (pSequenceProcessor_ != NULL) {
+ pSequenceProcessor_->resetResourceCache();
+ }
+
+ if (pRenderingProcessor_ != NULL) {
+ pRenderingProcessor_->resetResourceCache();
+ }
+
+ pResourceCache_ = NULL;
+ }
/* 0x04 */ TSequenceProcessor* pSequenceProcessor_;
/* 0x08 */ TRenderingProcessor* pRenderingProcessor_;
diff --git a/include/JSystem/JMessage/processor.h b/include/JSystem/JMessage/processor.h
index a01572c19c..6cd21e08bc 100644
--- a/include/JSystem/JMessage/processor.h
+++ b/include/JSystem/JMessage/processor.h
@@ -25,6 +25,7 @@ struct TReference {
}
TResourceContainer* getResourceContainer() const { return pcResource_; }
+ void setResourceContainer(TResourceContainer* container) { pcResource_ = container; }
/* 0x4 */ TResourceContainer* pcResource_;
};
@@ -208,6 +209,9 @@ struct TProcessor {
return pReference_->getResourceContainer();
}
+ void setResourceCache(TResource* cache) { pResourceCache_ = cache; }
+ void resetResourceCache() { setResourceCache(NULL); }
+
/* 0x04 */ const TReference* pReference_;
/* 0x08 */ const TResource* pResourceCache_;
/* 0x0C */ const char* pszCurrent_;
diff --git a/include/JSystem/JMessage/resource.h b/include/JSystem/JMessage/resource.h
index 61c2bb2fad..66c1e0d002 100644
--- a/include/JSystem/JMessage/resource.h
+++ b/include/JSystem/JMessage/resource.h
@@ -56,6 +56,10 @@ struct TResource {
struct TResource_color {
TResource_color() : field_0x0(NULL), field_0x4(NULL) {}
+ void reset() {
+ field_0x0.setRaw(NULL);
+ field_0x4.setRaw(NULL);
+ }
/* 0x0 */ data::TParse_THeader field_0x0;
/* 0x4 */ data::TParse_TBlock_color field_0x4;
@@ -83,6 +87,16 @@ struct TResourceContainer {
bool isEncodingSettable(u8 e) const { return mEncodingType == e || mEncodingType == 0; }
const TCResource* getResourceContainer() const { return &resContainer_; }
+ void destroyResource() {
+ resContainer_.Clear_destroy();
+ }
+ void destroyResource_color() {
+ resColor_.reset();
+ }
+ void destroyResource_all() {
+ destroyResource();
+ destroyResource_color();
+ }
static JMessage::locale::parseCharacter_function sapfnParseCharacter_[5];
diff --git a/include/d/msg/d_msg_class.h b/include/d/msg/d_msg_class.h
index 75a7885ed8..bad00f58c9 100644
--- a/include/d/msg/d_msg_class.h
+++ b/include/d/msg/d_msg_class.h
@@ -398,9 +398,16 @@ struct jmessage_string_tReference : public JMessage::TReference {
u8 getLineMax() { return mLineMax; }
u8 getNowPage() { return mNowPage; }
JUTFont* getFont() { return mpFont; }
+ s16 getLineCount() { return mLineCount; }
void setLineCount(s16 lineCount) { mLineCount = lineCount; }
void addLineCount() { mLineCount++; }
u8 isFlag(u8 flag) { return mFlags & flag; }
+ void setColor(u32 ccColor, u32 gcColor) {
+ mCCColor = ccColor;
+ mGCColor = gcColor;
+ }
+ void setNowPage(u8 nowPage) { mNowPage = nowPage; }
+ void setLineMax(u8 lineMax) { mLineMax = lineMax; }
/* 8022F94C */ virtual ~jmessage_string_tReference();
@@ -470,6 +477,8 @@ struct jmessage_string_tRenderingProcessor : public JMessage::TRenderingProcesso
/* 80230D48 */ virtual void do_character(int);
/* 80231110 */ virtual bool do_tag(u32, void const*, u32);
+ char* getString() { return field_0x54; }
+
/* 0x038 */ jmessage_string_tReference* mpReference;
/* 0x03C */ f32 field_0x3c;
/* 0x040 */ f32 field_0x40;
diff --git a/include/d/msg/d_msg_string_base.h b/include/d/msg/d_msg_string_base.h
index 1a6c2ad9a2..da2787f493 100644
--- a/include/d/msg/d_msg_string_base.h
+++ b/include/d/msg/d_msg_string_base.h
@@ -16,16 +16,16 @@ public:
/* 802493B4 */ dMsgStringBase_c();
/* 80249528 */ ~dMsgStringBase_c();
/* 80249700 */ void getResource();
- /* 80249768 */ void getStringLocal(u32, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, u8);
- /* 802498D8 */ void getStringPageLocal(u32, u8, u8, J2DTextBox*, J2DTextBox*, JUTFont*,
+ /* 80249768 */ f32 getStringLocal(u32, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, u8);
+ /* 802498D8 */ f32 getStringPageLocal(u32, u8, u8, J2DTextBox*, J2DTextBox*, JUTFont*,
COutFont_c*, u8);
- /* 80249A48 */ void getPageMax(int);
- /* 80249A70 */ void getMessageLocal(u32, char*);
+ /* 80249A48 */ u8 getPageMax(int);
+ /* 80249A70 */ f32 getMessageLocal(u32, char*);
/* 80249BB0 */ virtual f32 getString(u32, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, u8);
- /* 80249BD0 */ virtual void getStringPage(u32, u8, u8, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*,
+ /* 80249BD0 */ virtual f32 getStringPage(u32, u8, u8, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*,
u8);
- /* 80249BF8 */ virtual void getMessage(u32, char*);
+ /* 80249BF8 */ virtual f32 getMessage(u32, char*);
/* 80249C18 */ virtual void resetStringLocal(J2DTextBox*);
/* 80249C1C */ virtual void drawOutFontLocal(J2DTextBox*, f32);
/* 80249BAC */ virtual void drawFontLocal(J2DTextBox*, u8, f32, f32, f32, f32, u32, u8);
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 */