diff --git a/asm/JSystem/JParticle/JPAExtraShape/JPACalcAlphaAnm__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPAExtraShape/JPACalcAlphaAnm__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index a961073a6ad..00000000000 --- a/asm/JSystem/JParticle/JPAExtraShape/JPACalcAlphaAnm__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,38 +0,0 @@ -lbl_8027AC10: -/* 8027AC10 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8027AC14 80 63 00 04 */ lwz r3, 4(r3) -/* 8027AC18 80 63 00 20 */ lwz r3, 0x20(r3) -/* 8027AC1C C0 84 00 84 */ lfs f4, 0x84(r4) -/* 8027AC20 80 A3 00 00 */ lwz r5, 0(r3) -/* 8027AC24 C0 05 00 2C */ lfs f0, 0x2c(r5) -/* 8027AC28 FC 04 00 40 */ fcmpo cr0, f4, f0 -/* 8027AC2C 40 80 00 20 */ bge lbl_8027AC4C -/* 8027AC30 C0 42 B8 F4 */ lfs f2, lit_2390(r2) -/* 8027AC34 C0 25 00 34 */ lfs f1, 0x34(r5) -/* 8027AC38 C0 03 00 04 */ lfs f0, 4(r3) -/* 8027AC3C EC 04 00 32 */ fmuls f0, f4, f0 -/* 8027AC40 EC 01 00 2A */ fadds f0, f1, f0 -/* 8027AC44 EC A2 00 32 */ fmuls f5, f2, f0 -/* 8027AC48 48 00 00 3C */ b lbl_8027AC84 -lbl_8027AC4C: -/* 8027AC4C C0 05 00 30 */ lfs f0, 0x30(r5) -/* 8027AC50 FC 04 00 40 */ fcmpo cr0, f4, f0 -/* 8027AC54 40 81 00 24 */ ble lbl_8027AC78 -/* 8027AC58 C0 62 B8 F4 */ lfs f3, lit_2390(r2) -/* 8027AC5C C0 45 00 38 */ lfs f2, 0x38(r5) -/* 8027AC60 EC 24 00 28 */ fsubs f1, f4, f0 -/* 8027AC64 C0 03 00 08 */ lfs f0, 8(r3) -/* 8027AC68 EC 01 00 32 */ fmuls f0, f1, f0 -/* 8027AC6C EC 02 00 2A */ fadds f0, f2, f0 -/* 8027AC70 EC A3 00 32 */ fmuls f5, f3, f0 -/* 8027AC74 48 00 00 10 */ b lbl_8027AC84 -lbl_8027AC78: -/* 8027AC78 C0 22 B8 F4 */ lfs f1, lit_2390(r2) -/* 8027AC7C C0 05 00 38 */ lfs f0, 0x38(r5) -/* 8027AC80 EC A1 00 32 */ fmuls f5, f1, f0 -lbl_8027AC84: -/* 8027AC84 F0 A1 A0 08 */ psq_st f5, 8(r1), 1, 2 /* qr2 */ -/* 8027AC88 88 01 00 08 */ lbz r0, 8(r1) -/* 8027AC8C 98 04 00 96 */ stb r0, 0x96(r4) -/* 8027AC90 38 21 00 10 */ addi r1, r1, 0x10 -/* 8027AC94 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAExtraShape/JPACalcAlphaFlickAnm__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPAExtraShape/JPACalcAlphaFlickAnm__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index 73030643a5e..00000000000 --- a/asm/JSystem/JParticle/JPAExtraShape/JPACalcAlphaFlickAnm__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,64 +0,0 @@ -lbl_8027AC98: -/* 8027AC98 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8027AC9C 80 63 00 04 */ lwz r3, 4(r3) -/* 8027ACA0 80 63 00 20 */ lwz r3, 0x20(r3) -/* 8027ACA4 C0 64 00 84 */ lfs f3, 0x84(r4) -/* 8027ACA8 80 A3 00 00 */ lwz r5, 0(r3) -/* 8027ACAC C0 05 00 2C */ lfs f0, 0x2c(r5) -/* 8027ACB0 FC 03 00 40 */ fcmpo cr0, f3, f0 -/* 8027ACB4 40 80 00 18 */ bge lbl_8027ACCC -/* 8027ACB8 C0 25 00 34 */ lfs f1, 0x34(r5) -/* 8027ACBC C0 03 00 04 */ lfs f0, 4(r3) -/* 8027ACC0 EC 03 00 32 */ fmuls f0, f3, f0 -/* 8027ACC4 EC A1 00 2A */ fadds f5, f1, f0 -/* 8027ACC8 48 00 00 2C */ b lbl_8027ACF4 -lbl_8027ACCC: -/* 8027ACCC C0 05 00 30 */ lfs f0, 0x30(r5) -/* 8027ACD0 FC 03 00 40 */ fcmpo cr0, f3, f0 -/* 8027ACD4 40 81 00 1C */ ble lbl_8027ACF0 -/* 8027ACD8 C0 45 00 38 */ lfs f2, 0x38(r5) -/* 8027ACDC EC 23 00 28 */ fsubs f1, f3, f0 -/* 8027ACE0 C0 03 00 08 */ lfs f0, 8(r3) -/* 8027ACE4 EC 01 00 32 */ fmuls f0, f1, f0 -/* 8027ACE8 EC A2 00 2A */ fadds f5, f2, f0 -/* 8027ACEC 48 00 00 08 */ b lbl_8027ACF4 -lbl_8027ACF0: -/* 8027ACF0 C0 A5 00 38 */ lfs f5, 0x38(r5) -lbl_8027ACF4: -/* 8027ACF4 C0 62 B8 F8 */ lfs f3, lit_2433(r2) -/* 8027ACF8 C0 44 00 6C */ lfs f2, 0x6c(r4) -/* 8027ACFC A8 04 00 80 */ lha r0, 0x80(r4) -/* 8027AD00 C8 22 B8 E8 */ lfd f1, lit_2312(r2) -/* 8027AD04 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8027AD08 90 01 00 14 */ stw r0, 0x14(r1) -/* 8027AD0C 3C 00 43 30 */ lis r0, 0x4330 -/* 8027AD10 90 01 00 10 */ stw r0, 0x10(r1) -/* 8027AD14 C8 01 00 10 */ lfd f0, 0x10(r1) -/* 8027AD18 EC 00 08 28 */ fsubs f0, f0, f1 -/* 8027AD1C EC 02 00 32 */ fmuls f0, f2, f0 -/* 8027AD20 EC 23 00 32 */ fmuls f1, f3, f0 -/* 8027AD24 C0 82 B8 E0 */ lfs f4, lit_2270(r2) -/* 8027AD28 C0 05 00 40 */ lfs f0, 0x40(r5) -/* 8027AD2C EC 04 00 28 */ fsubs f0, f4, f0 -/* 8027AD30 EC 01 00 32 */ fmuls f0, f1, f0 -/* 8027AD34 FC 00 00 1E */ fctiwz f0, f0 -/* 8027AD38 D8 01 00 18 */ stfd f0, 0x18(r1) -/* 8027AD3C 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8027AD40 54 00 04 38 */ rlwinm r0, r0, 0, 0x10, 0x1c -/* 8027AD44 3C 60 80 44 */ lis r3, sincosTable___5JMath@ha /* 0x80439A20@ha */ -/* 8027AD48 38 63 9A 20 */ addi r3, r3, sincosTable___5JMath@l /* 0x80439A20@l */ -/* 8027AD4C 7C 03 04 2E */ lfsx f0, r3, r0 -/* 8027AD50 C0 62 B8 F4 */ lfs f3, lit_2390(r2) -/* 8027AD54 C0 42 B8 FC */ lfs f2, lit_2434(r2) -/* 8027AD58 EC 20 20 28 */ fsubs f1, f0, f4 -/* 8027AD5C C0 05 00 48 */ lfs f0, 0x48(r5) -/* 8027AD60 EC 01 00 32 */ fmuls f0, f1, f0 -/* 8027AD64 EC 02 00 32 */ fmuls f0, f2, f0 -/* 8027AD68 EC 04 00 2A */ fadds f0, f4, f0 -/* 8027AD6C EC 03 00 32 */ fmuls f0, f3, f0 -/* 8027AD70 EC A5 00 32 */ fmuls f5, f5, f0 -/* 8027AD74 F0 A1 A0 08 */ psq_st f5, 8(r1), 1, 2 /* qr2 */ -/* 8027AD78 88 01 00 08 */ lbz r0, 8(r1) -/* 8027AD7C 98 04 00 96 */ stb r0, 0x96(r4) -/* 8027AD80 38 21 00 20 */ addi r1, r1, 0x20 -/* 8027AD84 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmNormal__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmNormal__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index 116f462763b..00000000000 --- a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmNormal__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_8027AA14: -/* 8027AA14 C0 04 00 84 */ lfs f0, 0x84(r4) -/* 8027AA18 D0 03 01 FC */ stfs f0, 0x1fc(r3) -/* 8027AA1C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmRepeatX__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmRepeatX__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index 689100d1568..00000000000 --- a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmRepeatX__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_8027AA20: -/* 8027AA20 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8027AA24 80 A3 00 04 */ lwz r5, 4(r3) -/* 8027AA28 80 A5 00 20 */ lwz r5, 0x20(r5) -/* 8027AA2C 80 A5 00 00 */ lwz r5, 0(r5) -/* 8027AA30 A8 A5 00 28 */ lha r5, 0x28(r5) -/* 8027AA34 A8 84 00 80 */ lha r4, 0x80(r4) -/* 8027AA38 7C 04 2B D6 */ divw r0, r4, r5 -/* 8027AA3C 7C 00 29 D6 */ mullw r0, r0, r5 -/* 8027AA40 7C 00 20 50 */ subf r0, r0, r4 -/* 8027AA44 C8 42 B8 E8 */ lfd f2, lit_2312(r2) -/* 8027AA48 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8027AA4C 90 01 00 0C */ stw r0, 0xc(r1) -/* 8027AA50 3C 80 43 30 */ lis r4, 0x4330 -/* 8027AA54 90 81 00 08 */ stw r4, 8(r1) -/* 8027AA58 C8 01 00 08 */ lfd f0, 8(r1) -/* 8027AA5C EC 20 10 28 */ fsubs f1, f0, f2 -/* 8027AA60 6C A0 80 00 */ xoris r0, r5, 0x8000 -/* 8027AA64 90 01 00 14 */ stw r0, 0x14(r1) -/* 8027AA68 90 81 00 10 */ stw r4, 0x10(r1) -/* 8027AA6C C8 01 00 10 */ lfd f0, 0x10(r1) -/* 8027AA70 EC 00 10 28 */ fsubs f0, f0, f2 -/* 8027AA74 EC 01 00 24 */ fdivs f0, f1, f0 -/* 8027AA78 D0 03 01 FC */ stfs f0, 0x1fc(r3) -/* 8027AA7C 38 21 00 20 */ addi r1, r1, 0x20 -/* 8027AA80 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmRepeatY__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmRepeatY__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index 2128ce0df3e..00000000000 --- a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmRepeatY__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_8027AA84: -/* 8027AA84 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8027AA88 80 A3 00 04 */ lwz r5, 4(r3) -/* 8027AA8C 80 A5 00 20 */ lwz r5, 0x20(r5) -/* 8027AA90 80 A5 00 00 */ lwz r5, 0(r5) -/* 8027AA94 A8 A5 00 2A */ lha r5, 0x2a(r5) -/* 8027AA98 A8 84 00 80 */ lha r4, 0x80(r4) -/* 8027AA9C 7C 04 2B D6 */ divw r0, r4, r5 -/* 8027AAA0 7C 00 29 D6 */ mullw r0, r0, r5 -/* 8027AAA4 7C 00 20 50 */ subf r0, r0, r4 -/* 8027AAA8 C8 42 B8 E8 */ lfd f2, lit_2312(r2) -/* 8027AAAC 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8027AAB0 90 01 00 0C */ stw r0, 0xc(r1) -/* 8027AAB4 3C 80 43 30 */ lis r4, 0x4330 -/* 8027AAB8 90 81 00 08 */ stw r4, 8(r1) -/* 8027AABC C8 01 00 08 */ lfd f0, 8(r1) -/* 8027AAC0 EC 20 10 28 */ fsubs f1, f0, f2 -/* 8027AAC4 6C A0 80 00 */ xoris r0, r5, 0x8000 -/* 8027AAC8 90 01 00 14 */ stw r0, 0x14(r1) -/* 8027AACC 90 81 00 10 */ stw r4, 0x10(r1) -/* 8027AAD0 C8 01 00 10 */ lfd f0, 0x10(r1) -/* 8027AAD4 EC 00 10 28 */ fsubs f0, f0, f2 -/* 8027AAD8 EC 01 00 24 */ fdivs f0, f1, f0 -/* 8027AADC D0 03 01 FC */ stfs f0, 0x1fc(r3) -/* 8027AAE0 38 21 00 20 */ addi r1, r1, 0x20 -/* 8027AAE4 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmReverseX__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmReverseX__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index 30f9e038aef..00000000000 --- a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmReverseX__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,38 +0,0 @@ -lbl_8027AAE8: -/* 8027AAE8 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8027AAEC 80 A3 00 04 */ lwz r5, 4(r3) -/* 8027AAF0 80 A5 00 20 */ lwz r5, 0x20(r5) -/* 8027AAF4 80 A5 00 00 */ lwz r5, 0(r5) -/* 8027AAF8 A8 C5 00 28 */ lha r6, 0x28(r5) -/* 8027AAFC A8 84 00 80 */ lha r4, 0x80(r4) -/* 8027AB00 7C A4 33 D6 */ divw r5, r4, r6 -/* 8027AB04 7C 05 31 D6 */ mullw r0, r5, r6 -/* 8027AB08 7C 00 20 50 */ subf r0, r0, r4 -/* 8027AB0C C8 42 B8 E8 */ lfd f2, lit_2312(r2) -/* 8027AB10 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8027AB14 90 01 00 0C */ stw r0, 0xc(r1) -/* 8027AB18 3C 80 43 30 */ lis r4, 0x4330 -/* 8027AB1C 90 81 00 08 */ stw r4, 8(r1) -/* 8027AB20 C8 01 00 08 */ lfd f0, 8(r1) -/* 8027AB24 EC 20 10 28 */ fsubs f1, f0, f2 -/* 8027AB28 6C C0 80 00 */ xoris r0, r6, 0x8000 -/* 8027AB2C 90 01 00 14 */ stw r0, 0x14(r1) -/* 8027AB30 90 81 00 10 */ stw r4, 0x10(r1) -/* 8027AB34 C8 01 00 10 */ lfd f0, 0x10(r1) -/* 8027AB38 EC 00 10 28 */ fsubs f0, f0, f2 -/* 8027AB3C EC 61 00 24 */ fdivs f3, f1, f0 -/* 8027AB40 54 A0 07 FE */ clrlwi r0, r5, 0x1f -/* 8027AB44 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8027AB48 90 01 00 1C */ stw r0, 0x1c(r1) -/* 8027AB4C 90 81 00 18 */ stw r4, 0x18(r1) -/* 8027AB50 C8 01 00 18 */ lfd f0, 0x18(r1) -/* 8027AB54 EC 40 10 28 */ fsubs f2, f0, f2 -/* 8027AB58 C0 22 B8 E0 */ lfs f1, lit_2270(r2) -/* 8027AB5C C0 02 B8 F0 */ lfs f0, lit_2339(r2) -/* 8027AB60 EC 00 00 F2 */ fmuls f0, f0, f3 -/* 8027AB64 EC 01 00 28 */ fsubs f0, f1, f0 -/* 8027AB68 EC 02 00 32 */ fmuls f0, f2, f0 -/* 8027AB6C EC 03 00 2A */ fadds f0, f3, f0 -/* 8027AB70 D0 03 01 FC */ stfs f0, 0x1fc(r3) -/* 8027AB74 38 21 00 20 */ addi r1, r1, 0x20 -/* 8027AB78 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmReverseY__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmReverseY__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index 77ca9dc3fd0..00000000000 --- a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmReverseY__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,38 +0,0 @@ -lbl_8027AB7C: -/* 8027AB7C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8027AB80 80 A3 00 04 */ lwz r5, 4(r3) -/* 8027AB84 80 A5 00 20 */ lwz r5, 0x20(r5) -/* 8027AB88 80 A5 00 00 */ lwz r5, 0(r5) -/* 8027AB8C A8 C5 00 2A */ lha r6, 0x2a(r5) -/* 8027AB90 A8 84 00 80 */ lha r4, 0x80(r4) -/* 8027AB94 7C A4 33 D6 */ divw r5, r4, r6 -/* 8027AB98 7C 05 31 D6 */ mullw r0, r5, r6 -/* 8027AB9C 7C 00 20 50 */ subf r0, r0, r4 -/* 8027ABA0 C8 42 B8 E8 */ lfd f2, lit_2312(r2) -/* 8027ABA4 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8027ABA8 90 01 00 0C */ stw r0, 0xc(r1) -/* 8027ABAC 3C 80 43 30 */ lis r4, 0x4330 -/* 8027ABB0 90 81 00 08 */ stw r4, 8(r1) -/* 8027ABB4 C8 01 00 08 */ lfd f0, 8(r1) -/* 8027ABB8 EC 20 10 28 */ fsubs f1, f0, f2 -/* 8027ABBC 6C C0 80 00 */ xoris r0, r6, 0x8000 -/* 8027ABC0 90 01 00 14 */ stw r0, 0x14(r1) -/* 8027ABC4 90 81 00 10 */ stw r4, 0x10(r1) -/* 8027ABC8 C8 01 00 10 */ lfd f0, 0x10(r1) -/* 8027ABCC EC 00 10 28 */ fsubs f0, f0, f2 -/* 8027ABD0 EC 61 00 24 */ fdivs f3, f1, f0 -/* 8027ABD4 54 A0 07 FE */ clrlwi r0, r5, 0x1f -/* 8027ABD8 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8027ABDC 90 01 00 1C */ stw r0, 0x1c(r1) -/* 8027ABE0 90 81 00 18 */ stw r4, 0x18(r1) -/* 8027ABE4 C8 01 00 18 */ lfd f0, 0x18(r1) -/* 8027ABE8 EC 40 10 28 */ fsubs f2, f0, f2 -/* 8027ABEC C0 22 B8 E0 */ lfs f1, lit_2270(r2) -/* 8027ABF0 C0 02 B8 F0 */ lfs f0, lit_2339(r2) -/* 8027ABF4 EC 00 00 F2 */ fmuls f0, f0, f3 -/* 8027ABF8 EC 01 00 28 */ fsubs f0, f1, f0 -/* 8027ABFC EC 02 00 32 */ fmuls f0, f2, f0 -/* 8027AC00 EC 03 00 2A */ fadds f0, f3, f0 -/* 8027AC04 D0 03 01 FC */ stfs f0, 0x1fc(r3) -/* 8027AC08 38 21 00 20 */ addi r1, r1, 0x20 -/* 8027AC0C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleCopy__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleCopy__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index 6247cf39bcd..00000000000 --- a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleCopy__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_8027AA08: -/* 8027AA08 C0 04 00 60 */ lfs f0, 0x60(r4) -/* 8027AA0C D0 04 00 64 */ stfs f0, 0x64(r4) -/* 8027AA10 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleX__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleX__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index acbfdc25af0..00000000000 --- a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleX__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,33 +0,0 @@ -lbl_8027A918: -/* 8027A918 80 A3 00 04 */ lwz r5, 4(r3) -/* 8027A91C 80 A5 00 20 */ lwz r5, 0x20(r5) -/* 8027A920 C0 83 01 FC */ lfs f4, 0x1fc(r3) -/* 8027A924 80 65 00 00 */ lwz r3, 0(r5) -/* 8027A928 C0 03 00 0C */ lfs f0, 0xc(r3) -/* 8027A92C FC 04 00 40 */ fcmpo cr0, f4, f0 -/* 8027A930 40 80 00 24 */ bge lbl_8027A954 -/* 8027A934 C0 44 00 68 */ lfs f2, 0x68(r4) -/* 8027A938 C0 05 00 0C */ lfs f0, 0xc(r5) -/* 8027A93C EC 24 00 32 */ fmuls f1, f4, f0 -/* 8027A940 C0 03 00 14 */ lfs f0, 0x14(r3) -/* 8027A944 EC 01 00 2A */ fadds f0, f1, f0 -/* 8027A948 EC 02 00 32 */ fmuls f0, f2, f0 -/* 8027A94C D0 04 00 60 */ stfs f0, 0x60(r4) -/* 8027A950 4E 80 00 20 */ blr -lbl_8027A954: -/* 8027A954 C0 03 00 10 */ lfs f0, 0x10(r3) -/* 8027A958 FC 04 00 40 */ fcmpo cr0, f4, f0 -/* 8027A95C 40 81 00 28 */ ble lbl_8027A984 -/* 8027A960 C0 64 00 68 */ lfs f3, 0x68(r4) -/* 8027A964 C0 42 B8 E0 */ lfs f2, lit_2270(r2) -/* 8027A968 C0 25 00 14 */ lfs f1, 0x14(r5) -/* 8027A96C EC 04 00 28 */ fsubs f0, f4, f0 -/* 8027A970 EC 01 00 32 */ fmuls f0, f1, f0 -/* 8027A974 EC 02 00 2A */ fadds f0, f2, f0 -/* 8027A978 EC 03 00 32 */ fmuls f0, f3, f0 -/* 8027A97C D0 04 00 60 */ stfs f0, 0x60(r4) -/* 8027A980 4E 80 00 20 */ blr -lbl_8027A984: -/* 8027A984 C0 04 00 68 */ lfs f0, 0x68(r4) -/* 8027A988 D0 04 00 60 */ stfs f0, 0x60(r4) -/* 8027A98C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleY__FP18JPAEmitterWorkDataP15JPABaseParticle.s b/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleY__FP18JPAEmitterWorkDataP15JPABaseParticle.s deleted file mode 100644 index 7e4d76fa080..00000000000 --- a/asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleY__FP18JPAEmitterWorkDataP15JPABaseParticle.s +++ /dev/null @@ -1,33 +0,0 @@ -lbl_8027A990: -/* 8027A990 80 A3 00 04 */ lwz r5, 4(r3) -/* 8027A994 80 A5 00 20 */ lwz r5, 0x20(r5) -/* 8027A998 C0 83 01 FC */ lfs f4, 0x1fc(r3) -/* 8027A99C 80 65 00 00 */ lwz r3, 0(r5) -/* 8027A9A0 C0 03 00 0C */ lfs f0, 0xc(r3) -/* 8027A9A4 FC 04 00 40 */ fcmpo cr0, f4, f0 -/* 8027A9A8 40 80 00 24 */ bge lbl_8027A9CC -/* 8027A9AC C0 44 00 68 */ lfs f2, 0x68(r4) -/* 8027A9B0 C0 05 00 10 */ lfs f0, 0x10(r5) -/* 8027A9B4 EC 24 00 32 */ fmuls f1, f4, f0 -/* 8027A9B8 C0 03 00 1C */ lfs f0, 0x1c(r3) -/* 8027A9BC EC 01 00 2A */ fadds f0, f1, f0 -/* 8027A9C0 EC 02 00 32 */ fmuls f0, f2, f0 -/* 8027A9C4 D0 04 00 64 */ stfs f0, 0x64(r4) -/* 8027A9C8 4E 80 00 20 */ blr -lbl_8027A9CC: -/* 8027A9CC C0 03 00 10 */ lfs f0, 0x10(r3) -/* 8027A9D0 FC 04 00 40 */ fcmpo cr0, f4, f0 -/* 8027A9D4 40 81 00 28 */ ble lbl_8027A9FC -/* 8027A9D8 C0 64 00 68 */ lfs f3, 0x68(r4) -/* 8027A9DC C0 42 B8 E0 */ lfs f2, lit_2270(r2) -/* 8027A9E0 C0 25 00 18 */ lfs f1, 0x18(r5) -/* 8027A9E4 EC 04 00 28 */ fsubs f0, f4, f0 -/* 8027A9E8 EC 01 00 32 */ fmuls f0, f1, f0 -/* 8027A9EC EC 02 00 2A */ fadds f0, f2, f0 -/* 8027A9F0 EC 03 00 32 */ fmuls f0, f3, f0 -/* 8027A9F4 D0 04 00 64 */ stfs f0, 0x64(r4) -/* 8027A9F8 4E 80 00 20 */ blr -lbl_8027A9FC: -/* 8027A9FC C0 04 00 68 */ lfs f0, 0x68(r4) -/* 8027AA00 D0 04 00 64 */ stfs f0, 0x64(r4) -/* 8027AA04 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAExtraShape/__ct__13JPAExtraShapeFPCUc.s b/asm/JSystem/JParticle/JPAExtraShape/__ct__13JPAExtraShapeFPCUc.s deleted file mode 100644 index 543945a7547..00000000000 --- a/asm/JSystem/JParticle/JPAExtraShape/__ct__13JPAExtraShapeFPCUc.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_8027AD88: -/* 8027AD88 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8027AD8C 7C 08 02 A6 */ mflr r0 -/* 8027AD90 90 01 00 14 */ stw r0, 0x14(r1) -/* 8027AD94 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8027AD98 7C 7F 1B 78 */ mr r31, r3 -/* 8027AD9C 90 83 00 00 */ stw r4, 0(r3) -/* 8027ADA0 48 00 00 1D */ bl init__13JPAExtraShapeFv -/* 8027ADA4 7F E3 FB 78 */ mr r3, r31 -/* 8027ADA8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8027ADAC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8027ADB0 7C 08 03 A6 */ mtlr r0 -/* 8027ADB4 38 21 00 10 */ addi r1, r1, 0x10 -/* 8027ADB8 4E 80 00 20 */ blr diff --git a/asm/JSystem/JParticle/JPAExtraShape/init__13JPAExtraShapeFv.s b/asm/JSystem/JParticle/JPAExtraShape/init__13JPAExtraShapeFv.s deleted file mode 100644 index 8dd04fa1922..00000000000 --- a/asm/JSystem/JParticle/JPAExtraShape/init__13JPAExtraShapeFv.s +++ /dev/null @@ -1,71 +0,0 @@ -lbl_8027ADBC: -/* 8027ADBC C0 02 B9 00 */ lfs f0, lit_2503(r2) -/* 8027ADC0 80 83 00 00 */ lwz r4, 0(r3) -/* 8027ADC4 C0 44 00 2C */ lfs f2, 0x2c(r4) -/* 8027ADC8 FC 00 10 00 */ fcmpu cr0, f0, f2 -/* 8027ADCC 41 82 00 18 */ beq lbl_8027ADE4 -/* 8027ADD0 C0 24 00 38 */ lfs f1, 0x38(r4) -/* 8027ADD4 C0 04 00 34 */ lfs f0, 0x34(r4) -/* 8027ADD8 EC 01 00 28 */ fsubs f0, f1, f0 -/* 8027ADDC EC 00 10 24 */ fdivs f0, f0, f2 -/* 8027ADE0 48 00 00 08 */ b lbl_8027ADE8 -lbl_8027ADE4: -/* 8027ADE4 C0 02 B8 E0 */ lfs f0, lit_2270(r2) -lbl_8027ADE8: -/* 8027ADE8 D0 03 00 04 */ stfs f0, 4(r3) -/* 8027ADEC C0 42 B8 E0 */ lfs f2, lit_2270(r2) -/* 8027ADF0 80 83 00 00 */ lwz r4, 0(r3) -/* 8027ADF4 C0 64 00 30 */ lfs f3, 0x30(r4) -/* 8027ADF8 FC 02 18 00 */ fcmpu cr0, f2, f3 -/* 8027ADFC 41 82 00 18 */ beq lbl_8027AE14 -/* 8027AE00 C0 24 00 3C */ lfs f1, 0x3c(r4) -/* 8027AE04 C0 04 00 38 */ lfs f0, 0x38(r4) -/* 8027AE08 EC 21 00 28 */ fsubs f1, f1, f0 -/* 8027AE0C EC 02 18 28 */ fsubs f0, f2, f3 -/* 8027AE10 EC 41 00 24 */ fdivs f2, f1, f0 -lbl_8027AE14: -/* 8027AE14 D0 43 00 08 */ stfs f2, 8(r3) -/* 8027AE18 C0 02 B9 00 */ lfs f0, lit_2503(r2) -/* 8027AE1C 80 83 00 00 */ lwz r4, 0(r3) -/* 8027AE20 C0 44 00 0C */ lfs f2, 0xc(r4) -/* 8027AE24 FC 00 10 00 */ fcmpu cr0, f0, f2 -/* 8027AE28 41 82 00 34 */ beq lbl_8027AE5C -/* 8027AE2C C0 22 B8 E0 */ lfs f1, lit_2270(r2) -/* 8027AE30 C0 04 00 14 */ lfs f0, 0x14(r4) -/* 8027AE34 EC 01 00 28 */ fsubs f0, f1, f0 -/* 8027AE38 EC 00 10 24 */ fdivs f0, f0, f2 -/* 8027AE3C D0 03 00 0C */ stfs f0, 0xc(r3) -/* 8027AE40 80 83 00 00 */ lwz r4, 0(r3) -/* 8027AE44 C0 04 00 1C */ lfs f0, 0x1c(r4) -/* 8027AE48 EC 21 00 28 */ fsubs f1, f1, f0 -/* 8027AE4C C0 04 00 0C */ lfs f0, 0xc(r4) -/* 8027AE50 EC 01 00 24 */ fdivs f0, f1, f0 -/* 8027AE54 D0 03 00 10 */ stfs f0, 0x10(r3) -/* 8027AE58 48 00 00 10 */ b lbl_8027AE68 -lbl_8027AE5C: -/* 8027AE5C C0 02 B8 E0 */ lfs f0, lit_2270(r2) -/* 8027AE60 D0 03 00 10 */ stfs f0, 0x10(r3) -/* 8027AE64 D0 03 00 0C */ stfs f0, 0xc(r3) -lbl_8027AE68: -/* 8027AE68 C0 42 B8 E0 */ lfs f2, lit_2270(r2) -/* 8027AE6C 80 83 00 00 */ lwz r4, 0(r3) -/* 8027AE70 C0 64 00 10 */ lfs f3, 0x10(r4) -/* 8027AE74 FC 02 18 00 */ fcmpu cr0, f2, f3 -/* 8027AE78 41 82 00 38 */ beq lbl_8027AEB0 -/* 8027AE7C C0 04 00 18 */ lfs f0, 0x18(r4) -/* 8027AE80 EC 20 10 28 */ fsubs f1, f0, f2 -/* 8027AE84 EC 02 18 28 */ fsubs f0, f2, f3 -/* 8027AE88 EC 01 00 24 */ fdivs f0, f1, f0 -/* 8027AE8C D0 03 00 14 */ stfs f0, 0x14(r3) -/* 8027AE90 80 83 00 00 */ lwz r4, 0(r3) -/* 8027AE94 C0 04 00 20 */ lfs f0, 0x20(r4) -/* 8027AE98 EC 20 10 28 */ fsubs f1, f0, f2 -/* 8027AE9C C0 04 00 10 */ lfs f0, 0x10(r4) -/* 8027AEA0 EC 02 00 28 */ fsubs f0, f2, f0 -/* 8027AEA4 EC 01 00 24 */ fdivs f0, f1, f0 -/* 8027AEA8 D0 03 00 18 */ stfs f0, 0x18(r3) -/* 8027AEAC 4E 80 00 20 */ blr -lbl_8027AEB0: -/* 8027AEB0 D0 43 00 18 */ stfs f2, 0x18(r3) -/* 8027AEB4 D0 43 00 14 */ stfs f2, 0x14(r3) -/* 8027AEB8 4E 80 00 20 */ blr diff --git a/include/JSystem/JMath/JMATrigonometric.h b/include/JSystem/JMath/JMATrigonometric.h index 79d3798ed20..a01b717ca8d 100644 --- a/include/JSystem/JMath/JMATrigonometric.h +++ b/include/JSystem/JMath/JMATrigonometric.h @@ -17,6 +17,9 @@ struct pair { struct TSinCosTable { std::pair table[0x2000]; + + f32 sinShort(s16 v) const { return table[static_cast(v) >> 3].a1; } + f32 cosShort(s16 v) const { return table[static_cast(v) >> 3].b1; } }; struct TAtanTable { @@ -35,4 +38,12 @@ extern TAtanTable atanTable_; extern TAsinAcosTable asinAcosTable_; }; // namespace JMath +inline f32 JMASSin(s16 s) { + return JMath::sincosTable_.sinShort(s); +} + +inline f32 JMASCos(s16 s) { + return JMath::sincosTable_.cosShort(s); +} + #endif /* JMATRIGONOMETRIC_H */ diff --git a/include/JSystem/JParticle/JPAExtraShape.h b/include/JSystem/JParticle/JPAExtraShape.h index abdcdd0b4d5..0df0e574366 100644 --- a/include/JSystem/JParticle/JPAExtraShape.h +++ b/include/JSystem/JParticle/JPAExtraShape.h @@ -3,4 +3,71 @@ #include "dolphin/types.h" +struct JPAExtraShapeData { + // Common header. + /* 0x00 */ u8 mMagic[4]; + /* 0x04 */ u32 mSize; + + /* 0x08 */ u32 mFlags; + /* 0x0C */ f32 mScaleInTiming; + /* 0x10 */ f32 mScaleOutTiming; + /* 0x14 */ f32 mScaleInValueX; + /* 0x18 */ f32 mScaleOutValueX; + /* 0x1C */ f32 mScaleInValueY; + /* 0x20 */ f32 mScaleOutValueY; + /* 0x24 */ f32 mScaleOutRandom; + /* 0x28 */ s16 mScaleAnmCycleX; + /* 0x2A */ s16 mScaleAnmCycleY; + /* 0x2C */ f32 mAlphaInTiming; + /* 0x30 */ f32 mAlphaOutTiming; + /* 0x34 */ f32 mAlphaInValue; + /* 0x38 */ f32 mAlphaBaseValue; + /* 0x3C */ f32 mAlphaOutValue; + /* 0x40 */ f32 mAlphaWaveFrequency; + /* 0x44 */ f32 mAlphaWaveRandom; + /* 0x48 */ f32 mAlphaWaveAmplitude; + /* 0x4C */ f32 mRotateAngle; + /* 0x50 */ f32 mRotateAngleRandom; + /* 0x54 */ f32 mRotateSpeed; + /* 0x58 */ f32 mRotateSpeedRandom; + /* 0x5C */ f32 mRotateDirection; +}; + +class JPAExtraShape { +public: + /* 8027AD88 */ JPAExtraShape(u8 const*); + /* 8027ADBC */ void init(); + + f32 getScaleInTiming() const { return mpData->mScaleInTiming; } + f32 getScaleOutTiming() const { return mpData->mScaleOutTiming; } + f32 getScaleInValueX() const { return mpData->mScaleInValueX; } + f32 getScaleInValueY() const { return mpData->mScaleInValueY; } + f32 getScaleOutValueX() const { return mpData->mScaleOutValueX; } + f32 getScaleOutValueY() const { return mpData->mScaleOutValueY; } + s16 getScaleAnmCycleX() const { return mpData->mScaleAnmCycleX; } + s16 getScaleAnmCycleY() const { return mpData->mScaleAnmCycleY; } + f32 getAlphaInTiming() const { return mpData->mAlphaInTiming; } + f32 getAlphaOutTiming() const { return mpData->mAlphaOutTiming; } + f32 getAlphaInValue() const { return mpData->mAlphaInValue; } + f32 getAlphaOutValue() const { return mpData->mAlphaOutValue; } + f32 getAlphaBaseValue() const { return mpData->mAlphaBaseValue; } + f32 getAlphaFreq() const { return mpData->mAlphaWaveFrequency; } + f32 getAlphaAmp() const { return mpData->mAlphaWaveAmplitude; } + f32 getScaleIncRateX() const { return mScaleIncRateX; } + f32 getScaleDecRateX() const { return mScaleDecRateX; } + f32 getScaleIncRateY() const { return mScaleIncRateY; } + f32 getScaleDecRateY() const { return mScaleDecRateY; } + f32 getAlphaIncRate() const { return mAlphaIncRate; } + f32 getAlphaDecRate() const { return mAlphaDecRate; } + +private: + /* 0x00 */ const JPAExtraShapeData* mpData; + /* 0x04 */ f32 mAlphaIncRate; + /* 0x08 */ f32 mAlphaDecRate; + /* 0x0C */ f32 mScaleIncRateX; + /* 0x10 */ f32 mScaleIncRateY; + /* 0x14 */ f32 mScaleDecRateX; + /* 0x18 */ f32 mScaleDecRateY; +}; + #endif /* JPAEXTRASHAPE_H */ diff --git a/include/JSystem/JParticle/JPAParticle.h b/include/JSystem/JParticle/JPAParticle.h index 046353808f4..ca6dd4d926e 100644 --- a/include/JSystem/JParticle/JPAParticle.h +++ b/include/JSystem/JParticle/JPAParticle.h @@ -277,7 +277,7 @@ public: /* 0x74 */ f32 mDrag; /* 0x78 */ u32 field_0x78; /* 0x7C */ u32 mStatus; - /* 0x80 */ u16 mAge; + /* 0x80 */ s16 mAge; /* 0x82 */ u16 mLifeTime; /* 0x84 */ f32 mTime; /* 0x88 */ u16 mRotateAngle; diff --git a/include/dolphin/os/OS.h b/include/dolphin/os/OS.h index e34324bd386..3bda004d8ae 100644 --- a/include/dolphin/os/OS.h +++ b/include/dolphin/os/OS.h @@ -304,4 +304,22 @@ inline void* OSPhysicalToCached(u32 offset) { return (void*)(offset + 0x80000000); } -#endif \ No newline at end of file +static inline u8 __OSf32tou8(register f32 src) { + f32 tmp; + register f32 *p = &tmp; + register u8 ret; + + asm + { + psq_st src, 0(p), 1, 2 + lbz ret, 0(p) + } + + return ret; +} + +static inline void OSf32tou8(register f32* src, volatile register u8* dst) { + *dst = __OSf32tou8(*src); +} + +#endif diff --git a/libs/JSystem/JParticle/JPAExtraShape.cpp b/libs/JSystem/JParticle/JPAExtraShape.cpp index 76580411191..49f599c0604 100644 --- a/libs/JSystem/JParticle/JPAExtraShape.cpp +++ b/libs/JSystem/JParticle/JPAExtraShape.cpp @@ -4,214 +4,144 @@ // #include "JSystem/JParticle/JPAExtraShape.h" +#include "JSystem/JParticle/JPAParticle.h" +#include "JSystem/JParticle/JPAResource.h" +#include "JSystem/JParticle/JPAResourceManager.h" +#include "JSystem/JMath/JMATrigonometric.h" #include "dol2asm.h" #include "dolphin/types.h" +#include "dolphin/os/OS.h" // // Types: // -struct JPAExtraShape { - /* 8027AD88 */ JPAExtraShape(u8 const*); - /* 8027ADBC */ void init(); -}; - -struct JPAEmitterWorkData {}; - -struct JPABaseParticle {}; - -struct JMath { - static u8 sincosTable_[65536]; -}; - -// -// Forward References: -// - -extern "C" void JPACalcScaleX__FP18JPAEmitterWorkDataP15JPABaseParticle(); -extern "C" void JPACalcScaleY__FP18JPAEmitterWorkDataP15JPABaseParticle(); -extern "C" void JPACalcScaleCopy__FP18JPAEmitterWorkDataP15JPABaseParticle(); -extern "C" void JPACalcScaleAnmNormal__FP18JPAEmitterWorkDataP15JPABaseParticle(); -extern "C" void JPACalcScaleAnmRepeatX__FP18JPAEmitterWorkDataP15JPABaseParticle(); -extern "C" void JPACalcScaleAnmRepeatY__FP18JPAEmitterWorkDataP15JPABaseParticle(); -extern "C" void JPACalcScaleAnmReverseX__FP18JPAEmitterWorkDataP15JPABaseParticle(); -extern "C" void JPACalcScaleAnmReverseY__FP18JPAEmitterWorkDataP15JPABaseParticle(); -extern "C" void JPACalcAlphaAnm__FP18JPAEmitterWorkDataP15JPABaseParticle(); -extern "C" void JPACalcAlphaFlickAnm__FP18JPAEmitterWorkDataP15JPABaseParticle(); -extern "C" void __ct__13JPAExtraShapeFPCUc(); -extern "C" void init__13JPAExtraShapeFv(); - -// -// External References: -// - -extern "C" u8 sincosTable___5JMath[65536]; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 804552E0-804552E8 0038E0 0004+04 6/6 0/0 0/0 .sdata2 @2270 */ -SECTION_SDATA2 static f32 lit_2270[1 + 1 /* padding */] = { - 1.0f, - /* padding */ - 0.0f, -}; - /* 8027A918-8027A990 275258 0078+00 0/0 1/1 0/0 .text * JPACalcScaleX__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPACalcScaleX(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleX__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPACalcScaleX(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + JPAExtraShape* esp = work->mpRes->getEsp(); + if (work->mScaleAnm < esp->getScaleInTiming()) { + ptcl->mParticleScaleX = ptcl->mScaleOut * (esp->getScaleIncRateX() * work->mScaleAnm + esp->getScaleInValueX()); + } else if (work->mScaleAnm > esp->getScaleOutTiming()) { + ptcl->mParticleScaleX = ptcl->mScaleOut * (esp->getScaleDecRateX() * (work->mScaleAnm - esp->getScaleOutTiming()) + 1.0f); + } else { + ptcl->mParticleScaleX = ptcl->mScaleOut; + } } -#pragma pop /* 8027A990-8027AA08 2752D0 0078+00 0/0 1/1 0/0 .text * JPACalcScaleY__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPACalcScaleY(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleY__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPACalcScaleY(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + JPAExtraShape* esp = work->mpRes->getEsp(); + if (work->mScaleAnm < esp->getScaleInTiming()) { + ptcl->mParticleScaleY = ptcl->mScaleOut * (esp->getScaleIncRateY() * work->mScaleAnm + esp->getScaleInValueY()); + } else if (work->mScaleAnm > esp->getScaleOutTiming()) { + ptcl->mParticleScaleY = ptcl->mScaleOut * (esp->getScaleDecRateY() * (work->mScaleAnm - esp->getScaleOutTiming()) + 1.0f); + } else { + ptcl->mParticleScaleY = ptcl->mScaleOut; + } } -#pragma pop /* 8027AA08-8027AA14 275348 000C+00 0/0 1/1 0/0 .text * JPACalcScaleCopy__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPACalcScaleCopy(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleCopy__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPACalcScaleCopy(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + JPAExtraShape* esp = work->mpRes->getEsp(); + ptcl->mParticleScaleY = ptcl->mParticleScaleX; } -#pragma pop /* 8027AA14-8027AA20 275354 000C+00 0/0 1/1 0/0 .text * JPACalcScaleAnmNormal__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPACalcScaleAnmNormal(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmNormal__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPACalcScaleAnmNormal(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + work->mScaleAnm = ptcl->mTime; } -#pragma pop - -/* ############################################################################################## */ -/* 804552E8-804552F0 0038E8 0008+00 5/5 0/0 0/0 .sdata2 @2312 */ -SECTION_SDATA2 static f64 lit_2312 = 4503601774854144.0 /* cast s32 to float */; /* 8027AA20-8027AA84 275360 0064+00 0/0 1/1 0/0 .text * JPACalcScaleAnmRepeatX__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPACalcScaleAnmRepeatX(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmRepeatX__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPACalcScaleAnmRepeatX(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + JPAExtraShape* esp = work->mpRes->getEsp(); + work->mScaleAnm = (ptcl->mAge % esp->getScaleAnmCycleX()) / (f32)esp->getScaleAnmCycleX(); } -#pragma pop /* 8027AA84-8027AAE8 2753C4 0064+00 0/0 1/1 0/0 .text * JPACalcScaleAnmRepeatY__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPACalcScaleAnmRepeatY(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmRepeatY__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPACalcScaleAnmRepeatY(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + JPAExtraShape* esp = work->mpRes->getEsp(); + work->mScaleAnm = (ptcl->mAge % esp->getScaleAnmCycleY()) / (f32)esp->getScaleAnmCycleY(); } -#pragma pop - -/* ############################################################################################## */ -/* 804552F0-804552F4 0038F0 0004+00 2/2 0/0 0/0 .sdata2 @2339 */ -SECTION_SDATA2 static f32 lit_2339 = 2.0f; /* 8027AAE8-8027AB7C 275428 0094+00 0/0 1/1 0/0 .text * JPACalcScaleAnmReverseX__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPACalcScaleAnmReverseX(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmReverseX__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPACalcScaleAnmReverseX(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + JPAExtraShape* esp = work->mpRes->getEsp(); + s32 cycle = ptcl->mAge / esp->getScaleAnmCycleX(); + f32 base = (ptcl->mAge % esp->getScaleAnmCycleX()) / (f32)esp->getScaleAnmCycleX(); + work->mScaleAnm = base + ((cycle & 1) * (1.0f - base * 2.0f)); } -#pragma pop /* 8027AB7C-8027AC10 2754BC 0094+00 0/0 1/1 0/0 .text * JPACalcScaleAnmReverseY__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPACalcScaleAnmReverseY(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmReverseY__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPACalcScaleAnmReverseY(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + JPAExtraShape* esp = work->mpRes->getEsp(); + s32 cycle = ptcl->mAge / esp->getScaleAnmCycleY(); + f32 base = (ptcl->mAge % esp->getScaleAnmCycleY()) / (f32)esp->getScaleAnmCycleY(); + work->mScaleAnm = base + ((cycle & 1) * (1.0f - base * 2.0f)); } -#pragma pop - -/* ############################################################################################## */ -/* 804552F4-804552F8 0038F4 0004+00 2/2 0/0 0/0 .sdata2 @2390 */ -SECTION_SDATA2 static f32 lit_2390 = 255.0f; /* 8027AC10-8027AC98 275550 0088+00 0/0 1/1 0/0 .text * JPACalcAlphaAnm__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPACalcAlphaAnm(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcAlphaAnm__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPACalcAlphaAnm(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + JPAExtraShape* esp = work->mpRes->getEsp(); + f32 alpha; + if (ptcl->mTime < esp->getAlphaInTiming()) { + alpha = 255.0f * (esp->getAlphaInValue() + esp->getAlphaIncRate() * ptcl->mTime); + } else if (ptcl->mTime > esp->getAlphaOutTiming()) { + alpha = 255.0f * ((ptcl->mTime - esp->getAlphaOutTiming()) * esp->getAlphaDecRate() + esp->getAlphaBaseValue()); + } else { + alpha = 255.0f * esp->getAlphaBaseValue(); + } + OSf32tou8(&alpha, &ptcl->mPrmColorAlphaAnm); } -#pragma pop - -/* ############################################################################################## */ -/* 804552F8-804552FC 0038F8 0004+00 1/1 0/0 0/0 .sdata2 @2433 */ -SECTION_SDATA2 static f32 lit_2433 = 16384.0f; - -/* 804552FC-80455300 0038FC 0004+00 1/1 0/0 0/0 .sdata2 @2434 */ -SECTION_SDATA2 static f32 lit_2434 = 0.5f; /* 8027AC98-8027AD88 2755D8 00F0+00 0/0 1/1 0/0 .text * JPACalcAlphaFlickAnm__FP18JPAEmitterWorkDataP15JPABaseParticle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPACalcAlphaFlickAnm(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { - nofralloc -#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcAlphaFlickAnm__FP18JPAEmitterWorkDataP15JPABaseParticle.s" +void JPACalcAlphaFlickAnm(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { + JPAExtraShape* esp = work->mpRes->getEsp(); + f32 alpha; + if (ptcl->mTime < esp->getAlphaInTiming()) { + alpha = (esp->getAlphaInValue() + esp->getAlphaIncRate() * ptcl->mTime); + } else if (ptcl->mTime > esp->getAlphaOutTiming()) { + alpha = ((ptcl->mTime - esp->getAlphaOutTiming()) * esp->getAlphaDecRate() + esp->getAlphaBaseValue()); + } else { + alpha = esp->getAlphaBaseValue(); + } + s32 theta = ptcl->mAlphaWaveRandom * ptcl->mAge * 16384.0f * (1.0f - esp->getAlphaFreq()); + f32 wave = JMASSin(theta); + alpha *= (1.0f + esp->getAlphaAmp() * (wave - 1.0f) * 0.5f) * 255.0f; + OSf32tou8(&alpha, &ptcl->mPrmColorAlphaAnm); } -#pragma pop /* 8027AD88-8027ADBC 2756C8 0034+00 0/0 1/1 0/0 .text __ct__13JPAExtraShapeFPCUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JPAExtraShape::JPAExtraShape(u8 const* param_0) { - nofralloc -#include "asm/JSystem/JParticle/JPAExtraShape/__ct__13JPAExtraShapeFPCUc.s" +JPAExtraShape::JPAExtraShape(u8 const* data) { + mpData = (const JPAExtraShapeData*)data; + init(); } -#pragma pop - -/* ############################################################################################## */ -/* 80455300-80455308 003900 0004+04 1/1 0/0 0/0 .sdata2 @2503 */ -SECTION_SDATA2 static f32 lit_2503[1 + 1 /* padding */] = { - 0.0f, - /* padding */ - 0.0f, -}; /* 8027ADBC-8027AEBC 2756FC 0100+00 1/1 0/0 0/0 .text init__13JPAExtraShapeFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JPAExtraShape::init() { - nofralloc -#include "asm/JSystem/JParticle/JPAExtraShape/init__13JPAExtraShapeFv.s" +void JPAExtraShape::init() { + mAlphaIncRate = (getAlphaInTiming() != 0.0f) ? (getAlphaBaseValue() - getAlphaInValue()) / getAlphaInTiming() : 1.0f; + mAlphaDecRate = (getAlphaOutTiming() != 1.0f) ? (getAlphaOutValue() - getAlphaBaseValue()) / (1.0f - getAlphaOutTiming()) : 1.0f; + + if (getScaleInTiming() != 0.0f) { + mScaleIncRateX = (1.0f - getScaleInValueX()) / getScaleInTiming(); + mScaleIncRateY = (1.0f - getScaleInValueY()) / getScaleInTiming(); + } else { + mScaleIncRateX = mScaleIncRateY = 1.0f; + } + + if (getScaleOutTiming() != 1.0f) { + mScaleDecRateX = (getScaleOutValueX() - 1.0f) / (1.0f - getScaleOutTiming()); + mScaleDecRateY = (getScaleOutValueY() - 1.0f) / (1.0f - getScaleOutTiming()); + } else { + mScaleDecRateX = mScaleDecRateY = 1.0f; + } } -#pragma pop