mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-06-27 00:45:10 -04:00
A little work on jstudio (#2045)
This commit is contained in:
-25
@@ -1,25 +0,0 @@
|
||||
lbl_80280F60:
|
||||
/* 80280F60 80 A4 00 00 */ lwz r5, 0(r4)
|
||||
/* 80280F64 A0 85 00 06 */ lhz r4, 6(r5)
|
||||
/* 80280F68 38 04 00 03 */ addi r0, r4, 3
|
||||
/* 80280F6C 54 00 00 3A */ rlwinm r0, r0, 0, 0, 0x1d
|
||||
/* 80280F70 38 C5 00 08 */ addi r6, r5, 8
|
||||
/* 80280F74 7C A6 02 14 */ add r5, r6, r0
|
||||
/* 80280F78 38 00 00 00 */ li r0, 0
|
||||
/* 80280F7C 28 04 00 00 */ cmplwi r4, 0
|
||||
/* 80280F80 41 82 00 08 */ beq lbl_80280F88
|
||||
/* 80280F84 7C C0 33 78 */ mr r0, r6
|
||||
lbl_80280F88:
|
||||
/* 80280F88 90 03 00 00 */ stw r0, 0(r3)
|
||||
/* 80280F8C 90 83 00 04 */ stw r4, 4(r3)
|
||||
/* 80280F90 3C 80 80 3C */ lis r4, __vt__Q37JStudio3ctb7TObject@ha /* 0x803C48D0@ha */
|
||||
/* 80280F94 38 04 48 D0 */ addi r0, r4, __vt__Q37JStudio3ctb7TObject@l /* 0x803C48D0@l */
|
||||
/* 80280F98 90 03 00 08 */ stw r0, 8(r3)
|
||||
/* 80280F9C 38 00 00 00 */ li r0, 0
|
||||
/* 80280FA0 90 03 00 0C */ stw r0, 0xc(r3)
|
||||
/* 80280FA4 90 03 00 10 */ stw r0, 0x10(r3)
|
||||
/* 80280FA8 90 A3 00 14 */ stw r5, 0x14(r3)
|
||||
/* 80280FAC 3C 80 80 3C */ lis r4, __vt__Q37JStudio3ctb14TObject_TxyzRy@ha /* 0x803C48C0@ha */
|
||||
/* 80280FB0 38 04 48 C0 */ addi r0, r4, __vt__Q37JStudio3ctb14TObject_TxyzRy@l /* 0x803C48C0@l */
|
||||
/* 80280FB4 90 03 00 08 */ stw r0, 8(r3)
|
||||
/* 80280FB8 4E 80 00 20 */ blr
|
||||
@@ -1,13 +0,0 @@
|
||||
lbl_80280FC4:
|
||||
/* 80280FC4 3C 80 80 3C */ lis r4, __vt__Q37JStudio3ctb8TControl@ha /* 0x803C48B4@ha */
|
||||
/* 80280FC8 38 04 48 B4 */ addi r0, r4, __vt__Q37JStudio3ctb8TControl@l /* 0x803C48B4@l */
|
||||
/* 80280FCC 90 03 00 00 */ stw r0, 0(r3)
|
||||
/* 80280FD0 38 00 00 00 */ li r0, 0
|
||||
/* 80280FD4 90 03 00 04 */ stw r0, 4(r3)
|
||||
/* 80280FD8 90 03 00 0C */ stw r0, 0xc(r3)
|
||||
/* 80280FDC 90 03 00 10 */ stw r0, 0x10(r3)
|
||||
/* 80280FE0 90 03 00 08 */ stw r0, 8(r3)
|
||||
/* 80280FE4 38 03 00 0C */ addi r0, r3, 0xc
|
||||
/* 80280FE8 90 03 00 0C */ stw r0, 0xc(r3)
|
||||
/* 80280FEC 90 03 00 10 */ stw r0, 0x10(r3)
|
||||
/* 80280FF0 4E 80 00 20 */ blr
|
||||
@@ -1,20 +0,0 @@
|
||||
lbl_80280F18:
|
||||
/* 80280F18 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 80280F1C 7C 08 02 A6 */ mflr r0
|
||||
/* 80280F20 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 80280F24 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 80280F28 7C 7F 1B 79 */ or. r31, r3, r3
|
||||
/* 80280F2C 41 82 00 1C */ beq lbl_80280F48
|
||||
/* 80280F30 3C A0 80 3C */ lis r5, __vt__Q37JStudio3ctb7TObject@ha /* 0x803C48D0@ha */
|
||||
/* 80280F34 38 05 48 D0 */ addi r0, r5, __vt__Q37JStudio3ctb7TObject@l /* 0x803C48D0@l */
|
||||
/* 80280F38 90 1F 00 08 */ stw r0, 8(r31)
|
||||
/* 80280F3C 7C 80 07 35 */ extsh. r0, r4
|
||||
/* 80280F40 40 81 00 08 */ ble lbl_80280F48
|
||||
/* 80280F44 48 04 DD F9 */ bl __dl__FPv
|
||||
lbl_80280F48:
|
||||
/* 80280F48 7F E3 FB 78 */ mr r3, r31
|
||||
/* 80280F4C 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 80280F50 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 80280F54 7C 08 03 A6 */ mtlr r0
|
||||
/* 80280F58 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 80280F5C 4E 80 00 20 */ blr
|
||||
-30
@@ -1,30 +0,0 @@
|
||||
lbl_802812BC:
|
||||
/* 802812BC 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 802812C0 7C 08 02 A6 */ mflr r0
|
||||
/* 802812C4 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 802812C8 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 802812CC 7C 9F 23 78 */ mr r31, r4
|
||||
/* 802812D0 80 64 00 00 */ lwz r3, 0(r4)
|
||||
/* 802812D4 A0 03 00 04 */ lhz r0, 4(r3)
|
||||
/* 802812D8 2C 00 00 01 */ cmpwi r0, 1
|
||||
/* 802812DC 41 82 00 08 */ beq lbl_802812E4
|
||||
/* 802812E0 48 00 00 28 */ b lbl_80281308
|
||||
lbl_802812E4:
|
||||
/* 802812E4 38 60 00 18 */ li r3, 0x18
|
||||
/* 802812E8 48 04 D9 65 */ bl __nw__FUl
|
||||
/* 802812EC 7C 60 1B 79 */ or. r0, r3, r3
|
||||
/* 802812F0 41 82 00 10 */ beq lbl_80281300
|
||||
/* 802812F4 7F E4 FB 78 */ mr r4, r31
|
||||
/* 802812F8 4B FF FC 69 */ bl __ct__Q37JStudio3ctb14TObject_TxyzRyFRCQ47JStudio3ctb4data13TParse_TBlock
|
||||
/* 802812FC 7C 60 1B 78 */ mr r0, r3
|
||||
lbl_80281300:
|
||||
/* 80281300 7C 03 03 78 */ mr r3, r0
|
||||
/* 80281304 48 00 00 08 */ b lbl_8028130C
|
||||
lbl_80281308:
|
||||
/* 80281308 38 60 00 00 */ li r3, 0
|
||||
lbl_8028130C:
|
||||
/* 8028130C 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 80281310 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 80281314 7C 08 03 A6 */ mtlr r0
|
||||
/* 80281318 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 8028131C 4E 80 00 20 */ blr
|
||||
-21
@@ -1,21 +0,0 @@
|
||||
lbl_802810DC:
|
||||
/* 802810DC 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 802810E0 7C 08 02 A6 */ mflr r0
|
||||
/* 802810E4 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 802810E8 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 802810EC 93 C1 00 08 */ stw r30, 8(r1)
|
||||
/* 802810F0 7C 7E 1B 78 */ mr r30, r3
|
||||
/* 802810F4 7C 9F 23 78 */ mr r31, r4
|
||||
/* 802810F8 4B FF FF B5 */ bl removeObject__Q37JStudio3ctb8TControlFPQ37JStudio3ctb7TObject
|
||||
/* 802810FC 80 7E 00 04 */ lwz r3, 4(r30)
|
||||
/* 80281100 7F E4 FB 78 */ mr r4, r31
|
||||
/* 80281104 81 83 00 00 */ lwz r12, 0(r3)
|
||||
/* 80281108 81 8C 00 10 */ lwz r12, 0x10(r12)
|
||||
/* 8028110C 7D 89 03 A6 */ mtctr r12
|
||||
/* 80281110 4E 80 04 21 */ bctrl
|
||||
/* 80281114 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 80281118 83 C1 00 08 */ lwz r30, 8(r1)
|
||||
/* 8028111C 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 80281120 7C 08 03 A6 */ mtlr r0
|
||||
/* 80281124 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 80281128 4E 80 00 20 */ blr
|
||||
-17
@@ -1,17 +0,0 @@
|
||||
lbl_80281320:
|
||||
/* 80281320 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 80281324 7C 08 02 A6 */ mflr r0
|
||||
/* 80281328 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 8028132C 28 04 00 00 */ cmplwi r4, 0
|
||||
/* 80281330 41 82 00 1C */ beq lbl_8028134C
|
||||
/* 80281334 7C 83 23 78 */ mr r3, r4
|
||||
/* 80281338 38 80 00 01 */ li r4, 1
|
||||
/* 8028133C 81 83 00 08 */ lwz r12, 8(r3)
|
||||
/* 80281340 81 8C 00 08 */ lwz r12, 8(r12)
|
||||
/* 80281344 7D 89 03 A6 */ mtctr r12
|
||||
/* 80281348 4E 80 04 21 */ bctrl
|
||||
lbl_8028134C:
|
||||
/* 8028134C 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 80281350 7C 08 03 A6 */ mtlr r0
|
||||
/* 80281354 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 80281358 4E 80 00 20 */ blr
|
||||
@@ -1,64 +0,0 @@
|
||||
lbl_80281470:
|
||||
/* 80281470 94 21 FF E0 */ stwu r1, -0x20(r1)
|
||||
/* 80281474 7C 08 02 A6 */ mflr r0
|
||||
/* 80281478 90 01 00 24 */ stw r0, 0x24(r1)
|
||||
/* 8028147C 93 E1 00 1C */ stw r31, 0x1c(r1)
|
||||
/* 80281480 93 C1 00 18 */ stw r30, 0x18(r1)
|
||||
/* 80281484 7C DE 33 78 */ mr r30, r6
|
||||
/* 80281488 80 C4 00 00 */ lwz r6, 0(r4)
|
||||
/* 8028148C 90 C1 00 08 */ stw r6, 8(r1)
|
||||
/* 80281490 80 06 00 00 */ lwz r0, 0(r6)
|
||||
/* 80281494 7C 06 02 14 */ add r0, r6, r0
|
||||
/* 80281498 90 04 00 00 */ stw r0, 0(r4)
|
||||
/* 8028149C 80 81 00 08 */ lwz r4, 8(r1)
|
||||
/* 802814A0 80 04 00 00 */ lwz r0, 0(r4)
|
||||
/* 802814A4 90 05 00 00 */ stw r0, 0(r5)
|
||||
/* 802814A8 83 E3 00 04 */ lwz r31, 4(r3)
|
||||
/* 802814AC 57 C0 06 F7 */ rlwinm. r0, r30, 0, 0x1b, 0x1b
|
||||
/* 802814B0 41 82 00 38 */ beq lbl_802814E8
|
||||
/* 802814B4 80 61 00 08 */ lwz r3, 8(r1)
|
||||
/* 802814B8 A0 03 00 06 */ lhz r0, 6(r3)
|
||||
/* 802814BC 38 80 00 00 */ li r4, 0
|
||||
/* 802814C0 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 802814C4 41 82 00 08 */ beq lbl_802814CC
|
||||
/* 802814C8 38 83 00 08 */ addi r4, r3, 8
|
||||
lbl_802814CC:
|
||||
/* 802814CC 7F E3 FB 78 */ mr r3, r31
|
||||
/* 802814D0 54 05 04 3E */ clrlwi r5, r0, 0x10
|
||||
/* 802814D4 4B FF FC BD */ bl getObject__Q37JStudio3ctb8TControlFPCvUl
|
||||
/* 802814D8 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 802814DC 41 82 00 0C */ beq lbl_802814E8
|
||||
/* 802814E0 38 60 00 01 */ li r3, 1
|
||||
/* 802814E4 48 00 00 58 */ b lbl_8028153C
|
||||
lbl_802814E8:
|
||||
/* 802814E8 57 C0 06 B5 */ rlwinm. r0, r30, 0, 0x1a, 0x1a
|
||||
/* 802814EC 41 82 00 0C */ beq lbl_802814F8
|
||||
/* 802814F0 38 60 00 01 */ li r3, 1
|
||||
/* 802814F4 48 00 00 48 */ b lbl_8028153C
|
||||
lbl_802814F8:
|
||||
/* 802814F8 80 7F 00 04 */ lwz r3, 4(r31)
|
||||
/* 802814FC 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 80281500 40 82 00 0C */ bne lbl_8028150C
|
||||
/* 80281504 38 60 00 00 */ li r3, 0
|
||||
/* 80281508 48 00 00 34 */ b lbl_8028153C
|
||||
lbl_8028150C:
|
||||
/* 8028150C 38 81 00 08 */ addi r4, r1, 8
|
||||
/* 80281510 81 83 00 00 */ lwz r12, 0(r3)
|
||||
/* 80281514 81 8C 00 0C */ lwz r12, 0xc(r12)
|
||||
/* 80281518 7D 89 03 A6 */ mtctr r12
|
||||
/* 8028151C 4E 80 04 21 */ bctrl
|
||||
/* 80281520 7C 64 1B 79 */ or. r4, r3, r3
|
||||
/* 80281524 40 82 00 0C */ bne lbl_80281530
|
||||
/* 80281528 57 C3 D7 FE */ rlwinm r3, r30, 0x1a, 0x1f, 0x1f
|
||||
/* 8028152C 48 00 00 10 */ b lbl_8028153C
|
||||
lbl_80281530:
|
||||
/* 80281530 7F E3 FB 78 */ mr r3, r31
|
||||
/* 80281534 4B FF FB 2D */ bl appendObject__Q37JStudio3ctb8TControlFPQ37JStudio3ctb7TObject
|
||||
/* 80281538 38 60 00 01 */ li r3, 1
|
||||
lbl_8028153C:
|
||||
/* 8028153C 83 E1 00 1C */ lwz r31, 0x1c(r1)
|
||||
/* 80281540 83 C1 00 18 */ lwz r30, 0x18(r1)
|
||||
/* 80281544 80 01 00 24 */ lwz r0, 0x24(r1)
|
||||
/* 80281548 7C 08 03 A6 */ mtlr r0
|
||||
/* 8028154C 38 21 00 20 */ addi r1, r1, 0x20
|
||||
/* 80281550 4E 80 00 20 */ blr
|
||||
@@ -1,42 +0,0 @@
|
||||
lbl_802813DC:
|
||||
/* 802813DC 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 802813E0 7C 08 02 A6 */ mflr r0
|
||||
/* 802813E4 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 802813E8 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 802813EC 83 E4 00 00 */ lwz r31, 0(r4)
|
||||
/* 802813F0 38 1F 00 10 */ addi r0, r31, 0x10
|
||||
/* 802813F4 90 04 00 00 */ stw r0, 0(r4)
|
||||
/* 802813F8 80 1F 00 0C */ lwz r0, 0xc(r31)
|
||||
/* 802813FC 90 05 00 00 */ stw r0, 0(r5)
|
||||
/* 80281400 7F E3 FB 78 */ mr r3, r31
|
||||
/* 80281404 38 82 B9 F8 */ la r4, ga4cSignature__Q37JStudio3ctb4data(r2) /* 804553F8-_SDA2_BASE_ */
|
||||
/* 80281408 38 A0 00 04 */ li r5, 4
|
||||
/* 8028140C 48 0E 4C 81 */ bl memcmp
|
||||
/* 80281410 2C 03 00 00 */ cmpwi r3, 0
|
||||
/* 80281414 41 82 00 0C */ beq lbl_80281420
|
||||
/* 80281418 38 60 00 00 */ li r3, 0
|
||||
/* 8028141C 48 00 00 40 */ b lbl_8028145C
|
||||
lbl_80281420:
|
||||
/* 80281420 A0 1F 00 04 */ lhz r0, 4(r31)
|
||||
/* 80281424 28 00 FE FF */ cmplwi r0, 0xfeff
|
||||
/* 80281428 41 82 00 0C */ beq lbl_80281434
|
||||
/* 8028142C 38 60 00 00 */ li r3, 0
|
||||
/* 80281430 48 00 00 2C */ b lbl_8028145C
|
||||
lbl_80281434:
|
||||
/* 80281434 A0 1F 00 06 */ lhz r0, 6(r31)
|
||||
/* 80281438 28 00 00 01 */ cmplwi r0, 1
|
||||
/* 8028143C 40 80 00 0C */ bge lbl_80281448
|
||||
/* 80281440 38 60 00 00 */ li r3, 0
|
||||
/* 80281444 48 00 00 18 */ b lbl_8028145C
|
||||
lbl_80281448:
|
||||
/* 80281448 54 04 04 3E */ clrlwi r4, r0, 0x10
|
||||
/* 8028144C 38 00 00 01 */ li r0, 1
|
||||
/* 80281450 38 60 FF FF */ li r3, -1
|
||||
/* 80281454 7C 04 00 10 */ subfc r0, r4, r0
|
||||
/* 80281458 7C 63 01 90 */ subfze r3, r3
|
||||
lbl_8028145C:
|
||||
/* 8028145C 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 80281460 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 80281464 7C 08 03 A6 */ mtlr r0
|
||||
/* 80281468 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 8028146C 4E 80 00 20 */ blr
|
||||
-13
@@ -1,13 +0,0 @@
|
||||
lbl_802810AC:
|
||||
/* 802810AC 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 802810B0 7C 08 02 A6 */ mflr r0
|
||||
/* 802810B4 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 802810B8 7C 66 1B 78 */ mr r6, r3
|
||||
/* 802810BC 38 A4 00 0C */ addi r5, r4, 0xc
|
||||
/* 802810C0 38 61 00 08 */ addi r3, r1, 8
|
||||
/* 802810C4 38 86 00 08 */ addi r4, r6, 8
|
||||
/* 802810C8 48 05 BB 0D */ bl Erase__Q27JGadget13TNodeLinkListFPQ27JGadget13TLinkListNode
|
||||
/* 802810CC 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 802810D0 7C 08 03 A6 */ mtlr r0
|
||||
/* 802810D4 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 802810D8 4E 80 00 20 */ blr
|
||||
@@ -12,6 +12,7 @@ struct TLinkListNode {
|
||||
}
|
||||
|
||||
TLinkListNode* getNext() { return mNext; }
|
||||
TLinkListNode* getPrev() { return mPrev; }
|
||||
|
||||
/* 0x0 */ TLinkListNode* mNext;
|
||||
/* 0x4 */ TLinkListNode* mPrev;
|
||||
@@ -25,8 +26,14 @@ struct TNodeLinkList {
|
||||
node = node->getNext();
|
||||
return *this;
|
||||
}
|
||||
iterator& operator--() {
|
||||
node = node->getPrev();
|
||||
return *this;
|
||||
}
|
||||
TLinkListNode* operator->() { return node; }
|
||||
|
||||
inline friend bool operator==(iterator a, iterator b) { return a.node == b.node; }
|
||||
|
||||
TLinkListNode* node;
|
||||
};
|
||||
|
||||
@@ -91,6 +98,17 @@ struct TLinkList : public TNodeLinkList {
|
||||
JUT_ASSERT(541, node != 0);
|
||||
return Element_toValue(node);
|
||||
}
|
||||
iterator& operator--() {
|
||||
TNodeLinkList::iterator::operator--();
|
||||
return *this;
|
||||
}
|
||||
// Stack issues. See JStudio::ctb::TControl::getObject
|
||||
inline friend bool operator==(iterator a, iterator b) {
|
||||
TNodeLinkList::iterator ita = a;
|
||||
TNodeLinkList::iterator itb = b;
|
||||
return operator==(ita,itb);
|
||||
}
|
||||
inline friend bool operator!=(iterator a, iterator b) { return !(a == b); }
|
||||
};
|
||||
|
||||
struct const_iterator : TNodeLinkList::const_iterator {
|
||||
@@ -110,7 +128,7 @@ struct TLinkList : public TNodeLinkList {
|
||||
};
|
||||
|
||||
TLinkListNode* Element_toNode(T* element) const { return &element->ocObject_; }
|
||||
static T* Element_toValue(TLinkListNode* node) { return (T*)node; }
|
||||
static T* Element_toValue(TLinkListNode* node) { return (T*)((char*)node - offsetof(T, ocObject_)); }
|
||||
|
||||
iterator Insert(TLinkList::iterator iter, T* element) {
|
||||
TLinkListNode* node = Element_toNode(element);
|
||||
@@ -123,9 +141,7 @@ struct TLinkList : public TNodeLinkList {
|
||||
}
|
||||
|
||||
TLinkList::iterator end() {
|
||||
TNodeLinkList::iterator node_iter = TNodeLinkList::end();
|
||||
TLinkList::iterator iter(node_iter);
|
||||
return iter;
|
||||
return iterator(TNodeLinkList::end());
|
||||
}
|
||||
|
||||
TLinkList::const_iterator end() const {
|
||||
@@ -141,7 +157,7 @@ struct TLinkList : public TNodeLinkList {
|
||||
}
|
||||
|
||||
void Push_back(T* element) {
|
||||
TLinkList::iterator iter(TLinkList::end());
|
||||
TLinkList::iterator iter = TLinkList::end();
|
||||
this->Insert(iter, element);
|
||||
}
|
||||
|
||||
@@ -149,6 +165,11 @@ struct TLinkList : public TNodeLinkList {
|
||||
JUT_ASSERT(642, !empty());
|
||||
return *begin();
|
||||
}
|
||||
|
||||
T& back() {
|
||||
JUT_ASSERT(652, !empty());
|
||||
return *--TLinkList::end();
|
||||
}
|
||||
};
|
||||
|
||||
template<typename T, int I>
|
||||
@@ -161,6 +182,16 @@ bool operator!=(const typename TLinkList<T, I>::const_iterator iter1, const type
|
||||
return !(iter1 == iter2);
|
||||
}
|
||||
|
||||
// template<typename T, int I>
|
||||
// inline bool operator==(typename TLinkList<T, I>::iterator iter1, typename TLinkList<T, I>::iterator iter2) {
|
||||
// return iter1->node == iter2->node;
|
||||
// }
|
||||
|
||||
// template<typename T, int I>
|
||||
// inline bool operator!=(typename TLinkList<T, I>::iterator iter1, typename TLinkList<T, I>::iterator iter2) {
|
||||
// return !(iter1 == iter2);
|
||||
// }
|
||||
|
||||
template <typename T, int I>
|
||||
struct TLinkList_factory : public TLinkList<T, I> {
|
||||
virtual ~TLinkList_factory() {}
|
||||
|
||||
@@ -8,17 +8,102 @@
|
||||
namespace JStudio {
|
||||
namespace ctb {
|
||||
struct TObject : public object::TObject_ID {
|
||||
TObject(const void* id, u32 size, const void* param_2) : object::TObject_ID(id, size) {
|
||||
pData_ = param_2;
|
||||
JUT_ASSERT(82, pData_!=0);
|
||||
}
|
||||
/* 80280F18 */ virtual ~TObject() = 0;
|
||||
|
||||
/* 0x08 vtable */
|
||||
/* 0x0C */ JGadget::TLinkListNode field_0xc;
|
||||
/* 0x14 */ void* pData_;
|
||||
/* 0x0C */ JGadget::TLinkListNode ocObject_;
|
||||
/* 0x14 */ const void* pData_;
|
||||
};
|
||||
|
||||
struct data {
|
||||
struct TParse_TBlock : public JGadget::binary::TParseData_aligned<4> {};
|
||||
struct THeaderData {
|
||||
u32 signature;
|
||||
u16 byteOrder;
|
||||
u16 version;
|
||||
u8 field_0x0[4];
|
||||
u32 blockNumber;
|
||||
u8 content[0];
|
||||
};
|
||||
|
||||
static u32 ga4cSignature;
|
||||
struct TParse_THeader : public JGadget::binary::TParseData_aligned<4> {
|
||||
TParse_THeader(const void* pContent) : JGadget::binary::TParseData_aligned<4>(pContent) {}
|
||||
const THeaderData* get() const {
|
||||
return (THeaderData*) getRaw();
|
||||
}
|
||||
|
||||
const void* get_signature() const {
|
||||
return &get()->signature;
|
||||
}
|
||||
|
||||
u32 get_blockNumber() const {
|
||||
return get()->blockNumber;
|
||||
}
|
||||
|
||||
u16 get_byteOrder() const {
|
||||
return get()->byteOrder;
|
||||
}
|
||||
|
||||
u16 get_version() const {
|
||||
return get()->version;
|
||||
}
|
||||
|
||||
const void* getContent() const {
|
||||
const THeaderData* header = (THeaderData*) getRaw();
|
||||
return header->content;
|
||||
}
|
||||
};
|
||||
|
||||
struct TBlockData {
|
||||
u32 size;
|
||||
u16 scheme;
|
||||
u16 IDSize;
|
||||
u32 field_0x8[0];
|
||||
};
|
||||
|
||||
struct TParse_TBlock : public JGadget::binary::TParseData_aligned<4> {
|
||||
TParse_TBlock(const void* pContent) : JGadget::binary::TParseData_aligned<4>(pContent) {}
|
||||
const TBlockData* get() const {
|
||||
return (const TBlockData*)getRaw();
|
||||
}
|
||||
|
||||
u32 get_size() const {
|
||||
return get()->size;
|
||||
}
|
||||
|
||||
u16 get_scheme() const {
|
||||
return get()->scheme;
|
||||
}
|
||||
|
||||
u16 get_IDSize() const {
|
||||
return get()->IDSize;
|
||||
}
|
||||
|
||||
const void* getBlockEnd_() const {
|
||||
return get()->field_0x8;
|
||||
}
|
||||
|
||||
const void* get_ID() const {
|
||||
const void* rv = NULL;
|
||||
if (get_IDSize() != 0) {
|
||||
rv = getBlockEnd_();
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
const void* getContent() const {
|
||||
return (const void*)((char*)getBlockEnd_() + JGadget::binary::align_roundUp((u16)get_IDSize(), 4));
|
||||
}
|
||||
|
||||
const TParse_TBlock* getNext() {
|
||||
return (TParse_TBlock*)((char*)getRaw() + get_size());
|
||||
}
|
||||
};
|
||||
|
||||
static const u32 ga4cSignature;
|
||||
};
|
||||
|
||||
struct TObject_TxyzRy : public TObject {
|
||||
@@ -32,7 +117,7 @@ struct TFactory {
|
||||
TFactory() {}
|
||||
|
||||
/* 80281274 */ virtual ~TFactory();
|
||||
/* 802812BC */ virtual void create(JStudio::ctb::data::TParse_TBlock const&);
|
||||
/* 802812BC */ virtual TObject* create(JStudio::ctb::data::TParse_TBlock const&);
|
||||
/* 80281320 */ virtual void destroy(JStudio::ctb::TObject*);
|
||||
};
|
||||
|
||||
@@ -43,8 +128,10 @@ struct TControl {
|
||||
/* 802810AC */ void removeObject(JStudio::ctb::TObject*);
|
||||
/* 802810DC */ void destroyObject(JStudio::ctb::TObject*);
|
||||
/* 8028112C */ void destroyObject_all();
|
||||
/* 80281190 */ void getObject(void const*, u32);
|
||||
/* 80281230 */ void getObject_index(u32);
|
||||
/* 80281190 */ JStudio::ctb::TObject* getObject(void const*, u32);
|
||||
/* 80281230 */ JStudio::ctb::TObject* getObject_index(u32);
|
||||
|
||||
TFactory* getFactory() { return pFactory_; }
|
||||
|
||||
/* 0x4 */ TFactory* pFactory_;
|
||||
/* 0x8 */ JGadget::TLinkList<TObject, 2> mList;
|
||||
@@ -53,8 +140,10 @@ struct TControl {
|
||||
struct TParse : public JGadget::binary::TParse_header_block {
|
||||
/* 8028135C */ TParse(JStudio::ctb::TControl*);
|
||||
/* 8028137C */ virtual ~TParse();
|
||||
/* 802813DC */ virtual void parseHeader_next(void const**, u32*, u32);
|
||||
/* 80281470 */ virtual void parseBlock_next(void const**, u32*, u32);
|
||||
/* 802813DC */ virtual bool parseHeader_next(void const**, u32*, u32);
|
||||
/* 80281470 */ virtual bool parseBlock_next(void const**, u32*, u32);
|
||||
|
||||
TControl* getControl() { return pControl_; }
|
||||
|
||||
/* 0x4 */ TControl* pControl_;
|
||||
};
|
||||
|
||||
@@ -6,19 +6,24 @@
|
||||
namespace JStudio {
|
||||
namespace object {
|
||||
|
||||
struct TPRObject_ID_equal {};
|
||||
|
||||
struct TIDData {
|
||||
public:
|
||||
TIDData(const void* id, u32 id_size) : mID(id), mID_size(id_size) {}
|
||||
|
||||
/* 80288988 */ void isEqual(JStudio::object::TIDData const&, JStudio::object::TIDData const&);
|
||||
/* 80288988 */ bool isEqual(JStudio::object::TIDData const&, JStudio::object::TIDData const&);
|
||||
inline const void* getID() const { return mID; }
|
||||
inline u32 getIDSize() const { return mID_size; }
|
||||
|
||||
private:
|
||||
/* 0x00 */ const void* mID;
|
||||
/* 0x04 */ u32 mID_size;
|
||||
};
|
||||
|
||||
struct TPRObject_ID_equal : public TIDData {
|
||||
TPRObject_ID_equal(const void* id, u32 id_size) : TIDData(id, id_size) {}
|
||||
};
|
||||
|
||||
struct TObject_ID : public TIDData {
|
||||
TObject_ID(const void* id, u32 id_size) : TIDData(id, id_size) {}
|
||||
};
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
#include "JSystem/JStudio/JStudio/ctb.h"
|
||||
#include "dol2asm.h"
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 804553F8-80455400 0039F8 0004+04 0/0 1/1 0/0 .sdata2 ga4cSignature__Q37JStudio3ctb4data
|
||||
*/
|
||||
SECTION_SDATA2 u32 JStudio::ctb::data::ga4cSignature = 'CTB\0';
|
||||
const u32 JStudio::ctb::data::ga4cSignature = 'CTB\0';
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
//
|
||||
|
||||
#include "JSystem/JStudio/JStudio/ctb.h"
|
||||
#include "algorithm.h"
|
||||
#include "iterator.h"
|
||||
#include "string.h"
|
||||
#include "dol2asm.h"
|
||||
|
||||
//
|
||||
@@ -11,10 +14,6 @@
|
||||
//
|
||||
|
||||
namespace std {
|
||||
template <typename A1, typename B1>
|
||||
void find_if(/* ... */);
|
||||
/* 802815B4 */ /* std::find_if<JGadget::TLinkList<JStudio::ctb::TObject, 12>::iterator,
|
||||
JStudio::object::TPRObject_ID_equal> */
|
||||
void func_802815B4(void* _this, JGadget::TLinkList<JStudio::ctb::TObject, 12>::iterator,
|
||||
JGadget::TLinkList<JStudio::ctb::TObject, 12>::iterator, JStudio::object::TPRObject_ID_equal);
|
||||
}; // namespace std
|
||||
@@ -61,7 +60,6 @@ Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget1
|
||||
extern "C" void Erase__Q27JGadget13TNodeLinkListFPQ27JGadget13TLinkListNode();
|
||||
extern "C" void _savegpr_28();
|
||||
extern "C" void _restgpr_28();
|
||||
extern "C" void memcmp();
|
||||
extern "C" u32 ga4cSignature__Q37JStudio3ctb4data[1 + 1 /* padding */];
|
||||
|
||||
//
|
||||
@@ -117,25 +115,14 @@ SECTION_DATA extern void* __vt__Q37JStudio3ctb7TObject[4] = {
|
||||
};
|
||||
|
||||
/* 80280F18-80280F60 27B858 0048+00 1/1 0/0 0/0 .text __dt__Q37JStudio3ctb7TObjectFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm JStudio::ctb::TObject::~TObject() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JStudio/JStudio/ctb/__dt__Q37JStudio3ctb7TObjectFv.s"
|
||||
JStudio::ctb::TObject::~TObject() {
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80280F60-80280FBC 27B8A0 005C+00 1/1 0/0 0/0 .text
|
||||
* __ct__Q37JStudio3ctb14TObject_TxyzRyFRCQ47JStudio3ctb4data13TParse_TBlock */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm JStudio::ctb::TObject_TxyzRy::TObject_TxyzRy(JStudio::ctb::data::TParse_TBlock const& param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JStudio/JStudio/ctb/__ct__Q37JStudio3ctb14TObject_TxyzRyFRCQ47JStudio3ctb4data13TParse_TBlock.s"
|
||||
JStudio::ctb::TObject_TxyzRy::TObject_TxyzRy(JStudio::ctb::data::TParse_TBlock const& param_0) : TObject(param_0.get_ID(), param_0.get_IDSize(), param_0.getContent()) {
|
||||
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80280FBC-80280FC4 27B8FC 0008+00 1/0 0/0 0/0 .text getScheme__Q37JStudio3ctb14TObject_TxyzRyCFv
|
||||
*/
|
||||
@@ -144,14 +131,7 @@ bool JStudio::ctb::TObject_TxyzRy::getScheme() const {
|
||||
}
|
||||
|
||||
/* 80280FC4-80280FF4 27B904 0030+00 0/0 1/1 0/0 .text __ct__Q37JStudio3ctb8TControlFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm JStudio::ctb::TControl::TControl() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JStudio/JStudio/ctb/__ct__Q37JStudio3ctb8TControlFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
JStudio::ctb::TControl::TControl() : pFactory_(NULL) {}
|
||||
|
||||
/* 80280FF4-80281060 27B934 006C+00 1/0 1/1 0/0 .text __dt__Q37JStudio3ctb8TControlFv */
|
||||
#pragma push
|
||||
@@ -166,6 +146,12 @@ extern "C" asm void __dt__Q37JStudio3ctb8TControlFv() {
|
||||
|
||||
/* 80281060-802810AC 27B9A0 004C+00 1/1 0/0 0/0 .text
|
||||
* appendObject__Q37JStudio3ctb8TControlFPQ37JStudio3ctb7TObject */
|
||||
// Push_back stack issues
|
||||
#ifdef NONMATCHING
|
||||
void JStudio::ctb::TControl::appendObject(JStudio::ctb::TObject* param_0) {
|
||||
mList.Push_back(param_0);
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -174,31 +160,34 @@ asm void JStudio::ctb::TControl::appendObject(JStudio::ctb::TObject* param_0) {
|
||||
#include "asm/JSystem/JStudio/JStudio/ctb/appendObject__Q37JStudio3ctb8TControlFPQ37JStudio3ctb7TObject.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 802810AC-802810DC 27B9EC 0030+00 1/1 0/0 0/0 .text
|
||||
* removeObject__Q37JStudio3ctb8TControlFPQ37JStudio3ctb7TObject */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JStudio::ctb::TControl::removeObject(JStudio::ctb::TObject* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JStudio/JStudio/ctb/removeObject__Q37JStudio3ctb8TControlFPQ37JStudio3ctb7TObject.s"
|
||||
void JStudio::ctb::TControl::removeObject(JStudio::ctb::TObject* param_0) {
|
||||
mList.Erase(param_0);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802810DC-8028112C 27BA1C 0050+00 1/1 0/0 0/0 .text
|
||||
* destroyObject__Q37JStudio3ctb8TControlFPQ37JStudio3ctb7TObject */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JStudio::ctb::TControl::destroyObject(JStudio::ctb::TObject* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JStudio/JStudio/ctb/destroyObject__Q37JStudio3ctb8TControlFPQ37JStudio3ctb7TObject.s"
|
||||
void JStudio::ctb::TControl::destroyObject(JStudio::ctb::TObject* param_0) {
|
||||
removeObject(param_0);
|
||||
getFactory()->destroy(param_0);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8028112C-80281190 27BA6C 0064+00 0/0 2/2 0/0 .text destroyObject_all__Q37JStudio3ctb8TControlFv
|
||||
*/
|
||||
// Stack
|
||||
#ifdef NONMATCHING
|
||||
void JStudio::ctb::TControl::destroyObject_all() {
|
||||
TObject* pTVar1;
|
||||
int iVar2;
|
||||
|
||||
while (!mList.empty()) {
|
||||
destroyObject(&mList.back());
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -207,27 +196,54 @@ asm void JStudio::ctb::TControl::destroyObject_all() {
|
||||
#include "asm/JSystem/JStudio/JStudio/ctb/destroyObject_all__Q37JStudio3ctb8TControlFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 80281190-80281230 27BAD0 00A0+00 1/1 0/0 0/0 .text getObject__Q37JStudio3ctb8TControlFPCvUl */
|
||||
// end issues
|
||||
#ifdef NONMATCHING
|
||||
JStudio::ctb::TObject* JStudio::ctb::TControl::getObject(void const* param_0, u32 param_1) {
|
||||
JGadget::TLinkList<TObject, 2>::iterator local_3c = mList.begin();
|
||||
JGadget::TLinkList<TObject, 2>::iterator local_40 = mList.end();
|
||||
object::TPRObject_ID_equal aTStack_38(param_0, param_1);
|
||||
JGadget::TLinkList<TObject, 2>::iterator local_50 = std::find_if(local_3c, local_40, object::TPRObject_ID_equal(param_0, param_1));
|
||||
if ((local_50 != local_40) != false) {
|
||||
return &*local_50;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JStudio::ctb::TControl::getObject(void const* param_0, u32 param_1) {
|
||||
asm JStudio::ctb::TObject* JStudio::ctb::TControl::getObject(void const* param_0, u32 param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JStudio/JStudio/ctb/getObject__Q37JStudio3ctb8TControlFPCvUl.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 80281230-80281274 27BB70 0044+00 0/0 1/1 0/0 .text getObject_index__Q37JStudio3ctb8TControlFUl
|
||||
*/
|
||||
// Stack issues
|
||||
#ifdef NONMATCHING
|
||||
JStudio::ctb::TObject* JStudio::ctb::TControl::getObject_index(u32 param_0) {
|
||||
if (param_0 >= mList.size()) {
|
||||
return 0;
|
||||
}
|
||||
JGadget::TLinkList<TObject, 2>::iterator aiStack_14 = mList.begin();
|
||||
std::advance(aiStack_14, param_0);
|
||||
return &*aiStack_14;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JStudio::ctb::TControl::getObject_index(u32 param_0) {
|
||||
asm JStudio::ctb::TObject* JStudio::ctb::TControl::getObject_index(u32 param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JStudio/JStudio/ctb/getObject_index__Q37JStudio3ctb8TControlFUl.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 80281274-802812BC 27BBB4 0048+00 1/0 1/1 0/0 .text __dt__Q37JStudio3ctb8TFactoryFv */
|
||||
#pragma push
|
||||
@@ -242,25 +258,20 @@ extern "C" asm void __dt__Q37JStudio3ctb8TFactoryFv() {
|
||||
|
||||
/* 802812BC-80281320 27BBFC 0064+00 1/0 0/0 0/0 .text
|
||||
* create__Q37JStudio3ctb8TFactoryFRCQ47JStudio3ctb4data13TParse_TBlock */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JStudio::ctb::TFactory::create(JStudio::ctb::data::TParse_TBlock const& param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JStudio/JStudio/ctb/create__Q37JStudio3ctb8TFactoryFRCQ47JStudio3ctb4data13TParse_TBlock.s"
|
||||
JStudio::ctb::TObject* JStudio::ctb::TFactory::create(JStudio::ctb::data::TParse_TBlock const& param_0) {
|
||||
switch(param_0.get_scheme()) {
|
||||
case 1:
|
||||
return new TObject_TxyzRy(param_0);
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80281320-8028135C 27BC60 003C+00 1/0 0/0 0/0 .text
|
||||
* destroy__Q37JStudio3ctb8TFactoryFPQ37JStudio3ctb7TObject */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JStudio::ctb::TFactory::destroy(JStudio::ctb::TObject* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JStudio/JStudio/ctb/destroy__Q37JStudio3ctb8TFactoryFPQ37JStudio3ctb7TObject.s"
|
||||
void JStudio::ctb::TFactory::destroy(JStudio::ctb::TObject* param_0) {
|
||||
delete param_0;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8028135C-8028137C 27BC9C 0020+00 0/0 1/1 0/0 .text
|
||||
* __ct__Q37JStudio3ctb6TParseFPQ37JStudio3ctb8TControl */
|
||||
@@ -286,25 +297,63 @@ extern "C" asm void __dt__Q37JStudio3ctb6TParseFv() {
|
||||
|
||||
/* 802813DC-80281470 27BD1C 0094+00 1/0 0/0 0/0 .text
|
||||
* parseHeader_next__Q37JStudio3ctb6TParseFPPCvPUlUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JStudio::ctb::TParse::parseHeader_next(void const** param_0, u32* param_1, u32 param_2) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JStudio/JStudio/ctb/parseHeader_next__Q37JStudio3ctb6TParseFPPCvPUlUl.s"
|
||||
bool JStudio::ctb::TParse::parseHeader_next(void const** ppData_inout, u32* puBlock_out, u32 param_3) {
|
||||
JUT_ASSERT(221, ppData_inout!=0);
|
||||
JUT_ASSERT(222, puBlock_out!=0);
|
||||
void const* pData = *ppData_inout;
|
||||
JUT_ASSERT(224, pData!=0);
|
||||
data::TParse_THeader aTStack_478(pData);
|
||||
*ppData_inout = aTStack_478.getContent();
|
||||
*puBlock_out = aTStack_478.get_blockNumber();
|
||||
if (memcmp(aTStack_478.get_signature(), &JStudio::ctb::data::ga4cSignature, sizeof(JStudio::ctb::data::ga4cSignature)) != 0) {
|
||||
return false;
|
||||
}
|
||||
if (aTStack_478.get_byteOrder() != 0xfeff) {
|
||||
return false;
|
||||
}
|
||||
u16 version = aTStack_478.get_version();
|
||||
if (version < 1) {
|
||||
return false;
|
||||
}
|
||||
return version <= 1;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80281470-80281554 27BDB0 00E4+00 1/0 0/0 0/0 .text
|
||||
* parseBlock_next__Q37JStudio3ctb6TParseFPPCvPUlUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JStudio::ctb::TParse::parseBlock_next(void const** param_0, u32* param_1, u32 param_2) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JStudio/JStudio/ctb/parseBlock_next__Q37JStudio3ctb6TParseFPPCvPUlUl.s"
|
||||
bool JStudio::ctb::TParse::parseBlock_next(void const** ppData_inout, u32* puData_out, u32 param_3) {
|
||||
JUT_ASSERT(260, ppData_inout!=0);
|
||||
JUT_ASSERT(261, puData_out!=0);
|
||||
void const* pData = *ppData_inout;
|
||||
JUT_ASSERT(263, pData!=0);
|
||||
data::TParse_TBlock aTStack_260(pData);
|
||||
*ppData_inout = aTStack_260.getNext();
|
||||
*puData_out = aTStack_260.get_size();
|
||||
JStudio::ctb::TControl* pControl = getControl();
|
||||
JUT_ASSERT(269, pControl!=0);
|
||||
if ((param_3 & 0x10) != 0) {
|
||||
if (pControl->getObject(aTStack_260.get_ID(), aTStack_260.get_IDSize()) != NULL) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if ((param_3 & 0x20) != 0) {
|
||||
return true;
|
||||
}
|
||||
JStudio::ctb::TFactory* pFactory = pControl->getFactory();
|
||||
if (pFactory == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
JStudio::ctb::TObject* pTVar6 = pFactory->create(aTStack_260);
|
||||
if (pTVar6 == NULL) {
|
||||
if ((param_3 & 0x40) == 0) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
pControl->appendObject(pTVar6);
|
||||
return true;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80281554-802815B4 27BE94 0060+00 1/0 0/0 0/0 .text __dt__Q37JStudio3ctb14TObject_TxyzRyFv */
|
||||
#pragma push
|
||||
|
||||
@@ -6,25 +6,63 @@
|
||||
#include "JSystem/JStudio/JStudio/object-id.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" void
|
||||
isEqual__Q37JStudio6object7TIDDataFRCQ37JStudio6object7TIDDataRCQ37JStudio6object7TIDData();
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* 80288988-80288A78 2832C8 00F0+00 0/0 3/3 0/0 .text
|
||||
* isEqual__Q37JStudio6object7TIDDataFRCQ37JStudio6object7TIDDataRCQ37JStudio6object7TIDData */
|
||||
// regalloc
|
||||
#ifdef NONMATCHING
|
||||
bool JStudio::object::TIDData::isEqual(JStudio::object::TIDData const& a,
|
||||
JStudio::object::TIDData const& b) {
|
||||
if (a.getIDSize() != b.getIDSize()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
u32 bytesRemaining = a.mID_size;
|
||||
const void* aStr = a.getID();
|
||||
u32* aStr32 = (u32*)aStr;
|
||||
const void* bStr = b.getID();
|
||||
u32* bStr32 = (u32*)bStr;
|
||||
if (aStr == bStr) { // mismatch here
|
||||
// they point to the same id
|
||||
return true;
|
||||
}
|
||||
|
||||
for (bytesRemaining; bytesRemaining >= 4; bytesRemaining -= 4, aStr32++, bStr32++) {
|
||||
if (*aStr32 != *bStr32) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
u8* aStrBytes = (u8*)aStr32;
|
||||
u8* bStrBytes = (u8*)bStr32;
|
||||
switch (bytesRemaining) {
|
||||
case 3:
|
||||
if (*aStrBytes != *bStrBytes) {
|
||||
return false;
|
||||
}
|
||||
aStrBytes++;
|
||||
bStrBytes++;
|
||||
case 2:
|
||||
if (*aStrBytes != *bStrBytes) {
|
||||
return false;
|
||||
}
|
||||
aStrBytes++;
|
||||
bStrBytes++;
|
||||
case 1:
|
||||
if (*aStrBytes != *bStrBytes) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JStudio::object::TIDData::isEqual(JStudio::object::TIDData const& param_0,
|
||||
asm bool JStudio::object::TIDData::isEqual(JStudio::object::TIDData const& param_0,
|
||||
JStudio::object::TIDData const& param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JStudio/JStudio/object-id/func_80288988.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
@@ -0,0 +1,14 @@
|
||||
#ifndef MSL_ITERATOR_H_
|
||||
#define MSL_ITERATOR_H_
|
||||
|
||||
namespace std {
|
||||
template< class InputIt, class Distance >
|
||||
inline void advance( InputIt& it, Distance n) {
|
||||
while (n > 0) {
|
||||
--n;
|
||||
++it;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user