diff --git a/asm/JSystem/JParticle/JPAParticle.s b/asm/JSystem/JParticle/JPAParticle.s
deleted file mode 100644
index 9a7f6dc90..000000000
--- a/asm/JSystem/JParticle/JPAParticle.s
+++ /dev/null
@@ -1,1524 +0,0 @@
-.include "macros.inc"
-.section .data, "wa" # 0x8049E220 - 0x804EFC20
-.balign 8
-.obj __vt__19JPAParticleCallBack, weak
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte execute__19JPAParticleCallBackFP14JPABaseEmitterP15JPABaseParticle
- .4byte draw__19JPAParticleCallBackFP14JPABaseEmitterP15JPABaseParticle
-.endobj __vt__19JPAParticleCallBack
-
-.section .sdata2, "a" # 0x80516360 - 0x80520E40
-.balign 8
-.obj lbl_80516C30, local
- .float 1.0
-.endobj lbl_80516C30
-.obj lbl_80516C34, local
- .float 0.0
-.endobj lbl_80516C34
-.obj lbl_80516C38, local
- .float 32.0
-.endobj lbl_80516C38
-.obj lbl_80516C3C, local
- .float 0.5
-.endobj lbl_80516C3C
-.obj lbl_80516C40, local
- .float 3.0
-.endobj lbl_80516C40
-.obj lbl_80516C44, local
- .float 32768.0
-.endobj lbl_80516C44
-.balign 8
-.obj lbl_80516C48, local
- .8byte 0x4330000080000000
-.endobj lbl_80516C48
-.balign 8
-.obj lbl_80516C50, local
- .8byte 0x4330000000000000
-.endobj lbl_80516C50
-
-.section .text, "ax" # 0x800056C0 - 0x80472F00
-.fn __dt__19JPAParticleCallBackFv, global
-/* 80094028 00090F68 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 8009402C 00090F6C 7C 08 02 A6 */ mflr r0
-/* 80094030 00090F70 90 01 00 14 */ stw r0, 0x14(r1)
-/* 80094034 00090F74 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 80094038 00090F78 7C 7F 1B 79 */ or. r31, r3, r3
-/* 8009403C 00090F7C 41 82 00 1C */ beq .L_80094058
-/* 80094040 00090F80 3C A0 80 4A */ lis r5, __vt__19JPAParticleCallBack@ha
-/* 80094044 00090F84 7C 80 07 35 */ extsh. r0, r4
-/* 80094048 00090F88 38 05 33 58 */ addi r0, r5, __vt__19JPAParticleCallBack@l
-/* 8009404C 00090F8C 90 1F 00 00 */ stw r0, 0(r31)
-/* 80094050 00090F90 40 81 00 08 */ ble .L_80094058
-/* 80094054 00090F94 4B F9 00 61 */ bl __dl__FPv
-.L_80094058:
-/* 80094058 00090F98 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 8009405C 00090F9C 7F E3 FB 78 */ mr r3, r31
-/* 80094060 00090FA0 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 80094064 00090FA4 7C 08 03 A6 */ mtlr r0
-/* 80094068 00090FA8 38 21 00 10 */ addi r1, r1, 0x10
-/* 8009406C 00090FAC 4E 80 00 20 */ blr
-.endfn __dt__19JPAParticleCallBackFv
-
-.fn init_p__15JPABaseParticleFP18JPAEmitterWorkData, global
-/* 80094070 00090FB0 94 21 FF 00 */ stwu r1, -0x100(r1)
-/* 80094074 00090FB4 7C 08 02 A6 */ mflr r0
-/* 80094078 00090FB8 90 01 01 04 */ stw r0, 0x104(r1)
-/* 8009407C 00090FBC DB E1 00 F0 */ stfd f31, 0xf0(r1)
-/* 80094080 00090FC0 F3 E1 00 F8 */ psq_st f31, 248(r1), 0, qr0
-/* 80094084 00090FC4 DB C1 00 E0 */ stfd f30, 0xe0(r1)
-/* 80094088 00090FC8 F3 C1 00 E8 */ psq_st f30, 232(r1), 0, qr0
-/* 8009408C 00090FCC DB A1 00 D0 */ stfd f29, 0xd0(r1)
-/* 80094090 00090FD0 F3 A1 00 D8 */ psq_st f29, 216(r1), 0, qr0
-/* 80094094 00090FD4 DB 81 00 C0 */ stfd f28, 0xc0(r1)
-/* 80094098 00090FD8 F3 81 00 C8 */ psq_st f28, 200(r1), 0, qr0
-/* 8009409C 00090FDC DB 61 00 B0 */ stfd f27, 0xb0(r1)
-/* 800940A0 00090FE0 F3 61 00 B8 */ psq_st f27, 184(r1), 0, qr0
-/* 800940A4 00090FE4 DB 41 00 A0 */ stfd f26, 0xa0(r1)
-/* 800940A8 00090FE8 F3 41 00 A8 */ psq_st f26, 168(r1), 0, qr0
-/* 800940AC 00090FEC BF 41 00 88 */ stmw r26, 0x88(r1)
-/* 800940B0 00090FF0 7C 9B 23 78 */ mr r27, r4
-/* 800940B4 00090FF4 7C 7A 1B 78 */ mr r26, r3
-/* 800940B8 00090FF8 80 A4 00 04 */ lwz r5, 4(r4)
-/* 800940BC 00090FFC 3C 60 00 19 */ lis r3, 0x0019660D@ha
-/* 800940C0 00091000 3C C0 43 30 */ lis r6, 0x4330
-/* 800940C4 00091004 83 C4 00 00 */ lwz r30, 0(r4)
-/* 800940C8 00091008 83 E5 00 20 */ lwz r31, 0x20(r5)
-/* 800940CC 0009100C 38 80 FF FF */ li r4, -1
-/* 800940D0 00091010 83 A5 00 1C */ lwz r29, 0x1c(r5)
-/* 800940D4 00091014 38 E3 66 0D */ addi r7, r3, 0x0019660D@l
-/* 800940D8 00091018 83 85 00 2C */ lwz r28, 0x2c(r5)
-/* 800940DC 0009101C 38 00 00 00 */ li r0, 0
-/* 800940E0 00091020 C0 42 88 D0 */ lfs f2, lbl_80516C30@sda21(r2)
-/* 800940E4 00091024 38 7B 00 D8 */ addi r3, r27, 0xd8
-/* 800940E8 00091028 B0 9A 00 80 */ sth r4, 0x80(r26)
-/* 800940EC 0009102C 38 9B 00 10 */ addi r4, r27, 0x10
-/* 800940F0 00091030 C8 A2 88 E8 */ lfd f5, lbl_80516C48@sda21(r2)
-/* 800940F4 00091034 38 BA 00 0C */ addi r5, r26, 0xc
-/* 800940F8 00091038 81 1E 00 C4 */ lwz r8, 0xc4(r30)
-/* 800940FC 0009103C 90 C1 00 70 */ stw r6, 0x70(r1)
-/* 80094100 00091040 7C C8 39 D6 */ mullw r6, r8, r7
-/* 80094104 00091044 C0 02 88 D4 */ lfs f0, lbl_80516C34@sda21(r2)
-/* 80094108 00091048 3C C6 3C 6F */ addis r6, r6, 0x3c6f
-/* 8009410C 0009104C 38 C6 F3 5F */ addi r6, r6, -3233
-/* 80094110 00091050 90 DE 00 C4 */ stw r6, 0xc4(r30)
-/* 80094114 00091054 54 C6 BA 7E */ srwi r6, r6, 9
-/* 80094118 00091058 64 C6 3F 80 */ oris r6, r6, 0x3f80
-/* 8009411C 0009105C 90 C1 00 38 */ stw r6, 0x38(r1)
-/* 80094120 00091060 A8 DE 00 52 */ lha r6, 0x52(r30)
-/* 80094124 00091064 C0 21 00 38 */ lfs f1, 0x38(r1)
-/* 80094128 00091068 6C C7 80 00 */ xoris r7, r6, 0x8000
-/* 8009412C 0009106C 80 DC 00 00 */ lwz r6, 0(r28)
-/* 80094130 00091070 90 E1 00 74 */ stw r7, 0x74(r1)
-/* 80094134 00091074 EC 21 10 28 */ fsubs f1, f1, f2
-/* 80094138 00091078 C0 66 00 54 */ lfs f3, 0x54(r6)
-/* 8009413C 0009107C C8 81 00 70 */ lfd f4, 0x70(r1)
-/* 80094140 00091080 EC 23 10 7C */ fnmsubs f1, f3, f1, f2
-/* 80094144 00091084 EC 44 28 28 */ fsubs f2, f4, f5
-/* 80094148 00091088 EC 22 00 72 */ fmuls f1, f2, f1
-/* 8009414C 0009108C FC 20 08 1E */ fctiwz f1, f1
-/* 80094150 00091090 D8 21 00 78 */ stfd f1, 0x78(r1)
-/* 80094154 00091094 80 C1 00 7C */ lwz r6, 0x7c(r1)
-/* 80094158 00091098 B0 DA 00 82 */ sth r6, 0x82(r26)
-/* 8009415C 0009109C D0 1A 00 84 */ stfs f0, 0x84(r26)
-/* 80094160 000910A0 90 1A 00 7C */ stw r0, 0x7c(r26)
-/* 80094164 000910A4 48 05 6A C9 */ bl PSMTXMultVecSR
-/* 80094168 000910A8 80 7E 00 E8 */ lwz r3, 0xe8(r30)
-/* 8009416C 000910AC 80 63 00 2C */ lwz r3, 0x2c(r3)
-/* 80094170 000910B0 80 63 00 00 */ lwz r3, 0(r3)
-/* 80094174 000910B4 80 03 00 08 */ lwz r0, 8(r3)
-/* 80094178 000910B8 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c
-/* 8009417C 000910BC 41 82 00 10 */ beq .L_8009418C
-/* 80094180 000910C0 80 1A 00 7C */ lwz r0, 0x7c(r26)
-/* 80094184 000910C4 60 00 00 20 */ ori r0, r0, 0x20
-/* 80094188 000910C8 90 1A 00 7C */ stw r0, 0x7c(r26)
-.L_8009418C:
-/* 8009418C 000910CC C0 1B 01 38 */ lfs f0, 0x138(r27)
-/* 80094190 000910D0 C3 E2 88 D4 */ lfs f31, lbl_80516C34@sda21(r2)
-/* 80094194 000910D4 D0 1A 00 18 */ stfs f0, 0x18(r26)
-/* 80094198 000910D8 C0 1B 01 3C */ lfs f0, 0x13c(r27)
-/* 8009419C 000910DC D0 1A 00 1C */ stfs f0, 0x1c(r26)
-/* 800941A0 000910E0 C0 1B 01 40 */ lfs f0, 0x140(r27)
-/* 800941A4 000910E4 D0 1A 00 20 */ stfs f0, 0x20(r26)
-/* 800941A8 000910E8 C0 5A 00 0C */ lfs f2, 0xc(r26)
-/* 800941AC 000910EC C0 3B 01 2C */ lfs f1, 0x12c(r27)
-/* 800941B0 000910F0 C0 1A 00 18 */ lfs f0, 0x18(r26)
-/* 800941B4 000910F4 C0 7A 00 10 */ lfs f3, 0x10(r26)
-/* 800941B8 000910F8 EC 02 00 7A */ fmadds f0, f2, f1, f0
-/* 800941BC 000910FC C0 5B 01 30 */ lfs f2, 0x130(r27)
-/* 800941C0 00091100 C0 3A 00 1C */ lfs f1, 0x1c(r26)
-/* 800941C4 00091104 C0 BA 00 14 */ lfs f5, 0x14(r26)
-/* 800941C8 00091108 C0 9B 01 34 */ lfs f4, 0x134(r27)
-/* 800941CC 0009110C EC 43 08 BA */ fmadds f2, f3, f2, f1
-/* 800941D0 00091110 C0 3A 00 20 */ lfs f1, 0x20(r26)
-/* 800941D4 00091114 D0 1A 00 00 */ stfs f0, 0(r26)
-/* 800941D8 00091118 EC 05 09 3A */ fmadds f0, f5, f4, f1
-/* 800941DC 0009111C D0 5A 00 04 */ stfs f2, 4(r26)
-/* 800941E0 00091120 D0 1A 00 08 */ stfs f0, 8(r26)
-/* 800941E4 00091124 C0 BE 00 34 */ lfs f5, 0x34(r30)
-/* 800941E8 00091128 FC 05 F8 00 */ fcmpu cr0, f5, f31
-/* 800941EC 0009112C 41 82 00 9C */ beq .L_80094288
-/* 800941F0 00091130 C0 3B 00 1C */ lfs f1, 0x1c(r27)
-/* 800941F4 00091134 3C 60 80 51 */ lis r3, __float_epsilon@ha
-/* 800941F8 00091138 C0 1B 00 20 */ lfs f0, 0x20(r27)
-/* 800941FC 0009113C EC 61 00 72 */ fmuls f3, f1, f1
-/* 80094200 00091140 C0 9B 00 24 */ lfs f4, 0x24(r27)
-/* 80094204 00091144 EC 40 00 32 */ fmuls f2, f0, f0
-/* 80094208 00091148 C0 22 88 D8 */ lfs f1, lbl_80516C38@sda21(r2)
-/* 8009420C 0009114C C0 03 48 DC */ lfs f0, __float_epsilon@l(r3)
-/* 80094210 00091150 EC 84 01 32 */ fmuls f4, f4, f4
-/* 80094214 00091154 EC 43 10 2A */ fadds f2, f3, f2
-/* 80094218 00091158 EC 01 00 32 */ fmuls f0, f1, f0
-/* 8009421C 0009115C EC 84 10 2A */ fadds f4, f4, f2
-/* 80094220 00091160 FC 04 00 40 */ fcmpo cr0, f4, f0
-/* 80094224 00091164 4C 40 13 82 */ cror 2, 0, 2
-/* 80094228 00091168 40 82 00 10 */ bne .L_80094238
-/* 8009422C 0009116C FF C0 F8 90 */ fmr f30, f31
-/* 80094230 00091170 FF A0 F8 90 */ fmr f29, f31
-/* 80094234 00091174 48 00 00 5C */ b .L_80094290
-.L_80094238:
-/* 80094238 00091178 FC 04 F8 40 */ fcmpo cr0, f4, f31
-/* 8009423C 0009117C 4C 40 13 82 */ cror 2, 0, 2
-/* 80094240 00091180 40 82 00 08 */ bne .L_80094248
-/* 80094244 00091184 48 00 00 24 */ b .L_80094268
-.L_80094248:
-/* 80094248 00091188 FC 60 20 34 */ frsqrte f3, f4
-/* 8009424C 0009118C C0 42 88 DC */ lfs f2, lbl_80516C3C@sda21(r2)
-/* 80094250 00091190 C0 02 88 E0 */ lfs f0, lbl_80516C40@sda21(r2)
-/* 80094254 00091194 FC 60 18 18 */ frsp f3, f3
-/* 80094258 00091198 EC 23 00 F2 */ fmuls f1, f3, f3
-/* 8009425C 0009119C EC 42 00 F2 */ fmuls f2, f2, f3
-/* 80094260 000911A0 EC 04 00 7C */ fnmsubs f0, f4, f1, f0
-/* 80094264 000911A4 EC 82 00 32 */ fmuls f4, f2, f0
-.L_80094268:
-/* 80094268 000911A8 EC 64 01 72 */ fmuls f3, f4, f5
-/* 8009426C 000911AC C0 5B 00 1C */ lfs f2, 0x1c(r27)
-/* 80094270 000911B0 C0 3B 00 20 */ lfs f1, 0x20(r27)
-/* 80094274 000911B4 C0 1B 00 24 */ lfs f0, 0x24(r27)
-/* 80094278 000911B8 EF A2 00 F2 */ fmuls f29, f2, f3
-/* 8009427C 000911BC EF C1 00 F2 */ fmuls f30, f1, f3
-/* 80094280 000911C0 EF E0 00 F2 */ fmuls f31, f0, f3
-/* 80094284 000911C4 48 00 00 0C */ b .L_80094290
-.L_80094288:
-/* 80094288 000911C8 FF C0 F8 90 */ fmr f30, f31
-/* 8009428C 000911CC FF A0 F8 90 */ fmr f29, f31
-.L_80094290:
-/* 80094290 000911D0 C0 BE 00 38 */ lfs f5, 0x38(r30)
-/* 80094294 000911D4 C3 82 88 D4 */ lfs f28, lbl_80516C34@sda21(r2)
-/* 80094298 000911D8 FC 05 E0 00 */ fcmpu cr0, f5, f28
-/* 8009429C 000911DC 41 82 00 9C */ beq .L_80094338
-/* 800942A0 000911E0 C0 3B 00 28 */ lfs f1, 0x28(r27)
-/* 800942A4 000911E4 3C 60 80 51 */ lis r3, __float_epsilon@ha
-/* 800942A8 000911E8 C0 1B 00 2C */ lfs f0, 0x2c(r27)
-/* 800942AC 000911EC EC 61 00 72 */ fmuls f3, f1, f1
-/* 800942B0 000911F0 C0 9B 00 30 */ lfs f4, 0x30(r27)
-/* 800942B4 000911F4 EC 40 00 32 */ fmuls f2, f0, f0
-/* 800942B8 000911F8 C0 22 88 D8 */ lfs f1, lbl_80516C38@sda21(r2)
-/* 800942BC 000911FC C0 03 48 DC */ lfs f0, __float_epsilon@l(r3)
-/* 800942C0 00091200 EC 84 01 32 */ fmuls f4, f4, f4
-/* 800942C4 00091204 EC 43 10 2A */ fadds f2, f3, f2
-/* 800942C8 00091208 EC 01 00 32 */ fmuls f0, f1, f0
-/* 800942CC 0009120C EC 84 10 2A */ fadds f4, f4, f2
-/* 800942D0 00091210 FC 04 00 40 */ fcmpo cr0, f4, f0
-/* 800942D4 00091214 4C 40 13 82 */ cror 2, 0, 2
-/* 800942D8 00091218 40 82 00 10 */ bne .L_800942E8
-/* 800942DC 0009121C FF 60 E0 90 */ fmr f27, f28
-/* 800942E0 00091220 FF 40 E0 90 */ fmr f26, f28
-/* 800942E4 00091224 48 00 00 5C */ b .L_80094340
-.L_800942E8:
-/* 800942E8 00091228 FC 04 E0 40 */ fcmpo cr0, f4, f28
-/* 800942EC 0009122C 4C 40 13 82 */ cror 2, 0, 2
-/* 800942F0 00091230 40 82 00 08 */ bne .L_800942F8
-/* 800942F4 00091234 48 00 00 24 */ b .L_80094318
-.L_800942F8:
-/* 800942F8 00091238 FC 60 20 34 */ frsqrte f3, f4
-/* 800942FC 0009123C C0 42 88 DC */ lfs f2, lbl_80516C3C@sda21(r2)
-/* 80094300 00091240 C0 02 88 E0 */ lfs f0, lbl_80516C40@sda21(r2)
-/* 80094304 00091244 FC 60 18 18 */ frsp f3, f3
-/* 80094308 00091248 EC 23 00 F2 */ fmuls f1, f3, f3
-/* 8009430C 0009124C EC 42 00 F2 */ fmuls f2, f2, f3
-/* 80094310 00091250 EC 04 00 7C */ fnmsubs f0, f4, f1, f0
-/* 80094314 00091254 EC 82 00 32 */ fmuls f4, f2, f0
-.L_80094318:
-/* 80094318 00091258 EC 64 01 72 */ fmuls f3, f4, f5
-/* 8009431C 0009125C C0 5B 00 28 */ lfs f2, 0x28(r27)
-/* 80094320 00091260 C0 3B 00 2C */ lfs f1, 0x2c(r27)
-/* 80094324 00091264 C0 1B 00 30 */ lfs f0, 0x30(r27)
-/* 80094328 00091268 EF 42 00 F2 */ fmuls f26, f2, f3
-/* 8009432C 0009126C EF 61 00 F2 */ fmuls f27, f1, f3
-/* 80094330 00091270 EF 80 00 F2 */ fmuls f28, f0, f3
-/* 80094334 00091274 48 00 00 0C */ b .L_80094340
-.L_80094338:
-/* 80094338 00091278 FF 60 E0 90 */ fmr f27, f28
-/* 8009433C 0009127C FF 40 E0 90 */ fmr f26, f28
-.L_80094340:
-/* 80094340 00091280 C0 1E 00 3C */ lfs f0, 0x3c(r30)
-/* 80094344 00091284 C0 42 88 D4 */ lfs f2, lbl_80516C34@sda21(r2)
-/* 80094348 00091288 FC 00 10 00 */ fcmpu cr0, f0, f2
-/* 8009434C 0009128C 41 82 00 B0 */ beq .L_800943FC
-/* 80094350 00091290 3C 60 00 19 */ lis r3, 0x0019660D@ha
-/* 80094354 00091294 80 1E 00 C4 */ lwz r0, 0xc4(r30)
-/* 80094358 00091298 38 C3 66 0D */ addi r6, r3, 0x0019660D@l
-/* 8009435C 0009129C C0 62 88 D0 */ lfs f3, lbl_80516C30@sda21(r2)
-/* 80094360 000912A0 7C 60 31 D6 */ mullw r3, r0, r6
-/* 80094364 000912A4 C0 22 88 E4 */ lfs f1, lbl_80516C44@sda21(r2)
-/* 80094368 000912A8 38 A1 00 3C */ addi r5, r1, 0x3c
-/* 8009436C 000912AC 3C 63 3C 6F */ addis r3, r3, 0x3c6f
-/* 80094370 000912B0 38 03 F3 5F */ addi r0, r3, -3233
-/* 80094374 000912B4 90 1E 00 C4 */ stw r0, 0xc4(r30)
-/* 80094378 000912B8 54 00 84 3E */ srwi r0, r0, 0x10
-/* 8009437C 000912BC 7C 04 07 34 */ extsh r4, r0
-/* 80094380 000912C0 80 1E 00 C4 */ lwz r0, 0xc4(r30)
-/* 80094384 000912C4 7C 60 31 D6 */ mullw r3, r0, r6
-/* 80094388 000912C8 3C 63 3C 6F */ addis r3, r3, 0x3c6f
-/* 8009438C 000912CC 38 63 F3 5F */ addi r3, r3, -3233
-/* 80094390 000912D0 54 60 BA 7E */ srwi r0, r3, 9
-/* 80094394 000912D4 90 7E 00 C4 */ stw r3, 0xc4(r30)
-/* 80094398 000912D8 64 00 3F 80 */ oris r0, r0, 0x3f80
-/* 8009439C 000912DC 90 01 00 2C */ stw r0, 0x2c(r1)
-/* 800943A0 000912E0 C0 5E 00 40 */ lfs f2, 0x40(r30)
-/* 800943A4 000912E4 C0 01 00 2C */ lfs f0, 0x2c(r1)
-/* 800943A8 000912E8 EC 00 18 28 */ fsubs f0, f0, f3
-/* 800943AC 000912EC EC 00 00 2A */ fadds f0, f0, f0
-/* 800943B0 000912F0 EC 00 18 28 */ fsubs f0, f0, f3
-/* 800943B4 000912F4 EC 01 00 32 */ fmuls f0, f1, f0
-/* 800943B8 000912F8 EC 02 00 32 */ fmuls f0, f2, f0
-/* 800943BC 000912FC FC 00 00 1E */ fctiwz f0, f0
-/* 800943C0 00091300 D8 01 00 78 */ stfd f0, 0x78(r1)
-/* 800943C4 00091304 80 61 00 7C */ lwz r3, 0x7c(r1)
-/* 800943C8 00091308 4B FF F8 1D */ bl JPAGetYZRotateMtx__FssPA4_f
-/* 800943CC 0009130C 38 81 00 3C */ addi r4, r1, 0x3c
-/* 800943D0 00091310 38 7B 00 48 */ addi r3, r27, 0x48
-/* 800943D4 00091314 7C 85 23 78 */ mr r5, r4
-/* 800943D8 00091318 48 05 5F 29 */ bl PSMTXConcat
-/* 800943DC 0009131C C0 7E 00 3C */ lfs f3, 0x3c(r30)
-/* 800943E0 00091320 C0 01 00 44 */ lfs f0, 0x44(r1)
-/* 800943E4 00091324 C0 21 00 54 */ lfs f1, 0x54(r1)
-/* 800943E8 00091328 C0 41 00 64 */ lfs f2, 0x64(r1)
-/* 800943EC 0009132C EC 03 00 32 */ fmuls f0, f3, f0
-/* 800943F0 00091330 EC 23 00 72 */ fmuls f1, f3, f1
-/* 800943F4 00091334 EC 43 00 B2 */ fmuls f2, f3, f2
-/* 800943F8 00091338 48 00 00 0C */ b .L_80094404
-.L_800943FC:
-/* 800943FC 0009133C FC 20 10 90 */ fmr f1, f2
-/* 80094400 00091340 FC 00 10 90 */ fmr f0, f2
-.L_80094404:
-/* 80094404 00091344 C0 9E 00 44 */ lfs f4, 0x44(r30)
-/* 80094408 00091348 C0 62 88 D4 */ lfs f3, lbl_80516C34@sda21(r2)
-/* 8009440C 0009134C FC 04 18 00 */ fcmpu cr0, f4, f3
-/* 80094410 00091350 41 82 00 B4 */ beq .L_800944C4
-/* 80094414 00091354 3C 60 00 19 */ lis r3, 0x0019660D@ha
-/* 80094418 00091358 80 1E 00 C4 */ lwz r0, 0xc4(r30)
-/* 8009441C 0009135C 38 83 66 0D */ addi r4, r3, 0x0019660D@l
-/* 80094420 00091360 C0 E2 88 D0 */ lfs f7, lbl_80516C30@sda21(r2)
-/* 80094424 00091364 7C 60 21 D6 */ mullw r3, r0, r4
-/* 80094428 00091368 C0 C2 88 DC */ lfs f6, lbl_80516C3C@sda21(r2)
-/* 8009442C 0009136C 3C 63 3C 6F */ addis r3, r3, 0x3c6f
-/* 80094430 00091370 38 03 F3 5F */ addi r0, r3, -3233
-/* 80094434 00091374 90 1E 00 C4 */ stw r0, 0xc4(r30)
-/* 80094438 00091378 54 00 BA 7E */ srwi r0, r0, 9
-/* 8009443C 0009137C 64 03 3F 80 */ oris r3, r0, 0x3f80
-/* 80094440 00091380 80 1E 00 C4 */ lwz r0, 0xc4(r30)
-/* 80094444 00091384 90 61 00 10 */ stw r3, 0x10(r1)
-/* 80094448 00091388 7C 60 21 D6 */ mullw r3, r0, r4
-/* 8009444C 0009138C C0 9E 00 44 */ lfs f4, 0x44(r30)
-/* 80094450 00091390 C0 61 00 10 */ lfs f3, 0x10(r1)
-/* 80094454 00091394 EC 63 38 28 */ fsubs f3, f3, f7
-/* 80094458 00091398 3C 63 3C 6F */ addis r3, r3, 0x3c6f
-/* 8009445C 0009139C 38 03 F3 5F */ addi r0, r3, -3233
-/* 80094460 000913A0 EC 63 30 28 */ fsubs f3, f3, f6
-/* 80094464 000913A4 90 1E 00 C4 */ stw r0, 0xc4(r30)
-/* 80094468 000913A8 54 00 BA 7E */ srwi r0, r0, 9
-/* 8009446C 000913AC 64 03 3F 80 */ oris r3, r0, 0x3f80
-/* 80094470 000913B0 80 1E 00 C4 */ lwz r0, 0xc4(r30)
-/* 80094474 000913B4 EC 64 00 F2 */ fmuls f3, f4, f3
-/* 80094478 000913B8 90 61 00 0C */ stw r3, 0xc(r1)
-/* 8009447C 000913BC 7C 60 21 D6 */ mullw r3, r0, r4
-/* 80094480 000913C0 C0 BE 00 44 */ lfs f5, 0x44(r30)
-/* 80094484 000913C4 C0 81 00 0C */ lfs f4, 0xc(r1)
-/* 80094488 000913C8 EC 84 38 28 */ fsubs f4, f4, f7
-/* 8009448C 000913CC 3C 63 3C 6F */ addis r3, r3, 0x3c6f
-/* 80094490 000913D0 38 63 F3 5F */ addi r3, r3, -3233
-/* 80094494 000913D4 EC 84 30 28 */ fsubs f4, f4, f6
-/* 80094498 000913D8 54 60 BA 7E */ srwi r0, r3, 9
-/* 8009449C 000913DC 90 7E 00 C4 */ stw r3, 0xc4(r30)
-/* 800944A0 000913E0 64 00 3F 80 */ oris r0, r0, 0x3f80
-/* 800944A4 000913E4 90 01 00 08 */ stw r0, 8(r1)
-/* 800944A8 000913E8 ED 25 01 32 */ fmuls f9, f5, f4
-/* 800944AC 000913EC C0 BE 00 44 */ lfs f5, 0x44(r30)
-/* 800944B0 000913F0 C0 81 00 08 */ lfs f4, 8(r1)
-/* 800944B4 000913F4 EC 84 38 28 */ fsubs f4, f4, f7
-/* 800944B8 000913F8 EC 84 30 28 */ fsubs f4, f4, f6
-/* 800944BC 000913FC ED 05 01 32 */ fmuls f8, f5, f4
-/* 800944C0 00091400 48 00 00 0C */ b .L_800944CC
-.L_800944C4:
-/* 800944C4 00091404 FD 20 18 90 */ fmr f9, f3
-/* 800944C8 00091408 FD 00 18 90 */ fmr f8, f3
-.L_800944CC:
-/* 800944CC 0009140C 3C 60 00 19 */ lis r3, 0x0019660D@ha
-/* 800944D0 00091410 80 9E 00 C4 */ lwz r4, 0xc4(r30)
-/* 800944D4 00091414 38 03 66 0D */ addi r0, r3, 0x0019660D@l
-/* 800944D8 00091418 EC DD D0 2A */ fadds f6, f29, f26
-/* 800944DC 0009141C 7C 64 01 D6 */ mullw r3, r4, r0
-/* 800944E0 00091420 EC BE D8 2A */ fadds f5, f30, f27
-/* 800944E4 00091424 EC 9F E0 2A */ fadds f4, f31, f28
-/* 800944E8 00091428 C0 E2 88 D0 */ lfs f7, lbl_80516C30@sda21(r2)
-/* 800944EC 0009142C EC C0 30 2A */ fadds f6, f0, f6
-/* 800944F0 00091430 EC 21 28 2A */ fadds f1, f1, f5
-/* 800944F4 00091434 3C 63 3C 6F */ addis r3, r3, 0x3c6f
-/* 800944F8 00091438 EC 02 20 2A */ fadds f0, f2, f4
-/* 800944FC 0009143C 38 63 F3 5F */ addi r3, r3, -3233
-/* 80094500 00091440 EC 48 30 2A */ fadds f2, f8, f6
-/* 80094504 00091444 54 60 BA 7E */ srwi r0, r3, 9
-/* 80094508 00091448 90 7E 00 C4 */ stw r3, 0xc4(r30)
-/* 8009450C 0009144C 64 00 3F 80 */ oris r0, r0, 0x3f80
-/* 80094510 00091450 90 01 00 28 */ stw r0, 0x28(r1)
-/* 80094514 00091454 EC 03 00 2A */ fadds f0, f3, f0
-/* 80094518 00091458 80 7C 00 00 */ lwz r3, 0(r28)
-/* 8009451C 0009145C EC 29 08 2A */ fadds f1, f9, f1
-/* 80094520 00091460 C0 81 00 28 */ lfs f4, 0x28(r1)
-/* 80094524 00091464 C0 63 00 48 */ lfs f3, 0x48(r3)
-/* 80094528 00091468 EC 84 38 28 */ fsubs f4, f4, f7
-/* 8009452C 0009146C EC 84 20 2A */ fadds f4, f4, f4
-/* 80094530 00091470 EC 84 38 28 */ fsubs f4, f4, f7
-/* 80094534 00091474 EC 64 38 FA */ fmadds f3, f4, f3, f7
-/* 80094538 00091478 EC 43 00 B2 */ fmuls f2, f3, f2
-/* 8009453C 0009147C EC 23 00 72 */ fmuls f1, f3, f1
-/* 80094540 00091480 EC 03 00 32 */ fmuls f0, f3, f0
-/* 80094544 00091484 D0 5A 00 30 */ stfs f2, 0x30(r26)
-/* 80094548 00091488 D0 3A 00 34 */ stfs f1, 0x34(r26)
-/* 8009454C 0009148C D0 1A 00 38 */ stfs f0, 0x38(r26)
-/* 80094550 00091490 80 7E 00 E8 */ lwz r3, 0xe8(r30)
-/* 80094554 00091494 80 63 00 2C */ lwz r3, 0x2c(r3)
-/* 80094558 00091498 80 63 00 00 */ lwz r3, 0(r3)
-/* 8009455C 0009149C 80 03 00 08 */ lwz r0, 8(r3)
-/* 80094560 000914A0 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
-/* 80094564 000914A4 41 82 00 34 */ beq .L_80094598
-/* 80094568 000914A8 C0 3A 00 30 */ lfs f1, 0x30(r26)
-/* 8009456C 000914AC C0 1E 00 00 */ lfs f0, 0(r30)
-/* 80094570 000914B0 EC 01 00 32 */ fmuls f0, f1, f0
-/* 80094574 000914B4 D0 1A 00 30 */ stfs f0, 0x30(r26)
-/* 80094578 000914B8 C0 3A 00 34 */ lfs f1, 0x34(r26)
-/* 8009457C 000914BC C0 1E 00 04 */ lfs f0, 4(r30)
-/* 80094580 000914C0 EC 01 00 32 */ fmuls f0, f1, f0
-/* 80094584 000914C4 D0 1A 00 34 */ stfs f0, 0x34(r26)
-/* 80094588 000914C8 C0 3A 00 38 */ lfs f1, 0x38(r26)
-/* 8009458C 000914CC C0 1E 00 08 */ lfs f0, 8(r30)
-/* 80094590 000914D0 EC 01 00 32 */ fmuls f0, f1, f0
-/* 80094594 000914D4 D0 1A 00 38 */ stfs f0, 0x38(r26)
-.L_80094598:
-/* 80094598 000914D8 38 9A 00 30 */ addi r4, r26, 0x30
-/* 8009459C 000914DC 38 7B 00 A8 */ addi r3, r27, 0xa8
-/* 800945A0 000914E0 7C 85 23 78 */ mr r5, r4
-/* 800945A4 000914E4 48 05 66 89 */ bl PSMTXMultVecSR
-/* 800945A8 000914E8 C0 02 88 D4 */ lfs f0, lbl_80516C34@sda21(r2)
-/* 800945AC 000914EC 3C 80 00 19 */ lis r4, 0x0019660D@ha
-/* 800945B0 000914F0 3C 60 43 30 */ lis r3, 0x4330
-/* 800945B4 000914F4 C0 62 88 D0 */ lfs f3, lbl_80516C30@sda21(r2)
-/* 800945B8 000914F8 D0 1A 00 44 */ stfs f0, 0x44(r26)
-/* 800945BC 000914FC 38 04 66 0D */ addi r0, r4, 0x0019660D@l
-/* 800945C0 00091500 38 80 00 00 */ li r4, 0
-/* 800945C4 00091504 C8 22 88 F0 */ lfd f1, lbl_80516C50@sda21(r2)
-/* 800945C8 00091508 D0 1A 00 40 */ stfs f0, 0x40(r26)
-/* 800945CC 0009150C 28 1F 00 00 */ cmplwi r31, 0
-/* 800945D0 00091510 D0 1A 00 3C */ stfs f0, 0x3c(r26)
-/* 800945D4 00091514 80 BE 00 C4 */ lwz r5, 0xc4(r30)
-/* 800945D8 00091518 90 61 00 78 */ stw r3, 0x78(r1)
-/* 800945DC 0009151C 7C 65 01 D6 */ mullw r3, r5, r0
-/* 800945E0 00091520 3C 63 3C 6F */ addis r3, r3, 0x3c6f
-/* 800945E4 00091524 38 A3 F3 5F */ addi r5, r3, -3233
-/* 800945E8 00091528 54 A3 BA 7E */ srwi r3, r5, 9
-/* 800945EC 0009152C 90 BE 00 C4 */ stw r5, 0xc4(r30)
-/* 800945F0 00091530 64 63 3F 80 */ oris r3, r3, 0x3f80
-/* 800945F4 00091534 90 61 00 34 */ stw r3, 0x34(r1)
-/* 800945F8 00091538 80 7C 00 00 */ lwz r3, 0(r28)
-/* 800945FC 0009153C C0 01 00 34 */ lfs f0, 0x34(r1)
-/* 80094600 00091540 C0 43 00 64 */ lfs f2, 0x64(r3)
-/* 80094604 00091544 EC 00 18 28 */ fsubs f0, f0, f3
-/* 80094608 00091548 EC 02 18 3C */ fnmsubs f0, f2, f0, f3
-/* 8009460C 0009154C D0 1A 00 70 */ stfs f0, 0x70(r26)
-/* 80094610 00091550 D0 7A 00 74 */ stfs f3, 0x74(r26)
-/* 80094614 00091554 90 9A 00 78 */ stw r4, 0x78(r26)
-/* 80094618 00091558 C0 9B 00 CC */ lfs f4, 0xcc(r27)
-/* 8009461C 0009155C C0 5B 00 BC */ lfs f2, 0xbc(r27)
-/* 80094620 00091560 C0 1B 00 AC */ lfs f0, 0xac(r27)
-/* 80094624 00091564 D0 1A 00 54 */ stfs f0, 0x54(r26)
-/* 80094628 00091568 D0 5A 00 58 */ stfs f2, 0x58(r26)
-/* 8009462C 0009156C D0 9A 00 5C */ stfs f4, 0x5c(r26)
-/* 80094630 00091570 88 7E 01 08 */ lbz r3, 0x108(r30)
-/* 80094634 00091574 98 7A 00 8C */ stb r3, 0x8c(r26)
-/* 80094638 00091578 88 7E 01 09 */ lbz r3, 0x109(r30)
-/* 8009463C 0009157C 98 7A 00 8D */ stb r3, 0x8d(r26)
-/* 80094640 00091580 88 7E 01 0A */ lbz r3, 0x10a(r30)
-/* 80094644 00091584 98 7A 00 8E */ stb r3, 0x8e(r26)
-/* 80094648 00091588 88 7E 01 0B */ lbz r3, 0x10b(r30)
-/* 8009464C 0009158C 98 7A 00 8F */ stb r3, 0x8f(r26)
-/* 80094650 00091590 88 7E 01 0C */ lbz r3, 0x10c(r30)
-/* 80094654 00091594 98 7A 00 90 */ stb r3, 0x90(r26)
-/* 80094658 00091598 88 7E 01 0D */ lbz r3, 0x10d(r30)
-/* 8009465C 0009159C 98 7A 00 91 */ stb r3, 0x91(r26)
-/* 80094660 000915A0 88 7E 01 0E */ lbz r3, 0x10e(r30)
-/* 80094664 000915A4 98 7A 00 92 */ stb r3, 0x92(r26)
-/* 80094668 000915A8 88 7E 01 0F */ lbz r3, 0x10f(r30)
-/* 8009466C 000915AC 98 7A 00 93 */ stb r3, 0x93(r26)
-/* 80094670 000915B0 80 7E 00 C4 */ lwz r3, 0xc4(r30)
-/* 80094674 000915B4 80 9D 00 00 */ lwz r4, 0(r29)
-/* 80094678 000915B8 7C 63 01 D6 */ mullw r3, r3, r0
-/* 8009467C 000915BC 88 84 00 2E */ lbz r4, 0x2e(r4)
-/* 80094680 000915C0 90 81 00 7C */ stw r4, 0x7c(r1)
-/* 80094684 000915C4 3C 63 3C 6F */ addis r3, r3, 0x3c6f
-/* 80094688 000915C8 C8 01 00 78 */ lfd f0, 0x78(r1)
-/* 8009468C 000915CC 38 83 F3 5F */ addi r4, r3, -3233
-/* 80094690 000915D0 54 83 BA 7E */ srwi r3, r4, 9
-/* 80094694 000915D4 EC 00 08 28 */ fsubs f0, f0, f1
-/* 80094698 000915D8 64 63 3F 80 */ oris r3, r3, 0x3f80
-/* 8009469C 000915DC 90 9E 00 C4 */ stw r4, 0xc4(r30)
-/* 800946A0 000915E0 90 61 00 30 */ stw r3, 0x30(r1)
-/* 800946A4 000915E4 C0 21 00 30 */ lfs f1, 0x30(r1)
-/* 800946A8 000915E8 EC 21 18 28 */ fsubs f1, f1, f3
-/* 800946AC 000915EC EC 01 00 32 */ fmuls f0, f1, f0
-/* 800946B0 000915F0 FC 00 00 1E */ fctiwz f0, f0
-/* 800946B4 000915F4 D8 01 00 70 */ stfd f0, 0x70(r1)
-/* 800946B8 000915F8 80 61 00 74 */ lwz r3, 0x74(r1)
-/* 800946BC 000915FC 98 7A 00 95 */ stb r3, 0x95(r26)
-/* 800946C0 00091600 41 82 00 68 */ beq .L_80094728
-/* 800946C4 00091604 80 7F 00 00 */ lwz r3, 0(r31)
-/* 800946C8 00091608 80 63 00 08 */ lwz r3, 8(r3)
-/* 800946CC 0009160C 54 63 07 FF */ clrlwi. r3, r3, 0x1f
-/* 800946D0 00091610 41 82 00 58 */ beq .L_80094728
-/* 800946D4 00091614 80 7E 00 C4 */ lwz r3, 0xc4(r30)
-/* 800946D8 00091618 7C 63 01 D6 */ mullw r3, r3, r0
-/* 800946DC 0009161C 3C 63 3C 6F */ addis r3, r3, 0x3c6f
-/* 800946E0 00091620 38 63 F3 5F */ addi r3, r3, -3233
-/* 800946E4 00091624 54 60 BA 7E */ srwi r0, r3, 9
-/* 800946E8 00091628 90 7E 00 C4 */ stw r3, 0xc4(r30)
-/* 800946EC 0009162C 64 00 3F 80 */ oris r0, r0, 0x3f80
-/* 800946F0 00091630 90 01 00 24 */ stw r0, 0x24(r1)
-/* 800946F4 00091634 80 7F 00 00 */ lwz r3, 0(r31)
-/* 800946F8 00091638 C0 21 00 24 */ lfs f1, 0x24(r1)
-/* 800946FC 0009163C C0 03 00 24 */ lfs f0, 0x24(r3)
-/* 80094700 00091640 EC 21 18 28 */ fsubs f1, f1, f3
-/* 80094704 00091644 C0 5E 00 FC */ lfs f2, 0xfc(r30)
-/* 80094708 00091648 EC 21 08 2A */ fadds f1, f1, f1
-/* 8009470C 0009164C EC 21 18 28 */ fsubs f1, f1, f3
-/* 80094710 00091650 EC 01 18 3A */ fmadds f0, f1, f0, f3
-/* 80094714 00091654 EC 02 00 32 */ fmuls f0, f2, f0
-/* 80094718 00091658 D0 1A 00 68 */ stfs f0, 0x68(r26)
-/* 8009471C 0009165C D0 1A 00 64 */ stfs f0, 0x64(r26)
-/* 80094720 00091660 D0 1A 00 60 */ stfs f0, 0x60(r26)
-/* 80094724 00091664 48 00 00 14 */ b .L_80094738
-.L_80094728:
-/* 80094728 00091668 C0 1E 00 FC */ lfs f0, 0xfc(r30)
-/* 8009472C 0009166C D0 1A 00 68 */ stfs f0, 0x68(r26)
-/* 80094730 00091670 D0 1A 00 64 */ stfs f0, 0x64(r26)
-/* 80094734 00091674 D0 1A 00 60 */ stfs f0, 0x60(r26)
-.L_80094738:
-/* 80094738 00091678 38 00 00 FF */ li r0, 0xff
-/* 8009473C 0009167C 28 1F 00 00 */ cmplwi r31, 0
-/* 80094740 00091680 98 1A 00 96 */ stb r0, 0x96(r26)
-/* 80094744 00091684 41 82 00 64 */ beq .L_800947A8
-/* 80094748 00091688 80 7F 00 00 */ lwz r3, 0(r31)
-/* 8009474C 0009168C 80 03 00 08 */ lwz r0, 8(r3)
-/* 80094750 00091690 54 00 03 9D */ rlwinm. r0, r0, 0, 0xe, 0xe
-/* 80094754 00091694 41 82 00 54 */ beq .L_800947A8
-/* 80094758 00091698 3C 60 00 19 */ lis r3, 0x0019660D@ha
-/* 8009475C 0009169C 80 9E 00 C4 */ lwz r4, 0xc4(r30)
-/* 80094760 000916A0 38 03 66 0D */ addi r0, r3, 0x0019660D@l
-/* 80094764 000916A4 C0 42 88 D0 */ lfs f2, lbl_80516C30@sda21(r2)
-/* 80094768 000916A8 7C 64 01 D6 */ mullw r3, r4, r0
-/* 8009476C 000916AC 3C 63 3C 6F */ addis r3, r3, 0x3c6f
-/* 80094770 000916B0 38 63 F3 5F */ addi r3, r3, -3233
-/* 80094774 000916B4 54 60 BA 7E */ srwi r0, r3, 9
-/* 80094778 000916B8 90 7E 00 C4 */ stw r3, 0xc4(r30)
-/* 8009477C 000916BC 64 00 3F 80 */ oris r0, r0, 0x3f80
-/* 80094780 000916C0 90 01 00 20 */ stw r0, 0x20(r1)
-/* 80094784 000916C4 80 7F 00 00 */ lwz r3, 0(r31)
-/* 80094788 000916C8 C0 21 00 20 */ lfs f1, 0x20(r1)
-/* 8009478C 000916CC C0 03 00 44 */ lfs f0, 0x44(r3)
-/* 80094790 000916D0 EC 21 10 28 */ fsubs f1, f1, f2
-/* 80094794 000916D4 EC 21 08 2A */ fadds f1, f1, f1
-/* 80094798 000916D8 EC 21 10 28 */ fsubs f1, f1, f2
-/* 8009479C 000916DC EC 01 10 3A */ fmadds f0, f1, f0, f2
-/* 800947A0 000916E0 D0 1A 00 6C */ stfs f0, 0x6c(r26)
-/* 800947A4 000916E4 48 00 00 0C */ b .L_800947B0
-.L_800947A8:
-/* 800947A8 000916E8 C0 02 88 D0 */ lfs f0, lbl_80516C30@sda21(r2)
-/* 800947AC 000916EC D0 1A 00 6C */ stfs f0, 0x6c(r26)
-.L_800947B0:
-/* 800947B0 000916F0 28 1F 00 00 */ cmplwi r31, 0
-/* 800947B4 000916F4 41 82 01 30 */ beq .L_800948E4
-/* 800947B8 000916F8 80 7F 00 00 */ lwz r3, 0(r31)
-/* 800947BC 000916FC 80 03 00 08 */ lwz r0, 8(r3)
-/* 800947C0 00091700 54 00 01 CF */ rlwinm. r0, r0, 0, 7, 7
-/* 800947C4 00091704 41 82 01 10 */ beq .L_800948D4
-/* 800947C8 00091708 3C 60 00 19 */ lis r3, 0x0019660D@ha
-/* 800947CC 0009170C 80 1E 00 C4 */ lwz r0, 0xc4(r30)
-/* 800947D0 00091710 38 83 66 0D */ addi r4, r3, 0x0019660D@l
-/* 800947D4 00091714 C0 62 88 D0 */ lfs f3, lbl_80516C30@sda21(r2)
-/* 800947D8 00091718 7C 60 21 D6 */ mullw r3, r0, r4
-/* 800947DC 0009171C C0 22 88 DC */ lfs f1, lbl_80516C3C@sda21(r2)
-/* 800947E0 00091720 3C 63 3C 6F */ addis r3, r3, 0x3c6f
-/* 800947E4 00091724 38 63 F3 5F */ addi r3, r3, -3233
-/* 800947E8 00091728 54 60 BA 7E */ srwi r0, r3, 9
-/* 800947EC 0009172C 90 7E 00 C4 */ stw r3, 0xc4(r30)
-/* 800947F0 00091730 64 00 3F 80 */ oris r0, r0, 0x3f80
-/* 800947F4 00091734 90 01 00 1C */ stw r0, 0x1c(r1)
-/* 800947F8 00091738 80 7F 00 00 */ lwz r3, 0(r31)
-/* 800947FC 0009173C C0 01 00 1C */ lfs f0, 0x1c(r1)
-/* 80094800 00091740 C0 83 00 50 */ lfs f4, 0x50(r3)
-/* 80094804 00091744 EC 40 18 28 */ fsubs f2, f0, f3
-/* 80094808 00091748 C0 03 00 4C */ lfs f0, 0x4c(r3)
-/* 8009480C 0009174C EC 22 08 28 */ fsubs f1, f2, f1
-/* 80094810 00091750 EC 04 00 7A */ fmadds f0, f4, f1, f0
-/* 80094814 00091754 FC 00 00 1E */ fctiwz f0, f0
-/* 80094818 00091758 D8 01 00 78 */ stfd f0, 0x78(r1)
-/* 8009481C 0009175C 80 01 00 7C */ lwz r0, 0x7c(r1)
-/* 80094820 00091760 B0 1A 00 88 */ sth r0, 0x88(r26)
-/* 80094824 00091764 80 1E 00 C4 */ lwz r0, 0xc4(r30)
-/* 80094828 00091768 7C 60 21 D6 */ mullw r3, r0, r4
-/* 8009482C 0009176C 3C 63 3C 6F */ addis r3, r3, 0x3c6f
-/* 80094830 00091770 38 63 F3 5F */ addi r3, r3, -3233
-/* 80094834 00091774 54 60 BA 7E */ srwi r0, r3, 9
-/* 80094838 00091778 90 7E 00 C4 */ stw r3, 0xc4(r30)
-/* 8009483C 0009177C 64 00 3F 80 */ oris r0, r0, 0x3f80
-/* 80094840 00091780 90 01 00 18 */ stw r0, 0x18(r1)
-/* 80094844 00091784 80 7F 00 00 */ lwz r3, 0(r31)
-/* 80094848 00091788 C0 01 00 18 */ lfs f0, 0x18(r1)
-/* 8009484C 0009178C C0 23 00 58 */ lfs f1, 0x58(r3)
-/* 80094850 00091790 EC 00 18 28 */ fsubs f0, f0, f3
-/* 80094854 00091794 C0 43 00 54 */ lfs f2, 0x54(r3)
-/* 80094858 00091798 EC 00 00 2A */ fadds f0, f0, f0
-/* 8009485C 0009179C EC 00 18 28 */ fsubs f0, f0, f3
-/* 80094860 000917A0 EC 01 18 3A */ fmadds f0, f1, f0, f3
-/* 80094864 000917A4 EC 02 00 32 */ fmuls f0, f2, f0
-/* 80094868 000917A8 FC 00 00 1E */ fctiwz f0, f0
-/* 8009486C 000917AC D8 01 00 70 */ stfd f0, 0x70(r1)
-/* 80094870 000917B0 80 01 00 74 */ lwz r0, 0x74(r1)
-/* 80094874 000917B4 B0 1A 00 8A */ sth r0, 0x8a(r26)
-/* 80094878 000917B8 80 1E 00 C4 */ lwz r0, 0xc4(r30)
-/* 8009487C 000917BC 7C 60 21 D6 */ mullw r3, r0, r4
-/* 80094880 000917C0 3C 63 3C 6F */ addis r3, r3, 0x3c6f
-/* 80094884 000917C4 38 63 F3 5F */ addi r3, r3, -3233
-/* 80094888 000917C8 54 60 BA 7E */ srwi r0, r3, 9
-/* 8009488C 000917CC 90 7E 00 C4 */ stw r3, 0xc4(r30)
-/* 80094890 000917D0 64 00 3F 80 */ oris r0, r0, 0x3f80
-/* 80094894 000917D4 90 01 00 14 */ stw r0, 0x14(r1)
-/* 80094898 000917D8 80 7F 00 00 */ lwz r3, 0(r31)
-/* 8009489C 000917DC C0 21 00 14 */ lfs f1, 0x14(r1)
-/* 800948A0 000917E0 C0 03 00 5C */ lfs f0, 0x5c(r3)
-/* 800948A4 000917E4 EC 21 18 28 */ fsubs f1, f1, f3
-/* 800948A8 000917E8 EC 21 08 2A */ fadds f1, f1, f1
-/* 800948AC 000917EC EC 21 18 28 */ fsubs f1, f1, f3
-/* 800948B0 000917F0 FC 01 00 40 */ fcmpo cr0, f1, f0
-/* 800948B4 000917F4 40 80 00 0C */ bge .L_800948C0
-/* 800948B8 000917F8 A8 1A 00 8A */ lha r0, 0x8a(r26)
-/* 800948BC 000917FC 48 00 00 10 */ b .L_800948CC
-.L_800948C0:
-/* 800948C0 00091800 A8 1A 00 8A */ lha r0, 0x8a(r26)
-/* 800948C4 00091804 7C 00 00 D0 */ neg r0, r0
-/* 800948C8 00091808 7C 00 07 34 */ extsh r0, r0
-.L_800948CC:
-/* 800948CC 0009180C B0 1A 00 8A */ sth r0, 0x8a(r26)
-/* 800948D0 00091810 48 00 00 20 */ b .L_800948F0
-.L_800948D4:
-/* 800948D4 00091814 38 00 00 00 */ li r0, 0
-/* 800948D8 00091818 B0 1A 00 88 */ sth r0, 0x88(r26)
-/* 800948DC 0009181C B0 1A 00 8A */ sth r0, 0x8a(r26)
-/* 800948E0 00091820 48 00 00 10 */ b .L_800948F0
-.L_800948E4:
-/* 800948E4 00091824 38 00 00 00 */ li r0, 0
-/* 800948E8 00091828 B0 1A 00 88 */ sth r0, 0x88(r26)
-/* 800948EC 0009182C B0 1A 00 8A */ sth r0, 0x8a(r26)
-.L_800948F0:
-/* 800948F0 00091830 E3 E1 00 F8 */ psq_l f31, 248(r1), 0, qr0
-/* 800948F4 00091834 CB E1 00 F0 */ lfd f31, 0xf0(r1)
-/* 800948F8 00091838 E3 C1 00 E8 */ psq_l f30, 232(r1), 0, qr0
-/* 800948FC 0009183C CB C1 00 E0 */ lfd f30, 0xe0(r1)
-/* 80094900 00091840 E3 A1 00 D8 */ psq_l f29, 216(r1), 0, qr0
-/* 80094904 00091844 CB A1 00 D0 */ lfd f29, 0xd0(r1)
-/* 80094908 00091848 E3 81 00 C8 */ psq_l f28, 200(r1), 0, qr0
-/* 8009490C 0009184C CB 81 00 C0 */ lfd f28, 0xc0(r1)
-/* 80094910 00091850 E3 61 00 B8 */ psq_l f27, 184(r1), 0, qr0
-/* 80094914 00091854 CB 61 00 B0 */ lfd f27, 0xb0(r1)
-/* 80094918 00091858 E3 41 00 A8 */ psq_l f26, 168(r1), 0, qr0
-/* 8009491C 0009185C CB 41 00 A0 */ lfd f26, 0xa0(r1)
-/* 80094920 00091860 BB 41 00 88 */ lmw r26, 0x88(r1)
-/* 80094924 00091864 80 01 01 04 */ lwz r0, 0x104(r1)
-/* 80094928 00091868 7C 08 03 A6 */ mtlr r0
-/* 8009492C 0009186C 38 21 01 00 */ addi r1, r1, 0x100
-/* 80094930 00091870 4E 80 00 20 */ blr
-.endfn init_p__15JPABaseParticleFP18JPAEmitterWorkData
-
-.fn init_c__15JPABaseParticleFP18JPAEmitterWorkDataP15JPABaseParticle, global
-/* 80094934 00091874 94 21 FF 70 */ stwu r1, -0x90(r1)
-/* 80094938 00091878 38 E0 FF FF */ li r7, -1
-/* 8009493C 0009187C C0 E2 88 D4 */ lfs f7, lbl_80516C34@sda21(r2)
-/* 80094940 00091880 38 00 00 04 */ li r0, 4
-/* 80094944 00091884 80 C4 00 04 */ lwz r6, 4(r4)
-/* 80094948 00091888 80 84 00 00 */ lwz r4, 0(r4)
-/* 8009494C 0009188C 80 C6 00 24 */ lwz r6, 0x24(r6)
-/* 80094950 00091890 B0 E3 00 80 */ sth r7, 0x80(r3)
-/* 80094954 00091894 80 E6 00 00 */ lwz r7, 0(r6)
-/* 80094958 00091898 A8 E7 00 40 */ lha r7, 0x40(r7)
-/* 8009495C 0009189C B0 E3 00 82 */ sth r7, 0x82(r3)
-/* 80094960 000918A0 D0 E3 00 84 */ stfs f7, 0x84(r3)
-/* 80094964 000918A4 90 03 00 7C */ stw r0, 0x7c(r3)
-/* 80094968 000918A8 C0 05 00 0C */ lfs f0, 0xc(r5)
-/* 8009496C 000918AC D0 03 00 0C */ stfs f0, 0xc(r3)
-/* 80094970 000918B0 C0 05 00 10 */ lfs f0, 0x10(r5)
-/* 80094974 000918B4 D0 03 00 10 */ stfs f0, 0x10(r3)
-/* 80094978 000918B8 C0 05 00 14 */ lfs f0, 0x14(r5)
-/* 8009497C 000918BC D0 03 00 14 */ stfs f0, 0x14(r3)
-/* 80094980 000918C0 80 E6 00 00 */ lwz r7, 0(r6)
-/* 80094984 000918C4 C1 07 00 0C */ lfs f8, 0xc(r7)
-/* 80094988 000918C8 FC 07 40 00 */ fcmpu cr0, f7, f8
-/* 8009498C 000918CC 41 82 01 4C */ beq .L_80094AD8
-/* 80094990 000918D0 3C E0 00 19 */ lis r7, 0x0019660D@ha
-/* 80094994 000918D4 80 04 00 C4 */ lwz r0, 0xc4(r4)
-/* 80094998 000918D8 39 27 66 0D */ addi r9, r7, 0x0019660D@l
-/* 8009499C 000918DC C0 C2 88 D0 */ lfs f6, lbl_80516C30@sda21(r2)
-/* 800949A0 000918E0 7D 00 49 D6 */ mullw r8, r0, r9
-/* 800949A4 000918E4 C0 A2 88 DC */ lfs f5, lbl_80516C3C@sda21(r2)
-/* 800949A8 000918E8 3C E0 80 51 */ lis r7, __float_epsilon@ha
-/* 800949AC 000918EC C0 42 88 D8 */ lfs f2, lbl_80516C38@sda21(r2)
-/* 800949B0 000918F0 3D 08 3C 6F */ addis r8, r8, 0x3c6f
-/* 800949B4 000918F4 38 08 F3 5F */ addi r0, r8, -3233
-/* 800949B8 000918F8 90 04 00 C4 */ stw r0, 0xc4(r4)
-/* 800949BC 000918FC 54 00 BA 7E */ srwi r0, r0, 9
-/* 800949C0 00091900 64 08 3F 80 */ oris r8, r0, 0x3f80
-/* 800949C4 00091904 80 04 00 C4 */ lwz r0, 0xc4(r4)
-/* 800949C8 00091908 91 01 00 1C */ stw r8, 0x1c(r1)
-/* 800949CC 0009190C 7D 00 49 D6 */ mullw r8, r0, r9
-/* 800949D0 00091910 C0 01 00 1C */ lfs f0, 0x1c(r1)
-/* 800949D4 00091914 EC 00 30 28 */ fsubs f0, f0, f6
-/* 800949D8 00091918 3D 08 3C 6F */ addis r8, r8, 0x3c6f
-/* 800949DC 0009191C 38 08 F3 5F */ addi r0, r8, -3233
-/* 800949E0 00091920 EC 00 28 28 */ fsubs f0, f0, f5
-/* 800949E4 00091924 90 04 00 C4 */ stw r0, 0xc4(r4)
-/* 800949E8 00091928 54 00 BA 7E */ srwi r0, r0, 9
-/* 800949EC 0009192C 64 08 3F 80 */ oris r8, r0, 0x3f80
-/* 800949F0 00091930 80 04 00 C4 */ lwz r0, 0xc4(r4)
-/* 800949F4 00091934 91 01 00 18 */ stw r8, 0x18(r1)
-/* 800949F8 00091938 7D 00 49 D6 */ mullw r8, r0, r9
-/* 800949FC 0009193C C0 21 00 18 */ lfs f1, 0x18(r1)
-/* 80094A00 00091940 EC 21 30 28 */ fsubs f1, f1, f6
-/* 80094A04 00091944 3D 08 3C 6F */ addis r8, r8, 0x3c6f
-/* 80094A08 00091948 38 08 F3 5F */ addi r0, r8, -3233
-/* 80094A0C 0009194C ED 41 28 28 */ fsubs f10, f1, f5
-/* 80094A10 00091950 90 04 00 C4 */ stw r0, 0xc4(r4)
-/* 80094A14 00091954 54 00 BA 7E */ srwi r0, r0, 9
-/* 80094A18 00091958 64 08 3F 80 */ oris r8, r0, 0x3f80
-/* 80094A1C 0009195C 80 04 00 C4 */ lwz r0, 0xc4(r4)
-/* 80094A20 00091960 EC 2A 02 B2 */ fmuls f1, f10, f10
-/* 80094A24 00091964 91 01 00 14 */ stw r8, 0x14(r1)
-/* 80094A28 00091968 7D 00 49 D6 */ mullw r8, r0, r9
-/* 80094A2C 0009196C C0 61 00 14 */ lfs f3, 0x14(r1)
-/* 80094A30 00091970 EC 63 30 28 */ fsubs f3, f3, f6
-/* 80094A34 00091974 3D 08 3C 6F */ addis r8, r8, 0x3c6f
-/* 80094A38 00091978 39 08 F3 5F */ addi r8, r8, -3233
-/* 80094A3C 0009197C ED 23 28 28 */ fsubs f9, f3, f5
-/* 80094A40 00091980 55 00 BA 7E */ srwi r0, r8, 9
-/* 80094A44 00091984 91 04 00 C4 */ stw r8, 0xc4(r4)
-/* 80094A48 00091988 64 00 3F 80 */ oris r0, r0, 0x3f80
-/* 80094A4C 0009198C EC 69 0A 7A */ fmadds f3, f9, f9, f1
-/* 80094A50 00091990 90 01 00 24 */ stw r0, 0x24(r1)
-/* 80094A54 00091994 C0 27 48 DC */ lfs f1, __float_epsilon@l(r7)
-/* 80094A58 00091998 C0 81 00 24 */ lfs f4, 0x24(r1)
-/* 80094A5C 0009199C EC 22 00 72 */ fmuls f1, f2, f1
-/* 80094A60 000919A0 ED 60 18 3A */ fmadds f11, f0, f0, f3
-/* 80094A64 000919A4 EC 44 30 28 */ fsubs f2, f4, f6
-/* 80094A68 000919A8 FC 0B 08 40 */ fcmpo cr0, f11, f1
-/* 80094A6C 000919AC EC 88 00 B2 */ fmuls f4, f8, f2
-/* 80094A70 000919B0 4C 40 13 82 */ cror 2, 0, 2
-/* 80094A74 000919B4 41 82 00 40 */ beq .L_80094AB4
-/* 80094A78 000919B8 FC 0B 38 40 */ fcmpo cr0, f11, f7
-/* 80094A7C 000919BC 4C 40 13 82 */ cror 2, 0, 2
-/* 80094A80 000919C0 40 82 00 08 */ bne .L_80094A88
-/* 80094A84 000919C4 48 00 00 20 */ b .L_80094AA4
-.L_80094A88:
-/* 80094A88 000919C8 FC 60 58 34 */ frsqrte f3, f11
-/* 80094A8C 000919CC C0 22 88 E0 */ lfs f1, lbl_80516C40@sda21(r2)
-/* 80094A90 000919D0 FC 60 18 18 */ frsp f3, f3
-/* 80094A94 000919D4 EC 43 00 F2 */ fmuls f2, f3, f3
-/* 80094A98 000919D8 EC 65 00 F2 */ fmuls f3, f5, f3
-/* 80094A9C 000919DC EC 2B 08 BC */ fnmsubs f1, f11, f2, f1
-/* 80094AA0 000919E0 ED 63 00 72 */ fmuls f11, f3, f1
-.L_80094AA4:
-/* 80094AA4 000919E4 EC 2B 01 32 */ fmuls f1, f11, f4
-/* 80094AA8 000919E8 ED 29 00 72 */ fmuls f9, f9, f1
-/* 80094AAC 000919EC ED 4A 00 72 */ fmuls f10, f10, f1
-/* 80094AB0 000919F0 EC 00 00 72 */ fmuls f0, f0, f1
-.L_80094AB4:
-/* 80094AB4 000919F4 C0 23 00 0C */ lfs f1, 0xc(r3)
-/* 80094AB8 000919F8 EC 21 48 2A */ fadds f1, f1, f9
-/* 80094ABC 000919FC D0 23 00 0C */ stfs f1, 0xc(r3)
-/* 80094AC0 00091A00 C0 23 00 10 */ lfs f1, 0x10(r3)
-/* 80094AC4 00091A04 EC 21 50 2A */ fadds f1, f1, f10
-/* 80094AC8 00091A08 D0 23 00 10 */ stfs f1, 0x10(r3)
-/* 80094ACC 00091A0C C0 23 00 14 */ lfs f1, 0x14(r3)
-/* 80094AD0 00091A10 EC 01 00 2A */ fadds f0, f1, f0
-/* 80094AD4 00091A14 D0 03 00 14 */ stfs f0, 0x14(r3)
-.L_80094AD8:
-/* 80094AD8 00091A18 80 E4 00 E8 */ lwz r7, 0xe8(r4)
-/* 80094ADC 00091A1C 80 E7 00 2C */ lwz r7, 0x2c(r7)
-/* 80094AE0 00091A20 80 E7 00 00 */ lwz r7, 0(r7)
-/* 80094AE4 00091A24 80 07 00 08 */ lwz r0, 8(r7)
-/* 80094AE8 00091A28 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b
-/* 80094AEC 00091A2C 41 82 00 10 */ beq .L_80094AFC
-/* 80094AF0 00091A30 80 03 00 7C */ lwz r0, 0x7c(r3)
-/* 80094AF4 00091A34 60 00 00 20 */ ori r0, r0, 0x20
-/* 80094AF8 00091A38 90 03 00 7C */ stw r0, 0x7c(r3)
-.L_80094AFC:
-/* 80094AFC 00091A3C C0 05 00 18 */ lfs f0, 0x18(r5)
-/* 80094B00 00091A40 3D 00 00 19 */ lis r8, 0x0019660D@ha
-/* 80094B04 00091A44 39 48 66 0D */ addi r10, r8, 0x0019660D@l
-/* 80094B08 00091A48 C0 A2 88 D0 */ lfs f5, lbl_80516C30@sda21(r2)
-/* 80094B0C 00091A4C D0 03 00 18 */ stfs f0, 0x18(r3)
-/* 80094B10 00091A50 3C E0 80 51 */ lis r7, __float_epsilon@ha
-/* 80094B14 00091A54 C0 42 88 D8 */ lfs f2, lbl_80516C38@sda21(r2)
-/* 80094B18 00091A58 C0 05 00 1C */ lfs f0, 0x1c(r5)
-/* 80094B1C 00091A5C D0 03 00 1C */ stfs f0, 0x1c(r3)
-/* 80094B20 00091A60 C0 05 00 20 */ lfs f0, 0x20(r5)
-/* 80094B24 00091A64 D0 03 00 20 */ stfs f0, 0x20(r3)
-/* 80094B28 00091A68 80 04 00 C4 */ lwz r0, 0xc4(r4)
-/* 80094B2C 00091A6C 7D 00 51 D6 */ mullw r8, r0, r10
-/* 80094B30 00091A70 3D 08 3C 6F */ addis r8, r8, 0x3c6f
-/* 80094B34 00091A74 38 08 F3 5F */ addi r0, r8, -3233
-/* 80094B38 00091A78 90 04 00 C4 */ stw r0, 0xc4(r4)
-/* 80094B3C 00091A7C 54 00 BA 7E */ srwi r0, r0, 9
-/* 80094B40 00091A80 64 09 3F 80 */ oris r9, r0, 0x3f80
-/* 80094B44 00091A84 80 04 00 C4 */ lwz r0, 0xc4(r4)
-/* 80094B48 00091A88 81 66 00 00 */ lwz r11, 0(r6)
-/* 80094B4C 00091A8C 7D 00 51 D6 */ mullw r8, r0, r10
-/* 80094B50 00091A90 91 21 00 20 */ stw r9, 0x20(r1)
-/* 80094B54 00091A94 C0 8B 00 10 */ lfs f4, 0x10(r11)
-/* 80094B58 00091A98 C0 01 00 20 */ lfs f0, 0x20(r1)
-/* 80094B5C 00091A9C C0 6B 00 14 */ lfs f3, 0x14(r11)
-/* 80094B60 00091AA0 EC 00 28 28 */ fsubs f0, f0, f5
-/* 80094B64 00091AA4 3D 08 3C 6F */ addis r8, r8, 0x3c6f
-/* 80094B68 00091AA8 38 08 F3 5F */ addi r0, r8, -3233
-/* 80094B6C 00091AAC EC 00 00 2A */ fadds f0, f0, f0
-/* 80094B70 00091AB0 90 04 00 C4 */ stw r0, 0xc4(r4)
-/* 80094B74 00091AB4 54 00 BA 7E */ srwi r0, r0, 9
-/* 80094B78 00091AB8 64 08 3F 80 */ oris r8, r0, 0x3f80
-/* 80094B7C 00091ABC 80 04 00 C4 */ lwz r0, 0xc4(r4)
-/* 80094B80 00091AC0 EC 20 28 28 */ fsubs f1, f0, f5
-/* 80094B84 00091AC4 91 01 00 10 */ stw r8, 0x10(r1)
-/* 80094B88 00091AC8 7D 00 51 D6 */ mullw r8, r0, r10
-/* 80094B8C 00091ACC EC 23 28 7A */ fmadds f1, f3, f1, f5
-/* 80094B90 00091AD0 C0 01 00 10 */ lfs f0, 0x10(r1)
-/* 80094B94 00091AD4 EC 00 28 28 */ fsubs f0, f0, f5
-/* 80094B98 00091AD8 ED 04 00 72 */ fmuls f8, f4, f1
-/* 80094B9C 00091ADC 3D 08 3C 6F */ addis r8, r8, 0x3c6f
-/* 80094BA0 00091AE0 38 08 F3 5F */ addi r0, r8, -3233
-/* 80094BA4 00091AE4 EC 00 00 2A */ fadds f0, f0, f0
-/* 80094BA8 00091AE8 90 04 00 C4 */ stw r0, 0xc4(r4)
-/* 80094BAC 00091AEC 54 00 BA 7E */ srwi r0, r0, 9
-/* 80094BB0 00091AF0 64 08 3F 80 */ oris r8, r0, 0x3f80
-/* 80094BB4 00091AF4 80 04 00 C4 */ lwz r0, 0xc4(r4)
-/* 80094BB8 00091AF8 EC 00 28 28 */ fsubs f0, f0, f5
-/* 80094BBC 00091AFC 91 01 00 0C */ stw r8, 0xc(r1)
-/* 80094BC0 00091B00 7D 00 51 D6 */ mullw r8, r0, r10
-/* 80094BC4 00091B04 C0 21 00 0C */ lfs f1, 0xc(r1)
-/* 80094BC8 00091B08 EC 21 28 28 */ fsubs f1, f1, f5
-/* 80094BCC 00091B0C 3D 08 3C 6F */ addis r8, r8, 0x3c6f
-/* 80094BD0 00091B10 39 08 F3 5F */ addi r8, r8, -3233
-/* 80094BD4 00091B14 EC 21 08 2A */ fadds f1, f1, f1
-/* 80094BD8 00091B18 55 00 BA 7E */ srwi r0, r8, 9
-/* 80094BDC 00091B1C 91 04 00 C4 */ stw r8, 0xc4(r4)
-/* 80094BE0 00091B20 64 00 3F 80 */ oris r0, r0, 0x3f80
-/* 80094BE4 00091B24 90 01 00 08 */ stw r0, 8(r1)
-/* 80094BE8 00091B28 EC C1 28 28 */ fsubs f6, f1, f5
-/* 80094BEC 00091B2C C0 27 48 DC */ lfs f1, __float_epsilon@l(r7)
-/* 80094BF0 00091B30 C0 81 00 08 */ lfs f4, 8(r1)
-/* 80094BF4 00091B34 EC 22 00 72 */ fmuls f1, f2, f1
-/* 80094BF8 00091B38 EC 84 28 28 */ fsubs f4, f4, f5
-/* 80094BFC 00091B3C EC 66 01 B2 */ fmuls f3, f6, f6
-/* 80094C00 00091B40 EC 44 20 2A */ fadds f2, f4, f4
-/* 80094C04 00091B44 EC A2 28 28 */ fsubs f5, f2, f5
-/* 80094C08 00091B48 EC 45 19 7A */ fmadds f2, f5, f5, f3
-/* 80094C0C 00091B4C EC E0 10 3A */ fmadds f7, f0, f0, f2
-/* 80094C10 00091B50 FC 07 08 40 */ fcmpo cr0, f7, f1
-/* 80094C14 00091B54 4C 40 13 82 */ cror 2, 0, 2
-/* 80094C18 00091B58 41 82 00 48 */ beq .L_80094C60
-/* 80094C1C 00091B5C C0 22 88 D4 */ lfs f1, lbl_80516C34@sda21(r2)
-/* 80094C20 00091B60 FC 07 08 40 */ fcmpo cr0, f7, f1
-/* 80094C24 00091B64 4C 40 13 82 */ cror 2, 0, 2
-/* 80094C28 00091B68 40 82 00 08 */ bne .L_80094C30
-/* 80094C2C 00091B6C 48 00 00 24 */ b .L_80094C50
-.L_80094C30:
-/* 80094C30 00091B70 FC 80 38 34 */ frsqrte f4, f7
-/* 80094C34 00091B74 C0 62 88 DC */ lfs f3, lbl_80516C3C@sda21(r2)
-/* 80094C38 00091B78 C0 22 88 E0 */ lfs f1, lbl_80516C40@sda21(r2)
-/* 80094C3C 00091B7C FC 80 20 18 */ frsp f4, f4
-/* 80094C40 00091B80 EC 44 01 32 */ fmuls f2, f4, f4
-/* 80094C44 00091B84 EC 63 01 32 */ fmuls f3, f3, f4
-/* 80094C48 00091B88 EC 27 08 BC */ fnmsubs f1, f7, f2, f1
-/* 80094C4C 00091B8C EC E3 00 72 */ fmuls f7, f3, f1
-.L_80094C50:
-/* 80094C50 00091B90 EC 27 02 32 */ fmuls f1, f7, f8
-/* 80094C54 00091B94 EC A5 00 72 */ fmuls f5, f5, f1
-/* 80094C58 00091B98 EC C6 00 72 */ fmuls f6, f6, f1
-/* 80094C5C 00091B9C EC 00 00 72 */ fmuls f0, f0, f1
-.L_80094C60:
-/* 80094C60 00091BA0 80 86 00 00 */ lwz r4, 0(r6)
-/* 80094C64 00091BA4 C0 25 00 30 */ lfs f1, 0x30(r5)
-/* 80094C68 00091BA8 C0 44 00 18 */ lfs f2, 0x18(r4)
-/* 80094C6C 00091BAC EC 21 28 BA */ fmadds f1, f1, f2, f5
-/* 80094C70 00091BB0 D0 23 00 30 */ stfs f1, 0x30(r3)
-/* 80094C74 00091BB4 C0 25 00 34 */ lfs f1, 0x34(r5)
-/* 80094C78 00091BB8 EC 21 30 BA */ fmadds f1, f1, f2, f6
-/* 80094C7C 00091BBC D0 23 00 34 */ stfs f1, 0x34(r3)
-/* 80094C80 00091BC0 C0 25 00 38 */ lfs f1, 0x38(r5)
-/* 80094C84 00091BC4 EC 01 00 BA */ fmadds f0, f1, f2, f0
-/* 80094C88 00091BC8 D0 03 00 38 */ stfs f0, 0x38(r3)
-/* 80094C8C 00091BCC 80 86 00 00 */ lwz r4, 0(r6)
-/* 80094C90 00091BD0 C0 05 00 48 */ lfs f0, 0x48(r5)
-/* 80094C94 00091BD4 C0 24 00 18 */ lfs f1, 0x18(r4)
-/* 80094C98 00091BD8 EC 00 00 72 */ fmuls f0, f0, f1
-/* 80094C9C 00091BDC D0 03 00 3C */ stfs f0, 0x3c(r3)
-/* 80094CA0 00091BE0 C0 05 00 4C */ lfs f0, 0x4c(r5)
-/* 80094CA4 00091BE4 EC 00 00 72 */ fmuls f0, f0, f1
-/* 80094CA8 00091BE8 D0 03 00 40 */ stfs f0, 0x40(r3)
-/* 80094CAC 00091BEC C0 05 00 50 */ lfs f0, 0x50(r5)
-/* 80094CB0 00091BF0 EC 00 00 72 */ fmuls f0, f0, f1
-/* 80094CB4 00091BF4 D0 03 00 44 */ stfs f0, 0x44(r3)
-/* 80094CB8 00091BF8 C0 05 00 70 */ lfs f0, 0x70(r5)
-/* 80094CBC 00091BFC D0 03 00 70 */ stfs f0, 0x70(r3)
-/* 80094CC0 00091C00 80 86 00 00 */ lwz r4, 0(r6)
-/* 80094CC4 00091C04 80 04 00 08 */ lwz r0, 8(r4)
-/* 80094CC8 00091C08 54 00 02 95 */ rlwinm. r0, r0, 0, 0xa, 0xa
-/* 80094CCC 00091C0C 41 82 00 10 */ beq .L_80094CDC
-/* 80094CD0 00091C10 C0 05 00 74 */ lfs f0, 0x74(r5)
-/* 80094CD4 00091C14 D0 03 00 74 */ stfs f0, 0x74(r3)
-/* 80094CD8 00091C18 48 00 00 18 */ b .L_80094CF0
-.L_80094CDC:
-/* 80094CDC 00091C1C 80 03 00 7C */ lwz r0, 0x7c(r3)
-/* 80094CE0 00091C20 C0 02 88 D0 */ lfs f0, lbl_80516C30@sda21(r2)
-/* 80094CE4 00091C24 60 00 00 40 */ ori r0, r0, 0x40
-/* 80094CE8 00091C28 90 03 00 7C */ stw r0, 0x7c(r3)
-/* 80094CEC 00091C2C D0 03 00 74 */ stfs f0, 0x74(r3)
-.L_80094CF0:
-/* 80094CF0 00091C30 80 05 00 78 */ lwz r0, 0x78(r5)
-/* 80094CF4 00091C34 90 03 00 78 */ stw r0, 0x78(r3)
-/* 80094CF8 00091C38 C0 03 00 3C */ lfs f0, 0x3c(r3)
-/* 80094CFC 00091C3C D0 03 00 48 */ stfs f0, 0x48(r3)
-/* 80094D00 00091C40 C0 03 00 40 */ lfs f0, 0x40(r3)
-/* 80094D04 00091C44 D0 03 00 4C */ stfs f0, 0x4c(r3)
-/* 80094D08 00091C48 C0 03 00 44 */ lfs f0, 0x44(r3)
-/* 80094D0C 00091C4C D0 03 00 50 */ stfs f0, 0x50(r3)
-/* 80094D10 00091C50 C0 63 00 70 */ lfs f3, 0x70(r3)
-/* 80094D14 00091C54 C0 43 00 74 */ lfs f2, 0x74(r3)
-/* 80094D18 00091C58 C0 23 00 30 */ lfs f1, 0x30(r3)
-/* 80094D1C 00091C5C EC 83 00 B2 */ fmuls f4, f3, f2
-/* 80094D20 00091C60 C0 03 00 48 */ lfs f0, 0x48(r3)
-/* 80094D24 00091C64 C0 43 00 34 */ lfs f2, 0x34(r3)
-/* 80094D28 00091C68 EC 01 00 2A */ fadds f0, f1, f0
-/* 80094D2C 00091C6C C0 23 00 4C */ lfs f1, 0x4c(r3)
-/* 80094D30 00091C70 C0 63 00 38 */ lfs f3, 0x38(r3)
-/* 80094D34 00091C74 EC 22 08 2A */ fadds f1, f2, f1
-/* 80094D38 00091C78 C0 43 00 50 */ lfs f2, 0x50(r3)
-/* 80094D3C 00091C7C EC 04 00 32 */ fmuls f0, f4, f0
-/* 80094D40 00091C80 EC 43 10 2A */ fadds f2, f3, f2
-/* 80094D44 00091C84 EC 24 00 72 */ fmuls f1, f4, f1
-/* 80094D48 00091C88 D0 03 00 24 */ stfs f0, 0x24(r3)
-/* 80094D4C 00091C8C EC 04 00 B2 */ fmuls f0, f4, f2
-/* 80094D50 00091C90 D0 23 00 28 */ stfs f1, 0x28(r3)
-/* 80094D54 00091C94 D0 03 00 2C */ stfs f0, 0x2c(r3)
-/* 80094D58 00091C98 C0 05 00 54 */ lfs f0, 0x54(r5)
-/* 80094D5C 00091C9C D0 03 00 54 */ stfs f0, 0x54(r3)
-/* 80094D60 00091CA0 C0 05 00 58 */ lfs f0, 0x58(r5)
-/* 80094D64 00091CA4 D0 03 00 58 */ stfs f0, 0x58(r3)
-/* 80094D68 00091CA8 C0 05 00 5C */ lfs f0, 0x5c(r5)
-/* 80094D6C 00091CAC D0 03 00 5C */ stfs f0, 0x5c(r3)
-/* 80094D70 00091CB0 80 86 00 00 */ lwz r4, 0(r6)
-/* 80094D74 00091CB4 80 04 00 08 */ lwz r0, 8(r4)
-/* 80094D78 00091CB8 54 00 03 DF */ rlwinm. r0, r0, 0, 0xf, 0xf
-/* 80094D7C 00091CBC 41 82 00 34 */ beq .L_80094DB0
-/* 80094D80 00091CC0 C0 25 00 60 */ lfs f1, 0x60(r5)
-/* 80094D84 00091CC4 C0 04 00 28 */ lfs f0, 0x28(r4)
-/* 80094D88 00091CC8 EC 01 00 32 */ fmuls f0, f1, f0
-/* 80094D8C 00091CCC D0 03 00 68 */ stfs f0, 0x68(r3)
-/* 80094D90 00091CD0 D0 03 00 60 */ stfs f0, 0x60(r3)
-/* 80094D94 00091CD4 80 86 00 00 */ lwz r4, 0(r6)
-/* 80094D98 00091CD8 C0 25 00 64 */ lfs f1, 0x64(r5)
-/* 80094D9C 00091CDC C0 04 00 28 */ lfs f0, 0x28(r4)
-/* 80094DA0 00091CE0 EC 01 00 32 */ fmuls f0, f1, f0
-/* 80094DA4 00091CE4 D0 03 00 6C */ stfs f0, 0x6c(r3)
-/* 80094DA8 00091CE8 D0 03 00 64 */ stfs f0, 0x64(r3)
-/* 80094DAC 00091CEC 48 00 00 18 */ b .L_80094DC4
-.L_80094DB0:
-/* 80094DB0 00091CF0 C0 02 88 D0 */ lfs f0, lbl_80516C30@sda21(r2)
-/* 80094DB4 00091CF4 D0 03 00 6C */ stfs f0, 0x6c(r3)
-/* 80094DB8 00091CF8 D0 03 00 64 */ stfs f0, 0x64(r3)
-/* 80094DBC 00091CFC D0 03 00 68 */ stfs f0, 0x68(r3)
-/* 80094DC0 00091D00 D0 03 00 60 */ stfs f0, 0x60(r3)
-.L_80094DC4:
-/* 80094DC4 00091D04 80 E6 00 00 */ lwz r7, 0(r6)
-/* 80094DC8 00091D08 80 07 00 08 */ lwz r0, 8(r7)
-/* 80094DCC 00091D0C 54 00 03 5B */ rlwinm. r0, r0, 0, 0xd, 0xd
-/* 80094DD0 00091D10 41 82 01 2C */ beq .L_80094EFC
-/* 80094DD4 00091D14 88 85 00 8C */ lbz r4, 0x8c(r5)
-/* 80094DD8 00091D18 3C 00 43 30 */ lis r0, 0x4330
-/* 80094DDC 00091D1C 90 01 00 28 */ stw r0, 0x28(r1)
-/* 80094DE0 00091D20 C8 42 88 F0 */ lfd f2, lbl_80516C50@sda21(r2)
-/* 80094DE4 00091D24 90 81 00 2C */ stw r4, 0x2c(r1)
-/* 80094DE8 00091D28 C0 07 00 30 */ lfs f0, 0x30(r7)
-/* 80094DEC 00091D2C C8 21 00 28 */ lfd f1, 0x28(r1)
-/* 80094DF0 00091D30 90 01 00 38 */ stw r0, 0x38(r1)
-/* 80094DF4 00091D34 EC 21 10 28 */ fsubs f1, f1, f2
-/* 80094DF8 00091D38 90 01 00 48 */ stw r0, 0x48(r1)
-/* 80094DFC 00091D3C EC 01 00 32 */ fmuls f0, f1, f0
-/* 80094E00 00091D40 90 01 00 58 */ stw r0, 0x58(r1)
-/* 80094E04 00091D44 90 01 00 68 */ stw r0, 0x68(r1)
-/* 80094E08 00091D48 FC 00 00 1E */ fctiwz f0, f0
-/* 80094E0C 00091D4C 90 01 00 78 */ stw r0, 0x78(r1)
-/* 80094E10 00091D50 D8 01 00 30 */ stfd f0, 0x30(r1)
-/* 80094E14 00091D54 80 01 00 34 */ lwz r0, 0x34(r1)
-/* 80094E18 00091D58 98 03 00 8C */ stb r0, 0x8c(r3)
-/* 80094E1C 00091D5C 88 05 00 8D */ lbz r0, 0x8d(r5)
-/* 80094E20 00091D60 80 86 00 00 */ lwz r4, 0(r6)
-/* 80094E24 00091D64 90 01 00 3C */ stw r0, 0x3c(r1)
-/* 80094E28 00091D68 C0 04 00 30 */ lfs f0, 0x30(r4)
-/* 80094E2C 00091D6C C8 21 00 38 */ lfd f1, 0x38(r1)
-/* 80094E30 00091D70 EC 21 10 28 */ fsubs f1, f1, f2
-/* 80094E34 00091D74 EC 01 00 32 */ fmuls f0, f1, f0
-/* 80094E38 00091D78 FC 00 00 1E */ fctiwz f0, f0
-/* 80094E3C 00091D7C D8 01 00 40 */ stfd f0, 0x40(r1)
-/* 80094E40 00091D80 80 01 00 44 */ lwz r0, 0x44(r1)
-/* 80094E44 00091D84 98 03 00 8D */ stb r0, 0x8d(r3)
-/* 80094E48 00091D88 88 05 00 8E */ lbz r0, 0x8e(r5)
-/* 80094E4C 00091D8C 80 86 00 00 */ lwz r4, 0(r6)
-/* 80094E50 00091D90 90 01 00 4C */ stw r0, 0x4c(r1)
-/* 80094E54 00091D94 C0 04 00 30 */ lfs f0, 0x30(r4)
-/* 80094E58 00091D98 C8 21 00 48 */ lfd f1, 0x48(r1)
-/* 80094E5C 00091D9C EC 21 10 28 */ fsubs f1, f1, f2
-/* 80094E60 00091DA0 EC 01 00 32 */ fmuls f0, f1, f0
-/* 80094E64 00091DA4 FC 00 00 1E */ fctiwz f0, f0
-/* 80094E68 00091DA8 D8 01 00 50 */ stfd f0, 0x50(r1)
-/* 80094E6C 00091DAC 80 01 00 54 */ lwz r0, 0x54(r1)
-/* 80094E70 00091DB0 98 03 00 8E */ stb r0, 0x8e(r3)
-/* 80094E74 00091DB4 88 05 00 90 */ lbz r0, 0x90(r5)
-/* 80094E78 00091DB8 80 86 00 00 */ lwz r4, 0(r6)
-/* 80094E7C 00091DBC 90 01 00 5C */ stw r0, 0x5c(r1)
-/* 80094E80 00091DC0 C0 04 00 30 */ lfs f0, 0x30(r4)
-/* 80094E84 00091DC4 C8 21 00 58 */ lfd f1, 0x58(r1)
-/* 80094E88 00091DC8 EC 21 10 28 */ fsubs f1, f1, f2
-/* 80094E8C 00091DCC EC 01 00 32 */ fmuls f0, f1, f0
-/* 80094E90 00091DD0 FC 00 00 1E */ fctiwz f0, f0
-/* 80094E94 00091DD4 D8 01 00 60 */ stfd f0, 0x60(r1)
-/* 80094E98 00091DD8 80 01 00 64 */ lwz r0, 0x64(r1)
-/* 80094E9C 00091DDC 98 03 00 90 */ stb r0, 0x90(r3)
-/* 80094EA0 00091DE0 88 05 00 91 */ lbz r0, 0x91(r5)
-/* 80094EA4 00091DE4 80 86 00 00 */ lwz r4, 0(r6)
-/* 80094EA8 00091DE8 90 01 00 6C */ stw r0, 0x6c(r1)
-/* 80094EAC 00091DEC C0 04 00 30 */ lfs f0, 0x30(r4)
-/* 80094EB0 00091DF0 C8 21 00 68 */ lfd f1, 0x68(r1)
-/* 80094EB4 00091DF4 EC 21 10 28 */ fsubs f1, f1, f2
-/* 80094EB8 00091DF8 EC 01 00 32 */ fmuls f0, f1, f0
-/* 80094EBC 00091DFC FC 00 00 1E */ fctiwz f0, f0
-/* 80094EC0 00091E00 D8 01 00 70 */ stfd f0, 0x70(r1)
-/* 80094EC4 00091E04 80 01 00 74 */ lwz r0, 0x74(r1)
-/* 80094EC8 00091E08 98 03 00 91 */ stb r0, 0x91(r3)
-/* 80094ECC 00091E0C 88 05 00 92 */ lbz r0, 0x92(r5)
-/* 80094ED0 00091E10 80 86 00 00 */ lwz r4, 0(r6)
-/* 80094ED4 00091E14 90 01 00 7C */ stw r0, 0x7c(r1)
-/* 80094ED8 00091E18 C0 04 00 30 */ lfs f0, 0x30(r4)
-/* 80094EDC 00091E1C C8 21 00 78 */ lfd f1, 0x78(r1)
-/* 80094EE0 00091E20 EC 21 10 28 */ fsubs f1, f1, f2
-/* 80094EE4 00091E24 EC 01 00 32 */ fmuls f0, f1, f0
-/* 80094EE8 00091E28 FC 00 00 1E */ fctiwz f0, f0
-/* 80094EEC 00091E2C D8 01 00 80 */ stfd f0, 0x80(r1)
-/* 80094EF0 00091E30 80 01 00 84 */ lwz r0, 0x84(r1)
-/* 80094EF4 00091E34 98 03 00 92 */ stb r0, 0x92(r3)
-/* 80094EF8 00091E38 48 00 00 48 */ b .L_80094F40
-.L_80094EFC:
-/* 80094EFC 00091E3C 88 07 00 34 */ lbz r0, 0x34(r7)
-/* 80094F00 00091E40 98 03 00 8C */ stb r0, 0x8c(r3)
-/* 80094F04 00091E44 88 07 00 35 */ lbz r0, 0x35(r7)
-/* 80094F08 00091E48 98 03 00 8D */ stb r0, 0x8d(r3)
-/* 80094F0C 00091E4C 88 07 00 36 */ lbz r0, 0x36(r7)
-/* 80094F10 00091E50 98 03 00 8E */ stb r0, 0x8e(r3)
-/* 80094F14 00091E54 88 07 00 37 */ lbz r0, 0x37(r7)
-/* 80094F18 00091E58 98 03 00 8F */ stb r0, 0x8f(r3)
-/* 80094F1C 00091E5C 80 86 00 00 */ lwz r4, 0(r6)
-/* 80094F20 00091E60 88 04 00 38 */ lbz r0, 0x38(r4)
-/* 80094F24 00091E64 98 03 00 90 */ stb r0, 0x90(r3)
-/* 80094F28 00091E68 88 04 00 39 */ lbz r0, 0x39(r4)
-/* 80094F2C 00091E6C 98 03 00 91 */ stb r0, 0x91(r3)
-/* 80094F30 00091E70 88 04 00 3A */ lbz r0, 0x3a(r4)
-/* 80094F34 00091E74 98 03 00 92 */ stb r0, 0x92(r3)
-/* 80094F38 00091E78 88 04 00 3B */ lbz r0, 0x3b(r4)
-/* 80094F3C 00091E7C 98 03 00 93 */ stb r0, 0x93(r3)
-.L_80094F40:
-/* 80094F40 00091E80 38 00 00 FF */ li r0, 0xff
-/* 80094F44 00091E84 98 03 00 96 */ stb r0, 0x96(r3)
-/* 80094F48 00091E88 81 06 00 00 */ lwz r8, 0(r6)
-/* 80094F4C 00091E8C 80 08 00 08 */ lwz r0, 8(r8)
-/* 80094F50 00091E90 54 00 03 9D */ rlwinm. r0, r0, 0, 0xe, 0xe
-/* 80094F54 00091E94 41 82 00 4C */ beq .L_80094FA0
-/* 80094F58 00091E98 88 85 00 96 */ lbz r4, 0x96(r5)
-/* 80094F5C 00091E9C 3C 00 43 30 */ lis r0, 0x4330
-/* 80094F60 00091EA0 88 E5 00 8F */ lbz r7, 0x8f(r5)
-/* 80094F64 00091EA4 38 84 00 01 */ addi r4, r4, 1
-/* 80094F68 00091EA8 90 01 00 80 */ stw r0, 0x80(r1)
-/* 80094F6C 00091EAC 7C 07 21 D6 */ mullw r0, r7, r4
-/* 80094F70 00091EB0 C8 42 88 F0 */ lfd f2, lbl_80516C50@sda21(r2)
-/* 80094F74 00091EB4 C0 08 00 2C */ lfs f0, 0x2c(r8)
-/* 80094F78 00091EB8 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
-/* 80094F7C 00091EBC 90 01 00 84 */ stw r0, 0x84(r1)
-/* 80094F80 00091EC0 C8 21 00 80 */ lfd f1, 0x80(r1)
-/* 80094F84 00091EC4 EC 21 10 28 */ fsubs f1, f1, f2
-/* 80094F88 00091EC8 EC 01 00 32 */ fmuls f0, f1, f0
-/* 80094F8C 00091ECC FC 00 00 1E */ fctiwz f0, f0
-/* 80094F90 00091ED0 D8 01 00 78 */ stfd f0, 0x78(r1)
-/* 80094F94 00091ED4 80 01 00 7C */ lwz r0, 0x7c(r1)
-/* 80094F98 00091ED8 98 03 00 8F */ stb r0, 0x8f(r3)
-/* 80094F9C 00091EDC 48 00 00 0C */ b .L_80094FA8
-.L_80094FA0:
-/* 80094FA0 00091EE0 88 08 00 37 */ lbz r0, 0x37(r8)
-/* 80094FA4 00091EE4 98 03 00 8F */ stb r0, 0x8f(r3)
-.L_80094FA8:
-/* 80094FA8 00091EE8 A0 05 00 88 */ lhz r0, 0x88(r5)
-/* 80094FAC 00091EEC B0 03 00 88 */ sth r0, 0x88(r3)
-/* 80094FB0 00091EF0 80 86 00 00 */ lwz r4, 0(r6)
-/* 80094FB4 00091EF4 80 04 00 08 */ lwz r0, 8(r4)
-/* 80094FB8 00091EF8 54 00 01 CF */ rlwinm. r0, r0, 0, 7, 7
-/* 80094FBC 00091EFC 41 82 00 10 */ beq .L_80094FCC
-/* 80094FC0 00091F00 A8 04 00 46 */ lha r0, 0x46(r4)
-/* 80094FC4 00091F04 B0 03 00 8A */ sth r0, 0x8a(r3)
-/* 80094FC8 00091F08 48 00 00 0C */ b .L_80094FD4
-.L_80094FCC:
-/* 80094FCC 00091F0C 38 00 00 00 */ li r0, 0
-/* 80094FD0 00091F10 B0 03 00 8A */ sth r0, 0x8a(r3)
-.L_80094FD4:
-/* 80094FD4 00091F14 38 21 00 90 */ addi r1, r1, 0x90
-/* 80094FD8 00091F18 4E 80 00 20 */ blr
-.endfn init_c__15JPABaseParticleFP18JPAEmitterWorkDataP15JPABaseParticle
-
-.fn calc_p__15JPABaseParticleFP18JPAEmitterWorkData, global
-/* 80094FDC 00091F1C 94 21 FF D0 */ stwu r1, -0x30(r1)
-/* 80094FE0 00091F20 7C 08 02 A6 */ mflr r0
-/* 80094FE4 00091F24 90 01 00 34 */ stw r0, 0x34(r1)
-/* 80094FE8 00091F28 93 E1 00 2C */ stw r31, 0x2c(r1)
-/* 80094FEC 00091F2C 7C 9F 23 78 */ mr r31, r4
-/* 80094FF0 00091F30 93 C1 00 28 */ stw r30, 0x28(r1)
-/* 80094FF4 00091F34 7C 7E 1B 78 */ mr r30, r3
-/* 80094FF8 00091F38 93 A1 00 24 */ stw r29, 0x24(r1)
-/* 80094FFC 00091F3C A8 63 00 80 */ lha r3, 0x80(r3)
-/* 80095000 00091F40 38 03 00 01 */ addi r0, r3, 1
-/* 80095004 00091F44 B0 1E 00 80 */ sth r0, 0x80(r30)
-/* 80095008 00091F48 7C 03 07 34 */ extsh r3, r0
-/* 8009500C 00091F4C A8 1E 00 82 */ lha r0, 0x82(r30)
-/* 80095010 00091F50 7C 03 00 00 */ cmpw r3, r0
-/* 80095014 00091F54 41 80 00 0C */ blt .L_80095020
-/* 80095018 00091F58 38 60 00 01 */ li r3, 1
-/* 8009501C 00091F5C 48 00 02 4C */ b .L_80095268
-.L_80095020:
-/* 80095020 00091F60 A8 9E 00 80 */ lha r4, 0x80(r30)
-/* 80095024 00091F64 3C 60 43 30 */ lis r3, 0x4330
-/* 80095028 00091F68 6C 00 80 00 */ xoris r0, r0, 0x8000
-/* 8009502C 00091F6C 90 61 00 08 */ stw r3, 8(r1)
-/* 80095030 00091F70 6C 84 80 00 */ xoris r4, r4, 0x8000
-/* 80095034 00091F74 C8 42 88 E8 */ lfd f2, lbl_80516C48@sda21(r2)
-/* 80095038 00091F78 90 81 00 0C */ stw r4, 0xc(r1)
-/* 8009503C 00091F7C C8 01 00 08 */ lfd f0, 8(r1)
-/* 80095040 00091F80 90 01 00 14 */ stw r0, 0x14(r1)
-/* 80095044 00091F84 EC 20 10 28 */ fsubs f1, f0, f2
-/* 80095048 00091F88 90 61 00 10 */ stw r3, 0x10(r1)
-/* 8009504C 00091F8C C8 01 00 10 */ lfd f0, 0x10(r1)
-/* 80095050 00091F90 EC 00 10 28 */ fsubs f0, f0, f2
-/* 80095054 00091F94 EC 01 00 24 */ fdivs f0, f1, f0
-/* 80095058 00091F98 D0 1E 00 84 */ stfs f0, 0x84(r30)
-/* 8009505C 00091F9C 80 1E 00 7C */ lwz r0, 0x7c(r30)
-/* 80095060 00091FA0 54 00 06 B5 */ rlwinm. r0, r0, 0, 0x1a, 0x1a
-/* 80095064 00091FA4 41 82 00 1C */ beq .L_80095080
-/* 80095068 00091FA8 C0 1F 01 38 */ lfs f0, 0x138(r31)
-/* 8009506C 00091FAC D0 1E 00 18 */ stfs f0, 0x18(r30)
-/* 80095070 00091FB0 C0 1F 01 3C */ lfs f0, 0x13c(r31)
-/* 80095074 00091FB4 D0 1E 00 1C */ stfs f0, 0x1c(r30)
-/* 80095078 00091FB8 C0 1F 01 40 */ lfs f0, 0x140(r31)
-/* 8009507C 00091FBC D0 1E 00 20 */ stfs f0, 0x20(r30)
-.L_80095080:
-/* 80095080 00091FC0 C0 02 88 D4 */ lfs f0, lbl_80516C34@sda21(r2)
-/* 80095084 00091FC4 D0 1E 00 50 */ stfs f0, 0x50(r30)
-/* 80095088 00091FC8 D0 1E 00 4C */ stfs f0, 0x4c(r30)
-/* 8009508C 00091FCC D0 1E 00 48 */ stfs f0, 0x48(r30)
-/* 80095090 00091FD0 80 1E 00 7C */ lwz r0, 0x7c(r30)
-/* 80095094 00091FD4 54 00 06 73 */ rlwinm. r0, r0, 0, 0x19, 0x19
-/* 80095098 00091FD8 40 82 00 14 */ bne .L_800950AC
-/* 8009509C 00091FDC 80 7F 00 04 */ lwz r3, 4(r31)
-/* 800950A0 00091FE0 7F E4 FB 78 */ mr r4, r31
-/* 800950A4 00091FE4 7F C5 F3 78 */ mr r5, r30
-/* 800950A8 00091FE8 48 00 2C 29 */ bl calcField__11JPAResourceFP18JPAEmitterWorkDataP15JPABaseParticle
-.L_800950AC:
-/* 800950AC 00091FEC C0 3E 00 48 */ lfs f1, 0x48(r30)
-/* 800950B0 00091FF0 C0 1E 00 3C */ lfs f0, 0x3c(r30)
-/* 800950B4 00091FF4 EC 01 00 2A */ fadds f0, f1, f0
-/* 800950B8 00091FF8 D0 1E 00 48 */ stfs f0, 0x48(r30)
-/* 800950BC 00091FFC C0 3E 00 4C */ lfs f1, 0x4c(r30)
-/* 800950C0 00092000 C0 1E 00 40 */ lfs f0, 0x40(r30)
-/* 800950C4 00092004 EC 01 00 2A */ fadds f0, f1, f0
-/* 800950C8 00092008 D0 1E 00 4C */ stfs f0, 0x4c(r30)
-/* 800950CC 0009200C C0 3E 00 50 */ lfs f1, 0x50(r30)
-/* 800950D0 00092010 C0 1E 00 44 */ lfs f0, 0x44(r30)
-/* 800950D4 00092014 EC 01 00 2A */ fadds f0, f1, f0
-/* 800950D8 00092018 D0 1E 00 50 */ stfs f0, 0x50(r30)
-/* 800950DC 0009201C 80 7F 00 00 */ lwz r3, 0(r31)
-/* 800950E0 00092020 C0 1E 00 30 */ lfs f0, 0x30(r30)
-/* 800950E4 00092024 C0 23 00 48 */ lfs f1, 0x48(r3)
-/* 800950E8 00092028 EC 00 00 72 */ fmuls f0, f0, f1
-/* 800950EC 0009202C D0 1E 00 30 */ stfs f0, 0x30(r30)
-/* 800950F0 00092030 C0 1E 00 34 */ lfs f0, 0x34(r30)
-/* 800950F4 00092034 EC 00 00 72 */ fmuls f0, f0, f1
-/* 800950F8 00092038 D0 1E 00 34 */ stfs f0, 0x34(r30)
-/* 800950FC 0009203C C0 1E 00 38 */ lfs f0, 0x38(r30)
-/* 80095100 00092040 EC 00 00 72 */ fmuls f0, f0, f1
-/* 80095104 00092044 D0 1E 00 38 */ stfs f0, 0x38(r30)
-/* 80095108 00092048 C0 7E 00 70 */ lfs f3, 0x70(r30)
-/* 8009510C 0009204C C0 5E 00 74 */ lfs f2, 0x74(r30)
-/* 80095110 00092050 C0 3E 00 30 */ lfs f1, 0x30(r30)
-/* 80095114 00092054 C0 1E 00 48 */ lfs f0, 0x48(r30)
-/* 80095118 00092058 EC 83 00 B2 */ fmuls f4, f3, f2
-/* 8009511C 0009205C C0 5E 00 34 */ lfs f2, 0x34(r30)
-/* 80095120 00092060 EC 01 00 2A */ fadds f0, f1, f0
-/* 80095124 00092064 C0 3E 00 4C */ lfs f1, 0x4c(r30)
-/* 80095128 00092068 C0 7E 00 38 */ lfs f3, 0x38(r30)
-/* 8009512C 0009206C EC 22 08 2A */ fadds f1, f2, f1
-/* 80095130 00092070 C0 5E 00 50 */ lfs f2, 0x50(r30)
-/* 80095134 00092074 EC 04 00 32 */ fmuls f0, f4, f0
-/* 80095138 00092078 EC 43 10 2A */ fadds f2, f3, f2
-/* 8009513C 0009207C EC 24 00 72 */ fmuls f1, f4, f1
-/* 80095140 00092080 D0 1E 00 24 */ stfs f0, 0x24(r30)
-/* 80095144 00092084 EC 04 00 B2 */ fmuls f0, f4, f2
-/* 80095148 00092088 D0 3E 00 28 */ stfs f1, 0x28(r30)
-/* 8009514C 0009208C D0 1E 00 2C */ stfs f0, 0x2c(r30)
-/* 80095150 00092090 80 9F 00 00 */ lwz r4, 0(r31)
-/* 80095154 00092094 80 64 00 F0 */ lwz r3, 0xf0(r4)
-/* 80095158 00092098 28 03 00 00 */ cmplwi r3, 0
-/* 8009515C 0009209C 41 82 00 18 */ beq .L_80095174
-/* 80095160 000920A0 81 83 00 00 */ lwz r12, 0(r3)
-/* 80095164 000920A4 7F C5 F3 78 */ mr r5, r30
-/* 80095168 000920A8 81 8C 00 0C */ lwz r12, 0xc(r12)
-/* 8009516C 000920AC 7D 89 03 A6 */ mtctr r12
-/* 80095170 000920B0 4E 80 04 21 */ bctrl
-.L_80095174:
-/* 80095174 000920B4 80 1E 00 7C */ lwz r0, 0x7c(r30)
-/* 80095178 000920B8 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
-/* 8009517C 000920BC 41 82 00 0C */ beq .L_80095188
-/* 80095180 000920C0 38 60 00 01 */ li r3, 1
-/* 80095184 000920C4 48 00 00 E4 */ b .L_80095268
-.L_80095188:
-/* 80095188 000920C8 80 7F 00 04 */ lwz r3, 4(r31)
-/* 8009518C 000920CC 7F E4 FB 78 */ mr r4, r31
-/* 80095190 000920D0 7F C5 F3 78 */ mr r5, r30
-/* 80095194 000920D4 48 00 2A 55 */ bl calc_p__11JPAResourceFP18JPAEmitterWorkDataP15JPABaseParticle
-/* 80095198 000920D8 A0 7E 00 88 */ lhz r3, 0x88(r30)
-/* 8009519C 000920DC A8 1E 00 8A */ lha r0, 0x8a(r30)
-/* 800951A0 000920E0 7C 03 02 14 */ add r0, r3, r0
-/* 800951A4 000920E4 B0 1E 00 88 */ sth r0, 0x88(r30)
-/* 800951A8 000920E8 80 7F 00 04 */ lwz r3, 4(r31)
-/* 800951AC 000920EC 80 03 00 24 */ lwz r0, 0x24(r3)
-/* 800951B0 000920F0 28 00 00 00 */ cmplwi r0, 0
-/* 800951B4 000920F4 41 82 00 44 */ beq .L_800951F8
-/* 800951B8 000920F8 7F C3 F3 78 */ mr r3, r30
-/* 800951BC 000920FC 7F E4 FB 78 */ mr r4, r31
-/* 800951C0 00092100 48 00 03 41 */ bl canCreateChild__15JPABaseParticleFP18JPAEmitterWorkData
-/* 800951C4 00092104 54 60 06 3F */ clrlwi. r0, r3, 0x18
-/* 800951C8 00092108 41 82 00 30 */ beq .L_800951F8
-/* 800951CC 0009210C 80 7F 00 04 */ lwz r3, 4(r31)
-/* 800951D0 00092110 80 63 00 24 */ lwz r3, 0x24(r3)
-/* 800951D4 00092114 80 63 00 00 */ lwz r3, 0(r3)
-/* 800951D8 00092118 AB A3 00 42 */ lha r29, 0x42(r3)
-/* 800951DC 0009211C 48 00 00 14 */ b .L_800951F0
-.L_800951E0:
-/* 800951E0 00092120 80 7F 00 00 */ lwz r3, 0(r31)
-/* 800951E4 00092124 7F C4 F3 78 */ mr r4, r30
-/* 800951E8 00092128 4B FF AF 75 */ bl createChild__14JPABaseEmitterFP15JPABaseParticle
-/* 800951EC 0009212C 3B BD FF FF */ addi r29, r29, -1
-.L_800951F0:
-/* 800951F0 00092130 2C 1D 00 00 */ cmpwi r29, 0
-/* 800951F4 00092134 41 81 FF EC */ bgt .L_800951E0
-.L_800951F8:
-/* 800951F8 00092138 C0 3E 00 0C */ lfs f1, 0xc(r30)
-/* 800951FC 0009213C 38 60 00 00 */ li r3, 0
-/* 80095200 00092140 C0 1E 00 24 */ lfs f0, 0x24(r30)
-/* 80095204 00092144 EC 01 00 2A */ fadds f0, f1, f0
-/* 80095208 00092148 D0 1E 00 0C */ stfs f0, 0xc(r30)
-/* 8009520C 0009214C C0 3E 00 10 */ lfs f1, 0x10(r30)
-/* 80095210 00092150 C0 1E 00 28 */ lfs f0, 0x28(r30)
-/* 80095214 00092154 EC 01 00 2A */ fadds f0, f1, f0
-/* 80095218 00092158 D0 1E 00 10 */ stfs f0, 0x10(r30)
-/* 8009521C 0009215C C0 3E 00 14 */ lfs f1, 0x14(r30)
-/* 80095220 00092160 C0 1E 00 2C */ lfs f0, 0x2c(r30)
-/* 80095224 00092164 EC 01 00 2A */ fadds f0, f1, f0
-/* 80095228 00092168 D0 1E 00 14 */ stfs f0, 0x14(r30)
-/* 8009522C 0009216C C0 5E 00 0C */ lfs f2, 0xc(r30)
-/* 80095230 00092170 C0 3F 01 2C */ lfs f1, 0x12c(r31)
-/* 80095234 00092174 C0 1E 00 18 */ lfs f0, 0x18(r30)
-/* 80095238 00092178 C0 7E 00 10 */ lfs f3, 0x10(r30)
-/* 8009523C 0009217C EC 02 00 7A */ fmadds f0, f2, f1, f0
-/* 80095240 00092180 C0 5F 01 30 */ lfs f2, 0x130(r31)
-/* 80095244 00092184 C0 3E 00 1C */ lfs f1, 0x1c(r30)
-/* 80095248 00092188 C0 BE 00 14 */ lfs f5, 0x14(r30)
-/* 8009524C 0009218C C0 9F 01 34 */ lfs f4, 0x134(r31)
-/* 80095250 00092190 EC 43 08 BA */ fmadds f2, f3, f2, f1
-/* 80095254 00092194 C0 3E 00 20 */ lfs f1, 0x20(r30)
-/* 80095258 00092198 D0 1E 00 00 */ stfs f0, 0(r30)
-/* 8009525C 0009219C EC 05 09 3A */ fmadds f0, f5, f4, f1
-/* 80095260 000921A0 D0 5E 00 04 */ stfs f2, 4(r30)
-/* 80095264 000921A4 D0 1E 00 08 */ stfs f0, 8(r30)
-.L_80095268:
-/* 80095268 000921A8 80 01 00 34 */ lwz r0, 0x34(r1)
-/* 8009526C 000921AC 83 E1 00 2C */ lwz r31, 0x2c(r1)
-/* 80095270 000921B0 83 C1 00 28 */ lwz r30, 0x28(r1)
-/* 80095274 000921B4 83 A1 00 24 */ lwz r29, 0x24(r1)
-/* 80095278 000921B8 7C 08 03 A6 */ mtlr r0
-/* 8009527C 000921BC 38 21 00 30 */ addi r1, r1, 0x30
-/* 80095280 000921C0 4E 80 00 20 */ blr
-.endfn calc_p__15JPABaseParticleFP18JPAEmitterWorkData
-
-.fn execute__19JPAParticleCallBackFP14JPABaseEmitterP15JPABaseParticle, weak
-/* 80095284 000921C4 4E 80 00 20 */ blr
-.endfn execute__19JPAParticleCallBackFP14JPABaseEmitterP15JPABaseParticle
-
-.fn calc_c__15JPABaseParticleFP18JPAEmitterWorkData, global
-/* 80095288 000921C8 94 21 FF E0 */ stwu r1, -0x20(r1)
-/* 8009528C 000921CC 7C 08 02 A6 */ mflr r0
-/* 80095290 000921D0 90 01 00 24 */ stw r0, 0x24(r1)
-/* 80095294 000921D4 93 E1 00 1C */ stw r31, 0x1c(r1)
-/* 80095298 000921D8 7C 9F 23 78 */ mr r31, r4
-/* 8009529C 000921DC 93 C1 00 18 */ stw r30, 0x18(r1)
-/* 800952A0 000921E0 7C 7E 1B 78 */ mr r30, r3
-/* 800952A4 000921E4 A8 63 00 80 */ lha r3, 0x80(r3)
-/* 800952A8 000921E8 38 03 00 01 */ addi r0, r3, 1
-/* 800952AC 000921EC B0 1E 00 80 */ sth r0, 0x80(r30)
-/* 800952B0 000921F0 7C 03 07 34 */ extsh r3, r0
-/* 800952B4 000921F4 A8 1E 00 82 */ lha r0, 0x82(r30)
-/* 800952B8 000921F8 7C 03 00 00 */ cmpw r3, r0
-/* 800952BC 000921FC 41 80 00 0C */ blt .L_800952C8
-/* 800952C0 00092200 38 60 00 01 */ li r3, 1
-/* 800952C4 00092204 48 00 02 24 */ b .L_800954E8
-.L_800952C8:
-/* 800952C8 00092208 A8 9E 00 80 */ lha r4, 0x80(r30)
-/* 800952CC 0009220C 3C 60 43 30 */ lis r3, 0x4330
-/* 800952D0 00092210 6C 00 80 00 */ xoris r0, r0, 0x8000
-/* 800952D4 00092214 90 61 00 08 */ stw r3, 8(r1)
-/* 800952D8 00092218 6C 84 80 00 */ xoris r4, r4, 0x8000
-/* 800952DC 0009221C C8 42 88 E8 */ lfd f2, lbl_80516C48@sda21(r2)
-/* 800952E0 00092220 90 81 00 0C */ stw r4, 0xc(r1)
-/* 800952E4 00092224 C8 01 00 08 */ lfd f0, 8(r1)
-/* 800952E8 00092228 90 01 00 14 */ stw r0, 0x14(r1)
-/* 800952EC 0009222C EC 20 10 28 */ fsubs f1, f0, f2
-/* 800952F0 00092230 90 61 00 10 */ stw r3, 0x10(r1)
-/* 800952F4 00092234 C8 01 00 10 */ lfd f0, 0x10(r1)
-/* 800952F8 00092238 EC 00 10 28 */ fsubs f0, f0, f2
-/* 800952FC 0009223C EC 01 00 24 */ fdivs f0, f1, f0
-/* 80095300 00092240 D0 1E 00 84 */ stfs f0, 0x84(r30)
-/* 80095304 00092244 A8 1E 00 80 */ lha r0, 0x80(r30)
-/* 80095308 00092248 2C 00 00 00 */ cmpwi r0, 0
-/* 8009530C 0009224C 41 82 01 14 */ beq .L_80095420
-/* 80095310 00092250 80 1E 00 7C */ lwz r0, 0x7c(r30)
-/* 80095314 00092254 54 00 06 B5 */ rlwinm. r0, r0, 0, 0x1a, 0x1a
-/* 80095318 00092258 41 82 00 1C */ beq .L_80095334
-/* 8009531C 0009225C C0 1F 01 38 */ lfs f0, 0x138(r31)
-/* 80095320 00092260 D0 1E 00 18 */ stfs f0, 0x18(r30)
-/* 80095324 00092264 C0 1F 01 3C */ lfs f0, 0x13c(r31)
-/* 80095328 00092268 D0 1E 00 1C */ stfs f0, 0x1c(r30)
-/* 8009532C 0009226C C0 1F 01 40 */ lfs f0, 0x140(r31)
-/* 80095330 00092270 D0 1E 00 20 */ stfs f0, 0x20(r30)
-.L_80095334:
-/* 80095334 00092274 80 7F 00 04 */ lwz r3, 4(r31)
-/* 80095338 00092278 C0 5E 00 34 */ lfs f2, 0x34(r30)
-/* 8009533C 0009227C 80 63 00 24 */ lwz r3, 0x24(r3)
-/* 80095340 00092280 C0 02 88 D4 */ lfs f0, lbl_80516C34@sda21(r2)
-/* 80095344 00092284 80 63 00 00 */ lwz r3, 0(r3)
-/* 80095348 00092288 C0 23 00 1C */ lfs f1, 0x1c(r3)
-/* 8009534C 0009228C EC 22 08 28 */ fsubs f1, f2, f1
-/* 80095350 00092290 D0 3E 00 34 */ stfs f1, 0x34(r30)
-/* 80095354 00092294 D0 1E 00 50 */ stfs f0, 0x50(r30)
-/* 80095358 00092298 D0 1E 00 4C */ stfs f0, 0x4c(r30)
-/* 8009535C 0009229C D0 1E 00 48 */ stfs f0, 0x48(r30)
-/* 80095360 000922A0 80 1E 00 7C */ lwz r0, 0x7c(r30)
-/* 80095364 000922A4 54 00 06 73 */ rlwinm. r0, r0, 0, 0x19, 0x19
-/* 80095368 000922A8 40 82 00 14 */ bne .L_8009537C
-/* 8009536C 000922AC 80 7F 00 04 */ lwz r3, 4(r31)
-/* 80095370 000922B0 7F E4 FB 78 */ mr r4, r31
-/* 80095374 000922B4 7F C5 F3 78 */ mr r5, r30
-/* 80095378 000922B8 48 00 29 59 */ bl calcField__11JPAResourceFP18JPAEmitterWorkDataP15JPABaseParticle
-.L_8009537C:
-/* 8009537C 000922BC C0 3E 00 48 */ lfs f1, 0x48(r30)
-/* 80095380 000922C0 C0 1E 00 3C */ lfs f0, 0x3c(r30)
-/* 80095384 000922C4 EC 01 00 2A */ fadds f0, f1, f0
-/* 80095388 000922C8 D0 1E 00 48 */ stfs f0, 0x48(r30)
-/* 8009538C 000922CC C0 3E 00 4C */ lfs f1, 0x4c(r30)
-/* 80095390 000922D0 C0 1E 00 40 */ lfs f0, 0x40(r30)
-/* 80095394 000922D4 EC 01 00 2A */ fadds f0, f1, f0
-/* 80095398 000922D8 D0 1E 00 4C */ stfs f0, 0x4c(r30)
-/* 8009539C 000922DC C0 3E 00 50 */ lfs f1, 0x50(r30)
-/* 800953A0 000922E0 C0 1E 00 44 */ lfs f0, 0x44(r30)
-/* 800953A4 000922E4 EC 01 00 2A */ fadds f0, f1, f0
-/* 800953A8 000922E8 D0 1E 00 50 */ stfs f0, 0x50(r30)
-/* 800953AC 000922EC 80 7F 00 00 */ lwz r3, 0(r31)
-/* 800953B0 000922F0 C0 1E 00 30 */ lfs f0, 0x30(r30)
-/* 800953B4 000922F4 C0 23 00 48 */ lfs f1, 0x48(r3)
-/* 800953B8 000922F8 EC 00 00 72 */ fmuls f0, f0, f1
-/* 800953BC 000922FC D0 1E 00 30 */ stfs f0, 0x30(r30)
-/* 800953C0 00092300 C0 1E 00 34 */ lfs f0, 0x34(r30)
-/* 800953C4 00092304 EC 00 00 72 */ fmuls f0, f0, f1
-/* 800953C8 00092308 D0 1E 00 34 */ stfs f0, 0x34(r30)
-/* 800953CC 0009230C C0 1E 00 38 */ lfs f0, 0x38(r30)
-/* 800953D0 00092310 EC 00 00 72 */ fmuls f0, f0, f1
-/* 800953D4 00092314 D0 1E 00 38 */ stfs f0, 0x38(r30)
-/* 800953D8 00092318 C0 7E 00 70 */ lfs f3, 0x70(r30)
-/* 800953DC 0009231C C0 5E 00 74 */ lfs f2, 0x74(r30)
-/* 800953E0 00092320 C0 3E 00 30 */ lfs f1, 0x30(r30)
-/* 800953E4 00092324 C0 1E 00 48 */ lfs f0, 0x48(r30)
-/* 800953E8 00092328 EC 83 00 B2 */ fmuls f4, f3, f2
-/* 800953EC 0009232C C0 5E 00 34 */ lfs f2, 0x34(r30)
-/* 800953F0 00092330 EC 01 00 2A */ fadds f0, f1, f0
-/* 800953F4 00092334 C0 3E 00 4C */ lfs f1, 0x4c(r30)
-/* 800953F8 00092338 C0 7E 00 38 */ lfs f3, 0x38(r30)
-/* 800953FC 0009233C EC 22 08 2A */ fadds f1, f2, f1
-/* 80095400 00092340 C0 5E 00 50 */ lfs f2, 0x50(r30)
-/* 80095404 00092344 EC 04 00 32 */ fmuls f0, f4, f0
-/* 80095408 00092348 EC 43 10 2A */ fadds f2, f3, f2
-/* 8009540C 0009234C EC 24 00 72 */ fmuls f1, f4, f1
-/* 80095410 00092350 D0 1E 00 24 */ stfs f0, 0x24(r30)
-/* 80095414 00092354 EC 04 00 B2 */ fmuls f0, f4, f2
-/* 80095418 00092358 D0 3E 00 28 */ stfs f1, 0x28(r30)
-/* 8009541C 0009235C D0 1E 00 2C */ stfs f0, 0x2c(r30)
-.L_80095420:
-/* 80095420 00092360 80 9F 00 00 */ lwz r4, 0(r31)
-/* 80095424 00092364 80 64 00 F0 */ lwz r3, 0xf0(r4)
-/* 80095428 00092368 28 03 00 00 */ cmplwi r3, 0
-/* 8009542C 0009236C 41 82 00 18 */ beq .L_80095444
-/* 80095430 00092370 81 83 00 00 */ lwz r12, 0(r3)
-/* 80095434 00092374 7F C5 F3 78 */ mr r5, r30
-/* 80095438 00092378 81 8C 00 0C */ lwz r12, 0xc(r12)
-/* 8009543C 0009237C 7D 89 03 A6 */ mtctr r12
-/* 80095440 00092380 4E 80 04 21 */ bctrl
-.L_80095444:
-/* 80095444 00092384 80 1E 00 7C */ lwz r0, 0x7c(r30)
-/* 80095448 00092388 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
-/* 8009544C 0009238C 41 82 00 0C */ beq .L_80095458
-/* 80095450 00092390 38 60 00 01 */ li r3, 1
-/* 80095454 00092394 48 00 00 94 */ b .L_800954E8
-.L_80095458:
-/* 80095458 00092398 80 7F 00 04 */ lwz r3, 4(r31)
-/* 8009545C 0009239C 7F E4 FB 78 */ mr r4, r31
-/* 80095460 000923A0 7F C5 F3 78 */ mr r5, r30
-/* 80095464 000923A4 48 00 27 F9 */ bl calc_c__11JPAResourceFP18JPAEmitterWorkDataP15JPABaseParticle
-/* 80095468 000923A8 A0 9E 00 88 */ lhz r4, 0x88(r30)
-/* 8009546C 000923AC 38 60 00 00 */ li r3, 0
-/* 80095470 000923B0 A8 1E 00 8A */ lha r0, 0x8a(r30)
-/* 80095474 000923B4 7C 04 02 14 */ add r0, r4, r0
-/* 80095478 000923B8 B0 1E 00 88 */ sth r0, 0x88(r30)
-/* 8009547C 000923BC C0 3E 00 0C */ lfs f1, 0xc(r30)
-/* 80095480 000923C0 C0 1E 00 24 */ lfs f0, 0x24(r30)
-/* 80095484 000923C4 EC 01 00 2A */ fadds f0, f1, f0
-/* 80095488 000923C8 D0 1E 00 0C */ stfs f0, 0xc(r30)
-/* 8009548C 000923CC C0 3E 00 10 */ lfs f1, 0x10(r30)
-/* 80095490 000923D0 C0 1E 00 28 */ lfs f0, 0x28(r30)
-/* 80095494 000923D4 EC 01 00 2A */ fadds f0, f1, f0
-/* 80095498 000923D8 D0 1E 00 10 */ stfs f0, 0x10(r30)
-/* 8009549C 000923DC C0 3E 00 14 */ lfs f1, 0x14(r30)
-/* 800954A0 000923E0 C0 1E 00 2C */ lfs f0, 0x2c(r30)
-/* 800954A4 000923E4 EC 01 00 2A */ fadds f0, f1, f0
-/* 800954A8 000923E8 D0 1E 00 14 */ stfs f0, 0x14(r30)
-/* 800954AC 000923EC C0 5E 00 0C */ lfs f2, 0xc(r30)
-/* 800954B0 000923F0 C0 3F 01 2C */ lfs f1, 0x12c(r31)
-/* 800954B4 000923F4 C0 1E 00 18 */ lfs f0, 0x18(r30)
-/* 800954B8 000923F8 C0 7E 00 10 */ lfs f3, 0x10(r30)
-/* 800954BC 000923FC EC 02 00 7A */ fmadds f0, f2, f1, f0
-/* 800954C0 00092400 C0 5F 01 30 */ lfs f2, 0x130(r31)
-/* 800954C4 00092404 C0 3E 00 1C */ lfs f1, 0x1c(r30)
-/* 800954C8 00092408 C0 BE 00 14 */ lfs f5, 0x14(r30)
-/* 800954CC 0009240C EC 43 08 BA */ fmadds f2, f3, f2, f1
-/* 800954D0 00092410 C0 9F 01 34 */ lfs f4, 0x134(r31)
-/* 800954D4 00092414 C0 3E 00 20 */ lfs f1, 0x20(r30)
-/* 800954D8 00092418 D0 1E 00 00 */ stfs f0, 0(r30)
-/* 800954DC 0009241C EC 05 09 3A */ fmadds f0, f5, f4, f1
-/* 800954E0 00092420 D0 5E 00 04 */ stfs f2, 4(r30)
-/* 800954E4 00092424 D0 1E 00 08 */ stfs f0, 8(r30)
-.L_800954E8:
-/* 800954E8 00092428 80 01 00 24 */ lwz r0, 0x24(r1)
-/* 800954EC 0009242C 83 E1 00 1C */ lwz r31, 0x1c(r1)
-/* 800954F0 00092430 83 C1 00 18 */ lwz r30, 0x18(r1)
-/* 800954F4 00092434 7C 08 03 A6 */ mtlr r0
-/* 800954F8 00092438 38 21 00 20 */ addi r1, r1, 0x20
-/* 800954FC 0009243C 4E 80 00 20 */ blr
-.endfn calc_c__15JPABaseParticleFP18JPAEmitterWorkData
-
-.fn canCreateChild__15JPABaseParticleFP18JPAEmitterWorkData, global
-/* 80095500 00092440 94 21 FF E0 */ stwu r1, -0x20(r1)
-/* 80095504 00092444 3C 00 43 30 */ lis r0, 0x4330
-/* 80095508 00092448 C8 42 88 E8 */ lfd f2, lbl_80516C48@sda21(r2)
-/* 8009550C 0009244C 38 C0 00 00 */ li r6, 0
-/* 80095510 00092450 A8 A3 00 82 */ lha r5, 0x82(r3)
-/* 80095514 00092454 80 84 00 04 */ lwz r4, 4(r4)
-/* 80095518 00092458 38 A5 FF FF */ addi r5, r5, -1
-/* 8009551C 0009245C 90 01 00 08 */ stw r0, 8(r1)
-/* 80095520 00092460 6C A0 80 00 */ xoris r0, r5, 0x8000
-/* 80095524 00092464 80 84 00 24 */ lwz r4, 0x24(r4)
-/* 80095528 00092468 90 01 00 0C */ stw r0, 0xc(r1)
-/* 8009552C 0009246C 80 84 00 00 */ lwz r4, 0(r4)
-/* 80095530 00092470 C8 21 00 08 */ lfd f1, 8(r1)
-/* 80095534 00092474 C0 04 00 3C */ lfs f0, 0x3c(r4)
-/* 80095538 00092478 EC 21 10 28 */ fsubs f1, f1, f2
-/* 8009553C 0009247C A8 03 00 80 */ lha r0, 0x80(r3)
-/* 80095540 00092480 EC 01 00 32 */ fmuls f0, f1, f0
-/* 80095544 00092484 FC 00 00 1E */ fctiwz f0, f0
-/* 80095548 00092488 D8 01 00 10 */ stfd f0, 0x10(r1)
-/* 8009554C 0009248C 80 61 00 14 */ lwz r3, 0x14(r1)
-/* 80095550 00092490 7C A3 00 51 */ subf. r5, r3, r0
-/* 80095554 00092494 41 80 00 20 */ blt .L_80095574
-/* 80095558 00092498 88 64 00 44 */ lbz r3, 0x44(r4)
-/* 8009555C 0009249C 38 63 00 01 */ addi r3, r3, 1
-/* 80095560 000924A0 7C 05 1B D6 */ divw r0, r5, r3
-/* 80095564 000924A4 7C 00 19 D6 */ mullw r0, r0, r3
-/* 80095568 000924A8 7C 00 28 51 */ subf. r0, r0, r5
-/* 8009556C 000924AC 40 82 00 08 */ bne .L_80095574
-/* 80095570 000924B0 38 C0 00 01 */ li r6, 1
-.L_80095574:
-/* 80095574 000924B4 7C C3 33 78 */ mr r3, r6
-/* 80095578 000924B8 38 21 00 20 */ addi r1, r1, 0x20
-/* 8009557C 000924BC 4E 80 00 20 */ blr
-.endfn canCreateChild__15JPABaseParticleFP18JPAEmitterWorkData
-
-.fn getCalcCurrentPositionX__15JPABaseParticleCFPC14JPABaseEmitter, global
-/* 80095580 000924C0 80 84 00 E4 */ lwz r4, 0xe4(r4)
-/* 80095584 000924C4 C0 23 00 0C */ lfs f1, 0xc(r3)
-/* 80095588 000924C8 C0 03 00 24 */ lfs f0, 0x24(r3)
-/* 8009558C 000924CC 80 84 00 20 */ lwz r4, 0x20(r4)
-/* 80095590 000924D0 EC 21 00 2A */ fadds f1, f1, f0
-/* 80095594 000924D4 C0 03 00 18 */ lfs f0, 0x18(r3)
-/* 80095598 000924D8 C0 44 01 2C */ lfs f2, 0x12c(r4)
-/* 8009559C 000924DC EC 22 00 7A */ fmadds f1, f2, f1, f0
-/* 800955A0 000924E0 4E 80 00 20 */ blr
-.endfn getCalcCurrentPositionX__15JPABaseParticleCFPC14JPABaseEmitter
-
-.fn getCalcCurrentPositionY__15JPABaseParticleCFPC14JPABaseEmitter, global
-/* 800955A4 000924E4 80 84 00 E4 */ lwz r4, 0xe4(r4)
-/* 800955A8 000924E8 C0 23 00 10 */ lfs f1, 0x10(r3)
-/* 800955AC 000924EC C0 03 00 28 */ lfs f0, 0x28(r3)
-/* 800955B0 000924F0 80 84 00 20 */ lwz r4, 0x20(r4)
-/* 800955B4 000924F4 EC 21 00 2A */ fadds f1, f1, f0
-/* 800955B8 000924F8 C0 03 00 1C */ lfs f0, 0x1c(r3)
-/* 800955BC 000924FC C0 44 01 30 */ lfs f2, 0x130(r4)
-/* 800955C0 00092500 EC 22 00 7A */ fmadds f1, f2, f1, f0
-/* 800955C4 00092504 4E 80 00 20 */ blr
-.endfn getCalcCurrentPositionY__15JPABaseParticleCFPC14JPABaseEmitter
-
-.fn getCalcCurrentPositionZ__15JPABaseParticleCFPC14JPABaseEmitter, global
-/* 800955C8 00092508 80 84 00 E4 */ lwz r4, 0xe4(r4)
-/* 800955CC 0009250C C0 23 00 14 */ lfs f1, 0x14(r3)
-/* 800955D0 00092510 C0 03 00 2C */ lfs f0, 0x2c(r3)
-/* 800955D4 00092514 80 84 00 20 */ lwz r4, 0x20(r4)
-/* 800955D8 00092518 EC 21 00 2A */ fadds f1, f1, f0
-/* 800955DC 0009251C C0 03 00 20 */ lfs f0, 0x20(r3)
-/* 800955E0 00092520 C0 44 01 34 */ lfs f2, 0x134(r4)
-/* 800955E4 00092524 EC 22 00 7A */ fmadds f1, f2, f1, f0
-/* 800955E8 00092528 4E 80 00 20 */ blr
-.endfn getCalcCurrentPositionZ__15JPABaseParticleCFPC14JPABaseEmitter
diff --git a/configure.py b/configure.py
index 6125fdd6f..32ffe40a4 100755
--- a/configure.py
+++ b/configure.py
@@ -279,7 +279,7 @@ LIBS = [
["JSystem/JParticle/JPAFieldBlock", True],
["JSystem/JParticle/JPAKeyBlock", True],
["JSystem/JParticle/JPAMath", False],
- ["JSystem/JParticle/JPAParticle", False],
+ ["JSystem/JParticle/JPAParticle", True],
["JSystem/JParticle/JPAResource", False],
["JSystem/JParticle/JPAResourceLoader", False],
["JSystem/JParticle/JPAResourceManager", True],
diff --git a/docs/recommended_todo.md b/docs/recommended_todo.md
index dcb24722e..6c29c0011 100644
--- a/docs/recommended_todo.md
+++ b/docs/recommended_todo.md
@@ -45,16 +45,15 @@
| J3D/J3DModel.cpp | 28590 | JAudio//JAI/JAIBasic.cpp | 29235 |
| J3D/J3DMaterialAttach.cpp | 29965 | J2D/J2DScreen.cpp | 30776 |
| J3D/J3DMaterialFactory_v21.cpp | 35247 | JMessage/processor.cpp | 35637 |
-| JParticle/JPAParticle.cpp | 36971 | J2D/J2DMaterialFactory.cpp | 39462 |
-| J2D/J2DPicture.cpp | 46511 | JAudio//JAS/JASAramStream.cpp | 47117 |
-| J2D/J2DWindowEx.cpp | 47225 | JAudio//JAS/JASSeqParser.cpp | 47291 |
-| JStudio/functionvalue.cpp | 50054 | JAudio//JAI/JAISound.cpp | 51800 |
-| JAudio//JAI/JAIStreamMgr.cpp | 53010 | JAudio//JAI/JAISeMgr.cpp | 64949 |
-| JAudio//JAI/JAISequenceMgr.cpp | 68811 | JAudio//JAS/JASTrack.cpp | 72438 |
-| J3D/J3DMaterialFactory.cpp | 75581 | J2D/J2DPictureEx.cpp | 90416 |
-| JParticle/JPAResource.cpp | 95965 | JParticle/JPABaseShape.cpp | 96579 |
-| JStudio/jstudio-object.cpp | 104283 | J2D/J2DMatBlock.cpp | 127830 |
-| J3D/J3DMatBlock.cpp | 165948 | | |
+| J2D/J2DMaterialFactory.cpp | 39462 | J2D/J2DPicture.cpp | 46511 |
+| JAudio//JAS/JASAramStream.cpp | 47117 | J2D/J2DWindowEx.cpp | 47225 |
+| JAudio//JAS/JASSeqParser.cpp | 47291 | JStudio/functionvalue.cpp | 50054 |
+| JAudio//JAI/JAISound.cpp | 51800 | JAudio//JAI/JAIStreamMgr.cpp | 53010 |
+| JAudio//JAI/JAISeMgr.cpp | 64949 | JAudio//JAI/JAISequenceMgr.cpp | 68811 |
+| JAudio//JAS/JASTrack.cpp | 72438 | J3D/J3DMaterialFactory.cpp | 75581 |
+| J2D/J2DPictureEx.cpp | 90416 | JParticle/JPAResource.cpp | 95965 |
+| JParticle/JPABaseShape.cpp | 96437 | JStudio/jstudio-object.cpp | 104283 |
+| J2D/J2DMatBlock.cpp | 127830 | J3D/J3DMatBlock.cpp | 165948 |
###
| File | Size (bytes) | File | Size (bytes) |
diff --git a/include/JSystem/JGeometry.h b/include/JSystem/JGeometry.h
index d4a4ae147..c550b8ca8 100644
--- a/include/JSystem/JGeometry.h
+++ b/include/JSystem/JGeometry.h
@@ -319,6 +319,13 @@ struct TVec3 {
z = a.z * scale;
}
+ void scaleAdd(f32 scale, const TVec3& a, const TVec3& b)
+ {
+ x = a.x * scale + b.x;
+ y = a.y * scale + b.y;
+ z = a.z * scale + b.z;
+ }
+
void zero() { x = y = z = 0.0f; }
f32 squared() const { return x * x + y * y + z * z; }
@@ -391,6 +398,13 @@ struct TVec3 {
z = a.z * b.z;
}
+ void mul(const TVec3& a)
+ {
+ x *= a.x;
+ y *= a.y;
+ z *= a.z;
+ }
+
bool isAbove(const TVec3& other) const { return (x >= other.x) && (y >= other.y) && (z >= other.z); }
bool isZero() const { return squared() <= 32.0f * FLT_EPSILON; }
diff --git a/include/JSystem/JParticle/JPABlock.h b/include/JSystem/JParticle/JPABlock.h
index f472406c3..dafe282aa 100644
--- a/include/JSystem/JParticle/JPABlock.h
+++ b/include/JSystem/JParticle/JPABlock.h
@@ -111,7 +111,9 @@ struct JPADynamicsBlock {
f32 getInitVelDir() { return mData->mInitialVelDir; }
f32 getInitVelDirSp() { return mData->mSpread; }
f32 getInitVelRndm() { return mData->mInitialVelRndm; }
+ f32 getInitVelRatio() { return mData->mInitialVelRatio; }
f32 getAirRes() { return mData->mAirResist; }
+ f32 getMomentRndm() const { return mData->mMoment; }
// unused/inlined:
void init_jpa(const u8*, JKRHeap*);
diff --git a/include/JSystem/JParticle/JPAEmitter.h b/include/JSystem/JParticle/JPAEmitter.h
index ab26c6936..f66f59d15 100644
--- a/include/JSystem/JParticle/JPAEmitter.h
+++ b/include/JSystem/JParticle/JPAEmitter.h
@@ -62,6 +62,7 @@ struct JPABaseParticle {
void getGlobalPosition(JGeometry::TVec3& pos) const { pos.set(mPosition); }
f32 getParticleScaleX() const { return mParticleScaleX; }
f32 getParticleScaleY() const { return mParticleScaleY; }
+ void initStatus(u32 val) { mFlags = val; }
void setStatus(u32 flag) { mFlags |= flag; }
u32 checkStatus(u32 flag) { return mFlags & flag; }
void setInvisibleParticleFlag() { setStatus(8); }
@@ -98,9 +99,9 @@ struct JPABaseParticle {
};
struct JPAParticleCallBack {
- virtual ~JPAParticleCallBack() = 0; // _08
- virtual void execute(JPABaseEmitter*, JPABaseParticle*); // _0C (weak)
- virtual void draw(JPABaseEmitter*, JPABaseParticle*); // _10 (weak)
+ virtual ~JPAParticleCallBack() = 0; // _08
+ virtual void execute(JPABaseEmitter*, JPABaseParticle*) { } // _0C (weak)
+ virtual void draw(JPABaseEmitter*, JPABaseParticle*) { } // _10 (weak)
};
struct JPABaseEmitter {
@@ -340,7 +341,6 @@ struct JPABaseEmitter {
JGeometry::TVec2f mGlobalPScl; // _B0
GXColor mGlobalPrmClr; // _B8, NEEDS TO BE GXCOLOR
GXColor mGlobalEnvClr; // _BC, NEEDS TO BE GXCOLOR
- s32 : 0; // reset alignment to _C0
s32 mpUserWork; // _C0
JPARandom mRandom; // _C4
JPAList mAlivePtclBase; // _C8
diff --git a/include/JSystem/JParticle/JPAShape.h b/include/JSystem/JParticle/JPAShape.h
index 0f625ee6b..780d17cea 100644
--- a/include/JSystem/JParticle/JPAShape.h
+++ b/include/JSystem/JParticle/JPAShape.h
@@ -111,6 +111,7 @@ struct JPABaseShape {
u32 getClrLoopOfst(u32 param_1) const { return getClrLoopOfstMask() & param_1; }
u8 getTexLoopOfstMask() const { return mData->mTexAnmRndmMask; }
u32 getTexLoopOfst(u8 param_1) const { return getTexLoopOfstMask() & param_1; }
+ u8 getLoopOfstValue() const { return mData->mAnmRndm; }
f32 getIncTransX() const { return ((f32*)mTexCrdMtxAnmTbl)[5]; }
f32 getInitTransX() const { return ((f32*)mTexCrdMtxAnmTbl)[0]; }
@@ -177,6 +178,25 @@ struct JPAChildShape {
void getPrmClr(GXColor* dst) { *dst = mData->mPrmClr; }
void getEnvClr(GXColor* dst) { *dst = mData->mEnvClr; }
+ s16 getLife() const { return mData->mLife; }
+ s16 getRotInitSpeed() const { return mData->mRotSpeed; }
+ s16 getRate() const { return mData->mRate; }
+ u8 getPrmAlpha() const { return mData->mPrmClr.a; }
+
+ f32 getPosRndm() const { return mData->mPosRndm; }
+ f32 getBaseVel() const { return mData->mBaseVel; }
+ f32 getBaseVelRndm() const { return mData->mBaseVelRndm; }
+ f32 getVelInhRate() const { return mData->mVelInfRate; }
+ f32 getScaleInhRate() const { return mData->mInheritScale; }
+ f32 getColorInhRate() const { return mData->mInheritRGB; }
+ f32 getAlphaInhRate() const { return mData->mInheritAlpha; }
+ f32 getGravity() const { return mData->mGravity; }
+
+ bool isFieldAffected() const { return mData->mFlags & 0x200000; }
+ bool isScaleInherited() const { return mData->mFlags & 0x10000; }
+ bool isColorInherited() const { return mData->mFlags & 0x40000; }
+ bool isAlphaInherited() const { return mData->mFlags & 0x20000; }
+ bool isRotateOn() const { return mData->mFlags & 0x1000000; }
const JPAChildShapeData* mData; // _00
};
@@ -259,13 +279,20 @@ struct JPAExtraShape {
f32 getScaleOutValueY() const { return mData->mScaleOutValueY; }
s16 getScaleAnmCycleX() const { return mData->mScaleAnmCycleX; }
s16 getScaleAnmCycleY() const { return mData->mScaleAnmCycleY; }
+ f32 getScaleRndm() const { return mData->mScaleOutRandom; }
f32 getAlphaInTiming() const { return mData->mAlphaInTiming; }
f32 getAlphaOutTiming() const { return mData->mAlphaOutTiming; }
f32 getAlphaInValue() const { return mData->mAlphaInValue; }
f32 getAlphaOutValue() const { return mData->mAlphaOutValue; }
f32 getAlphaBaseValue() const { return mData->mAlphaBaseValue; }
f32 getAlphaFreq() const { return mData->mAlphaWaveFrequency; }
+ f32 getAlphaFreqRndm() const { return mData->mAlphaWaveRandom; }
f32 getAlphaAmp() const { return mData->mAlphaWaveAmplitude; }
+ f32 getRotateInitAngle() const { return mData->mRotateAngle; }
+ f32 getRotateRndmAngle() const { return mData->mRotateAngleRandom; }
+ f32 getRotateInitSpeed() const { return mData->mRotateSpeed; }
+ f32 getRotateRndmSpeed() const { return mData->mRotateSpeedRandom; }
+ f32 getRotateDirection() const { return mData->mRotateDirection; }
f32 getScaleIncRateX() const { return mScaleIncRateX; }
f32 getScaleDecRateX() const { return mScaleDecRateX; }
f32 getScaleIncRateY() const { return mScaleIncRateY; }
@@ -273,6 +300,10 @@ struct JPAExtraShape {
f32 getAlphaIncRate() const { return mAlphaIncRate; }
f32 getAlphaDecRate() const { return mAlphaDecRate; }
+ bool isEnableScaleAnm() const { return mData->mFlags & 0x1; }
+ bool isEnableAlphaFlick() const { return mData->mFlags & 0x20000; }
+ bool isEnableRotateAnm() const { return mData->mFlags & 0x1000000; }
+
const JPAExtraShapeData* mData; // _00
f32 mAlphaIncRate; // _04
f32 mAlphaDecRate; // _08
diff --git a/src/JSystem/JParticle/JPABaseShape.cpp b/src/JSystem/JParticle/JPABaseShape.cpp
index b982db839..a3e37289b 100644
--- a/src/JSystem/JParticle/JPABaseShape.cpp
+++ b/src/JSystem/JParticle/JPABaseShape.cpp
@@ -3084,12 +3084,6 @@ void JPADrawParticleCallBack(JPAEmitterWorkData* workData, JPABaseParticle* part
}
}
-/**
- * @note Address: 0x8008E968
- * @note Size: 0x4
- */
-void JPAParticleCallBack::draw(JPABaseEmitter*, JPABaseParticle* particle) { }
-
/**
* @note Address: 0x8008E96C
* @note Size: 0x284
diff --git a/src/JSystem/JParticle/JPAParticle.cpp b/src/JSystem/JParticle/JPAParticle.cpp
index 377b7ec6f..09d3a30e8 100644
--- a/src/JSystem/JParticle/JPAParticle.cpp
+++ b/src/JSystem/JParticle/JPAParticle.cpp
@@ -19,1134 +19,245 @@ JPAParticleCallBack::~JPAParticleCallBack() { }
*/
void JPABaseParticle::init_p(JPAEmitterWorkData* workData)
{
- JPAResource* resource = workData->mResource;
+ JPAExtraShape* extraShape = workData->mResource->mExtraShape;
JPABaseEmitter* emitter = workData->mEmitter;
- JPAExtraShape* extraShape = resource->mExtraShape;
- JPABaseShape* baseShape = resource->mBaseShape;
- JPADynamicsBlock* dynamicsBlock = resource->mDynamicsBlock;
+ JPABaseShape* baseShape = workData->mResource->mBaseShape;
+ JPADynamicsBlock* dynamicsBlock = workData->mResource->mDynamicsBlock;
- mAge = 0xFFFF;
- u32 random = emitter->mRandom.getRandU32();
- mLifeTime = (f32)emitter->mLifeTime * -(dynamicsBlock->mData->mLifeTimeRndm * emitter->mRandom.getRandF32() - 1.0f);
- mTime = 0.0f;
- mFlags = 0;
- PSMTXMultVecSR(workData->mGlobalSR, (Vec*)&workData->mVolumePos, (Vec*)&mPosition);
- if ((emitter->mResource->mDynamicsBlock->mData->mFlags & 8) != 0) {
- mFlags |= 0x20;
+ mAge = -1;
+ mLifeTime = (f32)emitter->mLifeTime * (1.0f - dynamicsBlock->mData->mLifeTimeRndm * emitter->mRandom.getRandF32());
+ mTime = 0.0f;
+ initStatus(0);
+ PSMTXMultVecSR(workData->mGlobalSR, (Vec*)&workData->mVolumePos, (Vec*)&mLocalPosition);
+ if (emitter->checkDynFlag(8)) {
+ setStatus(0x20);
}
- mOffsetPosition = workData->mGlobalPos;
- mPosition.x = mPosition.x * workData->mPublicScale.x + mOffsetPosition.x;
- mPosition.y = mPosition.y * workData->mPublicScale.y + mOffsetPosition.y;
- mPosition.z = mPosition.z * workData->mPublicScale.z + mOffsetPosition.z;
- if (emitter->mAwayFromCenterSpeed != 0.0f) {
- // f32 mag = SQUARE(workData->_24) + SQUARE(workData->_1C) + SQUARE(workData->_20);
- // if (__float_epsilon * 32.0f < mag) {
- // if (mag < 0.0f) {
- // f32 v1;
- // FRSQRTE(&v1);
- // mag = v1 * 0.5f * -(mag * v1 * v1 - 3.0f);
- // }
- // mag *= emitter->_34;
+ mOffsetPosition.set(workData->mGlobalPos);
+ mPosition.set(mOffsetPosition.x + mLocalPosition.x * workData->mPublicScale.x,
+ mOffsetPosition.y + mLocalPosition.y * workData->mPublicScale.y,
+ mOffsetPosition.z + mLocalPosition.z * workData->mPublicScale.z);
- // }
- // f32 mag = PSVECSquareMag((Vec*)&workData->_1C);
- // if (__float_epsilon * 32.0f < mag) {
-
- // }
+ JGeometry::TVec3f vec1; // 0x38
+ if (emitter->mAwayFromCenterSpeed) {
+ vec1.setLength(workData->mVelOmni, emitter->mAwayFromCenterSpeed);
+ } else {
+ vec1.zero();
}
- /*
- stwu r1, -0x100(r1)
- mflr r0
- stw r0, 0x104(r1)
- stfd f31, 0xf0(r1)
- psq_st f31, 248(r1), 0, qr0
- stfd f30, 0xe0(r1)
- psq_st f30, 232(r1), 0, qr0
- stfd f29, 0xd0(r1)
- psq_st f29, 216(r1), 0, qr0
- stfd f28, 0xc0(r1)
- psq_st f28, 200(r1), 0, qr0
- stfd f27, 0xb0(r1)
- psq_st f27, 184(r1), 0, qr0
- stfd f26, 0xa0(r1)
- psq_st f26, 168(r1), 0, qr0
- stmw r26, 0x88(r1)
- mr r27, r4
- mr r26, r3
- lwz r5, 4(r4)
- lis r3, 0x0019660D@ha
- lis r6, 0x4330
- lwz r30, 0(r4)
- lwz r31, 0x20(r5)
- li r4, -1
- lwz r29, 0x1c(r5)
- addi r7, r3, 0x0019660D@l
- lwz r28, 0x2c(r5)
- li r0, 0
- lfs f2, lbl_80516C30@sda21(r2)
- addi r3, r27, 0xd8
- sth r4, 0x80(r26)
- addi r4, r27, 0x10
- lfd f5, lbl_80516C48@sda21(r2)
- addi r5, r26, 0xc
- lwz r8, 0xc4(r30)
- stw r6, 0x70(r1)
- mullw r6, r8, r7
- lfs f0, lbl_80516C34@sda21(r2)
- addis r6, r6, 0x3c6f
- addi r6, r6, -3233
- stw r6, 0xc4(r30)
- srwi r6, r6, 9
- oris r6, r6, 0x3f80
- stw r6, 0x38(r1)
- lha r6, 0x52(r30)
- lfs f1, 0x38(r1)
- xoris r7, r6, 0x8000
- lwz r6, 0(r28)
- stw r7, 0x74(r1)
- fsubs f1, f1, f2
- lfs f3, 0x54(r6)
- lfd f4, 0x70(r1)
- fnmsubs f1, f3, f1, f2
- fsubs f2, f4, f5
- fmuls f1, f2, f1
- fctiwz f1, f1
- stfd f1, 0x78(r1)
- lwz r6, 0x7c(r1)
- sth r6, 0x82(r26)
- stfs f0, 0x84(r26)
- stw r0, 0x7c(r26)
- bl PSMTXMultVecSR
- lwz r3, 0xe8(r30)
- lwz r3, 0x2c(r3)
- lwz r3, 0(r3)
- lwz r0, 8(r3)
- rlwinm. r0, r0, 0, 0x1c, 0x1c
- beq lbl_8009418C
- lwz r0, 0x7c(r26)
- ori r0, r0, 0x20
- stw r0, 0x7c(r26)
-lbl_8009418C:
- lfs f0, 0x138(r27)
- lfs f31, lbl_80516C34@sda21(r2)
- stfs f0, 0x18(r26)
- lfs f0, 0x13c(r27)
- stfs f0, 0x1c(r26)
- lfs f0, 0x140(r27)
- stfs f0, 0x20(r26)
- lfs f2, 0xc(r26)
- lfs f1, 0x12c(r27)
- lfs f0, 0x18(r26)
- lfs f3, 0x10(r26)
- fmadds f0, f2, f1, f0
- lfs f2, 0x130(r27)
- lfs f1, 0x1c(r26)
- lfs f5, 0x14(r26)
- lfs f4, 0x134(r27)
- fmadds f2, f3, f2, f1
- lfs f1, 0x20(r26)
- stfs f0, 0(r26)
- fmadds f0, f5, f4, f1
- stfs f2, 4(r26)
- stfs f0, 8(r26)
- lfs f5, 0x34(r30)
- fcmpu cr0, f5, f31
- beq lbl_80094288
- lfs f1, 0x1c(r27)
- lis r3, __float_epsilon@ha
- lfs f0, 0x20(r27)
- fmuls f3, f1, f1
- lfs f4, 0x24(r27)
- fmuls f2, f0, f0
- lfs f1, lbl_80516C38@sda21(r2)
- lfs f0, __float_epsilon@l(r3)
- fmuls f4, f4, f4
- fadds f2, f3, f2
- fmuls f0, f1, f0
- fadds f4, f4, f2
- fcmpo cr0, f4, f0
- cror 2, 0, 2
- bne lbl_80094238
- fmr f30, f31
- fmr f29, f31
- b lbl_80094290
+ JGeometry::TVec3f vec2; // 0x2C
+ if (emitter->mAwayFromAxisSpeed) {
+ vec2.setLength(workData->mVelAxis, emitter->mAwayFromAxisSpeed);
+ } else {
+ vec2.zero();
+ }
-lbl_80094238:
- fcmpo cr0, f4, f31
- cror 2, 0, 2
- bne lbl_80094248
- b lbl_80094268
+ JGeometry::TVec3f vec3; // 0x20
+ if (emitter->mDirSpeed) {
+ Mtx yzRotMtx;
+ JPAGetYZRotateMtx(emitter->mSpread * (SHORT_FLOAT_MAX * emitter->getRandZP()), emitter->getRandS16(), yzRotMtx);
+ PSMTXConcat(workData->mDirectionMtx, yzRotMtx, yzRotMtx);
+ vec3.set(emitter->mDirSpeed * yzRotMtx[0][2], emitter->mDirSpeed * yzRotMtx[1][2], emitter->mDirSpeed * yzRotMtx[2][2]);
+ } else {
+ vec3.zero();
+ }
-lbl_80094248:
- frsqrte f3, f4
- lfs f2, lbl_80516C3C@sda21(r2)
- lfs f0, lbl_80516C40@sda21(r2)
- frsp f3, f3
- fmuls f1, f3, f3
- fmuls f2, f2, f3
- fnmsubs f0, f4, f1, f0
- fmuls f4, f2, f0
+ JGeometry::TVec3f vec4; // 0x14
+ if (emitter->mRndmDirSpeed) {
+ vec4.set(emitter->mRndmDirSpeed * emitter->getRandZH(), emitter->mRndmDirSpeed * emitter->getRandZH(),
+ emitter->mRndmDirSpeed * emitter->getRandZH());
+ } else {
+ vec4.zero();
+ }
-lbl_80094268:
- fmuls f3, f4, f5
- lfs f2, 0x1c(r27)
- lfs f1, 0x20(r27)
- lfs f0, 0x24(r27)
- fmuls f29, f2, f3
- fmuls f30, f1, f3
- fmuls f31, f0, f3
- b lbl_80094290
+ f32 type1Factor = (1.0f + emitter->getRandZP() * dynamicsBlock->getInitVelRatio());
+ mVelType1.set(type1Factor * (vec1.x + vec2.x + vec3.x + vec4.x), type1Factor * (vec1.y + vec2.y + vec3.y + vec4.y),
+ type1Factor * (vec1.z + vec2.z + vec3.z + vec4.z));
-lbl_80094288:
- fmr f30, f31
- fmr f29, f31
+ if (emitter->checkDynFlag(4)) {
+ mVelType1.mul(emitter->mLocalScl);
+ }
-lbl_80094290:
- lfs f5, 0x38(r30)
- lfs f28, lbl_80516C34@sda21(r2)
- fcmpu cr0, f5, f28
- beq lbl_80094338
- lfs f1, 0x28(r27)
- lis r3, __float_epsilon@ha
- lfs f0, 0x2c(r27)
- fmuls f3, f1, f1
- lfs f4, 0x30(r27)
- fmuls f2, f0, f0
- lfs f1, lbl_80516C38@sda21(r2)
- lfs f0, __float_epsilon@l(r3)
- fmuls f4, f4, f4
- fadds f2, f3, f2
- fmuls f0, f1, f0
- fadds f4, f4, f2
- fcmpo cr0, f4, f0
- cror 2, 0, 2
- bne lbl_800942E8
- fmr f27, f28
- fmr f26, f28
- b lbl_80094340
+ PSMTXMultVecSR(workData->mGlobalRot, (Vec*)&mVelType1, (Vec*)&mVelType1);
+ mVelType0.zero();
+ mMoment = 1.0f - (dynamicsBlock->getMomentRndm() * emitter->getRandF32());
+ mDrag = 1.0f;
+ _78 = 0;
+ mBaseAxis.set(workData->mGlobalRot[0][1], workData->mGlobalRot[1][1], workData->mGlobalRot[2][1]);
+ mPrmClr = emitter->mPrmClr;
+ mEnvClr = emitter->mEnvClr;
+ mAnmRandom = emitter->getRandF32() * f32(baseShape->getLoopOfstValue());
-lbl_800942E8:
- fcmpo cr0, f4, f28
- cror 2, 0, 2
- bne lbl_800942F8
- b lbl_80094318
+ if (extraShape && extraShape->isEnableScaleAnm()) {
+ mParticleScaleX = mParticleScaleY = mScaleOut = emitter->mScaleOut * (1.0f + emitter->getRandZP() * extraShape->getScaleRndm());
+ } else {
+ mParticleScaleX = mParticleScaleY = mScaleOut = emitter->mScaleOut;
+ }
-lbl_800942F8:
- frsqrte f3, f4
- lfs f2, lbl_80516C3C@sda21(r2)
- lfs f0, lbl_80516C40@sda21(r2)
- frsp f3, f3
- fmuls f1, f3, f3
- fmuls f2, f2, f3
- fnmsubs f0, f4, f1, f0
- fmuls f4, f2, f0
+ mPrmColorAlphaAnm = 255;
-lbl_80094318:
- fmuls f3, f4, f5
- lfs f2, 0x28(r27)
- lfs f1, 0x2c(r27)
- lfs f0, 0x30(r27)
- fmuls f26, f2, f3
- fmuls f27, f1, f3
- fmuls f28, f0, f3
- b lbl_80094340
+ if (extraShape && extraShape->isEnableAlphaFlick()) {
+ mAlphaWaveRandom = 1.0f + (emitter->getRandZP() * extraShape->getAlphaFreqRndm());
+ } else {
+ mAlphaWaveRandom = 1.0f;
+ }
-lbl_80094338:
- fmr f27, f28
- fmr f26, f28
+ if (extraShape) {
+ if (extraShape->isEnableRotateAnm()) {
+ mRotateAngle = extraShape->getRotateInitAngle() + (extraShape->getRotateRndmAngle() * emitter->getRandZH());
+ mRotateSpeed = extraShape->getRotateInitSpeed() * (1.0f + extraShape->getRotateRndmSpeed() * emitter->getRandZP());
-lbl_80094340:
- lfs f0, 0x3c(r30)
- lfs f2, lbl_80516C34@sda21(r2)
- fcmpu cr0, f0, f2
- beq lbl_800943FC
- lis r3, 0x0019660D@ha
- lwz r0, 0xc4(r30)
- addi r6, r3, 0x0019660D@l
- lfs f3, lbl_80516C30@sda21(r2)
- mullw r3, r0, r6
- lfs f1, lbl_80516C44@sda21(r2)
- addi r5, r1, 0x3c
- addis r3, r3, 0x3c6f
- addi r0, r3, -3233
- stw r0, 0xc4(r30)
- srwi r0, r0, 0x10
- extsh r4, r0
- lwz r0, 0xc4(r30)
- mullw r3, r0, r6
- addis r3, r3, 0x3c6f
- addi r3, r3, -3233
- srwi r0, r3, 9
- stw r3, 0xc4(r30)
- oris r0, r0, 0x3f80
- stw r0, 0x2c(r1)
- lfs f2, 0x40(r30)
- lfs f0, 0x2c(r1)
- fsubs f0, f0, f3
- fadds f0, f0, f0
- fsubs f0, f0, f3
- fmuls f0, f1, f0
- fmuls f0, f2, f0
- fctiwz f0, f0
- stfd f0, 0x78(r1)
- lwz r3, 0x7c(r1)
- bl JPAGetYZRotateMtx__FssPA4_f
- addi r4, r1, 0x3c
- addi r3, r27, 0x48
- mr r5, r4
- bl PSMTXConcat
- lfs f3, 0x3c(r30)
- lfs f0, 0x44(r1)
- lfs f1, 0x54(r1)
- lfs f2, 0x64(r1)
- fmuls f0, f3, f0
- fmuls f1, f3, f1
- fmuls f2, f3, f2
- b lbl_80094404
+ mRotateSpeed = (emitter->getRandZP() < extraShape->getRotateDirection()) ? mRotateSpeed : (s16)-mRotateSpeed;
-lbl_800943FC:
- fmr f1, f2
- fmr f0, f2
-
-lbl_80094404:
- lfs f4, 0x44(r30)
- lfs f3, lbl_80516C34@sda21(r2)
- fcmpu cr0, f4, f3
- beq lbl_800944C4
- lis r3, 0x0019660D@ha
- lwz r0, 0xc4(r30)
- addi r4, r3, 0x0019660D@l
- lfs f7, lbl_80516C30@sda21(r2)
- mullw r3, r0, r4
- lfs f6, lbl_80516C3C@sda21(r2)
- addis r3, r3, 0x3c6f
- addi r0, r3, -3233
- stw r0, 0xc4(r30)
- srwi r0, r0, 9
- oris r3, r0, 0x3f80
- lwz r0, 0xc4(r30)
- stw r3, 0x10(r1)
- mullw r3, r0, r4
- lfs f4, 0x44(r30)
- lfs f3, 0x10(r1)
- fsubs f3, f3, f7
- addis r3, r3, 0x3c6f
- addi r0, r3, -3233
- fsubs f3, f3, f6
- stw r0, 0xc4(r30)
- srwi r0, r0, 9
- oris r3, r0, 0x3f80
- lwz r0, 0xc4(r30)
- fmuls f3, f4, f3
- stw r3, 0xc(r1)
- mullw r3, r0, r4
- lfs f5, 0x44(r30)
- lfs f4, 0xc(r1)
- fsubs f4, f4, f7
- addis r3, r3, 0x3c6f
- addi r3, r3, -3233
- fsubs f4, f4, f6
- srwi r0, r3, 9
- stw r3, 0xc4(r30)
- oris r0, r0, 0x3f80
- stw r0, 8(r1)
- fmuls f9, f5, f4
- lfs f5, 0x44(r30)
- lfs f4, 8(r1)
- fsubs f4, f4, f7
- fsubs f4, f4, f6
- fmuls f8, f5, f4
- b lbl_800944CC
-
-lbl_800944C4:
- fmr f9, f3
- fmr f8, f3
-
-lbl_800944CC:
- lis r3, 0x0019660D@ha
- lwz r4, 0xc4(r30)
- addi r0, r3, 0x0019660D@l
- fadds f6, f29, f26
- mullw r3, r4, r0
- fadds f5, f30, f27
- fadds f4, f31, f28
- lfs f7, lbl_80516C30@sda21(r2)
- fadds f6, f0, f6
- fadds f1, f1, f5
- addis r3, r3, 0x3c6f
- fadds f0, f2, f4
- addi r3, r3, -3233
- fadds f2, f8, f6
- srwi r0, r3, 9
- stw r3, 0xc4(r30)
- oris r0, r0, 0x3f80
- stw r0, 0x28(r1)
- fadds f0, f3, f0
- lwz r3, 0(r28)
- fadds f1, f9, f1
- lfs f4, 0x28(r1)
- lfs f3, 0x48(r3)
- fsubs f4, f4, f7
- fadds f4, f4, f4
- fsubs f4, f4, f7
- fmadds f3, f4, f3, f7
- fmuls f2, f3, f2
- fmuls f1, f3, f1
- fmuls f0, f3, f0
- stfs f2, 0x30(r26)
- stfs f1, 0x34(r26)
- stfs f0, 0x38(r26)
- lwz r3, 0xe8(r30)
- lwz r3, 0x2c(r3)
- lwz r3, 0(r3)
- lwz r0, 8(r3)
- rlwinm. r0, r0, 0, 0x1d, 0x1d
- beq lbl_80094598
- lfs f1, 0x30(r26)
- lfs f0, 0(r30)
- fmuls f0, f1, f0
- stfs f0, 0x30(r26)
- lfs f1, 0x34(r26)
- lfs f0, 4(r30)
- fmuls f0, f1, f0
- stfs f0, 0x34(r26)
- lfs f1, 0x38(r26)
- lfs f0, 8(r30)
- fmuls f0, f1, f0
- stfs f0, 0x38(r26)
-
-lbl_80094598:
- addi r4, r26, 0x30
- addi r3, r27, 0xa8
- mr r5, r4
- bl PSMTXMultVecSR
- lfs f0, lbl_80516C34@sda21(r2)
- lis r4, 0x0019660D@ha
- lis r3, 0x4330
- lfs f3, lbl_80516C30@sda21(r2)
- stfs f0, 0x44(r26)
- addi r0, r4, 0x0019660D@l
- li r4, 0
- lfd f1, lbl_80516C50@sda21(r2)
- stfs f0, 0x40(r26)
- cmplwi r31, 0
- stfs f0, 0x3c(r26)
- lwz r5, 0xc4(r30)
- stw r3, 0x78(r1)
- mullw r3, r5, r0
- addis r3, r3, 0x3c6f
- addi r5, r3, -3233
- srwi r3, r5, 9
- stw r5, 0xc4(r30)
- oris r3, r3, 0x3f80
- stw r3, 0x34(r1)
- lwz r3, 0(r28)
- lfs f0, 0x34(r1)
- lfs f2, 0x64(r3)
- fsubs f0, f0, f3
- fnmsubs f0, f2, f0, f3
- stfs f0, 0x70(r26)
- stfs f3, 0x74(r26)
- stw r4, 0x78(r26)
- lfs f4, 0xcc(r27)
- lfs f2, 0xbc(r27)
- lfs f0, 0xac(r27)
- stfs f0, 0x54(r26)
- stfs f2, 0x58(r26)
- stfs f4, 0x5c(r26)
- lbz r3, 0x108(r30)
- stb r3, 0x8c(r26)
- lbz r3, 0x109(r30)
- stb r3, 0x8d(r26)
- lbz r3, 0x10a(r30)
- stb r3, 0x8e(r26)
- lbz r3, 0x10b(r30)
- stb r3, 0x8f(r26)
- lbz r3, 0x10c(r30)
- stb r3, 0x90(r26)
- lbz r3, 0x10d(r30)
- stb r3, 0x91(r26)
- lbz r3, 0x10e(r30)
- stb r3, 0x92(r26)
- lbz r3, 0x10f(r30)
- stb r3, 0x93(r26)
- lwz r3, 0xc4(r30)
- lwz r4, 0(r29)
- mullw r3, r3, r0
- lbz r4, 0x2e(r4)
- stw r4, 0x7c(r1)
- addis r3, r3, 0x3c6f
- lfd f0, 0x78(r1)
- addi r4, r3, -3233
- srwi r3, r4, 9
- fsubs f0, f0, f1
- oris r3, r3, 0x3f80
- stw r4, 0xc4(r30)
- stw r3, 0x30(r1)
- lfs f1, 0x30(r1)
- fsubs f1, f1, f3
- fmuls f0, f1, f0
- fctiwz f0, f0
- stfd f0, 0x70(r1)
- lwz r3, 0x74(r1)
- stb r3, 0x95(r26)
- beq lbl_80094728
- lwz r3, 0(r31)
- lwz r3, 8(r3)
- clrlwi. r3, r3, 0x1f
- beq lbl_80094728
- lwz r3, 0xc4(r30)
- mullw r3, r3, r0
- addis r3, r3, 0x3c6f
- addi r3, r3, -3233
- srwi r0, r3, 9
- stw r3, 0xc4(r30)
- oris r0, r0, 0x3f80
- stw r0, 0x24(r1)
- lwz r3, 0(r31)
- lfs f1, 0x24(r1)
- lfs f0, 0x24(r3)
- fsubs f1, f1, f3
- lfs f2, 0xfc(r30)
- fadds f1, f1, f1
- fsubs f1, f1, f3
- fmadds f0, f1, f0, f3
- fmuls f0, f2, f0
- stfs f0, 0x68(r26)
- stfs f0, 0x64(r26)
- stfs f0, 0x60(r26)
- b lbl_80094738
-
-lbl_80094728:
- lfs f0, 0xfc(r30)
- stfs f0, 0x68(r26)
- stfs f0, 0x64(r26)
- stfs f0, 0x60(r26)
-
-lbl_80094738:
- li r0, 0xff
- cmplwi r31, 0
- stb r0, 0x96(r26)
- beq lbl_800947A8
- lwz r3, 0(r31)
- lwz r0, 8(r3)
- rlwinm. r0, r0, 0, 0xe, 0xe
- beq lbl_800947A8
- lis r3, 0x0019660D@ha
- lwz r4, 0xc4(r30)
- addi r0, r3, 0x0019660D@l
- lfs f2, lbl_80516C30@sda21(r2)
- mullw r3, r4, r0
- addis r3, r3, 0x3c6f
- addi r3, r3, -3233
- srwi r0, r3, 9
- stw r3, 0xc4(r30)
- oris r0, r0, 0x3f80
- stw r0, 0x20(r1)
- lwz r3, 0(r31)
- lfs f1, 0x20(r1)
- lfs f0, 0x44(r3)
- fsubs f1, f1, f2
- fadds f1, f1, f1
- fsubs f1, f1, f2
- fmadds f0, f1, f0, f2
- stfs f0, 0x6c(r26)
- b lbl_800947B0
-
-lbl_800947A8:
- lfs f0, lbl_80516C30@sda21(r2)
- stfs f0, 0x6c(r26)
-
-lbl_800947B0:
- cmplwi r31, 0
- beq lbl_800948E4
- lwz r3, 0(r31)
- lwz r0, 8(r3)
- rlwinm. r0, r0, 0, 7, 7
- beq lbl_800948D4
- lis r3, 0x0019660D@ha
- lwz r0, 0xc4(r30)
- addi r4, r3, 0x0019660D@l
- lfs f3, lbl_80516C30@sda21(r2)
- mullw r3, r0, r4
- lfs f1, lbl_80516C3C@sda21(r2)
- addis r3, r3, 0x3c6f
- addi r3, r3, -3233
- srwi r0, r3, 9
- stw r3, 0xc4(r30)
- oris r0, r0, 0x3f80
- stw r0, 0x1c(r1)
- lwz r3, 0(r31)
- lfs f0, 0x1c(r1)
- lfs f4, 0x50(r3)
- fsubs f2, f0, f3
- lfs f0, 0x4c(r3)
- fsubs f1, f2, f1
- fmadds f0, f4, f1, f0
- fctiwz f0, f0
- stfd f0, 0x78(r1)
- lwz r0, 0x7c(r1)
- sth r0, 0x88(r26)
- lwz r0, 0xc4(r30)
- mullw r3, r0, r4
- addis r3, r3, 0x3c6f
- addi r3, r3, -3233
- srwi r0, r3, 9
- stw r3, 0xc4(r30)
- oris r0, r0, 0x3f80
- stw r0, 0x18(r1)
- lwz r3, 0(r31)
- lfs f0, 0x18(r1)
- lfs f1, 0x58(r3)
- fsubs f0, f0, f3
- lfs f2, 0x54(r3)
- fadds f0, f0, f0
- fsubs f0, f0, f3
- fmadds f0, f1, f0, f3
- fmuls f0, f2, f0
- fctiwz f0, f0
- stfd f0, 0x70(r1)
- lwz r0, 0x74(r1)
- sth r0, 0x8a(r26)
- lwz r0, 0xc4(r30)
- mullw r3, r0, r4
- addis r3, r3, 0x3c6f
- addi r3, r3, -3233
- srwi r0, r3, 9
- stw r3, 0xc4(r30)
- oris r0, r0, 0x3f80
- stw r0, 0x14(r1)
- lwz r3, 0(r31)
- lfs f1, 0x14(r1)
- lfs f0, 0x5c(r3)
- fsubs f1, f1, f3
- fadds f1, f1, f1
- fsubs f1, f1, f3
- fcmpo cr0, f1, f0
- bge lbl_800948C0
- lha r0, 0x8a(r26)
- b lbl_800948CC
-
-lbl_800948C0:
- lha r0, 0x8a(r26)
- neg r0, r0
- extsh r0, r0
-
-lbl_800948CC:
- sth r0, 0x8a(r26)
- b lbl_800948F0
-
-lbl_800948D4:
- li r0, 0
- sth r0, 0x88(r26)
- sth r0, 0x8a(r26)
- b lbl_800948F0
-
-lbl_800948E4:
- li r0, 0
- sth r0, 0x88(r26)
- sth r0, 0x8a(r26)
-
-lbl_800948F0:
- psq_l f31, 248(r1), 0, qr0
- lfd f31, 0xf0(r1)
- psq_l f30, 232(r1), 0, qr0
- lfd f30, 0xe0(r1)
- psq_l f29, 216(r1), 0, qr0
- lfd f29, 0xd0(r1)
- psq_l f28, 200(r1), 0, qr0
- lfd f28, 0xc0(r1)
- psq_l f27, 184(r1), 0, qr0
- lfd f27, 0xb0(r1)
- psq_l f26, 168(r1), 0, qr0
- lfd f26, 0xa0(r1)
- lmw r26, 0x88(r1)
- lwz r0, 0x104(r1)
- mtlr r0
- addi r1, r1, 0x100
- blr
- */
+ } else {
+ mRotateAngle = 0;
+ mRotateSpeed = 0;
+ }
+ } else {
+ mRotateAngle = 0;
+ mRotateSpeed = 0;
+ }
}
/**
* @note Address: 0x80094934
* @note Size: 0x6A8
*/
-void JPABaseParticle::init_c(JPAEmitterWorkData*, JPABaseParticle*)
+void JPABaseParticle::init_c(JPAEmitterWorkData* workData, JPABaseParticle* particle)
{
- /*
- stwu r1, -0x90(r1)
- li r7, -1
- lfs f7, lbl_80516C34@sda21(r2)
- li r0, 4
- lwz r6, 4(r4)
- lwz r4, 0(r4)
- lwz r6, 0x24(r6)
- sth r7, 0x80(r3)
- lwz r7, 0(r6)
- lha r7, 0x40(r7)
- sth r7, 0x82(r3)
- stfs f7, 0x84(r3)
- stw r0, 0x7c(r3)
- lfs f0, 0xc(r5)
- stfs f0, 0xc(r3)
- lfs f0, 0x10(r5)
- stfs f0, 0x10(r3)
- lfs f0, 0x14(r5)
- stfs f0, 0x14(r3)
- lwz r7, 0(r6)
- lfs f8, 0xc(r7)
- fcmpu cr0, f7, f8
- beq lbl_80094AD8
- lis r7, 0x0019660D@ha
- lwz r0, 0xc4(r4)
- addi r9, r7, 0x0019660D@l
- lfs f6, lbl_80516C30@sda21(r2)
- mullw r8, r0, r9
- lfs f5, lbl_80516C3C@sda21(r2)
- lis r7, __float_epsilon@ha
- lfs f2, lbl_80516C38@sda21(r2)
- addis r8, r8, 0x3c6f
- addi r0, r8, -3233
- stw r0, 0xc4(r4)
- srwi r0, r0, 9
- oris r8, r0, 0x3f80
- lwz r0, 0xc4(r4)
- stw r8, 0x1c(r1)
- mullw r8, r0, r9
- lfs f0, 0x1c(r1)
- fsubs f0, f0, f6
- addis r8, r8, 0x3c6f
- addi r0, r8, -3233
- fsubs f0, f0, f5
- stw r0, 0xc4(r4)
- srwi r0, r0, 9
- oris r8, r0, 0x3f80
- lwz r0, 0xc4(r4)
- stw r8, 0x18(r1)
- mullw r8, r0, r9
- lfs f1, 0x18(r1)
- fsubs f1, f1, f6
- addis r8, r8, 0x3c6f
- addi r0, r8, -3233
- fsubs f10, f1, f5
- stw r0, 0xc4(r4)
- srwi r0, r0, 9
- oris r8, r0, 0x3f80
- lwz r0, 0xc4(r4)
- fmuls f1, f10, f10
- stw r8, 0x14(r1)
- mullw r8, r0, r9
- lfs f3, 0x14(r1)
- fsubs f3, f3, f6
- addis r8, r8, 0x3c6f
- addi r8, r8, -3233
- fsubs f9, f3, f5
- srwi r0, r8, 9
- stw r8, 0xc4(r4)
- oris r0, r0, 0x3f80
- fmadds f3, f9, f9, f1
- stw r0, 0x24(r1)
- lfs f1, __float_epsilon@l(r7)
- lfs f4, 0x24(r1)
- fmuls f1, f2, f1
- fmadds f11, f0, f0, f3
- fsubs f2, f4, f6
- fcmpo cr0, f11, f1
- fmuls f4, f8, f2
- cror 2, 0, 2
- beq lbl_80094AB4
- fcmpo cr0, f11, f7
- cror 2, 0, 2
- bne lbl_80094A88
- b lbl_80094AA4
+ JPABaseEmitter* emitter = workData->mEmitter;
+ JPAChildShape* childShape = workData->mResource->mChildShape;
+ mAge = -1;
+ mLifeTime = childShape->getLife();
+ mTime = 0.0f;
+ initStatus(4);
+ mLocalPosition.set(particle->mLocalPosition);
-lbl_80094A88:
- frsqrte f3, f11
- lfs f1, lbl_80516C40@sda21(r2)
- frsp f3, f3
- fmuls f2, f3, f3
- fmuls f3, f5, f3
- fnmsubs f1, f11, f2, f1
- fmuls f11, f3, f1
+ f32 posRndm = childShape->getPosRndm();
+ if (posRndm != 0.0f) {
+ JGeometry::TVec3f randVec;
+ randVec.set(emitter->getRandZH(), emitter->getRandZH(), emitter->getRandZH());
+ randVec.setLength(posRndm * emitter->getRandF32());
+ mLocalPosition.add(randVec);
+ }
-lbl_80094AA4:
- fmuls f1, f11, f4
- fmuls f9, f9, f1
- fmuls f10, f10, f1
- fmuls f0, f0, f1
+ if (emitter->checkDynFlag(JPADYN_FollowEmtrChld)) {
+ setStatus(0x20);
+ }
-lbl_80094AB4:
- lfs f1, 0xc(r3)
- fadds f1, f1, f9
- stfs f1, 0xc(r3)
- lfs f1, 0x10(r3)
- fadds f1, f1, f10
- stfs f1, 0x10(r3)
- lfs f1, 0x14(r3)
- fadds f0, f1, f0
- stfs f0, 0x14(r3)
+ mOffsetPosition.set(particle->mOffsetPosition);
-lbl_80094AD8:
- lwz r7, 0xe8(r4)
- lwz r7, 0x2c(r7)
- lwz r7, 0(r7)
- lwz r0, 8(r7)
- rlwinm. r0, r0, 0, 0x1b, 0x1b
- beq lbl_80094AFC
- lwz r0, 0x7c(r3)
- ori r0, r0, 0x20
- stw r0, 0x7c(r3)
+ f32 randLen = childShape->getBaseVel() * (1.0f + childShape->getBaseVelRndm() * emitter->getRandZP());
+ JGeometry::TVec3f randVec2;
+ randVec2.set(emitter->getRandZP(), emitter->getRandZP(), emitter->getRandZP());
+ randVec2.setLength(randLen);
+ mVelType1.scaleAdd(childShape->getVelInhRate(), particle->mVelType1, randVec2);
+ mVelType0.scale(childShape->getVelInhRate(), particle->mVelType2);
+ mMoment = particle->mMoment;
-lbl_80094AFC:
- lfs f0, 0x18(r5)
- lis r8, 0x0019660D@ha
- addi r10, r8, 0x0019660D@l
- lfs f5, lbl_80516C30@sda21(r2)
- stfs f0, 0x18(r3)
- lis r7, __float_epsilon@ha
- lfs f2, lbl_80516C38@sda21(r2)
- lfs f0, 0x1c(r5)
- stfs f0, 0x1c(r3)
- lfs f0, 0x20(r5)
- stfs f0, 0x20(r3)
- lwz r0, 0xc4(r4)
- mullw r8, r0, r10
- addis r8, r8, 0x3c6f
- addi r0, r8, -3233
- stw r0, 0xc4(r4)
- srwi r0, r0, 9
- oris r9, r0, 0x3f80
- lwz r0, 0xc4(r4)
- lwz r11, 0(r6)
- mullw r8, r0, r10
- stw r9, 0x20(r1)
- lfs f4, 0x10(r11)
- lfs f0, 0x20(r1)
- lfs f3, 0x14(r11)
- fsubs f0, f0, f5
- addis r8, r8, 0x3c6f
- addi r0, r8, -3233
- fadds f0, f0, f0
- stw r0, 0xc4(r4)
- srwi r0, r0, 9
- oris r8, r0, 0x3f80
- lwz r0, 0xc4(r4)
- fsubs f1, f0, f5
- stw r8, 0x10(r1)
- mullw r8, r0, r10
- fmadds f1, f3, f1, f5
- lfs f0, 0x10(r1)
- fsubs f0, f0, f5
- fmuls f8, f4, f1
- addis r8, r8, 0x3c6f
- addi r0, r8, -3233
- fadds f0, f0, f0
- stw r0, 0xc4(r4)
- srwi r0, r0, 9
- oris r8, r0, 0x3f80
- lwz r0, 0xc4(r4)
- fsubs f0, f0, f5
- stw r8, 0xc(r1)
- mullw r8, r0, r10
- lfs f1, 0xc(r1)
- fsubs f1, f1, f5
- addis r8, r8, 0x3c6f
- addi r8, r8, -3233
- fadds f1, f1, f1
- srwi r0, r8, 9
- stw r8, 0xc4(r4)
- oris r0, r0, 0x3f80
- stw r0, 8(r1)
- fsubs f6, f1, f5
- lfs f1, __float_epsilon@l(r7)
- lfs f4, 8(r1)
- fmuls f1, f2, f1
- fsubs f4, f4, f5
- fmuls f3, f6, f6
- fadds f2, f4, f4
- fsubs f5, f2, f5
- fmadds f2, f5, f5, f3
- fmadds f7, f0, f0, f2
- fcmpo cr0, f7, f1
- cror 2, 0, 2
- beq lbl_80094C60
- lfs f1, lbl_80516C34@sda21(r2)
- fcmpo cr0, f7, f1
- cror 2, 0, 2
- bne lbl_80094C30
- b lbl_80094C50
+ if (childShape->isFieldAffected()) {
+ mDrag = particle->mDrag;
+ } else {
+ setStatus(0x40);
+ mDrag = 1.0f;
+ }
-lbl_80094C30:
- frsqrte f4, f7
- lfs f3, lbl_80516C3C@sda21(r2)
- lfs f1, lbl_80516C40@sda21(r2)
- frsp f4, f4
- fmuls f2, f4, f4
- fmuls f3, f3, f4
- fnmsubs f1, f7, f2, f1
- fmuls f7, f3, f1
+ _78 = particle->_78;
+ mVelType2.set(mVelType0);
-lbl_80094C50:
- fmuls f1, f7, f8
- fmuls f5, f5, f1
- fmuls f6, f6, f1
- fmuls f0, f0, f1
+ f32 factor = mMoment * mDrag;
+ mVelocity.set(factor * (mVelType1.x + mVelType2.x), factor * (mVelType1.y + mVelType2.y), factor * (mVelType1.z + mVelType2.z));
+ mBaseAxis.set(particle->mBaseAxis);
-lbl_80094C60:
- lwz r4, 0(r6)
- lfs f1, 0x30(r5)
- lfs f2, 0x18(r4)
- fmadds f1, f1, f2, f5
- stfs f1, 0x30(r3)
- lfs f1, 0x34(r5)
- fmadds f1, f1, f2, f6
- stfs f1, 0x34(r3)
- lfs f1, 0x38(r5)
- fmadds f0, f1, f2, f0
- stfs f0, 0x38(r3)
- lwz r4, 0(r6)
- lfs f0, 0x48(r5)
- lfs f1, 0x18(r4)
- fmuls f0, f0, f1
- stfs f0, 0x3c(r3)
- lfs f0, 0x4c(r5)
- fmuls f0, f0, f1
- stfs f0, 0x40(r3)
- lfs f0, 0x50(r5)
- fmuls f0, f0, f1
- stfs f0, 0x44(r3)
- lfs f0, 0x70(r5)
- stfs f0, 0x70(r3)
- lwz r4, 0(r6)
- lwz r0, 8(r4)
- rlwinm. r0, r0, 0, 0xa, 0xa
- beq lbl_80094CDC
- lfs f0, 0x74(r5)
- stfs f0, 0x74(r3)
- b lbl_80094CF0
+ if (childShape->isScaleInherited()) {
+ mParticleScaleX = mScaleOut = particle->mParticleScaleX * childShape->getScaleInhRate();
+ mParticleScaleY = mAlphaWaveRandom = particle->mParticleScaleY * childShape->getScaleInhRate();
+ } else {
+ mParticleScaleX = mScaleOut = mParticleScaleY = mAlphaWaveRandom = 1.0f;
+ }
-lbl_80094CDC:
- lwz r0, 0x7c(r3)
- lfs f0, lbl_80516C30@sda21(r2)
- ori r0, r0, 0x40
- stw r0, 0x7c(r3)
- stfs f0, 0x74(r3)
+ if (childShape->isColorInherited()) {
+ mPrmClr.r = particle->mPrmClr.r * childShape->getColorInhRate();
+ mPrmClr.g = particle->mPrmClr.g * childShape->getColorInhRate();
+ mPrmClr.b = particle->mPrmClr.b * childShape->getColorInhRate();
-lbl_80094CF0:
- lwz r0, 0x78(r5)
- stw r0, 0x78(r3)
- lfs f0, 0x3c(r3)
- stfs f0, 0x48(r3)
- lfs f0, 0x40(r3)
- stfs f0, 0x4c(r3)
- lfs f0, 0x44(r3)
- stfs f0, 0x50(r3)
- lfs f3, 0x70(r3)
- lfs f2, 0x74(r3)
- lfs f1, 0x30(r3)
- fmuls f4, f3, f2
- lfs f0, 0x48(r3)
- lfs f2, 0x34(r3)
- fadds f0, f1, f0
- lfs f1, 0x4c(r3)
- lfs f3, 0x38(r3)
- fadds f1, f2, f1
- lfs f2, 0x50(r3)
- fmuls f0, f4, f0
- fadds f2, f3, f2
- fmuls f1, f4, f1
- stfs f0, 0x24(r3)
- fmuls f0, f4, f2
- stfs f1, 0x28(r3)
- stfs f0, 0x2c(r3)
- lfs f0, 0x54(r5)
- stfs f0, 0x54(r3)
- lfs f0, 0x58(r5)
- stfs f0, 0x58(r3)
- lfs f0, 0x5c(r5)
- stfs f0, 0x5c(r3)
- lwz r4, 0(r6)
- lwz r0, 8(r4)
- rlwinm. r0, r0, 0, 0xf, 0xf
- beq lbl_80094DB0
- lfs f1, 0x60(r5)
- lfs f0, 0x28(r4)
- fmuls f0, f1, f0
- stfs f0, 0x68(r3)
- stfs f0, 0x60(r3)
- lwz r4, 0(r6)
- lfs f1, 0x64(r5)
- lfs f0, 0x28(r4)
- fmuls f0, f1, f0
- stfs f0, 0x6c(r3)
- stfs f0, 0x64(r3)
- b lbl_80094DC4
+ mEnvClr.r = particle->mEnvClr.r * childShape->getColorInhRate();
+ mEnvClr.g = particle->mEnvClr.g * childShape->getColorInhRate();
+ mEnvClr.b = particle->mEnvClr.b * childShape->getColorInhRate();
+ } else {
+ childShape->getPrmClr(&mPrmClr);
+ childShape->getEnvClr(&mEnvClr);
+ }
-lbl_80094DB0:
- lfs f0, lbl_80516C30@sda21(r2)
- stfs f0, 0x6c(r3)
- stfs f0, 0x64(r3)
- stfs f0, 0x68(r3)
- stfs f0, 0x60(r3)
+ mPrmColorAlphaAnm = 255;
-lbl_80094DC4:
- lwz r7, 0(r6)
- lwz r0, 8(r7)
- rlwinm. r0, r0, 0, 0xd, 0xd
- beq lbl_80094EFC
- lbz r4, 0x8c(r5)
- lis r0, 0x4330
- stw r0, 0x28(r1)
- lfd f2, lbl_80516C50@sda21(r2)
- stw r4, 0x2c(r1)
- lfs f0, 0x30(r7)
- lfd f1, 0x28(r1)
- stw r0, 0x38(r1)
- fsubs f1, f1, f2
- stw r0, 0x48(r1)
- fmuls f0, f1, f0
- stw r0, 0x58(r1)
- stw r0, 0x68(r1)
- fctiwz f0, f0
- stw r0, 0x78(r1)
- stfd f0, 0x30(r1)
- lwz r0, 0x34(r1)
- stb r0, 0x8c(r3)
- lbz r0, 0x8d(r5)
- lwz r4, 0(r6)
- stw r0, 0x3c(r1)
- lfs f0, 0x30(r4)
- lfd f1, 0x38(r1)
- fsubs f1, f1, f2
- fmuls f0, f1, f0
- fctiwz f0, f0
- stfd f0, 0x40(r1)
- lwz r0, 0x44(r1)
- stb r0, 0x8d(r3)
- lbz r0, 0x8e(r5)
- lwz r4, 0(r6)
- stw r0, 0x4c(r1)
- lfs f0, 0x30(r4)
- lfd f1, 0x48(r1)
- fsubs f1, f1, f2
- fmuls f0, f1, f0
- fctiwz f0, f0
- stfd f0, 0x50(r1)
- lwz r0, 0x54(r1)
- stb r0, 0x8e(r3)
- lbz r0, 0x90(r5)
- lwz r4, 0(r6)
- stw r0, 0x5c(r1)
- lfs f0, 0x30(r4)
- lfd f1, 0x58(r1)
- fsubs f1, f1, f2
- fmuls f0, f1, f0
- fctiwz f0, f0
- stfd f0, 0x60(r1)
- lwz r0, 0x64(r1)
- stb r0, 0x90(r3)
- lbz r0, 0x91(r5)
- lwz r4, 0(r6)
- stw r0, 0x6c(r1)
- lfs f0, 0x30(r4)
- lfd f1, 0x68(r1)
- fsubs f1, f1, f2
- fmuls f0, f1, f0
- fctiwz f0, f0
- stfd f0, 0x70(r1)
- lwz r0, 0x74(r1)
- stb r0, 0x91(r3)
- lbz r0, 0x92(r5)
- lwz r4, 0(r6)
- stw r0, 0x7c(r1)
- lfs f0, 0x30(r4)
- lfd f1, 0x78(r1)
- fsubs f1, f1, f2
- fmuls f0, f1, f0
- fctiwz f0, f0
- stfd f0, 0x80(r1)
- lwz r0, 0x84(r1)
- stb r0, 0x92(r3)
- b lbl_80094F40
+ if (childShape->isAlphaInherited()) {
+ mPrmClr.a = COLOR_MULTI(particle->mPrmClr.a, particle->mPrmColorAlphaAnm) * childShape->getAlphaInhRate();
+ } else {
+ mPrmClr.a = childShape->getPrmAlpha();
+ }
-lbl_80094EFC:
- lbz r0, 0x34(r7)
- stb r0, 0x8c(r3)
- lbz r0, 0x35(r7)
- stb r0, 0x8d(r3)
- lbz r0, 0x36(r7)
- stb r0, 0x8e(r3)
- lbz r0, 0x37(r7)
- stb r0, 0x8f(r3)
- lwz r4, 0(r6)
- lbz r0, 0x38(r4)
- stb r0, 0x90(r3)
- lbz r0, 0x39(r4)
- stb r0, 0x91(r3)
- lbz r0, 0x3a(r4)
- stb r0, 0x92(r3)
- lbz r0, 0x3b(r4)
- stb r0, 0x93(r3)
-
-lbl_80094F40:
- li r0, 0xff
- stb r0, 0x96(r3)
- lwz r8, 0(r6)
- lwz r0, 8(r8)
- rlwinm. r0, r0, 0, 0xe, 0xe
- beq lbl_80094FA0
- lbz r4, 0x96(r5)
- lis r0, 0x4330
- lbz r7, 0x8f(r5)
- addi r4, r4, 1
- stw r0, 0x80(r1)
- mullw r0, r7, r4
- lfd f2, lbl_80516C50@sda21(r2)
- lfs f0, 0x2c(r8)
- rlwinm r0, r0, 0x18, 0x18, 0x1f
- stw r0, 0x84(r1)
- lfd f1, 0x80(r1)
- fsubs f1, f1, f2
- fmuls f0, f1, f0
- fctiwz f0, f0
- stfd f0, 0x78(r1)
- lwz r0, 0x7c(r1)
- stb r0, 0x8f(r3)
- b lbl_80094FA8
-
-lbl_80094FA0:
- lbz r0, 0x37(r8)
- stb r0, 0x8f(r3)
-
-lbl_80094FA8:
- lhz r0, 0x88(r5)
- sth r0, 0x88(r3)
- lwz r4, 0(r6)
- lwz r0, 8(r4)
- rlwinm. r0, r0, 0, 7, 7
- beq lbl_80094FCC
- lha r0, 0x46(r4)
- sth r0, 0x8a(r3)
- b lbl_80094FD4
-
-lbl_80094FCC:
- li r0, 0
- sth r0, 0x8a(r3)
-
-lbl_80094FD4:
- addi r1, r1, 0x90
- blr
- */
+ mRotateAngle = particle->mRotateAngle;
+ if (childShape->isRotateOn()) {
+ mRotateSpeed = childShape->getRotInitSpeed();
+ } else {
+ mRotateSpeed = 0;
+ }
}
/**
* @note Address: 0x80094FDC
* @note Size: 0x2A8
*/
-bool JPABaseParticle::calc_p(JPAEmitterWorkData*)
+bool JPABaseParticle::calc_p(JPAEmitterWorkData* workData)
{
+ if (++mAge >= (s16)mLifeTime) {
+ return true;
+ }
+
+ mTime = f32(mAge) / f32(mLifeTime);
+
+ if (checkStatus(0x20)) {
+ mOffsetPosition.set(workData->mGlobalPos);
+ }
+
+ mVelType2.zero();
+
+ if (!checkStatus(0x40)) {
+ workData->mResource->calcField(workData, this);
+ }
+
+ mVelType2.add(mVelType0);
+ mVelType1.scale(workData->mEmitter->mAirResist);
+
+ f32 factor = mMoment * mDrag;
+ mVelocity.set(factor * (mVelType1.x + mVelType2.x), factor * (mVelType1.y + mVelType2.y), factor * (mVelType1.z + mVelType2.z));
+
+ if (workData->mEmitter->mParticleCallback) {
+ workData->mEmitter->mParticleCallback->execute(workData->mEmitter, this);
+ }
+
+ if (checkStatus(0x2)) {
+ return true;
+ }
+
+ workData->mResource->calc_p(workData, this);
+
+ mRotateAngle += mRotateSpeed;
+
+ int rate;
+ if (workData->mResource->mChildShape && canCreateChild(workData)) {
+ rate = workData->mResource->mChildShape->getRate();
+ while (rate > 0) {
+ workData->mEmitter->createChild(this);
+ rate--;
+ }
+ }
+
+ mLocalPosition.add(mVelocity);
+ mPosition.set(mOffsetPosition.x + (mLocalPosition.x * workData->mPublicScale.x),
+ mOffsetPosition.y + (mLocalPosition.y * workData->mPublicScale.y),
+ mOffsetPosition.z + (mLocalPosition.z * workData->mPublicScale.z));
+ return false;
/*
stwu r1, -0x30(r1)
mflr r0
@@ -1339,18 +450,56 @@ lbl_80095268:
*/
}
-/**
- * @note Address: 0x80095284
- * @note Size: 0x4
- */
-void JPAParticleCallBack::execute(JPABaseEmitter*, JPABaseParticle*) { }
-
/**
* @note Address: 0x80095288
* @note Size: 0x278
*/
-bool JPABaseParticle::calc_c(JPAEmitterWorkData*)
+bool JPABaseParticle::calc_c(JPAEmitterWorkData* workData)
{
+ if (++mAge >= (s16)mLifeTime) {
+ return true;
+ }
+
+ mTime = f32(mAge) / f32(mLifeTime);
+
+ if (mAge) {
+ if (checkStatus(0x20)) {
+ mOffsetPosition.set(workData->mGlobalPos);
+ }
+
+ mVelType1.y -= workData->mResource->mChildShape->getGravity();
+
+ mVelType2.zero();
+
+ if (!checkStatus(0x40)) {
+ workData->mResource->calcField(workData, this);
+ }
+
+ mVelType2.add(mVelType0);
+ mVelType1.scale(workData->mEmitter->mAirResist);
+
+ f32 factor = mMoment * mDrag;
+ mVelocity.set(factor * (mVelType1.x + mVelType2.x), factor * (mVelType1.y + mVelType2.y), factor * (mVelType1.z + mVelType2.z));
+ }
+
+ if (workData->mEmitter->mParticleCallback) {
+ workData->mEmitter->mParticleCallback->execute(workData->mEmitter, this);
+ }
+
+ if (checkStatus(0x2)) {
+ return true;
+ }
+
+ workData->mResource->calc_c(workData, this);
+
+ mRotateAngle += mRotateSpeed;
+
+ mLocalPosition.add(mVelocity);
+ mPosition.set(mOffsetPosition.x + (mLocalPosition.x * workData->mPublicScale.x),
+ mOffsetPosition.y + (mLocalPosition.y * workData->mPublicScale.y),
+ mOffsetPosition.z + (mLocalPosition.z * workData->mPublicScale.z));
+ return false;
+
/*
stwu r1, -0x20(r1)
mflr r0
diff --git a/src/JSystem/JParticle/Makefile b/src/JSystem/JParticle/Makefile
index bb81cf1e0..a29872ba2 100644
--- a/src/JSystem/JParticle/Makefile
+++ b/src/JSystem/JParticle/Makefile
@@ -9,7 +9,7 @@ JPARTICLE_FILES:=\
$(BUILD_DIR)/src/JSystem/JParticle/JPAFieldBlock.o\
$(BUILD_DIR)/src/JSystem/JParticle/JPAKeyBlock.o\
$(BUILD_DIR)/asm/JSystem/JParticle/JPAMath.o\
- $(BUILD_DIR)/asm/JSystem/JParticle/JPAParticle.o\
+ $(BUILD_DIR)/src/JSystem/JParticle/JPAParticle.o\
$(BUILD_DIR)/asm/JSystem/JParticle/JPAResource.o\
$(BUILD_DIR)/asm/JSystem/JParticle/JPAResourceLoader.o\
$(BUILD_DIR)/src/JSystem/JParticle/JPAResourceManager.o\
diff --git a/tools/progress.csv b/tools/progress.csv
index 8a5837914..033c66827 100644
--- a/tools/progress.csv
+++ b/tools/progress.csv
@@ -1007,3 +1007,5 @@ You have 4628 out of 10000 Pokos and 113 out of 201 treasures.",2024-05-28 01:10
You have 4639 out of 10000 Pokos and 113 out of 201 treasures.",2024-05-28 11:34:58.592022
4653,2165028,0.46536203623457556,114,404484,0.567413334530396,"
You have 4653 out of 10000 Pokos and 114 out of 201 treasures.",2024-05-29 04:00:57.271236
+4665,2170600,0.4665597100133438,114,404544,0.5674975030020089,"
+You have 4665 out of 10000 Pokos and 114 out of 201 treasures.",2024-05-30 00:56:53.834260