Link JPAEmitter.cpp

This commit is contained in:
HeartPiece 2023-10-19 02:46:28 +11:00
parent 6dd9421a29
commit f1ecec790a
16 changed files with 234 additions and 2178 deletions

View File

@ -1,632 +0,0 @@
.include "macros.inc"
.section .sdata2, "a" # 0x80516360 - 0x80520E40
.balign 8
.obj lbl_80516BA0, local
.float 32.0
.endobj lbl_80516BA0
.obj lbl_80516BA4, local
.float 0.0
.endobj lbl_80516BA4
.obj lbl_80516BA8, local
.float 0.5
.endobj lbl_80516BA8
.obj lbl_80516BAC, local
.float 3.0
.endobj lbl_80516BAC
.obj lbl_80516BB0, local
.float 1.0
.endobj lbl_80516BB0
.section .text, "ax" # 0x800056C0 - 0x80472F00
.fn __dt__18JPAEmitterCallBackFv, global
/* 8008FC9C 0008CBDC 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8008FCA0 0008CBE0 7C 08 02 A6 */ mflr r0
/* 8008FCA4 0008CBE4 90 01 00 14 */ stw r0, 0x14(r1)
/* 8008FCA8 0008CBE8 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8008FCAC 0008CBEC 7C 7F 1B 79 */ or. r31, r3, r3
/* 8008FCB0 0008CBF0 41 82 00 1C */ beq .L_8008FCCC
/* 8008FCB4 0008CBF4 3C A0 80 4A */ lis r5, __vt__18JPAEmitterCallBack@ha
/* 8008FCB8 0008CBF8 7C 80 07 35 */ extsh. r0, r4
/* 8008FCBC 0008CBFC 38 05 E2 7C */ addi r0, r5, __vt__18JPAEmitterCallBack@l
/* 8008FCC0 0008CC00 90 1F 00 00 */ stw r0, 0(r31)
/* 8008FCC4 0008CC04 40 81 00 08 */ ble .L_8008FCCC
/* 8008FCC8 0008CC08 4B F9 43 ED */ bl __dl__FPv
.L_8008FCCC:
/* 8008FCCC 0008CC0C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8008FCD0 0008CC10 7F E3 FB 78 */ mr r3, r31
/* 8008FCD4 0008CC14 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8008FCD8 0008CC18 7C 08 03 A6 */ mtlr r0
/* 8008FCDC 0008CC1C 38 21 00 10 */ addi r1, r1, 0x10
/* 8008FCE0 0008CC20 4E 80 00 20 */ blr
.endfn __dt__18JPAEmitterCallBackFv
.fn init__14JPABaseEmitterFP17JPAEmitterManagerP11JPAResource, global
/* 8008FCE4 0008CC24 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8008FCE8 0008CC28 7C 08 02 A6 */ mflr r0
/* 8008FCEC 0008CC2C C0 22 88 40 */ lfs f1, lbl_80516BA0@sda21(r2)
/* 8008FCF0 0008CC30 90 01 00 14 */ stw r0, 0x14(r1)
/* 8008FCF4 0008CC34 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8008FCF8 0008CC38 7C BF 2B 78 */ mr r31, r5
/* 8008FCFC 0008CC3C 93 C1 00 08 */ stw r30, 8(r1)
/* 8008FD00 0008CC40 7C 7E 1B 78 */ mr r30, r3
/* 8008FD04 0008CC44 3C 60 80 51 */ lis r3, __float_epsilon@ha
/* 8008FD08 0008CC48 90 9E 00 E4 */ stw r4, 0xe4(r30)
/* 8008FD0C 0008CC4C 93 FE 00 E8 */ stw r31, 0xe8(r30)
/* 8008FD10 0008CC50 80 9E 00 E8 */ lwz r4, 0xe8(r30)
/* 8008FD14 0008CC54 80 84 00 2C */ lwz r4, 0x2c(r4)
/* 8008FD18 0008CC58 80 84 00 00 */ lwz r4, 0(r4)
/* 8008FD1C 0008CC5C C0 64 00 18 */ lfs f3, 0x18(r4)
/* 8008FD20 0008CC60 C0 44 00 14 */ lfs f2, 0x14(r4)
/* 8008FD24 0008CC64 C0 04 00 10 */ lfs f0, 0x10(r4)
/* 8008FD28 0008CC68 D0 1E 00 00 */ stfs f0, 0(r30)
/* 8008FD2C 0008CC6C D0 5E 00 04 */ stfs f2, 4(r30)
/* 8008FD30 0008CC70 D0 7E 00 08 */ stfs f3, 8(r30)
/* 8008FD34 0008CC74 80 9E 00 E8 */ lwz r4, 0xe8(r30)
/* 8008FD38 0008CC78 80 84 00 2C */ lwz r4, 0x2c(r4)
/* 8008FD3C 0008CC7C 80 84 00 00 */ lwz r4, 0(r4)
/* 8008FD40 0008CC80 C0 64 00 24 */ lfs f3, 0x24(r4)
/* 8008FD44 0008CC84 C0 44 00 20 */ lfs f2, 0x20(r4)
/* 8008FD48 0008CC88 C0 04 00 1C */ lfs f0, 0x1c(r4)
/* 8008FD4C 0008CC8C D0 1E 00 0C */ stfs f0, 0xc(r30)
/* 8008FD50 0008CC90 D0 5E 00 10 */ stfs f2, 0x10(r30)
/* 8008FD54 0008CC94 D0 7E 00 14 */ stfs f3, 0x14(r30)
/* 8008FD58 0008CC98 80 9E 00 E8 */ lwz r4, 0xe8(r30)
/* 8008FD5C 0008CC9C 80 84 00 2C */ lwz r4, 0x2c(r4)
/* 8008FD60 0008CCA0 80 84 00 00 */ lwz r4, 0(r4)
/* 8008FD64 0008CCA4 C0 64 00 30 */ lfs f3, 0x30(r4)
/* 8008FD68 0008CCA8 C0 44 00 2C */ lfs f2, 0x2c(r4)
/* 8008FD6C 0008CCAC C0 04 00 28 */ lfs f0, 0x28(r4)
/* 8008FD70 0008CCB0 D0 1E 00 18 */ stfs f0, 0x18(r30)
/* 8008FD74 0008CCB4 D0 5E 00 1C */ stfs f2, 0x1c(r30)
/* 8008FD78 0008CCB8 D0 7E 00 20 */ stfs f3, 0x20(r30)
/* 8008FD7C 0008CCBC C0 5E 00 18 */ lfs f2, 0x18(r30)
/* 8008FD80 0008CCC0 C0 9E 00 20 */ lfs f4, 0x20(r30)
/* 8008FD84 0008CCC4 C0 1E 00 1C */ lfs f0, 0x1c(r30)
/* 8008FD88 0008CCC8 EC 62 00 B2 */ fmuls f3, f2, f2
/* 8008FD8C 0008CCCC EC 84 01 32 */ fmuls f4, f4, f4
/* 8008FD90 0008CCD0 EC 40 00 32 */ fmuls f2, f0, f0
/* 8008FD94 0008CCD4 C0 03 48 DC */ lfs f0, __float_epsilon@l(r3)
/* 8008FD98 0008CCD8 EC 01 00 32 */ fmuls f0, f1, f0
/* 8008FD9C 0008CCDC EC 23 10 2A */ fadds f1, f3, f2
/* 8008FDA0 0008CCE0 EC 84 08 2A */ fadds f4, f4, f1
/* 8008FDA4 0008CCE4 FC 04 00 40 */ fcmpo cr0, f4, f0
/* 8008FDA8 0008CCE8 4C 40 13 82 */ cror 2, 0, 2
/* 8008FDAC 0008CCEC 41 82 00 5C */ beq .L_8008FE08
/* 8008FDB0 0008CCF0 C0 02 88 44 */ lfs f0, lbl_80516BA4@sda21(r2)
/* 8008FDB4 0008CCF4 FC 04 00 40 */ fcmpo cr0, f4, f0
/* 8008FDB8 0008CCF8 4C 40 13 82 */ cror 2, 0, 2
/* 8008FDBC 0008CCFC 40 82 00 08 */ bne .L_8008FDC4
/* 8008FDC0 0008CD00 48 00 00 24 */ b .L_8008FDE4
.L_8008FDC4:
/* 8008FDC4 0008CD04 FC 60 20 34 */ frsqrte f3, f4
/* 8008FDC8 0008CD08 C0 42 88 48 */ lfs f2, lbl_80516BA8@sda21(r2)
/* 8008FDCC 0008CD0C C0 02 88 4C */ lfs f0, lbl_80516BAC@sda21(r2)
/* 8008FDD0 0008CD10 FC 60 18 18 */ frsp f3, f3
/* 8008FDD4 0008CD14 EC 23 00 F2 */ fmuls f1, f3, f3
/* 8008FDD8 0008CD18 EC 42 00 F2 */ fmuls f2, f2, f3
/* 8008FDDC 0008CD1C EC 04 00 7C */ fnmsubs f0, f4, f1, f0
/* 8008FDE0 0008CD20 EC 82 00 32 */ fmuls f4, f2, f0
.L_8008FDE4:
/* 8008FDE4 0008CD24 C0 1E 00 18 */ lfs f0, 0x18(r30)
/* 8008FDE8 0008CD28 EC 00 01 32 */ fmuls f0, f0, f4
/* 8008FDEC 0008CD2C D0 1E 00 18 */ stfs f0, 0x18(r30)
/* 8008FDF0 0008CD30 C0 1E 00 1C */ lfs f0, 0x1c(r30)
/* 8008FDF4 0008CD34 EC 00 01 32 */ fmuls f0, f0, f4
/* 8008FDF8 0008CD38 D0 1E 00 1C */ stfs f0, 0x1c(r30)
/* 8008FDFC 0008CD3C C0 1E 00 20 */ lfs f0, 0x20(r30)
/* 8008FE00 0008CD40 EC 00 01 32 */ fmuls f0, f0, f4
/* 8008FE04 0008CD44 D0 1E 00 20 */ stfs f0, 0x20(r30)
.L_8008FE08:
/* 8008FE08 0008CD48 80 9E 00 E8 */ lwz r4, 0xe8(r30)
/* 8008FE0C 0008CD4C 3C 60 00 19 */ lis r3, 0x0019660D@ha
/* 8008FE10 0008CD50 38 03 66 0D */ addi r0, r3, 0x0019660D@l
/* 8008FE14 0008CD54 38 7E 00 68 */ addi r3, r30, 0x68
/* 8008FE18 0008CD58 80 84 00 2C */ lwz r4, 0x2c(r4)
/* 8008FE1C 0008CD5C 80 84 00 00 */ lwz r4, 0(r4)
/* 8008FE20 0008CD60 A8 C4 00 6C */ lha r6, 0x6c(r4)
/* 8008FE24 0008CD64 A8 A4 00 6A */ lha r5, 0x6a(r4)
/* 8008FE28 0008CD68 A8 84 00 68 */ lha r4, 0x68(r4)
/* 8008FE2C 0008CD6C B0 9E 00 4C */ sth r4, 0x4c(r30)
/* 8008FE30 0008CD70 B0 BE 00 4E */ sth r5, 0x4e(r30)
/* 8008FE34 0008CD74 B0 DE 00 50 */ sth r6, 0x50(r30)
/* 8008FE38 0008CD78 80 9E 00 E8 */ lwz r4, 0xe8(r30)
/* 8008FE3C 0008CD7C 80 84 00 2C */ lwz r4, 0x2c(r4)
/* 8008FE40 0008CD80 80 84 00 00 */ lwz r4, 0(r4)
/* 8008FE44 0008CD84 A8 84 00 6E */ lha r4, 0x6e(r4)
/* 8008FE48 0008CD88 90 9E 00 24 */ stw r4, 0x24(r30)
/* 8008FE4C 0008CD8C 80 9E 00 E8 */ lwz r4, 0xe8(r30)
/* 8008FE50 0008CD90 80 84 00 2C */ lwz r4, 0x2c(r4)
/* 8008FE54 0008CD94 80 84 00 00 */ lwz r4, 0(r4)
/* 8008FE58 0008CD98 A8 84 00 72 */ lha r4, 0x72(r4)
/* 8008FE5C 0008CD9C B0 9E 00 52 */ sth r4, 0x52(r30)
/* 8008FE60 0008CDA0 80 9E 00 E8 */ lwz r4, 0xe8(r30)
/* 8008FE64 0008CDA4 80 84 00 2C */ lwz r4, 0x2c(r4)
/* 8008FE68 0008CDA8 80 84 00 00 */ lwz r4, 0(r4)
/* 8008FE6C 0008CDAC A0 84 00 74 */ lhz r4, 0x74(r4)
/* 8008FE70 0008CDB0 B0 9E 00 54 */ sth r4, 0x54(r30)
/* 8008FE74 0008CDB4 80 9E 00 E8 */ lwz r4, 0xe8(r30)
/* 8008FE78 0008CDB8 80 84 00 2C */ lwz r4, 0x2c(r4)
/* 8008FE7C 0008CDBC 80 84 00 00 */ lwz r4, 0(r4)
/* 8008FE80 0008CDC0 C0 04 00 4C */ lfs f0, 0x4c(r4)
/* 8008FE84 0008CDC4 D0 1E 00 28 */ stfs f0, 0x28(r30)
/* 8008FE88 0008CDC8 80 9E 00 E8 */ lwz r4, 0xe8(r30)
/* 8008FE8C 0008CDCC 80 84 00 2C */ lwz r4, 0x2c(r4)
/* 8008FE90 0008CDD0 80 84 00 00 */ lwz r4, 0(r4)
/* 8008FE94 0008CDD4 88 84 00 78 */ lbz r4, 0x78(r4)
/* 8008FE98 0008CDD8 98 9E 00 56 */ stb r4, 0x56(r30)
/* 8008FE9C 0008CDDC 80 9E 00 E8 */ lwz r4, 0xe8(r30)
/* 8008FEA0 0008CDE0 80 84 00 2C */ lwz r4, 0x2c(r4)
/* 8008FEA4 0008CDE4 80 84 00 00 */ lwz r4, 0(r4)
/* 8008FEA8 0008CDE8 C0 04 00 58 */ lfs f0, 0x58(r4)
/* 8008FEAC 0008CDEC D0 1E 00 2C */ stfs f0, 0x2c(r30)
/* 8008FEB0 0008CDF0 80 9E 00 E8 */ lwz r4, 0xe8(r30)
/* 8008FEB4 0008CDF4 80 84 00 2C */ lwz r4, 0x2c(r4)
/* 8008FEB8 0008CDF8 80 84 00 00 */ lwz r4, 0(r4)
/* 8008FEBC 0008CDFC C0 04 00 5C */ lfs f0, 0x5c(r4)
/* 8008FEC0 0008CE00 D0 1E 00 30 */ stfs f0, 0x30(r30)
/* 8008FEC4 0008CE04 80 9E 00 E8 */ lwz r4, 0xe8(r30)
/* 8008FEC8 0008CE08 80 84 00 2C */ lwz r4, 0x2c(r4)
/* 8008FECC 0008CE0C 80 84 00 00 */ lwz r4, 0(r4)
/* 8008FED0 0008CE10 C0 04 00 34 */ lfs f0, 0x34(r4)
/* 8008FED4 0008CE14 D0 1E 00 34 */ stfs f0, 0x34(r30)
/* 8008FED8 0008CE18 80 9E 00 E8 */ lwz r4, 0xe8(r30)
/* 8008FEDC 0008CE1C 80 84 00 2C */ lwz r4, 0x2c(r4)
/* 8008FEE0 0008CE20 80 84 00 00 */ lwz r4, 0(r4)
/* 8008FEE4 0008CE24 C0 04 00 38 */ lfs f0, 0x38(r4)
/* 8008FEE8 0008CE28 D0 1E 00 38 */ stfs f0, 0x38(r30)
/* 8008FEEC 0008CE2C 80 9E 00 E8 */ lwz r4, 0xe8(r30)
/* 8008FEF0 0008CE30 80 84 00 2C */ lwz r4, 0x2c(r4)
/* 8008FEF4 0008CE34 80 84 00 00 */ lwz r4, 0(r4)
/* 8008FEF8 0008CE38 C0 04 00 40 */ lfs f0, 0x40(r4)
/* 8008FEFC 0008CE3C D0 1E 00 3C */ stfs f0, 0x3c(r30)
/* 8008FF00 0008CE40 80 9E 00 E8 */ lwz r4, 0xe8(r30)
/* 8008FF04 0008CE44 80 84 00 2C */ lwz r4, 0x2c(r4)
/* 8008FF08 0008CE48 80 84 00 00 */ lwz r4, 0(r4)
/* 8008FF0C 0008CE4C C0 04 00 44 */ lfs f0, 0x44(r4)
/* 8008FF10 0008CE50 D0 1E 00 40 */ stfs f0, 0x40(r30)
/* 8008FF14 0008CE54 80 9E 00 E8 */ lwz r4, 0xe8(r30)
/* 8008FF18 0008CE58 80 84 00 2C */ lwz r4, 0x2c(r4)
/* 8008FF1C 0008CE5C 80 84 00 00 */ lwz r4, 0(r4)
/* 8008FF20 0008CE60 C0 04 00 3C */ lfs f0, 0x3c(r4)
/* 8008FF24 0008CE64 D0 1E 00 44 */ stfs f0, 0x44(r30)
/* 8008FF28 0008CE68 80 9E 00 E8 */ lwz r4, 0xe8(r30)
/* 8008FF2C 0008CE6C 80 84 00 2C */ lwz r4, 0x2c(r4)
/* 8008FF30 0008CE70 80 84 00 00 */ lwz r4, 0(r4)
/* 8008FF34 0008CE74 C0 04 00 60 */ lfs f0, 0x60(r4)
/* 8008FF38 0008CE78 D0 1E 00 48 */ stfs f0, 0x48(r30)
/* 8008FF3C 0008CE7C 80 9E 00 E4 */ lwz r4, 0xe4(r30)
/* 8008FF40 0008CE80 80 A4 00 20 */ lwz r5, 0x20(r4)
/* 8008FF44 0008CE84 80 85 00 0C */ lwz r4, 0xc(r5)
/* 8008FF48 0008CE88 7C 84 01 D6 */ mullw r4, r4, r0
/* 8008FF4C 0008CE8C 3C 84 3C 6F */ addis r4, r4, 0x3c6f
/* 8008FF50 0008CE90 38 04 F3 5F */ addi r0, r4, -3233
/* 8008FF54 0008CE94 90 05 00 0C */ stw r0, 0xc(r5)
/* 8008FF58 0008CE98 90 1E 00 C4 */ stw r0, 0xc4(r30)
/* 8008FF5C 0008CE9C 48 05 A3 45 */ bl PSMTXIdentity
/* 8008FF60 0008CEA0 C0 22 88 50 */ lfs f1, lbl_80516BB0@sda21(r2)
/* 8008FF64 0008CEA4 38 A0 00 FF */ li r5, 0xff
/* 8008FF68 0008CEA8 C0 02 88 44 */ lfs f0, lbl_80516BA4@sda21(r2)
/* 8008FF6C 0008CEAC 38 80 00 00 */ li r4, 0
/* 8008FF70 0008CEB0 D0 3E 00 98 */ stfs f1, 0x98(r30)
/* 8008FF74 0008CEB4 38 60 00 30 */ li r3, 0x30
/* 8008FF78 0008CEB8 38 00 00 01 */ li r0, 1
/* 8008FF7C 0008CEBC D0 3E 00 9C */ stfs f1, 0x9c(r30)
/* 8008FF80 0008CEC0 D0 3E 00 A0 */ stfs f1, 0xa0(r30)
/* 8008FF84 0008CEC4 D0 1E 00 AC */ stfs f0, 0xac(r30)
/* 8008FF88 0008CEC8 D0 1E 00 A8 */ stfs f0, 0xa8(r30)
/* 8008FF8C 0008CECC D0 1E 00 A4 */ stfs f0, 0xa4(r30)
/* 8008FF90 0008CED0 D0 3E 00 B0 */ stfs f1, 0xb0(r30)
/* 8008FF94 0008CED4 D0 3E 00 B4 */ stfs f1, 0xb4(r30)
/* 8008FF98 0008CED8 98 BE 00 BF */ stb r5, 0xbf(r30)
/* 8008FF9C 0008CEDC 98 BE 00 BE */ stb r5, 0xbe(r30)
/* 8008FFA0 0008CEE0 98 BE 00 BD */ stb r5, 0xbd(r30)
/* 8008FFA4 0008CEE4 98 BE 00 BC */ stb r5, 0xbc(r30)
/* 8008FFA8 0008CEE8 98 BE 00 BB */ stb r5, 0xbb(r30)
/* 8008FFAC 0008CEEC 98 BE 00 BA */ stb r5, 0xba(r30)
/* 8008FFB0 0008CEF0 98 BE 00 B9 */ stb r5, 0xb9(r30)
/* 8008FFB4 0008CEF4 98 BE 00 B8 */ stb r5, 0xb8(r30)
/* 8008FFB8 0008CEF8 80 BF 00 1C */ lwz r5, 0x1c(r31)
/* 8008FFBC 0008CEFC 80 C5 00 00 */ lwz r6, 0(r5)
/* 8008FFC0 0008CF00 88 A6 00 26 */ lbz r5, 0x26(r6)
/* 8008FFC4 0008CF04 98 BE 01 08 */ stb r5, 0x108(r30)
/* 8008FFC8 0008CF08 88 A6 00 27 */ lbz r5, 0x27(r6)
/* 8008FFCC 0008CF0C 98 BE 01 09 */ stb r5, 0x109(r30)
/* 8008FFD0 0008CF10 88 A6 00 28 */ lbz r5, 0x28(r6)
/* 8008FFD4 0008CF14 98 BE 01 0A */ stb r5, 0x10a(r30)
/* 8008FFD8 0008CF18 88 A6 00 29 */ lbz r5, 0x29(r6)
/* 8008FFDC 0008CF1C 98 BE 01 0B */ stb r5, 0x10b(r30)
/* 8008FFE0 0008CF20 80 BF 00 1C */ lwz r5, 0x1c(r31)
/* 8008FFE4 0008CF24 80 C5 00 00 */ lwz r6, 0(r5)
/* 8008FFE8 0008CF28 88 A6 00 2A */ lbz r5, 0x2a(r6)
/* 8008FFEC 0008CF2C 98 BE 01 0C */ stb r5, 0x10c(r30)
/* 8008FFF0 0008CF30 88 A6 00 2B */ lbz r5, 0x2b(r6)
/* 8008FFF4 0008CF34 98 BE 01 0D */ stb r5, 0x10d(r30)
/* 8008FFF8 0008CF38 88 A6 00 2C */ lbz r5, 0x2c(r6)
/* 8008FFFC 0008CF3C 98 BE 01 0E */ stb r5, 0x10e(r30)
/* 80090000 0008CF40 88 A6 00 2D */ lbz r5, 0x2d(r6)
/* 80090004 0008CF44 98 BE 01 0F */ stb r5, 0x10f(r30)
/* 80090008 0008CF48 90 9E 00 C0 */ stw r4, 0xc0(r30)
/* 8009000C 0008CF4C D0 3E 00 FC */ stfs f1, 0xfc(r30)
/* 80090010 0008CF50 D0 1E 00 F8 */ stfs f0, 0xf8(r30)
/* 80090014 0008CF54 90 7E 00 F4 */ stw r3, 0xf4(r30)
/* 80090018 0008CF58 98 1E 01 10 */ stb r0, 0x110(r30)
/* 8009001C 0008CF5C 90 9E 01 00 */ stw r4, 0x100(r30)
/* 80090020 0008CF60 B0 9E 01 04 */ sth r4, 0x104(r30)
/* 80090024 0008CF64 B0 9E 01 06 */ sth r4, 0x106(r30)
/* 80090028 0008CF68 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8009002C 0008CF6C 83 C1 00 08 */ lwz r30, 8(r1)
/* 80090030 0008CF70 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80090034 0008CF74 7C 08 03 A6 */ mtlr r0
/* 80090038 0008CF78 38 21 00 10 */ addi r1, r1, 0x10
/* 8009003C 0008CF7C 4E 80 00 20 */ blr
.endfn init__14JPABaseEmitterFP17JPAEmitterManagerP11JPAResource
.fn createParticle__14JPABaseEmitterFv, global
/* 80090040 0008CF80 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80090044 0008CF84 7C 08 02 A6 */ mflr r0
/* 80090048 0008CF88 90 01 00 14 */ stw r0, 0x14(r1)
/* 8009004C 0008CF8C 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80090050 0008CF90 93 C1 00 08 */ stw r30, 8(r1)
/* 80090054 0008CF94 7C 7E 1B 78 */ mr r30, r3
/* 80090058 0008CF98 80 83 00 E0 */ lwz r4, 0xe0(r3)
/* 8009005C 0008CF9C 80 04 00 08 */ lwz r0, 8(r4)
/* 80090060 0008CFA0 28 00 00 00 */ cmplwi r0, 0
/* 80090064 0008CFA4 41 82 00 DC */ beq .L_80090140
/* 80090068 0008CFA8 28 00 00 01 */ cmplwi r0, 1
/* 8009006C 0008CFAC 3B E0 00 00 */ li r31, 0
/* 80090070 0008CFB0 40 82 00 24 */ bne .L_80090094
/* 80090074 0008CFB4 83 E4 00 00 */ lwz r31, 0(r4)
/* 80090078 0008CFB8 38 00 00 00 */ li r0, 0
/* 8009007C 0008CFBC 90 04 00 04 */ stw r0, 4(r4)
/* 80090080 0008CFC0 90 04 00 00 */ stw r0, 0(r4)
/* 80090084 0008CFC4 80 64 00 08 */ lwz r3, 8(r4)
/* 80090088 0008CFC8 38 03 FF FF */ addi r0, r3, -1
/* 8009008C 0008CFCC 90 04 00 08 */ stw r0, 8(r4)
/* 80090090 0008CFD0 48 00 00 30 */ b .L_800900C0
.L_80090094:
/* 80090094 0008CFD4 28 00 00 00 */ cmplwi r0, 0
/* 80090098 0008CFD8 41 82 00 28 */ beq .L_800900C0
/* 8009009C 0008CFDC 83 E4 00 00 */ lwz r31, 0(r4)
/* 800900A0 0008CFE0 38 00 00 00 */ li r0, 0
/* 800900A4 0008CFE4 80 7F 00 04 */ lwz r3, 4(r31)
/* 800900A8 0008CFE8 90 03 00 00 */ stw r0, 0(r3)
/* 800900AC 0008CFEC 80 1F 00 04 */ lwz r0, 4(r31)
/* 800900B0 0008CFF0 90 04 00 00 */ stw r0, 0(r4)
/* 800900B4 0008CFF4 80 64 00 08 */ lwz r3, 8(r4)
/* 800900B8 0008CFF8 38 03 FF FF */ addi r0, r3, -1
/* 800900BC 0008CFFC 90 04 00 08 */ stw r0, 8(r4)
.L_800900C0:
/* 800900C0 0008D000 80 1E 00 C8 */ lwz r0, 0xc8(r30)
/* 800900C4 0008D004 28 00 00 00 */ cmplwi r0, 0
/* 800900C8 0008D008 41 82 00 24 */ beq .L_800900EC
/* 800900CC 0008D00C 38 00 00 00 */ li r0, 0
/* 800900D0 0008D010 90 1F 00 00 */ stw r0, 0(r31)
/* 800900D4 0008D014 80 1E 00 C8 */ lwz r0, 0xc8(r30)
/* 800900D8 0008D018 90 1F 00 04 */ stw r0, 4(r31)
/* 800900DC 0008D01C 80 7E 00 C8 */ lwz r3, 0xc8(r30)
/* 800900E0 0008D020 93 E3 00 00 */ stw r31, 0(r3)
/* 800900E4 0008D024 93 FE 00 C8 */ stw r31, 0xc8(r30)
/* 800900E8 0008D028 48 00 00 18 */ b .L_80090100
.L_800900EC:
/* 800900EC 0008D02C 93 FE 00 CC */ stw r31, 0xcc(r30)
/* 800900F0 0008D030 38 00 00 00 */ li r0, 0
/* 800900F4 0008D034 93 FE 00 C8 */ stw r31, 0xc8(r30)
/* 800900F8 0008D038 90 1F 00 00 */ stw r0, 0(r31)
/* 800900FC 0008D03C 90 1F 00 04 */ stw r0, 4(r31)
.L_80090100:
/* 80090100 0008D040 80 7E 00 D0 */ lwz r3, 0xd0(r30)
/* 80090104 0008D044 38 03 00 01 */ addi r0, r3, 1
/* 80090108 0008D048 90 1E 00 D0 */ stw r0, 0xd0(r30)
/* 8009010C 0008D04C 80 7E 00 E8 */ lwz r3, 0xe8(r30)
/* 80090110 0008D050 80 BE 00 E4 */ lwz r5, 0xe4(r30)
/* 80090114 0008D054 80 83 00 2C */ lwz r4, 0x2c(r3)
/* 80090118 0008D058 80 65 00 20 */ lwz r3, 0x20(r5)
/* 8009011C 0008D05C 81 84 00 04 */ lwz r12, 4(r4)
/* 80090120 0008D060 7D 89 03 A6 */ mtctr r12
/* 80090124 0008D064 4E 80 04 21 */ bctrl
/* 80090128 0008D068 80 9E 00 E4 */ lwz r4, 0xe4(r30)
/* 8009012C 0008D06C 38 7F 00 08 */ addi r3, r31, 8
/* 80090130 0008D070 80 84 00 20 */ lwz r4, 0x20(r4)
/* 80090134 0008D074 48 00 3F 3D */ bl init_p__15JPABaseParticleFP18JPAEmitterWorkData
/* 80090138 0008D078 38 7F 00 08 */ addi r3, r31, 8
/* 8009013C 0008D07C 48 00 00 08 */ b .L_80090144
.L_80090140:
/* 80090140 0008D080 38 60 00 00 */ li r3, 0
.L_80090144:
/* 80090144 0008D084 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80090148 0008D088 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8009014C 0008D08C 83 C1 00 08 */ lwz r30, 8(r1)
/* 80090150 0008D090 7C 08 03 A6 */ mtlr r0
/* 80090154 0008D094 38 21 00 10 */ addi r1, r1, 0x10
/* 80090158 0008D098 4E 80 00 20 */ blr
.endfn createParticle__14JPABaseEmitterFv
.fn createChild__14JPABaseEmitterFP15JPABaseParticle, global
/* 8009015C 0008D09C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80090160 0008D0A0 7C 08 02 A6 */ mflr r0
/* 80090164 0008D0A4 7C 67 1B 78 */ mr r7, r3
/* 80090168 0008D0A8 90 01 00 14 */ stw r0, 0x14(r1)
/* 8009016C 0008D0AC 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80090170 0008D0B0 80 A3 00 E0 */ lwz r5, 0xe0(r3)
/* 80090174 0008D0B4 80 05 00 08 */ lwz r0, 8(r5)
/* 80090178 0008D0B8 28 00 00 00 */ cmplwi r0, 0
/* 8009017C 0008D0BC 41 82 00 C4 */ beq .L_80090240
/* 80090180 0008D0C0 28 00 00 01 */ cmplwi r0, 1
/* 80090184 0008D0C4 3B E0 00 00 */ li r31, 0
/* 80090188 0008D0C8 40 82 00 24 */ bne .L_800901AC
/* 8009018C 0008D0CC 83 E5 00 00 */ lwz r31, 0(r5)
/* 80090190 0008D0D0 38 00 00 00 */ li r0, 0
/* 80090194 0008D0D4 90 05 00 04 */ stw r0, 4(r5)
/* 80090198 0008D0D8 90 05 00 00 */ stw r0, 0(r5)
/* 8009019C 0008D0DC 80 65 00 08 */ lwz r3, 8(r5)
/* 800901A0 0008D0E0 38 03 FF FF */ addi r0, r3, -1
/* 800901A4 0008D0E4 90 05 00 08 */ stw r0, 8(r5)
/* 800901A8 0008D0E8 48 00 00 30 */ b .L_800901D8
.L_800901AC:
/* 800901AC 0008D0EC 28 00 00 00 */ cmplwi r0, 0
/* 800901B0 0008D0F0 41 82 00 28 */ beq .L_800901D8
/* 800901B4 0008D0F4 83 E5 00 00 */ lwz r31, 0(r5)
/* 800901B8 0008D0F8 38 00 00 00 */ li r0, 0
/* 800901BC 0008D0FC 80 7F 00 04 */ lwz r3, 4(r31)
/* 800901C0 0008D100 90 03 00 00 */ stw r0, 0(r3)
/* 800901C4 0008D104 80 1F 00 04 */ lwz r0, 4(r31)
/* 800901C8 0008D108 90 05 00 00 */ stw r0, 0(r5)
/* 800901CC 0008D10C 80 65 00 08 */ lwz r3, 8(r5)
/* 800901D0 0008D110 38 03 FF FF */ addi r0, r3, -1
/* 800901D4 0008D114 90 05 00 08 */ stw r0, 8(r5)
.L_800901D8:
/* 800901D8 0008D118 80 07 00 D4 */ lwz r0, 0xd4(r7)
/* 800901DC 0008D11C 28 00 00 00 */ cmplwi r0, 0
/* 800901E0 0008D120 41 82 00 24 */ beq .L_80090204
/* 800901E4 0008D124 38 00 00 00 */ li r0, 0
/* 800901E8 0008D128 90 1F 00 00 */ stw r0, 0(r31)
/* 800901EC 0008D12C 80 07 00 D4 */ lwz r0, 0xd4(r7)
/* 800901F0 0008D130 90 1F 00 04 */ stw r0, 4(r31)
/* 800901F4 0008D134 80 67 00 D4 */ lwz r3, 0xd4(r7)
/* 800901F8 0008D138 93 E3 00 00 */ stw r31, 0(r3)
/* 800901FC 0008D13C 93 E7 00 D4 */ stw r31, 0xd4(r7)
/* 80090200 0008D140 48 00 00 18 */ b .L_80090218
.L_80090204:
/* 80090204 0008D144 93 E7 00 D8 */ stw r31, 0xd8(r7)
/* 80090208 0008D148 38 00 00 00 */ li r0, 0
/* 8009020C 0008D14C 93 E7 00 D4 */ stw r31, 0xd4(r7)
/* 80090210 0008D150 90 1F 00 00 */ stw r0, 0(r31)
/* 80090214 0008D154 90 1F 00 04 */ stw r0, 4(r31)
.L_80090218:
/* 80090218 0008D158 80 C7 00 DC */ lwz r6, 0xdc(r7)
/* 8009021C 0008D15C 7C 85 23 78 */ mr r5, r4
/* 80090220 0008D160 38 7F 00 08 */ addi r3, r31, 8
/* 80090224 0008D164 38 06 00 01 */ addi r0, r6, 1
/* 80090228 0008D168 90 07 00 DC */ stw r0, 0xdc(r7)
/* 8009022C 0008D16C 80 87 00 E4 */ lwz r4, 0xe4(r7)
/* 80090230 0008D170 80 84 00 20 */ lwz r4, 0x20(r4)
/* 80090234 0008D174 48 00 47 01 */ bl init_c__15JPABaseParticleFP18JPAEmitterWorkDataP15JPABaseParticle
/* 80090238 0008D178 38 7F 00 08 */ addi r3, r31, 8
/* 8009023C 0008D17C 48 00 00 08 */ b .L_80090244
.L_80090240:
/* 80090240 0008D180 38 60 00 00 */ li r3, 0
.L_80090244:
/* 80090244 0008D184 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80090248 0008D188 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8009024C 0008D18C 7C 08 03 A6 */ mtlr r0
/* 80090250 0008D190 38 21 00 10 */ addi r1, r1, 0x10
/* 80090254 0008D194 4E 80 00 20 */ blr
.endfn createChild__14JPABaseEmitterFP15JPABaseParticle
.fn deleteAllParticle__14JPABaseEmitterFv, global
/* 80090258 0008D198 48 00 00 AC */ b .L_80090304
.L_8009025C:
/* 8009025C 0008D19C 28 00 00 01 */ cmplwi r0, 1
/* 80090260 0008D1A0 38 C0 00 00 */ li r6, 0
/* 80090264 0008D1A4 40 82 00 24 */ bne .L_80090288
/* 80090268 0008D1A8 80 C3 00 CC */ lwz r6, 0xcc(r3)
/* 8009026C 0008D1AC 38 00 00 00 */ li r0, 0
/* 80090270 0008D1B0 90 03 00 CC */ stw r0, 0xcc(r3)
/* 80090274 0008D1B4 90 03 00 C8 */ stw r0, 0xc8(r3)
/* 80090278 0008D1B8 80 83 00 D0 */ lwz r4, 0xd0(r3)
/* 8009027C 0008D1BC 38 04 FF FF */ addi r0, r4, -1
/* 80090280 0008D1C0 90 03 00 D0 */ stw r0, 0xd0(r3)
/* 80090284 0008D1C4 48 00 00 30 */ b .L_800902B4
.L_80090288:
/* 80090288 0008D1C8 28 00 00 00 */ cmplwi r0, 0
/* 8009028C 0008D1CC 41 82 00 28 */ beq .L_800902B4
/* 80090290 0008D1D0 80 C3 00 CC */ lwz r6, 0xcc(r3)
/* 80090294 0008D1D4 38 00 00 00 */ li r0, 0
/* 80090298 0008D1D8 80 86 00 00 */ lwz r4, 0(r6)
/* 8009029C 0008D1DC 90 04 00 04 */ stw r0, 4(r4)
/* 800902A0 0008D1E0 80 06 00 00 */ lwz r0, 0(r6)
/* 800902A4 0008D1E4 90 03 00 CC */ stw r0, 0xcc(r3)
/* 800902A8 0008D1E8 80 83 00 D0 */ lwz r4, 0xd0(r3)
/* 800902AC 0008D1EC 38 04 FF FF */ addi r0, r4, -1
/* 800902B0 0008D1F0 90 03 00 D0 */ stw r0, 0xd0(r3)
.L_800902B4:
/* 800902B4 0008D1F4 80 A3 00 E0 */ lwz r5, 0xe0(r3)
/* 800902B8 0008D1F8 80 05 00 00 */ lwz r0, 0(r5)
/* 800902BC 0008D1FC 28 00 00 00 */ cmplwi r0, 0
/* 800902C0 0008D200 41 82 00 24 */ beq .L_800902E4
/* 800902C4 0008D204 38 00 00 00 */ li r0, 0
/* 800902C8 0008D208 90 06 00 00 */ stw r0, 0(r6)
/* 800902CC 0008D20C 80 05 00 00 */ lwz r0, 0(r5)
/* 800902D0 0008D210 90 06 00 04 */ stw r0, 4(r6)
/* 800902D4 0008D214 80 85 00 00 */ lwz r4, 0(r5)
/* 800902D8 0008D218 90 C4 00 00 */ stw r6, 0(r4)
/* 800902DC 0008D21C 90 C5 00 00 */ stw r6, 0(r5)
/* 800902E0 0008D220 48 00 00 18 */ b .L_800902F8
.L_800902E4:
/* 800902E4 0008D224 90 C5 00 04 */ stw r6, 4(r5)
/* 800902E8 0008D228 38 00 00 00 */ li r0, 0
/* 800902EC 0008D22C 90 C5 00 00 */ stw r6, 0(r5)
/* 800902F0 0008D230 90 06 00 00 */ stw r0, 0(r6)
/* 800902F4 0008D234 90 06 00 04 */ stw r0, 4(r6)
.L_800902F8:
/* 800902F8 0008D238 80 85 00 08 */ lwz r4, 8(r5)
/* 800902FC 0008D23C 38 04 00 01 */ addi r0, r4, 1
/* 80090300 0008D240 90 05 00 08 */ stw r0, 8(r5)
.L_80090304:
/* 80090304 0008D244 80 03 00 D0 */ lwz r0, 0xd0(r3)
/* 80090308 0008D248 28 00 00 00 */ cmplwi r0, 0
/* 8009030C 0008D24C 40 82 FF 50 */ bne .L_8009025C
/* 80090310 0008D250 48 00 00 AC */ b .L_800903BC
.L_80090314:
/* 80090314 0008D254 28 00 00 01 */ cmplwi r0, 1
/* 80090318 0008D258 38 C0 00 00 */ li r6, 0
/* 8009031C 0008D25C 40 82 00 24 */ bne .L_80090340
/* 80090320 0008D260 80 C3 00 D8 */ lwz r6, 0xd8(r3)
/* 80090324 0008D264 38 00 00 00 */ li r0, 0
/* 80090328 0008D268 90 03 00 D8 */ stw r0, 0xd8(r3)
/* 8009032C 0008D26C 90 03 00 D4 */ stw r0, 0xd4(r3)
/* 80090330 0008D270 80 83 00 DC */ lwz r4, 0xdc(r3)
/* 80090334 0008D274 38 04 FF FF */ addi r0, r4, -1
/* 80090338 0008D278 90 03 00 DC */ stw r0, 0xdc(r3)
/* 8009033C 0008D27C 48 00 00 30 */ b .L_8009036C
.L_80090340:
/* 80090340 0008D280 28 00 00 00 */ cmplwi r0, 0
/* 80090344 0008D284 41 82 00 28 */ beq .L_8009036C
/* 80090348 0008D288 80 C3 00 D8 */ lwz r6, 0xd8(r3)
/* 8009034C 0008D28C 38 00 00 00 */ li r0, 0
/* 80090350 0008D290 80 86 00 00 */ lwz r4, 0(r6)
/* 80090354 0008D294 90 04 00 04 */ stw r0, 4(r4)
/* 80090358 0008D298 80 06 00 00 */ lwz r0, 0(r6)
/* 8009035C 0008D29C 90 03 00 D8 */ stw r0, 0xd8(r3)
/* 80090360 0008D2A0 80 83 00 DC */ lwz r4, 0xdc(r3)
/* 80090364 0008D2A4 38 04 FF FF */ addi r0, r4, -1
/* 80090368 0008D2A8 90 03 00 DC */ stw r0, 0xdc(r3)
.L_8009036C:
/* 8009036C 0008D2AC 80 A3 00 E0 */ lwz r5, 0xe0(r3)
/* 80090370 0008D2B0 80 05 00 00 */ lwz r0, 0(r5)
/* 80090374 0008D2B4 28 00 00 00 */ cmplwi r0, 0
/* 80090378 0008D2B8 41 82 00 24 */ beq .L_8009039C
/* 8009037C 0008D2BC 38 00 00 00 */ li r0, 0
/* 80090380 0008D2C0 90 06 00 00 */ stw r0, 0(r6)
/* 80090384 0008D2C4 80 05 00 00 */ lwz r0, 0(r5)
/* 80090388 0008D2C8 90 06 00 04 */ stw r0, 4(r6)
/* 8009038C 0008D2CC 80 85 00 00 */ lwz r4, 0(r5)
/* 80090390 0008D2D0 90 C4 00 00 */ stw r6, 0(r4)
/* 80090394 0008D2D4 90 C5 00 00 */ stw r6, 0(r5)
/* 80090398 0008D2D8 48 00 00 18 */ b .L_800903B0
.L_8009039C:
/* 8009039C 0008D2DC 90 C5 00 04 */ stw r6, 4(r5)
/* 800903A0 0008D2E0 38 00 00 00 */ li r0, 0
/* 800903A4 0008D2E4 90 C5 00 00 */ stw r6, 0(r5)
/* 800903A8 0008D2E8 90 06 00 00 */ stw r0, 0(r6)
/* 800903AC 0008D2EC 90 06 00 04 */ stw r0, 4(r6)
.L_800903B0:
/* 800903B0 0008D2F0 80 85 00 08 */ lwz r4, 8(r5)
/* 800903B4 0008D2F4 38 04 00 01 */ addi r0, r4, 1
/* 800903B8 0008D2F8 90 05 00 08 */ stw r0, 8(r5)
.L_800903BC:
/* 800903BC 0008D2FC 80 03 00 DC */ lwz r0, 0xdc(r3)
/* 800903C0 0008D300 28 00 00 00 */ cmplwi r0, 0
/* 800903C4 0008D304 40 82 FF 50 */ bne .L_80090314
/* 800903C8 0008D308 4E 80 00 20 */ blr
.endfn deleteAllParticle__14JPABaseEmitterFv
.fn processTillStartFrame__14JPABaseEmitterFv, global
/* 800903CC 0008D30C 80 83 00 E8 */ lwz r4, 0xe8(r3)
/* 800903D0 0008D310 A8 A3 01 04 */ lha r5, 0x104(r3)
/* 800903D4 0008D314 80 84 00 2C */ lwz r4, 0x2c(r4)
/* 800903D8 0008D318 80 84 00 00 */ lwz r4, 0(r4)
/* 800903DC 0008D31C A8 04 00 70 */ lha r0, 0x70(r4)
/* 800903E0 0008D320 7C 05 00 00 */ cmpw r5, r0
/* 800903E4 0008D324 41 80 00 0C */ blt .L_800903F0
/* 800903E8 0008D328 38 60 00 01 */ li r3, 1
/* 800903EC 0008D32C 4E 80 00 20 */ blr
.L_800903F0:
/* 800903F0 0008D330 80 03 00 F4 */ lwz r0, 0xf4(r3)
/* 800903F4 0008D334 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 800903F8 0008D338 40 82 00 0C */ bne .L_80090404
/* 800903FC 0008D33C 38 05 00 01 */ addi r0, r5, 1
/* 80090400 0008D340 B0 03 01 04 */ sth r0, 0x104(r3)
.L_80090404:
/* 80090404 0008D344 38 60 00 00 */ li r3, 0
/* 80090408 0008D348 4E 80 00 20 */ blr
.endfn processTillStartFrame__14JPABaseEmitterFv
.fn processTermination__14JPABaseEmitterFv, global
/* 8009040C 0008D34C 80 03 00 F4 */ lwz r0, 0xf4(r3)
/* 80090410 0008D350 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17
/* 80090414 0008D354 41 82 00 0C */ beq .L_80090420
/* 80090418 0008D358 38 60 00 01 */ li r3, 1
/* 8009041C 0008D35C 4E 80 00 20 */ blr
.L_80090420:
/* 80090420 0008D360 80 83 00 24 */ lwz r4, 0x24(r3)
/* 80090424 0008D364 2C 04 00 00 */ cmpwi r4, 0
/* 80090428 0008D368 40 82 00 0C */ bne .L_80090434
/* 8009042C 0008D36C 38 60 00 00 */ li r3, 0
/* 80090430 0008D370 4E 80 00 20 */ blr
.L_80090434:
/* 80090434 0008D374 40 80 00 28 */ bge .L_8009045C
/* 80090438 0008D378 80 03 00 F4 */ lwz r0, 0xf4(r3)
/* 8009043C 0008D37C 60 00 00 08 */ ori r0, r0, 8
/* 80090440 0008D380 90 03 00 F4 */ stw r0, 0xf4(r3)
/* 80090444 0008D384 80 83 00 D0 */ lwz r4, 0xd0(r3)
/* 80090448 0008D388 80 03 00 DC */ lwz r0, 0xdc(r3)
/* 8009044C 0008D38C 7C 04 02 14 */ add r0, r4, r0
/* 80090450 0008D390 7C 00 00 34 */ cntlzw r0, r0
/* 80090454 0008D394 54 03 D9 7E */ srwi r3, r0, 5
/* 80090458 0008D398 4E 80 00 20 */ blr
.L_8009045C:
/* 8009045C 0008D39C 80 03 01 00 */ lwz r0, 0x100(r3)
/* 80090460 0008D3A0 7C 00 20 40 */ cmplw r0, r4
/* 80090464 0008D3A4 41 80 00 3C */ blt .L_800904A0
/* 80090468 0008D3A8 80 03 00 F4 */ lwz r0, 0xf4(r3)
/* 8009046C 0008D3AC 60 00 00 08 */ ori r0, r0, 8
/* 80090470 0008D3B0 90 03 00 F4 */ stw r0, 0xf4(r3)
/* 80090474 0008D3B4 80 03 00 F4 */ lwz r0, 0xf4(r3)
/* 80090478 0008D3B8 54 00 06 73 */ rlwinm. r0, r0, 0, 0x19, 0x19
/* 8009047C 0008D3BC 41 82 00 0C */ beq .L_80090488
/* 80090480 0008D3C0 38 60 00 00 */ li r3, 0
/* 80090484 0008D3C4 4E 80 00 20 */ blr
.L_80090488:
/* 80090488 0008D3C8 80 83 00 D0 */ lwz r4, 0xd0(r3)
/* 8009048C 0008D3CC 80 03 00 DC */ lwz r0, 0xdc(r3)
/* 80090490 0008D3D0 7C 04 02 14 */ add r0, r4, r0
/* 80090494 0008D3D4 7C 00 00 34 */ cntlzw r0, r0
/* 80090498 0008D3D8 54 03 D9 7E */ srwi r3, r0, 5
/* 8009049C 0008D3DC 4E 80 00 20 */ blr
.L_800904A0:
/* 800904A0 0008D3E0 38 60 00 00 */ li r3, 0
/* 800904A4 0008D3E4 4E 80 00 20 */ blr
.endfn processTermination__14JPABaseEmitterFv
.fn "calcEmitterGlobalPosition__14JPABaseEmitterCFPQ29JGeometry8TVec3<f>", global
/* 800904A8 0008D3E8 94 21 FF C0 */ stwu r1, -0x40(r1)
/* 800904AC 0008D3EC 7C 08 02 A6 */ mflr r0
/* 800904B0 0008D3F0 C0 23 00 98 */ lfs f1, 0x98(r3)
/* 800904B4 0008D3F4 90 01 00 44 */ stw r0, 0x44(r1)
/* 800904B8 0008D3F8 93 E1 00 3C */ stw r31, 0x3c(r1)
/* 800904BC 0008D3FC 7C 9F 23 78 */ mr r31, r4
/* 800904C0 0008D400 93 C1 00 38 */ stw r30, 0x38(r1)
/* 800904C4 0008D404 7C 7E 1B 78 */ mr r30, r3
/* 800904C8 0008D408 C0 5E 00 9C */ lfs f2, 0x9c(r30)
/* 800904CC 0008D40C 38 61 00 08 */ addi r3, r1, 8
/* 800904D0 0008D410 C0 7E 00 A0 */ lfs f3, 0xa0(r30)
/* 800904D4 0008D414 48 05 A3 01 */ bl PSMTXScale
/* 800904D8 0008D418 38 81 00 08 */ addi r4, r1, 8
/* 800904DC 0008D41C 38 7E 00 68 */ addi r3, r30, 0x68
/* 800904E0 0008D420 7C 85 23 78 */ mr r5, r4
/* 800904E4 0008D424 48 05 9E 1D */ bl PSMTXConcat
/* 800904E8 0008D428 C0 5E 00 A4 */ lfs f2, 0xa4(r30)
/* 800904EC 0008D42C 7F E5 FB 78 */ mr r5, r31
/* 800904F0 0008D430 C0 3E 00 A8 */ lfs f1, 0xa8(r30)
/* 800904F4 0008D434 38 61 00 08 */ addi r3, r1, 8
/* 800904F8 0008D438 C0 1E 00 AC */ lfs f0, 0xac(r30)
/* 800904FC 0008D43C 38 9E 00 0C */ addi r4, r30, 0xc
/* 80090500 0008D440 D0 41 00 14 */ stfs f2, 0x14(r1)
/* 80090504 0008D444 D0 21 00 24 */ stfs f1, 0x24(r1)
/* 80090508 0008D448 D0 01 00 34 */ stfs f0, 0x34(r1)
/* 8009050C 0008D44C 48 05 A6 CD */ bl PSMTXMultVec
/* 80090510 0008D450 80 01 00 44 */ lwz r0, 0x44(r1)
/* 80090514 0008D454 83 E1 00 3C */ lwz r31, 0x3c(r1)
/* 80090518 0008D458 83 C1 00 38 */ lwz r30, 0x38(r1)
/* 8009051C 0008D45C 7C 08 03 A6 */ mtlr r0
/* 80090520 0008D460 38 21 00 40 */ addi r1, r1, 0x40
/* 80090524 0008D464 4E 80 00 20 */ blr
.endfn "calcEmitterGlobalPosition__14JPABaseEmitterCFPQ29JGeometry8TVec3<f>"
.fn getCurrentCreateNumber__14JPABaseEmitterCFv, global
/* 80090528 0008D468 80 63 00 E4 */ lwz r3, 0xe4(r3)
/* 8009052C 0008D46C 80 63 00 20 */ lwz r3, 0x20(r3)
/* 80090530 0008D470 80 63 00 40 */ lwz r3, 0x40(r3)
/* 80090534 0008D474 4E 80 00 20 */ blr
.endfn getCurrentCreateNumber__14JPABaseEmitterCFv

File diff suppressed because it is too large Load Diff

View File

@ -273,7 +273,7 @@ LIBS = [
"JSystem/JParticle/JPABaseShape",
["JSystem/JParticle/JPAChildShape", True],
"JSystem/JParticle/JPADynamicsBlock",
"JSystem/JParticle/JPAEmitter",
["JSystem/JParticle/JPAEmitter", True],
"JSystem/JParticle/JPAEmitterManager",
["JSystem/JParticle/JPAExTexShape", True],
["JSystem/JParticle/JPAExtraShape", True],

View File

@ -46,13 +46,12 @@
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JKernel/JKRThread.cpp">JKernel/JKRThread.cpp</a> | 9057 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JAudio/JAL/JALCalc.cpp">JAudio/JAL/JALCalc.cpp</a> | 9063 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JAudio/JAS/JASDriverIF.cpp">JAudio/JAS/JASDriverIF.cpp</a> | 9496 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JAudio/JAS/JASBasicWaveBank.cpp">JAudio/JAS/JASBasicWaveBank.cpp</a> | 9651 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JParticle/JPAResourceLoader.cpp">JParticle/JPAResourceLoader.cpp</a> | 9814 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JAudio/JAU/JAUDataMgr.cpp">JAudio/JAU/JAUDataMgr.cpp</a> | 10083 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JParticle/JPAMath.cpp">JParticle/JPAMath.cpp</a> | 10220 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/J2D/J2DTevs.cpp">J2D/J2DTevs.cpp</a> | 10255 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JStudio/jstudio-control.cpp">JStudio/jstudio-control.cpp</a> | 10278 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JAudio/JAI/JAIBankWave.cpp">JAudio/JAI/JAIBankWave.cpp</a> | 10594 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/J2D/J2DTevs.cpp">J2D/J2DTevs.cpp</a> | 10255 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JStudio/jstudio-control.cpp">JStudio/jstudio-control.cpp</a> | 10278 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JParticle/JPAMath.cpp">JParticle/JPAMath.cpp</a> | 10313 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JAudio/JAI/JAIBankWave.cpp">JAudio/JAI/JAIBankWave.cpp</a> | 10594 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JKernel/JKRDvdArchive.cpp">JKernel/JKRDvdArchive.cpp</a> | 10649 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/J3D/J3DDrawBuffer.cpp">J3D/J3DDrawBuffer.cpp</a> | 11376 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JStudio_JStage/control.cpp">JStudio_JStage/control.cpp</a> | 11936 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JAudio/JAS/JASDSPChannel.cpp">JAudio/JAS/JASDSPChannel.cpp</a> | 12151 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JAudio/JAI/JAIInitData.cpp">JAudio/JAI/JAIInitData.cpp</a> | 12747 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JAudio/JAS/JASTaskThread.cpp">JAudio/JAS/JASTaskThread.cpp</a> | 13181 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JAudio/JAS/JASWSParser.cpp">JAudio/JAS/JASWSParser.cpp</a> | 13469 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JUtility/JUTCacheFont.cpp">JUtility/JUTCacheFont.cpp</a> | 14122 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JAudio/JAS/JASPlayer_impl.cpp">JAudio/JAS/JASPlayer_impl.cpp</a> | 14292 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JParticle/JPAEmitter.cpp">JParticle/JPAEmitter.cpp</a> | 14555 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JAudio/JAS/JASWSParser.cpp">JAudio/JAS/JASWSParser.cpp</a> | 13469 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JAudio/JAS/JASPlayer_impl.cpp">JAudio/JAS/JASPlayer_impl.cpp</a> | 14292 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JAudio/JAI/JAISequenceHeap.cpp">JAudio/JAI/JAISequenceHeap.cpp</a> | 14788 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JAudio/JAS/JASOscillator.cpp">JAudio/JAS/JASOscillator.cpp</a> | 14822 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JGadget/std-vector.cpp">JGadget/std-vector.cpp</a> | 16407 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JAudio/JAS/JASBankMgr.cpp">JAudio/JAS/JASBankMgr.cpp</a> | 16414 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/J3D/J3DTransform.cpp">J3D/J3DTransform.cpp</a> | 19101 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JAudio/JAI/JAIObject.cpp">JAudio/JAI/JAIObject.cpp</a> | 19418 |
@ -61,7 +60,6 @@
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/J3D/J3DModelLoaderCalcSize.cpp">J3D/J3DModelLoaderCalcSize.cpp</a> | 21399 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JAudio/JAS/JASHeapCtrl.cpp">JAudio/JAS/JASHeapCtrl.cpp</a> | 22633 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/J3D/J3DCluster.cpp">J3D/J3DCluster.cpp</a> | 22642 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/J2D/J2DWindow.cpp">J2D/J2DWindow.cpp</a> | 22691 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JKernel/JKRFileCache.cpp">JKernel/JKRFileCache.cpp</a> | 23071 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JKernel/JKRDvdAramRipper.cpp">JKernel/JKRDvdAramRipper.cpp</a> | 23243 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/J3D/J3DJoint.cpp">J3D/J3DJoint.cpp</a> | 23487 |
### <section id="plugProjectEbisawaU">plugProjectEbisawaU</section>
| File | Size (bytes) | File | Size (bytes) |

View File

@ -15,6 +15,7 @@ typedef u16 OSError;
// Error handler function type.
typedef void (*OSErrorHandler)(OSError error, OSContext* context, ...);
typedef void (*OSErrorHandlerNoVARG)(OSError error, OSContext* context, u32 p1, u32 p2);
// Error functions.
OSErrorHandler OSSetErrorHandler(OSError error, OSErrorHandler handler);

View File

@ -3,6 +3,13 @@
#include "Dolphin/vec.h"
#include "types.h"
#include "stl/float.h"
inline float fsqrt_step(float mag)
{
f32 root = __frsqrte(mag);
return 0.5f * root * (3.0f - mag * (root * root));
}
namespace JGeometry {
template <typename T>
@ -129,6 +136,45 @@ struct TVec3 {
z = vec.z;
}
void zero() { x = y = z = 0.0f; }
f32 squared() const { return x * x + y * y + z * z; }
void normalize()
{
f32 sq = squared();
if (sq <= FLT_EPSILON * 32.0f) {
return;
}
f32 norm;
if (sq <= 0.0f) {
norm = sq;
} else {
norm = fsqrt_step(sq);
}
x *= norm;
y *= norm;
z *= norm;
}
void normalize(const TVec3<f32>& other)
{
f32 sq = other.squared();
if (sq <= FLT_EPSILON * 32.0f) {
zero();
return;
}
f32 norm;
if (sq <= 0.0f) {
norm = sq;
} else {
norm = fsqrt_step(sq);
}
x = other.x * norm;
y = other.y * norm;
z = other.z * norm;
}
T x;
T y;
T z;

View File

@ -177,11 +177,7 @@ struct TRandom_fast_ {
TRandom_fast_(u32 param_0);
inline u32 next()
{
value = value * 0x19660d + 0x3c6ef35f;
return value;
}
inline u32 next() { return value = value * 0x19660d + 0x3c6ef35f; }
/**
* @fabricated
@ -228,6 +224,8 @@ struct TRandom_fast_ {
}
return min + v7;
}
void setSeed(u32 seed) { value = seed; }
};
inline f32 JMAFastReciprocal(f32 value) { return __fres(value); }

View File

@ -136,7 +136,7 @@ struct JPABaseEmitter {
void initFlag(u32 flag) { mFlags = flag; }
void setFlag(u32 flag) { mFlags |= flag; }
bool isFlag(u32 flag) { return mFlags & flag; }
bool isFlag(u32 flag) const { return mFlags & flag; }
void resetFlag(u32 flag) { mFlags &= ~flag; }
bool is100() { return mFlags & 0x100; }
@ -362,14 +362,14 @@ struct JPAEmitterWorkData {
JPABaseEmitter* mEmitter; // _00
JPAResource* mResource; // _04
JPAResourceManager* mResourceMgr; // _08
u32 mRndm; // _0C
JMath::TRandom_fast_ mRndm; // _0C
JGeometry::TVec3f mVolumePos; // _10
JGeometry::TVec3f mVelOmni; // _1C
JGeometry::TVec3f mVelAxis; // _28
f32 mVolumeSize; // _34
f32 mVolumeMinRad; // _38
f32 mVolumeSweep; // _3C
int mCreateNumber; // _40;
int mCreateNumber; // _40
u32 mVolumeEmitIdx; // _44
Mtx mDirectionMtx; // _48
Mtx mRotationMtx; // _78

View File

@ -2,5 +2,6 @@
#define _MSL_STRTOLD_H
long double __strtold(int max_width, int (*ReadProc)(void*, int, int), void* ReadProcArg, int* chars_scanned, int* overflow);
long strtol(const char* str, char** end, int base);
#endif

View File

@ -50,10 +50,11 @@
*/
void JPAVolumePoint(JPAEmitterWorkData* workData)
{
workData->_10 = JGeometry::TVec3f(0.0f, 0.0f, 0.0f);
workData->_1C = JGeometry::TVec3f(workData->mEmitter->mRng.nextFloat_0_1() - 0.5f, workData->mEmitter->mRng.nextFloat_0_1() - 0.5f,
workData->mEmitter->mRng.nextFloat_0_1() - 0.5f);
workData->_28 = JGeometry::TVec3f(workData->_1C.x, 0.0f, workData->_1C.z);
workData->mVolumePos.set(0.0f, 0.0f, 0.0f);
workData->mVelOmni
= JGeometry::TVec3f(workData->mEmitter->mRandom.nextFloat_0_1() - 0.5f, workData->mEmitter->mRandom.nextFloat_0_1() - 0.5f,
workData->mEmitter->mRandom.nextFloat_0_1() - 0.5f);
workData->mVelAxis = JGeometry::TVec3f(workData->mVelOmni.x, 0.0f, workData->mVelOmni.z);
/*
stwu r1, -0x20(r1)
lis r4, 0x0019660D@ha
@ -120,15 +121,15 @@ void JPAVolumePoint(JPAEmitterWorkData* workData)
*/
void JPAVolumeLine(JPAEmitterWorkData* workData)
{
if (workData->mEmitter->mResource->_2C->castData()->_08 & 2) {
workData->_10
= JGeometry::TVec3f(0.0f, 0.0f, workData->_34 * ((float)workData->_44 / ((float)workData->mCreateNumber - 1.0f) - 0.5f));
workData->_44++;
if (workData->mEmitter->mResource->mDynamicsBlock->castData()->mFlags & 2) {
workData->mVolumePos = JGeometry::TVec3f(
0.0f, 0.0f, workData->mVolumeSize * ((float)workData->mVolumeEmitIdx / ((float)workData->mCreateNumber - 1.0f) - 0.5f));
workData->mVolumeEmitIdx++;
} else {
workData->_10 = JGeometry::TVec3f(0.0f, 0.0f, workData->_34 * (workData->mEmitter->mRng.nextFloat_0_1() - 0.5f));
workData->mVolumePos = JGeometry::TVec3f(0.0f, 0.0f, workData->mVolumeSize * (workData->mEmitter->mRandom.nextFloat_0_1() - 0.5f));
}
workData->_1C = JGeometry::TVec3f(0.0f, 0.0f, workData->_10.z * workData->_11C);
workData->_28 = JGeometry::TVec3f(0.0f, 0.0f, workData->_10.z);
workData->mVelOmni = JGeometry::TVec3f(0.0f, 0.0f, workData->mVolumePos.z * workData->mGlobalScl.z);
workData->mVelAxis = JGeometry::TVec3f(0.0f, 0.0f, workData->mVolumePos.z);
/*
stwu r1, -0x20(r1)
lwz r6, 0(r3)

View File

@ -23,7 +23,7 @@ void JPABaseEmitter::init(JPAEmitterManager* manager, JPAResource* resource)
mResource->getDyn()->getEmitterScl(&mLocalScl);
mResource->getDyn()->getEmitterTrs(&mLocalTrs);
mResource->getDyn()->getEmitterDir(&mLocalDir);
// mLocalDir.normalize();
mLocalDir.normalize();
mResource->getDyn()->getEmitterRot(&mLocalRot);
mMaxFrame = mResource->getDyn()->getMaxFrame();
mLifeTime = mResource->getDyn()->getLifetime();
@ -38,10 +38,10 @@ void JPABaseEmitter::init(JPAEmitterManager* manager, JPAResource* resource)
mSpread = mResource->getDyn()->getInitVelDirSp();
mRndmDirSpeed = mResource->getDyn()->getInitVelRndm();
mAirResist = mResource->getDyn()->getAirRes();
// mRandom.set_seed(mManager->mWorkData->mRndm.get_rndm_u());
mRandom.setSeed(mManager->mWorkData->mRndm.next());
PSMTXIdentity(mGlobalRot);
mGlobalScl.set(1.0f, 1.0f, 1.0f);
// mGlobalTrs.zero();
mGlobalTrs.zero();
mGlobalPScl.set(1.0f, 1.0f);
mGlobalEnvClr.a = 0xff;
mGlobalEnvClr.b = 0xff;
@ -294,7 +294,8 @@ lbl_8008FE08:
*/
JPABaseParticle* JPABaseEmitter::createParticle()
{
if (mPtclPool->getNum() != 0) {
if (mPtclPool->mNum != 0) {
JPANode<JPABaseParticle>* node = mPtclPool->pop_front();
mAlivePtclBase.push_front(node);
mResource->getDyn()->calc(mManager->mWorkData);
@ -303,91 +304,6 @@ JPABaseParticle* JPABaseEmitter::createParticle()
}
return nullptr;
/*
stwu r1, -0x10(r1)
mflr r0
stw r0, 0x14(r1)
stw r31, 0xc(r1)
stw r30, 8(r1)
mr r30, r3
lwz r4, 0xe0(r3)
lwz r0, 8(r4)
cmplwi r0, 0
beq lbl_80090140
cmplwi r0, 1
li r31, 0
bne lbl_80090094
lwz r31, 0(r4)
li r0, 0
stw r0, 4(r4)
stw r0, 0(r4)
lwz r3, 8(r4)
addi r0, r3, -1
stw r0, 8(r4)
b lbl_800900C0
lbl_80090094:
cmplwi r0, 0
beq lbl_800900C0
lwz r31, 0(r4)
li r0, 0
lwz r3, 4(r31)
stw r0, 0(r3)
lwz r0, 4(r31)
stw r0, 0(r4)
lwz r3, 8(r4)
addi r0, r3, -1
stw r0, 8(r4)
lbl_800900C0:
lwz r0, 0xc8(r30)
cmplwi r0, 0
beq lbl_800900EC
li r0, 0
stw r0, 0(r31)
lwz r0, 0xc8(r30)
stw r0, 4(r31)
lwz r3, 0xc8(r30)
stw r31, 0(r3)
stw r31, 0xc8(r30)
b lbl_80090100
lbl_800900EC:
stw r31, 0xcc(r30)
li r0, 0
stw r31, 0xc8(r30)
stw r0, 0(r31)
stw r0, 4(r31)
lbl_80090100:
lwz r3, 0xd0(r30)
addi r0, r3, 1
stw r0, 0xd0(r30)
lwz r3, 0xe8(r30)
lwz r5, 0xe4(r30)
lwz r4, 0x2c(r3)
lwz r3, 0x20(r5)
lwz r12, 4(r4)
mtctr r12
bctrl
lwz r4, 0xe4(r30)
addi r3, r31, 8
lwz r4, 0x20(r4)
bl init_p__15JPABaseParticleFP18JPAEmitterWorkData
addi r3, r31, 8
b lbl_80090144
lbl_80090140:
li r3, 0
lbl_80090144:
lwz r0, 0x14(r1)
lwz r31, 0xc(r1)
lwz r30, 8(r1)
mtlr r0
addi r1, r1, 0x10
blr
*/
}
/*
@ -397,7 +313,7 @@ lbl_80090144:
*/
JPABaseParticle* JPABaseEmitter::createChild(JPABaseParticle* parent)
{
if (mPtclPool->getNum() != 0) {
if (mPtclPool->mNum != 0) {
JPANode<JPABaseParticle>* node = mPtclPool->pop_front();
mAlivePtclChld.push_front(node);
node->mData.init_c(mManager->mWorkData, parent);
@ -405,83 +321,6 @@ JPABaseParticle* JPABaseEmitter::createChild(JPABaseParticle* parent)
}
return nullptr;
/*
stwu r1, -0x10(r1)
mflr r0
mr r7, r3
stw r0, 0x14(r1)
stw r31, 0xc(r1)
lwz r5, 0xe0(r3)
lwz r0, 8(r5)
cmplwi r0, 0
beq lbl_80090240
cmplwi r0, 1
li r31, 0
bne lbl_800901AC
lwz r31, 0(r5)
li r0, 0
stw r0, 4(r5)
stw r0, 0(r5)
lwz r3, 8(r5)
addi r0, r3, -1
stw r0, 8(r5)
b lbl_800901D8
lbl_800901AC:
cmplwi r0, 0
beq lbl_800901D8
lwz r31, 0(r5)
li r0, 0
lwz r3, 4(r31)
stw r0, 0(r3)
lwz r0, 4(r31)
stw r0, 0(r5)
lwz r3, 8(r5)
addi r0, r3, -1
stw r0, 8(r5)
lbl_800901D8:
lwz r0, 0xd4(r7)
cmplwi r0, 0
beq lbl_80090204
li r0, 0
stw r0, 0(r31)
lwz r0, 0xd4(r7)
stw r0, 4(r31)
lwz r3, 0xd4(r7)
stw r31, 0(r3)
stw r31, 0xd4(r7)
b lbl_80090218
lbl_80090204:
stw r31, 0xd8(r7)
li r0, 0
stw r31, 0xd4(r7)
stw r0, 0(r31)
stw r0, 4(r31)
lbl_80090218:
lwz r6, 0xdc(r7)
mr r5, r4
addi r3, r31, 8
addi r0, r6, 1
stw r0, 0xdc(r7)
lwz r4, 0xe4(r7)
lwz r4, 0x20(r4)
bl init_c__15JPABaseParticleFP18JPAEmitterWorkDataP15JPABaseParticle
addi r3, r31, 8
b lbl_80090244
lbl_80090240:
li r3, 0
lbl_80090244:
lwz r0, 0x14(r1)
lwz r31, 0xc(r1)
mtlr r0
addi r1, r1, 0x10
blr
*/
}
/*
@ -539,57 +378,6 @@ bool JPABaseEmitter::processTermination()
return getParticleNumber() == 0;
}
return false;
/*
lwz r0, 0xf4(r3)
rlwinm. r0, r0, 0, 0x17, 0x17
beq lbl_80090420
li r3, 1
blr
lbl_80090420:
lwz r4, 0x24(r3)
cmpwi r4, 0
bne lbl_80090434
li r3, 0
blr
lbl_80090434:
bge lbl_8009045C
lwz r0, 0xf4(r3)
ori r0, r0, 8
stw r0, 0xf4(r3)
lwz r4, 0xd0(r3)
lwz r0, 0xdc(r3)
add r0, r4, r0
cntlzw r0, r0
srwi r3, r0, 5
blr
lbl_8009045C:
lwz r0, 0x100(r3)
cmplw r0, r4
blt lbl_800904A0
lwz r0, 0xf4(r3)
ori r0, r0, 8
stw r0, 0xf4(r3)
lwz r0, 0xf4(r3)
rlwinm. r0, r0, 0, 0x19, 0x19
beq lbl_80090488
li r3, 0
blr
lbl_80090488:
lwz r4, 0xd0(r3)
lwz r0, 0xdc(r3)
add r0, r4, r0
cntlzw r0, r0
srwi r3, r0, 5
blr
lbl_800904A0:
li r3, 0
blr
*/
}
/*

View File

@ -46,30 +46,31 @@ void JPAGetDirMtx(const JGeometry::TVec3f& vec, Mtx mtx)
local_78.x = vec.y;
local_78.y = minusx;
local_78.z = 0.0f;
f32 len; // = local_78.length();
local_78.normalize();
// 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 - vec.z) * (local_78.x * local_78.y);
mtx[0][0] = xsquared + vec.z * (1.0f - xsquared);
mtx[0][1] = fVar5;
mtx[0][2] = -ylen;
mtx[0][3] = 0.0f;
mtx[1][0] = fVar5;
mtx[1][1] = ysquared + vec.z * (1.0f - ysquared);
mtx[1][2] = xlen;
mtx[1][3] = 0.0f;
mtx[2][0] = ylen;
mtx[2][1] = -xlen;
mtx[2][2] = vec.z;
mtx[2][3] = 0.0f;
// // 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 - vec.z) * (local_78.x * local_78.y);
// mtx[0][0] = xsquared + vec.z * (1.0f - xsquared);
// mtx[0][1] = fVar5;
// mtx[0][2] = -ylen;
// mtx[0][3] = 0.0f;
// mtx[1][0] = fVar5;
// mtx[1][1] = ysquared + vec.z * (1.0f - ysquared);
// mtx[1][2] = xlen;
// mtx[1][3] = 0.0f;
// mtx[2][0] = ylen;
// mtx[2][1] = -xlen;
// mtx[2][2] = vec.z;
// mtx[2][3] = 0.0f;
/*
lfs f0, 0(r3)
lfs f3, 4(r3)

View File

@ -2,7 +2,7 @@ JPARTICLE_FILES:=\
$(BUILD_DIR)/asm/JSystem/JParticle/JPABaseShape.o\
$(BUILD_DIR)/src/JSystem/JParticle/JPAChildShape.o\
$(BUILD_DIR)/asm/JSystem/JParticle/JPADynamicsBlock.o\
$(BUILD_DIR)/asm/JSystem/JParticle/JPAEmitter.o\
$(BUILD_DIR)/src/JSystem/JParticle/JPAEmitter.o\
$(BUILD_DIR)/asm/JSystem/JParticle/JPAEmitterManager.o\
$(BUILD_DIR)/src/JSystem/JParticle/JPAExTexShape.o\
$(BUILD_DIR)/src/JSystem/JParticle/JPAExtraShape.o\

View File

@ -7,10 +7,12 @@
#include "JSystem/JKernel/JKRThread.h"
#include "JSystem/JSupport/JSUList.h"
#include "JSystem/JUtility/JUTConsole.h"
#include "JSystem/JUtility/JUTDirectFile.h"
#include "JSystem/JUtility/JUTDirectPrint.h"
#include "JSystem/JUtility/JUTException.h"
#include "JSystem/JUtility/JUTExternalFB.h"
#include "JSystem/JUtility/JUTGamePad.h"
#include "PowerPC_EABI_Support/MSL_C/MSL_Common/strtold.h"
#include "types.h"
JUTException* JUTException::sErrorManager;
@ -88,11 +90,13 @@ void* JUTException::run()
OSReceiveMessage(&sMessageQueue, (void**)&msg, OS_MESSAGE_BLOCK);
VISetPreRetraceCallback(nullptr);
VISetPostRetraceCallback(nullptr);
OSError error = msg->mError;
OSErrorHandler handler = msg->mErrorHandler;
OSContext* context = msg->mContext;
u32 v1 = msg->_0C;
u32 v2 = msg->_10;
OSErrorHandler handler;
OSError error;
error = msg->mError;
handler = msg->mErrorHandler;
OSContext* context = msg->mContext;
u32 v1 = msg->_0C;
u32 v2 = msg->_10;
if (error < OS_ERROR_MAX + 1) {
mStackPointer = (void*)context->gpr[1];
}
@ -103,7 +107,7 @@ void* JUTException::run()
sErrorManager->mDirectPrint->changeFrameBuffer(mFrameMemory, sErrorManager->mDirectPrint->mFBWidth,
sErrorManager->mDirectPrint->mFBHeight);
if (handler != nullptr) {
handler(error, context, v1, v2);
((OSErrorHandlerNoVARG)handler)(error, context, v1, v2);
}
OSDisableInterrupts();
mFrameMemory = (JUTExternalFB*)VIGetCurrentFrameBuffer();
@ -111,88 +115,6 @@ void* JUTException::run()
sErrorManager->mDirectPrint->mFBHeight);
sErrorManager->printContext(error, context, v1, v2);
}
/*
stwu r1, -0x30(r1)
mflr r0
stw r0, 0x34(r1)
stmw r25, 0x14(r1)
mr r31, r3
bl PPCMfmsr
li r0, -2305
and r3, r3, r0
bl PPCMtmsr
lis r3, sMessageQueue__12JUTException@ha
addi r4, r13, sMessageBuffer__12JUTException@sda21
addi r3, r3, sMessageQueue__12JUTException@l
li r5, 1
bl OSInitMessageQueue
lis r3, sMessageQueue__12JUTException@ha
addi r30, r3, sMessageQueue__12JUTException@l
lbl_8002A45C:
mr r3, r30
addi r4, r1, 8
li r5, 1
bl OSReceiveMessage
li r3, 0
bl VISetPreRetraceCallback
li r3, 0
bl VISetPostRetraceCallback
lwz r3, 8(r1)
lhz r28, 4(r3)
lwz r29, 0(r3)
cmplwi r28, 0x11
lwz r27, 8(r3)
lwz r26, 0xc(r3)
lwz r25, 0x10(r3)
bge lbl_8002A4A4
lwz r0, 4(r27)
stw r0, 0xa0(r31)
lbl_8002A4A4:
bl VIGetCurrentFrameBuffer
stw r3, 0x7c(r31)
lwz r0, 0x7c(r31)
cmplwi r0, 0
bne lbl_8002A4C0
lwz r3, sErrorManager__12JUTException@sda21(r13)
bl createFB__12JUTExceptionFv
lbl_8002A4C0:
lwz r3, sErrorManager__12JUTException@sda21(r13)
lwz r4, 0x7c(r31)
lwz r3, 0x80(r3)
lhz r5, 4(r3)
lhz r6, 6(r3)
bl changeFrameBuffer__14JUTDirectPrintFPvUsUs
cmplwi r29, 0
beq lbl_8002A4FC
mr r12, r29
mr r3, r28
mr r4, r27
mr r5, r26
mr r6, r25
mtctr r12
bctrl
lbl_8002A4FC:
bl OSDisableInterrupts
bl VIGetCurrentFrameBuffer
stw r3, 0x7c(r31)
lwz r3, sErrorManager__12JUTException@sda21(r13)
lwz r4, 0x7c(r31)
lwz r3, 0x80(r3)
lhz r5, 4(r3)
lhz r6, 6(r3)
bl changeFrameBuffer__14JUTDirectPrintFPvUsUs
lwz r3, sErrorManager__12JUTException@sda21(r13)
mr r4, r28
mr r5, r27
mr r6, r26
mr r7, r25
bl printContext__12JUTExceptionFUsP9OSContextUlUl
b lbl_8002A45C
*/
}
/*
@ -217,11 +139,6 @@ void JUTException::errorHandler(OSError error, OSContext* context, u32 p3, u32 p
exCallbackObject.mContext = context;
exCallbackObject._0C = p3;
exCallbackObject._10 = p4;
// exCallbackObject[0] = (void*)sPreUserCallback;
// exCallbackObject[1] = (void*)error;
// exCallbackObject[2] = (void*)context;
// exCallbackObject[3] = (void*)p3;
// exCallbackObject[4] = (void*)p4;
OSSendMessage(&sMessageQueue, &exCallbackObject, OS_MESSAGE_BLOCK);
OSEnableScheduler();
OSYieldThread();
@ -1312,8 +1229,127 @@ bool JUTException::queryMapAddress(char* p1, u32 p2, long p3, u32* p4, u32* p5,
* Address: 8002C924
* Size: 00033C
*/
bool JUTException::queryMapAddress_single(char*, u32, long, u32*, u32*, char*, u32, bool, bool)
bool JUTException::queryMapAddress_single(char* mapPath, u32 address, s32 section_id, u32* out_addr, u32* out_size, char* out_line,
u32 line_length, bool print, bool begin_with_newline)
{
if (!mapPath) {
return false;
}
char section_name[16];
char buffer[0x200];
JUTDirectFile file;
int i = 0;
if (!file.fopen(mapPath)) {
return false;
}
int result = 0;
do {
char* src = buffer;
int found_section = 0;
do {
i++;
while (true) {
while (true) {
int length = file.fgets(buffer, ARRAY_SIZE(buffer));
if (length < 0)
goto next_section;
if (buffer[0] == '.')
break;
}
char* dst = section_name;
int i = 0;
char* src = buffer + 1;
for (; *src != '\0'; i++, dst++, src++) {
*dst = *src;
if (*src == ' ' || i == 0xf)
break;
}
section_name[i] = 0;
if (*src == 0)
break;
if (src[1] == 's' && src[2] == 'e' && src[3] == 'c' && src[4] == 't') {
found_section = true;
break;
}
}
if ((found_section & 0xFF) == 0)
goto end;
} while (section_id >= 0 && section_id != i);
next_section:;
u32 addr;
int size;
do {
int length;
do {
length = file.fgets(buffer, ARRAY_SIZE(buffer));
if (length <= 4)
goto next_symbol;
} while ((length < 28) || (buffer[28] != '4'));
addr = strtol(buffer + 19, nullptr, 16);
addr = ((buffer[18] - '0') << 28) | addr;
size = strtol(buffer + 11, nullptr, 16);
} while (addr > address || address >= addr + size);
if (out_addr)
*out_addr = addr;
if (out_size)
*out_size = size;
if (out_line) {
src = buffer + 0x1e;
char* dst = out_line;
u32 length = 0;
for (; length < line_length - 1; src++) {
u32 ch = *(u8*)src;
if (ch < ' ' && ch != '\t')
break;
if (((int)ch == ' ' || ch == '\t') && (length != 0)) {
if (dst[-1] != ' ') {
*dst = ' ';
dst++;
length++;
}
} else {
*dst = ch;
dst++;
length++;
}
}
if (length != 0 && dst[-1] == ' ') {
dst--;
}
*dst = 0;
if (print) {
if (begin_with_newline) {
sConsole->print("\n");
}
sConsole->print_f(" [%08X]: .%s [%08X: %XH]\n %s\n", address, section_name, addr, size, out_line);
begin_with_newline = false;
}
}
result = true;
next_symbol:;
} while (section_id >= 0 && section_id != i);
if (print && begin_with_newline) {
sConsole->print("\n");
}
end:
int bresult = result != 0;
file.fclose();
return bresult;
/*
.loc_0x0:
stwu r1, -0xAD0(r1)

View File

@ -19,7 +19,7 @@ JUTILITY_FILES:=\
$(BUILD_DIR)/src/JSystem/JUtility/JUTTexture.o\
$(BUILD_DIR)/src/JSystem/JUtility/JUTVideo.o\
$(BUILD_DIR)/src/JSystem/JUtility/JUTXfb.o\
$(BUILD_DIR)/asm/JSystem/JUtility/JUTCacheFont.o\
$(BUILD_DIR)/src/JSystem/JUtility/JUTCacheFont.o\
DEPENDS += $(JUTILITY_FILES:.o=.d)

View File

@ -679,3 +679,5 @@ You have 3037 out of 10000 Pokos and 85 out of 201 treasures.",2023-10-17 22:44:
You have 3042 out of 10000 Pokos and 85 out of 201 treasures.",2023-10-17 23:03:52.451200
3050,1419348,0.30508181668111095,85,303725,0.42606781734319416,"
You have 3050 out of 10000 Pokos and 85 out of 201 treasures.",2023-10-19 00:28:49.397557
3055,1421552,0.3055555555555556,85,303745,0.4260958735003984,"
You have 3055 out of 10000 Pokos and 85 out of 201 treasures.",2023-10-19 02:45:58.534300

1 code_count_in_pokos code_completion_in_bytes code_completion_in_percentage data_count_in_treasures data_completion_in_bytes data_completion_in_percentage sentence created_at
679
680
681
682
683