From 4a5fe82469e0ee7add0e2c1ca7dcd6fc102d4bd2 Mon Sep 17 00:00:00 2001 From: Henrique Gemignani Passos Lima Date: Fri, 14 Oct 2022 13:01:20 +0300 Subject: [PATCH] Match and link CTweakParticle Former-commit-id: 3e06682f373eb93c3691f6759be82f89b17867e3 --- asm/MetroidPrime/Tweaks/CTweakAutoMapper.s | 8 +++---- asm/MetroidPrime/Tweaks/CTweakBall.s | 8 +++---- asm/MetroidPrime/Tweaks/CTweakGame.s | 8 +++---- asm/MetroidPrime/Tweaks/CTweakGui.s | 8 +++---- asm/MetroidPrime/Tweaks/CTweakGuiColors.s | 8 +++---- asm/MetroidPrime/Tweaks/CTweakGunRes.s | 9 ++++---- asm/MetroidPrime/Tweaks/CTweakParticle.s | 20 ++++++++-------- asm/MetroidPrime/Tweaks/CTweakPlayer.s | 12 +++++----- asm/MetroidPrime/Tweaks/CTweakPlayerControl.s | 8 +++---- asm/MetroidPrime/Tweaks/CTweakPlayerGun.s | 9 ++++---- asm/MetroidPrime/Tweaks/CTweakPlayerRes.s | 9 ++++---- asm/MetroidPrime/Tweaks/CTweakSlideShow.s | 9 ++++---- asm/MetroidPrime/Tweaks/CTweakTargeting.s | 9 ++++---- configure.py | 2 +- include/Kyoto/TOneStatic.hpp | 9 +++++--- .../MetroidPrime/Tweaks/CTweakParticle.hpp | 23 +++++++++++++++++++ include/MetroidPrime/Tweaks/ITweakObject.hpp | 2 +- include/rstl/string.hpp | 4 ++++ obj_files.mk | 2 +- src/MetroidPrime/Tweaks/CTweakParticle.cpp | 10 ++++++++ 20 files changed, 106 insertions(+), 71 deletions(-) create mode 100644 include/MetroidPrime/Tweaks/CTweakParticle.hpp create mode 100644 src/MetroidPrime/Tweaks/CTweakParticle.cpp diff --git a/asm/MetroidPrime/Tweaks/CTweakAutoMapper.s b/asm/MetroidPrime/Tweaks/CTweakAutoMapper.s index 6514b4fb..ab6b53c8 100644 --- a/asm/MetroidPrime/Tweaks/CTweakAutoMapper.s +++ b/asm/MetroidPrime/Tweaks/CTweakAutoMapper.s @@ -45,11 +45,11 @@ __ct__16CTweakAutoMapperFR12CInputStream: /* 800B69D4 000B3934 93 C1 00 18 */ stw r30, 0x18(r1) /* 800B69D8 000B3938 93 A1 00 14 */ stw r29, 0x14(r1) /* 800B69DC 000B393C 93 81 00 10 */ stw r28, 0x10(r1) -/* 800B69E0 000B3940 3C C0 80 3E */ lis r6, lbl_803D9CC4@ha +/* 800B69E0 000B3940 3C C0 80 3E */ lis r6, __vt__12ITweakObject@ha /* 800B69E4 000B3944 3C A0 80 3E */ lis r5, lbl_803DF438@ha /* 800B69E8 000B3948 7C 7F 1B 78 */ mr r31, r3 /* 800B69EC 000B394C 7C 9C 23 78 */ mr r28, r4 -/* 800B69F0 000B3950 38 66 9C C4 */ addi r3, r6, lbl_803D9CC4@l +/* 800B69F0 000B3950 38 66 9C C4 */ addi r3, r6, __vt__12ITweakObject@l /* 800B69F4 000B3954 38 05 F4 38 */ addi r0, r5, lbl_803DF438@l /* 800B69F8 000B3958 90 7F 00 00 */ stw r3, 0(r31) /* 800B69FC 000B395C 7F 83 E3 78 */ mr r3, r28 @@ -347,8 +347,8 @@ lbl_800B6E5C: lbl_800B6E64: /* 800B6E64 000B3DC4 28 1F 00 00 */ cmplwi r31, 0 /* 800B6E68 000B3DC8 41 82 00 10 */ beq lbl_800B6E78 -/* 800B6E6C 000B3DCC 3C 60 80 3E */ lis r3, lbl_803D9CC4@ha -/* 800B6E70 000B3DD0 38 03 9C C4 */ addi r0, r3, lbl_803D9CC4@l +/* 800B6E6C 000B3DCC 3C 60 80 3E */ lis r3, __vt__12ITweakObject@ha +/* 800B6E70 000B3DD0 38 03 9C C4 */ addi r0, r3, __vt__12ITweakObject@l /* 800B6E74 000B3DD4 90 1F 00 00 */ stw r0, 0(r31) lbl_800B6E78: /* 800B6E78 000B3DD8 7C 80 07 35 */ extsh. r0, r4 diff --git a/asm/MetroidPrime/Tweaks/CTweakBall.s b/asm/MetroidPrime/Tweaks/CTweakBall.s index d211488a..c53f5575 100644 --- a/asm/MetroidPrime/Tweaks/CTweakBall.s +++ b/asm/MetroidPrime/Tweaks/CTweakBall.s @@ -50,10 +50,10 @@ lbl_805AA824: __ct__10CTweakBallFR12CInputStream: /* 80090B54 0008DAB4 94 21 FF C0 */ stwu r1, -0x40(r1) /* 80090B58 0008DAB8 7C 08 02 A6 */ mflr r0 -/* 80090B5C 0008DABC 3C C0 80 3E */ lis r6, lbl_803D9CC4@ha +/* 80090B5C 0008DABC 3C C0 80 3E */ lis r6, __vt__12ITweakObject@ha /* 80090B60 0008DAC0 3C A0 80 3E */ lis r5, lbl_803DAD30@ha /* 80090B64 0008DAC4 90 01 00 44 */ stw r0, 0x44(r1) -/* 80090B68 0008DAC8 38 C6 9C C4 */ addi r6, r6, lbl_803D9CC4@l +/* 80090B68 0008DAC8 38 C6 9C C4 */ addi r6, r6, __vt__12ITweakObject@l /* 80090B6C 0008DACC 38 05 AD 30 */ addi r0, r5, lbl_803DAD30@l /* 80090B70 0008DAD0 C0 22 8A F0 */ lfs f1, lbl_805AA810@sda21(r2) /* 80090B74 0008DAD4 93 E1 00 3C */ stw r31, 0x3c(r1) @@ -457,8 +457,8 @@ __dt__10CTweakBallFv: /* 80091190 0008E0F0 38 03 AD 30 */ addi r0, r3, lbl_803DAD30@l /* 80091194 0008E0F4 90 1F 00 00 */ stw r0, 0(r31) /* 80091198 0008E0F8 41 82 00 10 */ beq lbl_800911A8 -/* 8009119C 0008E0FC 3C 60 80 3E */ lis r3, lbl_803D9CC4@ha -/* 800911A0 0008E100 38 03 9C C4 */ addi r0, r3, lbl_803D9CC4@l +/* 8009119C 0008E0FC 3C 60 80 3E */ lis r3, __vt__12ITweakObject@ha +/* 800911A0 0008E100 38 03 9C C4 */ addi r0, r3, __vt__12ITweakObject@l /* 800911A4 0008E104 90 1F 00 00 */ stw r0, 0(r31) lbl_800911A8: /* 800911A8 0008E108 7C 80 07 35 */ extsh. r0, r4 diff --git a/asm/MetroidPrime/Tweaks/CTweakGame.s b/asm/MetroidPrime/Tweaks/CTweakGame.s index 1d4656d1..c4f9e191 100644 --- a/asm/MetroidPrime/Tweaks/CTweakGame.s +++ b/asm/MetroidPrime/Tweaks/CTweakGame.s @@ -16,9 +16,9 @@ lbl_803D9CD0: __ct__10CTweakGameFR12CInputStream: /* 800371E4 00034144 94 21 FF E0 */ stwu r1, -0x20(r1) /* 800371E8 00034148 7C 08 02 A6 */ mflr r0 -/* 800371EC 0003414C 3C A0 80 3E */ lis r5, lbl_803D9CC4@ha +/* 800371EC 0003414C 3C A0 80 3E */ lis r5, __vt__12ITweakObject@ha /* 800371F0 00034150 90 01 00 24 */ stw r0, 0x24(r1) -/* 800371F4 00034154 38 05 9C C4 */ addi r0, r5, lbl_803D9CC4@l +/* 800371F4 00034154 38 05 9C C4 */ addi r0, r5, __vt__12ITweakObject@l /* 800371F8 00034158 38 A1 00 0C */ addi r5, r1, 0xc /* 800371FC 0003415C 93 E1 00 1C */ stw r31, 0x1c(r1) /* 80037200 00034160 7C 9F 23 78 */ mr r31, r4 @@ -129,8 +129,8 @@ lbl_80037384: lbl_80037394: /* 80037394 000342F4 28 1E 00 00 */ cmplwi r30, 0 /* 80037398 000342F8 41 82 00 10 */ beq lbl_800373A8 -/* 8003739C 000342FC 3C 60 80 3E */ lis r3, lbl_803D9CC4@ha -/* 800373A0 00034300 38 03 9C C4 */ addi r0, r3, lbl_803D9CC4@l +/* 8003739C 000342FC 3C 60 80 3E */ lis r3, __vt__12ITweakObject@ha +/* 800373A0 00034300 38 03 9C C4 */ addi r0, r3, __vt__12ITweakObject@l /* 800373A4 00034304 90 1E 00 00 */ stw r0, 0(r30) lbl_800373A8: /* 800373A8 00034308 7F E0 07 35 */ extsh. r0, r31 diff --git a/asm/MetroidPrime/Tweaks/CTweakGui.s b/asm/MetroidPrime/Tweaks/CTweakGui.s index 750bc1c7..3acf4f48 100644 --- a/asm/MetroidPrime/Tweaks/CTweakGui.s +++ b/asm/MetroidPrime/Tweaks/CTweakGui.s @@ -126,7 +126,7 @@ FaceReflectionDistanceDebugValueToActualValue__9CTweakGuiFf: __ct__9CTweakGuiFR12CInputStream: /* 80074360 000712C0 94 21 FF 90 */ stwu r1, -0x70(r1) /* 80074364 000712C4 7C 08 02 A6 */ mflr r0 -/* 80074368 000712C8 3C C0 80 3E */ lis r6, lbl_803D9CC4@ha +/* 80074368 000712C8 3C C0 80 3E */ lis r6, __vt__12ITweakObject@ha /* 8007436C 000712CC 3C A0 80 3E */ lis r5, lbl_803DA440@ha /* 80074370 000712D0 90 01 00 74 */ stw r0, 0x74(r1) /* 80074374 000712D4 38 05 A4 40 */ addi r0, r5, lbl_803DA440@l @@ -134,7 +134,7 @@ __ct__9CTweakGuiFR12CInputStream: /* 8007437C 000712DC 7C 9F 23 78 */ mr r31, r4 /* 80074380 000712E0 93 C1 00 68 */ stw r30, 0x68(r1) /* 80074384 000712E4 7C 7E 1B 78 */ mr r30, r3 -/* 80074388 000712E8 38 66 9C C4 */ addi r3, r6, lbl_803D9CC4@l +/* 80074388 000712E8 38 66 9C C4 */ addi r3, r6, __vt__12ITweakObject@l /* 8007438C 000712EC 93 A1 00 64 */ stw r29, 0x64(r1) /* 80074390 000712F0 93 81 00 60 */ stw r28, 0x60(r1) /* 80074394 000712F4 90 7E 00 00 */ stw r3, 0(r30) @@ -896,8 +896,8 @@ lbl_80074EE4: lbl_80074EF4: /* 80074EF4 00071E54 28 1E 00 00 */ cmplwi r30, 0 /* 80074EF8 00071E58 41 82 00 10 */ beq lbl_80074F08 -/* 80074EFC 00071E5C 3C 60 80 3E */ lis r3, lbl_803D9CC4@ha -/* 80074F00 00071E60 38 03 9C C4 */ addi r0, r3, lbl_803D9CC4@l +/* 80074EFC 00071E5C 3C 60 80 3E */ lis r3, __vt__12ITweakObject@ha +/* 80074F00 00071E60 38 03 9C C4 */ addi r0, r3, __vt__12ITweakObject@l /* 80074F04 00071E64 90 1E 00 00 */ stw r0, 0(r30) lbl_80074F08: /* 80074F08 00071E68 7F E0 07 35 */ extsh. r0, r31 diff --git a/asm/MetroidPrime/Tweaks/CTweakGuiColors.s b/asm/MetroidPrime/Tweaks/CTweakGuiColors.s index a655a68d..ca1ebdce 100644 --- a/asm/MetroidPrime/Tweaks/CTweakGuiColors.s +++ b/asm/MetroidPrime/Tweaks/CTweakGuiColors.s @@ -17,9 +17,9 @@ lbl_803E5748: __ct__15CTweakGuiColorsFR12CInputStream: /* 801CDA2C 001CA98C 94 21 FF F0 */ stwu r1, -0x10(r1) /* 801CDA30 001CA990 7C 08 02 A6 */ mflr r0 -/* 801CDA34 001CA994 3C A0 80 3E */ lis r5, lbl_803D9CC4@ha +/* 801CDA34 001CA994 3C A0 80 3E */ lis r5, __vt__12ITweakObject@ha /* 801CDA38 001CA998 90 01 00 14 */ stw r0, 0x14(r1) -/* 801CDA3C 001CA99C 38 05 9C C4 */ addi r0, r5, lbl_803D9CC4@l +/* 801CDA3C 001CA99C 38 05 9C C4 */ addi r0, r5, __vt__12ITweakObject@l /* 801CDA40 001CA9A0 93 E1 00 0C */ stw r31, 0xc(r1) /* 801CDA44 001CA9A4 7C 9F 23 78 */ mr r31, r4 /* 801CDA48 001CA9A8 93 C1 00 08 */ stw r30, 8(r1) @@ -487,8 +487,8 @@ lbl_801CE144: lbl_801CE14C: /* 801CE14C 001CB0AC 28 1F 00 00 */ cmplwi r31, 0 /* 801CE150 001CB0B0 41 82 00 10 */ beq lbl_801CE160 -/* 801CE154 001CB0B4 3C 60 80 3E */ lis r3, lbl_803D9CC4@ha -/* 801CE158 001CB0B8 38 03 9C C4 */ addi r0, r3, lbl_803D9CC4@l +/* 801CE154 001CB0B4 3C 60 80 3E */ lis r3, __vt__12ITweakObject@ha +/* 801CE158 001CB0B8 38 03 9C C4 */ addi r0, r3, __vt__12ITweakObject@l /* 801CE15C 001CB0BC 90 1F 00 00 */ stw r0, 0(r31) lbl_801CE160: /* 801CE160 001CB0C0 7C 80 07 35 */ extsh. r0, r4 diff --git a/asm/MetroidPrime/Tweaks/CTweakGunRes.s b/asm/MetroidPrime/Tweaks/CTweakGunRes.s index 440eb09a..8cf91ebb 100644 --- a/asm/MetroidPrime/Tweaks/CTweakGunRes.s +++ b/asm/MetroidPrime/Tweaks/CTweakGunRes.s @@ -59,9 +59,9 @@ lbl_800BB9DC: __ct__12CTweakGunResFR12CInputStream: /* 800BB9E8 000B8948 94 21 FE 20 */ stwu r1, -0x1e0(r1) /* 800BB9EC 000B894C 7C 08 02 A6 */ mflr r0 -/* 800BB9F0 000B8950 3C A0 80 3E */ lis r5, lbl_803D9CC4@ha +/* 800BB9F0 000B8950 3C A0 80 3E */ lis r5, __vt__12ITweakObject@ha /* 800BB9F4 000B8954 90 01 01 E4 */ stw r0, 0x1e4(r1) -/* 800BB9F8 000B8958 38 05 9C C4 */ addi r0, r5, lbl_803D9CC4@l +/* 800BB9F8 000B8958 38 05 9C C4 */ addi r0, r5, __vt__12ITweakObject@l /* 800BB9FC 000B895C 38 A1 00 58 */ addi r5, r1, 0x58 /* 800BBA00 000B8960 BF 21 01 C4 */ stmw r25, 0x1c4(r1) /* 800BBA04 000B8964 7C 7C 1B 78 */ mr r28, r3 @@ -638,8 +638,8 @@ lbl_800BC230: lbl_800BC244: /* 800BC244 000B91A4 28 1E 00 00 */ cmplwi r30, 0 /* 800BC248 000B91A8 41 82 00 10 */ beq lbl_800BC258 -/* 800BC24C 000B91AC 3C 60 80 3E */ lis r3, lbl_803D9CC4@ha -/* 800BC250 000B91B0 38 03 9C C4 */ addi r0, r3, lbl_803D9CC4@l +/* 800BC24C 000B91AC 3C 60 80 3E */ lis r3, __vt__12ITweakObject@ha +/* 800BC250 000B91B0 38 03 9C C4 */ addi r0, r3, __vt__12ITweakObject@l /* 800BC254 000B91B4 90 1E 00 00 */ stw r0, 0(r30) lbl_800BC258: /* 800BC258 000B91B8 7F E0 07 35 */ extsh. r0, r31 @@ -688,4 +688,3 @@ lbl_803CDED4: .4byte 0 .4byte 0 .4byte 0 - diff --git a/asm/MetroidPrime/Tweaks/CTweakParticle.s b/asm/MetroidPrime/Tweaks/CTweakParticle.s index 1a2adf33..23245f94 100644 --- a/asm/MetroidPrime/Tweaks/CTweakParticle.s +++ b/asm/MetroidPrime/Tweaks/CTweakParticle.s @@ -3,8 +3,8 @@ .section .data .balign 8 -.global lbl_803DA088 -lbl_803DA088: +.global __vt__14CTweakParticle +__vt__14CTweakParticle: # ROM: 0x3D7088 .4byte 0 .4byte 0 @@ -17,17 +17,17 @@ lbl_803DA088: __ct__14CTweakParticleFR12CInputStream: /* 80059F20 00056E80 94 21 FF E0 */ stwu r1, -0x20(r1) /* 80059F24 00056E84 7C 08 02 A6 */ mflr r0 -/* 80059F28 00056E88 3C A0 80 3E */ lis r5, lbl_803D9CC4@ha +/* 80059F28 00056E88 3C A0 80 3E */ lis r5, __vt__12ITweakObject@ha /* 80059F2C 00056E8C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80059F30 00056E90 38 05 9C C4 */ addi r0, r5, lbl_803D9CC4@l +/* 80059F30 00056E90 38 05 9C C4 */ addi r0, r5, __vt__12ITweakObject@l /* 80059F34 00056E94 38 A1 00 10 */ addi r5, r1, 0x10 /* 80059F38 00056E98 93 E1 00 1C */ stw r31, 0x1c(r1) /* 80059F3C 00056E9C 7C 9F 23 78 */ mr r31, r4 /* 80059F40 00056EA0 93 C1 00 18 */ stw r30, 0x18(r1) /* 80059F44 00056EA4 7C 7E 1B 78 */ mr r30, r3 -/* 80059F48 00056EA8 3C 60 80 3E */ lis r3, lbl_803DA088@ha +/* 80059F48 00056EA8 3C 60 80 3E */ lis r3, __vt__14CTweakParticle@ha /* 80059F4C 00056EAC 90 1E 00 00 */ stw r0, 0(r30) -/* 80059F50 00056EB0 38 03 A0 88 */ addi r0, r3, lbl_803DA088@l +/* 80059F50 00056EB0 38 03 A0 88 */ addi r0, r3, __vt__14CTweakParticle@l /* 80059F54 00056EB4 38 7E 00 04 */ addi r3, r30, 4 /* 80059F58 00056EB8 90 1E 00 00 */ stw r0, 0(r30) /* 80059F5C 00056EBC 48 2E 43 9D */ bl "__ct__Q24rstl66basic_string,Q24rstl17rmemory_allocator>FR12CInputStreamRCQ24rstl17rmemory_allocator" @@ -57,9 +57,9 @@ __dt__14CTweakParticleFv: /* 80059FB0 00056F10 93 C1 00 08 */ stw r30, 8(r1) /* 80059FB4 00056F14 7C 7E 1B 79 */ or. r30, r3, r3 /* 80059FB8 00056F18 41 82 00 64 */ beq lbl_8005A01C -/* 80059FBC 00056F1C 3C 60 80 3E */ lis r3, lbl_803DA088@ha +/* 80059FBC 00056F1C 3C 60 80 3E */ lis r3, __vt__14CTweakParticle@ha /* 80059FC0 00056F20 34 1E 00 24 */ addic. r0, r30, 0x24 -/* 80059FC4 00056F24 38 03 A0 88 */ addi r0, r3, lbl_803DA088@l +/* 80059FC4 00056F24 38 03 A0 88 */ addi r0, r3, __vt__14CTweakParticle@l /* 80059FC8 00056F28 90 1E 00 00 */ stw r0, 0(r30) /* 80059FCC 00056F2C 41 82 00 0C */ beq lbl_80059FD8 /* 80059FD0 00056F30 38 7E 00 24 */ addi r3, r30, 0x24 @@ -77,8 +77,8 @@ lbl_80059FE8: lbl_80059FF8: /* 80059FF8 00056F58 28 1E 00 00 */ cmplwi r30, 0 /* 80059FFC 00056F5C 41 82 00 10 */ beq lbl_8005A00C -/* 8005A000 00056F60 3C 60 80 3E */ lis r3, lbl_803D9CC4@ha -/* 8005A004 00056F64 38 03 9C C4 */ addi r0, r3, lbl_803D9CC4@l +/* 8005A000 00056F60 3C 60 80 3E */ lis r3, __vt__12ITweakObject@ha +/* 8005A004 00056F64 38 03 9C C4 */ addi r0, r3, __vt__12ITweakObject@l /* 8005A008 00056F68 90 1E 00 00 */ stw r0, 0(r30) lbl_8005A00C: /* 8005A00C 00056F6C 7F E0 07 35 */ extsh. r0, r31 diff --git a/asm/MetroidPrime/Tweaks/CTweakPlayer.s b/asm/MetroidPrime/Tweaks/CTweakPlayer.s index 167aee7c..a401cd4e 100644 --- a/asm/MetroidPrime/Tweaks/CTweakPlayer.s +++ b/asm/MetroidPrime/Tweaks/CTweakPlayer.s @@ -11,8 +11,8 @@ lbl_803D9CB8: .4byte __dt__12CTweakPlayerFv # ITweakObject vtable, ODR strikes again -.global lbl_803D9CC4 -lbl_803D9CC4: +.global __vt__12ITweakObject +__vt__12ITweakObject: # ROM: 0x3D6CC4 .4byte 0 .4byte 0 @@ -48,7 +48,7 @@ lbl_805AA11C: __ct__12CTweakPlayerFR12CInputStream: /* 80034E04 00031D64 94 21 FF E0 */ stwu r1, -0x20(r1) /* 80034E08 00031D68 7C 08 02 A6 */ mflr r0 -/* 80034E0C 00031D6C 3C C0 80 3E */ lis r6, lbl_803D9CC4@ha +/* 80034E0C 00031D6C 3C C0 80 3E */ lis r6, __vt__12ITweakObject@ha /* 80034E10 00031D70 3C A0 80 3E */ lis r5, lbl_803D9CB8@ha /* 80034E14 00031D74 90 01 00 24 */ stw r0, 0x24(r1) /* 80034E18 00031D78 38 05 9C B8 */ addi r0, r5, lbl_803D9CB8@l @@ -57,7 +57,7 @@ __ct__12CTweakPlayerFR12CInputStream: /* 80034E24 00031D84 7C 9F 23 78 */ mr r31, r4 /* 80034E28 00031D88 93 C1 00 18 */ stw r30, 0x18(r1) /* 80034E2C 00031D8C 7C 7E 1B 78 */ mr r30, r3 -/* 80034E30 00031D90 38 66 9C C4 */ addi r3, r6, lbl_803D9CC4@l +/* 80034E30 00031D90 38 66 9C C4 */ addi r3, r6, __vt__12ITweakObject@l /* 80034E34 00031D94 93 A1 00 14 */ stw r29, 0x14(r1) /* 80034E38 00031D98 3B A0 00 00 */ li r29, 0 /* 80034E3C 00031D9C 93 81 00 10 */ stw r28, 0x10(r1) @@ -761,8 +761,8 @@ __dt__12CTweakPlayerFv: /* 800358F8 00032858 38 03 9C B8 */ addi r0, r3, lbl_803D9CB8@l /* 800358FC 0003285C 90 1F 00 00 */ stw r0, 0(r31) /* 80035900 00032860 41 82 00 10 */ beq lbl_80035910 -/* 80035904 00032864 3C 60 80 3E */ lis r3, lbl_803D9CC4@ha -/* 80035908 00032868 38 03 9C C4 */ addi r0, r3, lbl_803D9CC4@l +/* 80035904 00032864 3C 60 80 3E */ lis r3, __vt__12ITweakObject@ha +/* 80035908 00032868 38 03 9C C4 */ addi r0, r3, __vt__12ITweakObject@l /* 8003590C 0003286C 90 1F 00 00 */ stw r0, 0(r31) lbl_80035910: /* 80035910 00032870 7C 80 07 35 */ extsh. r0, r4 diff --git a/asm/MetroidPrime/Tweaks/CTweakPlayerControl.s b/asm/MetroidPrime/Tweaks/CTweakPlayerControl.s index 40d9a647..8840ae30 100644 --- a/asm/MetroidPrime/Tweaks/CTweakPlayerControl.s +++ b/asm/MetroidPrime/Tweaks/CTweakPlayerControl.s @@ -32,9 +32,9 @@ lbl_8006F96C: __ct__19CTweakPlayerControlFR12CInputStream: /* 8006F97C 0006C8DC 94 21 FE E0 */ stwu r1, -0x120(r1) /* 8006F980 0006C8E0 7C 08 02 A6 */ mflr r0 -/* 8006F984 0006C8E4 3C A0 80 3E */ lis r5, lbl_803D9CC4@ha +/* 8006F984 0006C8E4 3C A0 80 3E */ lis r5, __vt__12ITweakObject@ha /* 8006F988 0006C8E8 90 01 01 24 */ stw r0, 0x124(r1) -/* 8006F98C 0006C8EC 38 05 9C C4 */ addi r0, r5, lbl_803D9CC4@l +/* 8006F98C 0006C8EC 38 05 9C C4 */ addi r0, r5, __vt__12ITweakObject@l /* 8006F990 0006C8F0 93 E1 01 1C */ stw r31, 0x11c(r1) /* 8006F994 0006C8F4 7C 7F 1B 78 */ mr r31, r3 /* 8006F998 0006C8F8 3C 60 80 3E */ lis r3, lbl_803DA350@ha @@ -214,8 +214,8 @@ lbl_8006FBE0: lbl_8006FBE8: /* 8006FBE8 0006CB48 28 1F 00 00 */ cmplwi r31, 0 /* 8006FBEC 0006CB4C 41 82 00 10 */ beq lbl_8006FBFC -/* 8006FBF0 0006CB50 3C 60 80 3E */ lis r3, lbl_803D9CC4@ha -/* 8006FBF4 0006CB54 38 03 9C C4 */ addi r0, r3, lbl_803D9CC4@l +/* 8006FBF0 0006CB50 3C 60 80 3E */ lis r3, __vt__12ITweakObject@ha +/* 8006FBF4 0006CB54 38 03 9C C4 */ addi r0, r3, __vt__12ITweakObject@l /* 8006FBF8 0006CB58 90 1F 00 00 */ stw r0, 0(r31) lbl_8006FBFC: /* 8006FBFC 0006CB5C 7C 80 07 35 */ extsh. r0, r4 diff --git a/asm/MetroidPrime/Tweaks/CTweakPlayerGun.s b/asm/MetroidPrime/Tweaks/CTweakPlayerGun.s index 2a863884..21c4739d 100644 --- a/asm/MetroidPrime/Tweaks/CTweakPlayerGun.s +++ b/asm/MetroidPrime/Tweaks/CTweakPlayerGun.s @@ -304,11 +304,11 @@ __ct__15CTweakPlayerGunFR12CInputStream: /* 8006FFB4 0006CF14 DB A1 01 A0 */ stfd f29, 0x1a0(r1) /* 8006FFB8 0006CF18 F3 A1 01 A8 */ psq_st f29, 424(r1), 0, qr0 /* 8006FFBC 0006CF1C BF 41 01 88 */ stmw r26, 0x188(r1) -/* 8006FFC0 0006CF20 3C C0 80 3E */ lis r6, lbl_803D9CC4@ha +/* 8006FFC0 0006CF20 3C C0 80 3E */ lis r6, __vt__12ITweakObject@ha /* 8006FFC4 0006CF24 3C A0 80 3E */ lis r5, lbl_803DA384@ha /* 8006FFC8 0006CF28 7C 7E 1B 78 */ mr r30, r3 /* 8006FFCC 0006CF2C 7C 9F 23 78 */ mr r31, r4 -/* 8006FFD0 0006CF30 38 66 9C C4 */ addi r3, r6, lbl_803D9CC4@l +/* 8006FFD0 0006CF30 38 66 9C C4 */ addi r3, r6, __vt__12ITweakObject@l /* 8006FFD4 0006CF34 38 05 A3 84 */ addi r0, r5, lbl_803DA384@l /* 8006FFD8 0006CF38 90 7E 00 00 */ stw r3, 0(r30) /* 8006FFDC 0006CF3C 7F E3 FB 78 */ mr r3, r31 @@ -999,8 +999,8 @@ lbl_80070A28: lbl_80070A30: /* 80070A30 0006D990 28 1F 00 00 */ cmplwi r31, 0 /* 80070A34 0006D994 41 82 00 10 */ beq lbl_80070A44 -/* 80070A38 0006D998 3C 60 80 3E */ lis r3, lbl_803D9CC4@ha -/* 80070A3C 0006D99C 38 03 9C C4 */ addi r0, r3, lbl_803D9CC4@l +/* 80070A38 0006D998 3C 60 80 3E */ lis r3, __vt__12ITweakObject@ha +/* 80070A3C 0006D99C 38 03 9C C4 */ addi r0, r3, __vt__12ITweakObject@l /* 80070A40 0006D9A0 90 1F 00 00 */ stw r0, 0(r31) lbl_80070A44: /* 80070A44 0006D9A4 7C 80 07 35 */ extsh. r0, r4 @@ -1048,4 +1048,3 @@ lbl_803CD2A4: .4byte 0 .4byte 0 .4byte 0 - diff --git a/asm/MetroidPrime/Tweaks/CTweakPlayerRes.s b/asm/MetroidPrime/Tweaks/CTweakPlayerRes.s index 886374b1..701c19e9 100644 --- a/asm/MetroidPrime/Tweaks/CTweakPlayerRes.s +++ b/asm/MetroidPrime/Tweaks/CTweakPlayerRes.s @@ -47,9 +47,9 @@ lbl_801AC250: __ct__15CTweakPlayerResFR12CInputStream: /* 801AC260 001A91C0 94 21 FE 70 */ stwu r1, -0x190(r1) /* 801AC264 001A91C4 7C 08 02 A6 */ mflr r0 -/* 801AC268 001A91C8 3C A0 80 3E */ lis r5, lbl_803D9CC4@ha +/* 801AC268 001A91C8 3C A0 80 3E */ lis r5, __vt__12ITweakObject@ha /* 801AC26C 001A91CC 90 01 01 94 */ stw r0, 0x194(r1) -/* 801AC270 001A91D0 38 05 9C C4 */ addi r0, r5, lbl_803D9CC4@l +/* 801AC270 001A91D0 38 05 9C C4 */ addi r0, r5, __vt__12ITweakObject@l /* 801AC274 001A91D4 38 A1 00 2C */ addi r5, r1, 0x2c /* 801AC278 001A91D8 93 E1 01 8C */ stw r31, 0x18c(r1) /* 801AC27C 001A91DC 7C 9F 23 78 */ mr r31, r4 @@ -1102,8 +1102,8 @@ lbl_801AD0B0: lbl_801AD0B8: /* 801AD0B8 001AA018 28 1F 00 00 */ cmplwi r31, 0 /* 801AD0BC 001AA01C 41 82 00 10 */ beq lbl_801AD0CC -/* 801AD0C0 001AA020 3C 60 80 3E */ lis r3, lbl_803D9CC4@ha -/* 801AD0C4 001AA024 38 03 9C C4 */ addi r0, r3, lbl_803D9CC4@l +/* 801AD0C0 001AA020 3C 60 80 3E */ lis r3, __vt__12ITweakObject@ha +/* 801AD0C4 001AA024 38 03 9C C4 */ addi r0, r3, __vt__12ITweakObject@l /* 801AD0C8 001AA028 90 1F 00 00 */ stw r0, 0(r31) lbl_801AD0CC: /* 801AD0CC 001AA02C 7C 80 07 35 */ extsh. r0, r4 @@ -1139,4 +1139,3 @@ lbl_805AC590: # ROM: 0x3F8E30 .float 5.0 .4byte 0 - diff --git a/asm/MetroidPrime/Tweaks/CTweakSlideShow.s b/asm/MetroidPrime/Tweaks/CTweakSlideShow.s index c0aac039..56978778 100644 --- a/asm/MetroidPrime/Tweaks/CTweakSlideShow.s +++ b/asm/MetroidPrime/Tweaks/CTweakSlideShow.s @@ -18,9 +18,9 @@ __ct__15CTweakSlideShowFR12CInputStream: /* 8029C5F8 00299558 94 21 FF B0 */ stwu r1, -0x50(r1) /* 8029C5FC 0029955C 7C 08 02 A6 */ mflr r0 /* 8029C600 00299560 3C A0 80 3F */ lis r5, lbl_803EC000@ha -/* 8029C604 00299564 3C C0 80 3E */ lis r6, lbl_803D9CC4@ha +/* 8029C604 00299564 3C C0 80 3E */ lis r6, __vt__12ITweakObject@ha /* 8029C608 00299568 90 01 00 54 */ stw r0, 0x54(r1) -/* 8029C60C 0029956C 38 06 9C C4 */ addi r0, r6, lbl_803D9CC4@l +/* 8029C60C 0029956C 38 06 9C C4 */ addi r0, r6, __vt__12ITweakObject@l /* 8029C610 00299570 38 A5 C0 00 */ addi r5, r5, lbl_803EC000@l /* 8029C614 00299574 93 E1 00 4C */ stw r31, 0x4c(r1) /* 8029C618 00299578 7C 9F 23 78 */ mr r31, r4 @@ -158,8 +158,8 @@ lbl_8029C808: lbl_8029C818: /* 8029C818 00299778 28 1E 00 00 */ cmplwi r30, 0 /* 8029C81C 0029977C 41 82 00 10 */ beq lbl_8029C82C -/* 8029C820 00299780 3C 60 80 3E */ lis r3, lbl_803D9CC4@ha -/* 8029C824 00299784 38 03 9C C4 */ addi r0, r3, lbl_803D9CC4@l +/* 8029C820 00299780 3C 60 80 3E */ lis r3, __vt__12ITweakObject@ha +/* 8029C824 00299784 38 03 9C C4 */ addi r0, r3, __vt__12ITweakObject@l /* 8029C828 00299788 90 1E 00 00 */ stw r0, 0(r30) lbl_8029C82C: /* 8029C82C 0029978C 7F E0 07 35 */ extsh. r0, r31 @@ -200,4 +200,3 @@ lbl_805ADD58: lbl_805ADD5C: # ROM: 0x3FA5FC .float 0.001 - diff --git a/asm/MetroidPrime/Tweaks/CTweakTargeting.s b/asm/MetroidPrime/Tweaks/CTweakTargeting.s index 649adea3..d0e21970 100644 --- a/asm/MetroidPrime/Tweaks/CTweakTargeting.s +++ b/asm/MetroidPrime/Tweaks/CTweakTargeting.s @@ -54,11 +54,11 @@ __ct__15CTweakTargetingFR12CInputStream: /* 800B59E0 000B2940 93 C1 00 18 */ stw r30, 0x18(r1) /* 800B59E4 000B2944 93 A1 00 14 */ stw r29, 0x14(r1) /* 800B59E8 000B2948 93 81 00 10 */ stw r28, 0x10(r1) -/* 800B59EC 000B294C 3C C0 80 3E */ lis r6, lbl_803D9CC4@ha +/* 800B59EC 000B294C 3C C0 80 3E */ lis r6, __vt__12ITweakObject@ha /* 800B59F0 000B2950 3C A0 80 3E */ lis r5, lbl_803DF428@ha /* 800B59F4 000B2954 7C 7E 1B 78 */ mr r30, r3 /* 800B59F8 000B2958 7C 9F 23 78 */ mr r31, r4 -/* 800B59FC 000B295C 38 66 9C C4 */ addi r3, r6, lbl_803D9CC4@l +/* 800B59FC 000B295C 38 66 9C C4 */ addi r3, r6, __vt__12ITweakObject@l /* 800B5A00 000B2960 38 05 F4 28 */ addi r0, r5, lbl_803DF428@l /* 800B5A04 000B2964 90 7E 00 00 */ stw r3, 0(r30) /* 800B5A08 000B2968 7F E3 FB 78 */ mr r3, r31 @@ -966,8 +966,8 @@ lbl_800B673C: /* 800B6744 000B36A4 4B FF FB 65 */ bl sub_800b62a8 /* 800B6748 000B36A8 28 1E 00 00 */ cmplwi r30, 0 /* 800B674C 000B36AC 41 82 00 10 */ beq lbl_800B675C -/* 800B6750 000B36B0 3C 60 80 3E */ lis r3, lbl_803D9CC4@ha -/* 800B6754 000B36B4 38 03 9C C4 */ addi r0, r3, lbl_803D9CC4@l +/* 800B6750 000B36B0 3C 60 80 3E */ lis r3, __vt__12ITweakObject@ha +/* 800B6754 000B36B4 38 03 9C C4 */ addi r0, r3, __vt__12ITweakObject@l /* 800B6758 000B36B8 90 1E 00 00 */ stw r0, 0(r30) lbl_800B675C: /* 800B675C 000B36BC 7F E0 07 35 */ extsh. r0, r31 @@ -1157,4 +1157,3 @@ lbl_803CDE80: # ROM: 0x3CAE80 .asciz "??(??)" .balign 4 - diff --git a/configure.py b/configure.py index 31c493e7..9da46f31 100755 --- a/configure.py +++ b/configure.py @@ -71,7 +71,7 @@ LIBS = [ ["MetroidPrime/CIOWin", True], "MetroidPrime/CActor", "MetroidPrime/CWorld", - "MetroidPrime/Tweaks/CTweakParticle", + ["MetroidPrime/Tweaks/CTweakParticle", True], "MetroidPrime/Clamp_int", ["MetroidPrime/CArchMsgParmControllerStatus", True], "MetroidPrime/CExplosion", diff --git a/include/Kyoto/TOneStatic.hpp b/include/Kyoto/TOneStatic.hpp index 4a403104..4d1d1b4d 100644 --- a/include/Kyoto/TOneStatic.hpp +++ b/include/Kyoto/TOneStatic.hpp @@ -18,11 +18,14 @@ private: static uchar sAllocSpace[sizeof(T)]; return &sAllocSpace; } - static uint& ReferenceCount() { + static uint& ReferenceCount(); +}; + +template < typename T > +uint& TOneStatic< T >::ReferenceCount() { static uint sReferenceCount = 0; return sReferenceCount; - } -}; +} template < typename T > void TOneStatic< T >::operator delete(void* ptr) { diff --git a/include/MetroidPrime/Tweaks/CTweakParticle.hpp b/include/MetroidPrime/Tweaks/CTweakParticle.hpp new file mode 100644 index 00000000..e84524f6 --- /dev/null +++ b/include/MetroidPrime/Tweaks/CTweakParticle.hpp @@ -0,0 +1,23 @@ +#ifndef _CTWEAKPARTICLE +#define _CTWEAKPARTICLE + +#include "MetroidPrime/Tweaks/ITweakObject.hpp" + +#include "Kyoto/TOneStatic.hpp" + +#include "rstl/string.hpp" + +class CInputStream; +class CTweakParticle; + +class CTweakParticle : public ITweakObject, public TOneStatic< CTweakParticle > { + rstl::string m_particle; + rstl::string m_powerBeam; + rstl::string m_genThrust; + +public: + CTweakParticle(CInputStream&); + ~CTweakParticle(); +}; + +#endif // _CTWEAKPARTICLE diff --git a/include/MetroidPrime/Tweaks/ITweakObject.hpp b/include/MetroidPrime/Tweaks/ITweakObject.hpp index ffc8ae3b..39630ba7 100644 --- a/include/MetroidPrime/Tweaks/ITweakObject.hpp +++ b/include/MetroidPrime/Tweaks/ITweakObject.hpp @@ -5,7 +5,7 @@ class ITweakObject { public: - virtual ~ITweakObject() = 0; + virtual ~ITweakObject() {}; }; #endif // _ITWEAKOBJECT diff --git a/include/rstl/string.hpp b/include/rstl/string.hpp index 48f5a53a..d822143a 100644 --- a/include/rstl/string.hpp +++ b/include/rstl/string.hpp @@ -5,6 +5,8 @@ #include "rstl/rmemory_allocator.hpp" +class CInputStream; + namespace rstl { template < typename _CharTp > struct char_traits {}; @@ -64,6 +66,8 @@ public: // ++x4_cow->x4_refCount; // } + basic_string(CInputStream& in, const Alloc& = rmemory_allocator()); + basic_string(const _CharTp* data, int size = -1, const Alloc& = rmemory_allocator()); // { // if (size <= 0 && !data) diff --git a/obj_files.mk b/obj_files.mk index 43a6473a..876c48fd 100644 --- a/obj_files.mk +++ b/obj_files.mk @@ -38,7 +38,7 @@ METROIDPRIME :=\ $(BUILD_DIR)/src/MetroidPrime/CIOWin.o\ $(BUILD_DIR)/asm/MetroidPrime/CActor.o\ $(BUILD_DIR)/asm/MetroidPrime/CWorld.o\ - $(BUILD_DIR)/asm/MetroidPrime/Tweaks/CTweakParticle.o\ + $(BUILD_DIR)/src/MetroidPrime/Tweaks/CTweakParticle.o\ $(BUILD_DIR)/asm/MetroidPrime/Clamp_int.o\ $(BUILD_DIR)/src/MetroidPrime/CArchMsgParmControllerStatus.o\ $(BUILD_DIR)/asm/MetroidPrime/CExplosion.o\ diff --git a/src/MetroidPrime/Tweaks/CTweakParticle.cpp b/src/MetroidPrime/Tweaks/CTweakParticle.cpp new file mode 100644 index 00000000..34b5792d --- /dev/null +++ b/src/MetroidPrime/Tweaks/CTweakParticle.cpp @@ -0,0 +1,10 @@ +#include "MetroidPrime/Tweaks/CTweakParticle.hpp" + +#include "Kyoto/Streams/CInputStream.hpp" + +CTweakParticle::~CTweakParticle() {} + +CTweakParticle::CTweakParticle(CInputStream& in) +: m_particle(in), m_powerBeam(in), m_genThrust(in) +{ +}