JPAMath OK (#401)

This commit is contained in:
hatal175 2023-08-07 18:31:06 +03:00 committed by GitHub
parent dc985026fa
commit bb546a286f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 137 additions and 380 deletions

View File

@ -1,54 +0,0 @@
lbl_80280984:
/* 80280984 C0 04 00 00 */ lfs f0, 0(r4)
/* 80280988 FC 01 00 40 */ fcmpo cr0, f1, f0
/* 8028098C 40 80 00 0C */ bge lbl_80280998
/* 80280990 C0 24 00 04 */ lfs f1, 4(r4)
/* 80280994 4E 80 00 20 */ blr
lbl_80280998:
/* 80280998 54 63 04 3E */ clrlwi r3, r3, 0x10
/* 8028099C 38 03 FF FF */ addi r0, r3, -1
/* 802809A0 54 00 20 36 */ slwi r0, r0, 4
/* 802809A4 7C 04 04 2E */ lfsx f0, r4, r0
/* 802809A8 FC 00 08 40 */ fcmpo cr0, f0, f1
/* 802809AC 4C 40 13 82 */ cror 2, 0, 2
/* 802809B0 40 82 00 40 */ bne lbl_802809F0
/* 802809B4 7C 64 02 14 */ add r3, r4, r0
/* 802809B8 C0 23 00 04 */ lfs f1, 4(r3)
/* 802809BC 4E 80 00 20 */ blr
/* 802809C0 48 00 00 30 */ b lbl_802809F0
lbl_802809C4:
/* 802809C4 7C 60 0E 70 */ srawi r0, r3, 1
/* 802809C8 7C A0 01 94 */ addze r5, r0
/* 802809CC 54 A0 20 36 */ slwi r0, r5, 4
/* 802809D0 7C 04 04 2E */ lfsx f0, r4, r0
/* 802809D4 FC 01 00 40 */ fcmpo cr0, f1, f0
/* 802809D8 4C 41 13 82 */ cror 2, 1, 2
/* 802809DC 40 82 00 10 */ bne lbl_802809EC
/* 802809E0 7C 84 02 14 */ add r4, r4, r0
/* 802809E4 7C 65 18 50 */ subf r3, r5, r3
/* 802809E8 48 00 00 08 */ b lbl_802809F0
lbl_802809EC:
/* 802809EC 7C A3 2B 78 */ mr r3, r5
lbl_802809F0:
/* 802809F0 2C 03 00 01 */ cmpwi r3, 1
/* 802809F4 41 81 FF D0 */ bgt lbl_802809C4
/* 802809F8 C1 24 00 18 */ lfs f9, 0x18(r4)
/* 802809FC C1 04 00 14 */ lfs f8, 0x14(r4)
/* 80280A00 C0 44 00 10 */ lfs f2, 0x10(r4)
/* 80280A04 C0 E4 00 0C */ lfs f7, 0xc(r4)
/* 80280A08 C0 C4 00 04 */ lfs f6, 4(r4)
/* 80280A0C C0 04 00 00 */ lfs f0, 0(r4)
/* 80280A10 EC A1 00 28 */ fsubs f5, f1, f0
/* 80280A14 EC 82 00 28 */ fsubs f4, f2, f0
/* 80280A18 EC 65 20 24 */ fdivs f3, f5, f4
/* 80280A1C EC 03 00 F2 */ fmuls f0, f3, f3
/* 80280A20 EC 23 18 2A */ fadds f1, f3, f3
/* 80280A24 EC 40 18 28 */ fsubs f2, f0, f3
/* 80280A28 EC 86 40 28 */ fsubs f4, f6, f8
/* 80280A2C EC 01 00 B8 */ fmsubs f0, f1, f2, f0
/* 80280A30 EC 27 38 BA */ fmadds f1, f7, f2, f7
/* 80280A34 EC 00 31 3A */ fmadds f0, f0, f4, f6
/* 80280A38 EC 29 08 BA */ fmadds f1, f9, f2, f1
/* 80280A3C EC 23 09 F8 */ fmsubs f1, f3, f7, f1
/* 80280A40 EC 25 00 7C */ fnmsubs f1, f5, f1, f0
/* 80280A44 4E 80 00 20 */ blr

View File

@ -1,44 +0,0 @@
lbl_80280734:
/* 80280734 3C E0 80 44 */ lis r7, sincosTable___5JMath@ha /* 0x80439A20@ha */
/* 80280738 38 E7 9A 20 */ addi r7, r7, sincosTable___5JMath@l /* 0x80439A20@l */
/* 8028073C 39 07 00 04 */ addi r8, r7, 4
/* 80280740 54 60 04 38 */ rlwinm r0, r3, 0, 0x10, 0x1c
/* 80280744 7C 28 04 2E */ lfsx f1, r8, r0
/* 80280748 54 83 04 38 */ rlwinm r3, r4, 0, 0x10, 0x1c
/* 8028074C 7C 48 1C 2E */ lfsx f2, r8, r3
/* 80280750 54 A4 04 38 */ rlwinm r4, r5, 0, 0x10, 0x1c
/* 80280754 7C 68 24 2E */ lfsx f3, r8, r4
/* 80280758 7C 87 04 2E */ lfsx f4, r7, r0
/* 8028075C 7C A7 1C 2E */ lfsx f5, r7, r3
/* 80280760 7C C7 24 2E */ lfsx f6, r7, r4
/* 80280764 EC 02 00 F2 */ fmuls f0, f2, f3
/* 80280768 D0 06 00 00 */ stfs f0, 0(r6)
/* 8028076C EC 02 01 B2 */ fmuls f0, f2, f6
/* 80280770 D0 06 00 10 */ stfs f0, 0x10(r6)
/* 80280774 FC 00 28 50 */ fneg f0, f5
/* 80280778 D0 06 00 20 */ stfs f0, 0x20(r6)
/* 8028077C EC 04 00 B2 */ fmuls f0, f4, f2
/* 80280780 D0 06 00 24 */ stfs f0, 0x24(r6)
/* 80280784 EC 01 00 B2 */ fmuls f0, f1, f2
/* 80280788 D0 06 00 28 */ stfs f0, 0x28(r6)
/* 8028078C EC 41 01 B2 */ fmuls f2, f1, f6
/* 80280790 EC E4 00 F2 */ fmuls f7, f4, f3
/* 80280794 EC 07 01 72 */ fmuls f0, f7, f5
/* 80280798 EC 00 10 28 */ fsubs f0, f0, f2
/* 8028079C D0 06 00 04 */ stfs f0, 4(r6)
/* 802807A0 EC 02 01 72 */ fmuls f0, f2, f5
/* 802807A4 EC 00 38 28 */ fsubs f0, f0, f7
/* 802807A8 D0 06 00 18 */ stfs f0, 0x18(r6)
/* 802807AC EC 44 01 B2 */ fmuls f2, f4, f6
/* 802807B0 EC 21 00 F2 */ fmuls f1, f1, f3
/* 802807B4 EC 01 01 72 */ fmuls f0, f1, f5
/* 802807B8 EC 02 00 2A */ fadds f0, f2, f0
/* 802807BC D0 06 00 08 */ stfs f0, 8(r6)
/* 802807C0 EC 02 01 72 */ fmuls f0, f2, f5
/* 802807C4 EC 01 00 2A */ fadds f0, f1, f0
/* 802807C8 D0 06 00 14 */ stfs f0, 0x14(r6)
/* 802807CC C0 02 B9 BC */ lfs f0, lit_2238(r2)
/* 802807D0 D0 06 00 2C */ stfs f0, 0x2c(r6)
/* 802807D4 D0 06 00 1C */ stfs f0, 0x1c(r6)
/* 802807D8 D0 06 00 0C */ stfs f0, 0xc(r6)
/* 802807DC 4E 80 00 20 */ blr

View File

@ -1,30 +0,0 @@
lbl_802806C0:
/* 802806C0 3C C0 80 44 */ lis r6, sincosTable___5JMath@ha /* 0x80439A20@ha */
/* 802806C4 38 C6 9A 20 */ addi r6, r6, sincosTable___5JMath@l /* 0x80439A20@l */
/* 802806C8 38 E6 00 04 */ addi r7, r6, 4
/* 802806CC 54 60 04 38 */ rlwinm r0, r3, 0, 0x10, 0x1c
/* 802806D0 7C 27 04 2E */ lfsx f1, r7, r0
/* 802806D4 54 83 04 38 */ rlwinm r3, r4, 0, 0x10, 0x1c
/* 802806D8 7C 47 1C 2E */ lfsx f2, r7, r3
/* 802806DC 7C 66 04 2E */ lfsx f3, r6, r0
/* 802806E0 7C 86 1C 2E */ lfsx f4, r6, r3
/* 802806E4 EC 01 00 B2 */ fmuls f0, f1, f2
/* 802806E8 D0 05 00 00 */ stfs f0, 0(r5)
/* 802806EC FC 00 20 50 */ fneg f0, f4
/* 802806F0 D0 05 00 04 */ stfs f0, 4(r5)
/* 802806F4 EC 03 00 B2 */ fmuls f0, f3, f2
/* 802806F8 D0 05 00 08 */ stfs f0, 8(r5)
/* 802806FC EC 01 01 32 */ fmuls f0, f1, f4
/* 80280700 D0 05 00 10 */ stfs f0, 0x10(r5)
/* 80280704 D0 45 00 14 */ stfs f2, 0x14(r5)
/* 80280708 EC 03 01 32 */ fmuls f0, f3, f4
/* 8028070C D0 05 00 18 */ stfs f0, 0x18(r5)
/* 80280710 FC 00 18 50 */ fneg f0, f3
/* 80280714 D0 05 00 20 */ stfs f0, 0x20(r5)
/* 80280718 D0 25 00 28 */ stfs f1, 0x28(r5)
/* 8028071C C0 02 B9 BC */ lfs f0, lit_2238(r2)
/* 80280720 D0 05 00 2C */ stfs f0, 0x2c(r5)
/* 80280724 D0 05 00 24 */ stfs f0, 0x24(r5)
/* 80280728 D0 05 00 1C */ stfs f0, 0x1c(r5)
/* 8028072C D0 05 00 0C */ stfs f0, 0xc(r5)
/* 80280730 4E 80 00 20 */ blr

View File

@ -1,81 +0,0 @@
lbl_80280588:
/* 80280588 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 8028058C 7C 08 02 A6 */ mflr r0
/* 80280590 90 01 00 34 */ stw r0, 0x34(r1)
/* 80280594 DB E1 00 20 */ stfd f31, 0x20(r1)
/* 80280598 F3 E1 00 28 */ psq_st f31, 40(r1), 0, 0 /* qr0 */
/* 8028059C 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 802805A0 93 C1 00 18 */ stw r30, 0x18(r1)
/* 802805A4 7C 7E 1B 78 */ mr r30, r3
/* 802805A8 7C 9F 23 78 */ mr r31, r4
/* 802805AC C0 03 00 00 */ lfs f0, 0(r3)
/* 802805B0 FC 20 00 50 */ fneg f1, f0
/* 802805B4 C0 03 00 04 */ lfs f0, 4(r3)
/* 802805B8 D0 01 00 08 */ stfs f0, 8(r1)
/* 802805BC D0 21 00 0C */ stfs f1, 0xc(r1)
/* 802805C0 C0 02 B9 BC */ lfs f0, lit_2238(r2)
/* 802805C4 D0 01 00 10 */ stfs f0, 0x10(r1)
/* 802805C8 38 61 00 08 */ addi r3, r1, 8
/* 802805CC 48 0C 6B 85 */ bl PSVECMag
/* 802805D0 C0 42 B9 C0 */ lfs f2, lit_2239(r2)
/* 802805D4 3C 60 80 45 */ lis r3, __float_epsilon@ha /* 0x80450AEC@ha */
/* 802805D8 C0 03 0A EC */ lfs f0, __float_epsilon@l(r3) /* 0x80450AEC@l */
/* 802805DC EC 02 00 32 */ fmuls f0, f2, f0
/* 802805E0 FC 01 00 40 */ fcmpo cr0, f1, f0
/* 802805E4 4C 40 13 82 */ cror 2, 0, 2
/* 802805E8 40 82 00 18 */ bne lbl_80280600
/* 802805EC C0 02 B9 BC */ lfs f0, lit_2238(r2)
/* 802805F0 D0 01 00 10 */ stfs f0, 0x10(r1)
/* 802805F4 D0 01 00 0C */ stfs f0, 0xc(r1)
/* 802805F8 D0 01 00 08 */ stfs f0, 8(r1)
/* 802805FC 48 00 00 24 */ b lbl_80280620
lbl_80280600:
/* 80280600 C0 02 B9 B8 */ lfs f0, lit_2193(r2)
/* 80280604 EF E0 08 24 */ fdivs f31, f0, f1
/* 80280608 E0 01 00 08 */ psq_l f0, 8(r1), 0, 0 /* qr0 */
/* 8028060C E0 41 80 10 */ psq_l f2, 16(r1), 1, 0 /* qr0 */
/* 80280610 10 00 07 D8 */ ps_muls0 f0, f0, f31
/* 80280614 F0 01 00 08 */ psq_st f0, 8(r1), 0, 0 /* qr0 */
/* 80280618 10 02 07 D8 */ ps_muls0 f0, f2, f31
/* 8028061C F0 01 80 10 */ psq_st f0, 16(r1), 1, 0 /* qr0 */
lbl_80280620:
/* 80280620 C0 01 00 08 */ lfs f0, 8(r1)
/* 80280624 EC A0 00 32 */ fmuls f5, f0, f0
/* 80280628 C0 61 00 0C */ lfs f3, 0xc(r1)
/* 8028062C EC C3 00 F2 */ fmuls f6, f3, f3
/* 80280630 EC E0 00 72 */ fmuls f7, f0, f1
/* 80280634 ED 03 00 72 */ fmuls f8, f3, f1
/* 80280638 C0 42 B9 B8 */ lfs f2, lit_2193(r2)
/* 8028063C C0 9E 00 08 */ lfs f4, 8(r30)
/* 80280640 EC 22 20 28 */ fsubs f1, f2, f4
/* 80280644 EC 00 00 F2 */ fmuls f0, f0, f3
/* 80280648 EC 61 00 32 */ fmuls f3, f1, f0
/* 8028064C EC 02 28 28 */ fsubs f0, f2, f5
/* 80280650 EC 04 00 32 */ fmuls f0, f4, f0
/* 80280654 EC 05 00 2A */ fadds f0, f5, f0
/* 80280658 D0 1F 00 00 */ stfs f0, 0(r31)
/* 8028065C D0 7F 00 04 */ stfs f3, 4(r31)
/* 80280660 FC 00 40 50 */ fneg f0, f8
/* 80280664 D0 1F 00 08 */ stfs f0, 8(r31)
/* 80280668 C0 22 B9 BC */ lfs f1, lit_2238(r2)
/* 8028066C D0 3F 00 0C */ stfs f1, 0xc(r31)
/* 80280670 D0 7F 00 10 */ stfs f3, 0x10(r31)
/* 80280674 EC 02 30 28 */ fsubs f0, f2, f6
/* 80280678 EC 04 00 32 */ fmuls f0, f4, f0
/* 8028067C EC 06 00 2A */ fadds f0, f6, f0
/* 80280680 D0 1F 00 14 */ stfs f0, 0x14(r31)
/* 80280684 D0 FF 00 18 */ stfs f7, 0x18(r31)
/* 80280688 D0 3F 00 1C */ stfs f1, 0x1c(r31)
/* 8028068C D1 1F 00 20 */ stfs f8, 0x20(r31)
/* 80280690 FC 00 38 50 */ fneg f0, f7
/* 80280694 D0 1F 00 24 */ stfs f0, 0x24(r31)
/* 80280698 D0 9F 00 28 */ stfs f4, 0x28(r31)
/* 8028069C D0 3F 00 2C */ stfs f1, 0x2c(r31)
/* 802806A0 E3 E1 00 28 */ psq_l f31, 40(r1), 0, 0 /* qr0 */
/* 802806A4 CB E1 00 20 */ lfd f31, 0x20(r1)
/* 802806A8 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 802806AC 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 802806B0 80 01 00 34 */ lwz r0, 0x34(r1)
/* 802806B4 7C 08 03 A6 */ mtlr r0
/* 802806B8 38 21 00 30 */ addi r1, r1, 0x30
/* 802806BC 4E 80 00 20 */ blr

View File

@ -1,11 +0,0 @@
lbl_802807E0:
/* 802807E0 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802807E4 7C 08 02 A6 */ mflr r0
/* 802807E8 90 01 00 24 */ stw r0, 0x24(r1)
/* 802807EC 7C A6 2B 78 */ mr r6, r5
/* 802807F0 38 A1 00 08 */ addi r5, r1, 8
/* 802807F4 48 00 00 15 */ bl func_80280808
/* 802807F8 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802807FC 7C 08 03 A6 */ mtlr r0
/* 80280800 38 21 00 20 */ addi r1, r1, 0x20
/* 80280804 4E 80 00 20 */ blr

View File

@ -1,99 +0,0 @@
lbl_80280808:
/* 80280808 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 8028080C 7C 08 02 A6 */ mflr r0
/* 80280810 90 01 00 34 */ stw r0, 0x34(r1)
/* 80280814 39 61 00 30 */ addi r11, r1, 0x30
/* 80280818 48 0E 19 C1 */ bl _savegpr_28
/* 8028081C 7C 7C 1B 78 */ mr r28, r3
/* 80280820 7C 9D 23 78 */ mr r29, r4
/* 80280824 7C BE 2B 78 */ mr r30, r5
/* 80280828 7C DF 33 78 */ mr r31, r6
/* 8028082C C0 43 00 20 */ lfs f2, 0x20(r3)
/* 80280830 C0 23 00 10 */ lfs f1, 0x10(r3)
/* 80280834 C0 03 00 00 */ lfs f0, 0(r3)
/* 80280838 D0 01 00 08 */ stfs f0, 8(r1)
/* 8028083C D0 21 00 0C */ stfs f1, 0xc(r1)
/* 80280840 D0 41 00 10 */ stfs f2, 0x10(r1)
/* 80280844 38 61 00 08 */ addi r3, r1, 8
/* 80280848 48 0C 69 09 */ bl PSVECMag
/* 8028084C D0 3E 00 00 */ stfs f1, 0(r30)
/* 80280850 C0 5C 00 24 */ lfs f2, 0x24(r28)
/* 80280854 C0 3C 00 14 */ lfs f1, 0x14(r28)
/* 80280858 C0 1C 00 04 */ lfs f0, 4(r28)
/* 8028085C D0 01 00 08 */ stfs f0, 8(r1)
/* 80280860 D0 21 00 0C */ stfs f1, 0xc(r1)
/* 80280864 D0 41 00 10 */ stfs f2, 0x10(r1)
/* 80280868 38 61 00 08 */ addi r3, r1, 8
/* 8028086C 48 0C 68 E5 */ bl PSVECMag
/* 80280870 D0 3E 00 04 */ stfs f1, 4(r30)
/* 80280874 C0 5C 00 28 */ lfs f2, 0x28(r28)
/* 80280878 C0 3C 00 18 */ lfs f1, 0x18(r28)
/* 8028087C C0 1C 00 08 */ lfs f0, 8(r28)
/* 80280880 D0 01 00 08 */ stfs f0, 8(r1)
/* 80280884 D0 21 00 0C */ stfs f1, 0xc(r1)
/* 80280888 D0 41 00 10 */ stfs f2, 0x10(r1)
/* 8028088C 38 61 00 08 */ addi r3, r1, 8
/* 80280890 48 0C 68 C1 */ bl PSVECMag
/* 80280894 D0 3E 00 08 */ stfs f1, 8(r30)
/* 80280898 7F A3 EB 78 */ mr r3, r29
/* 8028089C 48 0C 5B E9 */ bl PSMTXIdentity
/* 802808A0 C0 02 B9 BC */ lfs f0, lit_2238(r2)
/* 802808A4 C0 3E 00 00 */ lfs f1, 0(r30)
/* 802808A8 FC 00 08 00 */ fcmpu cr0, f0, f1
/* 802808AC 41 82 00 30 */ beq lbl_802808DC
/* 802808B0 C0 02 B9 B8 */ lfs f0, lit_2193(r2)
/* 802808B4 EC 20 08 24 */ fdivs f1, f0, f1
/* 802808B8 C0 1C 00 00 */ lfs f0, 0(r28)
/* 802808BC EC 00 00 72 */ fmuls f0, f0, f1
/* 802808C0 D0 1D 00 00 */ stfs f0, 0(r29)
/* 802808C4 C0 1C 00 10 */ lfs f0, 0x10(r28)
/* 802808C8 EC 00 00 72 */ fmuls f0, f0, f1
/* 802808CC D0 1D 00 10 */ stfs f0, 0x10(r29)
/* 802808D0 C0 1C 00 20 */ lfs f0, 0x20(r28)
/* 802808D4 EC 00 00 72 */ fmuls f0, f0, f1
/* 802808D8 D0 1D 00 20 */ stfs f0, 0x20(r29)
lbl_802808DC:
/* 802808DC C0 02 B9 BC */ lfs f0, lit_2238(r2)
/* 802808E0 C0 3E 00 04 */ lfs f1, 4(r30)
/* 802808E4 FC 00 08 00 */ fcmpu cr0, f0, f1
/* 802808E8 41 82 00 30 */ beq lbl_80280918
/* 802808EC C0 02 B9 B8 */ lfs f0, lit_2193(r2)
/* 802808F0 EC 20 08 24 */ fdivs f1, f0, f1
/* 802808F4 C0 1C 00 04 */ lfs f0, 4(r28)
/* 802808F8 EC 00 00 72 */ fmuls f0, f0, f1
/* 802808FC D0 1D 00 04 */ stfs f0, 4(r29)
/* 80280900 C0 1C 00 14 */ lfs f0, 0x14(r28)
/* 80280904 EC 00 00 72 */ fmuls f0, f0, f1
/* 80280908 D0 1D 00 14 */ stfs f0, 0x14(r29)
/* 8028090C C0 1C 00 24 */ lfs f0, 0x24(r28)
/* 80280910 EC 00 00 72 */ fmuls f0, f0, f1
/* 80280914 D0 1D 00 24 */ stfs f0, 0x24(r29)
lbl_80280918:
/* 80280918 C0 02 B9 BC */ lfs f0, lit_2238(r2)
/* 8028091C C0 3E 00 08 */ lfs f1, 8(r30)
/* 80280920 FC 00 08 00 */ fcmpu cr0, f0, f1
/* 80280924 41 82 00 30 */ beq lbl_80280954
/* 80280928 C0 02 B9 B8 */ lfs f0, lit_2193(r2)
/* 8028092C EC 20 08 24 */ fdivs f1, f0, f1
/* 80280930 C0 1C 00 08 */ lfs f0, 8(r28)
/* 80280934 EC 00 00 72 */ fmuls f0, f0, f1
/* 80280938 D0 1D 00 08 */ stfs f0, 8(r29)
/* 8028093C C0 1C 00 18 */ lfs f0, 0x18(r28)
/* 80280940 EC 00 00 72 */ fmuls f0, f0, f1
/* 80280944 D0 1D 00 18 */ stfs f0, 0x18(r29)
/* 80280948 C0 1C 00 28 */ lfs f0, 0x28(r28)
/* 8028094C EC 00 00 72 */ fmuls f0, f0, f1
/* 80280950 D0 1D 00 28 */ stfs f0, 0x28(r29)
lbl_80280954:
/* 80280954 C0 5C 00 2C */ lfs f2, 0x2c(r28)
/* 80280958 C0 3C 00 1C */ lfs f1, 0x1c(r28)
/* 8028095C C0 1C 00 0C */ lfs f0, 0xc(r28)
/* 80280960 D0 1F 00 00 */ stfs f0, 0(r31)
/* 80280964 D0 3F 00 04 */ stfs f1, 4(r31)
/* 80280968 D0 5F 00 08 */ stfs f2, 8(r31)
/* 8028096C 39 61 00 30 */ addi r11, r1, 0x30
/* 80280970 48 0E 18 B5 */ bl _restgpr_28
/* 80280974 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80280978 7C 08 03 A6 */ mtlr r0
/* 8028097C 38 21 00 30 */ addi r1, r1, 0x30
/* 80280980 4E 80 00 20 */ blr

View File

@ -155,6 +155,10 @@ struct TVec3<f32> {
scale(norm);
}
f32 length() {
return PSVECMag((Vec*)this);
}
void scale(register f32 sc) {
register f32 z;
register f32 x_y;

View File

@ -4,9 +4,13 @@
#include "dolphin/mtx/mtx.h"
#include "JSystem/JGeometry.h"
void JPAGetDirMtx(JGeometry::TVec3<f32> const& param_0, f32 (*param_1)[4]);
void JPAGetYZRotateMtx(s16 angleY, s16 angleZ, f32 (*param_2)[4]);
void JPAGetXYZRotateMtx(s16 x, s16 y, s16 z, Mtx dst);
void JPASetRMtxTVecfromMtx(f32 const (*param_0)[4], f32 (*param_1)[4],
JGeometry::TVec3<f32>* param_2);
void JPACalcKeyAnmValue(f32 param_0, u16 param_1, f32 const* param_2);
f32 JPACalcKeyAnmValue(f32 param_0, u16 param_1, f32 const* param_2);
void JPASetRMtxSTVecfromMtx(f32 const (*param_0)[4], f32 (*param_1)[4],
JGeometry::TVec3<f32>* param_2, JGeometry::TVec3<f32>* param_3);
#endif /* JPAMATH_H */

View File

@ -4,7 +4,8 @@
//
#include "JSystem/JParticle/JPAMath.h"
#include "dol2asm.h"
#include "JSystem/JMath/JMATrigonometric.h"
#include "JSystem/J2DGraph/J2DAnimation.h"
#include "dolphin/types.h"
//
@ -35,85 +36,152 @@ extern "C" u8 sincosTable___5JMath[65536];
//
/* ############################################################################################## */
/* 804553B8-804553BC 0039B8 0004+00 2/2 0/0 0/0 .sdata2 @2193 */
SECTION_SDATA2 static f32 lit_2193 = 1.0f;
/* 804553BC-804553C0 0039BC 0004+00 4/4 0/0 0/0 .sdata2 @2238 */
SECTION_SDATA2 static u8 lit_2238[4] = {
0x00,
0x00,
0x00,
0x00,
};
/* 804553C0-804553C8 0039C0 0004+04 1/1 0/0 0/0 .sdata2 @2239 */
SECTION_SDATA2 static f32 lit_2239[1 + 1 /* padding */] = {
32.0f,
/* padding */
0.0f,
};
// Probably some local function needed to change float literal order
static f32 floatDummyFunc() {
return 1.0f;
}
/* 80280588-802806C0 27AEC8 0138+00 0/0 1/1 0/0 .text JPAGetDirMtx__FRCQ29JGeometry8TVec3<f>PA4_f
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JPAGetDirMtx(JGeometry::TVec3<f32> const& param_0, f32 (*param_1)[4]) {
nofralloc
#include "asm/JSystem/JParticle/JPAMath/func_80280588.s"
void JPAGetDirMtx(JGeometry::TVec3<f32> const& param_0, f32 (*param_1)[4]) {
JGeometry::TVec3<float> local_78;
f32 minusx = -param_0.x;
local_78.x = param_0.y;
local_78.y = minusx;
local_78.z = 0.0f;
f32 len = local_78.length();
if (len <= 32.0f * FLT_EPSILON) {
local_78.zero();
} else {
local_78.scale(1.0f / len);
}
f32 xsquared = local_78.x * local_78.x;
f32 ysquared = local_78.y * local_78.y;
f32 xlen = local_78.x * len;
f32 ylen = local_78.y * len;
f32 fVar5 = (1.0f - param_0.z) * (local_78.x * local_78.y);
param_1[0][0] = xsquared + param_0.z * (1.0f - xsquared);
param_1[0][1] = fVar5;
param_1[0][2] = -ylen;
param_1[0][3] = 0.0f;
param_1[1][0] = fVar5;
param_1[1][1] = ysquared + param_0.z * (1.0f - ysquared);
param_1[1][2] = xlen;
param_1[1][3] = 0.0f;
param_1[2][0] = ylen;
param_1[2][1] = -xlen;
param_1[2][2] = param_0.z;
param_1[2][3] = 0.0f;
}
#pragma pop
/* 802806C0-80280734 27B000 0074+00 0/0 1/1 0/0 .text JPAGetYZRotateMtx__FssPA4_f */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JPAGetYZRotateMtx(s16 param_0, s16 param_1, f32 (*param_2)[4]) {
nofralloc
#include "asm/JSystem/JParticle/JPAMath/JPAGetYZRotateMtx__FssPA4_f.s"
void JPAGetYZRotateMtx(s16 angleY, s16 angleZ, f32 (*param_2)[4]) {
f32 cosy = JMASCos(angleY);
f32 cosz = JMASCos(angleZ);
f32 siny = JMASSin(angleY);
f32 sinz = JMASSin(angleZ);
param_2[0][0] = (cosy * cosz);
param_2[0][1] = -sinz;
param_2[0][2] = (siny * cosz);
param_2[1][0] = (cosy * sinz);
param_2[1][1] = cosz;
param_2[1][2] = (siny * sinz);
param_2[2][0] = -siny;
param_2[2][2] = cosy;
param_2[2][3] = 0.0f;
param_2[2][1] = 0.0f;
param_2[1][3] = 0.0f;
param_2[0][3] = 0.0f;
}
#pragma pop
/* 80280734-802807E0 27B074 00AC+00 0/0 6/6 11/11 .text JPAGetXYZRotateMtx__FsssPA4_f */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JPAGetXYZRotateMtx(s16 x, s16 y, s16 z, Mtx mtx) {
nofralloc
#include "asm/JSystem/JParticle/JPAMath/JPAGetXYZRotateMtx__FsssPA4_f.s"
void JPAGetXYZRotateMtx(s16 x, s16 y, s16 z, Mtx mtx) {
f32 cosx = JMASCos(x);
f32 cosy = JMASCos(y);
f32 cosz = JMASCos(z);
f32 sinx = JMASSin(x);
f32 siny = JMASSin(y);
f32 sinz = JMASSin(z);
mtx[0][0] = cosy * cosz;
mtx[1][0] = cosy * sinz;
mtx[2][0] = -siny;
mtx[2][1] = sinx * cosy;
mtx[2][2] = cosx * cosy;
f32 cosxsinz = cosx * sinz;
f32 sinxcosz = sinx * cosz;
mtx[0][1] = sinxcosz * siny - cosxsinz;
mtx[1][2] = cosxsinz * siny - sinxcosz;
f32 sinxsinz = sinx * sinz;
f32 cosxcosz = cosx * cosz;
mtx[0][2] = sinxsinz + cosxcosz * siny;
mtx[1][1] = cosxcosz + sinxsinz * siny;
mtx[2][3] = 0.0f;
mtx[1][3] = 0.0f;
mtx[0][3] = 0.0f;
}
#pragma pop
/* 802807E0-80280808 27B120 0028+00 0/0 11/11 71/71 .text
* JPASetRMtxTVecfromMtx__FPA4_CfPA4_fPQ29JGeometry8TVec3<f> */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JPASetRMtxTVecfromMtx(f32 const (*param_0)[4], f32 (*param_1)[4],
void JPASetRMtxTVecfromMtx(f32 const (*param_0)[4], f32 (*param_1)[4],
JGeometry::TVec3<f32>* param_2) {
nofralloc
#include "asm/JSystem/JParticle/JPAMath/func_802807E0.s"
JGeometry::TVec3<f32> dummy;
JPASetRMtxSTVecfromMtx(param_0, param_1, &dummy, param_2);
}
#pragma pop
/* 80280808-80280984 27B148 017C+00 1/1 1/1 53/53 .text
* JPASetRMtxSTVecfromMtx__FPA4_CfPA4_fPQ29JGeometry8TVec3<f>PQ29JGeometry8TVec3<f> */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JPASetRMtxSTVecfromMtx(f32 const (*param_0)[4], f32 (*param_1)[4],
void JPASetRMtxSTVecfromMtx(f32 const (*param_0)[4], f32 (*param_1)[4],
JGeometry::TVec3<f32>* param_2, JGeometry::TVec3<f32>* param_3) {
nofralloc
#include "asm/JSystem/JParticle/JPAMath/func_80280808.s"
JGeometry::TVec3<float> aTStack_54;
aTStack_54.set(param_0[0][0], param_0[1][0], param_0[2][0]);
param_2->x = aTStack_54.length();
aTStack_54.set(param_0[0][1], param_0[1][1], param_0[2][1]);
param_2->y = aTStack_54.length();
aTStack_54.set(param_0[0][2], param_0[1][2], param_0[2][2]);
param_2->z = aTStack_54.length();
PSMTXIdentity(param_1);
if (param_2->x != 0.0f) {
f32 fVar5 = 1.0f / param_2->x;
param_1[0][0] = param_0[0][0] * fVar5;
param_1[1][0] = param_0[1][0] * fVar5;
param_1[2][0] = param_0[2][0] * fVar5;
}
if (param_2->y != 0.0f) {
f32 fVar5 = 1.0f / param_2->y;
param_1[0][1] = param_0[0][1] * fVar5;
param_1[1][1] = param_0[1][1] * fVar5;
param_1[2][1] = param_0[2][1] * fVar5;
}
if (param_2->z != 0.0f) {
f32 fVar5 = 1.0f / param_2->z;
param_1[0][2] = param_0[0][2] * fVar5;
param_1[1][2] = param_0[1][2] * fVar5;
param_1[2][2] = param_0[2][2] * fVar5;
}
param_3->set(param_0[0][3], param_0[1][3], param_0[2][3]);
}
#pragma pop
/* 80280984-80280A48 27B2C4 00C4+00 0/0 2/1 0/0 .text JPACalcKeyAnmValue__FfUsPCf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JPACalcKeyAnmValue(f32 param_0, u16 param_1, f32 const* param_2) {
nofralloc
#include "asm/JSystem/JParticle/JPAMath/JPACalcKeyAnmValue__FfUsPCf.s"
f32 JPACalcKeyAnmValue(f32 param_0, u16 param_1, f32 const* param_2) {
if (param_0 < param_2[0]) {
return param_2[1];
}
int ind = param_1 - 1;
if (param_2[ind * 4] <= param_0) {
return param_2[ind * 4 + 1];
}
int x = param_1;
while (x > 1) {
u32 uVar3 = x / 2;
if (param_0 >= param_2[uVar3 * 4]) {
param_2 += uVar3 * 4;
x -= uVar3;
} else {
x = uVar3;
}
}
return JMAHermiteInterpolation(param_0, param_2[0], param_2[1],
param_2[3], param_2[4],
param_2[5], param_2[6]);
}
#pragma pop