diff --git a/asm/GuiSys/CAuiEnergyBarT01.s b/asm/GuiSys/CAuiEnergyBarT01.s index c10d7dbc..da43ffa4 100644 --- a/asm/GuiSys/CAuiEnergyBarT01.s +++ b/asm/GuiSys/CAuiEnergyBarT01.s @@ -15,7 +15,7 @@ lbl_803ECA50: .4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput .4byte Touch__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv - .4byte sub_80020464 + .4byte GetIsActive__10CGuiWidgetCFv .4byte GetWidgetTypeID__16CAuiEnergyBarT01CFv .4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget .4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv @@ -782,7 +782,7 @@ Create__16CAuiEnergyBarT01FP9CGuiFrameR12CInputStreamb: /* 802CBC14 002C8B74 38 61 00 08 */ addi r3, r1, 8 /* 802CBC18 002C8B78 7F A4 EB 78 */ mr r4, r29 /* 802CBC1C 002C8B7C 7F C5 F3 78 */ mr r5, r30 -/* 802CBC20 002C8B80 4B FF F1 31 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb +/* 802CBC20 002C8B80 4B FF F1 31 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream /* 802CBC24 002C8B84 83 81 00 08 */ lwz r28, 8(r1) /* 802CBC28 002C8B88 7F C3 F3 78 */ mr r3, r30 /* 802CBC2C 002C8B8C 89 81 00 0C */ lbz r12, 0xc(r1) diff --git a/asm/GuiSys/CAuiImagePane.s b/asm/GuiSys/CAuiImagePane.s index 4ca750f3..ed18ea2a 100644 --- a/asm/GuiSys/CAuiImagePane.s +++ b/asm/GuiSys/CAuiImagePane.s @@ -15,7 +15,7 @@ lbl_803ECA90: .4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput .4byte Touch__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv - .4byte sub_80020464 + .4byte GetIsActive__10CGuiWidgetCFv .4byte GetWidgetTypeID__13CAuiImagePaneCFv .4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget .4byte GetIsFinishedLoadingWidgetSpecific__13CAuiImagePaneCFv @@ -1511,7 +1511,7 @@ Create__13CAuiImagePaneFP9CGuiFrameR12CInputStreamb: /* 802CD214 002CA174 38 61 00 14 */ addi r3, r1, 0x14 /* 802CD218 002CA178 7F A4 EB 78 */ mr r4, r29 /* 802CD21C 002CA17C 7F C5 F3 78 */ mr r5, r30 -/* 802CD220 002CA180 4B FF DB 31 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb +/* 802CD220 002CA180 4B FF DB 31 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream /* 802CD224 002CA184 83 81 00 14 */ lwz r28, 0x14(r1) /* 802CD228 002CA188 7F C3 F3 78 */ mr r3, r30 /* 802CD22C 002CA18C 89 81 00 18 */ lbz r12, 0x18(r1) @@ -1724,4 +1724,3 @@ lbl_803D69E0: # ROM: 0x3D39E0 .asciz "??(??)" .balign 4 - diff --git a/asm/GuiSys/CAuiMeter.s b/asm/GuiSys/CAuiMeter.s index bf87e611..d17feb27 100644 --- a/asm/GuiSys/CAuiMeter.s +++ b/asm/GuiSys/CAuiMeter.s @@ -15,7 +15,7 @@ lbl_803EC6F8: .4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput .4byte Touch__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv - .4byte sub_80020464 + .4byte GetIsActive__10CGuiWidgetCFv .4byte GetWidgetTypeID__9CAuiMeterCFv .4byte AddWorkerWidget__9CAuiMeterFP10CGuiWidget .4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv @@ -515,4 +515,3 @@ lbl_803D6878: # ROM: 0x3D3878 .asciz "??(??)" .balign 4 - diff --git a/asm/GuiSys/CGuiGroup.s b/asm/GuiSys/CGuiGroup.s index 6c6febc5..5e409d33 100644 --- a/asm/GuiSys/CGuiGroup.s +++ b/asm/GuiSys/CGuiGroup.s @@ -37,7 +37,7 @@ lbl_803EC738: .4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput .4byte Touch__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv - .4byte sub_80020464 + .4byte GetIsActive__10CGuiWidgetCFv .4byte GetWidgetTypeID__10CGuiCameraCFv .4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget .4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv @@ -58,7 +58,7 @@ lbl_803EC778: .4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput .4byte Touch__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv - .4byte sub_80020464 + .4byte GetIsActive__10CGuiWidgetCFv .4byte GetWidgetTypeID__18CGuiCompoundWidgetCFv .4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget .4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv @@ -86,7 +86,7 @@ lbl_803EC7C8: .4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput .4byte Touch__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv - .4byte sub_80020464 + .4byte GetIsActive__10CGuiWidgetCFv .4byte GetWidgetTypeID__9CGuiGroupCFv .4byte AddWorkerWidget__9CGuiGroupFP10CGuiWidget .4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv @@ -135,7 +135,7 @@ Create__9CAuiMeterFP9CGuiFrameR12CInputStreamb: /* 802C1260 002BE1C0 38 61 00 08 */ addi r3, r1, 8 /* 802C1264 002BE1C4 7F C4 F3 78 */ mr r4, r30 /* 802C1268 002BE1C8 7F E5 FB 78 */ mr r5, r31 -/* 802C126C 002BE1CC 48 00 9A E5 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb +/* 802C126C 002BE1CC 48 00 9A E5 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream /* 802C1270 002BE1D0 83 A1 00 08 */ lwz r29, 8(r1) /* 802C1274 002BE1D4 7F E3 FB 78 */ mr r3, r31 /* 802C1278 002BE1D8 89 81 00 0C */ lbz r12, 0xc(r1) @@ -549,7 +549,7 @@ Create__10CGuiCameraFP9CGuiFrameR12CInputStreamb: /* 802C1828 002BE788 7F C4 F3 78 */ mr r4, r30 /* 802C182C 002BE78C 38 61 00 08 */ addi r3, r1, 8 /* 802C1830 002BE790 7F E5 FB 78 */ mr r5, r31 -/* 802C1834 002BE794 48 00 95 1D */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb +/* 802C1834 002BE794 48 00 95 1D */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream /* 802C1838 002BE798 83 A1 00 08 */ lwz r29, 8(r1) /* 802C183C 002BE79C 7F E3 FB 78 */ mr r3, r31 /* 802C1840 002BE7A0 89 81 00 0C */ lbz r12, 0xc(r1) @@ -943,7 +943,7 @@ lbl_802C1D90: /* 802C1D90 002BECF0 7C 83 23 78 */ mr r3, r4 /* 802C1D94 002BECF4 7C A4 2B 78 */ mr r4, r5 /* 802C1D98 002BECF8 7C C5 33 78 */ mr r5, r6 -/* 802C1D9C 002BECFC 48 00 1F 29 */ bl Create__9CGuiLightFP9CGuiFrameR12CInputStreamb +/* 802C1D9C 002BECFC 48 00 1F 29 */ bl Create__9CGuiLightFP9CGuiFrameR12CInputStreamP12IObjectStore /* 802C1DA0 002BED00 48 00 00 44 */ b lbl_802C1DE4 lbl_802C1DA4: /* 802C1DA4 002BED04 7C 83 23 78 */ mr r3, r4 @@ -2664,7 +2664,7 @@ Create__9CGuiGroupFP9CGuiFrameR12CInputStreamb: /* 802C34D8 002C0438 38 61 00 08 */ addi r3, r1, 8 /* 802C34DC 002C043C 7F C4 F3 78 */ mr r4, r30 /* 802C34E0 002C0440 7F E5 FB 78 */ mr r5, r31 -/* 802C34E4 002C0444 48 00 78 6D */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb +/* 802C34E4 002C0444 48 00 78 6D */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream /* 802C34E8 002C0448 83 A1 00 08 */ lwz r29, 8(r1) /* 802C34EC 002C044C 7F E3 FB 78 */ mr r3, r31 /* 802C34F0 002C0450 89 81 00 0C */ lbz r12, 0xc(r1) diff --git a/asm/GuiSys/CGuiHeadWidget.s b/asm/GuiSys/CGuiHeadWidget.s index b4c0c403..20221655 100644 --- a/asm/GuiSys/CGuiHeadWidget.s +++ b/asm/GuiSys/CGuiHeadWidget.s @@ -15,7 +15,7 @@ lbl_803EC808: .4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput .4byte Touch__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv - .4byte sub_80020464 + .4byte GetIsActive__10CGuiWidgetCFv .4byte GetWidgetTypeID__14CGuiHeadWidgetCFv .4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget .4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv @@ -54,7 +54,7 @@ Create__14CGuiHeadWidgetFP9CGuiFrameR12CInputStreamb: /* 802C360C 002C056C 38 61 00 08 */ addi r3, r1, 8 /* 802C3610 002C0570 7F C4 F3 78 */ mr r4, r30 /* 802C3614 002C0574 7F E5 FB 78 */ mr r5, r31 -/* 802C3618 002C0578 48 00 77 39 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb +/* 802C3618 002C0578 48 00 77 39 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream /* 802C361C 002C057C 83 61 00 08 */ lwz r27, 8(r1) /* 802C3620 002C0580 3C 60 80 3D */ lis r3, lbl_803D68A0@ha /* 802C3624 002C0584 8B 81 00 0C */ lbz r28, 0xc(r1) @@ -144,4 +144,3 @@ lbl_803D68A0: # ROM: 0x3D38A0 .asciz "??(??)" .balign 4 - diff --git a/asm/GuiSys/CGuiLight.s b/asm/GuiSys/CGuiLight.s index b5310f44..73e4f8ba 100644 --- a/asm/GuiSys/CGuiLight.s +++ b/asm/GuiSys/CGuiLight.s @@ -3,8 +3,8 @@ .section .data .balign 8 -.global lbl_803EC848 -lbl_803EC848: +.global __vt__9CGuiLight +__vt__9CGuiLight: # ROM: 0x3E9848 .4byte 0 .4byte 0 @@ -15,7 +15,7 @@ lbl_803EC848: .4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput .4byte Touch__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv - .4byte sub_80020464 + .4byte GetIsActive__10CGuiWidgetCFv .4byte GetWidgetTypeID__9CGuiLightCFv .4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget .4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv @@ -338,9 +338,9 @@ __dt__9CGuiLightFv: /* 802C3BCC 002C0B2C 93 C1 00 08 */ stw r30, 8(r1) /* 802C3BD0 002C0B30 7C 7E 1B 79 */ or. r30, r3, r3 /* 802C3BD4 002C0B34 41 82 00 38 */ beq lbl_802C3C0C -/* 802C3BD8 002C0B38 3C 60 80 3F */ lis r3, lbl_803EC848@ha +/* 802C3BD8 002C0B38 3C 60 80 3F */ lis r3, __vt__9CGuiLight@ha /* 802C3BDC 002C0B3C 7F C4 F3 78 */ mr r4, r30 -/* 802C3BE0 002C0B40 38 03 C8 48 */ addi r0, r3, lbl_803EC848@l +/* 802C3BE0 002C0B40 38 03 C8 48 */ addi r0, r3, __vt__9CGuiLight@l /* 802C3BE4 002C0B44 90 1E 00 00 */ stw r0, 0(r30) /* 802C3BE8 002C0B48 80 7E 00 B0 */ lwz r3, 0xb0(r30) /* 802C3BEC 002C0B4C 4B FF E9 2D */ bl RemoveLight__9CGuiFrameFP9CGuiLight @@ -370,8 +370,8 @@ __ct__9CGuiLightFRCQ210CGuiWidget15CGuiWidgetParmsRC6CLight: /* 802C3C3C 002C0B9C 93 C1 00 08 */ stw r30, 8(r1) /* 802C3C40 002C0BA0 7C 7E 1B 78 */ mr r30, r3 /* 802C3C44 002C0BA4 48 00 6F E1 */ bl __ct__10CGuiWidgetFRCQ210CGuiWidget15CGuiWidgetParms -/* 802C3C48 002C0BA8 3C 60 80 3F */ lis r3, lbl_803EC848@ha -/* 802C3C4C 002C0BAC 38 03 C8 48 */ addi r0, r3, lbl_803EC848@l +/* 802C3C48 002C0BA8 3C 60 80 3F */ lis r3, __vt__9CGuiLight@ha +/* 802C3C4C 002C0BAC 38 03 C8 48 */ addi r0, r3, __vt__9CGuiLight@l /* 802C3C50 002C0BB0 90 1E 00 00 */ stw r0, 0(r30) /* 802C3C54 002C0BB4 80 1F 00 1C */ lwz r0, 0x1c(r31) /* 802C3C58 002C0BB8 90 1E 00 B8 */ stw r0, 0xb8(r30) @@ -402,8 +402,8 @@ __ct__9CGuiLightFRCQ210CGuiWidget15CGuiWidgetParmsRC6CLight: /* 802C3CBC 002C0C1C 38 21 00 10 */ addi r1, r1, 0x10 /* 802C3CC0 002C0C20 4E 80 00 20 */ blr -.global Create__9CGuiLightFP9CGuiFrameR12CInputStreamb -Create__9CGuiLightFP9CGuiFrameR12CInputStreamb: +.global Create__9CGuiLightFP9CGuiFrameR12CInputStreamP12IObjectStore +Create__9CGuiLightFP9CGuiFrameR12CInputStreamP12IObjectStore: /* 802C3CC4 002C0C24 94 21 FD 90 */ stwu r1, -0x270(r1) /* 802C3CC8 002C0C28 7C 08 02 A6 */ mflr r0 /* 802C3CCC 002C0C2C 90 01 02 74 */ stw r0, 0x274(r1) @@ -415,7 +415,7 @@ Create__9CGuiLightFP9CGuiFrameR12CInputStreamb: /* 802C3CE4 002C0C44 7F C4 F3 78 */ mr r4, r30 /* 802C3CE8 002C0C48 38 61 00 0C */ addi r3, r1, 0xc /* 802C3CEC 002C0C4C 7F E5 FB 78 */ mr r5, r31 -/* 802C3CF0 002C0C50 48 00 70 61 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb +/* 802C3CF0 002C0C50 48 00 70 61 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream /* 802C3CF4 002C0C54 80 81 00 1C */ lwz r4, 0x1c(r1) /* 802C3CF8 002C0C58 7F E3 FB 78 */ mr r3, r31 /* 802C3CFC 002C0C5C 83 81 00 0C */ lwz r28, 0xc(r1) diff --git a/asm/GuiSys/CGuiModel.s b/asm/GuiSys/CGuiModel.s index d767d4cb..e5eaf594 100644 --- a/asm/GuiSys/CGuiModel.s +++ b/asm/GuiSys/CGuiModel.s @@ -15,7 +15,7 @@ lbl_803EC888: .4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput .4byte Touch__9CGuiModelCFv .4byte GetIsVisible__10CGuiWidgetCFv - .4byte sub_80020464 + .4byte GetIsActive__10CGuiWidgetCFv .4byte GetWidgetTypeID__9CGuiModelCFv .4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget .4byte GetIsFinishedLoadingWidgetSpecific__9CGuiModelCFv @@ -524,7 +524,7 @@ Create__9CGuiModelFP9CGuiFrameR12CInputStreamb: /* 802C464C 002C15AC 38 61 00 08 */ addi r3, r1, 8 /* 802C4650 002C15B0 7F A4 EB 78 */ mr r4, r29 /* 802C4654 002C15B4 7F C5 F3 78 */ mr r5, r30 -/* 802C4658 002C15B8 48 00 66 F9 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb +/* 802C4658 002C15B8 48 00 66 F9 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream /* 802C465C 002C15BC 83 81 00 08 */ lwz r28, 8(r1) /* 802C4660 002C15C0 7F C3 F3 78 */ mr r3, r30 /* 802C4664 002C15C4 89 81 00 0C */ lbz r12, 0xc(r1) diff --git a/asm/GuiSys/CGuiPane.s b/asm/GuiSys/CGuiPane.s index 61a86693..edf04397 100644 --- a/asm/GuiSys/CGuiPane.s +++ b/asm/GuiSys/CGuiPane.s @@ -15,7 +15,7 @@ lbl_803EC8E0: .4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput .4byte Touch__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv - .4byte sub_80020464 + .4byte GetIsActive__10CGuiWidgetCFv .4byte GetWidgetTypeID__8CGuiPaneCFv .4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget .4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv @@ -424,7 +424,7 @@ Create__8CGuiPaneFP9CGuiFrameR12CInputStreamb: /* 802C5A74 002C29D4 7F C4 F3 78 */ mr r4, r30 /* 802C5A78 002C29D8 38 61 00 14 */ addi r3, r1, 0x14 /* 802C5A7C 002C29DC 7F E5 FB 78 */ mr r5, r31 -/* 802C5A80 002C29E0 48 00 52 D1 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb +/* 802C5A80 002C29E0 48 00 52 D1 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream /* 802C5A84 002C29E4 83 A1 00 14 */ lwz r29, 0x14(r1) /* 802C5A88 002C29E8 7F E3 FB 78 */ mr r3, r31 /* 802C5A8C 002C29EC 89 81 00 18 */ lbz r12, 0x18(r1) @@ -527,4 +527,3 @@ lbl_803D68B8: # ROM: 0x3D38B8 .asciz "??(??)" .balign 4 - diff --git a/asm/GuiSys/CGuiSliderGroup.s b/asm/GuiSys/CGuiSliderGroup.s index 719fed2a..4115e15e 100644 --- a/asm/GuiSys/CGuiSliderGroup.s +++ b/asm/GuiSys/CGuiSliderGroup.s @@ -15,7 +15,7 @@ lbl_803EC930: .4byte ProcessUserInput__15CGuiSliderGroupFRC11CFinalInput .4byte Touch__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv - .4byte sub_80020464 + .4byte GetIsActive__10CGuiWidgetCFv .4byte GetWidgetTypeID__15CGuiSliderGroupCFv .4byte AddWorkerWidget__15CGuiSliderGroupFP10CGuiWidget .4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv @@ -591,7 +591,7 @@ Create__15CGuiSliderGroupFP9CGuiFrameR12CInputStreamb: /* 802C62EC 002C324C 7F C4 F3 78 */ mr r4, r30 /* 802C62F0 002C3250 38 61 00 08 */ addi r3, r1, 8 /* 802C62F4 002C3254 93 A1 00 44 */ stw r29, 0x44(r1) -/* 802C62F8 002C3258 48 00 4A 59 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb +/* 802C62F8 002C3258 48 00 4A 59 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream /* 802C62FC 002C325C 83 A1 00 08 */ lwz r29, 8(r1) /* 802C6300 002C3260 7F E3 FB 78 */ mr r3, r31 /* 802C6304 002C3264 89 81 00 0C */ lbz r12, 0xc(r1) diff --git a/asm/GuiSys/CGuiTableGroup.s b/asm/GuiSys/CGuiTableGroup.s index c674f898..0bf9835b 100644 --- a/asm/GuiSys/CGuiTableGroup.s +++ b/asm/GuiSys/CGuiTableGroup.s @@ -15,7 +15,7 @@ lbl_803EC970: .4byte ProcessUserInput__14CGuiTableGroupCFRC11CFinalInput .4byte Touch__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv - .4byte sub_80020464 + .4byte GetIsActive__10CGuiWidgetCFv .4byte GetWidgetTypeID__14CGuiTableGroupCFv .4byte AddWorkerWidget__14CGuiTableGroupFP10CGuiWidget .4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv @@ -1042,7 +1042,7 @@ Create__14CGuiTableGroupFP9CGuiFrameR12CInputStreamb: /* 802C72F8 002C4258 38 61 00 08 */ addi r3, r1, 8 /* 802C72FC 002C425C 7F C4 F3 78 */ mr r4, r30 /* 802C7300 002C4260 7F E5 FB 78 */ mr r5, r31 -/* 802C7304 002C4264 48 00 3A 4D */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb +/* 802C7304 002C4264 48 00 3A 4D */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream /* 802C7308 002C4268 83 A1 00 08 */ lwz r29, 8(r1) /* 802C730C 002C426C 7F E3 FB 78 */ mr r3, r31 /* 802C7310 002C4270 89 81 00 0C */ lbz r12, 0xc(r1) diff --git a/asm/GuiSys/CGuiTextPane.s b/asm/GuiSys/CGuiTextPane.s index 41ed476e..28d195d1 100644 --- a/asm/GuiSys/CGuiTextPane.s +++ b/asm/GuiSys/CGuiTextPane.s @@ -15,7 +15,7 @@ lbl_803EC9B8: .4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput .4byte Touch__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv - .4byte sub_80020464 + .4byte GetIsActive__10CGuiWidgetCFv .4byte GetWidgetTypeID__12CGuiTextPaneCFv .4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget .4byte GetIsFinishedLoadingWidgetSpecific__12CGuiTextPaneCFv @@ -417,7 +417,7 @@ Create__12CGuiTextPaneFP9CGuiFrameR12CInputStreamb: /* 802C7B10 002C4A70 38 61 00 44 */ addi r3, r1, 0x44 /* 802C7B14 002C4A74 7F A4 EB 78 */ mr r4, r29 /* 802C7B18 002C4A78 7F C5 F3 78 */ mr r5, r30 -/* 802C7B1C 002C4A7C 48 00 32 35 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb +/* 802C7B1C 002C4A7C 48 00 32 35 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream /* 802C7B20 002C4A80 83 61 00 44 */ lwz r27, 0x44(r1) /* 802C7B24 002C4A84 7F C3 F3 78 */ mr r3, r30 /* 802C7B28 002C4A88 89 81 00 48 */ lbz r12, 0x48(r1) @@ -570,4 +570,3 @@ lbl_803D68D8: # ROM: 0x3D38D8 .asciz "??(??)" .balign 4 - diff --git a/asm/GuiSys/CGuiWidget.s b/asm/GuiSys/CGuiWidget.s index 86f4cb9d..28957bed 100644 --- a/asm/GuiSys/CGuiWidget.s +++ b/asm/GuiSys/CGuiWidget.s @@ -15,7 +15,7 @@ lbl_803ECA10: .4byte ProcessUserInput__10CGuiWidgetFRC11CFinalInput .4byte Touch__10CGuiWidgetCFv .4byte GetIsVisible__10CGuiWidgetCFv - .4byte sub_80020464 + .4byte GetIsActive__10CGuiWidgetCFv .4byte GetWidgetTypeID__10CGuiWidgetCFv .4byte AddWorkerWidget__10CGuiWidgetFP10CGuiWidget .4byte GetIsFinishedLoadingWidgetSpecific__10CGuiWidgetCFv @@ -584,8 +584,8 @@ __ct__10CGuiWidgetFRCQ210CGuiWidget15CGuiWidgetParms: /* 802CAD48 002C7CA8 38 21 00 10 */ addi r1, r1, 0x10 /* 802CAD4C 002C7CAC 4E 80 00 20 */ blr -.global ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb -ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb: +.global ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream +ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream: /* 802CAD50 002C7CB0 94 21 FF 90 */ stwu r1, -0x70(r1) /* 802CAD54 002C7CB4 7C 08 02 A6 */ mflr r0 /* 802CAD58 002C7CB8 90 01 00 74 */ stw r0, 0x74(r1) @@ -664,7 +664,7 @@ Create__10CGuiWidgetFP9CGuiFrameR12CInputStreamb: /* 802CAE70 002C7DD0 38 61 00 08 */ addi r3, r1, 8 /* 802CAE74 002C7DD4 7F C4 F3 78 */ mr r4, r30 /* 802CAE78 002C7DD8 7F E5 FB 78 */ mr r5, r31 -/* 802CAE7C 002C7DDC 4B FF FE D5 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStreamb +/* 802CAE7C 002C7DDC 4B FF FE D5 */ bl ReadWidgetHeader__10CGuiWidgetFP9CGuiFrameR12CInputStream /* 802CAE80 002C7DE0 83 61 00 08 */ lwz r27, 8(r1) /* 802CAE84 002C7DE4 3C 60 80 3D */ lis r3, lbl_803D68F8@ha /* 802CAE88 002C7DE8 8B 81 00 0C */ lbz r28, 0xc(r1) diff --git a/asm/MetroidPrime/CFrontEndUI.s b/asm/MetroidPrime/CFrontEndUI.s index a0f7b435..a753c1c8 100644 --- a/asm/MetroidPrime/CFrontEndUI.s +++ b/asm/MetroidPrime/CFrontEndUI.s @@ -5767,8 +5767,8 @@ lbl_8002044C: /* 8002045C 0001D3BC 38 21 00 20 */ addi r1, r1, 0x20 /* 80020460 0001D3C0 4E 80 00 20 */ blr -.global sub_80020464 -sub_80020464: +.global GetIsActive__10CGuiWidgetCFv +GetIsActive__10CGuiWidgetCFv: /* 80020464 0001D3C4 88 03 00 B6 */ lbz r0, 0xb6(r3) /* 80020468 0001D3C8 54 03 DF FE */ rlwinm r3, r0, 0x1b, 0x1f, 0x1f /* 8002046C 0001D3CC 4E 80 00 20 */ blr diff --git a/configure.py b/configure.py index d7ab8048..9fadef27 100755 --- a/configure.py +++ b/configure.py @@ -424,7 +424,7 @@ LIBS = [ "GuiSys/CAuiMeter", "GuiSys/CGuiGroup", "GuiSys/CGuiHeadWidget", - "GuiSys/CGuiLight", + ["GuiSys/CGuiLight", True], "GuiSys/CGuiModel", ["GuiSys/CGuiObject", False], "GuiSys/CGuiPane", diff --git a/include/GuiSys/CGuiFrame.hpp b/include/GuiSys/CGuiFrame.hpp index ce289885..8336d36c 100644 --- a/include/GuiSys/CGuiFrame.hpp +++ b/include/GuiSys/CGuiFrame.hpp @@ -5,13 +5,15 @@ class CGuiWidget; class CGuiCamera; - +class CGuiLight; class CGuiFrame { public: CGuiWidget* FindWidget(const char* name) const; CGuiWidget* FindWidget(const rstl::string& name) const; CGuiCamera* GetFrameCamera() const { return x14_camera; } + void AddLight(CGuiLight* light); + void RemoveLight(CGuiLight* light); private: char x0_pad[0x14]; diff --git a/include/GuiSys/CGuiLight.hpp b/include/GuiSys/CGuiLight.hpp new file mode 100644 index 00000000..c12747a7 --- /dev/null +++ b/include/GuiSys/CGuiLight.hpp @@ -0,0 +1,30 @@ +#ifndef _CGUILIGHT +#define _CGUILIGHT + +#include "GuiSys/CGuiWidget.hpp" +#include "Kyoto/Graphics/CLight.hpp" + +class IObjectStore; +class CGuiLight : public CGuiWidget { +public: + static CGuiLight* Create(CGuiFrame* frame, CInputStream& in, IObjectStore* sp); + CGuiLight(const CGuiWidgetParms& parms, const CLight& light); + ~CGuiLight(); + + virtual void SetIsVisible(const bool visible); + CLight BuildLight() const; + FourCC GetWidgetTypeID() const; +public: + ELightType xb8_type; + float xbc_spotCutoff; + float xc0_distC; + float xc4_distL; + float xc8_distQ; + float xcc_angleC; + float xd0_angleL; + float xd4_angleQ; + u32 xd8_lightId; + CColor xdc_ambColor; +}; + +#endif // _CGUILIGHT diff --git a/include/GuiSys/CGuiObject.hpp b/include/GuiSys/CGuiObject.hpp index 0124bd7f..9c7ea171 100644 --- a/include/GuiSys/CGuiObject.hpp +++ b/include/GuiSys/CGuiObject.hpp @@ -17,15 +17,16 @@ public: void MoveInWorld(const CVector3f& offset); CVector3f GetWorldPosition() const; CVector3f GetLocalPosition() const; + const CTransform4f& GetWorldTransform() const { return x34_worldXF; } void SetLocalPosition(const CVector3f& pos); void SetLocalTransform(const CTransform4f& xf); + void SetO2WTransform(const CTransform4f& xf); void RotateReset(); CVector3f RotateO2P(const CVector3f& vec) const; CVector3f RotateW2O(const CVector3f& offset) const { - CVector3f ret = x34_worldXF.TransposeRotate(offset); - return ret; + return x34_worldXF.TransposeRotate(offset); } CVector3f RotateTranslateW2O(const CVector3f& vec) const; void MultiplyO2P(const CTransform4f& xf); @@ -37,6 +38,11 @@ public: x64_parent = obj; } + CGuiObject* Parent(); + const CGuiObject* GetChildObject() const; + CGuiObject* ChildObject(); + const CGuiObject* GetNextSibling() const; + CGuiObject* NextSibling(); private: CTransform4f x4_localXF; CTransform4f x34_worldXF; diff --git a/include/GuiSys/CGuiWidget.hpp b/include/GuiSys/CGuiWidget.hpp index 41f311cb..e887c8ca 100644 --- a/include/GuiSys/CGuiWidget.hpp +++ b/include/GuiSys/CGuiWidget.hpp @@ -5,7 +5,10 @@ #include "Kyoto/Graphics/CColor.hpp" #include "Kyoto/SObjectTag.hpp" +#include "rstl/string.hpp" + class CFinalInput; +class CGuiFrame; enum ETraversalMode { kTM_ChildrenAndSiblings = 0, @@ -22,26 +25,47 @@ public: kGMDF_Additive = 3, kGMDF_AlphaAdditiveOverdraw = 4 }; - class CGuiWidgetParms; + class CGuiWidgetParms { + public: + CGuiWidgetParms(CGuiFrame*, const rstl::string&, bool, short, short, bool, bool, bool, + const CColor&, CGuiWidget::EGuiModelDrawFlags, bool, bool); + CGuiFrame* x0_frame; + bool x4_useAnimController; + short x6_selfId; + short x8_parentId; + bool xa_defaultVisible; + bool xb_defaultActive; + bool xc_cullFaces; + bool xd_g; + bool xe_h; + CColor x10_color; + EGuiModelDrawFlags x14_drawFlags; + }; - void Update(float dt) override; - void Draw(const CGuiWidgetDrawParms& drawParms) override; - void Initialize() override; - - virtual void Reset(ETraversalMode mode); + CGuiWidget(const CGuiWidgetParms& parms); + ~CGuiWidget(); + void Update(float dt); + void Draw(const CGuiWidgetDrawParms& drawParms) const; + void Initialize(); virtual void ProcessUserInput(const CFinalInput& input); - virtual void Touch(); + virtual void Touch() const; virtual bool GetIsVisible() const; virtual bool GetIsActive() const; - virtual bool GetMouseActive() const; virtual FourCC GetWidgetTypeID() const { return 'BWIG'; } virtual bool AddWorkerWidget(CGuiWidget* worker); - virtual bool GetIsFinishedLoadingWidgetSpecific(); - virtual void OnVisibleChange(); - virtual void OnActiveChange(); + virtual bool GetIsFinishedLoadingWidgetSpecific() const; + virtual void OnVisible(); + virtual void OnActivate(); + void SetIsVisible(bool visible); void SetColor(const CColor& color); + const CColor& GetColor() const { return xa4_color; } void SetVisibility(bool visible, ETraversalMode mode); + void ParseBaseInfo(CGuiFrame* frame, CInputStream& in, const CGuiWidgetParms& parms); + + static CGuiWidgetParms ReadWidgetHeader(CGuiFrame* frame, CInputStream& in); + + CGuiFrame* GetFrame() { return xb0_frame; } private: short x70_selfId; diff --git a/src/GuiSys/CGuiLight.cpp b/src/GuiSys/CGuiLight.cpp new file mode 100644 index 00000000..a25b6d39 --- /dev/null +++ b/src/GuiSys/CGuiLight.cpp @@ -0,0 +1,108 @@ +#include "GuiSys/CGuiLight.hpp" +#include "GuiSys/CGuiFrame.hpp" + +#include "Kyoto/Streams/CInputStream.hpp" + +CGuiLight* CGuiLight::Create(CGuiFrame* parent, CInputStream& in, IObjectStore* sp) { + CGuiWidgetParms parms = ReadWidgetHeader(parent, in); + CColor color = parms.x10_color; + ELightType type = (ELightType)in.ReadInt32(); + float distC = in.ReadFloat(); + float distL = in.ReadFloat(); + float distQ = in.ReadFloat(); + float angC = in.ReadFloat(); + float angL = in.ReadFloat(); + float angQ = in.ReadFloat(); + uint lightId = in.ReadInt32(); + + CGuiLight* ret = nullptr; + + switch (type) { + case kLT_Spot: { + float cutoff = in.ReadFloat(); + CLight lt = CLight::BuildSpot(CVector3f::Zero(), CVector3f::Zero(), color, cutoff); + lt.SetAttenuation(distC, distL, distQ); + lt.SetAngleAttenuation(angC, angL, angQ); + lt.SetLightId(lightId); + + ret = new CGuiLight(parms, lt); + break; + } + case kLT_Point: { + CLight lt = CLight::BuildPoint(CVector3f::Zero(), color); + lt.SetAttenuation(distC, distL, distQ); + lt.SetLightId(lightId); + ret = new CGuiLight(parms, lt); + break; + } + case kLT_Directional: { + CLight lt = CLight::BuildDirectional(CVector3f::Zero(), color); + lt.SetLightId(lightId); + ret = new CGuiLight(parms, lt); + break; + } + default: + break; + } + + ret->ParseBaseInfo(parent, in, parms); + parent->AddLight(ret); + return ret; +} + +CGuiLight::CGuiLight(const CGuiWidgetParms& parms, const CLight& light) +: CGuiWidget(parms) +, xb8_type(light.GetType()) +, xbc_spotCutoff(light.GetSpotCutoff()) +, xc0_distC(light.GetAttenuationConstant()) +, xc4_distL(light.GetAttenuationLinear()) +, xc8_distQ(light.GetAttenuationQuadratic()) +, xcc_angleC(light.GetAngleAttenuationConstant()) +, xd0_angleL(light.GetAngleAttenuationLinear()) +, xd4_angleQ(light.GetAngleAttenuationQuadratic()) +, xd8_lightId(light.GetId()) +, xdc_ambColor(CColor::Black()) {} + +CGuiLight::~CGuiLight() { GetFrame()->RemoveLight(this); } + +void CGuiLight::SetIsVisible(const bool visible) { + if (visible) { + GetFrame()->AddLight(this); + } else { + GetFrame()->RemoveLight(this); + } + + CGuiWidget::SetIsVisible(visible); +} + +CLight CGuiLight::BuildLight() const { + CLight ret = CLight::BuildLocalAmbient(CVector3f::Zero(), CColor(0.f, 0.f, 0.f)); + CVector3f pos = GetWorldPosition(); + CVector3f dir = GetWorldTransform().GetColumn(kDY); + CColor color = GetColor(); + switch (xb8_type) { + case kLT_Spot: + ret = CLight::BuildSpot(pos, dir, color, xbc_spotCutoff); + break; + case kLT_Point: + ret = CLight::BuildPoint(pos, color); + break; + case kLT_Directional: + ret = CLight::BuildDirectional(dir, color); + break; + case kLT_Custom: + ret = CLight::BuildCustom(pos, dir, color, xc0_distC, xc4_distL, xc8_distQ, xcc_angleC, + xd0_angleL, xd4_angleQ); + default: + break; + } + + ret.SetAttenuation(xc0_distC, xc4_distL, xc8_distQ); + ret.SetAngleAttenuation(xcc_angleC, xd0_angleL, xd4_angleQ); + ret.SetLightId(xd8_lightId); + return ret; +} + +FourCC CGuiLight::GetWidgetTypeID() const { + return 'LITE'; +} diff --git a/src/GuiSys/CGuiObject.cpp b/src/GuiSys/CGuiObject.cpp index 3d70c80f..bff217b0 100644 --- a/src/GuiSys/CGuiObject.cpp +++ b/src/GuiSys/CGuiObject.cpp @@ -35,20 +35,17 @@ void CGuiObject::Draw(const CGuiWidgetDrawParms& parms) const { } void CGuiObject::MoveInWorld(const CVector3f& offset) { + CVector3f pos; if (x64_parent != nullptr) { - CVector3f pos = x64_parent->RotateW2O(offset); + pos = x64_parent->RotateW2O(offset); } x4_localXF.AddTranslation(offset); RecalculateTransforms(); } -CVector3f CGuiObject::GetWorldPosition() const { - return x34_worldXF.GetTranslation(); -} +CVector3f CGuiObject::GetWorldPosition() const { return x34_worldXF.GetTranslation(); } -CVector3f CGuiObject::GetLocalPosition() const { - return x4_localXF.GetTranslation(); -} +CVector3f CGuiObject::GetLocalPosition() const { return x4_localXF.GetTranslation(); } void CGuiObject::SetLocalPosition(const CVector3f& pos) { MoveInWorld(pos - x4_localXF.GetTranslation()); @@ -92,6 +89,28 @@ void CGuiObject::AddChildObject(CGuiObject* obj, bool makeWorldLocal, bool atEnd prev->x6c_nextSibling = obj; } } else { - } } + +const CGuiObject* CGuiObject::GetChildObject() const { return x68_child; } + +CGuiObject* CGuiObject::ChildObject() { return x68_child; } +const CGuiObject* CGuiObject::GetNextSibling() const { return x6c_nextSibling; } +CGuiObject* CGuiObject::NextSibling() { return x6c_nextSibling; } + +CGuiObject* CGuiObject::Parent() { return x64_parent; } + +void CGuiObject::RecalculateTransforms() { + +} + +void CGuiObject::SetLocalTransform(const CTransform4f& xf) { + x4_localXF = xf; + RecalculateTransforms(); +} + +void CGuiObject::SetO2WTransform(const CTransform4f& worldXf) { + const CTransform4f invXf = x64_parent->x34_worldXF.GetQuickInverse(); + const CTransform4f localXf = invXf * worldXf; + SetLocalTransform(localXf); +}