TObject and JStudio internals (#57)

* TObject

* fix

Co-authored-by: Pheenoh <pheenoh@gmail.com>
This commit is contained in:
notyourav
2021-01-05 09:47:26 -08:00
committed by GitHub
parent 689d83dd23
commit 105c006948
31 changed files with 1403 additions and 1182 deletions
+2 -2
View File
@@ -2219,7 +2219,7 @@ lbl_80292FD8:
/* 80292FF4 0028FF34 38 61 00 10 */ addi r3, r1, 0x10
/* 80292FF8 0028FF38 7F C4 F3 78 */ mr r4, r30
/* 80292FFC 0028FF3C 38 A1 00 14 */ addi r5, r1, 0x14
/* 80293000 0028FF40 48 04 9B A9 */ bl JGadget_NS_TNodeLinkList_NS_Insert
/* 80293000 0028FF40 48 04 9B A9 */ bl Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget13TLinkListNode
lbl_80293004:
/* 80293004 0028FF44 83 E1 00 2C */ lwz r31, 0x2c(r1)
/* 80293008 0028FF48 83 C1 00 28 */ lwz r30, 0x28(r1)
@@ -2557,7 +2557,7 @@ JASTrack_NS_TList_NS_dtor:
/* 80293478 002903B8 41 82 00 20 */ beq lbl_80293498
/* 8029347C 002903BC 41 82 00 0C */ beq lbl_80293488
/* 80293480 002903C0 38 80 00 00 */ li r4, 0
/* 80293484 002903C4 48 04 95 99 */ bl JGadget_NS_TNodeLinkList_NS_dtor
/* 80293484 002903C4 48 04 95 99 */ bl __dt__Q27JGadget13TNodeLinkListFv
lbl_80293488:
/* 80293488 002903C8 7F E0 07 35 */ extsh. r0, r31
/* 8029348C 002903CC 40 81 00 0C */ ble lbl_80293498
+2 -2
View File
@@ -34,8 +34,8 @@ lbl_802DC8C0:
/* 802DC8C0 002D9800 38 21 00 10 */ addi r1, r1, 0x10
/* 802DC8C4 002D9804 4E 80 00 20 */ blr
.global JGadget_NS_binary_NS_TParse_header_block_NS_dtor
JGadget_NS_binary_NS_TParse_header_block_NS_dtor:
.global __dt__Q37JGadget6binary19TParse_header_blockFv
__dt__Q37JGadget6binary19TParse_header_blockFv:
/* 802DC8C8 002D9808 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DC8CC 002D980C 7C 08 02 A6 */ mflr r0
/* 802DC8D0 002D9810 90 01 00 14 */ stw r0, 0x14(r1)
+4 -24
View File
@@ -2,26 +2,6 @@
.section .text, "ax" # 802dca1c
.global JGadget_NS_TNodeLinkList_NS_dtor
JGadget_NS_TNodeLinkList_NS_dtor:
/* 802DCA1C 002D995C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DCA20 002D9960 7C 08 02 A6 */ mflr r0
/* 802DCA24 002D9964 90 01 00 14 */ stw r0, 0x14(r1)
/* 802DCA28 002D9968 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802DCA2C 002D996C 7C 7F 1B 79 */ or. r31, r3, r3
/* 802DCA30 002D9970 41 82 00 10 */ beq lbl_802DCA40
/* 802DCA34 002D9974 7C 80 07 35 */ extsh. r0, r4
/* 802DCA38 002D9978 40 81 00 08 */ ble lbl_802DCA40
/* 802DCA3C 002D997C 4B FF 23 01 */ bl __dl__FPv
lbl_802DCA40:
/* 802DCA40 002D9980 7F E3 FB 78 */ mr r3, r31
/* 802DCA44 002D9984 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802DCA48 002D9988 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802DCA4C 002D998C 7C 08 03 A6 */ mtlr r0
/* 802DCA50 002D9990 38 21 00 10 */ addi r1, r1, 0x10
/* 802DCA54 002D9994 4E 80 00 20 */ blr
.global JGadget_NS_TNodeLinkList_NS_erase
JGadget_NS_TNodeLinkList_NS_erase:
/* 802DCA58 002D9998 94 21 FF E0 */ stwu r1, -0x20(r1)
@@ -110,7 +90,7 @@ lbl_802DCB60:
/* 802DCB80 002D9AC0 7F A4 EB 78 */ mr r4, r29
/* 802DCB84 002D9AC4 38 A1 00 10 */ addi r5, r1, 0x10
/* 802DCB88 002D9AC8 7F E6 FB 78 */ mr r6, r31
/* 802DCB8C 002D9ACC 48 00 00 1D */ bl JGadget_NS_TNodeLinkList_NS_Insert
/* 802DCB8C 002D9ACC 48 00 00 1D */ bl Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget13TLinkListNode
lbl_802DCB90:
/* 802DCB90 002D9AD0 39 61 00 40 */ addi r11, r1, 0x40
/* 802DCB94 002D9AD4 48 08 56 95 */ bl _restgpr_29
@@ -119,8 +99,8 @@ lbl_802DCB90:
/* 802DCBA0 002D9AE0 38 21 00 40 */ addi r1, r1, 0x40
/* 802DCBA4 002D9AE4 4E 80 00 20 */ blr
.global JGadget_NS_TNodeLinkList_NS_Insert
JGadget_NS_TNodeLinkList_NS_Insert:
.global Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget13TLinkListNode
Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget13TLinkListNode:
/* 802DCBA8 002D9AE8 80 A5 00 00 */ lwz r5, 0(r5)
/* 802DCBAC 002D9AEC 80 E5 00 04 */ lwz r7, 4(r5)
/* 802DCBB0 002D9AF0 90 A6 00 00 */ stw r5, 0(r6)
@@ -195,7 +175,7 @@ lbl_802DCC8C:
/* 802DCCA0 002D9BE0 40 82 FF A8 */ bne lbl_802DCC48
/* 802DCCA4 002D9BE4 38 61 00 30 */ addi r3, r1, 0x30
/* 802DCCA8 002D9BE8 38 80 FF FF */ li r4, -1
/* 802DCCAC 002D9BEC 4B FF FD 71 */ bl JGadget_NS_TNodeLinkList_NS_dtor
/* 802DCCAC 002D9BEC 4B FF FD 71 */ bl __dt__Q27JGadget13TNodeLinkListFv
/* 802DCCB0 002D9BF0 39 61 00 50 */ addi r11, r1, 0x50
/* 802DCCB4 002D9BF4 48 08 55 71 */ bl _restgpr_28
/* 802DCCB8 002D9BF8 80 01 00 54 */ lwz r0, 0x54(r1)
+3 -3
View File
@@ -189,7 +189,7 @@ JMessage_NS_TResourceContainer_NS_TCResource_NS_dtor:
/* 802A8F30 002A5E70 90 1E 00 0C */ stw r0, 0xc(r30)
/* 802A8F34 002A5E74 41 82 00 0C */ beq lbl_802A8F40
/* 802A8F38 002A5E78 38 80 00 00 */ li r4, 0
/* 802A8F3C 002A5E7C 48 03 3A E1 */ bl JGadget_NS_TNodeLinkList_NS_dtor
/* 802A8F3C 002A5E7C 48 03 3A E1 */ bl __dt__Q27JGadget13TNodeLinkListFv
lbl_802A8F40:
/* 802A8F40 002A5E80 7F E0 07 35 */ extsh. r0, r31
/* 802A8F44 002A5E84 40 81 00 0C */ ble lbl_802A8F50
@@ -361,7 +361,7 @@ JMessage_NS_TParse:
/* 802A917C 002A60BC 38 04 9C 94 */ addi r0, r4, lbl_803C9C94@l
/* 802A9180 002A60C0 90 1E 00 00 */ stw r0, 0(r30)
/* 802A9184 002A60C4 38 80 00 00 */ li r4, 0
/* 802A9188 002A60C8 48 03 37 41 */ bl JGadget_NS_binary_NS_TParse_header_block_NS_dtor
/* 802A9188 002A60C8 48 03 37 41 */ bl __dt__Q37JGadget6binary19TParse_header_blockFv
/* 802A918C 002A60CC 7F E0 07 35 */ extsh. r0, r31
/* 802A9190 002A60D0 40 81 00 0C */ ble lbl_802A919C
/* 802A9194 002A60D4 7F C3 F3 78 */ mr r3, r30
@@ -451,7 +451,7 @@ lbl_802A92A8:
/* 802A92C0 002A6200 38 61 00 10 */ addi r3, r1, 0x10
/* 802A92C4 002A6204 7F A4 EB 78 */ mr r4, r29
/* 802A92C8 002A6208 38 A1 00 14 */ addi r5, r1, 0x14
/* 802A92CC 002A620C 48 03 38 DD */ bl JGadget_NS_TNodeLinkList_NS_Insert
/* 802A92CC 002A620C 48 03 38 DD */ bl Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget13TLinkListNode
/* 802A92D0 002A6210 80 7F 00 08 */ lwz r3, 8(r31)
/* 802A92D4 002A6214 93 C3 00 08 */ stw r30, 8(r3)
/* 802A92D8 002A6218 38 60 00 01 */ li r3, 1
+3 -3
View File
@@ -86,7 +86,7 @@ JStudio_NS_ctb_NS_TControl_NS_dtor:
/* 80281024 0027DF64 41 82 00 10 */ beq lbl_80281034
/* 80281028 0027DF68 38 7E 00 08 */ addi r3, r30, 8
/* 8028102C 0027DF6C 38 80 00 00 */ li r4, 0
/* 80281030 0027DF70 48 05 B9 ED */ bl JGadget_NS_TNodeLinkList_NS_dtor
/* 80281030 0027DF70 48 05 B9 ED */ bl __dt__Q27JGadget13TNodeLinkListFv
lbl_80281034:
/* 80281034 0027DF74 7F E0 07 35 */ extsh. r0, r31
/* 80281038 0027DF78 40 81 00 0C */ ble lbl_80281044
@@ -117,7 +117,7 @@ JStudio_NS_ctb_NS_TControl_NS_appendObject:
/* 8028108C 0027DFCC 38 61 00 10 */ addi r3, r1, 0x10
/* 80281090 0027DFD0 38 85 00 08 */ addi r4, r5, 8
/* 80281094 0027DFD4 38 A1 00 14 */ addi r5, r1, 0x14
/* 80281098 0027DFD8 48 05 BB 11 */ bl JGadget_NS_TNodeLinkList_NS_Insert
/* 80281098 0027DFD8 48 05 BB 11 */ bl Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget13TLinkListNode
/* 8028109C 0027DFDC 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802810A0 0027DFE0 7C 08 03 A6 */ mtlr r0
/* 802810A4 0027DFE4 38 21 00 20 */ addi r1, r1, 0x20
@@ -352,7 +352,7 @@ JStudio_NS_ctb_NS_TParse_NS_dtor:
/* 802813A0 0027E2E0 38 04 48 78 */ addi r0, r4, lbl_803C4878@l
/* 802813A4 0027E2E4 90 1E 00 00 */ stw r0, 0(r30)
/* 802813A8 0027E2E8 38 80 00 00 */ li r4, 0
/* 802813AC 0027E2EC 48 05 B5 1D */ bl JGadget_NS_binary_NS_TParse_header_block_NS_dtor
/* 802813AC 0027E2EC 48 05 B5 1D */ bl __dt__Q37JGadget6binary19TParse_header_blockFv
/* 802813B0 0027E2F0 7F E0 07 35 */ extsh. r0, r31
/* 802813B4 0027E2F4 40 81 00 0C */ ble lbl_802813C0
/* 802813B8 0027E2F8 7F C3 F3 78 */ mr r3, r30
+3 -3
View File
@@ -520,7 +520,7 @@ JStudio_NS_fvb_NS_TControl_NS_dtor:
/* 802846C8 00281608 41 82 00 10 */ beq lbl_802846D8
/* 802846CC 0028160C 38 7E 00 08 */ addi r3, r30, 8
/* 802846D0 00281610 38 80 00 00 */ li r4, 0
/* 802846D4 00281614 48 05 83 49 */ bl JGadget_NS_TNodeLinkList_NS_dtor
/* 802846D4 00281614 48 05 83 49 */ bl __dt__Q27JGadget13TNodeLinkListFv
lbl_802846D8:
/* 802846D8 00281618 7F E0 07 35 */ extsh. r0, r31
/* 802846DC 0028161C 40 81 00 0C */ ble lbl_802846E8
@@ -551,7 +551,7 @@ JStudio_NS_fvb_NS_TControl_NS_appendObject:
/* 80284730 00281670 38 61 00 10 */ addi r3, r1, 0x10
/* 80284734 00281674 38 85 00 08 */ addi r4, r5, 8
/* 80284738 00281678 38 A1 00 14 */ addi r5, r1, 0x14
/* 8028473C 0028167C 48 05 84 6D */ bl JGadget_NS_TNodeLinkList_NS_Insert
/* 8028473C 0028167C 48 05 84 6D */ bl Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget13TLinkListNode
/* 80284740 00281680 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80284744 00281684 7C 08 03 A6 */ mtlr r0
/* 80284748 00281688 38 21 00 20 */ addi r1, r1, 0x20
@@ -852,7 +852,7 @@ JStudio_NS_fvb_NS_TParse_NS_dtor:
/* 80284B20 00281A60 38 04 4A 1C */ addi r0, r4, lbl_803C4A1C@l
/* 80284B24 00281A64 90 1E 00 00 */ stw r0, 0(r30)
/* 80284B28 00281A68 38 80 00 00 */ li r4, 0
/* 80284B2C 00281A6C 48 05 7D 9D */ bl JGadget_NS_binary_NS_TParse_header_block_NS_dtor
/* 80284B2C 00281A6C 48 05 7D 9D */ bl __dt__Q37JGadget6binary19TParse_header_blockFv
/* 80284B30 00281A70 7F E0 07 35 */ extsh. r0, r31
/* 80284B34 00281A74 40 81 00 0C */ ble lbl_80284B40
/* 80284B38 00281A78 7F C3 F3 78 */ mr r3, r30
+8 -8
View File
@@ -10,7 +10,7 @@ JStudio_NS_TControl:
/* 8028511C 0028205C 90 01 00 24 */ stw r0, 0x24(r1)
/* 80285120 00282060 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 80285124 00282064 7C 7F 1B 78 */ mr r31, r3
/* 80285128 00282068 48 00 3F 8D */ bl JStudio_NS_stb_NS_TControl
/* 80285128 00282068 48 00 3F 8D */ bl __ct__Q37JStudio3stb8TControlFv
/* 8028512C 0028206C 3C 60 80 3C */ lis r3, lbl_803C4AF4@ha
/* 80285130 00282070 38 03 4A F4 */ addi r0, r3, lbl_803C4AF4@l
/* 80285134 00282074 90 1F 00 00 */ stw r0, 0(r31)
@@ -62,7 +62,7 @@ JStudio_NS_TControl:
/* 802851EC 0028212C 4B FF F4 AD */ bl JStudio_NS_fvb_NS_TControl_NS_dtor
/* 802851F0 00282130 7F C3 F3 78 */ mr r3, r30
/* 802851F4 00282134 38 80 00 00 */ li r4, 0
/* 802851F8 00282138 48 00 3F 9D */ bl JStudio_NS_stb_NS_TControl_NS_dtor
/* 802851F8 00282138 48 00 3F 9D */ bl __dt__Q37JStudio3stb8TControlFv
/* 802851FC 0028213C 7F E0 07 35 */ extsh. r0, r31
/* 80285200 00282140 40 81 00 0C */ ble lbl_8028520C
/* 80285204 00282144 7F C3 F3 78 */ mr r3, r30
@@ -292,11 +292,11 @@ lbl_802854B8:
/* 80285518 00282458 41 82 00 10 */ beq lbl_80285528
/* 8028551C 0028245C 38 7E 00 04 */ addi r3, r30, 4
/* 80285520 00282460 38 80 00 00 */ li r4, 0
/* 80285524 00282464 48 05 74 F9 */ bl JGadget_NS_TNodeLinkList_NS_dtor
/* 80285524 00282464 48 05 74 F9 */ bl __dt__Q27JGadget13TNodeLinkListFv
lbl_80285528:
/* 80285528 00282468 7F C3 F3 78 */ mr r3, r30
/* 8028552C 0028246C 38 80 00 00 */ li r4, 0
/* 80285530 00282470 48 00 40 85 */ bl JStudio_NS_stb_NS_TFactory_NS_dtor
/* 80285530 00282470 48 00 40 85 */ bl __dt__Q37JStudio3stb8TFactoryFv
/* 80285534 00282474 7F E0 07 35 */ extsh. r0, r31
/* 80285538 00282478 40 81 00 0C */ ble lbl_80285544
/* 8028553C 0028247C 7F C3 F3 78 */ mr r3, r30
@@ -326,7 +326,7 @@ JStudio_NS_TFactory_NS_appendCreateObject:
/* 8028558C 002824CC 38 61 00 10 */ addi r3, r1, 0x10
/* 80285590 002824D0 38 85 00 04 */ addi r4, r5, 4
/* 80285594 002824D4 38 A1 00 14 */ addi r5, r1, 0x14
/* 80285598 002824D8 48 05 76 11 */ bl JGadget_NS_TNodeLinkList_NS_Insert
/* 80285598 002824D8 48 05 76 11 */ bl Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget13TLinkListNode
/* 8028559C 002824DC 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802855A0 002824E0 7C 08 03 A6 */ mtlr r0
/* 802855A4 002824E4 38 21 00 20 */ addi r1, r1, 0x20
@@ -390,7 +390,7 @@ JStudio_NS_TParse:
/* 80285674 002825B4 90 01 00 14 */ stw r0, 0x14(r1)
/* 80285678 002825B8 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8028567C 002825BC 7C 7F 1B 78 */ mr r31, r3
/* 80285680 002825C0 48 00 3F C1 */ bl JStudio_NS_stb_NS_TParse
/* 80285680 002825C0 48 00 3F C1 */ bl __ct__Q37JStudio3stb6TParseFPQ37JStudio3stb8TControl
/* 80285684 002825C4 3C 60 80 3C */ lis r3, lbl_803C4AC0@ha
/* 80285688 002825C8 38 03 4A C0 */ addi r0, r3, lbl_803C4AC0@l
/* 8028568C 002825CC 90 1F 00 00 */ stw r0, 0(r31)
@@ -415,7 +415,7 @@ JStudio_NS_TParse_NS_dtor:
/* 802856CC 0028260C 38 04 4A C0 */ addi r0, r4, lbl_803C4AC0@l
/* 802856D0 00282610 90 1E 00 00 */ stw r0, 0(r30)
/* 802856D4 00282614 38 80 00 00 */ li r4, 0
/* 802856D8 00282618 48 00 3F 89 */ bl JStudio_NS_stb_NS_TParse_NS_dtor
/* 802856D8 00282618 48 00 3F 89 */ bl __dt__Q37JStudio3stb6TParseFv
/* 802856DC 0028261C 7F E0 07 35 */ extsh. r0, r31
/* 802856E0 00282620 40 81 00 0C */ ble lbl_802856EC
/* 802856E4 00282624 7F C3 F3 78 */ mr r3, r30
@@ -510,7 +510,7 @@ lbl_80285828:
/* 80285828 00282768 48 00 00 C9 */ bl JStudio_NS_TParse_NS_parseBlock_block_ctb_
/* 8028582C 0028276C 48 00 00 08 */ b lbl_80285834
lbl_80285830:
/* 80285830 00282770 48 00 3F B9 */ bl JStudio_NS_stb_NS_TParse_NS_parseBlock_block
/* 80285830 00282770 48 00 3F B9 */ bl parseBlock_block__Q37JStudio3stb6TParseFRCQ47JStudio3stb4data13TParse_TBlockUl
lbl_80285834:
/* 80285834 00282774 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80285838 00282778 7C 08 03 A6 */ mtlr r0
+2 -2
View File
@@ -700,7 +700,7 @@ JStudio_NS_TObject_NS_dtor:
lbl_802866FC:
/* 802866FC 0028363C 7F C3 F3 78 */ mr r3, r30
/* 80286700 00283640 38 80 00 00 */ li r4, 0
/* 80286704 00283644 48 00 24 2D */ bl JStudio_NS_stb_NS_TObject_NS_dtor
/* 80286704 00283644 48 00 24 2D */ bl __dt__Q37JStudio3stb7TObjectFv
/* 80286708 00283648 7F E0 07 35 */ extsh. r0, r31
/* 8028670C 0028364C 40 81 00 0C */ ble lbl_80286718
/* 80286710 00283650 7F C3 F3 78 */ mr r3, r30
@@ -806,7 +806,7 @@ JStudio_NS_TObject:
/* 80286874 002837B4 93 C1 00 08 */ stw r30, 8(r1)
/* 80286878 002837B8 7C 7E 1B 78 */ mr r30, r3
/* 8028687C 002837BC 7C BF 2B 78 */ mr r31, r5
/* 80286880 002837C0 48 00 22 41 */ bl JStudio_NS_stb_NS_TObject_X1_
/* 80286880 002837C0 48 00 22 41 */ bl __ct__Q37JStudio3stb7TObjectFRCQ47JStudio3stb4data20TParse_TBlock_object
/* 80286884 002837C4 3C 60 80 3C */ lis r3, lbl_803C55F0@ha
/* 80286888 002837C8 38 03 55 F0 */ addi r0, r3, lbl_803C55F0@l
/* 8028688C 002837CC 90 1E 00 08 */ stw r0, 8(r30)
-1125
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1086,7 +1086,7 @@ JUTConsoleManager_NS_appendConsole:
/* 802E8278 002E51B8 38 61 00 10 */ addi r3, r1, 0x10
/* 802E827C 002E51BC 7F C4 F3 78 */ mr r4, r30
/* 802E8280 002E51C0 38 A1 00 14 */ addi r5, r1, 0x14
/* 802E8284 002E51C4 4B FF 49 25 */ bl JGadget_NS_TNodeLinkList_NS_Insert
/* 802E8284 002E51C4 4B FF 49 25 */ bl Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget13TLinkListNode
/* 802E8288 002E51C8 80 1E 00 0C */ lwz r0, 0xc(r30)
/* 802E828C 002E51CC 28 00 00 00 */ cmplwi r0, 0
/* 802E8290 002E51D0 40 82 00 08 */ bne lbl_802E8298
+5 -5
View File
@@ -2127,7 +2127,7 @@ dDemo_c_NS_start:
/* 80039B8C 00036ACC 7C 9D 23 78 */ mr r29, r4
/* 80039B90 00036AD0 FF E0 08 90 */ fmr f31, f1
/* 80039B94 00036AD4 80 6D 88 84 */ lwz r3, lbl_80450E04-_SDA_BASE_(r13)
/* 80039B98 00036AD8 48 24 F8 6D */ bl JStudio_NS_stb_NS_TControl_NS_reset
/* 80039B98 00036AD8 48 24 F8 6D */ bl reset__Q37JStudio3stb8TControlFv
/* 80039B9C 00036ADC 38 61 00 0C */ addi r3, r1, 0xc
/* 80039BA0 00036AE0 80 8D 88 84 */ lwz r4, lbl_80450E04-_SDA_BASE_(r13)
/* 80039BA4 00036AE4 48 24 BA C9 */ bl JStudio_NS_TParse
@@ -2158,7 +2158,7 @@ lbl_80039BEC:
lbl_80039C04:
/* 80039C04 00036B44 80 6D 88 84 */ lwz r3, lbl_80450E04-_SDA_BASE_(r13)
/* 80039C08 00036B48 38 80 00 00 */ li r4, 0
/* 80039C0C 00036B4C 48 24 F8 A9 */ bl JStudio_NS_stb_NS_TControl_NS_forward
/* 80039C0C 00036B4C 48 24 F8 A9 */ bl forward__Q37JStudio3stb8TControlFUl
/* 80039C10 00036B50 93 AD 88 AC */ stw r29, lbl_80450E2C-_SDA_BASE_(r13)
/* 80039C14 00036B54 28 1D 00 00 */ cmplwi r29, 0
/* 80039C18 00036B58 41 82 00 98 */ beq lbl_80039CB0
@@ -2229,7 +2229,7 @@ dDemo_c_NS_end:
/* 80039D04 00036C44 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80039D08 00036C48 83 ED 88 84 */ lwz r31, lbl_80450E04-_SDA_BASE_(r13)
/* 80039D0C 00036C4C 7F E3 FB 78 */ mr r3, r31
/* 80039D10 00036C50 48 24 F5 F1 */ bl JStudio_NS_stb_NS_TControl_NS_destroyObject_all
/* 80039D10 00036C50 48 24 F5 F1 */ bl destroyObject_all__Q37JStudio3stb8TControlFv
/* 80039D14 00036C54 38 7F 00 60 */ addi r3, r31, 0x60
/* 80039D18 00036C58 48 24 AA B9 */ bl JStudio_NS_fvb_NS_TControl_NS_destroyObject_all
/* 80039D1C 00036C5C 38 7F 00 74 */ addi r3, r31, 0x74
@@ -2253,7 +2253,7 @@ dDemo_c_NS_branch:
/* 80039D58 00036C98 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80039D5C 00036C9C 83 ED 88 84 */ lwz r31, lbl_80450E04-_SDA_BASE_(r13)
/* 80039D60 00036CA0 7F E3 FB 78 */ mr r3, r31
/* 80039D64 00036CA4 48 24 F5 9D */ bl JStudio_NS_stb_NS_TControl_NS_destroyObject_all
/* 80039D64 00036CA4 48 24 F5 9D */ bl destroyObject_all__Q37JStudio3stb8TControlFv
/* 80039D68 00036CA8 38 7F 00 60 */ addi r3, r31, 0x60
/* 80039D6C 00036CAC 48 24 AA 65 */ bl JStudio_NS_fvb_NS_TControl_NS_destroyObject_all
/* 80039D70 00036CB0 38 7F 00 74 */ addi r3, r31, 0x74
@@ -2303,7 +2303,7 @@ lbl_80039DE8:
lbl_80039E0C:
/* 80039E0C 00036D4C 80 6D 88 84 */ lwz r3, lbl_80450E04-_SDA_BASE_(r13)
/* 80039E10 00036D50 38 80 00 01 */ li r4, 1
/* 80039E14 00036D54 48 24 F6 A1 */ bl JStudio_NS_stb_NS_TControl_NS_forward
/* 80039E14 00036D54 48 24 F6 A1 */ bl forward__Q37JStudio3stb8TControlFUl
/* 80039E18 00036D58 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 80039E1C 00036D5C 41 82 00 30 */ beq lbl_80039E4C
/* 80039E20 00036D60 80 6D 88 A8 */ lwz r3, lbl_80450E28-_SDA_BASE_(r13)
+37
View File
@@ -0,0 +1,37 @@
#ifndef JSYSTEM_JGADGET_BINARY_H
#define JSYSTEM_JGADGET_BINARY_H
#include "dolphin/types.h"
namespace JGadget {
namespace binary {
inline u32 align_roundUp(u32 arg0, u32 uAlign) {
return (arg0 + uAlign - 1) & ~(uAlign - 1);
}
struct TParseData {
TParseData(const void* pContent) : raw(pContent) {}
const void* getRaw() const { return raw; }
const void* raw;
};
template <int T>
struct TParseData_aligned : public TParseData {
TParseData_aligned(const void* pContent) : TParseData(pContent) {}
};
// Base for header and/or block parsing
struct TParse_header_block {
virtual ~TParse_header_block();
virtual int parseHeader_next(const void** ppData_inout, u32* puBlock_out, u32 arg2) = 0;
virtual int parseBlock_next(const void** ppData_inout, u32* puData_out, u32 arg2) = 0;
};
} // namespace binary
} // namespace JGadget
#endif
+59
View File
@@ -0,0 +1,59 @@
#ifndef JSYSTEM_JGADGET_LINKLIST_H
#define JSYSTEM_JGADGET_LINKLIST_H
#include "dolphin/types.h"
namespace JGadget {
struct TLinkListNode {
TLinkListNode() : pNext_(NULL), pPrev_(NULL) {}
TLinkListNode* getPrev() const { return pPrev_; }
TLinkListNode* pNext_;
TLinkListNode* pPrev_;
};
struct TNodeLinkList {
struct iterator {
iterator() {}
iterator(TLinkListNode* p) { node = p; }
TLinkListNode* node;
};
TNodeLinkList() { Initialize_(); }
~TNodeLinkList();
void Initialize_() {
iter.node = NULL;
oNode_.pNext_ = &oNode_;
oNode_.pPrev_ = &oNode_;
}
void Insert(iterator iter, TLinkListNode* node);
iterator end() { return iterator(oNode_.pNext_); }
iterator iter;
TLinkListNode oNode_;
};
// Currently non matching, but its a rough idea
template <class T, int U, int V>
struct TLinkList : TNodeLinkList {
TLinkListNode* Element_toNode(T* p) { return &static_cast<JStudio::stb::TObject*>(p)->mNode; }
iterator end() { return ((TNodeLinkList*)this)->end(); }
iterator Insert(iterator pIt, T* p) {
((TNodeLinkList*)this)->Insert(pIt, Element_toNode(p));
return iterator(iter.node);
}
void Push_back(T* p) { Insert(end(), p); };
};
} // namespace JGadget
#endif
@@ -0,0 +1,20 @@
/* 80289228 00286168 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8028922C 0028616C 7C 08 02 A6 */ mflr r0
/* 80289230 00286170 90 01 00 24 */ stw r0, 0x24(r1)
/* 80289234 00286174 7C 65 1B 78 */ mr r5, r3
/* 80289238 00286178 90 A4 00 14 */ stw r5, 0x14(r4)
/* 8028923C 0028617C 38 05 00 14 */ addi r0, r5, 0x14
/* 80289240 00286180 90 01 00 0C */ stw r0, 0xc(r1)
/* 80289244 00286184 90 01 00 08 */ stw r0, 8(r1)
/* 80289248 00286188 90 01 00 1C */ stw r0, 0x1c(r1)
/* 8028924C 0028618C 90 01 00 18 */ stw r0, 0x18(r1)
/* 80289250 00286190 38 C4 00 0C */ addi r6, r4, 0xc
/* 80289254 00286194 90 01 00 14 */ stw r0, 0x14(r1)
/* 80289258 00286198 38 61 00 10 */ addi r3, r1, 0x10
/* 8028925C 0028619C 38 85 00 10 */ addi r4, r5, 0x10
/* 80289260 002861A0 38 A1 00 14 */ addi r5, r1, 0x14
/* 80289264 002861A4 48 05 39 45 */ bl Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget13TLinkListNode
/* 80289268 002861A8 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8028926C 002861AC 7C 08 03 A6 */ mtlr r0
/* 80289270 002861B0 38 21 00 20 */ addi r1, r1, 0x20
/* 80289274 002861B4 4E 80 00 20 */ blr
@@ -0,0 +1,27 @@
/* 80289300 00286240 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80289304 00286244 7C 08 02 A6 */ mflr r0
/* 80289308 00286248 90 01 00 24 */ stw r0, 0x24(r1)
/* 8028930C 0028624C 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 80289310 00286250 93 C1 00 18 */ stw r30, 0x18(r1)
/* 80289314 00286254 7C 7E 1B 78 */ mr r30, r3
/* 80289318 00286258 3B FE 00 14 */ addi r31, r30, 0x14
/* 8028931C 0028625C 93 E1 00 10 */ stw r31, 0x10(r1)
/* 80289320 00286260 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80289324 00286264 93 E1 00 14 */ stw r31, 0x14(r1)
/* 80289328 00286268 48 00 00 18 */ b lbl_80289340
lbl_8028932C:
/* 8028932C 0028626C 80 7F 00 04 */ lwz r3, 4(r31)
/* 80289330 00286270 90 61 00 08 */ stw r3, 8(r1)
/* 80289334 00286274 38 83 FF F4 */ addi r4, r3, -12
/* 80289338 00286278 7F C3 F3 78 */ mr r3, r30
/* 8028933C 0028627C 4B FF FF 75 */ bl destroyObject__Q37JStudio3stb8TControlFPQ37JStudio3stb7TObject
lbl_80289340:
/* 80289340 00286280 80 1E 00 10 */ lwz r0, 0x10(r30)
/* 80289344 00286284 28 00 00 00 */ cmplwi r0, 0
/* 80289348 00286288 40 82 FF E4 */ bne lbl_8028932C
/* 8028934C 0028628C 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 80289350 00286290 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 80289354 00286294 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80289358 00286298 7C 08 03 A6 */ mtlr r0
/* 8028935C 0028629C 38 21 00 20 */ addi r1, r1, 0x20
/* 80289360 002862A0 4E 80 00 20 */ blr
@@ -0,0 +1,157 @@
/* 80288BE8 00285B28 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80288BEC 00285B2C 7C 08 02 A6 */ mflr r0
/* 80288BF0 00285B30 90 01 00 24 */ stw r0, 0x24(r1)
/* 80288BF4 00285B34 39 61 00 20 */ addi r11, r1, 0x20
/* 80288BF8 00285B38 48 0D 95 E5 */ bl _savegpr_29
/* 80288BFC 00285B3C 7C 7E 1B 78 */ mr r30, r3
/* 80288C00 00285B40 7C 9F 23 78 */ mr r31, r4
/* 80288C04 00285B44 3B A0 00 00 */ li r29, 0
lbl_80288C08:
/* 80288C08 00285B48 A0 1E 00 1C */ lhz r0, 0x1c(r30)
/* 80288C0C 00285B4C 54 00 04 21 */ rlwinm. r0, r0, 0, 0x10, 0x10
/* 80288C10 00285B50 41 82 00 60 */ beq lbl_80288C70
/* 80288C14 00285B54 80 1E 00 30 */ lwz r0, 0x30(r30)
/* 80288C18 00285B58 2C 00 00 04 */ cmpwi r0, 4
/* 80288C1C 00285B5C 41 82 00 24 */ beq lbl_80288C40
/* 80288C20 00285B60 40 80 00 14 */ bge lbl_80288C34
/* 80288C24 00285B64 2C 00 00 02 */ cmpwi r0, 2
/* 80288C28 00285B68 41 82 00 18 */ beq lbl_80288C40
/* 80288C2C 00285B6C 40 80 00 3C */ bge lbl_80288C68
/* 80288C30 00285B70 48 00 00 38 */ b lbl_80288C68
lbl_80288C34:
/* 80288C34 00285B74 2C 00 00 08 */ cmpwi r0, 8
/* 80288C38 00285B78 41 82 00 30 */ beq lbl_80288C68
/* 80288C3C 00285B7C 48 00 00 2C */ b lbl_80288C68
lbl_80288C40:
/* 80288C40 00285B80 38 00 00 08 */ li r0, 8
/* 80288C44 00285B84 90 1E 00 30 */ stw r0, 0x30(r30)
/* 80288C48 00285B88 88 1E 00 1E */ lbz r0, 0x1e(r30)
/* 80288C4C 00285B8C 28 00 00 00 */ cmplwi r0, 0
/* 80288C50 00285B90 41 82 00 18 */ beq lbl_80288C68
/* 80288C54 00285B94 7F C3 F3 78 */ mr r3, r30
/* 80288C58 00285B98 81 9E 00 08 */ lwz r12, 8(r30)
/* 80288C5C 00285B9C 81 8C 00 10 */ lwz r12, 0x10(r12)
/* 80288C60 00285BA0 7D 89 03 A6 */ mtctr r12
/* 80288C64 00285BA4 4E 80 04 21 */ bctrl
lbl_80288C68:
/* 80288C68 00285BA8 38 60 00 01 */ li r3, 1
/* 80288C6C 00285BAC 48 00 01 94 */ b lbl_80288E00
lbl_80288C70:
/* 80288C70 00285BB0 80 1E 00 30 */ lwz r0, 0x30(r30)
/* 80288C74 00285BB4 2C 00 00 08 */ cmpwi r0, 8
/* 80288C78 00285BB8 40 82 00 20 */ bne lbl_80288C98
/* 80288C7C 00285BBC 7F C3 F3 78 */ mr r3, r30
/* 80288C80 00285BC0 81 9E 00 08 */ lwz r12, 8(r30)
/* 80288C84 00285BC4 81 8C 00 0C */ lwz r12, 0xc(r12)
/* 80288C88 00285BC8 7D 89 03 A6 */ mtctr r12
/* 80288C8C 00285BCC 4E 80 04 21 */ bctrl
/* 80288C90 00285BD0 38 00 00 02 */ li r0, 2
/* 80288C94 00285BD4 90 1E 00 30 */ stw r0, 0x30(r30)
lbl_80288C98:
/* 80288C98 00285BD8 80 7E 00 14 */ lwz r3, 0x14(r30)
/* 80288C9C 00285BDC 28 03 00 00 */ cmplwi r3, 0
/* 80288CA0 00285BE0 41 82 00 10 */ beq lbl_80288CB0
/* 80288CA4 00285BE4 80 03 00 54 */ lwz r0, 0x54(r3)
/* 80288CA8 00285BE8 2C 00 00 00 */ cmpwi r0, 0
/* 80288CAC 00285BEC 41 81 00 10 */ bgt lbl_80288CBC
lbl_80288CB0:
/* 80288CB0 00285BF0 80 1E 00 20 */ lwz r0, 0x20(r30)
/* 80288CB4 00285BF4 2C 00 00 00 */ cmpwi r0, 0
/* 80288CB8 00285BF8 40 81 00 38 */ ble lbl_80288CF0
lbl_80288CBC:
/* 80288CBC 00285BFC 88 1E 00 1E */ lbz r0, 0x1e(r30)
/* 80288CC0 00285C00 28 00 00 00 */ cmplwi r0, 0
/* 80288CC4 00285C04 41 82 00 24 */ beq lbl_80288CE8
/* 80288CC8 00285C08 38 00 00 04 */ li r0, 4
/* 80288CCC 00285C0C 90 1E 00 30 */ stw r0, 0x30(r30)
/* 80288CD0 00285C10 7F C3 F3 78 */ mr r3, r30
/* 80288CD4 00285C14 7F E4 FB 78 */ mr r4, r31
/* 80288CD8 00285C18 81 9E 00 08 */ lwz r12, 8(r30)
/* 80288CDC 00285C1C 81 8C 00 18 */ lwz r12, 0x18(r12)
/* 80288CE0 00285C20 7D 89 03 A6 */ mtctr r12
/* 80288CE4 00285C24 4E 80 04 21 */ bctrl
lbl_80288CE8:
/* 80288CE8 00285C28 38 60 00 01 */ li r3, 1
/* 80288CEC 00285C2C 48 00 01 14 */ b lbl_80288E00
lbl_80288CF0:
/* 80288CF0 00285C30 80 1E 00 28 */ lwz r0, 0x28(r30)
/* 80288CF4 00285C34 90 1E 00 24 */ stw r0, 0x24(r30)
/* 80288CF8 00285C38 28 00 00 00 */ cmplwi r0, 0
/* 80288CFC 00285C3C 40 82 00 5C */ bne lbl_80288D58
/* 80288D00 00285C40 88 1E 00 1E */ lbz r0, 0x1e(r30)
/* 80288D04 00285C44 28 00 00 00 */ cmplwi r0, 0
/* 80288D08 00285C48 41 82 00 48 */ beq lbl_80288D50
/* 80288D0C 00285C4C 57 A0 06 3F */ clrlwi. r0, r29, 0x18
/* 80288D10 00285C50 40 82 00 1C */ bne lbl_80288D2C
/* 80288D14 00285C54 7F C3 F3 78 */ mr r3, r30
/* 80288D18 00285C58 38 80 00 00 */ li r4, 0
/* 80288D1C 00285C5C 81 9E 00 08 */ lwz r12, 8(r30)
/* 80288D20 00285C60 81 8C 00 18 */ lwz r12, 0x18(r12)
/* 80288D24 00285C64 7D 89 03 A6 */ mtctr r12
/* 80288D28 00285C68 4E 80 04 21 */ bctrl
lbl_80288D2C:
/* 80288D2C 00285C6C 38 00 00 00 */ li r0, 0
/* 80288D30 00285C70 98 1E 00 1E */ stb r0, 0x1e(r30)
/* 80288D34 00285C74 38 00 00 01 */ li r0, 1
/* 80288D38 00285C78 90 1E 00 30 */ stw r0, 0x30(r30)
/* 80288D3C 00285C7C 7F C3 F3 78 */ mr r3, r30
/* 80288D40 00285C80 81 9E 00 08 */ lwz r12, 8(r30)
/* 80288D44 00285C84 81 8C 00 10 */ lwz r12, 0x10(r12)
/* 80288D48 00285C88 7D 89 03 A6 */ mtctr r12
/* 80288D4C 00285C8C 4E 80 04 21 */ bctrl
lbl_80288D50:
/* 80288D50 00285C90 38 60 00 00 */ li r3, 0
/* 80288D54 00285C94 48 00 00 AC */ b lbl_80288E00
lbl_80288D58:
/* 80288D58 00285C98 88 1E 00 1E */ lbz r0, 0x1e(r30)
/* 80288D5C 00285C9C 28 00 00 00 */ cmplwi r0, 0
/* 80288D60 00285CA0 40 82 00 20 */ bne lbl_80288D80
/* 80288D64 00285CA4 38 00 00 01 */ li r0, 1
/* 80288D68 00285CA8 98 1E 00 1E */ stb r0, 0x1e(r30)
/* 80288D6C 00285CAC 7F C3 F3 78 */ mr r3, r30
/* 80288D70 00285CB0 81 9E 00 08 */ lwz r12, 8(r30)
/* 80288D74 00285CB4 81 8C 00 0C */ lwz r12, 0xc(r12)
/* 80288D78 00285CB8 7D 89 03 A6 */ mtctr r12
/* 80288D7C 00285CBC 4E 80 04 21 */ bctrl
lbl_80288D80:
/* 80288D80 00285CC0 38 00 00 02 */ li r0, 2
/* 80288D84 00285CC4 90 1E 00 30 */ stw r0, 0x30(r30)
/* 80288D88 00285CC8 80 1E 00 2C */ lwz r0, 0x2c(r30)
/* 80288D8C 00285CCC 28 00 00 00 */ cmplwi r0, 0
/* 80288D90 00285CD0 40 82 00 18 */ bne lbl_80288DA8
/* 80288D94 00285CD4 7F C3 F3 78 */ mr r3, r30
/* 80288D98 00285CD8 48 00 00 95 */ bl process_sequence___Q37JStudio3stb7TObjectFv
/* 80288D9C 00285CDC 80 1E 00 2C */ lwz r0, 0x2c(r30)
/* 80288DA0 00285CE0 28 00 00 00 */ cmplwi r0, 0
/* 80288DA4 00285CE4 41 82 FE 64 */ beq lbl_80288C08
lbl_80288DA8:
/* 80288DA8 00285CE8 3B A0 00 01 */ li r29, 1
/* 80288DAC 00285CEC 80 9E 00 2C */ lwz r4, 0x2c(r30)
/* 80288DB0 00285CF0 7C 1F 20 40 */ cmplw r31, r4
/* 80288DB4 00285CF4 41 80 00 28 */ blt lbl_80288DDC
/* 80288DB8 00285CF8 7F E4 F8 50 */ subf r31, r4, r31
/* 80288DBC 00285CFC 38 00 00 00 */ li r0, 0
/* 80288DC0 00285D00 90 1E 00 2C */ stw r0, 0x2c(r30)
/* 80288DC4 00285D04 7F C3 F3 78 */ mr r3, r30
/* 80288DC8 00285D08 81 9E 00 08 */ lwz r12, 8(r30)
/* 80288DCC 00285D0C 81 8C 00 18 */ lwz r12, 0x18(r12)
/* 80288DD0 00285D10 7D 89 03 A6 */ mtctr r12
/* 80288DD4 00285D14 4E 80 04 21 */ bctrl
/* 80288DD8 00285D18 4B FF FF 18 */ b lbl_80288CF0
lbl_80288DDC:
/* 80288DDC 00285D1C 7C 1F 20 50 */ subf r0, r31, r4
/* 80288DE0 00285D20 90 1E 00 2C */ stw r0, 0x2c(r30)
/* 80288DE4 00285D24 7F C3 F3 78 */ mr r3, r30
/* 80288DE8 00285D28 7F E4 FB 78 */ mr r4, r31
/* 80288DEC 00285D2C 81 9E 00 08 */ lwz r12, 8(r30)
/* 80288DF0 00285D30 81 8C 00 18 */ lwz r12, 0x18(r12)
/* 80288DF4 00285D34 7D 89 03 A6 */ mtctr r12
/* 80288DF8 00285D38 4E 80 04 21 */ bctrl
/* 80288DFC 00285D3C 38 60 00 01 */ li r3, 1
lbl_80288E00:
/* 80288E00 00285D40 39 61 00 20 */ addi r11, r1, 0x20
/* 80288E04 00285D44 48 0D 94 25 */ bl _restgpr_29
/* 80288E08 00285D48 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80288E0C 00285D4C 7C 08 03 A6 */ mtlr r0
/* 80288E10 00285D50 38 21 00 20 */ addi r1, r1, 0x20
/* 80288E14 00285D54 4E 80 00 20 */ blr
@@ -0,0 +1,68 @@
/* 802894B4 002863F4 94 21 FF A0 */ stwu r1, -0x60(r1)
/* 802894B8 002863F8 7C 08 02 A6 */ mflr r0
/* 802894BC 002863FC 90 01 00 64 */ stw r0, 0x64(r1)
/* 802894C0 00286400 39 61 00 60 */ addi r11, r1, 0x60
/* 802894C4 00286404 48 0D 8D 09 */ bl _savegpr_25
/* 802894C8 00286408 7C 7B 1B 78 */ mr r27, r3
/* 802894CC 0028640C 7C 9C 23 78 */ mr r28, r4
/* 802894D0 00286410 80 03 00 40 */ lwz r0, 0x40(r3)
/* 802894D4 00286414 90 03 00 54 */ stw r0, 0x54(r3)
/* 802894D8 00286418 38 7B 00 20 */ addi r3, r27, 0x20
/* 802894DC 0028641C 4B FF F7 0D */ bl forward__Q37JStudio3stb7TObjectFUl
/* 802894E0 00286420 7C 7F 1B 78 */ mr r31, r3
/* 802894E4 00286424 3B C0 00 0F */ li r30, 0xf
/* 802894E8 00286428 3B A0 00 00 */ li r29, 0
/* 802894EC 0028642C 38 1B 00 14 */ addi r0, r27, 0x14
/* 802894F0 00286430 90 01 00 24 */ stw r0, 0x24(r1)
/* 802894F4 00286434 90 01 00 20 */ stw r0, 0x20(r1)
/* 802894F8 00286438 90 01 00 34 */ stw r0, 0x34(r1)
/* 802894FC 0028643C 90 01 00 30 */ stw r0, 0x30(r1)
/* 80289500 00286440 80 7B 00 14 */ lwz r3, 0x14(r27)
/* 80289504 00286444 90 61 00 1C */ stw r3, 0x1c(r1)
/* 80289508 00286448 90 61 00 18 */ stw r3, 0x18(r1)
/* 8028950C 0028644C 90 61 00 2C */ stw r3, 0x2c(r1)
/* 80289510 00286450 90 61 00 28 */ stw r3, 0x28(r1)
/* 80289514 00286454 90 61 00 38 */ stw r3, 0x38(r1)
/* 80289518 00286458 90 01 00 3C */ stw r0, 0x3c(r1)
/* 8028951C 0028645C 48 00 00 48 */ b lbl_80289564
lbl_80289520:
/* 80289520 00286460 80 61 00 38 */ lwz r3, 0x38(r1)
/* 80289524 00286464 3B 23 FF F4 */ addi r25, r3, -12
/* 80289528 00286468 80 03 00 00 */ lwz r0, 0(r3)
/* 8028952C 0028646C 90 01 00 38 */ stw r0, 0x38(r1)
/* 80289530 00286470 3B 40 00 00 */ li r26, 0
/* 80289534 00286474 7F 23 CB 78 */ mr r3, r25
/* 80289538 00286478 7F 84 E3 78 */ mr r4, r28
/* 8028953C 0028647C 4B FF F6 AD */ bl forward__Q37JStudio3stb7TObjectFUl
/* 80289540 00286480 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 80289544 00286484 40 82 00 0C */ bne lbl_80289550
/* 80289548 00286488 57 E0 06 3F */ clrlwi. r0, r31, 0x18
/* 8028954C 0028648C 41 82 00 08 */ beq lbl_80289554
lbl_80289550:
/* 80289550 00286490 3B 40 00 01 */ li r26, 1
lbl_80289554:
/* 80289554 00286494 7F 5F D3 78 */ mr r31, r26
/* 80289558 00286498 80 19 00 30 */ lwz r0, 0x30(r25)
/* 8028955C 0028649C 7F DE 00 38 */ and r30, r30, r0
/* 80289560 002864A0 7F BD 03 78 */ or r29, r29, r0
lbl_80289564:
/* 80289564 002864A4 80 61 00 3C */ lwz r3, 0x3c(r1)
/* 80289568 002864A8 90 61 00 14 */ stw r3, 0x14(r1)
/* 8028956C 002864AC 80 01 00 38 */ lwz r0, 0x38(r1)
/* 80289570 002864B0 90 01 00 10 */ stw r0, 0x10(r1)
/* 80289574 002864B4 90 61 00 0C */ stw r3, 0xc(r1)
/* 80289578 002864B8 90 01 00 08 */ stw r0, 8(r1)
/* 8028957C 002864BC 7C 00 18 50 */ subf r0, r0, r3
/* 80289580 002864C0 7C 00 00 34 */ cntlzw r0, r0
/* 80289584 002864C4 54 00 DE 3F */ rlwinm. r0, r0, 0x1b, 0x18, 0x1f
/* 80289588 002864C8 41 82 FF 98 */ beq lbl_80289520
/* 8028958C 002864CC 57 A0 80 1E */ slwi r0, r29, 0x10
/* 80289590 002864D0 7F C0 03 78 */ or r0, r30, r0
/* 80289594 002864D4 90 1B 00 1C */ stw r0, 0x1c(r27)
/* 80289598 002864D8 7F E3 FB 78 */ mr r3, r31
/* 8028959C 002864DC 39 61 00 60 */ addi r11, r1, 0x60
/* 802895A0 002864E0 48 0D 8C 79 */ bl _restgpr_25
/* 802895A4 002864E4 80 01 00 64 */ lwz r0, 0x64(r1)
/* 802895A8 002864E8 7C 08 03 A6 */ mtlr r0
/* 802895AC 002864EC 38 21 00 60 */ addi r1, r1, 0x60
/* 802895B0 002864F0 4E 80 00 20 */ blr
@@ -0,0 +1,42 @@
/* 80289364 002862A4 94 21 FF B0 */ stwu r1, -0x50(r1)
/* 80289368 002862A8 7C 08 02 A6 */ mflr r0
/* 8028936C 002862AC 90 01 00 54 */ stw r0, 0x54(r1)
/* 80289370 002862B0 80 C3 00 14 */ lwz r6, 0x14(r3)
/* 80289374 002862B4 90 C1 00 1C */ stw r6, 0x1c(r1)
/* 80289378 002862B8 90 C1 00 18 */ stw r6, 0x18(r1)
/* 8028937C 002862BC 90 C1 00 3C */ stw r6, 0x3c(r1)
/* 80289380 002862C0 38 03 00 14 */ addi r0, r3, 0x14
/* 80289384 002862C4 90 01 00 14 */ stw r0, 0x14(r1)
/* 80289388 002862C8 90 01 00 10 */ stw r0, 0x10(r1)
/* 8028938C 002862CC 90 01 00 38 */ stw r0, 0x38(r1)
/* 80289390 002862D0 90 81 00 40 */ stw r4, 0x40(r1)
/* 80289394 002862D4 90 A1 00 44 */ stw r5, 0x44(r1)
/* 80289398 002862D8 90 01 00 28 */ stw r0, 0x28(r1)
/* 8028939C 002862DC 90 C1 00 2C */ stw r6, 0x2c(r1)
/* 802893A0 002862E0 38 61 00 30 */ addi r3, r1, 0x30
/* 802893A4 002862E4 38 81 00 2C */ addi r4, r1, 0x2c
/* 802893A8 002862E8 38 A1 00 28 */ addi r5, r1, 0x28
/* 802893AC 002862EC 38 C1 00 40 */ addi r6, r1, 0x40
/* 802893B0 002862F0 48 00 05 79 */ bl std_NS_find_if_X2_
/* 802893B4 002862F4 80 61 00 30 */ lwz r3, 0x30(r1)
/* 802893B8 002862F8 90 61 00 34 */ stw r3, 0x34(r1)
/* 802893BC 002862FC 80 01 00 38 */ lwz r0, 0x38(r1)
/* 802893C0 00286300 90 01 00 24 */ stw r0, 0x24(r1)
/* 802893C4 00286304 90 61 00 20 */ stw r3, 0x20(r1)
/* 802893C8 00286308 90 01 00 0C */ stw r0, 0xc(r1)
/* 802893CC 0028630C 90 61 00 08 */ stw r3, 8(r1)
/* 802893D0 00286310 7C 03 00 50 */ subf r0, r3, r0
/* 802893D4 00286314 7C 00 00 34 */ cntlzw r0, r0
/* 802893D8 00286318 54 00 DE 3E */ rlwinm r0, r0, 0x1b, 0x18, 0x1f
/* 802893DC 0028631C 7C 00 00 34 */ cntlzw r0, r0
/* 802893E0 00286320 54 00 DE 3F */ rlwinm. r0, r0, 0x1b, 0x18, 0x1f
/* 802893E4 00286324 41 82 00 0C */ beq lbl_802893F0
/* 802893E8 00286328 38 63 FF F4 */ addi r3, r3, -12
/* 802893EC 0028632C 48 00 00 08 */ b lbl_802893F4
lbl_802893F0:
/* 802893F0 00286330 38 60 00 00 */ li r3, 0
lbl_802893F4:
/* 802893F4 00286334 80 01 00 54 */ lwz r0, 0x54(r1)
/* 802893F8 00286338 7C 08 03 A6 */ mtlr r0
/* 802893FC 0028633C 38 21 00 50 */ addi r1, r1, 0x50
/* 80289400 00286340 4E 80 00 20 */ blr
@@ -0,0 +1,21 @@
/* 8028978C 002866CC 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80289790 002866D0 7C 08 02 A6 */ mflr r0
/* 80289794 002866D4 90 01 00 14 */ stw r0, 0x14(r1)
/* 80289798 002866D8 80 E4 00 00 */ lwz r7, 0(r4)
/* 8028979C 002866DC 90 E1 00 08 */ stw r7, 8(r1)
/* 802897A0 002866E0 80 07 00 00 */ lwz r0, 0(r7)
/* 802897A4 002866E4 7C 07 02 14 */ add r0, r7, r0
/* 802897A8 002866E8 90 04 00 00 */ stw r0, 0(r4)
/* 802897AC 002866EC 80 81 00 08 */ lwz r4, 8(r1)
/* 802897B0 002866F0 80 04 00 00 */ lwz r0, 0(r4)
/* 802897B4 002866F4 90 05 00 00 */ stw r0, 0(r5)
/* 802897B8 002866F8 38 81 00 08 */ addi r4, r1, 8
/* 802897BC 002866FC 7C C5 33 78 */ mr r5, r6
/* 802897C0 00286700 81 83 00 00 */ lwz r12, 0(r3)
/* 802897C4 00286704 81 8C 00 18 */ lwz r12, 0x18(r12)
/* 802897C8 00286708 7D 89 03 A6 */ mtctr r12
/* 802897CC 0028670C 4E 80 04 21 */ bctrl
/* 802897D0 00286710 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802897D4 00286714 7C 08 03 A6 */ mtlr r0
/* 802897D8 00286718 38 21 00 10 */ addi r1, r1, 0x10
/* 802897DC 0028671C 4E 80 00 20 */ blr
@@ -0,0 +1,56 @@
/* 802896C0 00286600 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802896C4 00286604 7C 08 02 A6 */ mflr r0
/* 802896C8 00286608 90 01 00 24 */ stw r0, 0x24(r1)
/* 802896CC 0028660C 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 802896D0 00286610 93 C1 00 18 */ stw r30, 0x18(r1)
/* 802896D4 00286614 7C 7E 1B 78 */ mr r30, r3
/* 802896D8 00286618 7C DF 33 78 */ mr r31, r6
/* 802896DC 0028661C 80 64 00 00 */ lwz r3, 0(r4)
/* 802896E0 00286620 90 61 00 08 */ stw r3, 8(r1)
/* 802896E4 00286624 38 03 00 20 */ addi r0, r3, 0x20
/* 802896E8 00286628 90 04 00 00 */ stw r0, 0(r4)
/* 802896EC 0028662C 80 61 00 08 */ lwz r3, 8(r1)
/* 802896F0 00286630 80 03 00 0C */ lwz r0, 0xc(r3)
/* 802896F4 00286634 90 05 00 00 */ stw r0, 0(r5)
/* 802896F8 00286638 80 61 00 08 */ lwz r3, 8(r1)
/* 802896FC 0028663C 38 82 BA D8 */ addi r4, r2, 0x804554D8 - 0x80459A00 /*SDA HACK; original: lbl_804554D8-_SDA2_BASE_*/
/* 80289700 00286640 38 A0 00 04 */ li r5, 4
/* 80289704 00286644 48 0D C9 89 */ bl func_8036608C
/* 80289708 00286648 2C 03 00 00 */ cmpwi r3, 0
/* 8028970C 0028664C 41 82 00 0C */ beq lbl_80289718
/* 80289710 00286650 38 60 00 00 */ li r3, 0
/* 80289714 00286654 48 00 00 60 */ b lbl_80289774
lbl_80289718:
/* 80289718 00286658 80 61 00 08 */ lwz r3, 8(r1)
/* 8028971C 0028665C A0 03 00 04 */ lhz r0, 4(r3)
/* 80289720 00286660 28 00 FE FF */ cmplwi r0, 0xfeff
/* 80289724 00286664 41 82 00 0C */ beq lbl_80289730
/* 80289728 00286668 38 60 00 00 */ li r3, 0
/* 8028972C 0028666C 48 00 00 48 */ b lbl_80289774
lbl_80289730:
/* 80289730 00286670 A0 03 00 06 */ lhz r0, 6(r3)
/* 80289734 00286674 28 00 00 01 */ cmplwi r0, 1
/* 80289738 00286678 40 80 00 0C */ bge lbl_80289744
/* 8028973C 0028667C 38 60 00 00 */ li r3, 0
/* 80289740 00286680 48 00 00 34 */ b lbl_80289774
lbl_80289744:
/* 80289744 00286684 54 00 04 3E */ clrlwi r0, r0, 0x10
/* 80289748 00286688 28 00 00 03 */ cmplwi r0, 3
/* 8028974C 0028668C 40 81 00 0C */ ble lbl_80289758
/* 80289750 00286690 38 60 00 00 */ li r3, 0
/* 80289754 00286694 48 00 00 20 */ b lbl_80289774
lbl_80289758:
/* 80289758 00286698 7F C3 F3 78 */ mr r3, r30
/* 8028975C 0028669C 38 81 00 08 */ addi r4, r1, 8
/* 80289760 002866A0 7F E5 FB 78 */ mr r5, r31
/* 80289764 002866A4 81 9E 00 00 */ lwz r12, 0(r30)
/* 80289768 002866A8 81 8C 00 14 */ lwz r12, 0x14(r12)
/* 8028976C 002866AC 7D 89 03 A6 */ mtctr r12
/* 80289770 002866B0 4E 80 04 21 */ bctrl
lbl_80289774:
/* 80289774 002866B4 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 80289778 002866B8 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 8028977C 002866BC 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80289780 002866C0 7C 08 03 A6 */ mtlr r0
/* 80289784 002866C4 38 21 00 20 */ addi r1, r1, 0x20
/* 80289788 002866C8 4E 80 00 20 */ blr
@@ -0,0 +1,66 @@
/* 80288F80 00285EC0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80288F84 00285EC4 7C 08 02 A6 */ mflr r0
/* 80288F88 00285EC8 90 01 00 14 */ stw r0, 0x14(r1)
/* 80288F8C 00285ECC 7C A8 2B 78 */ mr r8, r5
/* 80288F90 00285ED0 7C C7 33 78 */ mr r7, r6
/* 80288F94 00285ED4 2C 04 00 80 */ cmpwi r4, 0x80
/* 80288F98 00285ED8 41 82 00 70 */ beq lbl_80289008
/* 80288F9C 00285EDC 40 80 00 28 */ bge lbl_80288FC4
/* 80288FA0 00285EE0 2C 04 00 02 */ cmpwi r4, 2
/* 80288FA4 00285EE4 41 82 00 44 */ beq lbl_80288FE8
/* 80288FA8 00285EE8 40 80 00 10 */ bge lbl_80288FB8
/* 80288FAC 00285EEC 2C 04 00 01 */ cmpwi r4, 1
/* 80288FB0 00285EF0 40 80 00 24 */ bge lbl_80288FD4
/* 80288FB4 00285EF4 48 00 00 A4 */ b lbl_80289058
lbl_80288FB8:
/* 80288FB8 00285EF8 2C 04 00 04 */ cmpwi r4, 4
/* 80288FBC 00285EFC 40 80 00 9C */ bge lbl_80289058
/* 80288FC0 00285F00 48 00 00 34 */ b lbl_80288FF4
lbl_80288FC4:
/* 80288FC4 00285F04 2C 04 00 82 */ cmpwi r4, 0x82
/* 80288FC8 00285F08 41 82 00 90 */ beq lbl_80289058
/* 80288FCC 00285F0C 40 80 00 8C */ bge lbl_80289058
/* 80288FD0 00285F10 48 00 00 58 */ b lbl_80289028
lbl_80288FD4:
/* 80288FD4 00285F14 80 08 00 00 */ lwz r0, 0(r8)
/* 80288FD8 00285F18 54 04 86 3E */ rlwinm r4, r0, 0x10, 0x18, 0x1f
/* 80288FDC 00285F1C 54 05 04 3E */ clrlwi r5, r0, 0x10
/* 80288FE0 00285F20 4B FF FB 99 */ bl setFlag_operation__Q37JStudio3stb7TObjectFUci
/* 80288FE4 00285F24 48 00 00 74 */ b lbl_80289058
lbl_80288FE8:
/* 80288FE8 00285F28 80 08 00 00 */ lwz r0, 0(r8)
/* 80288FEC 00285F2C 90 03 00 2C */ stw r0, 0x2c(r3)
/* 80288FF0 00285F30 48 00 00 68 */ b lbl_80289058
lbl_80288FF4:
/* 80288FF4 00285F34 80 83 00 24 */ lwz r4, 0x24(r3)
/* 80288FF8 00285F38 80 08 00 00 */ lwz r0, 0(r8)
/* 80288FFC 00285F3C 7C 04 02 14 */ add r0, r4, r0
/* 80289000 00285F40 90 03 00 28 */ stw r0, 0x28(r3)
/* 80289004 00285F44 48 00 00 54 */ b lbl_80289058
lbl_80289008:
/* 80289008 00285F48 38 80 00 00 */ li r4, 0
/* 8028900C 00285F4C 38 A0 00 00 */ li r5, 0
/* 80289010 00285F50 7D 06 43 78 */ mr r6, r8
/* 80289014 00285F54 81 83 00 08 */ lwz r12, 8(r3)
/* 80289018 00285F58 81 8C 00 1C */ lwz r12, 0x1c(r12)
/* 8028901C 00285F5C 7D 89 03 A6 */ mtctr r12
/* 80289020 00285F60 4E 80 04 21 */ bctrl
/* 80289024 00285F64 48 00 00 34 */ b lbl_80289058
lbl_80289028:
/* 80289028 00285F68 A0 A8 00 02 */ lhz r5, 2(r8)
/* 8028902C 00285F6C 38 05 00 03 */ addi r0, r5, 3
/* 80289030 00285F70 54 04 00 3A */ rlwinm r4, r0, 0, 0, 0x1d
/* 80289034 00285F74 38 C4 00 04 */ addi r6, r4, 4
/* 80289038 00285F78 7C C8 32 14 */ add r6, r8, r6
/* 8028903C 00285F7C 38 88 00 04 */ addi r4, r8, 4
/* 80289040 00285F80 7C 08 30 50 */ subf r0, r8, r6
/* 80289044 00285F84 7C E0 38 50 */ subf r7, r0, r7
/* 80289048 00285F88 81 83 00 08 */ lwz r12, 8(r3)
/* 8028904C 00285F8C 81 8C 00 1C */ lwz r12, 0x1c(r12)
/* 80289050 00285F90 7D 89 03 A6 */ mtctr r12
/* 80289054 00285F94 4E 80 04 21 */ bctrl
lbl_80289058:
/* 80289058 00285F98 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8028905C 00285F9C 7C 08 03 A6 */ mtlr r0
/* 80289060 00285FA0 38 21 00 10 */ addi r1, r1, 0x10
/* 80289064 00285FA4 4E 80 00 20 */ blr
@@ -0,0 +1,98 @@
/* 80288E2C 00285D6C 94 21 FF C0 */ stwu r1, -0x40(r1)
/* 80288E30 00285D70 7C 08 02 A6 */ mflr r0
/* 80288E34 00285D74 90 01 00 44 */ stw r0, 0x44(r1)
/* 80288E38 00285D78 93 E1 00 3C */ stw r31, 0x3c(r1)
/* 80288E3C 00285D7C 93 C1 00 38 */ stw r30, 0x38(r1)
/* 80288E40 00285D80 7C 7F 1B 78 */ mr r31, r3
/* 80288E44 00285D84 80 03 00 24 */ lwz r0, 0x24(r3)
/* 80288E48 00285D88 90 01 00 0C */ stw r0, 0xc(r1)
/* 80288E4C 00285D8C 38 61 00 0C */ addi r3, r1, 0xc
/* 80288E50 00285D90 38 81 00 20 */ addi r4, r1, 0x20
/* 80288E54 00285D94 48 00 0B 69 */ bl JStudio_NS_stb_NS_data_NS_TParse_TSequence_NS_getData
/* 80288E58 00285D98 88 01 00 20 */ lbz r0, 0x20(r1)
/* 80288E5C 00285D9C 80 A1 00 24 */ lwz r5, 0x24(r1)
/* 80288E60 00285DA0 80 61 00 28 */ lwz r3, 0x28(r1)
/* 80288E64 00285DA4 83 C1 00 2C */ lwz r30, 0x2c(r1)
/* 80288E68 00285DA8 93 DF 00 28 */ stw r30, 0x28(r31)
/* 80288E6C 00285DAC 2C 00 00 03 */ cmpwi r0, 3
/* 80288E70 00285DB0 41 82 00 4C */ beq lbl_80288EBC
/* 80288E74 00285DB4 40 80 00 14 */ bge lbl_80288E88
/* 80288E78 00285DB8 2C 00 00 01 */ cmpwi r0, 1
/* 80288E7C 00285DBC 41 82 00 24 */ beq lbl_80288EA0
/* 80288E80 00285DC0 40 80 00 34 */ bge lbl_80288EB4
/* 80288E84 00285DC4 48 00 00 E4 */ b lbl_80288F68
lbl_80288E88:
/* 80288E88 00285DC8 2C 00 00 80 */ cmpwi r0, 0x80
/* 80288E8C 00285DCC 41 82 00 78 */ beq lbl_80288F04
/* 80288E90 00285DD0 40 80 00 D8 */ bge lbl_80288F68
/* 80288E94 00285DD4 2C 00 00 05 */ cmpwi r0, 5
/* 80288E98 00285DD8 40 80 00 D0 */ bge lbl_80288F68
/* 80288E9C 00285DDC 48 00 00 44 */ b lbl_80288EE0
lbl_80288EA0:
/* 80288EA0 00285DE0 7F E3 FB 78 */ mr r3, r31
/* 80288EA4 00285DE4 54 A4 86 3E */ rlwinm r4, r5, 0x10, 0x18, 0x1f
/* 80288EA8 00285DE8 54 A5 04 3E */ clrlwi r5, r5, 0x10
/* 80288EAC 00285DEC 4B FF FC CD */ bl setFlag_operation__Q37JStudio3stb7TObjectFUci
/* 80288EB0 00285DF0 48 00 00 B8 */ b lbl_80288F68
lbl_80288EB4:
/* 80288EB4 00285DF4 90 BF 00 2C */ stw r5, 0x2c(r31)
/* 80288EB8 00285DF8 48 00 00 B0 */ b lbl_80288F68
lbl_80288EBC:
/* 80288EBC 00285DFC 7C A3 2B 78 */ mr r3, r5
/* 80288EC0 00285E00 54 A0 02 11 */ rlwinm. r0, r5, 0, 8, 8
/* 80288EC4 00285E04 41 82 00 0C */ beq lbl_80288ED0
/* 80288EC8 00285E08 80 02 BA D0 */ lwz r0, lbl_804554D0-_SDA2_BASE_(r2)
/* 80288ECC 00285E0C 7C A3 03 78 */ or r3, r5, r0
lbl_80288ED0:
/* 80288ED0 00285E10 80 1F 00 24 */ lwz r0, 0x24(r31)
/* 80288ED4 00285E14 7C 00 1A 14 */ add r0, r0, r3
/* 80288ED8 00285E18 90 1F 00 28 */ stw r0, 0x28(r31)
/* 80288EDC 00285E1C 48 00 00 8C */ b lbl_80288F68
lbl_80288EE0:
/* 80288EE0 00285E20 7C A3 2B 78 */ mr r3, r5
/* 80288EE4 00285E24 54 A0 02 11 */ rlwinm. r0, r5, 0, 8, 8
/* 80288EE8 00285E28 41 82 00 0C */ beq lbl_80288EF4
/* 80288EEC 00285E2C 80 02 BA D0 */ lwz r0, lbl_804554D0-_SDA2_BASE_(r2)
/* 80288EF0 00285E30 7C A3 03 78 */ or r3, r5, r0
lbl_80288EF4:
/* 80288EF4 00285E34 80 1F 00 20 */ lwz r0, 0x20(r31)
/* 80288EF8 00285E38 7C 00 1A 14 */ add r0, r0, r3
/* 80288EFC 00285E3C 90 1F 00 20 */ stw r0, 0x20(r31)
/* 80288F00 00285E40 48 00 00 68 */ b lbl_80288F68
lbl_80288F04:
/* 80288F04 00285E44 38 00 00 00 */ li r0, 0
/* 80288F08 00285E48 90 01 00 08 */ stw r0, 8(r1)
/* 80288F0C 00285E4C 48 00 00 54 */ b lbl_80288F60
lbl_80288F10:
/* 80288F10 00285E50 90 61 00 08 */ stw r3, 8(r1)
/* 80288F14 00285E54 38 61 00 08 */ addi r3, r1, 8
/* 80288F18 00285E58 38 81 00 10 */ addi r4, r1, 0x10
/* 80288F1C 00285E5C 48 00 0A ED */ bl JStudio_NS_stb_NS_data_NS_TParse_TParagraph_NS_getData
/* 80288F20 00285E60 80 81 00 10 */ lwz r4, 0x10(r1)
/* 80288F24 00285E64 28 04 00 FF */ cmplwi r4, 0xff
/* 80288F28 00285E68 41 81 00 18 */ bgt lbl_80288F40
/* 80288F2C 00285E6C 7F E3 FB 78 */ mr r3, r31
/* 80288F30 00285E70 80 A1 00 18 */ lwz r5, 0x18(r1)
/* 80288F34 00285E74 80 C1 00 14 */ lwz r6, 0x14(r1)
/* 80288F38 00285E78 48 00 00 49 */ bl process_paragraph_reserved___Q37JStudio3stb7TObjectFUlPCvUl
/* 80288F3C 00285E7C 48 00 00 20 */ b lbl_80288F5C
lbl_80288F40:
/* 80288F40 00285E80 7F E3 FB 78 */ mr r3, r31
/* 80288F44 00285E84 80 A1 00 18 */ lwz r5, 0x18(r1)
/* 80288F48 00285E88 80 C1 00 14 */ lwz r6, 0x14(r1)
/* 80288F4C 00285E8C 81 9F 00 08 */ lwz r12, 8(r31)
/* 80288F50 00285E90 81 8C 00 14 */ lwz r12, 0x14(r12)
/* 80288F54 00285E94 7D 89 03 A6 */ mtctr r12
/* 80288F58 00285E98 4E 80 04 21 */ bctrl
lbl_80288F5C:
/* 80288F5C 00285E9C 80 61 00 1C */ lwz r3, 0x1c(r1)
lbl_80288F60:
/* 80288F60 00285EA0 7C 03 F0 40 */ cmplw r3, r30
/* 80288F64 00285EA4 41 80 FF AC */ blt lbl_80288F10
lbl_80288F68:
/* 80288F68 00285EA8 83 E1 00 3C */ lwz r31, 0x3c(r1)
/* 80288F6C 00285EAC 83 C1 00 38 */ lwz r30, 0x38(r1)
/* 80288F70 00285EB0 80 01 00 44 */ lwz r0, 0x44(r1)
/* 80288F74 00285EB4 7C 08 03 A6 */ mtlr r0
/* 80288F78 00285EB8 38 21 00 40 */ addi r1, r1, 0x40
/* 80288F7C 00285EBC 4E 80 00 20 */ blr
@@ -0,0 +1,14 @@
/* 80289278 002861B8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8028927C 002861BC 7C 08 02 A6 */ mflr r0
/* 80289280 002861C0 90 01 00 14 */ stw r0, 0x14(r1)
/* 80289284 002861C4 7C 66 1B 78 */ mr r6, r3
/* 80289288 002861C8 38 00 00 00 */ li r0, 0
/* 8028928C 002861CC 90 04 00 14 */ stw r0, 0x14(r4)
/* 80289290 002861D0 38 A4 00 0C */ addi r5, r4, 0xc
/* 80289294 002861D4 38 61 00 08 */ addi r3, r1, 8
/* 80289298 002861D8 38 86 00 10 */ addi r4, r6, 0x10
/* 8028929C 002861DC 48 05 39 39 */ bl JGadget_NS_TNodeLinkList_NS_Erase
/* 802892A0 002861E0 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802892A4 002861E4 7C 08 03 A6 */ mtlr r0
/* 802892A8 002861E8 38 21 00 10 */ addi r1, r1, 0x10
/* 802892AC 002861EC 4E 80 00 20 */ blr
@@ -0,0 +1,46 @@
/* 80289404 00286344 94 21 FF B0 */ stwu r1, -0x50(r1)
/* 80289408 00286348 7C 08 02 A6 */ mflr r0
/* 8028940C 0028634C 90 01 00 54 */ stw r0, 0x54(r1)
/* 80289410 00286350 93 E1 00 4C */ stw r31, 0x4c(r1)
/* 80289414 00286354 7C 7F 1B 78 */ mr r31, r3
/* 80289418 00286358 38 00 00 00 */ li r0, 0
/* 8028941C 0028635C 90 03 00 1C */ stw r0, 0x1c(r3)
/* 80289420 00286360 38 7F 00 20 */ addi r3, r31, 0x20
/* 80289424 00286364 38 80 00 00 */ li r4, 0
/* 80289428 00286368 4B FF F7 A9 */ bl reset__Q37JStudio3stb7TObjectFPCv
/* 8028942C 0028636C 38 1F 00 14 */ addi r0, r31, 0x14
/* 80289430 00286370 90 01 00 24 */ stw r0, 0x24(r1)
/* 80289434 00286374 90 01 00 20 */ stw r0, 0x20(r1)
/* 80289438 00286378 90 01 00 34 */ stw r0, 0x34(r1)
/* 8028943C 0028637C 90 01 00 30 */ stw r0, 0x30(r1)
/* 80289440 00286380 80 7F 00 14 */ lwz r3, 0x14(r31)
/* 80289444 00286384 90 61 00 1C */ stw r3, 0x1c(r1)
/* 80289448 00286388 90 61 00 18 */ stw r3, 0x18(r1)
/* 8028944C 0028638C 90 61 00 2C */ stw r3, 0x2c(r1)
/* 80289450 00286390 90 61 00 28 */ stw r3, 0x28(r1)
/* 80289454 00286394 90 61 00 38 */ stw r3, 0x38(r1)
/* 80289458 00286398 90 01 00 3C */ stw r0, 0x3c(r1)
/* 8028945C 0028639C 48 00 00 1C */ b lbl_80289478
lbl_80289460:
/* 80289460 002863A0 80 81 00 38 */ lwz r4, 0x38(r1)
/* 80289464 002863A4 38 64 FF F4 */ addi r3, r4, -12
/* 80289468 002863A8 80 04 00 00 */ lwz r0, 0(r4)
/* 8028946C 002863AC 90 01 00 38 */ stw r0, 0x38(r1)
/* 80289470 002863B0 38 80 00 00 */ li r4, 0
/* 80289474 002863B4 4B FF F7 5D */ bl reset__Q37JStudio3stb7TObjectFPCv
lbl_80289478:
/* 80289478 002863B8 80 61 00 3C */ lwz r3, 0x3c(r1)
/* 8028947C 002863BC 90 61 00 14 */ stw r3, 0x14(r1)
/* 80289480 002863C0 80 01 00 38 */ lwz r0, 0x38(r1)
/* 80289484 002863C4 90 01 00 10 */ stw r0, 0x10(r1)
/* 80289488 002863C8 90 61 00 0C */ stw r3, 0xc(r1)
/* 8028948C 002863CC 90 01 00 08 */ stw r0, 8(r1)
/* 80289490 002863D0 7C 00 18 50 */ subf r0, r0, r3
/* 80289494 002863D4 7C 00 00 34 */ cntlzw r0, r0
/* 80289498 002863D8 54 00 DE 3F */ rlwinm. r0, r0, 0x1b, 0x18, 0x1f
/* 8028949C 002863DC 41 82 FF C4 */ beq lbl_80289460
/* 802894A0 002863E0 83 E1 00 4C */ lwz r31, 0x4c(r1)
/* 802894A4 002863E4 80 01 00 54 */ lwz r0, 0x54(r1)
/* 802894A8 002863E8 7C 08 03 A6 */ mtlr r0
/* 802894AC 002863EC 38 21 00 50 */ addi r1, r1, 0x50
/* 802894B0 002863F0 4E 80 00 20 */ blr
@@ -0,0 +1,40 @@
/* 80289928 00286868 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 8028992C 0028686C 7C 08 02 A6 */ mflr r0
/* 80289930 00286870 90 01 00 34 */ stw r0, 0x34(r1)
/* 80289934 00286874 39 61 00 30 */ addi r11, r1, 0x30
/* 80289938 00286878 48 0D 88 A1 */ bl _savegpr_28
/* 8028993C 0028687C 7C 7C 1B 78 */ mr r28, r3
/* 80289940 00286880 7C 9D 23 78 */ mr r29, r4
/* 80289944 00286884 7C BE 2B 78 */ mr r30, r5
/* 80289948 00286888 7C DF 33 78 */ mr r31, r6
/* 8028994C 0028688C 48 00 00 10 */ b lbl_8028995C
lbl_80289950:
/* 80289950 00286890 80 7D 00 00 */ lwz r3, 0(r29)
/* 80289954 00286894 80 03 00 00 */ lwz r0, 0(r3)
/* 80289958 00286898 90 1D 00 00 */ stw r0, 0(r29)
lbl_8028995C:
/* 8028995C 0028689C 80 7E 00 00 */ lwz r3, 0(r30)
/* 80289960 002868A0 90 61 00 14 */ stw r3, 0x14(r1)
/* 80289964 002868A4 80 1D 00 00 */ lwz r0, 0(r29)
/* 80289968 002868A8 90 01 00 10 */ stw r0, 0x10(r1)
/* 8028996C 002868AC 90 61 00 0C */ stw r3, 0xc(r1)
/* 80289970 002868B0 90 01 00 08 */ stw r0, 8(r1)
/* 80289974 002868B4 7C 00 18 50 */ subf r0, r0, r3
/* 80289978 002868B8 7C 00 00 34 */ cntlzw r0, r0
/* 8028997C 002868BC 54 00 DE 3F */ rlwinm. r0, r0, 0x1b, 0x18, 0x1f
/* 80289980 002868C0 40 82 00 1C */ bne lbl_8028999C
/* 80289984 002868C4 80 7D 00 00 */ lwz r3, 0(r29)
/* 80289988 002868C8 38 63 FF F4 */ addi r3, r3, -12
/* 8028998C 002868CC 7F E4 FB 78 */ mr r4, r31
/* 80289990 002868D0 4B FF EF F9 */ bl JStudio_NS_object_NS_TIDData_NS_isEqual
/* 80289994 002868D4 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 80289998 002868D8 41 82 FF B8 */ beq lbl_80289950
lbl_8028999C:
/* 8028999C 002868DC 80 1D 00 00 */ lwz r0, 0(r29)
/* 802899A0 002868E0 90 1C 00 00 */ stw r0, 0(r28)
/* 802899A4 002868E4 39 61 00 30 */ addi r11, r1, 0x30
/* 802899A8 002868E8 48 0D 88 7D */ bl _restgpr_28
/* 802899AC 002868EC 80 01 00 34 */ lwz r0, 0x34(r1)
/* 802899B0 002868F0 7C 08 03 A6 */ mtlr r0
/* 802899B4 002868F4 38 21 00 30 */ addi r1, r1, 0x30
/* 802899B8 002868F8 4E 80 00 20 */ blr
+247
View File
@@ -0,0 +1,247 @@
#ifndef JSYSTEM_OBJECTID_H
#define JSYSTEM_OBJECTID_H
#include "JSystem/JGadget/binary.h"
#include "JSystem/JGadget/linklist.h"
#include "global.h"
using namespace JGadget::binary;
namespace JStudio {
namespace stb {
class TControl;
static const int STATUS_STILL = 0;
static const int STATUS_UNK1 = 1;
static const int STATUS_WAIT = 2;
static const int STATUS_SUSPEND = 4;
static const int STATUS_INACTIVE = 8;
namespace data {
static const int BLOCK_SOUND = 'JSND';
static const int BLOCK_ACTOR = 'JACT';
static const int BLOCK_AMBIENTLIGHT = 'JABL';
static const int BLOCK_CAMERA = 'JCMR';
static const int BLOCK_FOG = 'JFOG';
static const int BLOCK_LIGHT = 'JLIT';
static const int BLOCK_MESSAGE = 'JMSG';
static const int BLOCK_PARTICLE = 'JPTC';
static const int BLOCK_NONE = -1;
struct THeader {
struct Target {
/* 0x00 */ char name[8]; // "jstudio"
/* 0x08 */ u16 _8[3];
/* 0x0e */ u16 target_version; // 0-1 = obselete, 2-7 = OK
};
/* 0x00 */ char signature[4];
/* 0x04 */ u16 byte_order;
/* 0x06 */ u16 version;
/* 0x08 */ u32 _8;
/* 0x0c */ u32 block_number;
/* 0x10 */ Target target;
/* 0x20 */ u8 content;
};
struct TBlock {
/* 0x0 */ u32 size;
/* 0x4 */ u32 type; // actually a char[4] - JMSG, JSND, JACT, ...
};
struct TBlock_object : TBlock {
/* 0x8 */ u16 flag;
/* 0xa */ u16 id_size;
/* 0xc */ u8 id[0]; // unique identifier
///* ??? */ u8 content[0];
};
// Parses a THeader
struct TParse_THeader : TParseData_aligned<4> {
TParse_THeader(const void* p) : TParseData_aligned<4>(p) {}
// inlines
const THeader* get() const { return (THeader*)getRaw(); }
const void* getContent() const { return &((THeader*)getRaw())->content; }
const char* get_signature() const { return get()->signature; }
u16 get_byteOrder() const { return get()->byte_order; }
u16 get_version() const { return get()->version; }
u32 get_blockNumber() const { return get()->block_number; }
};
struct TParse_TBlock : public TParseData_aligned<4> {
TParse_TBlock(const void* content) : TParseData_aligned<4>(content) {}
const TBlock* get() const { return (TBlock*)getRaw(); }
u32 get_size() const { return get()->size; }
u32 get_type() const { return get()->type; }
};
// Parses a TObject ("demo object")
struct TParse_TBlock_object : public TParse_TBlock {
TParse_TBlock_object(const void* content) : TParse_TBlock(content) {}
const TBlock_object* get() const { return (TBlock_object*)getRaw(); }
const void* getContent() const { // id is arbitrary size
return ((TBlock_object*)getRaw())->id + align_roundUp(get_IDSize(), 4);
}
u16 get_flag() const { return get()->flag; }
u16 get_IDSize() const { return get()->id_size; }
const void* get_ID() const { return get()->id; }
};
struct TParse_TParagraph_dataID : public TParseData_aligned<4> {
TParse_TParagraph_dataID(const void* pContent) : TParseData_aligned<4>(pContent) {}
};
} // namespace data
// Delegates handling of STB file blocks
class TParse : public TParse_header_block {
public:
TParse(TControl* control);
virtual ~TParse();
// virtuals
virtual int parseHeader_next(const void** ppData_inout, u32* puBlock_out, u32 arg3);
virtual int parseBlock_next(const void** ppData_inout, u32* puData_out, u32 arg3);
virtual int parseHeader(const data::TParse_THeader& header, u32 arg2);
virtual bool parseBlock_block(const data::TParse_TBlock& referBlock, u32 arg2);
virtual bool parseBlock_object(const data::TParse_TBlock_object& referObject, u32 arg2);
// inlines
TControl* getControl() const { return pControl; }
private:
TControl* pControl;
};
struct TIDData {
TIDData(const void* arg1, u32 arg2) : _0(arg1), _4(arg2) {}
const void* _0;
u32 _4;
};
struct TObject_ID : public TIDData {
TObject_ID(const void* arg1, u32 arg2) : TIDData(arg1, arg2) {}
};
class TObject : public TObject_ID {
public:
TObject(u32 arg1, const void* arg2, u32 arg3);
explicit TObject(const data::TParse_TBlock_object& object);
virtual ~TObject();
// virtuals
virtual void do_begin();
virtual void do_end();
virtual void do_paragraph(u32 arg1, const void* arg2, u32 arg3);
virtual void do_wait(u32 arg1);
virtual void do_data(const void* arg1, u32 arg2, const void* arg3, u32 arg4);
void on_begin() { do_begin(); }
void on_end() { do_end(); }
void on_paragraph(u32 arg1, const void* arg2, u32 arg3) { do_paragraph(arg1, arg2, arg3); }
void on_wait(u32 arg1) { do_wait(arg1); }
void on_data(const void* arg1, u32 arg2, const void* arg3, u32 arg4) {
do_data(arg1, arg2, arg3, arg4);
}
// member functions
void setFlag_operation(u8 op, int val);
void reset(const void* arg1);
int forward(u32 arg1);
void process_sequence_();
void process_paragraph_reserved_(u32 arg1, const void* pContent, u32 arg3);
// inlines
TControl* getControl() const { return pControl; }
void setControl(TControl* control) { pControl = control; }
int getSuspend() const { return _20; }
bool isSuspended() const { return getSuspend() == 0; }
const void* getSequence() const { return _24; }
void setSequence_(const void* arg1) { _24 = arg1; }
const void* getSequence_offset(s32 i_no) const { return &((u32*)getSequence())[i_no]; }
const void* getSequence_next() const { return _28; }
void setSequence_next(const void* seq) { _24 = seq; }
u32 getWait() const { return u32Wait_; }
void setWait(u32 wait) { u32Wait_ = wait; }
u32 getStatus() const { return mStatus; }
void setStatus_(u32 status) { mStatus = status; }
private:
/* 0x10 */ JGadget::TLinkListNode mNode;
/* 0x14 */ TControl* pControl;
/* 0x18 */ u32 _18;
/* 0x1c */ u16 mFlag;
/* 0x1e */ u8 bSequence_;
/* 0x20 */ u32 _20; // "second per frame"?
/* 0x24 */ const void* _24;
/* 0x28 */ const void* _28;
/* 0x2c */ u32 u32Wait_;
/* 0x30 */ u32 mStatus;
};
// Creates and deletes TObjects from parsed input
class TFactory {
public:
TFactory();
virtual ~TFactory();
virtual TObject* create(const data::TParse_TBlock_object& p);
virtual void destroy(TObject* p);
};
class TObject_control : public TObject {
public:
TObject_control(const void* arg1, u32 arg2);
~TObject_control() {}
};
// Manages TObjects
class TControl {
public:
TControl();
virtual ~TControl();
// member functions
TObject* getObject(const void* arg1, u32 arg2);
void appendObject(TObject* p);
void removeObject(TObject* p);
void destroyObject(TObject* p);
void destroyObject_all();
void reset();
void forward(u32 arg1);
// inlines
void setStatus_(u32 status) { mStatus = status; }
void resetStatus_() { setStatus_(0); }
bool isSuspended() const { return _54 == 0; }
TFactory* getFactory() const { return pFactory; }
TObject_control& referObject_control() { return mObject_control; }
private:
/* 0x04 */ u32 _4;
/* 0x08 */ u32 _8;
/* 0x0c */ TFactory* pFactory;
/* 0x10 */ JGadget::TLinkList<TObject, 0, 2> mObjectContainer;
/* 0x1c */ u32 mStatus;
/* 0x20 */ TObject_control mObject_control;
/* 0x54 */ u32 _54; // "second per frame"?
};
} // namespace stb
} // namespace JStudio
#endif
+1 -1
View File
@@ -4558,7 +4558,7 @@ void dKyr_shstar_init(void);
void HOUSI_EFF_NS_dtor(void);
void dKyr_mud_draw(void);
void dKy_get_dayofweek(void);
void func_8036608C(void);
int func_8036608C(const void*, const void*, u32);
void dKyr_snow_move(void);
void func_8005703C(void);
void dComIfG_getStageRes(void);
+12
View File
@@ -758,6 +758,18 @@ SECTIONS {
"__dt__7JKRFileFv" = 0x802D7B90;
}
FORCEACTIVE {
parseBlock_object__Q37JStudio3stb6TParseFRCQ47JStudio3stb4data20TParse_TBlock_objectUl
parseHeader__Q37JStudio3stb6TParseFRCQ47JStudio3stb4data14TParse_THeaderUl
parseBlock_next__Q37JStudio3stb6TParseFPPCvPUlUl
parseHeader_next__Q37JStudio3stb6TParseFPPCvPUlUl
destroy__Q37JStudio3stb8TFactoryFPQ37JStudio3stb7TObject
create__Q37JStudio3stb8TFactoryFRCQ47JStudio3stb4data20TParse_TBlock_object
__dt__Q37JStudio3stb15TObject_controlFv
do_begin__Q37JStudio3stb7TObjectFv
do_end__Q37JStudio3stb7TObjectFv
do_paragraph__Q37JStudio3stb7TObjectFUlPCvUl
do_wait__Q37JStudio3stb7TObjectFUl
do_data__Q37JStudio3stb7TObjectFPCvUlPCvUl
dLib_checkActorInRectangle__FP10fopAc_ac_cP10fopAc_ac_cPC4cXyzPC4cXyz
getValueStick__10CSTControlFv
getAngleStick__10CSTControlFv
+7 -1
View File
@@ -1 +1,7 @@
// ok
#include "JSystem/JGadget/linklist.h"
namespace JGadget {
TNodeLinkList::~TNodeLinkList() {}
} // namespace JGadget
+350 -1
View File
@@ -1 +1,350 @@
// ok
#include "JSystem/JStudio/stb.h"
extern "C" {
extern void process_sequence___Q37JStudio3stb7TObjectFv();
extern void process_paragraph_reserved___Q37JStudio3stb7TObjectFUlPCvUl();
extern void JStudio_NS_stb_NS_data_NS_TParse_TParagraph_NS_getData();
extern void setFlag_operation__Q37JStudio3stb7TObjectFUci();
extern void JStudio_NS_stb_NS_data_NS_TParse_TSequence_NS_getData();
extern void JGadget_NS_TNodeLinkList_NS_Erase();
extern void
Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget13TLinkListNode();
extern void destroyObject__Q37JStudio3stb8TControlFPQ37JStudio3stb7TObject();
extern void std_NS_find_if_X2_();
extern void reset__Q37JStudio3stb7TObjectFPCv();
extern void forward__Q37JStudio3stb7TObjectFUl();
extern void JStudio_NS_object_NS_TIDData_NS_isEqual();
}
extern u8 lbl_804554D0; // 0xFF
extern const char** lbl_804554D8; // "STB"\0
namespace JStudio {
namespace stb {
TObject::TObject(u32 arg1, const void* arg2, u32 arg3)
: TObject_ID(arg2, arg3), pControl(NULL), _18(arg1), mFlag(0), bSequence_(0), _20(0), _24(NULL),
_28(NULL), u32Wait_(0), mStatus(0) {}
TObject::TObject(const data::TParse_TBlock_object& object)
: TObject_ID(object.get_ID(), object.get_IDSize()), pControl(NULL), _18(object.get_type()),
mFlag(object.get_flag()), bSequence_(0), _20(0), _24(0), _28(object.getContent()),
u32Wait_(0), mStatus(0) {}
TObject::~TObject() {}
void TObject::setFlag_operation(u8 op, int val) {
switch (op) {
case 1:
mFlag |= val;
break;
case 2:
mFlag &= val;
break;
case 3:
mFlag ^= val;
break;
}
}
void TObject::reset(const void* arg1) {
bSequence_ = 0;
mStatus = 0;
_28 = arg1;
u32Wait_ = 0;
}
#ifdef NONMATCHING // control flow reordering
int TObject::forward(u32 arg1) {
bool temp = false;
while (true) {
if ((mFlag & 0x8000)) {
switch (getStatus()) {
case STATUS_SUSPEND:
case STATUS_WAIT:
setStatus_(STATUS_INACTIVE);
if (bSequence_ != 0)
on_end();
break;
case STATUS_STILL:
case STATUS_UNK1:
case STATUS_INACTIVE:
default:
break;
}
return 1;
}
if (getStatus() == STATUS_INACTIVE) {
do_begin();
setStatus_(STATUS_WAIT);
}
TControl* control = getControl();
if (control != NULL && !control->isSuspended() && !isSuspended()) {
if (bSequence_ != 0) {
setStatus_(STATUS_SUSPEND);
on_wait(arg1);
}
return 1;
}
while (true) {
const void* next = getSequence_next();
setSequence_(next);
if (next == NULL) {
if (bSequence_ != 0) {
if (!temp)
on_wait(0);
bSequence_ = 0;
setStatus_(STATUS_UNK1);
on_end();
}
return 0;
}
if (bSequence_ == 0) {
bSequence_ = 1;
on_begin();
}
setStatus_(STATUS_WAIT);
if (u32Wait_ == 0) {
process_sequence_();
if (u32Wait_ == 0)
break;
}
temp = true;
u32 wait = u32Wait_;
if (arg1 > wait) {
u32Wait_ = wait - arg1;
on_wait(arg1);
} else {
arg1 -= wait;
u32Wait_ = 0;
on_wait(wait);
return 1;
}
}
}
}
#else
asm int TObject::forward(u32 arg1) {
nofralloc
#include "JSystem/JStudio/asm/forward__Q37JStudio3stb7TObjectFUl.s"
}
#endif
// virtuals
void TObject::do_begin() {}
void TObject::do_end() {}
void TObject::do_paragraph(u32 arg1, const void* arg2, u32 arg3) {}
void TObject::do_wait(u32 arg1) {}
void TObject::do_data(const void* arg1, u32 arg2, const void* arg3, u32 arg4) {}
asm void TObject::process_sequence_() {
nofralloc
#include "JSystem/JStudio/asm/process_sequence___Q37JStudio3stb7TObjectFv.s"
}
#ifdef NONMATCHING // really not sure whats going on here
void TObject::process_paragraph_reserved_(u32 arg1, const void* pContent, u32 uSize) {
switch (arg1) {
case 0x1:
setFlag_operation(*(u32*)pContent >> 16, *(u32*)pContent & 0xFFFF);
break;
case 0x2:
setWait(*(u32*)pContent);
break;
case 0x3:
setSequence_next(getSequence_offset(*(s32*)pContent));
break;
case 0x80:
on_data(NULL, 0, pContent, uSize);
break;
case 0x81:
data::TParse_TParagraph_dataID dataID(pContent);
on_data(dataID.get_ID(), dataID.get_IDSize(), dataID.get_content(),
uSize - (u32)dataID.get_content() - (u32)(void*)dataID.getRaw());
break;
}
}
#else
asm void TObject::process_paragraph_reserved_(u32 arg1, const void* pContent, u32 uSize) {
nofralloc
#include "JSystem/JStudio/asm/process_paragraph_reserved___Q37JStudio3stb7TObjectFUlPCvUl.s"
}
#endif
TObject_control::TObject_control(const void* arg1, u32 arg2) : TObject(-1, arg1, arg2) {}
TControl::TControl() : _4(0), _8(0), pFactory(NULL), mObject_control(NULL, 0), _54(0) {
resetStatus_();
mObject_control.setControl(this);
}
// TObject_control::TObject_control() definition gets inlined here
TControl::~TControl() {
mObject_control.setControl(NULL);
}
#ifdef NONMATCHING // Push_back is a rabbit hole of inlining
void TControl::appendObject(TObject* p) {
p->setControl(this);
mObjectContainer.Push_back(p);
}
#else
asm void TControl::appendObject(TObject* p) {
nofralloc
#include "JSystem/JStudio/asm/appendObject__Q37JStudio3stb8TControlFPQ37JStudio3stb7TObject.s"
}
#endif
asm void TControl::removeObject(TObject* p) {
nofralloc
#include "JSystem/JStudio/asm/removeObject__Q37JStudio3stb8TControlFPQ37JStudio3stb7TObject.s"
}
void TControl::destroyObject(TObject* p) {
removeObject(p);
pFactory->destroy(p);
}
asm void TControl::destroyObject_all() {
nofralloc
#include "JSystem/JStudio/asm/destroyObject_all__Q37JStudio3stb8TControlFv.s"
}
asm TObject* TControl::getObject(const void* arg1, u32 arg2) {
nofralloc
#include "JSystem/JStudio/asm/getObject__Q37JStudio3stb8TControlFPCvUl.s"
}
asm void TControl::reset() {
nofralloc
#include "JSystem/JStudio/asm/reset__Q37JStudio3stb8TControlFv.s"
}
// clang format why
asm void TControl::forward(u32 arg1){nofralloc
#include "JSystem/JStudio/asm/forward__Q37JStudio3stb8TControlFUl.s"
}
TFactory::~TFactory() {
}
TObject* TFactory::create(const data::TParse_TBlock_object&) {
return NULL;
}
void TFactory::destroy(TObject* p) {
delete p;
}
TParse::TParse(TControl* pControl) : pControl(pControl) {}
TParse::~TParse() {}
#ifdef NONMATCHING // Close but is missing a temp or something
int TParse::parseHeader_next(const void** ppData_inout, u32* puBlock_out, u32 arg3) {
const void* pData = *ppData_inout;
const data::TParse_THeader& header(pData);
*ppData_inout = header.getContent();
*puBlock_out = header.get_blockNumber();
if (func_8036608C(header.get_signature(), lbl_804554D8, 4) != 0)
return 0;
if (header.get_byteOrder() != 0xFEFF)
return 0;
u16 version = header.get_version();
if (version <= 1)
return 0;
else if (version >= 3)
return 0;
return parseHeader(header, arg3);
}
#else
asm int TParse::parseHeader_next(const void** ppData_inout, u32* puBlock_out, u32 arg3) {
nofralloc
#include "JSystem/JStudio/asm/parseHeader_next__Q37JStudio3stb6TParseFPPCvPUlUl.s"
}
#endif
asm int TParse::parseBlock_next(const void** ppData_inout, u32* puData_out, u32 arg3) {
nofralloc
#include "JSystem/JStudio/asm/parseBlock_next__Q37JStudio3stb6TParseFPPCvPUlUl.s"
}
int TParse::parseHeader(const data::TParse_THeader& header, u32 arg2) {
return 1;
}
bool TParse::parseBlock_block(const data::TParse_TBlock& ppBlock, u32 arg2) {
return parseBlock_object(ppBlock.get(), arg2);
}
bool TParse::parseBlock_object(const data::TParse_TBlock_object& ppObject, u32 arg2) {
TControl* pControl = getControl();
if (ppObject.get_type() == data::BLOCK_NONE) {
TObject_control& ref = pControl->referObject_control();
ref.reset(ppObject.getContent());
return true;
}
if (arg2 & 0x10) {
TObject* p = pControl->getObject(ppObject.get_ID(), ppObject.get_IDSize());
if (p != NULL) {
p->reset(ppObject.getContent());
return true;
}
}
if ((arg2 & 0x20))
return true;
TFactory* pFactory = pControl->getFactory();
if (pFactory == NULL)
return false;
TObject* p = pFactory->create(ppObject);
if (p == NULL) {
if (arg2 & 0x40)
return true;
return false;
}
pControl->appendObject(p);
return true;
}
} // namespace stb
} // namespace JStudio
extern "C" {
asm void std_NS_find_if_X2_() {
nofralloc
#include "JSystem/JStudio/asm/std_NS_find_if_X2_.s"
}
}
+2 -1
View File
@@ -311,7 +311,7 @@ TEXT_O_FILES := \
$(BUILD_DIR)/asm/JStudio/jstudio-math.o \
$(BUILD_DIR)/asm/JStudio/jstudio-object.o \
$(BUILD_DIR)/asm/JStudio/object-id.o \
$(BUILD_DIR)/asm/JStudio/stb.o \
$(BUILD_DIR)/libs/JSystem/JStudio/stb.o \
$(BUILD_DIR)/asm/JStudio/stb-data-parse.o \
$(BUILD_DIR)/asm/JStudio_JStage/control.o \
$(BUILD_DIR)/asm/JStudio_JStage/object.o \
@@ -464,6 +464,7 @@ TEXT_O_FILES := \
$(BUILD_DIR)/asm/JSupport/JSUMemoryStream.o \
$(BUILD_DIR)/asm/JSupport/JSUFileStream.o \
$(BUILD_DIR)/asm/JGadget/binary.o \
$(BUILD_DIR)/libs/JSystem/JGadget/linklist.o \
$(BUILD_DIR)/asm/JGadget/linklist.o \
$(BUILD_DIR)/asm/JGadget/std-vector.o \
$(BUILD_DIR)/asm/JUtility/JUTCacheFont.o \