diff --git a/asm/MetroidPrime/CParticleDatabase.s b/asm/MetroidPrime/CParticleDatabase.s index e7c2a203..ed6f33f0 100644 --- a/asm/MetroidPrime/CParticleDatabase.s +++ b/asm/MetroidPrime/CParticleDatabase.s @@ -89,6 +89,39 @@ lbl_805AAA4C: .section .text, "ax" +.global "ReleaseData__Q24rstl22rc_ptr<12CParticleGen>Fv" +"ReleaseData__Q24rstl22rc_ptr<12CParticleGen>Fv": +/* 800B7A00 000B4960 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 800B7A04 000B4964 7C 08 02 A6 */ mflr r0 +/* 800B7A08 000B4968 90 01 00 14 */ stw r0, 0x14(r1) +/* 800B7A0C 000B496C 93 E1 00 0C */ stw r31, 0xc(r1) +/* 800B7A10 000B4970 7C 7F 1B 78 */ mr r31, r3 +/* 800B7A14 000B4974 80 83 00 00 */ lwz r4, 0(r3) +/* 800B7A18 000B4978 80 64 00 04 */ lwz r3, 4(r4) +/* 800B7A1C 000B497C 34 03 FF FF */ addic. r0, r3, -1 +/* 800B7A20 000B4980 90 04 00 04 */ stw r0, 4(r4) +/* 800B7A24 000B4984 41 81 00 38 */ bgt lbl_800B7A5C +/* 800B7A28 000B4988 80 7F 00 00 */ lwz r3, 0(r31) +/* 800B7A2C 000B498C 80 63 00 00 */ lwz r3, 0(r3) +/* 800B7A30 000B4990 28 03 00 00 */ cmplwi r3, 0 +/* 800B7A34 000B4994 41 82 00 18 */ beq lbl_800B7A4C +/* 800B7A38 000B4998 81 83 00 00 */ lwz r12, 0(r3) +/* 800B7A3C 000B499C 38 80 00 01 */ li r4, 1 +/* 800B7A40 000B49A0 81 8C 00 08 */ lwz r12, 8(r12) +/* 800B7A44 000B49A4 7D 89 03 A6 */ mtctr r12 +/* 800B7A48 000B49A8 4E 80 04 21 */ bctrl +lbl_800B7A4C: +/* 800B7A4C 000B49AC 80 7F 00 00 */ lwz r3, 0(r31) +/* 800B7A50 000B49B0 28 03 00 00 */ cmplwi r3, 0 +/* 800B7A54 000B49B4 41 82 00 08 */ beq lbl_800B7A5C +/* 800B7A58 000B49B8 48 25 DE D9 */ bl Free__7CMemoryFPCv +lbl_800B7A5C: +/* 800B7A5C 000B49BC 80 01 00 14 */ lwz r0, 0x14(r1) +/* 800B7A60 000B49C0 83 E1 00 0C */ lwz r31, 0xc(r1) +/* 800B7A64 000B49C4 7C 08 03 A6 */ mtlr r0 +/* 800B7A68 000B49C8 38 21 00 10 */ addi r1, r1, 0x10 +/* 800B7A6C 000B49CC 4E 80 00 20 */ blr + .global "SetModulationColorAllActiveEffectsForParticleDB__17CParticleDatabaseFRC6CColorRQ24rstl236map,Q24rstl17rmemory_allocator>,Q24rstl28auto_ptr<16CParticleGenInfo>,Q24rstl81less,Q24rstl17rmemory_allocator>>,Q24rstl17rmemory_allocator>" "SetModulationColorAllActiveEffectsForParticleDB__17CParticleDatabaseFRC6CColorRQ24rstl236map,Q24rstl17rmemory_allocator>,Q24rstl28auto_ptr<16CParticleGenInfo>,Q24rstl81less,Q24rstl17rmemory_allocator>>,Q24rstl17rmemory_allocator>": /* 800B7A70 000B49D0 94 21 FF E0 */ stwu r1, -0x20(r1) diff --git a/asm/MetroidPrime/CParticleGenInfo.s b/asm/MetroidPrime/CParticleGenInfo.s index 64953738..ccb94b5f 100644 --- a/asm/MetroidPrime/CParticleGenInfo.s +++ b/asm/MetroidPrime/CParticleGenInfo.s @@ -246,39 +246,6 @@ lbl_800B7904: /* 800B79F8 000B4958 38 21 00 30 */ addi r1, r1, 0x30 /* 800B79FC 000B495C 4E 80 00 20 */ blr -.global "ReleaseData__Q24rstl22rc_ptr<12CParticleGen>Fv" -"ReleaseData__Q24rstl22rc_ptr<12CParticleGen>Fv": -/* 800B7A00 000B4960 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800B7A04 000B4964 7C 08 02 A6 */ mflr r0 -/* 800B7A08 000B4968 90 01 00 14 */ stw r0, 0x14(r1) -/* 800B7A0C 000B496C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800B7A10 000B4970 7C 7F 1B 78 */ mr r31, r3 -/* 800B7A14 000B4974 80 83 00 00 */ lwz r4, 0(r3) -/* 800B7A18 000B4978 80 64 00 04 */ lwz r3, 4(r4) -/* 800B7A1C 000B497C 34 03 FF FF */ addic. r0, r3, -1 -/* 800B7A20 000B4980 90 04 00 04 */ stw r0, 4(r4) -/* 800B7A24 000B4984 41 81 00 38 */ bgt lbl_800B7A5C -/* 800B7A28 000B4988 80 7F 00 00 */ lwz r3, 0(r31) -/* 800B7A2C 000B498C 80 63 00 00 */ lwz r3, 0(r3) -/* 800B7A30 000B4990 28 03 00 00 */ cmplwi r3, 0 -/* 800B7A34 000B4994 41 82 00 18 */ beq lbl_800B7A4C -/* 800B7A38 000B4998 81 83 00 00 */ lwz r12, 0(r3) -/* 800B7A3C 000B499C 38 80 00 01 */ li r4, 1 -/* 800B7A40 000B49A0 81 8C 00 08 */ lwz r12, 8(r12) -/* 800B7A44 000B49A4 7D 89 03 A6 */ mtctr r12 -/* 800B7A48 000B49A8 4E 80 04 21 */ bctrl -lbl_800B7A4C: -/* 800B7A4C 000B49AC 80 7F 00 00 */ lwz r3, 0(r31) -/* 800B7A50 000B49B0 28 03 00 00 */ cmplwi r3, 0 -/* 800B7A54 000B49B4 41 82 00 08 */ beq lbl_800B7A5C -/* 800B7A58 000B49B8 48 25 DE D9 */ bl Free__7CMemoryFPCv -lbl_800B7A5C: -/* 800B7A5C 000B49BC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800B7A60 000B49C0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800B7A64 000B49C4 7C 08 03 A6 */ mtlr r0 -/* 800B7A68 000B49C8 38 21 00 10 */ addi r1, r1, 0x10 -/* 800B7A6C 000B49CC 4E 80 00 20 */ blr - .section .rodata .balign 8 .global lbl_803CDE88 diff --git a/configure.py b/configure.py index 6a5e1516..e2e9eb27 100755 --- a/configure.py +++ b/configure.py @@ -114,7 +114,7 @@ LIBS = [ "MetroidPrime/Tweaks/CTweakTargeting", "MetroidPrime/Tweaks/CTweakAutoMapper", ["MetroidPrime/CParticleGenInfoGeneric", True], - ["MetroidPrime/CParticleGenInfo", False], + ["MetroidPrime/CParticleGenInfo", True], "MetroidPrime/CParticleDatabase", "MetroidPrime/Tweaks/CTweakGunRes", "MetroidPrime/CTargetReticles", diff --git a/include/Kyoto/Particles/CParticleGen.hpp b/include/Kyoto/Particles/CParticleGen.hpp index 3182b907..33f7a525 100644 --- a/include/Kyoto/Particles/CParticleGen.hpp +++ b/include/Kyoto/Particles/CParticleGen.hpp @@ -26,8 +26,8 @@ public: virtual void SetParticleEmission(bool emission) = 0; virtual void SetModulationColor(const CColor& col) = 0; virtual void SetGeneratorRate(float rate) {} - virtual CTransform4f GetOrientation() const = 0; - virtual CVector3f GetTranslation() const = 0; + virtual const CTransform4f& GetOrientation() const = 0; + virtual const CVector3f& GetTranslation() const = 0; virtual CTransform4f GetGlobalOrientation() const = 0; virtual CVector3f GetGlobalTranslation() const = 0; virtual CVector3f GetGlobalScale() const = 0; diff --git a/obj_files.mk b/obj_files.mk index 7fa9565d..b3998434 100644 --- a/obj_files.mk +++ b/obj_files.mk @@ -81,7 +81,7 @@ METROIDPRIME :=\ $(BUILD_DIR)/asm/MetroidPrime/Tweaks/CTweakTargeting.o\ $(BUILD_DIR)/asm/MetroidPrime/Tweaks/CTweakAutoMapper.o\ $(BUILD_DIR)/src/MetroidPrime/CParticleGenInfoGeneric.o\ - $(BUILD_DIR)/asm/MetroidPrime/CParticleGenInfo.o\ + $(BUILD_DIR)/src/MetroidPrime/CParticleGenInfo.o\ $(BUILD_DIR)/asm/MetroidPrime/CParticleDatabase.o\ $(BUILD_DIR)/asm/MetroidPrime/Tweaks/CTweakGunRes.o\ $(BUILD_DIR)/asm/MetroidPrime/CTargetReticles.o\