d_spline_path ok (#2176)

This commit is contained in:
hatal175 2024-07-13 03:31:33 +03:00 committed by GitHub
parent 6b8fda60f3
commit 89e14f9f97
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 110 additions and 475 deletions

View File

@ -1,46 +0,0 @@
lbl_80097A6C:
/* 80097A6C 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80097A70 C0 E4 00 1C */ lfs f7, 0x1c(r4)
/* 80097A74 80 04 00 28 */ lwz r0, 0x28(r4)
/* 80097A78 1C E0 00 0C */ mulli r7, r0, 0xc
/* 80097A7C 7C 05 3C 2E */ lfsx f0, r5, r7
/* 80097A80 EC 47 00 32 */ fmuls f2, f7, f0
/* 80097A84 C0 C4 00 14 */ lfs f6, 0x14(r4)
/* 80097A88 80 04 00 20 */ lwz r0, 0x20(r4)
/* 80097A8C 1C C0 00 0C */ mulli r6, r0, 0xc
/* 80097A90 7C 05 34 2E */ lfsx f0, r5, r6
/* 80097A94 EC 26 00 32 */ fmuls f1, f6, f0
/* 80097A98 C0 A4 00 18 */ lfs f5, 0x18(r4)
/* 80097A9C 80 04 00 24 */ lwz r0, 0x24(r4)
/* 80097AA0 1C 00 00 0C */ mulli r0, r0, 0xc
/* 80097AA4 7C 05 04 2E */ lfsx f0, r5, r0
/* 80097AA8 EC 05 00 32 */ fmuls f0, f5, f0
/* 80097AAC EC 01 00 2A */ fadds f0, f1, f0
/* 80097AB0 EC 82 00 2A */ fadds f4, f2, f0
/* 80097AB4 D0 81 00 08 */ stfs f4, 8(r1)
/* 80097AB8 7C E5 3A 14 */ add r7, r5, r7
/* 80097ABC C0 07 00 04 */ lfs f0, 4(r7)
/* 80097AC0 EC 47 00 32 */ fmuls f2, f7, f0
/* 80097AC4 7C C5 32 14 */ add r6, r5, r6
/* 80097AC8 C0 06 00 04 */ lfs f0, 4(r6)
/* 80097ACC EC 26 00 32 */ fmuls f1, f6, f0
/* 80097AD0 7C 85 02 14 */ add r4, r5, r0
/* 80097AD4 C0 04 00 04 */ lfs f0, 4(r4)
/* 80097AD8 EC 05 00 32 */ fmuls f0, f5, f0
/* 80097ADC EC 01 00 2A */ fadds f0, f1, f0
/* 80097AE0 EC 62 00 2A */ fadds f3, f2, f0
/* 80097AE4 D0 61 00 0C */ stfs f3, 0xc(r1)
/* 80097AE8 C0 07 00 08 */ lfs f0, 8(r7)
/* 80097AEC EC 47 00 32 */ fmuls f2, f7, f0
/* 80097AF0 C0 06 00 08 */ lfs f0, 8(r6)
/* 80097AF4 EC 26 00 32 */ fmuls f1, f6, f0
/* 80097AF8 C0 04 00 08 */ lfs f0, 8(r4)
/* 80097AFC EC 05 00 32 */ fmuls f0, f5, f0
/* 80097B00 EC 01 00 2A */ fadds f0, f1, f0
/* 80097B04 EC 02 00 2A */ fadds f0, f2, f0
/* 80097B08 D0 01 00 10 */ stfs f0, 0x10(r1)
/* 80097B0C D0 83 00 00 */ stfs f4, 0(r3)
/* 80097B10 D0 63 00 04 */ stfs f3, 4(r3)
/* 80097B14 D0 03 00 08 */ stfs f0, 8(r3)
/* 80097B18 38 21 00 20 */ addi r1, r1, 0x20
/* 80097B1C 4E 80 00 20 */ blr

View File

@ -1,39 +0,0 @@
lbl_80097878:
/* 80097878 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8009787C 38 00 00 00 */ li r0, 0
/* 80097880 90 03 00 00 */ stw r0, 0(r3)
/* 80097884 90 83 00 04 */ stw r4, 4(r3)
/* 80097888 38 C0 00 01 */ li r6, 1
/* 8009788C 90 C3 00 08 */ stw r6, 8(r3)
/* 80097890 90 A3 00 0C */ stw r5, 0xc(r3)
/* 80097894 80 83 00 0C */ lwz r4, 0xc(r3)
/* 80097898 2C 04 00 00 */ cmpwi r4, 0
/* 8009789C 41 82 00 08 */ beq lbl_800978A4
/* 800978A0 38 C4 FF FF */ addi r6, r4, -1
lbl_800978A4:
/* 800978A4 80 83 00 04 */ lwz r4, 4(r3)
/* 800978A8 2C 04 00 02 */ cmpwi r4, 2
/* 800978AC 40 80 00 0C */ bge lbl_800978B8
/* 800978B0 38 00 00 01 */ li r0, 1
/* 800978B4 48 00 00 08 */ b lbl_800978BC
lbl_800978B8:
/* 800978B8 38 04 FF FE */ addi r0, r4, -2
lbl_800978BC:
/* 800978BC C8 42 91 C8 */ lfd f2, lit_3632(r2)
/* 800978C0 6C 00 80 00 */ xoris r0, r0, 0x8000
/* 800978C4 90 01 00 0C */ stw r0, 0xc(r1)
/* 800978C8 3C 80 43 30 */ lis r4, 0x4330
/* 800978CC 90 81 00 08 */ stw r4, 8(r1)
/* 800978D0 C8 01 00 08 */ lfd f0, 8(r1)
/* 800978D4 EC 20 10 28 */ fsubs f1, f0, f2
/* 800978D8 6C C0 80 00 */ xoris r0, r6, 0x8000
/* 800978DC 90 01 00 14 */ stw r0, 0x14(r1)
/* 800978E0 90 81 00 10 */ stw r4, 0x10(r1)
/* 800978E4 C8 01 00 10 */ lfd f0, 0x10(r1)
/* 800978E8 EC 00 10 28 */ fsubs f0, f0, f2
/* 800978EC EC 01 00 24 */ fdivs f0, f1, f0
/* 800978F0 D0 03 00 10 */ stfs f0, 0x10(r3)
/* 800978F4 38 00 00 00 */ li r0, 0
/* 800978F8 90 03 00 2C */ stw r0, 0x2c(r3)
/* 800978FC 38 21 00 20 */ addi r1, r1, 0x20
/* 80097900 4E 80 00 20 */ blr

View File

@ -1,67 +0,0 @@
lbl_80097B68:
/* 80097B68 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80097B6C 80 A3 00 04 */ lwz r5, 4(r3)
/* 80097B70 2C 05 00 02 */ cmpwi r5, 2
/* 80097B74 40 80 00 0C */ bge lbl_80097B80
/* 80097B78 38 00 00 01 */ li r0, 1
/* 80097B7C 48 00 00 08 */ b lbl_80097B84
lbl_80097B80:
/* 80097B80 38 05 FF FE */ addi r0, r5, -2
lbl_80097B84:
/* 80097B84 C8 42 91 C8 */ lfd f2, lit_3632(r2)
/* 80097B88 6C 00 80 00 */ xoris r0, r0, 0x8000
/* 80097B8C 90 01 00 0C */ stw r0, 0xc(r1)
/* 80097B90 3C A0 43 30 */ lis r5, 0x4330
/* 80097B94 90 A1 00 08 */ stw r5, 8(r1)
/* 80097B98 C8 01 00 08 */ lfd f0, 8(r1)
/* 80097B9C EC 00 10 28 */ fsubs f0, f0, f2
/* 80097BA0 EC A1 00 32 */ fmuls f5, f1, f0
/* 80097BA4 FC 00 28 1E */ fctiwz f0, f5
/* 80097BA8 D8 01 00 10 */ stfd f0, 0x10(r1)
/* 80097BAC 80 E1 00 14 */ lwz r7, 0x14(r1)
/* 80097BB0 6C E0 80 00 */ xoris r0, r7, 0x8000
/* 80097BB4 90 01 00 1C */ stw r0, 0x1c(r1)
/* 80097BB8 90 A1 00 18 */ stw r5, 0x18(r1)
/* 80097BBC C8 01 00 18 */ lfd f0, 0x18(r1)
/* 80097BC0 EC 00 10 28 */ fsubs f0, f0, f2
/* 80097BC4 EC A5 00 28 */ fsubs f5, f5, f0
/* 80097BC8 80 63 00 04 */ lwz r3, 4(r3)
/* 80097BCC 38 C3 FF FF */ addi r6, r3, -1
/* 80097BD0 7C 07 30 00 */ cmpw r7, r6
/* 80097BD4 7C C5 33 78 */ mr r5, r6
/* 80097BD8 40 80 00 08 */ bge lbl_80097BE0
/* 80097BDC 7C E5 3B 78 */ mr r5, r7
lbl_80097BE0:
/* 80097BE0 38 07 00 01 */ addi r0, r7, 1
/* 80097BE4 7C 00 30 00 */ cmpw r0, r6
/* 80097BE8 7C C3 33 78 */ mr r3, r6
/* 80097BEC 40 80 00 08 */ bge lbl_80097BF4
/* 80097BF0 7C 03 03 78 */ mr r3, r0
lbl_80097BF4:
/* 80097BF4 38 07 00 02 */ addi r0, r7, 2
/* 80097BF8 7C 00 30 00 */ cmpw r0, r6
/* 80097BFC 40 80 00 08 */ bge lbl_80097C04
/* 80097C00 7C 06 03 78 */ mr r6, r0
lbl_80097C04:
/* 80097C04 C0 02 91 D0 */ lfs f0, lit_3684(r2)
/* 80097C08 EC C0 28 28 */ fsubs f6, f0, f5
/* 80097C0C C0 82 91 D4 */ lfs f4, lit_3685(r2)
/* 80097C10 EC 05 01 72 */ fmuls f0, f5, f5
/* 80097C14 EC 24 00 32 */ fmuls f1, f4, f0
/* 80097C18 54 C0 10 3A */ slwi r0, r6, 2
/* 80097C1C 7C 04 04 2E */ lfsx f0, r4, r0
/* 80097C20 EC 61 00 32 */ fmuls f3, f1, f0
/* 80097C24 EC 06 01 B2 */ fmuls f0, f6, f6
/* 80097C28 EC 24 00 32 */ fmuls f1, f4, f0
/* 80097C2C 54 A0 10 3A */ slwi r0, r5, 2
/* 80097C30 7C 04 04 2E */ lfsx f0, r4, r0
/* 80097C34 EC 41 00 32 */ fmuls f2, f1, f0
/* 80097C38 EC 05 01 B2 */ fmuls f0, f5, f6
/* 80097C3C EC 24 00 2A */ fadds f1, f4, f0
/* 80097C40 54 60 10 3A */ slwi r0, r3, 2
/* 80097C44 7C 04 04 2E */ lfsx f0, r4, r0
/* 80097C48 EC 01 00 32 */ fmuls f0, f1, f0
/* 80097C4C EC 02 00 2A */ fadds f0, f2, f0
/* 80097C50 EC 23 00 2A */ fadds f1, f3, f0
/* 80097C54 38 21 00 20 */ addi r1, r1, 0x20
/* 80097C58 4E 80 00 20 */ blr

View File

@ -1,101 +0,0 @@
lbl_80097904:
/* 80097904 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80097908 80 83 00 00 */ lwz r4, 0(r3)
/* 8009790C 80 03 00 0C */ lwz r0, 0xc(r3)
/* 80097910 7C 04 00 00 */ cmpw r4, r0
/* 80097914 41 80 00 0C */ blt lbl_80097920
/* 80097918 38 00 00 00 */ li r0, 0
/* 8009791C 90 03 00 08 */ stw r0, 8(r3)
lbl_80097920:
/* 80097920 80 03 00 08 */ lwz r0, 8(r3)
/* 80097924 2C 00 00 01 */ cmpwi r0, 1
/* 80097928 40 82 00 0C */ bne lbl_80097934
/* 8009792C 38 00 00 02 */ li r0, 2
/* 80097930 90 03 00 08 */ stw r0, 8(r3)
lbl_80097934:
/* 80097934 80 03 00 08 */ lwz r0, 8(r3)
/* 80097938 2C 00 00 02 */ cmpwi r0, 2
/* 8009793C 40 82 01 08 */ bne lbl_80097A44
/* 80097940 80 03 00 00 */ lwz r0, 0(r3)
/* 80097944 80 83 00 0C */ lwz r4, 0xc(r3)
/* 80097948 38 84 FF FF */ addi r4, r4, -1
/* 8009794C 7C 00 20 00 */ cmpw r0, r4
/* 80097950 41 81 00 EC */ bgt lbl_80097A3C
/* 80097954 C0 43 00 10 */ lfs f2, 0x10(r3)
/* 80097958 C8 22 91 C8 */ lfd f1, lit_3632(r2)
/* 8009795C 6C 00 80 00 */ xoris r0, r0, 0x8000
/* 80097960 90 01 00 0C */ stw r0, 0xc(r1)
/* 80097964 3C 80 43 30 */ lis r4, 0x4330
/* 80097968 90 81 00 08 */ stw r4, 8(r1)
/* 8009796C C8 01 00 08 */ lfd f0, 8(r1)
/* 80097970 EC 00 08 28 */ fsubs f0, f0, f1
/* 80097974 EC 62 00 32 */ fmuls f3, f2, f0
/* 80097978 FC 00 18 1E */ fctiwz f0, f3
/* 8009797C D8 01 00 10 */ stfd f0, 0x10(r1)
/* 80097980 80 A1 00 14 */ lwz r5, 0x14(r1)
/* 80097984 6C A0 80 00 */ xoris r0, r5, 0x8000
/* 80097988 90 01 00 1C */ stw r0, 0x1c(r1)
/* 8009798C 90 81 00 18 */ stw r4, 0x18(r1)
/* 80097990 C8 01 00 18 */ lfd f0, 0x18(r1)
/* 80097994 EC 00 08 28 */ fsubs f0, f0, f1
/* 80097998 EC 63 00 28 */ fsubs f3, f3, f0
/* 8009799C 40 82 00 10 */ bne lbl_800979AC
/* 800979A0 38 00 00 03 */ li r0, 3
/* 800979A4 90 03 00 08 */ stw r0, 8(r3)
/* 800979A8 C0 62 91 D0 */ lfs f3, lit_3684(r2)
lbl_800979AC:
/* 800979AC 80 83 00 04 */ lwz r4, 4(r3)
/* 800979B0 38 04 FF FF */ addi r0, r4, -1
/* 800979B4 7C 05 00 00 */ cmpw r5, r0
/* 800979B8 40 80 00 08 */ bge lbl_800979C0
/* 800979BC 7C A0 2B 78 */ mr r0, r5
lbl_800979C0:
/* 800979C0 90 03 00 20 */ stw r0, 0x20(r3)
/* 800979C4 38 05 00 01 */ addi r0, r5, 1
/* 800979C8 80 83 00 04 */ lwz r4, 4(r3)
/* 800979CC 38 84 FF FF */ addi r4, r4, -1
/* 800979D0 7C 00 20 00 */ cmpw r0, r4
/* 800979D4 40 80 00 08 */ bge lbl_800979DC
/* 800979D8 7C 04 03 78 */ mr r4, r0
lbl_800979DC:
/* 800979DC 90 83 00 24 */ stw r4, 0x24(r3)
/* 800979E0 38 05 00 02 */ addi r0, r5, 2
/* 800979E4 80 83 00 04 */ lwz r4, 4(r3)
/* 800979E8 38 84 FF FF */ addi r4, r4, -1
/* 800979EC 7C 00 20 00 */ cmpw r0, r4
/* 800979F0 40 80 00 08 */ bge lbl_800979F8
/* 800979F4 7C 04 03 78 */ mr r4, r0
lbl_800979F8:
/* 800979F8 90 83 00 28 */ stw r4, 0x28(r3)
/* 800979FC C0 02 91 D0 */ lfs f0, lit_3684(r2)
/* 80097A00 EC 40 18 28 */ fsubs f2, f0, f3
/* 80097A04 C0 22 91 D4 */ lfs f1, lit_3685(r2)
/* 80097A08 EC 02 00 B2 */ fmuls f0, f2, f2
/* 80097A0C EC 01 00 32 */ fmuls f0, f1, f0
/* 80097A10 D0 03 00 14 */ stfs f0, 0x14(r3)
/* 80097A14 EC 03 00 B2 */ fmuls f0, f3, f2
/* 80097A18 EC 01 00 2A */ fadds f0, f1, f0
/* 80097A1C D0 03 00 18 */ stfs f0, 0x18(r3)
/* 80097A20 EC 03 00 F2 */ fmuls f0, f3, f3
/* 80097A24 EC 01 00 32 */ fmuls f0, f1, f0
/* 80097A28 D0 03 00 1C */ stfs f0, 0x1c(r3)
/* 80097A2C 80 83 00 00 */ lwz r4, 0(r3)
/* 80097A30 38 04 00 01 */ addi r0, r4, 1
/* 80097A34 90 03 00 00 */ stw r0, 0(r3)
/* 80097A38 48 00 00 0C */ b lbl_80097A44
lbl_80097A3C:
/* 80097A3C 38 00 00 00 */ li r0, 0
/* 80097A40 90 03 00 08 */ stw r0, 8(r3)
lbl_80097A44:
/* 80097A44 38 00 00 00 */ li r0, 0
/* 80097A48 80 63 00 08 */ lwz r3, 8(r3)
/* 80097A4C 2C 03 00 02 */ cmpwi r3, 2
/* 80097A50 41 82 00 0C */ beq lbl_80097A5C
/* 80097A54 2C 03 00 03 */ cmpwi r3, 3
/* 80097A58 40 82 00 08 */ bne lbl_80097A60
lbl_80097A5C:
/* 80097A5C 38 00 00 01 */ li r0, 1
lbl_80097A60:
/* 80097A60 7C 03 03 78 */ mr r3, r0
/* 80097A64 38 21 00 20 */ addi r1, r1, 0x20
/* 80097A68 4E 80 00 20 */ blr

View File

@ -1,141 +0,0 @@
lbl_80097C74:
/* 80097C74 94 21 FF C0 */ stwu r1, -0x40(r1)
/* 80097C78 7C 08 02 A6 */ mflr r0
/* 80097C7C 90 01 00 44 */ stw r0, 0x44(r1)
/* 80097C80 93 E1 00 3C */ stw r31, 0x3c(r1)
/* 80097C84 7C 7F 1B 78 */ mr r31, r3
/* 80097C88 80 84 00 08 */ lwz r4, 8(r4)
/* 80097C8C A0 A4 00 00 */ lhz r5, 0(r4)
/* 80097C90 2C 05 00 01 */ cmpwi r5, 1
/* 80097C94 41 81 00 24 */ bgt lbl_80097CB8
/* 80097C98 80 64 00 08 */ lwz r3, 8(r4)
/* 80097C9C C0 03 00 04 */ lfs f0, 4(r3)
/* 80097CA0 D0 1F 00 00 */ stfs f0, 0(r31)
/* 80097CA4 C0 03 00 08 */ lfs f0, 8(r3)
/* 80097CA8 D0 1F 00 04 */ stfs f0, 4(r31)
/* 80097CAC C0 03 00 0C */ lfs f0, 0xc(r3)
/* 80097CB0 D0 1F 00 08 */ stfs f0, 8(r31)
/* 80097CB4 48 00 01 C4 */ b lbl_80097E78
lbl_80097CB8:
/* 80097CB8 2C 05 00 02 */ cmpwi r5, 2
/* 80097CBC 40 82 00 70 */ bne lbl_80097D2C
/* 80097CC0 80 84 00 08 */ lwz r4, 8(r4)
/* 80097CC4 C0 44 00 14 */ lfs f2, 0x14(r4)
/* 80097CC8 C0 04 00 04 */ lfs f0, 4(r4)
/* 80097CCC EC 02 00 28 */ fsubs f0, f2, f0
/* 80097CD0 EC 01 00 32 */ fmuls f0, f1, f0
/* 80097CD4 D0 01 00 08 */ stfs f0, 8(r1)
/* 80097CD8 C0 44 00 18 */ lfs f2, 0x18(r4)
/* 80097CDC C0 04 00 08 */ lfs f0, 8(r4)
/* 80097CE0 EC 02 00 28 */ fsubs f0, f2, f0
/* 80097CE4 EC 01 00 32 */ fmuls f0, f1, f0
/* 80097CE8 D0 01 00 0C */ stfs f0, 0xc(r1)
/* 80097CEC C0 44 00 1C */ lfs f2, 0x1c(r4)
/* 80097CF0 C0 04 00 0C */ lfs f0, 0xc(r4)
/* 80097CF4 EC 02 00 28 */ fsubs f0, f2, f0
/* 80097CF8 EC 01 00 32 */ fmuls f0, f1, f0
/* 80097CFC D0 01 00 10 */ stfs f0, 0x10(r1)
/* 80097D00 38 61 00 08 */ addi r3, r1, 8
/* 80097D04 38 84 00 04 */ addi r4, r4, 4
/* 80097D08 7C 65 1B 78 */ mr r5, r3
/* 80097D0C 48 2A F3 85 */ bl PSVECAdd
/* 80097D10 C0 01 00 08 */ lfs f0, 8(r1)
/* 80097D14 D0 1F 00 00 */ stfs f0, 0(r31)
/* 80097D18 C0 01 00 0C */ lfs f0, 0xc(r1)
/* 80097D1C D0 1F 00 04 */ stfs f0, 4(r31)
/* 80097D20 C0 01 00 10 */ lfs f0, 0x10(r1)
/* 80097D24 D0 1F 00 08 */ stfs f0, 8(r31)
/* 80097D28 48 00 01 50 */ b lbl_80097E78
lbl_80097D2C:
/* 80097D2C C8 42 91 C8 */ lfd f2, lit_3632(r2)
/* 80097D30 6C A0 80 00 */ xoris r0, r5, 0x8000
/* 80097D34 90 01 00 1C */ stw r0, 0x1c(r1)
/* 80097D38 3C 60 43 30 */ lis r3, 0x4330
/* 80097D3C 90 61 00 18 */ stw r3, 0x18(r1)
/* 80097D40 C8 01 00 18 */ lfd f0, 0x18(r1)
/* 80097D44 EC 00 10 28 */ fsubs f0, f0, f2
/* 80097D48 EC 60 00 72 */ fmuls f3, f0, f1
/* 80097D4C FC 00 18 1E */ fctiwz f0, f3
/* 80097D50 D8 01 00 20 */ stfd f0, 0x20(r1)
/* 80097D54 80 C1 00 24 */ lwz r6, 0x24(r1)
/* 80097D58 6C C0 80 00 */ xoris r0, r6, 0x8000
/* 80097D5C 90 01 00 2C */ stw r0, 0x2c(r1)
/* 80097D60 90 61 00 28 */ stw r3, 0x28(r1)
/* 80097D64 C8 01 00 28 */ lfd f0, 0x28(r1)
/* 80097D68 EC 00 10 28 */ fsubs f0, f0, f2
/* 80097D6C EC 63 00 28 */ fsubs f3, f3, f0
/* 80097D70 C0 02 91 D0 */ lfs f0, lit_3684(r2)
/* 80097D74 EC 40 18 28 */ fsubs f2, f0, f3
/* 80097D78 C0 22 91 D4 */ lfs f1, lit_3685(r2)
/* 80097D7C EC 02 00 B2 */ fmuls f0, f2, f2
/* 80097D80 EC 81 00 32 */ fmuls f4, f1, f0
/* 80097D84 EC 03 00 B2 */ fmuls f0, f3, f2
/* 80097D88 EC A1 00 2A */ fadds f5, f1, f0
/* 80097D8C EC 03 00 F2 */ fmuls f0, f3, f3
/* 80097D90 EC C1 00 32 */ fmuls f6, f1, f0
/* 80097D94 2C 06 00 00 */ cmpwi r6, 0
/* 80097D98 41 81 00 14 */ bgt lbl_80097DAC
/* 80097D9C 38 60 00 00 */ li r3, 0
/* 80097DA0 38 A0 00 00 */ li r5, 0
/* 80097DA4 38 C0 00 01 */ li r6, 1
/* 80097DA8 48 00 00 28 */ b lbl_80097DD0
lbl_80097DAC:
/* 80097DAC 7C 06 28 00 */ cmpw r6, r5
/* 80097DB0 41 80 00 14 */ blt lbl_80097DC4
/* 80097DB4 38 65 FF FE */ addi r3, r5, -2
/* 80097DB8 38 A5 FF FF */ addi r5, r5, -1
/* 80097DBC 7C A6 2B 78 */ mr r6, r5
/* 80097DC0 48 00 00 10 */ b lbl_80097DD0
lbl_80097DC4:
/* 80097DC4 38 66 FF FF */ addi r3, r6, -1
/* 80097DC8 7C C5 33 78 */ mr r5, r6
/* 80097DCC 38 C6 00 01 */ addi r6, r6, 1
lbl_80097DD0:
/* 80097DD0 80 04 00 08 */ lwz r0, 8(r4)
/* 80097DD4 54 63 20 36 */ slwi r3, r3, 4
/* 80097DD8 38 83 00 04 */ addi r4, r3, 4
/* 80097DDC 7C 80 22 14 */ add r4, r0, r4
/* 80097DE0 54 A3 20 36 */ slwi r3, r5, 4
/* 80097DE4 38 A3 00 04 */ addi r5, r3, 4
/* 80097DE8 7C A0 2A 14 */ add r5, r0, r5
/* 80097DEC 54 C3 20 36 */ slwi r3, r6, 4
/* 80097DF0 38 63 00 04 */ addi r3, r3, 4
/* 80097DF4 7C 60 1A 14 */ add r3, r0, r3
/* 80097DF8 C0 03 00 00 */ lfs f0, 0(r3)
/* 80097DFC EC 40 01 B2 */ fmuls f2, f0, f6
/* 80097E00 C0 04 00 00 */ lfs f0, 0(r4)
/* 80097E04 EC 20 01 32 */ fmuls f1, f0, f4
/* 80097E08 C0 05 00 00 */ lfs f0, 0(r5)
/* 80097E0C EC 00 01 72 */ fmuls f0, f0, f5
/* 80097E10 EC 01 00 2A */ fadds f0, f1, f0
/* 80097E14 EC 62 00 2A */ fadds f3, f2, f0
/* 80097E18 D0 61 00 08 */ stfs f3, 8(r1)
/* 80097E1C C0 03 00 04 */ lfs f0, 4(r3)
/* 80097E20 EC 40 01 B2 */ fmuls f2, f0, f6
/* 80097E24 C0 04 00 04 */ lfs f0, 4(r4)
/* 80097E28 EC 20 01 32 */ fmuls f1, f0, f4
/* 80097E2C C0 05 00 04 */ lfs f0, 4(r5)
/* 80097E30 EC 00 01 72 */ fmuls f0, f0, f5
/* 80097E34 EC 01 00 2A */ fadds f0, f1, f0
/* 80097E38 EC 02 00 2A */ fadds f0, f2, f0
/* 80097E3C D0 01 00 0C */ stfs f0, 0xc(r1)
/* 80097E40 C0 03 00 08 */ lfs f0, 8(r3)
/* 80097E44 EC 40 01 B2 */ fmuls f2, f0, f6
/* 80097E48 C0 04 00 08 */ lfs f0, 8(r4)
/* 80097E4C EC 20 01 32 */ fmuls f1, f0, f4
/* 80097E50 C0 05 00 08 */ lfs f0, 8(r5)
/* 80097E54 EC 00 01 72 */ fmuls f0, f0, f5
/* 80097E58 EC 01 00 2A */ fadds f0, f1, f0
/* 80097E5C EC 02 00 2A */ fadds f0, f2, f0
/* 80097E60 D0 01 00 10 */ stfs f0, 0x10(r1)
/* 80097E64 D0 7F 00 00 */ stfs f3, 0(r31)
/* 80097E68 C0 01 00 0C */ lfs f0, 0xc(r1)
/* 80097E6C D0 1F 00 04 */ stfs f0, 4(r31)
/* 80097E70 C0 01 00 10 */ lfs f0, 0x10(r1)
/* 80097E74 D0 1F 00 08 */ stfs f0, 8(r31)
lbl_80097E78:
/* 80097E78 83 E1 00 3C */ lwz r31, 0x3c(r1)
/* 80097E7C 80 01 00 44 */ lwz r0, 0x44(r1)
/* 80097E80 7C 08 03 A6 */ mtlr r0
/* 80097E84 38 21 00 40 */ addi r1, r1, 0x40
/* 80097E88 4E 80 00 20 */ blr

View File

@ -7,7 +7,7 @@ struct dPath;
struct dPathCurve {
/* 80097C5C */ void Init(dPath*);
/* 80097C74 */ void bSpline2(f32);
/* 80097C74 */ cXyz bSpline2(f32);
/* 0x00 */ int field_0x00;
/* 0x00 */ int field_0x04;
@ -17,22 +17,18 @@ struct dPathCurve {
class d2DBSplinePath {
public:
/* 80097878 */ void Init(s32, s32);
/* 80097904 */ void Step();
/* 80097904 */ bool Step();
/* 80097B20 */ f32 Calc(f32*);
/* 80097A6C */ void Calc(cXyz*);
/* 80097B68 */ void Spot(f32*, f32);
/* 80097A6C */ cXyz Calc(cXyz*);
/* 80097B68 */ f32 Spot(f32*, f32);
/* 0x00 */ s32 field_0x00;
/* 0x04 */ s32 field_0x04;
/* 0x08 */ s32 field_0x08;
/* 0x0C */ s32 field_0x0c;
/* 0x10 */ f32 field_0x10;
/* 0x14 */ f32 field_0x14;
/* 0x18 */ f32 field_0x18;
/* 0x1C */ f32 field_0x1c;
/* 0x20 */ u32 field_0x20;
/* 0x24 */ int field_0x24;
/* 0x28 */ int field_0x28;
/* 0x14 */ f32 mCurveWeight[3];
/* 0x20 */ int mCurveKey[3];
/* 0x2C */ int field_0x2c;
/* 0x30 */ void* field_0x30;
};

View File

@ -4,31 +4,10 @@
*/
#include "d/d_spline_path.h"
#include "dol2asm.h"
//
// Forward References:
//
extern "C" void Init__14d2DBSplinePathFll();
extern "C" void Step__14d2DBSplinePathFv();
extern "C" void Calc__14d2DBSplinePathFP4cXyz();
extern "C" void Calc__14d2DBSplinePathFPf();
extern "C" void Spot__14d2DBSplinePathFPff();
extern "C" void Init__10dPathCurveFP5dPath();
extern "C" void bSpline2__10dPathCurveFf();
//
// Declarations:
//
/* ############################################################################################## */
/* 80452BC8-80452BD0 0011C8 0008+00 4/4 0/0 0/0 .sdata2 @3632 */
SECTION_SDATA2 static f64 lit_3632 = 4503601774854144.0 /* cast s32 to float */;
#include "d/d_path.h"
#include "d/d_stage.h"
/* 80097878-80097904 0921B8 008C+00 0/0 7/7 0/0 .text Init__14d2DBSplinePathFll */
#ifdef NONMATCHING
// matches with literals
void d2DBSplinePath::Init(s32 param_0, s32 param_1) {
s32 tmp;
s32 tmp2;
@ -44,60 +23,74 @@ void d2DBSplinePath::Init(s32 param_0, s32 param_1) {
field_0x2c = 0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void d2DBSplinePath::Init(s32 param_0, s32 param_1) {
nofralloc
#include "asm/d/d_spline_path/Init__14d2DBSplinePathFll.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80452BD0-80452BD4 0011D0 0004+00 3/3 0/0 0/0 .sdata2 @3684 */
SECTION_SDATA2 static f32 lit_3684 = 1.0f;
/* 80452BD4-80452BD8 0011D4 0004+00 3/3 0/0 0/0 .sdata2 @3685 */
SECTION_SDATA2 static f32 lit_3685 = 0.5f;
/* 80097904-80097A6C 092244 0168+00 0/0 5/5 0/0 .text Step__14d2DBSplinePathFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void d2DBSplinePath::Step() {
nofralloc
#include "asm/d/d_spline_path/Step__14d2DBSplinePathFv.s"
bool d2DBSplinePath::Step() {
if (field_0x00 >= field_0x0c) {
field_0x08 = 0;
}
if (field_0x08 == 1) {
field_0x08 = 2;
}
if (field_0x08 == 2) {
if (field_0x00 <= field_0x0c - 1) {
f32 fVar2 = field_0x10 * field_0x00;
int uVar1 = fVar2;
fVar2 -= uVar1;
if (field_0x00 == field_0x0c - 1) {
field_0x08 = 3;
fVar2 = 1.0f;
}
mCurveKey[0] = (uVar1 < field_0x04 - 1) ? uVar1 : field_0x04 - 1;
mCurveKey[1] = (uVar1 + 1 < field_0x04 - 1) ? uVar1 + 1 : field_0x04 - 1;
mCurveKey[2] = (uVar1 + 2 < field_0x04 - 1) ? uVar1 + 2 : field_0x04 - 1;
f32 fVar7 = 1.0f - fVar2;
mCurveWeight[0] = fVar7 * fVar7 * 0.5f;
mCurveWeight[1] = (fVar2 * (1.0f - fVar2)) + 0.5f;
mCurveWeight[2] = fVar2 * fVar2 * 0.5f;
field_0x00++;
} else {
field_0x08 = 0;
}
}
return field_0x08 == 2 || field_0x08 == 3;
}
#pragma pop
/* 80097A6C-80097B20 0923AC 00B4+00 0/0 1/1 0/0 .text Calc__14d2DBSplinePathFP4cXyz */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void d2DBSplinePath::Calc(cXyz* param_0) {
nofralloc
#include "asm/d/d_spline_path/Calc__14d2DBSplinePathFP4cXyz.s"
cXyz d2DBSplinePath::Calc(cXyz* v) {
cXyz ret;
ret.x = mCurveWeight[0] * v[mCurveKey[0]].x + mCurveWeight[1] * v[mCurveKey[1]].x + mCurveWeight[2] * v[mCurveKey[2]].x;
ret.y = mCurveWeight[0] * v[mCurveKey[0]].y + mCurveWeight[1] * v[mCurveKey[1]].y + mCurveWeight[2] * v[mCurveKey[2]].y;
ret.z = mCurveWeight[0] * v[mCurveKey[0]].z + mCurveWeight[1] * v[mCurveKey[1]].z + mCurveWeight[2] * v[mCurveKey[2]].z;
return ret;
}
#pragma pop
/* 80097B20-80097B68 092460 0048+00 0/0 5/5 0/0 .text Calc__14d2DBSplinePathFPf */
f32 d2DBSplinePath::Calc(f32* param_0) {
return field_0x14 * param_0[field_0x20] +
field_0x18 * param_0[field_0x24] +
field_0x1c * param_0[field_0x28];
return mCurveWeight[0] * param_0[mCurveKey[0]] +
mCurveWeight[1] * param_0[mCurveKey[1]] +
mCurveWeight[2] * param_0[mCurveKey[2]];
}
/* 80097B68-80097C5C 0924A8 00F4+00 0/0 1/1 0/0 .text Spot__14d2DBSplinePathFPff */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void d2DBSplinePath::Spot(f32* param_0, f32 param_1) {
nofralloc
#include "asm/d/d_spline_path/Spot__14d2DBSplinePathFPff.s"
f32 d2DBSplinePath::Spot(f32* param_1, f32 param_2) {
int uVar10;
if (field_0x04 < 2) {
uVar10 = 1;
} else {
uVar10 = field_0x04 - 2;
}
f32 fVar5 = param_2 * uVar10;
int uVar11 = fVar5;
fVar5 = fVar5 - uVar11;
int iVar9 = (uVar11 < field_0x04 - 1) ? uVar11 : field_0x04 - 1;
int iVar8 = (uVar11 + 1 < field_0x04 - 1) ? uVar11 + 1 : field_0x04 - 1;
int iVar7 = (uVar11 + 2 < field_0x04 - 1) ? uVar11 + 2 : field_0x04 - 1;
f32 fVar6 = 1.0f - fVar5;
return fVar6 * fVar6 * 0.5f * param_1[iVar9] + (fVar5 * fVar6 + 0.5f) * param_1[iVar8] +
fVar5 * fVar5 * 0.5f * param_1[iVar7];
}
#pragma pop
/* 80097C5C-80097C74 09259C 0018+00 0/0 0/0 1/1 .text Init__10dPathCurveFP5dPath */
void dPathCurve::Init(dPath* i_path) {
@ -107,11 +100,51 @@ void dPathCurve::Init(dPath* i_path) {
}
/* 80097C74-80097E8C 0925B4 0218+00 0/0 0/0 1/1 .text bSpline2__10dPathCurveFf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dPathCurve::bSpline2(f32 param_0) {
nofralloc
#include "asm/d/d_spline_path/bSpline2__10dPathCurveFf.s"
cXyz dPathCurve::bSpline2(f32 param_0) {
cXyz local_7c;
int uVar12 = mpPath->m_num;
if (uVar12 <= 1) {
return mpPath->m_points[0].m_position;
} else if (uVar12 == 2) {
local_7c.x = param_0 * (mpPath->m_points[1].m_position.x -
mpPath->m_points[0].m_position.x);
local_7c.y = param_0 * (mpPath->m_points[1].m_position.y -
mpPath->m_points[0].m_position.y);
local_7c.z = param_0 * (mpPath->m_points[1].m_position.z -
mpPath->m_points[0].m_position.z);
local_7c += mpPath->m_points[0].m_position;
return local_7c;
} else {
f32 fVar2 = uVar12 * param_0;
int uVar4 = fVar2;
fVar2 -= uVar4;
f32 fVar8 = 1.0f - fVar2;
f32 fVar7 = fVar8 * fVar8 * 0.5f;
f32 fVar6 = fVar2 * fVar8 + 0.5f;
f32 fVar5 = fVar2 * fVar2 * 0.5f;
int iVar10;
int uVar9;
int iVar8;
if (uVar4 <= 0) {
iVar10 = 0;
uVar9 = 0;
iVar8 = 1;
} else if (uVar4 >= uVar12) {
iVar10 = uVar12 - 2;
uVar9 = uVar12 - 1;
iVar8 = uVar12 - 1;
} else {
iVar10 = uVar4 - 1;
uVar9 = uVar4;
iVar8 = uVar4 + 1;
}
Vec* point11 = &mpPath->m_points[iVar10].m_position;
Vec* point10 = &mpPath->m_points[uVar9].m_position;
Vec* point8 = &mpPath->m_points[iVar8].m_position;
local_7c.x = point11->x * fVar7 + point10->x * fVar6 + point8->x * fVar5;
local_7c.y = point11->y * fVar7 + point10->y * fVar6 + point8->y * fVar5;
local_7c.z = point11->z * fVar7 + point10->z * fVar6 + point8->z * fVar5;
return local_7c;
}
}
#pragma pop