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 | ###
plugProjectEbisawaU
| 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