From b90862a39aa8b14b14942b8fbf2e361555b63300 Mon Sep 17 00:00:00 2001 From: Phillip Stephens Date: Wed, 11 Jan 2023 17:33:42 -0800 Subject: [PATCH] Match and link CBoolPOINode --- asm/Kyoto/Animation/CAnimPOIData.s | 8 +++---- asm/Kyoto/Animation/CAnimSourceReaderBase.s | 4 ++-- asm/Kyoto/Animation/CAnimTreeLoopIn.s | 20 ++++++++--------- asm/Kyoto/Animation/CAnimTreeSequence.s | 24 ++++++++++----------- asm/Kyoto/Animation/CBoolPOINode.s | 4 ++-- asm/Kyoto/Animation/CSequenceHelper.s | 4 ++-- asm/MetroidPrime/CAnimData.s | 20 ++++++++--------- configure.py | 2 +- include/Kyoto/Animation/CPOINode.hpp | 12 +++++++---- src/Kyoto/Animation/CBoolPOINode.cpp | 12 +++++++++++ 10 files changed, 63 insertions(+), 47 deletions(-) create mode 100644 src/Kyoto/Animation/CBoolPOINode.cpp diff --git a/asm/Kyoto/Animation/CAnimPOIData.s b/asm/Kyoto/Animation/CAnimPOIData.s index c47b678d..ffc13cf3 100644 --- a/asm/Kyoto/Animation/CAnimPOIData.s +++ b/asm/Kyoto/Animation/CAnimPOIData.s @@ -805,11 +805,11 @@ lbl_802EC4B4: /* 802EC568 002E94C8 7F 23 CB 78 */ mr r3, r25 /* 802EC56C 002E94CC 7F A4 EB 78 */ mr r4, r29 /* 802EC570 002E94D0 4B FF 0B E5 */ bl sub_802dd154 -/* 802EC574 002E94D4 3C 80 80 3E */ lis r4, lbl_803D9B68@ha +/* 802EC574 002E94D4 3C 80 80 3E */ lis r4, __vt__12CBoolPOINode@ha /* 802EC578 002E94D8 3C 60 80 3E */ lis r3, __vt__8CPOINode@ha /* 802EC57C 002E94DC 3B 81 00 14 */ addi r28, r1, 0x14 /* 802EC580 002E94E0 3B E1 00 08 */ addi r31, r1, 8 -/* 802EC584 002E94E4 3A E4 9B 68 */ addi r23, r4, lbl_803D9B68@l +/* 802EC584 002E94E4 3A E4 9B 68 */ addi r23, r4, __vt__12CBoolPOINode@l /* 802EC588 002E94E8 3B 03 9B 8C */ addi r24, r3, __vt__8CPOINode@l /* 802EC58C 002E94EC 3B 60 00 00 */ li r27, 0 /* 802EC590 002E94F0 48 00 00 F4 */ b lbl_802EC684 @@ -846,8 +846,8 @@ lbl_802EC5D4: /* 802EC600 002E9560 B0 1E 00 04 */ sth r0, 4(r30) /* 802EC604 002E9564 48 05 1B 5D */ bl "__ct__Q24rstl66basic_string,Q24rstl17rmemory_allocator>FRCQ24rstl66basic_string,Q24rstl17rmemory_allocator>" /* 802EC608 002E9568 A0 81 00 24 */ lhz r4, 0x24(r1) -/* 802EC60C 002E956C 3C 60 80 3E */ lis r3, lbl_803D9B68@ha -/* 802EC610 002E9570 38 03 9B 68 */ addi r0, r3, lbl_803D9B68@l +/* 802EC60C 002E956C 3C 60 80 3E */ lis r3, __vt__12CBoolPOINode@ha +/* 802EC610 002E9570 38 03 9B 68 */ addi r0, r3, __vt__12CBoolPOINode@l /* 802EC614 002E9574 B0 9E 00 18 */ sth r4, 0x18(r30) /* 802EC618 002E9578 C0 01 00 28 */ lfs f0, 0x28(r1) /* 802EC61C 002E957C D0 1E 00 1C */ stfs f0, 0x1c(r30) diff --git a/asm/Kyoto/Animation/CAnimSourceReaderBase.s b/asm/Kyoto/Animation/CAnimSourceReaderBase.s index 7ea1b0d7..24dd462d 100644 --- a/asm/Kyoto/Animation/CAnimSourceReaderBase.s +++ b/asm/Kyoto/Animation/CAnimSourceReaderBase.s @@ -1594,11 +1594,11 @@ lbl_802F0D70: /* 802F0DA8 002EDD08 38 7C 00 08 */ addi r3, r28, 8 /* 802F0DAC 002EDD0C 48 04 CF B1 */ bl "assign__Q24rstl66basic_string,Q24rstl17rmemory_allocator>FRCQ24rstl66basic_string,Q24rstl17rmemory_allocator>" /* 802F0DB0 002EDD10 A0 01 00 48 */ lhz r0, 0x48(r1) -/* 802F0DB4 002EDD14 3C 80 80 3E */ lis r4, lbl_803D9B68@ha +/* 802F0DB4 002EDD14 3C 80 80 3E */ lis r4, __vt__12CBoolPOINode@ha /* 802F0DB8 002EDD18 3C 60 80 3E */ lis r3, __vt__8CPOINode@ha /* 802F0DBC 002EDD1C 28 1D 00 00 */ cmplwi r29, 0 /* 802F0DC0 002EDD20 B0 1C 00 18 */ sth r0, 0x18(r28) -/* 802F0DC4 002EDD24 38 84 9B 68 */ addi r4, r4, lbl_803D9B68@l +/* 802F0DC4 002EDD24 38 84 9B 68 */ addi r4, r4, __vt__12CBoolPOINode@l /* 802F0DC8 002EDD28 38 03 9B 8C */ addi r0, r3, __vt__8CPOINode@l /* 802F0DCC 002EDD2C 80 A1 00 4C */ lwz r5, 0x4c(r1) /* 802F0DD0 002EDD30 80 61 00 50 */ lwz r3, 0x50(r1) diff --git a/asm/Kyoto/Animation/CAnimTreeLoopIn.s b/asm/Kyoto/Animation/CAnimTreeLoopIn.s index 41ae8e6c..bc36c936 100644 --- a/asm/Kyoto/Animation/CAnimTreeLoopIn.s +++ b/asm/Kyoto/Animation/CAnimTreeLoopIn.s @@ -1380,8 +1380,8 @@ lbl_802D999C: /* 802D99BC 002D691C B0 1D 00 04 */ sth r0, 4(r29) /* 802D99C0 002D6920 48 06 47 A1 */ bl "__ct__Q24rstl66basic_string,Q24rstl17rmemory_allocator>FRCQ24rstl66basic_string,Q24rstl17rmemory_allocator>" /* 802D99C4 002D6924 A0 9C 00 18 */ lhz r4, 0x18(r28) -/* 802D99C8 002D6928 3C 60 80 3E */ lis r3, lbl_803D9B68@ha -/* 802D99CC 002D692C 38 03 9B 68 */ addi r0, r3, lbl_803D9B68@l +/* 802D99C8 002D6928 3C 60 80 3E */ lis r3, __vt__12CBoolPOINode@ha +/* 802D99CC 002D692C 38 03 9B 68 */ addi r0, r3, __vt__12CBoolPOINode@l /* 802D99D0 002D6930 B0 9D 00 18 */ sth r4, 0x18(r29) /* 802D99D4 002D6934 C0 1C 00 1C */ lfs f0, 0x1c(r28) /* 802D99D8 002D6938 D0 1D 00 1C */ stfs f0, 0x1c(r29) @@ -1686,7 +1686,7 @@ lbl_802D9D90: /* 802D9E00 002D6D60 3C 80 80 3E */ lis r4, __vt__8CPOINode@ha /* 802D9E04 002D6D64 80 01 00 0C */ lwz r0, 0xc(r1) /* 802D9E08 002D6D68 1F 1B 00 3C */ mulli r24, r27, 0x3c -/* 802D9E0C 002D6D6C 3C 60 80 3E */ lis r3, lbl_803D9B68@ha +/* 802D9E0C 002D6D6C 3C 60 80 3E */ lis r3, __vt__12CBoolPOINode@ha /* 802D9E10 002D6D70 D0 01 00 10 */ stfs f0, 0x10(r1) /* 802D9E14 002D6D74 3A 21 00 A0 */ addi r17, r1, 0xa0 /* 802D9E18 002D6D78 90 01 00 14 */ stw r0, 0x14(r1) @@ -1695,7 +1695,7 @@ lbl_802D9D90: /* 802D9E24 002D6D84 3A 61 00 28 */ addi r19, r1, 0x28 /* 802D9E28 002D6D88 3A 41 00 64 */ addi r18, r1, 0x64 /* 802D9E2C 002D6D8C 3A C4 9B 8C */ addi r22, r4, __vt__8CPOINode@l -/* 802D9E30 002D6D90 3A E3 9B 68 */ addi r23, r3, lbl_803D9B68@l +/* 802D9E30 002D6D90 3A E3 9B 68 */ addi r23, r3, __vt__12CBoolPOINode@l /* 802D9E34 002D6D94 48 00 02 24 */ b lbl_802DA058 lbl_802D9E38: /* 802D9E38 002D6D98 80 1C 00 0C */ lwz r0, 0xc(r28) @@ -1730,9 +1730,9 @@ lbl_802D9E38: /* 802D9EAC 002D6E0C 48 06 EB C1 */ bl __gt__13CCharAnimTimeCFRC13CCharAnimTime /* 802D9EB0 002D6E10 54 60 06 3F */ clrlwi. r0, r3, 0x18 /* 802D9EB4 002D6E14 41 82 00 30 */ beq lbl_802D9EE4 -/* 802D9EB8 002D6E18 3C 80 80 3E */ lis r4, lbl_803D9B68@ha +/* 802D9EB8 002D6E18 3C 80 80 3E */ lis r4, __vt__12CBoolPOINode@ha /* 802D9EBC 002D6E1C 3C 60 80 3E */ lis r3, __vt__8CPOINode@ha -/* 802D9EC0 002D6E20 38 04 9B 68 */ addi r0, r4, lbl_803D9B68@l +/* 802D9EC0 002D6E20 38 04 9B 68 */ addi r0, r4, __vt__12CBoolPOINode@l /* 802D9EC4 002D6E24 28 11 00 00 */ cmplwi r17, 0 /* 802D9EC8 002D6E28 90 01 00 98 */ stw r0, 0x98(r1) /* 802D9ECC 002D6E2C 38 03 9B 8C */ addi r0, r3, __vt__8CPOINode@l @@ -1762,9 +1762,9 @@ lbl_802D9EE4: /* 802D9F28 002D6E88 7E 64 9B 78 */ mr r4, r19 /* 802D9F2C 002D6E8C B0 01 00 60 */ sth r0, 0x60(r1) /* 802D9F30 002D6E90 48 06 42 31 */ bl "__ct__Q24rstl66basic_string,Q24rstl17rmemory_allocator>FRCQ24rstl66basic_string,Q24rstl17rmemory_allocator>" -/* 802D9F34 002D6E94 3C 60 80 3E */ lis r3, lbl_803D9B68@ha +/* 802D9F34 002D6E94 3C 60 80 3E */ lis r3, __vt__12CBoolPOINode@ha /* 802D9F38 002D6E98 A1 41 00 38 */ lhz r10, 0x38(r1) -/* 802D9F3C 002D6E9C 38 83 9B 68 */ addi r4, r3, lbl_803D9B68@l +/* 802D9F3C 002D6E9C 38 83 9B 68 */ addi r4, r3, __vt__12CBoolPOINode@l /* 802D9F40 002D6EA0 C0 21 00 3C */ lfs f1, 0x3c(r1) /* 802D9F44 002D6EA4 81 21 00 40 */ lwz r9, 0x40(r1) /* 802D9F48 002D6EA8 3C 60 80 3E */ lis r3, __vt__8CPOINode@ha @@ -1800,12 +1800,12 @@ lbl_802D9FA8: /* 802D9FBC 002D6F1C 38 75 00 08 */ addi r3, r21, 8 /* 802D9FC0 002D6F20 48 06 3D 9D */ bl "assign__Q24rstl66basic_string,Q24rstl17rmemory_allocator>FRCQ24rstl66basic_string,Q24rstl17rmemory_allocator>" /* 802D9FC4 002D6F24 A0 01 00 74 */ lhz r0, 0x74(r1) -/* 802D9FC8 002D6F28 3C 80 80 3E */ lis r4, lbl_803D9B68@ha +/* 802D9FC8 002D6F28 3C 80 80 3E */ lis r4, __vt__12CBoolPOINode@ha /* 802D9FCC 002D6F2C 3C 60 80 3E */ lis r3, __vt__8CPOINode@ha /* 802D9FD0 002D6F30 28 12 00 00 */ cmplwi r18, 0 /* 802D9FD4 002D6F34 B0 15 00 18 */ sth r0, 0x18(r21) /* 802D9FD8 002D6F38 38 03 9B 8C */ addi r0, r3, __vt__8CPOINode@l -/* 802D9FDC 002D6F3C 38 84 9B 68 */ addi r4, r4, lbl_803D9B68@l +/* 802D9FDC 002D6F3C 38 84 9B 68 */ addi r4, r4, __vt__12CBoolPOINode@l /* 802D9FE0 002D6F40 3B FF 00 01 */ addi r31, r31, 1 /* 802D9FE4 002D6F44 80 A1 00 78 */ lwz r5, 0x78(r1) /* 802D9FE8 002D6F48 80 61 00 7C */ lwz r3, 0x7c(r1) diff --git a/asm/Kyoto/Animation/CAnimTreeSequence.s b/asm/Kyoto/Animation/CAnimTreeSequence.s index 9f0e31b2..e36ab0ae 100644 --- a/asm/Kyoto/Animation/CAnimTreeSequence.s +++ b/asm/Kyoto/Animation/CAnimTreeSequence.s @@ -1553,8 +1553,8 @@ lbl_802DC048: /* 802DC068 002D8FC8 B0 1C 00 04 */ sth r0, 4(r28) /* 802DC06C 002D8FCC 48 06 20 F5 */ bl "__ct__Q24rstl66basic_string,Q24rstl17rmemory_allocator>FRCQ24rstl66basic_string,Q24rstl17rmemory_allocator>" /* 802DC070 002D8FD0 A0 9F 00 18 */ lhz r4, 0x18(r31) -/* 802DC074 002D8FD4 3C 60 80 3E */ lis r3, lbl_803D9B68@ha -/* 802DC078 002D8FD8 38 03 9B 68 */ addi r0, r3, lbl_803D9B68@l +/* 802DC074 002D8FD4 3C 60 80 3E */ lis r3, __vt__12CBoolPOINode@ha +/* 802DC078 002D8FD8 38 03 9B 68 */ addi r0, r3, __vt__12CBoolPOINode@l /* 802DC07C 002D8FDC B0 9C 00 18 */ sth r4, 0x18(r28) /* 802DC080 002D8FE0 C0 1F 00 1C */ lfs f0, 0x1c(r31) /* 802DC084 002D8FE4 D0 1C 00 1C */ stfs f0, 0x1c(r28) @@ -1860,7 +1860,7 @@ sub_802dc488: /* 802DC4D0 002D9430 3C 80 80 3E */ lis r4, __vt__8CPOINode@ha /* 802DC4D4 002D9434 80 01 00 0C */ lwz r0, 0xc(r1) /* 802DC4D8 002D9438 1E 3E 00 3C */ mulli r17, r30, 0x3c -/* 802DC4DC 002D943C 3C 60 80 3E */ lis r3, lbl_803D9B68@ha +/* 802DC4DC 002D943C 3C 60 80 3E */ lis r3, __vt__12CBoolPOINode@ha /* 802DC4E0 002D9440 D0 01 00 10 */ stfs f0, 0x10(r1) /* 802DC4E4 002D9444 3A A1 00 A0 */ addi r21, r1, 0xa0 /* 802DC4E8 002D9448 90 01 00 14 */ stw r0, 0x14(r1) @@ -1869,7 +1869,7 @@ sub_802dc488: /* 802DC4F4 002D9454 3A E1 00 28 */ addi r23, r1, 0x28 /* 802DC4F8 002D9458 3A C1 00 64 */ addi r22, r1, 0x64 /* 802DC4FC 002D945C 3B 44 9B 8C */ addi r26, r4, __vt__8CPOINode@l -/* 802DC500 002D9460 3B 63 9B 68 */ addi r27, r3, lbl_803D9B68@l +/* 802DC500 002D9460 3B 63 9B 68 */ addi r27, r3, __vt__12CBoolPOINode@l /* 802DC504 002D9464 3A 60 00 00 */ li r19, 0 /* 802DC508 002D9468 48 00 02 24 */ b lbl_802DC72C lbl_802DC50C: @@ -1905,9 +1905,9 @@ lbl_802DC50C: /* 802DC580 002D94E0 48 06 C4 ED */ bl __gt__13CCharAnimTimeCFRC13CCharAnimTime /* 802DC584 002D94E4 54 60 06 3F */ clrlwi. r0, r3, 0x18 /* 802DC588 002D94E8 41 82 00 30 */ beq lbl_802DC5B8 -/* 802DC58C 002D94EC 3C 80 80 3E */ lis r4, lbl_803D9B68@ha +/* 802DC58C 002D94EC 3C 80 80 3E */ lis r4, __vt__12CBoolPOINode@ha /* 802DC590 002D94F0 3C 60 80 3E */ lis r3, __vt__8CPOINode@ha -/* 802DC594 002D94F4 38 04 9B 68 */ addi r0, r4, lbl_803D9B68@l +/* 802DC594 002D94F4 38 04 9B 68 */ addi r0, r4, __vt__12CBoolPOINode@l /* 802DC598 002D94F8 28 15 00 00 */ cmplwi r21, 0 /* 802DC59C 002D94FC 90 01 00 98 */ stw r0, 0x98(r1) /* 802DC5A0 002D9500 38 03 9B 8C */ addi r0, r3, __vt__8CPOINode@l @@ -1934,9 +1934,9 @@ lbl_802DC5B8: /* 802DC5F0 002D9550 7E E4 BB 78 */ mr r4, r23 /* 802DC5F4 002D9554 B0 01 00 60 */ sth r0, 0x60(r1) /* 802DC5F8 002D9558 48 06 1B 69 */ bl "__ct__Q24rstl66basic_string,Q24rstl17rmemory_allocator>FRCQ24rstl66basic_string,Q24rstl17rmemory_allocator>" -/* 802DC5FC 002D955C 3C 60 80 3E */ lis r3, lbl_803D9B68@ha +/* 802DC5FC 002D955C 3C 60 80 3E */ lis r3, __vt__12CBoolPOINode@ha /* 802DC600 002D9560 A1 41 00 38 */ lhz r10, 0x38(r1) -/* 802DC604 002D9564 38 83 9B 68 */ addi r4, r3, lbl_803D9B68@l +/* 802DC604 002D9564 38 83 9B 68 */ addi r4, r3, __vt__12CBoolPOINode@l /* 802DC608 002D9568 C0 21 00 3C */ lfs f1, 0x3c(r1) /* 802DC60C 002D956C 81 21 00 40 */ lwz r9, 0x40(r1) /* 802DC610 002D9570 3C 60 80 3E */ lis r3, __vt__8CPOINode@ha @@ -1994,9 +1994,9 @@ lbl_802DC670: /* 802DC6DC 002D963C 88 01 00 94 */ lbz r0, 0x94(r1) /* 802DC6E0 002D9640 98 19 00 38 */ stb r0, 0x38(r25) lbl_802DC6E4: -/* 802DC6E4 002D9644 3C 80 80 3E */ lis r4, lbl_803D9B68@ha +/* 802DC6E4 002D9644 3C 80 80 3E */ lis r4, __vt__12CBoolPOINode@ha /* 802DC6E8 002D9648 3C 60 80 3E */ lis r3, __vt__8CPOINode@ha -/* 802DC6EC 002D964C 38 04 9B 68 */ addi r0, r4, lbl_803D9B68@l +/* 802DC6EC 002D964C 38 04 9B 68 */ addi r0, r4, __vt__12CBoolPOINode@l /* 802DC6F0 002D9650 28 16 00 00 */ cmplwi r22, 0 /* 802DC6F4 002D9654 90 01 00 5C */ stw r0, 0x5c(r1) /* 802DC6F8 002D9658 38 03 9B 8C */ addi r0, r3, __vt__8CPOINode@l @@ -2795,8 +2795,8 @@ lbl_802DD264: /* 802DD284 002DA1E4 B0 1E 00 04 */ sth r0, 4(r30) /* 802DD288 002DA1E8 48 06 0E D9 */ bl "__ct__Q24rstl66basic_string,Q24rstl17rmemory_allocator>FRCQ24rstl66basic_string,Q24rstl17rmemory_allocator>" /* 802DD28C 002DA1EC A0 9F 00 18 */ lhz r4, 0x18(r31) -/* 802DD290 002DA1F0 3C 60 80 3E */ lis r3, lbl_803D9B68@ha -/* 802DD294 002DA1F4 38 03 9B 68 */ addi r0, r3, lbl_803D9B68@l +/* 802DD290 002DA1F0 3C 60 80 3E */ lis r3, __vt__12CBoolPOINode@ha +/* 802DD294 002DA1F4 38 03 9B 68 */ addi r0, r3, __vt__12CBoolPOINode@l /* 802DD298 002DA1F8 B0 9E 00 18 */ sth r4, 0x18(r30) /* 802DD29C 002DA1FC C0 1F 00 1C */ lfs f0, 0x1c(r31) /* 802DD2A0 002DA200 D0 1E 00 1C */ stfs f0, 0x1c(r30) diff --git a/asm/Kyoto/Animation/CBoolPOINode.s b/asm/Kyoto/Animation/CBoolPOINode.s index cc95d182..26edf003 100644 --- a/asm/Kyoto/Animation/CBoolPOINode.s +++ b/asm/Kyoto/Animation/CBoolPOINode.s @@ -55,9 +55,9 @@ __ct__12CBoolPOINodeFR12CInputStream: /* 802F7B68 002F4AC8 93 C1 00 08 */ stw r30, 8(r1) /* 802F7B6C 002F4ACC 7C 7E 1B 78 */ mr r30, r3 /* 802F7B70 002F4AD0 48 00 55 ED */ bl __ct__8CPOINodeFR12CInputStream -/* 802F7B74 002F4AD4 3C 80 80 3E */ lis r4, lbl_803D9B68@ha +/* 802F7B74 002F4AD4 3C 80 80 3E */ lis r4, __vt__12CBoolPOINode@ha /* 802F7B78 002F4AD8 7F E3 FB 78 */ mr r3, r31 -/* 802F7B7C 002F4ADC 38 04 9B 68 */ addi r0, r4, lbl_803D9B68@l +/* 802F7B7C 002F4ADC 38 04 9B 68 */ addi r0, r4, __vt__12CBoolPOINode@l /* 802F7B80 002F4AE0 90 1E 00 00 */ stw r0, 0(r30) /* 802F7B84 002F4AE4 48 04 71 59 */ bl ReadBool__12CInputStreamFv /* 802F7B88 002F4AE8 98 7E 00 38 */ stb r3, 0x38(r30) diff --git a/asm/Kyoto/Animation/CSequenceHelper.s b/asm/Kyoto/Animation/CSequenceHelper.s index 10bfebb1..e7bdead0 100644 --- a/asm/Kyoto/Animation/CSequenceHelper.s +++ b/asm/Kyoto/Animation/CSequenceHelper.s @@ -198,8 +198,8 @@ lbl_802E5BE8: /* 802E5C14 002E2B74 B0 13 00 04 */ sth r0, 4(r19) /* 802E5C18 002E2B78 48 05 85 49 */ bl "__ct__Q24rstl66basic_string,Q24rstl17rmemory_allocator>FRCQ24rstl66basic_string,Q24rstl17rmemory_allocator>" /* 802E5C1C 002E2B7C A0 96 00 18 */ lhz r4, 0x18(r22) -/* 802E5C20 002E2B80 3C 60 80 3E */ lis r3, lbl_803D9B68@ha -/* 802E5C24 002E2B84 38 03 9B 68 */ addi r0, r3, lbl_803D9B68@l +/* 802E5C20 002E2B80 3C 60 80 3E */ lis r3, __vt__12CBoolPOINode@ha +/* 802E5C24 002E2B84 38 03 9B 68 */ addi r0, r3, __vt__12CBoolPOINode@l /* 802E5C28 002E2B88 B0 93 00 18 */ sth r4, 0x18(r19) /* 802E5C2C 002E2B8C C0 16 00 1C */ lfs f0, 0x1c(r22) /* 802E5C30 002E2B90 D0 13 00 1C */ stfs f0, 0x1c(r19) diff --git a/asm/MetroidPrime/CAnimData.s b/asm/MetroidPrime/CAnimData.s index 9fcf1226..37065e44 100644 --- a/asm/MetroidPrime/CAnimData.s +++ b/asm/MetroidPrime/CAnimData.s @@ -9,8 +9,8 @@ lbl_ctor: # These belong in Kyoto/Animation/C*POINode # Thanks to ODR they wound up here -.global lbl_803D9B68 -lbl_803D9B68: +.global __vt__12CBoolPOINode +__vt__12CBoolPOINode: # ROM: 0x3D6B68 .4byte 0 .4byte 0 @@ -7199,8 +7199,8 @@ __dt__12CBoolPOINodeFv: /* 8002F800 0002C760 93 C1 00 08 */ stw r30, 8(r1) /* 8002F804 0002C764 7C 7E 1B 79 */ or. r30, r3, r3 /* 8002F808 0002C768 41 82 00 40 */ beq lbl_8002F848 -/* 8002F80C 0002C76C 3C 60 80 3E */ lis r3, lbl_803D9B68@ha -/* 8002F810 0002C770 38 03 9B 68 */ addi r0, r3, lbl_803D9B68@l +/* 8002F80C 0002C76C 3C 60 80 3E */ lis r3, __vt__12CBoolPOINode@ha +/* 8002F810 0002C770 38 03 9B 68 */ addi r0, r3, __vt__12CBoolPOINode@l /* 8002F814 0002C774 90 1E 00 00 */ stw r0, 0(r30) /* 8002F818 0002C778 41 82 00 20 */ beq lbl_8002F838 /* 8002F81C 0002C77C 3C 60 80 3E */ lis r3, __vt__8CPOINode@ha @@ -7490,9 +7490,9 @@ lbl_8002FC48: /* 8002FC68 0002CBC8 B0 1B 00 04 */ sth r0, 4(r27) /* 8002FC6C 0002CBCC 48 30 E4 F5 */ bl "__ct__Q24rstl66basic_string,Q24rstl17rmemory_allocator>FRCQ24rstl66basic_string,Q24rstl17rmemory_allocator>" /* 8002FC70 0002CBD0 A0 01 01 2C */ lhz r0, 0x12c(r1) -/* 8002FC74 0002CBD4 3C 60 80 3E */ lis r3, lbl_803D9B68@ha +/* 8002FC74 0002CBD4 3C 60 80 3E */ lis r3, __vt__12CBoolPOINode@ha /* 8002FC78 0002CBD8 C0 01 01 30 */ lfs f0, 0x130(r1) -/* 8002FC7C 0002CBDC 38 63 9B 68 */ addi r3, r3, lbl_803D9B68@l +/* 8002FC7C 0002CBDC 38 63 9B 68 */ addi r3, r3, __vt__12CBoolPOINode@l /* 8002FC80 0002CBE0 B0 1B 00 18 */ sth r0, 0x18(r27) /* 8002FC84 0002CBE4 80 01 01 34 */ lwz r0, 0x134(r1) /* 8002FC88 0002CBE8 D0 1B 00 1C */ stfs f0, 0x1c(r27) @@ -7520,9 +7520,9 @@ lbl_8002FCCC: /* 8002FCD8 0002CC38 38 00 00 08 */ li r0, 8 /* 8002FCDC 0002CC3C 90 03 A6 00 */ stw r0, mBoolPOINodes__9CAnimData@l(r3) lbl_8002FCE0: -/* 8002FCE0 0002CC40 3C 60 80 3E */ lis r3, lbl_803D9B68@ha +/* 8002FCE0 0002CC40 3C 60 80 3E */ lis r3, __vt__12CBoolPOINode@ha /* 8002FCE4 0002CC44 3C 80 80 3E */ lis r4, __vt__8CPOINode@ha -/* 8002FCE8 0002CC48 38 03 9B 68 */ addi r0, r3, lbl_803D9B68@l +/* 8002FCE8 0002CC48 38 03 9B 68 */ addi r0, r3, __vt__12CBoolPOINode@l /* 8002FCEC 0002CC4C 34 61 01 1C */ addic. r3, r1, 0x11c /* 8002FCF0 0002CC50 90 01 01 14 */ stw r0, 0x114(r1) /* 8002FCF4 0002CC54 38 04 9B 8C */ addi r0, r4, __vt__8CPOINode@l @@ -8055,9 +8055,9 @@ sub_80030408: /* 80030498 0002D3F8 93 C1 00 08 */ stw r30, 8(r1) /* 8003049C 0002D3FC 7C 7E 1B 78 */ mr r30, r3 /* 800304A0 0002D400 48 2C CD 71 */ bl "__ct__8CPOINodeFRCQ24rstl66basic_string,Q24rstl17rmemory_allocator>UsRC13CCharAnimTimeibfii" -/* 800304A4 0002D404 3C 80 80 3E */ lis r4, lbl_803D9B68@ha +/* 800304A4 0002D404 3C 80 80 3E */ lis r4, __vt__12CBoolPOINode@ha /* 800304A8 0002D408 7F C3 F3 78 */ mr r3, r30 -/* 800304AC 0002D40C 38 04 9B 68 */ addi r0, r4, lbl_803D9B68@l +/* 800304AC 0002D40C 38 04 9B 68 */ addi r0, r4, __vt__12CBoolPOINode@l /* 800304B0 0002D410 90 1E 00 00 */ stw r0, 0(r30) /* 800304B4 0002D414 9B FE 00 38 */ stb r31, 0x38(r30) /* 800304B8 0002D418 83 E1 00 0C */ lwz r31, 0xc(r1) diff --git a/configure.py b/configure.py index 4aff8b71..a62a85b1 100755 --- a/configure.py +++ b/configure.py @@ -520,7 +520,7 @@ LIBS = [ "Kyoto/Animation/CAnimTreeTimeScale", "Kyoto/Animation/CAnimTreeTransition", "Kyoto/Animation/CAnimTreeTweenBase", - "Kyoto/Animation/CBoolPOINode", + ["Kyoto/Animation/CBoolPOINode", True], "Kyoto/Animation/CCharAnimMemoryMetrics", "Kyoto/Animation/CCharLayoutInfo", "Kyoto/Animation/CFBStreamedAnimReader", diff --git a/include/Kyoto/Animation/CPOINode.hpp b/include/Kyoto/Animation/CPOINode.hpp index 2f15c542..385cbac9 100644 --- a/include/Kyoto/Animation/CPOINode.hpp +++ b/include/Kyoto/Animation/CPOINode.hpp @@ -54,10 +54,14 @@ CHECK_SIZEOF(CPOINode, 0x38) class CBoolPOINode : public CPOINode { public: - // __ct__12CBoolPOINodeFQ24rstl66basic_string,Q24rstl17rmemory_allocator>UsRC13CCharAnimTimeibfiib - // __ct__12CBoolPOINodeFR12CInputStream - // CopyNodeMinusStartTime__12CBoolPOINodeFRC12CBoolPOINodeRC13CCharAnimTime - + CBoolPOINode(rstl::string name, ushort type, const CCharAnimTime& time, int index, + bool unique, float weight, int charIdx, int flags, bool value); /* +: CPOINode(name, type, time, index, unique, weight, charIdx, flags) +, x38_val(value) {} +*/ + CBoolPOINode(CInputStream& in); + static CBoolPOINode CopyNodeMinusStartTime(const CBoolPOINode& node, + const CCharAnimTime& startTime); bool GetValue() const { return x38_val; } private: diff --git a/src/Kyoto/Animation/CBoolPOINode.cpp b/src/Kyoto/Animation/CBoolPOINode.cpp new file mode 100644 index 00000000..bf6be9a5 --- /dev/null +++ b/src/Kyoto/Animation/CBoolPOINode.cpp @@ -0,0 +1,12 @@ +#include "Kyoto/Animation/CPOINode.hpp" + +#include "Kyoto/Streams/CInputStream.hpp" + +CBoolPOINode::CBoolPOINode(CInputStream& in) : CPOINode(in), x38_val(in.ReadBool()) {} + +CBoolPOINode CBoolPOINode::CopyNodeMinusStartTime(const CBoolPOINode& node, + const CCharAnimTime& startTime) { + return CBoolPOINode(node.GetString(), node.GetPoiType(), node.GetTime() - startTime, + node.GetIndex(), node.GetSaveState(), node.GetWeight(), + node.GetCharacterIndex(), node.GetFlags(), node.GetValue()); +}