Merge pull request #170 from magcius/jpa3

JPAExtraShape
This commit is contained in:
TakaRikka 2021-12-31 06:35:39 -08:00 committed by GitHub
commit b8573fe911
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
51 changed files with 2476 additions and 1796 deletions

View File

@ -1,70 +0,0 @@
lbl_80277024:
/* 80277024 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80277028 7C 08 02 A6 */ mflr r0
/* 8027702C 90 01 00 24 */ stw r0, 0x24(r1)
/* 80277030 80 63 00 00 */ lwz r3, 0(r3)
/* 80277034 80 03 01 08 */ lwz r0, 0x108(r3)
/* 80277038 90 01 00 14 */ stw r0, 0x14(r1)
/* 8027703C 80 04 00 90 */ lwz r0, 0x90(r4)
/* 80277040 90 01 00 10 */ stw r0, 0x10(r1)
/* 80277044 88 C1 00 14 */ lbz r6, 0x14(r1)
/* 80277048 88 A3 00 B8 */ lbz r5, 0xb8(r3)
/* 8027704C 38 05 00 01 */ addi r0, r5, 1
/* 80277050 7C 06 01 D6 */ mullw r0, r6, r0
/* 80277054 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80277058 98 01 00 14 */ stb r0, 0x14(r1)
/* 8027705C 88 C1 00 15 */ lbz r6, 0x15(r1)
/* 80277060 88 A3 00 B9 */ lbz r5, 0xb9(r3)
/* 80277064 38 05 00 01 */ addi r0, r5, 1
/* 80277068 7C 06 01 D6 */ mullw r0, r6, r0
/* 8027706C 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80277070 98 01 00 15 */ stb r0, 0x15(r1)
/* 80277074 88 C1 00 16 */ lbz r6, 0x16(r1)
/* 80277078 88 A3 00 BA */ lbz r5, 0xba(r3)
/* 8027707C 38 05 00 01 */ addi r0, r5, 1
/* 80277080 7C 06 01 D6 */ mullw r0, r6, r0
/* 80277084 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80277088 98 01 00 16 */ stb r0, 0x16(r1)
/* 8027708C 88 C1 00 17 */ lbz r6, 0x17(r1)
/* 80277090 88 A3 00 BB */ lbz r5, 0xbb(r3)
/* 80277094 38 05 00 01 */ addi r0, r5, 1
/* 80277098 7C 06 01 D6 */ mullw r0, r6, r0
/* 8027709C 54 05 C6 3E */ rlwinm r5, r0, 0x18, 0x18, 0x1f
/* 802770A0 98 A1 00 17 */ stb r5, 0x17(r1)
/* 802770A4 88 84 00 96 */ lbz r4, 0x96(r4)
/* 802770A8 38 04 00 01 */ addi r0, r4, 1
/* 802770AC 7C 05 01 D6 */ mullw r0, r5, r0
/* 802770B0 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 802770B4 98 01 00 17 */ stb r0, 0x17(r1)
/* 802770B8 88 A1 00 10 */ lbz r5, 0x10(r1)
/* 802770BC 88 83 00 BC */ lbz r4, 0xbc(r3)
/* 802770C0 38 04 00 01 */ addi r0, r4, 1
/* 802770C4 7C 05 01 D6 */ mullw r0, r5, r0
/* 802770C8 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 802770CC 98 01 00 10 */ stb r0, 0x10(r1)
/* 802770D0 88 A1 00 11 */ lbz r5, 0x11(r1)
/* 802770D4 88 83 00 BD */ lbz r4, 0xbd(r3)
/* 802770D8 38 04 00 01 */ addi r0, r4, 1
/* 802770DC 7C 05 01 D6 */ mullw r0, r5, r0
/* 802770E0 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 802770E4 98 01 00 11 */ stb r0, 0x11(r1)
/* 802770E8 88 81 00 12 */ lbz r4, 0x12(r1)
/* 802770EC 88 63 00 BE */ lbz r3, 0xbe(r3)
/* 802770F0 38 03 00 01 */ addi r0, r3, 1
/* 802770F4 7C 04 01 D6 */ mullw r0, r4, r0
/* 802770F8 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 802770FC 98 01 00 12 */ stb r0, 0x12(r1)
/* 80277100 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80277104 90 01 00 0C */ stw r0, 0xc(r1)
/* 80277108 38 60 00 01 */ li r3, 1
/* 8027710C 38 81 00 0C */ addi r4, r1, 0xc
/* 80277110 48 0E 82 6D */ bl GXSetTevColor
/* 80277114 80 01 00 10 */ lwz r0, 0x10(r1)
/* 80277118 90 01 00 08 */ stw r0, 8(r1)
/* 8027711C 38 60 00 02 */ li r3, 2
/* 80277120 38 81 00 08 */ addi r4, r1, 8
/* 80277124 48 0E 82 59 */ bl GXSetTevColor
/* 80277128 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8027712C 7C 08 03 A6 */ mtlr r0
/* 80277130 38 21 00 20 */ addi r1, r1, 0x20
/* 80277134 4E 80 00 20 */ blr

View File

@ -1,45 +0,0 @@
lbl_80276DB0:
/* 80276DB0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80276DB4 7C 08 02 A6 */ mflr r0
/* 80276DB8 90 01 00 14 */ stw r0, 0x14(r1)
/* 80276DBC 80 C3 00 00 */ lwz r6, 0(r3)
/* 80276DC0 80 06 01 08 */ lwz r0, 0x108(r6)
/* 80276DC4 90 01 00 0C */ stw r0, 0xc(r1)
/* 80276DC8 88 A1 00 0C */ lbz r5, 0xc(r1)
/* 80276DCC 88 66 00 B8 */ lbz r3, 0xb8(r6)
/* 80276DD0 38 03 00 01 */ addi r0, r3, 1
/* 80276DD4 7C 05 01 D6 */ mullw r0, r5, r0
/* 80276DD8 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276DDC 98 01 00 0C */ stb r0, 0xc(r1)
/* 80276DE0 88 A1 00 0D */ lbz r5, 0xd(r1)
/* 80276DE4 88 66 00 B9 */ lbz r3, 0xb9(r6)
/* 80276DE8 38 03 00 01 */ addi r0, r3, 1
/* 80276DEC 7C 05 01 D6 */ mullw r0, r5, r0
/* 80276DF0 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276DF4 98 01 00 0D */ stb r0, 0xd(r1)
/* 80276DF8 88 A1 00 0E */ lbz r5, 0xe(r1)
/* 80276DFC 88 66 00 BA */ lbz r3, 0xba(r6)
/* 80276E00 38 03 00 01 */ addi r0, r3, 1
/* 80276E04 7C 05 01 D6 */ mullw r0, r5, r0
/* 80276E08 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276E0C 98 01 00 0E */ stb r0, 0xe(r1)
/* 80276E10 88 A1 00 0F */ lbz r5, 0xf(r1)
/* 80276E14 88 66 00 BB */ lbz r3, 0xbb(r6)
/* 80276E18 38 03 00 01 */ addi r0, r3, 1
/* 80276E1C 7C 05 01 D6 */ mullw r0, r5, r0
/* 80276E20 54 05 C6 3E */ rlwinm r5, r0, 0x18, 0x18, 0x1f
/* 80276E24 98 A1 00 0F */ stb r5, 0xf(r1)
/* 80276E28 88 64 00 96 */ lbz r3, 0x96(r4)
/* 80276E2C 38 03 00 01 */ addi r0, r3, 1
/* 80276E30 7C 05 01 D6 */ mullw r0, r5, r0
/* 80276E34 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276E38 98 01 00 0F */ stb r0, 0xf(r1)
/* 80276E3C 80 01 00 0C */ lwz r0, 0xc(r1)
/* 80276E40 90 01 00 08 */ stw r0, 8(r1)
/* 80276E44 38 60 00 01 */ li r3, 1
/* 80276E48 38 81 00 08 */ addi r4, r1, 8
/* 80276E4C 48 0E 85 31 */ bl GXSetTevColor
/* 80276E50 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80276E54 7C 08 03 A6 */ mtlr r0
/* 80276E58 38 21 00 10 */ addi r1, r1, 0x10
/* 80276E5C 4E 80 00 20 */ blr

View File

@ -1,34 +0,0 @@
lbl_80276C2C:
/* 80276C2C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80276C30 7C 08 02 A6 */ mflr r0
/* 80276C34 90 01 00 14 */ stw r0, 0x14(r1)
/* 80276C38 80 A3 00 00 */ lwz r5, 0(r3)
/* 80276C3C 80 05 01 0C */ lwz r0, 0x10c(r5)
/* 80276C40 90 01 00 0C */ stw r0, 0xc(r1)
/* 80276C44 88 81 00 0C */ lbz r4, 0xc(r1)
/* 80276C48 88 65 00 BC */ lbz r3, 0xbc(r5)
/* 80276C4C 38 03 00 01 */ addi r0, r3, 1
/* 80276C50 7C 04 01 D6 */ mullw r0, r4, r0
/* 80276C54 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276C58 98 01 00 0C */ stb r0, 0xc(r1)
/* 80276C5C 88 81 00 0D */ lbz r4, 0xd(r1)
/* 80276C60 88 65 00 BD */ lbz r3, 0xbd(r5)
/* 80276C64 38 03 00 01 */ addi r0, r3, 1
/* 80276C68 7C 04 01 D6 */ mullw r0, r4, r0
/* 80276C6C 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276C70 98 01 00 0D */ stb r0, 0xd(r1)
/* 80276C74 88 81 00 0E */ lbz r4, 0xe(r1)
/* 80276C78 88 65 00 BE */ lbz r3, 0xbe(r5)
/* 80276C7C 38 03 00 01 */ addi r0, r3, 1
/* 80276C80 7C 04 01 D6 */ mullw r0, r4, r0
/* 80276C84 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276C88 98 01 00 0E */ stb r0, 0xe(r1)
/* 80276C8C 80 01 00 0C */ lwz r0, 0xc(r1)
/* 80276C90 90 01 00 08 */ stw r0, 8(r1)
/* 80276C94 38 60 00 02 */ li r3, 2
/* 80276C98 38 81 00 08 */ addi r4, r1, 8
/* 80276C9C 48 0E 86 E1 */ bl GXSetTevColor
/* 80276CA0 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80276CA4 7C 08 03 A6 */ mtlr r0
/* 80276CA8 38 21 00 10 */ addi r1, r1, 0x10
/* 80276CAC 4E 80 00 20 */ blr

View File

@ -1,34 +0,0 @@
lbl_80277138:
/* 80277138 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8027713C 7C 08 02 A6 */ mflr r0
/* 80277140 90 01 00 14 */ stw r0, 0x14(r1)
/* 80277144 80 A3 00 00 */ lwz r5, 0(r3)
/* 80277148 80 04 00 90 */ lwz r0, 0x90(r4)
/* 8027714C 90 01 00 0C */ stw r0, 0xc(r1)
/* 80277150 88 81 00 0C */ lbz r4, 0xc(r1)
/* 80277154 88 65 00 BC */ lbz r3, 0xbc(r5)
/* 80277158 38 03 00 01 */ addi r0, r3, 1
/* 8027715C 7C 04 01 D6 */ mullw r0, r4, r0
/* 80277160 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80277164 98 01 00 0C */ stb r0, 0xc(r1)
/* 80277168 88 81 00 0D */ lbz r4, 0xd(r1)
/* 8027716C 88 65 00 BD */ lbz r3, 0xbd(r5)
/* 80277170 38 03 00 01 */ addi r0, r3, 1
/* 80277174 7C 04 01 D6 */ mullw r0, r4, r0
/* 80277178 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 8027717C 98 01 00 0D */ stb r0, 0xd(r1)
/* 80277180 88 81 00 0E */ lbz r4, 0xe(r1)
/* 80277184 88 65 00 BE */ lbz r3, 0xbe(r5)
/* 80277188 38 03 00 01 */ addi r0, r3, 1
/* 8027718C 7C 04 01 D6 */ mullw r0, r4, r0
/* 80277190 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80277194 98 01 00 0E */ stb r0, 0xe(r1)
/* 80277198 80 01 00 0C */ lwz r0, 0xc(r1)
/* 8027719C 90 01 00 08 */ stw r0, 8(r1)
/* 802771A0 38 60 00 02 */ li r3, 2
/* 802771A4 38 81 00 08 */ addi r4, r1, 8
/* 802771A8 48 0E 81 D5 */ bl GXSetTevColor
/* 802771AC 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802771B0 7C 08 03 A6 */ mtlr r0
/* 802771B4 38 21 00 10 */ addi r1, r1, 0x10
/* 802771B8 4E 80 00 20 */ blr

View File

@ -1,70 +0,0 @@
lbl_80276F10:
/* 80276F10 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80276F14 7C 08 02 A6 */ mflr r0
/* 80276F18 90 01 00 24 */ stw r0, 0x24(r1)
/* 80276F1C 80 63 00 00 */ lwz r3, 0(r3)
/* 80276F20 80 04 00 8C */ lwz r0, 0x8c(r4)
/* 80276F24 90 01 00 14 */ stw r0, 0x14(r1)
/* 80276F28 80 04 00 90 */ lwz r0, 0x90(r4)
/* 80276F2C 90 01 00 10 */ stw r0, 0x10(r1)
/* 80276F30 88 C1 00 14 */ lbz r6, 0x14(r1)
/* 80276F34 88 A3 00 B8 */ lbz r5, 0xb8(r3)
/* 80276F38 38 05 00 01 */ addi r0, r5, 1
/* 80276F3C 7C 06 01 D6 */ mullw r0, r6, r0
/* 80276F40 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276F44 98 01 00 14 */ stb r0, 0x14(r1)
/* 80276F48 88 C1 00 15 */ lbz r6, 0x15(r1)
/* 80276F4C 88 A3 00 B9 */ lbz r5, 0xb9(r3)
/* 80276F50 38 05 00 01 */ addi r0, r5, 1
/* 80276F54 7C 06 01 D6 */ mullw r0, r6, r0
/* 80276F58 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276F5C 98 01 00 15 */ stb r0, 0x15(r1)
/* 80276F60 88 C1 00 16 */ lbz r6, 0x16(r1)
/* 80276F64 88 A3 00 BA */ lbz r5, 0xba(r3)
/* 80276F68 38 05 00 01 */ addi r0, r5, 1
/* 80276F6C 7C 06 01 D6 */ mullw r0, r6, r0
/* 80276F70 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276F74 98 01 00 16 */ stb r0, 0x16(r1)
/* 80276F78 88 C1 00 17 */ lbz r6, 0x17(r1)
/* 80276F7C 88 A3 00 BB */ lbz r5, 0xbb(r3)
/* 80276F80 38 05 00 01 */ addi r0, r5, 1
/* 80276F84 7C 06 01 D6 */ mullw r0, r6, r0
/* 80276F88 54 05 C6 3E */ rlwinm r5, r0, 0x18, 0x18, 0x1f
/* 80276F8C 98 A1 00 17 */ stb r5, 0x17(r1)
/* 80276F90 88 84 00 96 */ lbz r4, 0x96(r4)
/* 80276F94 38 04 00 01 */ addi r0, r4, 1
/* 80276F98 7C 05 01 D6 */ mullw r0, r5, r0
/* 80276F9C 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276FA0 98 01 00 17 */ stb r0, 0x17(r1)
/* 80276FA4 88 A1 00 10 */ lbz r5, 0x10(r1)
/* 80276FA8 88 83 00 BC */ lbz r4, 0xbc(r3)
/* 80276FAC 38 04 00 01 */ addi r0, r4, 1
/* 80276FB0 7C 05 01 D6 */ mullw r0, r5, r0
/* 80276FB4 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276FB8 98 01 00 10 */ stb r0, 0x10(r1)
/* 80276FBC 88 A1 00 11 */ lbz r5, 0x11(r1)
/* 80276FC0 88 83 00 BD */ lbz r4, 0xbd(r3)
/* 80276FC4 38 04 00 01 */ addi r0, r4, 1
/* 80276FC8 7C 05 01 D6 */ mullw r0, r5, r0
/* 80276FCC 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276FD0 98 01 00 11 */ stb r0, 0x11(r1)
/* 80276FD4 88 81 00 12 */ lbz r4, 0x12(r1)
/* 80276FD8 88 63 00 BE */ lbz r3, 0xbe(r3)
/* 80276FDC 38 03 00 01 */ addi r0, r3, 1
/* 80276FE0 7C 04 01 D6 */ mullw r0, r4, r0
/* 80276FE4 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276FE8 98 01 00 12 */ stb r0, 0x12(r1)
/* 80276FEC 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80276FF0 90 01 00 0C */ stw r0, 0xc(r1)
/* 80276FF4 38 60 00 01 */ li r3, 1
/* 80276FF8 38 81 00 0C */ addi r4, r1, 0xc
/* 80276FFC 48 0E 83 81 */ bl GXSetTevColor
/* 80277000 80 01 00 10 */ lwz r0, 0x10(r1)
/* 80277004 90 01 00 08 */ stw r0, 8(r1)
/* 80277008 38 60 00 02 */ li r3, 2
/* 8027700C 38 81 00 08 */ addi r4, r1, 8
/* 80277010 48 0E 83 6D */ bl GXSetTevColor
/* 80277014 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80277018 7C 08 03 A6 */ mtlr r0
/* 8027701C 38 21 00 20 */ addi r1, r1, 0x20
/* 80277020 4E 80 00 20 */ blr

View File

@ -1,45 +0,0 @@
lbl_80276E60:
/* 80276E60 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80276E64 7C 08 02 A6 */ mflr r0
/* 80276E68 90 01 00 14 */ stw r0, 0x14(r1)
/* 80276E6C 80 C3 00 00 */ lwz r6, 0(r3)
/* 80276E70 80 04 00 8C */ lwz r0, 0x8c(r4)
/* 80276E74 90 01 00 0C */ stw r0, 0xc(r1)
/* 80276E78 88 A1 00 0C */ lbz r5, 0xc(r1)
/* 80276E7C 88 66 00 B8 */ lbz r3, 0xb8(r6)
/* 80276E80 38 03 00 01 */ addi r0, r3, 1
/* 80276E84 7C 05 01 D6 */ mullw r0, r5, r0
/* 80276E88 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276E8C 98 01 00 0C */ stb r0, 0xc(r1)
/* 80276E90 88 A1 00 0D */ lbz r5, 0xd(r1)
/* 80276E94 88 66 00 B9 */ lbz r3, 0xb9(r6)
/* 80276E98 38 03 00 01 */ addi r0, r3, 1
/* 80276E9C 7C 05 01 D6 */ mullw r0, r5, r0
/* 80276EA0 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276EA4 98 01 00 0D */ stb r0, 0xd(r1)
/* 80276EA8 88 A1 00 0E */ lbz r5, 0xe(r1)
/* 80276EAC 88 66 00 BA */ lbz r3, 0xba(r6)
/* 80276EB0 38 03 00 01 */ addi r0, r3, 1
/* 80276EB4 7C 05 01 D6 */ mullw r0, r5, r0
/* 80276EB8 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276EBC 98 01 00 0E */ stb r0, 0xe(r1)
/* 80276EC0 88 A1 00 0F */ lbz r5, 0xf(r1)
/* 80276EC4 88 66 00 BB */ lbz r3, 0xbb(r6)
/* 80276EC8 38 03 00 01 */ addi r0, r3, 1
/* 80276ECC 7C 05 01 D6 */ mullw r0, r5, r0
/* 80276ED0 54 05 C6 3E */ rlwinm r5, r0, 0x18, 0x18, 0x1f
/* 80276ED4 98 A1 00 0F */ stb r5, 0xf(r1)
/* 80276ED8 88 64 00 96 */ lbz r3, 0x96(r4)
/* 80276EDC 38 03 00 01 */ addi r0, r3, 1
/* 80276EE0 7C 05 01 D6 */ mullw r0, r5, r0
/* 80276EE4 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276EE8 98 01 00 0F */ stb r0, 0xf(r1)
/* 80276EEC 80 01 00 0C */ lwz r0, 0xc(r1)
/* 80276EF0 90 01 00 08 */ stw r0, 8(r1)
/* 80276EF4 38 60 00 01 */ li r3, 1
/* 80276EF8 38 81 00 08 */ addi r4, r1, 8
/* 80276EFC 48 0E 84 81 */ bl GXSetTevColor
/* 80276F00 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80276F04 7C 08 03 A6 */ mtlr r0
/* 80276F08 38 21 00 10 */ addi r1, r1, 0x10
/* 80276F0C 4E 80 00 20 */ blr

View File

@ -1,65 +0,0 @@
lbl_80276CB0:
/* 80276CB0 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80276CB4 7C 08 02 A6 */ mflr r0
/* 80276CB8 90 01 00 24 */ stw r0, 0x24(r1)
/* 80276CBC 80 63 00 00 */ lwz r3, 0(r3)
/* 80276CC0 80 03 01 08 */ lwz r0, 0x108(r3)
/* 80276CC4 90 01 00 14 */ stw r0, 0x14(r1)
/* 80276CC8 80 03 01 0C */ lwz r0, 0x10c(r3)
/* 80276CCC 90 01 00 10 */ stw r0, 0x10(r1)
/* 80276CD0 88 A1 00 14 */ lbz r5, 0x14(r1)
/* 80276CD4 88 83 00 B8 */ lbz r4, 0xb8(r3)
/* 80276CD8 38 04 00 01 */ addi r0, r4, 1
/* 80276CDC 7C 05 01 D6 */ mullw r0, r5, r0
/* 80276CE0 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276CE4 98 01 00 14 */ stb r0, 0x14(r1)
/* 80276CE8 88 A1 00 15 */ lbz r5, 0x15(r1)
/* 80276CEC 88 83 00 B9 */ lbz r4, 0xb9(r3)
/* 80276CF0 38 04 00 01 */ addi r0, r4, 1
/* 80276CF4 7C 05 01 D6 */ mullw r0, r5, r0
/* 80276CF8 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276CFC 98 01 00 15 */ stb r0, 0x15(r1)
/* 80276D00 88 A1 00 16 */ lbz r5, 0x16(r1)
/* 80276D04 88 83 00 BA */ lbz r4, 0xba(r3)
/* 80276D08 38 04 00 01 */ addi r0, r4, 1
/* 80276D0C 7C 05 01 D6 */ mullw r0, r5, r0
/* 80276D10 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276D14 98 01 00 16 */ stb r0, 0x16(r1)
/* 80276D18 88 A1 00 17 */ lbz r5, 0x17(r1)
/* 80276D1C 88 83 00 BB */ lbz r4, 0xbb(r3)
/* 80276D20 38 04 00 01 */ addi r0, r4, 1
/* 80276D24 7C 05 01 D6 */ mullw r0, r5, r0
/* 80276D28 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276D2C 98 01 00 17 */ stb r0, 0x17(r1)
/* 80276D30 88 A1 00 10 */ lbz r5, 0x10(r1)
/* 80276D34 88 83 00 BC */ lbz r4, 0xbc(r3)
/* 80276D38 38 04 00 01 */ addi r0, r4, 1
/* 80276D3C 7C 05 01 D6 */ mullw r0, r5, r0
/* 80276D40 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276D44 98 01 00 10 */ stb r0, 0x10(r1)
/* 80276D48 88 A1 00 11 */ lbz r5, 0x11(r1)
/* 80276D4C 88 83 00 BD */ lbz r4, 0xbd(r3)
/* 80276D50 38 04 00 01 */ addi r0, r4, 1
/* 80276D54 7C 05 01 D6 */ mullw r0, r5, r0
/* 80276D58 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276D5C 98 01 00 11 */ stb r0, 0x11(r1)
/* 80276D60 88 81 00 12 */ lbz r4, 0x12(r1)
/* 80276D64 88 63 00 BE */ lbz r3, 0xbe(r3)
/* 80276D68 38 03 00 01 */ addi r0, r3, 1
/* 80276D6C 7C 04 01 D6 */ mullw r0, r4, r0
/* 80276D70 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276D74 98 01 00 12 */ stb r0, 0x12(r1)
/* 80276D78 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80276D7C 90 01 00 0C */ stw r0, 0xc(r1)
/* 80276D80 38 60 00 01 */ li r3, 1
/* 80276D84 38 81 00 0C */ addi r4, r1, 0xc
/* 80276D88 48 0E 85 F5 */ bl GXSetTevColor
/* 80276D8C 80 01 00 10 */ lwz r0, 0x10(r1)
/* 80276D90 90 01 00 08 */ stw r0, 8(r1)
/* 80276D94 38 60 00 02 */ li r3, 2
/* 80276D98 38 81 00 08 */ addi r4, r1, 8
/* 80276D9C 48 0E 85 E1 */ bl GXSetTevColor
/* 80276DA0 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80276DA4 7C 08 03 A6 */ mtlr r0
/* 80276DA8 38 21 00 20 */ addi r1, r1, 0x20
/* 80276DAC 4E 80 00 20 */ blr

View File

@ -1,40 +0,0 @@
lbl_80276B90:
/* 80276B90 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80276B94 7C 08 02 A6 */ mflr r0
/* 80276B98 90 01 00 14 */ stw r0, 0x14(r1)
/* 80276B9C 80 A3 00 00 */ lwz r5, 0(r3)
/* 80276BA0 80 05 01 08 */ lwz r0, 0x108(r5)
/* 80276BA4 90 01 00 0C */ stw r0, 0xc(r1)
/* 80276BA8 88 81 00 0C */ lbz r4, 0xc(r1)
/* 80276BAC 88 65 00 B8 */ lbz r3, 0xb8(r5)
/* 80276BB0 38 03 00 01 */ addi r0, r3, 1
/* 80276BB4 7C 04 01 D6 */ mullw r0, r4, r0
/* 80276BB8 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276BBC 98 01 00 0C */ stb r0, 0xc(r1)
/* 80276BC0 88 81 00 0D */ lbz r4, 0xd(r1)
/* 80276BC4 88 65 00 B9 */ lbz r3, 0xb9(r5)
/* 80276BC8 38 03 00 01 */ addi r0, r3, 1
/* 80276BCC 7C 04 01 D6 */ mullw r0, r4, r0
/* 80276BD0 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276BD4 98 01 00 0D */ stb r0, 0xd(r1)
/* 80276BD8 88 81 00 0E */ lbz r4, 0xe(r1)
/* 80276BDC 88 65 00 BA */ lbz r3, 0xba(r5)
/* 80276BE0 38 03 00 01 */ addi r0, r3, 1
/* 80276BE4 7C 04 01 D6 */ mullw r0, r4, r0
/* 80276BE8 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276BEC 98 01 00 0E */ stb r0, 0xe(r1)
/* 80276BF0 88 81 00 0F */ lbz r4, 0xf(r1)
/* 80276BF4 88 65 00 BB */ lbz r3, 0xbb(r5)
/* 80276BF8 38 03 00 01 */ addi r0, r3, 1
/* 80276BFC 7C 04 01 D6 */ mullw r0, r4, r0
/* 80276C00 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80276C04 98 01 00 0F */ stb r0, 0xf(r1)
/* 80276C08 80 01 00 0C */ lwz r0, 0xc(r1)
/* 80276C0C 90 01 00 08 */ stw r0, 8(r1)
/* 80276C10 38 60 00 01 */ li r3, 1
/* 80276C14 38 81 00 08 */ addi r4, r1, 8
/* 80276C18 48 0E 87 65 */ bl GXSetTevColor
/* 80276C1C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80276C20 7C 08 03 A6 */ mtlr r0
/* 80276C24 38 21 00 10 */ addi r1, r1, 0x10
/* 80276C28 4E 80 00 20 */ blr

View File

@ -1,12 +0,0 @@
lbl_8027AFDC:
/* 8027AFDC 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8027AFE0 C0 42 B9 08 */ lfs f2, lit_2318(r2)
/* 8027AFE4 C0 22 B9 0C */ lfs f1, lit_2319(r2)
/* 8027AFE8 C0 04 00 84 */ lfs f0, 0x84(r4)
/* 8027AFEC EC 01 00 28 */ fsubs f0, f1, f0
/* 8027AFF0 EC 62 00 32 */ fmuls f3, f2, f0
/* 8027AFF4 F0 61 A0 08 */ psq_st f3, 8(r1), 1, 2 /* qr2 */
/* 8027AFF8 88 01 00 08 */ lbz r0, 8(r1)
/* 8027AFFC 98 04 00 96 */ stb r0, 0x96(r4)
/* 8027B000 38 21 00 10 */ addi r1, r1, 0x10
/* 8027B004 4E 80 00 20 */ blr

View File

@ -1,13 +0,0 @@
lbl_8027B008:
/* 8027B008 C0 24 00 68 */ lfs f1, 0x68(r4)
/* 8027B00C C0 42 B9 0C */ lfs f2, lit_2319(r2)
/* 8027B010 C0 04 00 84 */ lfs f0, 0x84(r4)
/* 8027B014 EC 02 00 28 */ fsubs f0, f2, f0
/* 8027B018 EC 01 00 32 */ fmuls f0, f1, f0
/* 8027B01C D0 04 00 60 */ stfs f0, 0x60(r4)
/* 8027B020 C0 24 00 6C */ lfs f1, 0x6c(r4)
/* 8027B024 C0 04 00 84 */ lfs f0, 0x84(r4)
/* 8027B028 EC 02 00 28 */ fsubs f0, f2, f0
/* 8027B02C EC 01 00 32 */ fmuls f0, f1, f0
/* 8027B030 D0 04 00 64 */ stfs f0, 0x64(r4)
/* 8027B034 4E 80 00 20 */ blr

View File

@ -1,73 +0,0 @@
lbl_8027AEBC:
/* 8027AEBC 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8027AEC0 7C 08 02 A6 */ mflr r0
/* 8027AEC4 90 01 00 24 */ stw r0, 0x24(r1)
/* 8027AEC8 80 83 00 04 */ lwz r4, 4(r3)
/* 8027AECC 80 84 00 24 */ lwz r4, 0x24(r4)
/* 8027AED0 80 63 00 00 */ lwz r3, 0(r3)
/* 8027AED4 80 84 00 00 */ lwz r4, 0(r4)
/* 8027AED8 89 64 00 34 */ lbz r11, 0x34(r4)
/* 8027AEDC 99 61 00 14 */ stb r11, 0x14(r1)
/* 8027AEE0 89 44 00 35 */ lbz r10, 0x35(r4)
/* 8027AEE4 99 41 00 15 */ stb r10, 0x15(r1)
/* 8027AEE8 89 24 00 36 */ lbz r9, 0x36(r4)
/* 8027AEEC 99 21 00 16 */ stb r9, 0x16(r1)
/* 8027AEF0 89 04 00 37 */ lbz r8, 0x37(r4)
/* 8027AEF4 99 01 00 17 */ stb r8, 0x17(r1)
/* 8027AEF8 88 E4 00 38 */ lbz r7, 0x38(r4)
/* 8027AEFC 98 E1 00 10 */ stb r7, 0x10(r1)
/* 8027AF00 88 C4 00 39 */ lbz r6, 0x39(r4)
/* 8027AF04 98 C1 00 11 */ stb r6, 0x11(r1)
/* 8027AF08 88 A4 00 3A */ lbz r5, 0x3a(r4)
/* 8027AF0C 98 A1 00 12 */ stb r5, 0x12(r1)
/* 8027AF10 88 04 00 3B */ lbz r0, 0x3b(r4)
/* 8027AF14 98 01 00 13 */ stb r0, 0x13(r1)
/* 8027AF18 88 83 00 B8 */ lbz r4, 0xb8(r3)
/* 8027AF1C 38 04 00 01 */ addi r0, r4, 1
/* 8027AF20 7C 0B 01 D6 */ mullw r0, r11, r0
/* 8027AF24 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 8027AF28 98 01 00 14 */ stb r0, 0x14(r1)
/* 8027AF2C 88 83 00 B9 */ lbz r4, 0xb9(r3)
/* 8027AF30 38 04 00 01 */ addi r0, r4, 1
/* 8027AF34 7C 0A 01 D6 */ mullw r0, r10, r0
/* 8027AF38 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 8027AF3C 98 01 00 15 */ stb r0, 0x15(r1)
/* 8027AF40 88 83 00 BA */ lbz r4, 0xba(r3)
/* 8027AF44 38 04 00 01 */ addi r0, r4, 1
/* 8027AF48 7C 09 01 D6 */ mullw r0, r9, r0
/* 8027AF4C 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 8027AF50 98 01 00 16 */ stb r0, 0x16(r1)
/* 8027AF54 88 83 00 BB */ lbz r4, 0xbb(r3)
/* 8027AF58 38 04 00 01 */ addi r0, r4, 1
/* 8027AF5C 7C 08 01 D6 */ mullw r0, r8, r0
/* 8027AF60 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 8027AF64 98 01 00 17 */ stb r0, 0x17(r1)
/* 8027AF68 88 83 00 BC */ lbz r4, 0xbc(r3)
/* 8027AF6C 38 04 00 01 */ addi r0, r4, 1
/* 8027AF70 7C 07 01 D6 */ mullw r0, r7, r0
/* 8027AF74 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 8027AF78 98 01 00 10 */ stb r0, 0x10(r1)
/* 8027AF7C 88 83 00 BD */ lbz r4, 0xbd(r3)
/* 8027AF80 38 04 00 01 */ addi r0, r4, 1
/* 8027AF84 7C 06 01 D6 */ mullw r0, r6, r0
/* 8027AF88 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 8027AF8C 98 01 00 11 */ stb r0, 0x11(r1)
/* 8027AF90 88 63 00 BE */ lbz r3, 0xbe(r3)
/* 8027AF94 38 03 00 01 */ addi r0, r3, 1
/* 8027AF98 7C 05 01 D6 */ mullw r0, r5, r0
/* 8027AF9C 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 8027AFA0 98 01 00 12 */ stb r0, 0x12(r1)
/* 8027AFA4 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8027AFA8 90 01 00 0C */ stw r0, 0xc(r1)
/* 8027AFAC 38 60 00 01 */ li r3, 1
/* 8027AFB0 38 81 00 0C */ addi r4, r1, 0xc
/* 8027AFB4 48 0E 43 C9 */ bl GXSetTevColor
/* 8027AFB8 80 01 00 10 */ lwz r0, 0x10(r1)
/* 8027AFBC 90 01 00 08 */ stw r0, 8(r1)
/* 8027AFC0 38 60 00 02 */ li r3, 2
/* 8027AFC4 38 81 00 08 */ addi r4, r1, 8
/* 8027AFC8 48 0E 43 B5 */ bl GXSetTevColor
/* 8027AFCC 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8027AFD0 7C 08 03 A6 */ mtlr r0
/* 8027AFD4 38 21 00 20 */ addi r1, r1, 0x20
/* 8027AFD8 4E 80 00 20 */ blr

View File

@ -1,14 +0,0 @@
lbl_8027BB18:
/* 8027BB18 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8027BB1C 7C 08 02 A6 */ mflr r0
/* 8027BB20 90 01 00 14 */ stw r0, 0x14(r1)
/* 8027BB24 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8027BB28 7C 7F 1B 78 */ mr r31, r3
/* 8027BB2C 90 83 00 00 */ stw r4, 0(r3)
/* 8027BB30 48 00 00 1D */ bl init__16JPADynamicsBlockFv
/* 8027BB34 7F E3 FB 78 */ mr r3, r31
/* 8027BB38 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8027BB3C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8027BB40 7C 08 03 A6 */ mtlr r0
/* 8027BB44 38 21 00 10 */ addi r1, r1, 0x10
/* 8027BB48 4E 80 00 20 */ blr

View File

@ -1,40 +0,0 @@
lbl_8027BB4C:
/* 8027BB4C 80 83 00 00 */ lwz r4, 0(r3)
/* 8027BB50 80 04 00 08 */ lwz r0, 8(r4)
/* 8027BB54 54 00 C7 7E */ rlwinm r0, r0, 0x18, 0x1d, 0x1f
/* 8027BB58 28 00 00 06 */ cmplwi r0, 6
/* 8027BB5C 4D 81 00 20 */ bgtlr
/* 8027BB60 3C 80 80 3C */ lis r4, lit_2631@ha /* 0x803C4488@ha */
/* 8027BB64 38 84 44 88 */ addi r4, r4, lit_2631@l /* 0x803C4488@l */
/* 8027BB68 54 00 10 3A */ slwi r0, r0, 2
/* 8027BB6C 7C 04 00 2E */ lwzx r0, r4, r0
/* 8027BB70 7C 09 03 A6 */ mtctr r0
/* 8027BB74 4E 80 04 20 */ bctr
/* 8027BB78 3C 80 80 28 */ lis r4, JPAVolumeCube__FP18JPAEmitterWorkData@ha /* 0x8027B4E8@ha */
/* 8027BB7C 38 04 B4 E8 */ addi r0, r4, JPAVolumeCube__FP18JPAEmitterWorkData@l /* 0x8027B4E8@l */
/* 8027BB80 90 03 00 04 */ stw r0, 4(r3)
/* 8027BB84 4E 80 00 20 */ blr
/* 8027BB88 3C 80 80 28 */ lis r4, JPAVolumeSphere__FP18JPAEmitterWorkData@ha /* 0x8027B5F0@ha */
/* 8027BB8C 38 04 B5 F0 */ addi r0, r4, JPAVolumeSphere__FP18JPAEmitterWorkData@l /* 0x8027B5F0@l */
/* 8027BB90 90 03 00 04 */ stw r0, 4(r3)
/* 8027BB94 4E 80 00 20 */ blr
/* 8027BB98 3C 80 80 28 */ lis r4, JPAVolumeCylinder__FP18JPAEmitterWorkData@ha /* 0x8027B87C@ha */
/* 8027BB9C 38 04 B8 7C */ addi r0, r4, JPAVolumeCylinder__FP18JPAEmitterWorkData@l /* 0x8027B87C@l */
/* 8027BBA0 90 03 00 04 */ stw r0, 4(r3)
/* 8027BBA4 4E 80 00 20 */ blr
/* 8027BBA8 3C 80 80 28 */ lis r4, JPAVolumeTorus__FP18JPAEmitterWorkData@ha /* 0x8027B9F8@ha */
/* 8027BBAC 38 04 B9 F8 */ addi r0, r4, JPAVolumeTorus__FP18JPAEmitterWorkData@l /* 0x8027B9F8@l */
/* 8027BBB0 90 03 00 04 */ stw r0, 4(r3)
/* 8027BBB4 4E 80 00 20 */ blr
/* 8027BBB8 3C 80 80 28 */ lis r4, JPAVolumePoint__FP18JPAEmitterWorkData@ha /* 0x8027B144@ha */
/* 8027BBBC 38 04 B1 44 */ addi r0, r4, JPAVolumePoint__FP18JPAEmitterWorkData@l /* 0x8027B144@l */
/* 8027BBC0 90 03 00 04 */ stw r0, 4(r3)
/* 8027BBC4 4E 80 00 20 */ blr
/* 8027BBC8 3C 80 80 28 */ lis r4, JPAVolumeCircle__FP18JPAEmitterWorkData@ha /* 0x8027B33C@ha */
/* 8027BBCC 38 04 B3 3C */ addi r0, r4, JPAVolumeCircle__FP18JPAEmitterWorkData@l /* 0x8027B33C@l */
/* 8027BBD0 90 03 00 04 */ stw r0, 4(r3)
/* 8027BBD4 4E 80 00 20 */ blr
/* 8027BBD8 3C 80 80 28 */ lis r4, JPAVolumeLine__FP18JPAEmitterWorkData@ha /* 0x8027B220@ha */
/* 8027BBDC 38 04 B2 20 */ addi r0, r4, JPAVolumeLine__FP18JPAEmitterWorkData@l /* 0x8027B220@l */
/* 8027BBE0 90 03 00 04 */ stw r0, 4(r3)
/* 8027BBE4 4E 80 00 20 */ blr

View File

@ -1,38 +0,0 @@
lbl_8027AC10:
/* 8027AC10 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8027AC14 80 63 00 04 */ lwz r3, 4(r3)
/* 8027AC18 80 63 00 20 */ lwz r3, 0x20(r3)
/* 8027AC1C C0 84 00 84 */ lfs f4, 0x84(r4)
/* 8027AC20 80 A3 00 00 */ lwz r5, 0(r3)
/* 8027AC24 C0 05 00 2C */ lfs f0, 0x2c(r5)
/* 8027AC28 FC 04 00 40 */ fcmpo cr0, f4, f0
/* 8027AC2C 40 80 00 20 */ bge lbl_8027AC4C
/* 8027AC30 C0 42 B8 F4 */ lfs f2, lit_2390(r2)
/* 8027AC34 C0 25 00 34 */ lfs f1, 0x34(r5)
/* 8027AC38 C0 03 00 04 */ lfs f0, 4(r3)
/* 8027AC3C EC 04 00 32 */ fmuls f0, f4, f0
/* 8027AC40 EC 01 00 2A */ fadds f0, f1, f0
/* 8027AC44 EC A2 00 32 */ fmuls f5, f2, f0
/* 8027AC48 48 00 00 3C */ b lbl_8027AC84
lbl_8027AC4C:
/* 8027AC4C C0 05 00 30 */ lfs f0, 0x30(r5)
/* 8027AC50 FC 04 00 40 */ fcmpo cr0, f4, f0
/* 8027AC54 40 81 00 24 */ ble lbl_8027AC78
/* 8027AC58 C0 62 B8 F4 */ lfs f3, lit_2390(r2)
/* 8027AC5C C0 45 00 38 */ lfs f2, 0x38(r5)
/* 8027AC60 EC 24 00 28 */ fsubs f1, f4, f0
/* 8027AC64 C0 03 00 08 */ lfs f0, 8(r3)
/* 8027AC68 EC 01 00 32 */ fmuls f0, f1, f0
/* 8027AC6C EC 02 00 2A */ fadds f0, f2, f0
/* 8027AC70 EC A3 00 32 */ fmuls f5, f3, f0
/* 8027AC74 48 00 00 10 */ b lbl_8027AC84
lbl_8027AC78:
/* 8027AC78 C0 22 B8 F4 */ lfs f1, lit_2390(r2)
/* 8027AC7C C0 05 00 38 */ lfs f0, 0x38(r5)
/* 8027AC80 EC A1 00 32 */ fmuls f5, f1, f0
lbl_8027AC84:
/* 8027AC84 F0 A1 A0 08 */ psq_st f5, 8(r1), 1, 2 /* qr2 */
/* 8027AC88 88 01 00 08 */ lbz r0, 8(r1)
/* 8027AC8C 98 04 00 96 */ stb r0, 0x96(r4)
/* 8027AC90 38 21 00 10 */ addi r1, r1, 0x10
/* 8027AC94 4E 80 00 20 */ blr

View File

@ -1,64 +0,0 @@
lbl_8027AC98:
/* 8027AC98 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8027AC9C 80 63 00 04 */ lwz r3, 4(r3)
/* 8027ACA0 80 63 00 20 */ lwz r3, 0x20(r3)
/* 8027ACA4 C0 64 00 84 */ lfs f3, 0x84(r4)
/* 8027ACA8 80 A3 00 00 */ lwz r5, 0(r3)
/* 8027ACAC C0 05 00 2C */ lfs f0, 0x2c(r5)
/* 8027ACB0 FC 03 00 40 */ fcmpo cr0, f3, f0
/* 8027ACB4 40 80 00 18 */ bge lbl_8027ACCC
/* 8027ACB8 C0 25 00 34 */ lfs f1, 0x34(r5)
/* 8027ACBC C0 03 00 04 */ lfs f0, 4(r3)
/* 8027ACC0 EC 03 00 32 */ fmuls f0, f3, f0
/* 8027ACC4 EC A1 00 2A */ fadds f5, f1, f0
/* 8027ACC8 48 00 00 2C */ b lbl_8027ACF4
lbl_8027ACCC:
/* 8027ACCC C0 05 00 30 */ lfs f0, 0x30(r5)
/* 8027ACD0 FC 03 00 40 */ fcmpo cr0, f3, f0
/* 8027ACD4 40 81 00 1C */ ble lbl_8027ACF0
/* 8027ACD8 C0 45 00 38 */ lfs f2, 0x38(r5)
/* 8027ACDC EC 23 00 28 */ fsubs f1, f3, f0
/* 8027ACE0 C0 03 00 08 */ lfs f0, 8(r3)
/* 8027ACE4 EC 01 00 32 */ fmuls f0, f1, f0
/* 8027ACE8 EC A2 00 2A */ fadds f5, f2, f0
/* 8027ACEC 48 00 00 08 */ b lbl_8027ACF4
lbl_8027ACF0:
/* 8027ACF0 C0 A5 00 38 */ lfs f5, 0x38(r5)
lbl_8027ACF4:
/* 8027ACF4 C0 62 B8 F8 */ lfs f3, lit_2433(r2)
/* 8027ACF8 C0 44 00 6C */ lfs f2, 0x6c(r4)
/* 8027ACFC A8 04 00 80 */ lha r0, 0x80(r4)
/* 8027AD00 C8 22 B8 E8 */ lfd f1, lit_2312(r2)
/* 8027AD04 6C 00 80 00 */ xoris r0, r0, 0x8000
/* 8027AD08 90 01 00 14 */ stw r0, 0x14(r1)
/* 8027AD0C 3C 00 43 30 */ lis r0, 0x4330
/* 8027AD10 90 01 00 10 */ stw r0, 0x10(r1)
/* 8027AD14 C8 01 00 10 */ lfd f0, 0x10(r1)
/* 8027AD18 EC 00 08 28 */ fsubs f0, f0, f1
/* 8027AD1C EC 02 00 32 */ fmuls f0, f2, f0
/* 8027AD20 EC 23 00 32 */ fmuls f1, f3, f0
/* 8027AD24 C0 82 B8 E0 */ lfs f4, lit_2270(r2)
/* 8027AD28 C0 05 00 40 */ lfs f0, 0x40(r5)
/* 8027AD2C EC 04 00 28 */ fsubs f0, f4, f0
/* 8027AD30 EC 01 00 32 */ fmuls f0, f1, f0
/* 8027AD34 FC 00 00 1E */ fctiwz f0, f0
/* 8027AD38 D8 01 00 18 */ stfd f0, 0x18(r1)
/* 8027AD3C 80 01 00 1C */ lwz r0, 0x1c(r1)
/* 8027AD40 54 00 04 38 */ rlwinm r0, r0, 0, 0x10, 0x1c
/* 8027AD44 3C 60 80 44 */ lis r3, sincosTable___5JMath@ha /* 0x80439A20@ha */
/* 8027AD48 38 63 9A 20 */ addi r3, r3, sincosTable___5JMath@l /* 0x80439A20@l */
/* 8027AD4C 7C 03 04 2E */ lfsx f0, r3, r0
/* 8027AD50 C0 62 B8 F4 */ lfs f3, lit_2390(r2)
/* 8027AD54 C0 42 B8 FC */ lfs f2, lit_2434(r2)
/* 8027AD58 EC 20 20 28 */ fsubs f1, f0, f4
/* 8027AD5C C0 05 00 48 */ lfs f0, 0x48(r5)
/* 8027AD60 EC 01 00 32 */ fmuls f0, f1, f0
/* 8027AD64 EC 02 00 32 */ fmuls f0, f2, f0
/* 8027AD68 EC 04 00 2A */ fadds f0, f4, f0
/* 8027AD6C EC 03 00 32 */ fmuls f0, f3, f0
/* 8027AD70 EC A5 00 32 */ fmuls f5, f5, f0
/* 8027AD74 F0 A1 A0 08 */ psq_st f5, 8(r1), 1, 2 /* qr2 */
/* 8027AD78 88 01 00 08 */ lbz r0, 8(r1)
/* 8027AD7C 98 04 00 96 */ stb r0, 0x96(r4)
/* 8027AD80 38 21 00 20 */ addi r1, r1, 0x20
/* 8027AD84 4E 80 00 20 */ blr

View File

@ -1,4 +0,0 @@
lbl_8027AA14:
/* 8027AA14 C0 04 00 84 */ lfs f0, 0x84(r4)
/* 8027AA18 D0 03 01 FC */ stfs f0, 0x1fc(r3)
/* 8027AA1C 4E 80 00 20 */ blr

View File

@ -1,26 +0,0 @@
lbl_8027AA20:
/* 8027AA20 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8027AA24 80 A3 00 04 */ lwz r5, 4(r3)
/* 8027AA28 80 A5 00 20 */ lwz r5, 0x20(r5)
/* 8027AA2C 80 A5 00 00 */ lwz r5, 0(r5)
/* 8027AA30 A8 A5 00 28 */ lha r5, 0x28(r5)
/* 8027AA34 A8 84 00 80 */ lha r4, 0x80(r4)
/* 8027AA38 7C 04 2B D6 */ divw r0, r4, r5
/* 8027AA3C 7C 00 29 D6 */ mullw r0, r0, r5
/* 8027AA40 7C 00 20 50 */ subf r0, r0, r4
/* 8027AA44 C8 42 B8 E8 */ lfd f2, lit_2312(r2)
/* 8027AA48 6C 00 80 00 */ xoris r0, r0, 0x8000
/* 8027AA4C 90 01 00 0C */ stw r0, 0xc(r1)
/* 8027AA50 3C 80 43 30 */ lis r4, 0x4330
/* 8027AA54 90 81 00 08 */ stw r4, 8(r1)
/* 8027AA58 C8 01 00 08 */ lfd f0, 8(r1)
/* 8027AA5C EC 20 10 28 */ fsubs f1, f0, f2
/* 8027AA60 6C A0 80 00 */ xoris r0, r5, 0x8000
/* 8027AA64 90 01 00 14 */ stw r0, 0x14(r1)
/* 8027AA68 90 81 00 10 */ stw r4, 0x10(r1)
/* 8027AA6C C8 01 00 10 */ lfd f0, 0x10(r1)
/* 8027AA70 EC 00 10 28 */ fsubs f0, f0, f2
/* 8027AA74 EC 01 00 24 */ fdivs f0, f1, f0
/* 8027AA78 D0 03 01 FC */ stfs f0, 0x1fc(r3)
/* 8027AA7C 38 21 00 20 */ addi r1, r1, 0x20
/* 8027AA80 4E 80 00 20 */ blr

View File

@ -1,26 +0,0 @@
lbl_8027AA84:
/* 8027AA84 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8027AA88 80 A3 00 04 */ lwz r5, 4(r3)
/* 8027AA8C 80 A5 00 20 */ lwz r5, 0x20(r5)
/* 8027AA90 80 A5 00 00 */ lwz r5, 0(r5)
/* 8027AA94 A8 A5 00 2A */ lha r5, 0x2a(r5)
/* 8027AA98 A8 84 00 80 */ lha r4, 0x80(r4)
/* 8027AA9C 7C 04 2B D6 */ divw r0, r4, r5
/* 8027AAA0 7C 00 29 D6 */ mullw r0, r0, r5
/* 8027AAA4 7C 00 20 50 */ subf r0, r0, r4
/* 8027AAA8 C8 42 B8 E8 */ lfd f2, lit_2312(r2)
/* 8027AAAC 6C 00 80 00 */ xoris r0, r0, 0x8000
/* 8027AAB0 90 01 00 0C */ stw r0, 0xc(r1)
/* 8027AAB4 3C 80 43 30 */ lis r4, 0x4330
/* 8027AAB8 90 81 00 08 */ stw r4, 8(r1)
/* 8027AABC C8 01 00 08 */ lfd f0, 8(r1)
/* 8027AAC0 EC 20 10 28 */ fsubs f1, f0, f2
/* 8027AAC4 6C A0 80 00 */ xoris r0, r5, 0x8000
/* 8027AAC8 90 01 00 14 */ stw r0, 0x14(r1)
/* 8027AACC 90 81 00 10 */ stw r4, 0x10(r1)
/* 8027AAD0 C8 01 00 10 */ lfd f0, 0x10(r1)
/* 8027AAD4 EC 00 10 28 */ fsubs f0, f0, f2
/* 8027AAD8 EC 01 00 24 */ fdivs f0, f1, f0
/* 8027AADC D0 03 01 FC */ stfs f0, 0x1fc(r3)
/* 8027AAE0 38 21 00 20 */ addi r1, r1, 0x20
/* 8027AAE4 4E 80 00 20 */ blr

View File

@ -1,38 +0,0 @@
lbl_8027AAE8:
/* 8027AAE8 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8027AAEC 80 A3 00 04 */ lwz r5, 4(r3)
/* 8027AAF0 80 A5 00 20 */ lwz r5, 0x20(r5)
/* 8027AAF4 80 A5 00 00 */ lwz r5, 0(r5)
/* 8027AAF8 A8 C5 00 28 */ lha r6, 0x28(r5)
/* 8027AAFC A8 84 00 80 */ lha r4, 0x80(r4)
/* 8027AB00 7C A4 33 D6 */ divw r5, r4, r6
/* 8027AB04 7C 05 31 D6 */ mullw r0, r5, r6
/* 8027AB08 7C 00 20 50 */ subf r0, r0, r4
/* 8027AB0C C8 42 B8 E8 */ lfd f2, lit_2312(r2)
/* 8027AB10 6C 00 80 00 */ xoris r0, r0, 0x8000
/* 8027AB14 90 01 00 0C */ stw r0, 0xc(r1)
/* 8027AB18 3C 80 43 30 */ lis r4, 0x4330
/* 8027AB1C 90 81 00 08 */ stw r4, 8(r1)
/* 8027AB20 C8 01 00 08 */ lfd f0, 8(r1)
/* 8027AB24 EC 20 10 28 */ fsubs f1, f0, f2
/* 8027AB28 6C C0 80 00 */ xoris r0, r6, 0x8000
/* 8027AB2C 90 01 00 14 */ stw r0, 0x14(r1)
/* 8027AB30 90 81 00 10 */ stw r4, 0x10(r1)
/* 8027AB34 C8 01 00 10 */ lfd f0, 0x10(r1)
/* 8027AB38 EC 00 10 28 */ fsubs f0, f0, f2
/* 8027AB3C EC 61 00 24 */ fdivs f3, f1, f0
/* 8027AB40 54 A0 07 FE */ clrlwi r0, r5, 0x1f
/* 8027AB44 6C 00 80 00 */ xoris r0, r0, 0x8000
/* 8027AB48 90 01 00 1C */ stw r0, 0x1c(r1)
/* 8027AB4C 90 81 00 18 */ stw r4, 0x18(r1)
/* 8027AB50 C8 01 00 18 */ lfd f0, 0x18(r1)
/* 8027AB54 EC 40 10 28 */ fsubs f2, f0, f2
/* 8027AB58 C0 22 B8 E0 */ lfs f1, lit_2270(r2)
/* 8027AB5C C0 02 B8 F0 */ lfs f0, lit_2339(r2)
/* 8027AB60 EC 00 00 F2 */ fmuls f0, f0, f3
/* 8027AB64 EC 01 00 28 */ fsubs f0, f1, f0
/* 8027AB68 EC 02 00 32 */ fmuls f0, f2, f0
/* 8027AB6C EC 03 00 2A */ fadds f0, f3, f0
/* 8027AB70 D0 03 01 FC */ stfs f0, 0x1fc(r3)
/* 8027AB74 38 21 00 20 */ addi r1, r1, 0x20
/* 8027AB78 4E 80 00 20 */ blr

View File

@ -1,38 +0,0 @@
lbl_8027AB7C:
/* 8027AB7C 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8027AB80 80 A3 00 04 */ lwz r5, 4(r3)
/* 8027AB84 80 A5 00 20 */ lwz r5, 0x20(r5)
/* 8027AB88 80 A5 00 00 */ lwz r5, 0(r5)
/* 8027AB8C A8 C5 00 2A */ lha r6, 0x2a(r5)
/* 8027AB90 A8 84 00 80 */ lha r4, 0x80(r4)
/* 8027AB94 7C A4 33 D6 */ divw r5, r4, r6
/* 8027AB98 7C 05 31 D6 */ mullw r0, r5, r6
/* 8027AB9C 7C 00 20 50 */ subf r0, r0, r4
/* 8027ABA0 C8 42 B8 E8 */ lfd f2, lit_2312(r2)
/* 8027ABA4 6C 00 80 00 */ xoris r0, r0, 0x8000
/* 8027ABA8 90 01 00 0C */ stw r0, 0xc(r1)
/* 8027ABAC 3C 80 43 30 */ lis r4, 0x4330
/* 8027ABB0 90 81 00 08 */ stw r4, 8(r1)
/* 8027ABB4 C8 01 00 08 */ lfd f0, 8(r1)
/* 8027ABB8 EC 20 10 28 */ fsubs f1, f0, f2
/* 8027ABBC 6C C0 80 00 */ xoris r0, r6, 0x8000
/* 8027ABC0 90 01 00 14 */ stw r0, 0x14(r1)
/* 8027ABC4 90 81 00 10 */ stw r4, 0x10(r1)
/* 8027ABC8 C8 01 00 10 */ lfd f0, 0x10(r1)
/* 8027ABCC EC 00 10 28 */ fsubs f0, f0, f2
/* 8027ABD0 EC 61 00 24 */ fdivs f3, f1, f0
/* 8027ABD4 54 A0 07 FE */ clrlwi r0, r5, 0x1f
/* 8027ABD8 6C 00 80 00 */ xoris r0, r0, 0x8000
/* 8027ABDC 90 01 00 1C */ stw r0, 0x1c(r1)
/* 8027ABE0 90 81 00 18 */ stw r4, 0x18(r1)
/* 8027ABE4 C8 01 00 18 */ lfd f0, 0x18(r1)
/* 8027ABE8 EC 40 10 28 */ fsubs f2, f0, f2
/* 8027ABEC C0 22 B8 E0 */ lfs f1, lit_2270(r2)
/* 8027ABF0 C0 02 B8 F0 */ lfs f0, lit_2339(r2)
/* 8027ABF4 EC 00 00 F2 */ fmuls f0, f0, f3
/* 8027ABF8 EC 01 00 28 */ fsubs f0, f1, f0
/* 8027ABFC EC 02 00 32 */ fmuls f0, f2, f0
/* 8027AC00 EC 03 00 2A */ fadds f0, f3, f0
/* 8027AC04 D0 03 01 FC */ stfs f0, 0x1fc(r3)
/* 8027AC08 38 21 00 20 */ addi r1, r1, 0x20
/* 8027AC0C 4E 80 00 20 */ blr

View File

@ -1,4 +0,0 @@
lbl_8027AA08:
/* 8027AA08 C0 04 00 60 */ lfs f0, 0x60(r4)
/* 8027AA0C D0 04 00 64 */ stfs f0, 0x64(r4)
/* 8027AA10 4E 80 00 20 */ blr

View File

@ -1,33 +0,0 @@
lbl_8027A918:
/* 8027A918 80 A3 00 04 */ lwz r5, 4(r3)
/* 8027A91C 80 A5 00 20 */ lwz r5, 0x20(r5)
/* 8027A920 C0 83 01 FC */ lfs f4, 0x1fc(r3)
/* 8027A924 80 65 00 00 */ lwz r3, 0(r5)
/* 8027A928 C0 03 00 0C */ lfs f0, 0xc(r3)
/* 8027A92C FC 04 00 40 */ fcmpo cr0, f4, f0
/* 8027A930 40 80 00 24 */ bge lbl_8027A954
/* 8027A934 C0 44 00 68 */ lfs f2, 0x68(r4)
/* 8027A938 C0 05 00 0C */ lfs f0, 0xc(r5)
/* 8027A93C EC 24 00 32 */ fmuls f1, f4, f0
/* 8027A940 C0 03 00 14 */ lfs f0, 0x14(r3)
/* 8027A944 EC 01 00 2A */ fadds f0, f1, f0
/* 8027A948 EC 02 00 32 */ fmuls f0, f2, f0
/* 8027A94C D0 04 00 60 */ stfs f0, 0x60(r4)
/* 8027A950 4E 80 00 20 */ blr
lbl_8027A954:
/* 8027A954 C0 03 00 10 */ lfs f0, 0x10(r3)
/* 8027A958 FC 04 00 40 */ fcmpo cr0, f4, f0
/* 8027A95C 40 81 00 28 */ ble lbl_8027A984
/* 8027A960 C0 64 00 68 */ lfs f3, 0x68(r4)
/* 8027A964 C0 42 B8 E0 */ lfs f2, lit_2270(r2)
/* 8027A968 C0 25 00 14 */ lfs f1, 0x14(r5)
/* 8027A96C EC 04 00 28 */ fsubs f0, f4, f0
/* 8027A970 EC 01 00 32 */ fmuls f0, f1, f0
/* 8027A974 EC 02 00 2A */ fadds f0, f2, f0
/* 8027A978 EC 03 00 32 */ fmuls f0, f3, f0
/* 8027A97C D0 04 00 60 */ stfs f0, 0x60(r4)
/* 8027A980 4E 80 00 20 */ blr
lbl_8027A984:
/* 8027A984 C0 04 00 68 */ lfs f0, 0x68(r4)
/* 8027A988 D0 04 00 60 */ stfs f0, 0x60(r4)
/* 8027A98C 4E 80 00 20 */ blr

View File

@ -1,33 +0,0 @@
lbl_8027A990:
/* 8027A990 80 A3 00 04 */ lwz r5, 4(r3)
/* 8027A994 80 A5 00 20 */ lwz r5, 0x20(r5)
/* 8027A998 C0 83 01 FC */ lfs f4, 0x1fc(r3)
/* 8027A99C 80 65 00 00 */ lwz r3, 0(r5)
/* 8027A9A0 C0 03 00 0C */ lfs f0, 0xc(r3)
/* 8027A9A4 FC 04 00 40 */ fcmpo cr0, f4, f0
/* 8027A9A8 40 80 00 24 */ bge lbl_8027A9CC
/* 8027A9AC C0 44 00 68 */ lfs f2, 0x68(r4)
/* 8027A9B0 C0 05 00 10 */ lfs f0, 0x10(r5)
/* 8027A9B4 EC 24 00 32 */ fmuls f1, f4, f0
/* 8027A9B8 C0 03 00 1C */ lfs f0, 0x1c(r3)
/* 8027A9BC EC 01 00 2A */ fadds f0, f1, f0
/* 8027A9C0 EC 02 00 32 */ fmuls f0, f2, f0
/* 8027A9C4 D0 04 00 64 */ stfs f0, 0x64(r4)
/* 8027A9C8 4E 80 00 20 */ blr
lbl_8027A9CC:
/* 8027A9CC C0 03 00 10 */ lfs f0, 0x10(r3)
/* 8027A9D0 FC 04 00 40 */ fcmpo cr0, f4, f0
/* 8027A9D4 40 81 00 28 */ ble lbl_8027A9FC
/* 8027A9D8 C0 64 00 68 */ lfs f3, 0x68(r4)
/* 8027A9DC C0 42 B8 E0 */ lfs f2, lit_2270(r2)
/* 8027A9E0 C0 25 00 18 */ lfs f1, 0x18(r5)
/* 8027A9E4 EC 04 00 28 */ fsubs f0, f4, f0
/* 8027A9E8 EC 01 00 32 */ fmuls f0, f1, f0
/* 8027A9EC EC 02 00 2A */ fadds f0, f2, f0
/* 8027A9F0 EC 03 00 32 */ fmuls f0, f3, f0
/* 8027A9F4 D0 04 00 64 */ stfs f0, 0x64(r4)
/* 8027A9F8 4E 80 00 20 */ blr
lbl_8027A9FC:
/* 8027A9FC C0 04 00 68 */ lfs f0, 0x68(r4)
/* 8027AA00 D0 04 00 64 */ stfs f0, 0x64(r4)
/* 8027AA04 4E 80 00 20 */ blr

View File

@ -1,14 +0,0 @@
lbl_8027AD88:
/* 8027AD88 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8027AD8C 7C 08 02 A6 */ mflr r0
/* 8027AD90 90 01 00 14 */ stw r0, 0x14(r1)
/* 8027AD94 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8027AD98 7C 7F 1B 78 */ mr r31, r3
/* 8027AD9C 90 83 00 00 */ stw r4, 0(r3)
/* 8027ADA0 48 00 00 1D */ bl init__13JPAExtraShapeFv
/* 8027ADA4 7F E3 FB 78 */ mr r3, r31
/* 8027ADA8 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8027ADAC 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8027ADB0 7C 08 03 A6 */ mtlr r0
/* 8027ADB4 38 21 00 10 */ addi r1, r1, 0x10
/* 8027ADB8 4E 80 00 20 */ blr

View File

@ -1,71 +0,0 @@
lbl_8027ADBC:
/* 8027ADBC C0 02 B9 00 */ lfs f0, lit_2503(r2)
/* 8027ADC0 80 83 00 00 */ lwz r4, 0(r3)
/* 8027ADC4 C0 44 00 2C */ lfs f2, 0x2c(r4)
/* 8027ADC8 FC 00 10 00 */ fcmpu cr0, f0, f2
/* 8027ADCC 41 82 00 18 */ beq lbl_8027ADE4
/* 8027ADD0 C0 24 00 38 */ lfs f1, 0x38(r4)
/* 8027ADD4 C0 04 00 34 */ lfs f0, 0x34(r4)
/* 8027ADD8 EC 01 00 28 */ fsubs f0, f1, f0
/* 8027ADDC EC 00 10 24 */ fdivs f0, f0, f2
/* 8027ADE0 48 00 00 08 */ b lbl_8027ADE8
lbl_8027ADE4:
/* 8027ADE4 C0 02 B8 E0 */ lfs f0, lit_2270(r2)
lbl_8027ADE8:
/* 8027ADE8 D0 03 00 04 */ stfs f0, 4(r3)
/* 8027ADEC C0 42 B8 E0 */ lfs f2, lit_2270(r2)
/* 8027ADF0 80 83 00 00 */ lwz r4, 0(r3)
/* 8027ADF4 C0 64 00 30 */ lfs f3, 0x30(r4)
/* 8027ADF8 FC 02 18 00 */ fcmpu cr0, f2, f3
/* 8027ADFC 41 82 00 18 */ beq lbl_8027AE14
/* 8027AE00 C0 24 00 3C */ lfs f1, 0x3c(r4)
/* 8027AE04 C0 04 00 38 */ lfs f0, 0x38(r4)
/* 8027AE08 EC 21 00 28 */ fsubs f1, f1, f0
/* 8027AE0C EC 02 18 28 */ fsubs f0, f2, f3
/* 8027AE10 EC 41 00 24 */ fdivs f2, f1, f0
lbl_8027AE14:
/* 8027AE14 D0 43 00 08 */ stfs f2, 8(r3)
/* 8027AE18 C0 02 B9 00 */ lfs f0, lit_2503(r2)
/* 8027AE1C 80 83 00 00 */ lwz r4, 0(r3)
/* 8027AE20 C0 44 00 0C */ lfs f2, 0xc(r4)
/* 8027AE24 FC 00 10 00 */ fcmpu cr0, f0, f2
/* 8027AE28 41 82 00 34 */ beq lbl_8027AE5C
/* 8027AE2C C0 22 B8 E0 */ lfs f1, lit_2270(r2)
/* 8027AE30 C0 04 00 14 */ lfs f0, 0x14(r4)
/* 8027AE34 EC 01 00 28 */ fsubs f0, f1, f0
/* 8027AE38 EC 00 10 24 */ fdivs f0, f0, f2
/* 8027AE3C D0 03 00 0C */ stfs f0, 0xc(r3)
/* 8027AE40 80 83 00 00 */ lwz r4, 0(r3)
/* 8027AE44 C0 04 00 1C */ lfs f0, 0x1c(r4)
/* 8027AE48 EC 21 00 28 */ fsubs f1, f1, f0
/* 8027AE4C C0 04 00 0C */ lfs f0, 0xc(r4)
/* 8027AE50 EC 01 00 24 */ fdivs f0, f1, f0
/* 8027AE54 D0 03 00 10 */ stfs f0, 0x10(r3)
/* 8027AE58 48 00 00 10 */ b lbl_8027AE68
lbl_8027AE5C:
/* 8027AE5C C0 02 B8 E0 */ lfs f0, lit_2270(r2)
/* 8027AE60 D0 03 00 10 */ stfs f0, 0x10(r3)
/* 8027AE64 D0 03 00 0C */ stfs f0, 0xc(r3)
lbl_8027AE68:
/* 8027AE68 C0 42 B8 E0 */ lfs f2, lit_2270(r2)
/* 8027AE6C 80 83 00 00 */ lwz r4, 0(r3)
/* 8027AE70 C0 64 00 10 */ lfs f3, 0x10(r4)
/* 8027AE74 FC 02 18 00 */ fcmpu cr0, f2, f3
/* 8027AE78 41 82 00 38 */ beq lbl_8027AEB0
/* 8027AE7C C0 04 00 18 */ lfs f0, 0x18(r4)
/* 8027AE80 EC 20 10 28 */ fsubs f1, f0, f2
/* 8027AE84 EC 02 18 28 */ fsubs f0, f2, f3
/* 8027AE88 EC 01 00 24 */ fdivs f0, f1, f0
/* 8027AE8C D0 03 00 14 */ stfs f0, 0x14(r3)
/* 8027AE90 80 83 00 00 */ lwz r4, 0(r3)
/* 8027AE94 C0 04 00 20 */ lfs f0, 0x20(r4)
/* 8027AE98 EC 20 10 28 */ fsubs f1, f0, f2
/* 8027AE9C C0 04 00 10 */ lfs f0, 0x10(r4)
/* 8027AEA0 EC 02 00 28 */ fsubs f0, f2, f0
/* 8027AEA4 EC 01 00 24 */ fdivs f0, f1, f0
/* 8027AEA8 D0 03 00 18 */ stfs f0, 0x18(r3)
/* 8027AEAC 4E 80 00 20 */ blr
lbl_8027AEB0:
/* 8027AEB0 D0 43 00 18 */ stfs f2, 0x18(r3)
/* 8027AEB4 D0 43 00 14 */ stfs f2, 0x14(r3)
/* 8027AEB8 4E 80 00 20 */ blr

View File

@ -1,29 +0,0 @@
lbl_80274010:
/* 80274010 38 00 00 00 */ li r0, 0
/* 80274014 90 03 00 08 */ stw r0, 8(r3)
/* 80274018 90 03 00 04 */ stw r0, 4(r3)
/* 8027401C 90 03 00 00 */ stw r0, 0(r3)
/* 80274020 90 03 00 18 */ stw r0, 0x18(r3)
/* 80274024 90 03 00 14 */ stw r0, 0x14(r3)
/* 80274028 90 03 00 10 */ stw r0, 0x10(r3)
/* 8027402C 90 03 00 0C */ stw r0, 0xc(r3)
/* 80274030 90 03 00 1C */ stw r0, 0x1c(r3)
/* 80274034 90 03 00 20 */ stw r0, 0x20(r3)
/* 80274038 90 03 00 24 */ stw r0, 0x24(r3)
/* 8027403C 90 03 00 28 */ stw r0, 0x28(r3)
/* 80274040 90 03 00 2C */ stw r0, 0x2c(r3)
/* 80274044 90 03 00 30 */ stw r0, 0x30(r3)
/* 80274048 90 03 00 34 */ stw r0, 0x34(r3)
/* 8027404C 90 03 00 38 */ stw r0, 0x38(r3)
/* 80274050 98 03 00 47 */ stb r0, 0x47(r3)
/* 80274054 98 03 00 46 */ stb r0, 0x46(r3)
/* 80274058 98 03 00 45 */ stb r0, 0x45(r3)
/* 8027405C 98 03 00 44 */ stb r0, 0x44(r3)
/* 80274060 98 03 00 43 */ stb r0, 0x43(r3)
/* 80274064 98 03 00 42 */ stb r0, 0x42(r3)
/* 80274068 98 03 00 41 */ stb r0, 0x41(r3)
/* 8027406C 98 03 00 40 */ stb r0, 0x40(r3)
/* 80274070 98 03 00 3F */ stb r0, 0x3f(r3)
/* 80274074 98 03 00 3E */ stb r0, 0x3e(r3)
/* 80274078 B0 03 00 3C */ sth r0, 0x3c(r3)
/* 8027407C 4E 80 00 20 */ blr

View File

@ -1,61 +0,0 @@
lbl_80275A94:
/* 80275A94 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80275A98 7C 08 02 A6 */ mflr r0
/* 80275A9C 90 01 00 24 */ stw r0, 0x24(r1)
/* 80275AA0 39 61 00 20 */ addi r11, r1, 0x20
/* 80275AA4 48 0E C7 35 */ bl _savegpr_28
/* 80275AA8 7C 7C 1B 78 */ mr r28, r3
/* 80275AAC 7C 9D 23 78 */ mr r29, r4
/* 80275AB0 7C BE 2B 78 */ mr r30, r5
/* 80275AB4 93 C4 00 00 */ stw r30, 0(r4)
/* 80275AB8 93 84 00 04 */ stw r28, 4(r4)
/* 80275ABC 38 00 00 00 */ li r0, 0
/* 80275AC0 98 04 02 16 */ stb r0, 0x216(r4)
/* 80275AC4 48 00 0F 49 */ bl calcWorkData_d__11JPAResourceFP18JPAEmitterWorkData
/* 80275AC8 80 7C 00 1C */ lwz r3, 0x1c(r28)
/* 80275ACC 7F A4 EB 78 */ mr r4, r29
/* 80275AD0 48 00 4D 19 */ bl setGX__12JPABaseShapeCFP18JPAEmitterWorkData
/* 80275AD4 3B E0 00 01 */ li r31, 1
/* 80275AD8 48 00 00 78 */ b lbl_80275B50
lbl_80275ADC:
/* 80275ADC 88 7D 02 16 */ lbz r3, 0x216(r29)
/* 80275AE0 38 03 00 01 */ addi r0, r3, 1
/* 80275AE4 98 1D 02 16 */ stb r0, 0x216(r29)
/* 80275AE8 80 7C 00 1C */ lwz r3, 0x1c(r28)
/* 80275AEC 80 63 00 00 */ lwz r3, 0(r3)
/* 80275AF0 80 03 00 08 */ lwz r0, 8(r3)
/* 80275AF4 54 00 02 53 */ rlwinm. r0, r0, 0, 9, 9
/* 80275AF8 41 82 00 1C */ beq lbl_80275B14
/* 80275AFC 80 1C 00 24 */ lwz r0, 0x24(r28)
/* 80275B00 28 00 00 00 */ cmplwi r0, 0
/* 80275B04 41 82 00 10 */ beq lbl_80275B14
/* 80275B08 7F 83 E3 78 */ mr r3, r28
/* 80275B0C 7F A4 EB 78 */ mr r4, r29
/* 80275B10 48 00 03 A1 */ bl drawC__11JPAResourceFP18JPAEmitterWorkData
lbl_80275B14:
/* 80275B14 7F 83 E3 78 */ mr r3, r28
/* 80275B18 7F A4 EB 78 */ mr r4, r29
/* 80275B1C 48 00 00 59 */ bl drawP__11JPAResourceFP18JPAEmitterWorkData
/* 80275B20 80 7C 00 1C */ lwz r3, 0x1c(r28)
/* 80275B24 80 63 00 00 */ lwz r3, 0(r3)
/* 80275B28 80 03 00 08 */ lwz r0, 8(r3)
/* 80275B2C 54 00 02 53 */ rlwinm. r0, r0, 0, 9, 9
/* 80275B30 40 82 00 1C */ bne lbl_80275B4C
/* 80275B34 80 1C 00 24 */ lwz r0, 0x24(r28)
/* 80275B38 28 00 00 00 */ cmplwi r0, 0
/* 80275B3C 41 82 00 10 */ beq lbl_80275B4C
/* 80275B40 7F 83 E3 78 */ mr r3, r28
/* 80275B44 7F A4 EB 78 */ mr r4, r29
/* 80275B48 48 00 03 69 */ bl drawC__11JPAResourceFP18JPAEmitterWorkData
lbl_80275B4C:
/* 80275B4C 3B FF 00 01 */ addi r31, r31, 1
lbl_80275B50:
/* 80275B50 88 1E 01 10 */ lbz r0, 0x110(r30)
/* 80275B54 7C 1F 00 00 */ cmpw r31, r0
/* 80275B58 40 81 FF 84 */ ble lbl_80275ADC
/* 80275B5C 39 61 00 20 */ addi r11, r1, 0x20
/* 80275B60 48 0E C6 C5 */ bl _restgpr_28
/* 80275B64 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80275B68 7C 08 03 A6 */ mtlr r0
/* 80275B6C 38 21 00 20 */ addi r1, r1, 0x20
/* 80275B70 4E 80 00 20 */ blr

View File

@ -24,10 +24,11 @@ class J3DVertexData;
class J3DDrawMtxData; class J3DDrawMtxData;
enum J3DShpFlag { enum J3DShpFlag {
J3DShpFlag_Visible = 0x0001,
J3DShpFlag_SkinPosCpu = 0x0004, J3DShpFlag_SkinPosCpu = 0x0004,
J3DShpFlag_SkinNrmCpu = 0x0008, J3DShpFlag_SkinNrmCpu = 0x0008,
J3DShpFlag_Hidden = 0x0010, J3DShpFlag_Hidden = 0x0010,
J3DShpFlag_EnableLod = 0x0100, J3DShpFlag_EnableLod = 0x0100,
}; };
class J3DShape { class J3DShape {
@ -56,8 +57,8 @@ public:
void setVertexDataPointer(J3DVertexData* pVtxData) { mVertexData = pVtxData; } void setVertexDataPointer(J3DVertexData* pVtxData) { mVertexData = pVtxData; }
void* getVcdVatCmd() const { return mVcdVatCmd; } void* getVcdVatCmd() const { return mVcdVatCmd; }
void setVcdVatCmd(void* pVatCmd) { mVcdVatCmd = pVatCmd; } void setVcdVatCmd(void* pVatCmd) { mVcdVatCmd = pVatCmd; }
void show() { offFlag(1); } void show() { offFlag(J3DShpFlag_Visible); }
void hide() { onFlag(1); } void hide() { onFlag(J3DShpFlag_Visible); }
void setCurrentViewNoPtr(u32* pViewNoPtr) { mCurrentViewNo = pViewNoPtr; } void setCurrentViewNoPtr(u32* pViewNoPtr) { mCurrentViewNo = pViewNoPtr; }
void setScaleFlagArray(u8* pScaleFlagArray) { mScaleFlagArray = pScaleFlagArray; } void setScaleFlagArray(u8* pScaleFlagArray) { mScaleFlagArray = pScaleFlagArray; }
void setDrawMtx(Mtx** pDrawMtx) { mDrawMtx = pDrawMtx; } void setDrawMtx(Mtx** pDrawMtx) { mDrawMtx = pDrawMtx; }
@ -66,7 +67,7 @@ public:
u32 getBumpMtxOffset() const { return mBumpMtxOffset; } u32 getBumpMtxOffset() const { return mBumpMtxOffset; }
inline J3DMaterial* getMaterial() const { return mMaterial; } inline J3DMaterial* getMaterial() const { return mMaterial; }
inline u32 getPipeline() const { return (mFlags >> 2) & 7; } inline u32 getPipeline() const { return (mFlags >> 2) & 0x07; }
inline u32 getTexMtxLoadType() const { return mFlags & 0xF000; } inline u32 getTexMtxLoadType() const { return mFlags & 0xF000; }
static void resetVcdVatCache() { sOldVcdVatCmd = NULL; } static void resetVcdVatCache() { sOldVcdVatCmd = NULL; }

View File

@ -33,6 +33,22 @@ struct TVec3<f32> {
y = other.y; y = other.y;
z = other.z; z = other.z;
} }
void set(f32 x_, f32 y_, f32 z_) {
x = x_;
y = y_;
z = z_;
}
void zero() {
x = y = z = 0.0f;
}
void mul(const TVec3<f32>& a, const TVec3<f32>& b) {
x = a.x * b.x;
y = a.y * b.y;
z = a.z * b.z;
}
}; };
template <typename T> template <typename T>

View File

@ -17,6 +17,9 @@ struct pair {
struct TSinCosTable { struct TSinCosTable {
std::pair<f32, f32> table[0x2000]; std::pair<f32, f32> table[0x2000];
f32 sinShort(s16 v) const { return table[static_cast<u16>(v) >> 3].a1; }
f32 cosShort(s16 v) const { return table[static_cast<u16>(v) >> 3].b1; }
}; };
struct TAtanTable { struct TAtanTable {
@ -35,4 +38,12 @@ extern TAtanTable atanTable_;
extern TAsinAcosTable asinAcosTable_; extern TAsinAcosTable asinAcosTable_;
}; // namespace JMath }; // namespace JMath
inline f32 JMASSin(s16 s) {
return JMath::sincosTable_.sinShort(s);
}
inline f32 JMASCos(s16 s) {
return JMath::sincosTable_.cosShort(s);
}
#endif /* JMATRIGONOMETRIC_H */ #endif /* JMATRIGONOMETRIC_H */

View File

@ -2,5 +2,108 @@
#define JPABASESHAPE_H #define JPABASESHAPE_H
#include "dolphin/types.h" #include "dolphin/types.h"
#include "dolphin/gx/GX.h"
class JPAEmitterWorkData;
class JKRHeap;
struct JPABaseShapeData {
// Common header.
/* 0x00 */ u8 mMagic[4];
/* 0x04 */ u32 mSize;
/* 0x08 */ u32 mFlags;
/* 0x0C */ s16 mClrPrmAnmOffset;
/* 0x0E */ s16 mClrEnvAnmOffset;
/* 0x10 */ f32 mBaseSizeX;
/* 0x14 */ f32 mBaseSizeY;
/* 0x18 */ u16 mBlendModeCfg;
/* 0x1A */ u8 mAlphaCompareCfg;
/* 0x1B */ u8 mAlphaRef0;
/* 0x1C */ u8 mAlphaRef1;
/* 0x1D */ u8 mZModeCfg;
/* 0x1E */ u8 mTexFlg;
/* 0x1F */ u8 mTexAnmNum;
/* 0x20 */ u8 mTexIdx;
/* 0x21 */ u8 mClrFlg;
/* 0x22 */ u8 mClrPrmKeyNum;
/* 0x23 */ u8 mClrEnvKeyNum;
/* 0x24 */ s16 mClrAnmFrmMax;
/* 0x26 */ GXColor mClrPrm;
/* 0x2A */ GXColor mClrEnv;
/* 0x2E */ u8 mAnmRndm;
/* 0x2F */ u8 mClrAnmRndmMask;
/* 0x30 */ u8 mTexAnmRndmMask;
};
struct JPABaseShape {
public:
/* 8027A6DC */ JPABaseShape(u8 const*, JKRHeap*);
/* 8027A7E8 */ void setGX(JPAEmitterWorkData*) const;
static GXBlendMode st_bm[3];
static GXBlendFactor st_bf[10];
static GXLogicOp st_lo[16];
static GXCompare st_c[8];
static GXAlphaOp st_ao[4];
static GXTevColorArg st_ca[6][4];
static GXTevAlphaArg st_aa[2][4];
GXBlendMode getBlendMode() const { return st_bm[mpData->mBlendModeCfg & 0x03]; }
GXBlendFactor getBlendSrc() const { return st_bf[(mpData->mBlendModeCfg >> 2) & 0x0F]; }
GXBlendFactor getBlendDst() const { return st_bf[(mpData->mBlendModeCfg >> 6) & 0x0F]; }
GXLogicOp getLogicOp() const { return st_lo[(mpData->mBlendModeCfg >> 10) & 0x0F]; }
GXBool getZCompLoc() const { return (GXBool)((mpData->mZModeCfg >> 5) & 0x01); }
GXBool getZEnable() const { return (GXBool)(mpData->mZModeCfg & 0x01); }
GXCompare getZCmp() const { return st_c[(mpData->mZModeCfg >> 1) & 0x07]; }
GXBool getZUpd() const { return (GXBool)((mpData->mZModeCfg >> 4) & 0x01); }
GXCompare getAlphaCmp0() const { return st_c[mpData->mAlphaCompareCfg & 0x07]; }
u8 getAlphaRef0() const { return mpData->mAlphaRef0; }
GXAlphaOp getAlphaOp() const { return st_ao[(mpData->mAlphaCompareCfg >> 3) & 0x03]; }
GXCompare getAlphaCmp1() const { return st_c[(mpData->mAlphaCompareCfg >> 5) & 0x07]; }
u8 getAlphaRef1() const { return mpData->mAlphaRef1; }
const GXTevColorArg* getTevColorArg() const { return st_ca[(mpData->mFlags >> 0x0F) & 0x07]; }
const GXTevAlphaArg* getTevAlphaArg() const { return st_aa[(mpData->mFlags >> 0x12) & 0x01]; }
u32 getType() const { return (mpData->mFlags >> 0) & 0x0F; }
u32 getDirType() const { return (mpData->mFlags >> 4) & 0x07; }
u32 getRotType() const { return (mpData->mFlags >> 7) & 0x07; }
u32 getBasePlaneType() const { return (mpData->mFlags >> 10) & 0x07; }
u32 getTilingS() const { return (mpData->mFlags >> 25) & 0x01; }
u32 getTilingT() const { return (mpData->mFlags >> 26) & 0x01; }
bool isGlblClrAnm() const { return !!(mpData->mFlags & 0x00001000); }
bool isGlblTexAnm() const { return !!(mpData->mFlags & 0x00004000); }
bool isPrjTex() const { return !!(mpData->mFlags & 0x00100000); }
bool isDrawFwdAhead() const { return !!(mpData->mFlags & 0x00200000); }
bool isDrawPrntAhead() const { return !!(mpData->mFlags & 0x00400000); }
bool isClipOn() const { return !!(mpData->mFlags & 0x00800000); }
bool isTexCrdAnm() const { return !!(mpData->mFlags & 0x01000000); }
bool isNoDrawParent() const { return !!(mpData->mFlags & 0x08000000); }
bool isNoDrawChild() const { return !!(mpData->mFlags & 0x10000000); }
bool isPrmAnm() const { return !!(mpData->mClrFlg & 0x02); }
bool isEnvAnm() const { return !!(mpData->mClrFlg & 0x08); }
u8 getClrAnmType() const { return (mpData->mClrFlg >> 4) & 0x07; }
s16 getClrAnmMaxFrm() const { return mpData->mClrAnmFrmMax; }
void getPrmClr(s16 idx, GXColor* dst) { *dst = mpPrmClrAnmTbl[idx]; }
void getEnvClr(s16 idx, GXColor* dst) { *dst = mpEnvClrAnmTbl[idx]; }
bool isTexAnm() const { return !!(mpData->mTexFlg & 0x01); }
u8 getTexAnmType() const { return (mpData->mTexFlg >> 2) & 0x07; }
u32 getTexIdx() const { return mpData->mTexIdx; }
f32 getBaseSizeX() const { return mpData->mBaseSizeX; }
f32 getBaseSizeY() const { return mpData->mBaseSizeY; }
public:
/* 0x00 */ const JPABaseShapeData* mpData;
/* 0x04 */ const void* mpTexCrdMtxAnmTbl;
/* 0x08 */ const u8* mpTexIdxAnimTbl;
/* 0x0C */ GXColor* mpPrmClrAnmTbl;
/* 0x10 */ GXColor* mpEnvClrAnmTbl;
};
#endif /* JPABASESHAPE_H */ #endif /* JPABASESHAPE_H */

View File

@ -2,5 +2,43 @@
#define JPACHILDSHAPE_H #define JPACHILDSHAPE_H
#include "dolphin/types.h" #include "dolphin/types.h"
#include "dolphin/gx/GX.h"
struct JPAChildShapeData {
// Common header.
/* 0x00 */ u8 mMagic[4];
/* 0x04 */ u32 mSize;
/* 0x08 */ u32 mFlags;
/* 0x0C */ f32 mPosRndm;
/* 0x10 */ f32 mBaseVel;
/* 0x14 */ f32 mBaseVelRndm;
/* 0x18 */ f32 mVelInfRate;
/* 0x1C */ f32 mGravity;
/* 0x20 */ f32 mScaleX;
/* 0x24 */ f32 mScaleY;
/* 0x28 */ f32 mInheritScale;
/* 0x2C */ f32 mInheritAlpha;
/* 0x30 */ f32 mInheritRGB;
/* 0x34 */ GXColor mPrmClr;
/* 0x38 */ GXColor mEnvClr;
/* 0x3C */ f32 mTiming;
/* 0x40 */ s16 mLife;
/* 0x42 */ s16 mRate;
/* 0x44 */ u8 mStep;
/* 0x45 */ u8 mTexIdx;
/* 0x46 */ s16 mRotSpeed;
};
class JPAChildShape {
public:
/* 8027B038 */ JPAChildShape(u8 const*);
void getPrmClr(GXColor* dst) { *dst = mpData->mPrmClr; }
void getEnvClr(GXColor* dst) { *dst = mpData->mEnvClr; }
public:
/* 0x00 */ const JPAChildShapeData* mpData;
};
#endif /* JPACHILDSHAPE_H */ #endif /* JPACHILDSHAPE_H */

View File

@ -35,13 +35,21 @@ struct JPADynamicsBlockData {
/* 0x70 */ s16 mStartFrame; /* 0x70 */ s16 mStartFrame;
/* 0x72 */ s16 mLifeTime; /* 0x72 */ s16 mLifeTime;
/* 0x74 */ s16 mVolumeSize; /* 0x74 */ s16 mVolumeSize;
/* 0x76 */ s16 mDivNumber; /* 0x76 */ u16 mDivNumber;
/* 0x78 */ u8 mRateStep; /* 0x78 */ u8 mRateStep;
/* 0x7C */ u32 field_0x7c; /* 0x7C */ u32 field_0x7c;
}; };
typedef void (*JPADynamicsCalcVolumeFunc)(JPAEmitterWorkData*); typedef void (*JPADynamicsCalcVolumeFunc)(JPAEmitterWorkData*);
enum {
JPADynFlag_FixedDensity = 0x01,
JPADynFlag_FixedInterval = 0x02,
JPADynFlag_InheritScale = 0x04,
JPADynFlag_FollowEmtr = 0x08,
JPADynFlag_FollowEmtrChld = 0x10,
};
class JPADynamicsBlock { class JPADynamicsBlock {
public: public:
/* 8027BB18 */ JPADynamicsBlock(u8 const*); /* 8027BB18 */ JPADynamicsBlock(u8 const*);
@ -52,10 +60,14 @@ public:
s16 getStartFrame() const { return mpData->mStartFrame; } s16 getStartFrame() const { return mpData->mStartFrame; }
u32 getResUserWork() const { return mpData->mResUserWork; } u32 getResUserWork() const { return mpData->mResUserWork; }
u32 getFlag() const { return mpData->mFlags; }
u32 getVolumeType() const { return (mpData->mFlags >> 8) & 0x07; }
u16 getDivNumber() const { return mpData->mDivNumber; }
f32 getRateRndm() const { return mpData->mRateRndm; }
public: public:
JPADynamicsBlockData* mpData; /* 0x00 */ const JPADynamicsBlockData* mpData;
JPADynamicsCalcVolumeFunc mpCalcVolumeFunc; /* 0x04 */ JPADynamicsCalcVolumeFunc mpCalcVolumeFunc;
}; };
#endif /* JPADYNAMICSBLOCK_H */ #endif /* JPADYNAMICSBLOCK_H */

View File

@ -3,4 +3,71 @@
#include "dolphin/types.h" #include "dolphin/types.h"
struct JPAExtraShapeData {
// Common header.
/* 0x00 */ u8 mMagic[4];
/* 0x04 */ u32 mSize;
/* 0x08 */ u32 mFlags;
/* 0x0C */ f32 mScaleInTiming;
/* 0x10 */ f32 mScaleOutTiming;
/* 0x14 */ f32 mScaleInValueX;
/* 0x18 */ f32 mScaleOutValueX;
/* 0x1C */ f32 mScaleInValueY;
/* 0x20 */ f32 mScaleOutValueY;
/* 0x24 */ f32 mScaleOutRandom;
/* 0x28 */ s16 mScaleAnmCycleX;
/* 0x2A */ s16 mScaleAnmCycleY;
/* 0x2C */ f32 mAlphaInTiming;
/* 0x30 */ f32 mAlphaOutTiming;
/* 0x34 */ f32 mAlphaInValue;
/* 0x38 */ f32 mAlphaBaseValue;
/* 0x3C */ f32 mAlphaOutValue;
/* 0x40 */ f32 mAlphaWaveFrequency;
/* 0x44 */ f32 mAlphaWaveRandom;
/* 0x48 */ f32 mAlphaWaveAmplitude;
/* 0x4C */ f32 mRotateAngle;
/* 0x50 */ f32 mRotateAngleRandom;
/* 0x54 */ f32 mRotateSpeed;
/* 0x58 */ f32 mRotateSpeedRandom;
/* 0x5C */ f32 mRotateDirection;
};
class JPAExtraShape {
public:
/* 8027AD88 */ JPAExtraShape(u8 const*);
/* 8027ADBC */ void init();
f32 getScaleInTiming() const { return mpData->mScaleInTiming; }
f32 getScaleOutTiming() const { return mpData->mScaleOutTiming; }
f32 getScaleInValueX() const { return mpData->mScaleInValueX; }
f32 getScaleInValueY() const { return mpData->mScaleInValueY; }
f32 getScaleOutValueX() const { return mpData->mScaleOutValueX; }
f32 getScaleOutValueY() const { return mpData->mScaleOutValueY; }
s16 getScaleAnmCycleX() const { return mpData->mScaleAnmCycleX; }
s16 getScaleAnmCycleY() const { return mpData->mScaleAnmCycleY; }
f32 getAlphaInTiming() const { return mpData->mAlphaInTiming; }
f32 getAlphaOutTiming() const { return mpData->mAlphaOutTiming; }
f32 getAlphaInValue() const { return mpData->mAlphaInValue; }
f32 getAlphaOutValue() const { return mpData->mAlphaOutValue; }
f32 getAlphaBaseValue() const { return mpData->mAlphaBaseValue; }
f32 getAlphaFreq() const { return mpData->mAlphaWaveFrequency; }
f32 getAlphaAmp() const { return mpData->mAlphaWaveAmplitude; }
f32 getScaleIncRateX() const { return mScaleIncRateX; }
f32 getScaleDecRateX() const { return mScaleDecRateX; }
f32 getScaleIncRateY() const { return mScaleIncRateY; }
f32 getScaleDecRateY() const { return mScaleDecRateY; }
f32 getAlphaIncRate() const { return mAlphaIncRate; }
f32 getAlphaDecRate() const { return mAlphaDecRate; }
private:
/* 0x00 */ const JPAExtraShapeData* mpData;
/* 0x04 */ f32 mAlphaIncRate;
/* 0x08 */ f32 mAlphaDecRate;
/* 0x0C */ f32 mScaleIncRateX;
/* 0x10 */ f32 mScaleIncRateY;
/* 0x14 */ f32 mScaleDecRateX;
/* 0x18 */ f32 mScaleDecRateY;
};
#endif /* JPAEXTRASHAPE_H */ #endif /* JPAEXTRASHAPE_H */

View File

@ -7,6 +7,9 @@
#include "JSystem/JGeometry.h" #include "JSystem/JGeometry.h"
#include "JSystem/JSupport/JSUList.h" #include "JSystem/JSupport/JSUList.h"
#include "JSystem/JParticle/JPADynamicsBlock.h"
#include "JSystem/JParticle/JPAResource.h"
class JKRHeap; class JKRHeap;
class JPABaseEmitter; class JPABaseEmitter;
class JPABaseParticle; class JPABaseParticle;
@ -31,6 +34,30 @@ public:
JPARandom() { mSeed = 0; } JPARandom() { mSeed = 0; }
void set_seed(u32 seed) { mSeed = seed; } void set_seed(u32 seed) { mSeed = seed; }
u32 get_rndm_u() {
return mSeed = mSeed * 0x19660du + 0x3c6ef35fu;
}
f32 get_rndm_f() {
union { u32 u; f32 f; } a;
a.u = ((get_rndm_u() >> 9) | 0x3f800000);
return a.f - 1.0f;
}
f32 get_rndm_zp() {
f32 f = get_rndm_f();
return (f + f) - 1.0f;
}
f32 get_rndm_zh() {
f32 f = get_rndm_f();
return f - 1.0f;
}
s16 get_rndm_ss() {
return ((s16)get_rndm_u()) >> 16;
}
public: public:
u32 mSeed; u32 mSeed;
}; };
@ -175,6 +202,13 @@ public:
/* 8027E6A4 */ ~JPAEmitterCallBack(); /* 8027E6A4 */ ~JPAEmitterCallBack();
}; };
enum {
JPAEmtrStts_StopEmit = 0x01,
JPAEmtrStts_StopCalc = 0x02,
JPAEmtrStts_FirstEmit = 0x10,
JPAEmtrStts_RateStepEmit = 0x20,
};
class JPABaseEmitter { class JPABaseEmitter {
public: public:
/* 8027E5EC */ ~JPABaseEmitter(); /* 8027E5EC */ ~JPABaseEmitter();
@ -191,9 +225,17 @@ public:
/* 8027EF50 */ bool loadTexture(u8, GXTexMapID); /* 8027EF50 */ bool loadTexture(u8, GXTexMapID);
void setStatus(u32 status) { mStatus |= status; } void setStatus(u32 status) { mStatus |= status; }
void clearStatus(u32 status) { mStatus &= ~status; }
bool checkStatus(u32 status) { return !!(mStatus & status); } bool checkStatus(u32 status) { return !!(mStatus & status); }
bool checkFlag(u32 flag) { return !!(mpRes->getDyn()->getFlag() & flag); }
u8 getResourceManagerID() const { return mResMgrID; } u8 getResourceManagerID() const { return mResMgrID; }
u8 getGroupID() const { return mGroupID; } u8 getGroupID() const { return mGroupID; }
u8 getDrawTimes() const { return mDrawTimes; }
f32 get_r_f() { return mRndm.get_rndm_f(); }
f32 get_r_zp() { return mRndm.get_rndm_zp(); }
f32 get_r_zh() { return mRndm.get_rndm_zh(); }
s16 get_r_ss() { return mRndm.get_rndm_ss(); }
public: public:
/* 0x00 */ Vec mLocalScl; /* 0x00 */ Vec mLocalScl;
@ -234,7 +276,7 @@ public:
/* 0xFC */ f32 mScaleOut; /* 0xFC */ f32 mScaleOut;
/* 0x100 */ u32 mTick; /* 0x100 */ u32 mTick;
/* 0x104 */ s16 mWaitTime; /* 0x104 */ s16 mWaitTime;
/* 0x106 */ u16 mRateStepTimer; /* 0x106 */ s16 mRateStepTimer;
/* 0x108 */ GXColor mPrmClr; /* 0x108 */ GXColor mPrmClr;
/* 0x10C */ GXColor mEnvClr; /* 0x10C */ GXColor mEnvClr;
/* 0x110 */ u8 mDrawTimes; /* 0x110 */ u8 mDrawTimes;
@ -245,11 +287,15 @@ public:
class JPAParticleCallBack { class JPAParticleCallBack {
public: public:
~JPAParticleCallBack(); virtual ~JPAParticleCallBack();
virtual void execute(JPABaseEmitter*, JPABaseParticle*); virtual void execute(JPABaseEmitter*, JPABaseParticle*);
virtual void draw(JPABaseEmitter*, JPABaseParticle*); virtual void draw(JPABaseEmitter*, JPABaseParticle*);
}; };
enum {
JPAPtclStts_Invisible = 0x08,
};
class JPABaseParticle { class JPABaseParticle {
public: public:
/* 8027EFEC */ void init_p(JPAEmitterWorkData*); /* 8027EFEC */ void init_p(JPAEmitterWorkData*);
@ -277,7 +323,7 @@ public:
/* 0x74 */ f32 mDrag; /* 0x74 */ f32 mDrag;
/* 0x78 */ u32 field_0x78; /* 0x78 */ u32 field_0x78;
/* 0x7C */ u32 mStatus; /* 0x7C */ u32 mStatus;
/* 0x80 */ u16 mAge; /* 0x80 */ s16 mAge;
/* 0x82 */ u16 mLifeTime; /* 0x82 */ u16 mLifeTime;
/* 0x84 */ f32 mTime; /* 0x84 */ f32 mTime;
/* 0x88 */ u16 mRotateAngle; /* 0x88 */ u16 mRotateAngle;

View File

@ -20,7 +20,7 @@ class JPAResource {
public: public:
/* 80274010 */ JPAResource(); /* 80274010 */ JPAResource();
/* 80274080 */ void init(JKRHeap*); /* 80274080 */ void init(JKRHeap*);
/* 802755E8 */ void calc(JPAEmitterWorkData*, JPABaseEmitter*); /* 802755E8 */ bool calc(JPAEmitterWorkData*, JPABaseEmitter*);
/* 80275A94 */ void draw(JPAEmitterWorkData*, JPABaseEmitter*); /* 80275A94 */ void draw(JPAEmitterWorkData*, JPABaseEmitter*);
/* 80275B74 */ void drawP(JPAEmitterWorkData*); /* 80275B74 */ void drawP(JPAEmitterWorkData*);
/* 80275EB0 */ void drawC(JPAEmitterWorkData*); /* 80275EB0 */ void drawC(JPAEmitterWorkData*);

798
include/d/d_procname.h Normal file
View File

@ -0,0 +1,798 @@
#pragma once
enum
{
PROC_OVERLAP0 = 0x0000,
PROC_OVERLAP1 = 0x0001,
PROC_OVERLAP3 = 0x0002,
PROC_OVERLAP6 = 0x0003,
PROC_OVERLAP7 = 0x0004,
PROC_OVERLAP8 = 0x0005,
PROC_OVERLAP9 = 0x0006,
PROC_OVERLAP10 = 0x0007,
PROC_OVERLAP11 = 0x0008,
PROC_LOGO_SCENE = 0x0009,
PROC_MENU_SCENE = 0x000A,
PROC_PLAY_SCENE = 0x000B,
PROC_OPENING_SCENE = 0x000C,
PROC_NAME_SCENE = 0x000D,
PROC_NAMEEX_SCENE = 0x000E,
PROC_WARNING_SCENE = 0x000F,
PROC_WARNING2_SCENE = 0x0010,
PROC_OVERLAP2 = 0x0011,
PROC_ROOM_SCENE = 0x0012,
PROC_KANKYO = 0x0013,
PROC_ALLDIE = 0x0014,
PROC_ENVSE = 0x0015,
PROC_Obj_Swpush = 0x0016,
PROC_Obj_Swpush2 = 0x0017,
PROC_Obj_Swpush5 = 0x0018,
PROC_Tag_Gstart = 0x0019,
PROC_NO_CHG_ROOM = 0x001A,
PROC_Obj_Lv6ElevtA = 0x001B,
PROC_OBJ_SO = 0x001C,
PROC_Obj_Movebox = 0x001D,
PROC_Obj_SwTurn = 0x001E,
PROC_Obj_Lv6SwTurn = 0x001F,
PROC_OBJ_SEKIZOA = 0x0020,
PROC_OBJ_GRA = 0x0021,
PROC_TAG_GRA = 0x0022,
PROC_TAG_YAMI = 0x0023,
PROC_Obj_Ladder = 0x0024,
PROC_OBJ_BEF = 0x0025,
PROC_OBJ_FMOBJ = 0x0026,
PROC_OBJ_LBOX = 0x0027,
PROC_OBJ_WEB0 = 0x0028,
PROC_OBJ_WEB1 = 0x0029,
PROC_OBJ_CB = 0x002A,
PROC_OBJ_MAKI = 0x002B,
PROC_OBJ_BRG = 0x002C,
PROC_OBJ_GB = 0x002D,
PROC_OBJ_GM = 0x002E,
PROC_OBJ_TOBY = 0x002F,
PROC_OBJ_TP = 0x0030,
PROC_TREESH = 0x0031,
PROC_Obj_ZDoor = 0x0032,
PROC_Obj_Pillar = 0x0033,
PROC_Obj_Cdoor = 0x0034,
PROC_GRDWATER = 0x0035,
PROC_Obj_RotBridge = 0x0036,
PROC_Obj_MagLift = 0x0037,
PROC_Obj_MagLiftRot = 0x0038,
PROC_Obj_Lv1Cdl00 = 0x0039,
PROC_Obj_Lv1Cdl01 = 0x003A,
PROC_Obj_TvCdlst = 0x003B,
PROC_Obj_HsTarget = 0x003C,
PROC_Obj_HeavySw = 0x003D,
PROC_Obj_GoGate = 0x003E,
PROC_Obj_TaFence = 0x003F,
PROC_Obj_Saidan = 0x0040,
PROC_Obj_SpinLift = 0x0041,
PROC_Obj_BmWindow = 0x0042,
PROC_Obj_RfHole = 0x0043,
PROC_Obj_WaterPillar = 0x0044,
PROC_Obj_SyRock = 0x0045,
PROC_Obj_BsGate = 0x0046,
PROC_Obj_AmiShutter = 0x0047,
PROC_Obj_WtGate = 0x0048,
PROC_Obj_Lv2Candle = 0x0049,
PROC_Obj_TogeTrap = 0x004A,
PROC_Obj_RotTrap = 0x004B,
PROC_Obj_SwallShutter = 0x004C,
PROC_Obj_IceWall = 0x004D,
PROC_Obj_Lv5SwIce = 0x004E,
PROC_Obj_Lv5FBoard = 0x004F,
PROC_Obj_Turara = 0x0050,
PROC_Obj_TwGate = 0x0051,
PROC_Obj_Digholl = 0x0052,
PROC_Obj_Digpl = 0x0053,
PROC_Obj_TestCube = 0x0054,
PROC_Obj_Kshutter = 0x0055,
PROC_NPC_COACH = 0x0056,
PROC_NPC_THEB = 0x0057,
PROC_COACH_FIRE = 0x0058,
PROC_COACH2D = 0x0059,
PROC_BALLOON2D = 0x005A,
PROC_SKIP2D = 0x005B,
PROC_Obj_MvStair = 0x005C,
PROC_Obj_Cowdoor = 0x005D,
PROC_Obj_Swpropeller = 0x005E,
PROC_Obj_BoomShutter = 0x005F,
PROC_NPC_KS = 0x0060,
PROC_Obj_Hfuta = 0x0061,
PROC_Obj_BkDoor = 0x0062,
PROC_Obj_Cboard = 0x0063,
PROC_Obj_MGate = 0x0064,
PROC_Obj_Ikada = 0x0065,
PROC_Obj_Ice_l = 0x0066,
PROC_Obj_Ice_s = 0x0067,
PROC_Obj_E_CREATE = 0x0068,
PROC_Obj_Bhbridge = 0x0069,
PROC_Obj_Kaisou = 0x006A,
PROC_Obj_HHASHI = 0x006B,
PROC_Obj_BHASHI = 0x006C,
PROC_OCTHASHI = 0x006D,
PROC_Obj_THASHI = 0x006E,
PROC_Obj_CRVGATE = 0x006F,
PROC_Obj_CRVFENCE = 0x0070,
PROC_Obj_CRVHAHEN = 0x0071,
PROC_Obj_CRVSTEEL = 0x0072,
PROC_Obj_CRVLH_UP = 0x0073,
PROC_Obj_CRVLH_DW = 0x0074,
PROC_Obj_RIVERROCK = 0x0075,
PROC_Obj_DUST = 0x0076,
PROC_Obj_ITA = 0x0077,
PROC_Obj_Window = 0x0078,
PROC_Obj_MetalBox = 0x0079,
PROC_Obj_BBox = 0x007A,
PROC_OBJ_MSIMA = 0x007B,
PROC_OBJ_MYOGAN = 0x007C,
PROC_B_ZANTS = 0x007D,
PROC_Obj_ChainBlock = 0x007E,
PROC_Obj_ChainWall = 0x007F,
PROC_Obj_KkrGate = 0x0080,
PROC_Obj_RiderGate = 0x0081,
PROC_Obj_Onsen = 0x0082,
PROC_Obj_Chest = 0x0083,
PROC_Obj_Bemos = 0x0084,
PROC_Obj_RopeBridge = 0x0085,
PROC_Obj_WellCover = 0x0086,
PROC_Obj_GraveStone = 0x0087,
PROC_Obj_ZraRock = 0x0088,
PROC_Obj_GraRock = 0x0089,
PROC_Obj_GrzRock = 0x008A,
PROC_GRA_WALL = 0x008B,
PROC_OBJ_ONSEN_FIRE = 0x008C,
PROC_Obj_Lv6bemos = 0x008D,
PROC_Obj_Lv6bemos2 = 0x008E,
PROC_Obj_BarDesk = 0x008F,
PROC_Obj_DigSnow = 0x0090,
PROC_Obj_Ytaihou = 0x0091,
PROC_Obj_Elevator = 0x0092,
PROC_Obj_Lv6TogeRoll = 0x0093,
PROC_Obj_Lv6TogeTrap = 0x0094,
PROC_Obj_Lv6Tenbin = 0x0095,
PROC_Obj_Lv6SwGate = 0x0096,
PROC_Obj_Lv6Lblock = 0x0097,
PROC_Obj_Lv6ChgGate = 0x0098,
PROC_Obj_Lv6FuriTrap = 0x0099,
PROC_Obj_Lv6SzGate = 0x009A,
PROC_Obj_Lv4EdShutter = 0x009B,
PROC_Obj_Lv4Gate = 0x009C,
PROC_Obj_Lv4PoGate = 0x009D,
PROC_Obj_Lv4SlideWall = 0x009E,
PROC_Obj_Lv4HsTarget = 0x009F,
PROC_Obj_Lv7PropY = 0x00A0,
PROC_Obj_Lv7BsGate = 0x00A1,
PROC_Obj_Lv8OptiLift = 0x00A2,
PROC_Obj_Lv8KekkaiTrap = 0x00A3,
PROC_Obj_Lv8Lift = 0x00A4,
PROC_Obj_Lv8UdFloor = 0x00A5,
PROC_Obj_Lv9SwShutter = 0x00A6,
PROC_Obj_TobyHouse = 0x00A7,
PROC_Obj_poCandle = 0x00A8,
PROC_Obj_Lv4DigSand = 0x00A9,
PROC_Obj_FallObj = 0x00AA,
PROC_Obj_SmgDoor = 0x00AB,
PROC_Obj_SwLight = 0x00AC,
PROC_Obj_Avalanche = 0x00AD,
PROC_Obj_MirrorScrew = 0x00AE,
PROC_Obj_MirrorSand = 0x00AF,
PROC_Obj_MirrorTable = 0x00B0,
PROC_Obj_MirrorChain = 0x00B1,
PROC_Obj_Mirror6Pole = 0x00B2,
PROC_Obj_SwSpinner = 0x00B3,
PROC_Obj_TDoor = 0x00B4,
PROC_Obj_Lv7Bridge = 0x00B5,
PROC_Obj_zrTurara = 0x00B6,
PROC_Obj_TakaraDai = 0x00B7,
PROC_Obj_Table = 0x00B8,
PROC_Obj_CatDoor = 0x00B9,
PROC_Obj_Gake = 0x00BA,
PROC_CSTAF = 0x00BB,
PROC_Obj_Lv4RailWall = 0x00BC,
PROC_Obj_Lv4Sand = 0x00BD,
PROC_Obj_PushDoor = 0x00BE,
PROC_PushDoor = 0x00BF,
PROC_Obj_GanonWall2 = 0x00C0,
PROC_Obj_Lv4Bridge = 0x00C1,
PROC_Obj_Lv4Floor = 0x00C2,
PROC_Tag_Spinner = 0x00C3,
PROC_Obj_SwHang = 0x00C4,
PROC_Obj_RotStair = 0x00C5,
PROC_Obj_MagneArm = 0x00C6,
PROC_Obj_KWheel00 = 0x00C7,
PROC_Obj_KWheel01 = 0x00C8,
PROC_Obj_Ychndlr = 0x00C9,
PROC_Obj_PRElvtr = 0x00CA,
PROC_Obj_MHasu = 0x00CB,
PROC_Obj_YIblltray = 0x00CC,
PROC_Obj_Lv6EGate = 0x00CD,
PROC_Obj_PDtile = 0x00CE,
PROC_Obj_PDwall = 0x00CF,
PROC_Obj_Lv4PRwall = 0x00D0,
PROC_Obj_KLift00 = 0x00D1,
PROC_B_OH = 0x00D2,
PROC_Obj_Lv4Chan = 0x00D3,
PROC_Obj_Lv3R10Saka = 0x00D4,
PROC_Obj_Lv3Water = 0x00D5,
PROC_Obj_Lv3Water2 = 0x00D6,
PROC_OBJ_LV3WATERB = 0x00D7,
PROC_Obj_HBombkoya = 0x00D8,
PROC_Obj_SZbridge = 0x00D9,
PROC_Obj_KakarikoBrg = 0x00DA,
PROC_Obj_OrdinBrg = 0x00DB,
PROC_Obj_BurnBox = 0x00DC,
PROC_Obj_KJgjs = 0x00DD,
PROC_OBJ_IHASI = 0x00DE,
PROC_Obj_IceBlock = 0x00DF,
PROC_Obj_VolcanicBall = 0x00E0,
PROC_Obj_VolcanicBomb = 0x00E1,
PROC_Obj_VolcGnd = 0x00E2,
PROC_Obj_KKanban = 0x00E3,
PROC_E_PH = 0x00E4,
PROC_NPC_ZRA = 0x00E5,
PROC_Obj_Chandelier = 0x00E6,
PROC_Obj_Stopper2 = 0x00E7,
PROC_DOOR20 = 0x00E8,
PROC_Tag_Hinit = 0x00E9,
PROC_Tag_Hjump = 0x00EA,
PROC_Tag_AJnot = 0x00EB,
PROC_Tag_Hstop = 0x00EC,
PROC_CANOE = 0x00ED,
PROC_HORSE = 0x00EE,
PROC_E_WB = 0x00EF,
PROC_OBJ_ITO = 0x00F0,
PROC_OBJ_SW = 0x00F1,
PROC_SPINNER = 0x00F2,
PROC_B_OB = 0x00F3,
PROC_KAGO = 0x00F4,
PROC_E_YC = 0x00F5,
PROC_B_DS = 0x00F6,
PROC_B_DR = 0x00F7,
PROC_B_ZANTZ = 0x00F8,
PROC_B_ZANT = 0x00F9,
PROC_B_ZANTM = 0x00FA,
PROC_TBOX = 0x00FB,
PROC_TBOX2 = 0x00FC,
PROC_ALINK = 0x00FD,
PROC_BOOMERANG = 0x00FE,
PROC_MIDNA = 0x00FF,
PROC_NPC_TK = 0x0100,
PROC_NPC_WORM = 0x0101,
PROC_PPolamp = 0x0102,
PROC_BkyRock = 0x0103,
PROC_HITOBJ = 0x0104,
PROC_EP = 0x0105,
PROC_COW = 0x0106,
PROC_PERU = 0x0107,
PROC_NI = 0x0108,
PROC_NPC_TKJ2 = 0x0109,
PROC_SQ = 0x010A,
PROC_NPC_SQ = 0x010B,
PROC_DO = 0x010C,
PROC_NPC_NE = 0x010D,
PROC_NPC_TR = 0x010E,
PROC_NPC_LF = 0x010F,
PROC_OBJ_FOOD = 0x0110,
PROC_OBJ_KI = 0x0111,
PROC_OBJ_KITA = 0x0112,
PROC_OBJ_KEY = 0x0113,
PROC_OBJ_KEYHOLE = 0x0114,
PROC_Obj_Lv5Key = 0x0115,
PROC_OBJ_LP = 0x0116,
PROC_OBJ_TATIGI = 0x0117,
PROC_OBJ_ROCK = 0x0118,
PROC_OBJ_WFLAG = 0x0119,
PROC_OBJ_KAGE = 0x011A,
PROC_OBJ_KANBAN2 = 0x011B,
PROC_OBJ_BALLOON = 0x011C,
PROC_OBJ_SUISYA = 0x011D,
PROC_OBJ_OILTUBO = 0x011E,
PROC_OBJ_ROTEN = 0x011F,
PROC_OBJ_SSDRINK = 0x0120,
PROC_OBJ_SSITEM = 0x0121,
PROC_TAG_SSDRINK = 0x0122,
PROC_TAG_BTLITM = 0x0123,
PROC_TAG_LV5SOUP = 0x0124,
PROC_TAG_MNLIGHT = 0x0125,
PROC_TAG_SHOPCAM = 0x0126,
PROC_TAG_SHOPITM = 0x0127,
PROC_OBJ_NDOOR = 0x0128,
PROC_OBJ_UDOOR = 0x0129,
PROC_OBJ_USAKU = 0x012A,
PROC_Obj_SM_DOOR = 0x012B,
PROC_OBJ_BED = 0x012C,
PROC_OBJ_BOUMATO = 0x012D,
PROC_OBJ_ITAMATO = 0x012E,
PROC_OBJ_NOUGU = 0x012F,
PROC_OBJ_STICK = 0x0130,
PROC_OBJ_MIE = 0x0131,
PROC_OBJ_SEKIDOOR = 0x0132,
PROC_OBJ_SEKIZO = 0x0133,
PROC_OBJ_SMTILE = 0x0134,
PROC_NPC_FISH = 0x0135,
PROC_MG_FISH = 0x0136,
PROC_FSHOP = 0x0137,
PROC_NPC_DU = 0x0138,
PROC_DISAPPEAR = 0x0139,
PROC_Obj_Mato = 0x013A,
PROC_Obj_Flag = 0x013B,
PROC_Obj_Flag2 = 0x013C,
PROC_Obj_Flag3 = 0x013D,
PROC_Obj_GOMIKABE = 0x013E,
PROC_Obj_Yousei = 0x013F,
PROC_Obj_Kabuto = 0x0140,
PROC_Obj_Cho = 0x0141,
PROC_Obj_Kuw = 0x0142,
PROC_Obj_Nan = 0x0143,
PROC_Obj_Dan = 0x0144,
PROC_Obj_Kam = 0x0145,
PROC_Obj_Ten = 0x0146,
PROC_Obj_Ari = 0x0147,
PROC_Obj_Kag = 0x0148,
PROC_Obj_Batta = 0x0149,
PROC_Obj_Tombo = 0x014A,
PROC_Obj_Kat = 0x014B,
PROC_Obj_H_Saku = 0x014C,
PROC_Obj_Yobikusa = 0x014D,
PROC_Obj_KazeNeko = 0x014E,
PROC_Obj_KznkArm = 0x014F,
PROC_Obj_NamePlate = 0x0150,
PROC_Obj_OnCloth = 0x0151,
PROC_Obj_LndRope = 0x0152,
PROC_Obj_ItaRope = 0x0153,
PROC_Obj_Sakuita = 0x0154,
PROC_Obj_Laundry = 0x0155,
PROC_WarpBug = 0x0156,
PROC_Izumi_Gate = 0x0157,
PROC_Obj_Fchain = 0x0158,
PROC_Obj_Wchain = 0x0159,
PROC_Tag_Attp = 0x015A,
PROC_Obj_Tornado = 0x015B,
PROC_Obj_Tornado2 = 0x015C,
PROC_Obj_FirePillar = 0x015D,
PROC_Obj_FirePillar2 = 0x015E,
PROC_Obj_InoBone = 0x015F,
PROC_Obj_Stopper = 0x0160,
PROC_Obj_MHole = 0x0161,
PROC_Tag_Magne = 0x0162,
PROC_Obj_BossWarp = 0x0163,
PROC_Obj_WoodPendulum = 0x0164,
PROC_Obj_WdStick = 0x0165,
PROC_Obj_StairBlock = 0x0166,
PROC_Obj_Geyser = 0x0167,
PROC_Tag_KtOnFire = 0x0168,
PROC_Obj_FireWood = 0x0169,
PROC_Obj_FireWood2 = 0x016A,
PROC_Obj_GpTaru = 0x016B,
PROC_Obj_OnsenTaru = 0x016C,
PROC_Obj_KiPot = 0x016D,
PROC_TBOX_SW = 0x016E,
PROC_Obj_SwChain = 0x016F,
PROC_Obj_WoodenSword = 0x0170,
PROC_Obj_StoneMark = 0x0171,
PROC_Obj_Lv3Candle = 0x0172,
PROC_Tag_Lv4Candle = 0x0173,
PROC_Tag_Lv4CandleDm = 0x0174,
PROC_Obj_DamCps = 0x0175,
PROC_Obj_Smoke = 0x0176,
PROC_Obj_WaterFall = 0x0177,
PROC_Obj_ZoraCloth = 0x0178,
PROC_Obj_poFire = 0x0179,
PROC_Tag_poFire = 0x017A,
PROC_Obj_glowSphere = 0x017B,
PROC_Tag_LightBall = 0x017C,
PROC_SwLBall = 0x017D,
PROC_SwBall = 0x017E,
PROC_Obj_WaterEff = 0x017F,
PROC_Tag_RiverBack = 0x0180,
PROC_Tag_KagoFall = 0x0181,
PROC_Tag_Lv2PrChk = 0x0182,
PROC_Obj_Lv4Gear = 0x0183,
PROC_Obj_MasterSword = 0x0184,
PROC_Obj_WoodStatue = 0x0185,
PROC_Obj_Fan = 0x0186,
PROC_Obj_IceLeaf = 0x0187,
PROC_Obj_zrTuraraRc = 0x0188,
PROC_Tag_RetRoom = 0x0189,
PROC_Obj_WindStone = 0x018A,
PROC_Tag_WaraHowl = 0x018B,
PROC_Obj_SCannon = 0x018C,
PROC_Obj_SmWStone = 0x018D,
PROC_Obj_SCannonCrs = 0x018E,
PROC_Tag_SnowEff = 0x018F,
PROC_Tag_CstaSw = 0x0190,
PROC_Tag_Lv6CstaSw = 0x0191,
PROC_Obj_awaPlar = 0x0192,
PROC_Obj_poTbox = 0x0193,
PROC_Obj_TimeFire = 0x0194,
PROC_Obj_TMoon = 0x0195,
PROC_Obj_GanonWall = 0x0196,
PROC_Obj_Prop = 0x0197,
PROC_CSTATUE = 0x0198,
PROC_Obj_SwBallA = 0x0199,
PROC_Obj_SwBallB = 0x019A,
PROC_Obj_SnowSoup = 0x019B,
PROC_Obj_Nagaisu = 0x019C,
PROC_Obj_RCircle = 0x019D,
PROC_Obj_Picture = 0x019E,
PROC_Tag_SetBall = 0x019F,
PROC_Tag_SmkEmt = 0x01A0,
PROC_SwTime = 0x01A1,
PROC_Obj_HFtr = 0x01A2,
PROC_Obj_HBarrel = 0x01A3,
PROC_Obj_Crystal = 0x01A4,
PROC_Obj_SCannonTen = 0x01A5,
PROC_Obj_SwBallC = 0x01A6,
PROC_SCENE_EXIT2 = 0x01A7,
PROC_Obj_Hata = 0x01A8,
PROC_Obj_ToaruMaki = 0x01A9,
PROC_Tag_AttackItem = 0x01AA,
PROC_Tag_RmbitSw = 0x01AB,
PROC_Obj_Sword = 0x01AC,
PROC_Tag_Spring = 0x01AD,
PROC_Tag_Statue = 0x01AE,
PROC_E_AI = 0x01AF,
PROC_E_GS = 0x01B0,
PROC_E_GOB = 0x01B1,
PROC_E_DD = 0x01B2,
PROC_E_DN = 0x01B3,
PROC_E_S1 = 0x01B4,
PROC_E_MF = 0x01B5,
PROC_E_SG = 0x01B6,
PROC_E_BS = 0x01B7,
PROC_E_SF = 0x01B8,
PROC_E_SH = 0x01B9,
PROC_E_DF = 0x01BA,
PROC_E_GM = 0x01BB,
PROC_E_MD = 0x01BC,
PROC_E_SM = 0x01BD,
PROC_E_SM2 = 0x01BE,
PROC_E_ST = 0x01BF,
PROC_E_ST_LINE = 0x01C0,
PROC_E_SB = 0x01C1,
PROC_E_TH = 0x01C2,
PROC_E_CR = 0x01C3,
PROC_E_CR_EGG = 0x01C4,
PROC_E_DB = 0x01C5,
PROC_E_DB_LEAF = 0x01C6,
PROC_E_GA = 0x01C7,
PROC_E_GB = 0x01C8,
PROC_E_HB = 0x01C9,
PROC_E_HB_LEAF = 0x01CA,
PROC_E_HZELDA = 0x01CB,
PROC_E_YD = 0x01CC,
PROC_E_YH = 0x01CD,
PROC_E_YD_LEAF = 0x01CE,
PROC_E_HM = 0x01CF,
PROC_E_TK = 0x01D0,
PROC_E_TK2 = 0x01D1,
PROC_E_TK_BALL = 0x01D2,
PROC_E_RB = 0x01D3,
PROC_E_RD = 0x01D4,
PROC_E_RDB = 0x01D5,
PROC_E_RDY = 0x01D6,
PROC_E_FM = 0x01D7,
PROC_E_FS = 0x01D8,
PROC_E_PM = 0x01D9,
PROC_E_PO = 0x01DA,
PROC_E_MB = 0x01DB,
PROC_E_MK = 0x01DC,
PROC_E_MM = 0x01DD,
PROC_E_FZ = 0x01DE,
PROC_E_ZS = 0x01DF,
PROC_E_KK = 0x01E0,
PROC_E_HP = 0x01E1,
PROC_E_ZH = 0x01E2,
PROC_E_ZM = 0x01E3,
PROC_E_PZ = 0x01E4,
PROC_E_FB = 0x01E5,
PROC_E_FK = 0x01E6,
PROC_E_MS = 0x01E7,
PROC_E_NEST = 0x01E8,
PROC_E_NZ = 0x01E9,
PROC_E_BA = 0x01EA,
PROC_E_BU = 0x01EB,
PROC_E_BUG = 0x01EC,
PROC_E_BEE = 0x01ED,
PROC_E_IS = 0x01EE,
PROC_E_KG = 0x01EF,
PROC_E_KR = 0x01F0,
PROC_E_SW = 0x01F1,
PROC_E_GE = 0x01F2,
PROC_Tag_WatchGe = 0x01F3,
PROC_E_YM = 0x01F4,
PROC_E_YM_TAG = 0x01F5,
PROC_E_YMB = 0x01F6,
PROC_Tag_FWall = 0x01F7,
PROC_Tag_WaterFall = 0x01F8,
PROC_E_YK = 0x01F9,
PROC_E_YR = 0x01FA,
PROC_E_YG = 0x01FB,
PROC_E_HZ = 0x01FC,
PROC_E_WS = 0x01FD,
PROC_E_OC = 0x01FE,
PROC_E_OT = 0x01FF,
PROC_E_DT = 0x0200,
PROC_E_BG = 0x0201,
PROC_E_OctBg = 0x0202,
PROC_DR = 0x0203,
PROC_L7lowDr = 0x0204,
PROC_L7ODR = 0x0205,
PROC_E_TT = 0x0206,
PROC_E_DK = 0x0207,
PROC_E_VT = 0x0208,
PROC_E_WW = 0x0209,
PROC_E_GI = 0x020A,
PROC_B_BH = 0x020B,
PROC_B_BQ = 0x020C,
PROC_B_GM = 0x020D,
PROC_B_GND = 0x020E,
PROC_B_GO = 0x020F,
PROC_B_OH2 = 0x0210,
PROC_B_YO = 0x0211,
PROC_B_YOI = 0x0212,
PROC_B_TN = 0x0213,
PROC_B_GG = 0x0214,
PROC_B_DRE = 0x0215,
PROC_B_MGN = 0x0216,
PROC_E_WAP = 0x0217,
PROC_ITEM = 0x0218,
PROC_Obj_SmallKey = 0x0219,
PROC_Obj_Kantera = 0x021A,
PROC_Obj_LifeContainer = 0x021B,
PROC_Obj_Shield = 0x021C,
PROC_Demo_Item = 0x021D,
PROC_ShopItem = 0x021E,
PROC_Obj_Drop = 0x021F,
PROC_OBJ_RW = 0x0220,
PROC_NBOMB = 0x0221,
PROC_TAG_CSW = 0x0222,
PROC_TAG_QS = 0x0223,
PROC_HOZELDA = 0x0224,
PROC_SWC00 = 0x0225,
PROC_KNOB20 = 0x0226,
PROC_DBDOOR = 0x0227,
PROC_BOSS_DOOR = 0x0228,
PROC_L1BOSS_DOOR = 0x0229,
PROC_L1MBOSS_DOOR = 0x022A,
PROC_L5BOSS_DOOR = 0x022B,
PROC_DSHUTTER = 0x022C,
PROC_SPIRAL_DOOR = 0x022D,
PROC_Tag_ChgRestart = 0x022E,
PROC_Tag_Restart = 0x022F,
PROC_ANDSW = 0x0230,
PROC_ANDSW2 = 0x0231,
PROC_MYNA = 0x0232,
PROC_NPC_GND = 0x0233,
PROC_NPC_GRA = 0x0234,
PROC_NPC_GRC = 0x0235,
PROC_NPC_GRD = 0x0236,
PROC_NPC_GRM = 0x0237,
PROC_NPC_GRMC = 0x0238,
PROC_NPC_GRO = 0x0239,
PROC_NPC_GRR = 0x023A,
PROC_NPC_GRS = 0x023B,
PROC_NPC_GRZ = 0x023C,
PROC_NPC_YAMID = 0x023D,
PROC_NPC_YAMIT = 0x023E,
PROC_NPC_YAMIS = 0x023F,
PROC_NPC_BLUENS = 0x0240,
PROC_NPC_KAKASHI = 0x0241,
PROC_NPC_KDK = 0x0242,
PROC_NPC_ARU = 0x0243,
PROC_NPC_BANS = 0x0244,
PROC_NPC_BESU = 0x0245,
PROC_NPC_BOU = 0x0246,
PROC_NPC_BOU_S = 0x0247,
PROC_NPC_CLERKA = 0x0248,
PROC_NPC_CLERKB = 0x0249,
PROC_NPC_CLERKT = 0x024A,
PROC_NPC_WRESTLER = 0x024B,
PROC_Tag_Arena = 0x024C,
PROC_Tag_Instruction = 0x024D,
PROC_NPC_DOC = 0x024E,
PROC_NPC_GWOLF = 0x024F,
PROC_NPC_LEN = 0x0250,
PROC_NPC_LUD = 0x0251,
PROC_NPC_FAIRY_SEIREI = 0x0252,
PROC_NPC_FAIRY = 0x0253,
PROC_NPC_HANJO = 0x0254,
PROC_NPC_HENNA = 0x0255,
PROC_NPC_HENNA0 = 0x0256,
PROC_NPC_HOZ = 0x0257,
PROC_NPC_JAGAR = 0x0258,
PROC_NPC_KKRI = 0x0259,
PROC_NPC_KN = 0x025A,
PROC_KN_BULLET = 0x025B,
PROC_NPC_KNJ = 0x025C,
PROC_NPC_KOLIN = 0x025D,
PROC_NPC_KOLINB = 0x025E,
PROC_NPC_KYURY = 0x025F,
PROC_NPC_MARO = 0x0260,
PROC_NPC_MIDP = 0x0261,
PROC_NPC_MOI = 0x0262,
PROC_NPC_RACA = 0x0263,
PROC_NPC_SARU = 0x0264,
PROC_NPC_SEIB = 0x0265,
PROC_NPC_SEIC = 0x0266,
PROC_NPC_SEID = 0x0267,
PROC_NPC_SEIRA = 0x0268,
PROC_NPC_SERA2 = 0x0269,
PROC_NPC_SEIREI = 0x026A,
PROC_NPC_SHAMAN = 0x026B,
PROC_NPC_SMARO = 0x026C,
PROC_NPC_SOLA = 0x026D,
PROC_NPC_TARO = 0x026E,
PROC_NPC_PACHI_BESU = 0x026F,
PROC_NPC_PACHI_TARO = 0x0270,
PROC_NPC_PACHI_MARO = 0x0271,
PROC_TAG_PATI = 0x0272,
PROC_NPC_THE = 0x0273,
PROC_NPC_TKJ = 0x0274,
PROC_NPC_TKS = 0x0275,
PROC_NPC_TKC = 0x0276,
PROC_OBJ_TKS = 0x0277,
PROC_NPC_TOBY = 0x0278,
PROC_NPC_URI = 0x0279,
PROC_NPC_YELIA = 0x027A,
PROC_NPC_YKM = 0x027B,
PROC_NPC_YKW = 0x027C,
PROC_NPC_ZANB = 0x027D,
PROC_NPC_ZANT = 0x027E,
PROC_NPC_ZELDA = 0x027F,
PROC_NPC_ZELR = 0x0280,
PROC_NPC_ZELRO = 0x0281,
PROC_OBJ_ZRAFREEZE = 0x0282,
PROC_NPC_ZRC = 0x0283,
PROC_NPC_ZRZ = 0x0284,
PROC_ZRA_MARK = 0x0285,
PROC_MYNA2 = 0x0286,
PROC_TAG_MYNA2 = 0x0287,
PROC_NPC_CD3 = 0x0288,
PROC_Tag_Schedule = 0x0289,
PROC_Tag_Escape = 0x028A,
PROC_NPC_CHAT = 0x028B,
PROC_NPC_SOLDIERa = 0x028C,
PROC_NPC_SOLDIERb = 0x028D,
PROC_PASSER_MNG = 0x028E,
PROC_NPC_PASSER = 0x028F,
PROC_NPC_PASSER2 = 0x0290,
PROC_NPC_POST = 0x0291,
PROC_NPC_POUYA = 0x0292,
PROC_FORMATION_MNG = 0x0293,
PROC_NPC_FGUARD = 0x0294,
PROC_GUARD_MNG = 0x0295,
PROC_TAG_GUARD = 0x0296,
PROC_NPC_GUARD = 0x0297,
PROC_NPC_ASH = 0x0298,
PROC_NPC_ASHB = 0x0299,
PROC_NPC_SHAD = 0x029A,
PROC_NPC_RAFREL = 0x029B,
PROC_NPC_MOIR = 0x029C,
PROC_NPC_IMPAL = 0x029D,
PROC_NPC_SHOE = 0x029E,
PROC_NPC_DOORBOY = 0x029F,
PROC_NPC_PRAYER = 0x02A0,
PROC_NPC_KASIHANA = 0x02A1,
PROC_NPC_KASIKYU = 0x02A2,
PROC_NPC_KASIMICH = 0x02A3,
PROC_NPC_DRSOL = 0x02A4,
PROC_NPC_CHIN = 0x02A5,
PROC_NPC_INS = 0x02A6,
PROC_NPC_SHOP0 = 0x02A7,
PROC_NPC_MK = 0x02A8,
PROC_NPC_P2 = 0x02A9,
PROC_KYTAG00 = 0x02AA,
PROC_KYTAG01 = 0x02AB,
PROC_KYTAG02 = 0x02AC,
PROC_KYTAG03 = 0x02AD,
PROC_KYTAG04 = 0x02AE,
PROC_KYTAG05 = 0x02AF,
PROC_KYTAG06 = 0x02B0,
PROC_KYTAG07 = 0x02B1,
PROC_KYTAG08 = 0x02B2,
PROC_KYTAG09 = 0x02B3,
PROC_KYTAG10 = 0x02B4,
PROC_KYTAG11 = 0x02B5,
PROC_KYTAG12 = 0x02B6,
PROC_KYTAG13 = 0x02B7,
PROC_KYTAG14 = 0x02B8,
PROC_KYTAG15 = 0x02B9,
PROC_KYTAG16 = 0x02BA,
PROC_KYTAG17 = 0x02BB,
PROC_Ykgr = 0x02BC,
PROC_TALK = 0x02BD,
PROC_Obj_Crope = 0x02BE,
PROC_Obj_Bombf = 0x02BF,
PROC_Obj_BkLeaf = 0x02C0,
PROC_Tag_Mhint = 0x02C1,
PROC_Tag_Mmsg = 0x02C2,
PROC_Tag_Mwait = 0x02C3,
PROC_Tag_Mstop = 0x02C4,
PROC_Tag_Stream = 0x02C5,
PROC_Tag_Sppath = 0x02C6,
PROC_Tag_Wljump = 0x02C7,
PROC_Tag_TWGate = 0x02C8,
PROC_Tag_Lv6Gate = 0x02C9,
PROC_Tag_Lv7Gate = 0x02CA,
PROC_Tag_Lv8Gate = 0x02CB,
PROC_Tag_TheBHint = 0x02CC,
PROC_Tag_Assist = 0x02CD,
PROC_DEMO00 = 0x02CE,
PROC_TAG_CAMERA = 0x02CF,
PROC_TAG_CHKPOINT = 0x02D0,
PROC_TAG_EVENT = 0x02D1,
PROC_TAG_EVT = 0x02D2,
PROC_TAG_TELOP = 0x02D3,
PROC_TAG_HOWL = 0x02D4,
PROC_TAG_MSG = 0x02D5,
PROC_TAG_LANTERN = 0x02D6,
PROC_Tag_Mist = 0x02D7,
PROC_DMIDNA = 0x02D8,
PROC_KY_THUNDER = 0x02D9,
PROC_VRBOX = 0x02DA,
PROC_VRBOX2 = 0x02DB,
PROC_BG = 0x02DC,
PROC_SET_BG_OBJ = 0x02DD,
PROC_BG_OBJ = 0x02DE,
PROC_MIRROR = 0x02DF,
PROC_MOVIE_PLAYER = 0x02E0,
PROC_TITLE = 0x02E1,
PROC_FR = 0x02E2,
PROC_ECONT = 0x02E3,
PROC_MG_ROD = 0x02E4,
PROC_E_ARROW = 0x02E5,
PROC_BULLET = 0x02E6,
PROC_SWHIT0 = 0x02E7,
PROC_E_TH_BALL = 0x02E8,
PROC_TAG_EVTAREA = 0x02E9,
PROC_TAG_EVTMSG = 0x02EA,
PROC_TAG_KMSG = 0x02EB,
PROC_TAG_PUSH = 0x02EC,
PROC_E_MK_BO = 0x02ED,
PROC_E_MM_MT = 0x02EE,
PROC_OBJ_KBOX = 0x02EF,
PROC_OBJ_FW = 0x02F0,
PROC_B_GOS = 0x02F1,
PROC_OBJ_YSTONE = 0x02F2,
PROC_MANT = 0x02F3,
PROC_CROD = 0x02F4,
PROC_OBJ_PLEAF = 0x02F5,
PROC_OBJ_KBACKET = 0x02F6,
PROC_OBJ_YBAG = 0x02F7,
PROC_OBJ_PUMPKIN = 0x02F8,
PROC_OBJ_AUTOMATA = 0x02F9,
PROC_OBJ_GADGET = 0x02FA,
PROC_OBJ_KAGO = 0x02FB,
PROC_Obj_Carry = 0x02FC,
PROC_Obj_Stone = 0x02FD,
PROC_OBJ_HB = 0x02FE,
PROC_NPC_INKO = 0x02FF,
PROC_BD = 0x0300,
PROC_Obj_Eff = 0x0301,
PROC_WPILLAR = 0x0302,
PROC_WMARK = 0x0303,
PROC_E_BI = 0x0304,
PROC_E_BI_LEAF = 0x0305,
PROC_START_AND_GOAL = 0x0306,
PROC_NPC_DF = 0x0307,
PROC_ARROW = 0x0308,
PROC_PATH_LINE = 0x0309,
PROC_TAG_ALLMATO = 0x030A,
PROC_Obj_Timer = 0x030B,
PROC_SCENE_EXIT = 0x030C,
PROC_CAMERA = 0x030D,
PROC_CAMERA2 = 0x030E,
PROC_SUSPEND = 0x030F,
PROC_GRASS = 0x0310,
PROC_KYEFF = 0x0311,
PROC_KYEFF2 = 0x0312,
PROC_MSG_OBJECT = 0x0313,
PROC_MENUWINDOW = 0x0314,
PROC_TIMER = 0x0315,
PROC_METER2 = 0x0316,
PROC_GAMEOVER = 0x0317,
};

View File

@ -922,7 +922,13 @@ inline void GXColor1u32(u32 c) {
GFX_FIFO(u32) = c; GFX_FIFO(u32) = c;
} }
inline void GXTexCoord2f32(f32 s, f32 t) {
GFX_FIFO(f32) = s;
GFX_FIFO(f32) = t;
}
inline void GXEnd() {} inline void GXEnd() {}
}; };
#endif #endif

View File

@ -304,4 +304,22 @@ inline void* OSPhysicalToCached(u32 offset) {
return (void*)(offset + 0x80000000); return (void*)(offset + 0x80000000);
} }
#endif static inline u8 __OSf32tou8(register f32 src) {
f32 tmp;
register f32 *p = &tmp;
register u8 ret;
asm
{
psq_st src, 0(p), 1, 2
lbz ret, 0(p)
}
return ret;
}
static inline void OSf32tou8(register f32* src, volatile register u8* dst) {
*dst = __OSf32tou8(*src);
}
#endif

View File

@ -23,7 +23,7 @@ typedef struct leafdraw_class {
typedef struct leaf_process_profile_definition { typedef struct leaf_process_profile_definition {
/* 0x00 */ process_profile_definition mBase; /* 0x00 */ process_profile_definition mBase;
/* 0x1C */ leafdraw_method_class* mLfDrwMth; /* 0x1C */ leafdraw_method_class* mLfDrwMth;
/* 0x20 */ s16 unk20; /* 0x20 */ s16 mPriority;
/* 0x22 */ u8 unk22[2]; /* 0x22 */ u8 unk22[2];
/* 0x24 */ s32 unk24; /* 0x24 */ s32 unk24;
} leaf_process_profile_definition; } leaf_process_profile_definition;

View File

@ -19,6 +19,8 @@ typedef struct process_profile_definition {
s32 mParameters; s32 mParameters;
} process_profile_definition; } process_profile_definition;
#define LAYER_DEFAULT (-2)
process_profile_definition* fpcPf_Get(s16 profileID); process_profile_definition* fpcPf_Get(s16 profileID);
extern process_profile_definition** g_fpcPf_ProfileList_p; extern process_profile_definition** g_fpcPf_ProfileList_p;

View File

@ -20,105 +20,6 @@ struct JKRHeap {
/* 802CE474 */ void alloc(u32, int, JKRHeap*); /* 802CE474 */ void alloc(u32, int, JKRHeap*);
}; };
struct JPABaseShapeData {
// Common header.
/* 0x00 */ u8 mMagic[4];
/* 0x04 */ u32 mSize;
/* 0x08 */ u32 mFlags;
/* 0x0C */ s16 mClrPrmAnmOffset;
/* 0x0E */ s16 mClrEnvAnmOffset;
/* 0x10 */ f32 mBaseSizeX;
/* 0x14 */ f32 mBaseSizeY;
/* 0x18 */ u16 mBlendModeCfg;
/* 0x1A */ u8 mAlphaCompareCfg;
/* 0x1B */ u8 mAlphaRef0;
/* 0x1C */ u8 mAlphaRef1;
/* 0x1D */ u8 mZModeCfg;
/* 0x1E */ u8 mTexFlg;
/* 0x1F */ u8 mTexAnmNum;
/* 0x20 */ u8 mTexIdx;
/* 0x21 */ u8 mClrFlg;
/* 0x22 */ u8 mClrPrmKeyNum;
/* 0x23 */ u8 mClrEnvKeyNum;
/* 0x24 */ s16 mClrAnmFrmMax;
/* 0x26 */ GXColor mClrPrm;
/* 0x2A */ GXColor mClrEnv;
/* 0x2E */ u8 mAnmRndm;
/* 0x2F */ u8 mClrAnmRndmMask;
/* 0x30 */ u8 mTexAnmRndmMask;
};
struct JPABaseShape {
public:
/* 8027A6DC */ JPABaseShape(u8 const*, JKRHeap*);
/* 8027A7E8 */ void setGX(JPAEmitterWorkData*) const;
static GXBlendMode st_bm[3];
static GXBlendFactor st_bf[10];
static GXLogicOp st_lo[16];
static GXCompare st_c[8];
static GXAlphaOp st_ao[4];
static GXTevColorArg st_ca[6][4];
static GXTevAlphaArg st_aa[2][4];
GXBlendMode getBlendMode() const { return st_bm[mpData->mBlendModeCfg & 0x03]; }
GXBlendFactor getBlendSrc() const { return st_bf[(mpData->mBlendModeCfg >> 2) & 0x0F]; }
GXBlendFactor getBlendDst() const { return st_bf[(mpData->mBlendModeCfg >> 6) & 0x0F]; }
GXLogicOp getLogicOp() const { return st_lo[(mpData->mBlendModeCfg >> 10) & 0x0F]; }
GXBool getZCompLoc() const { return (GXBool)((mpData->mZModeCfg >> 5) & 0x01); }
GXBool getZEnable() const { return (GXBool)(mpData->mZModeCfg & 0x01); }
GXCompare getZCmp() const { return st_c[(mpData->mZModeCfg >> 1) & 0x07]; }
GXBool getZUpd() const { return (GXBool)((mpData->mZModeCfg >> 4) & 0x01); }
GXCompare getAlphaCmp0() const { return st_c[mpData->mAlphaCompareCfg & 0x07]; }
u8 getAlphaRef0() const { return mpData->mAlphaRef0; }
GXAlphaOp getAlphaOp() const { return st_ao[(mpData->mAlphaCompareCfg >> 3) & 0x03]; }
GXCompare getAlphaCmp1() const { return st_c[(mpData->mAlphaCompareCfg >> 5) & 0x07]; }
u8 getAlphaRef1() const { return mpData->mAlphaRef1; }
const GXTevColorArg* getTevColorArg() const { return st_ca[(mpData->mFlags >> 0x0F) & 0x07]; }
const GXTevAlphaArg* getTevAlphaArg() const { return st_aa[(mpData->mFlags >> 0x12) & 0x01]; }
u32 getType() const { return (mpData->mFlags >> 0) & 0x0F; }
u32 getDirType() const { return (mpData->mFlags >> 4) & 0x07; }
u32 getRotType() const { return (mpData->mFlags >> 7) & 0x07; }
u32 getBasePlaneType() const { return (mpData->mFlags >> 10) & 0x07; }
u32 getTilingS() const { return (mpData->mFlags >> 25) & 0x01; }
u32 getTilingT() const { return (mpData->mFlags >> 26) & 0x01; }
bool isGlblClrAnm() const { return !!(mpData->mFlags & 0x00001000); }
bool isGlblTexAnm() const { return !!(mpData->mFlags & 0x00004000); }
bool isPrjTex() const { return !!(mpData->mFlags & 0x00100000); }
bool isDrawFwdAhead() const { return !!(mpData->mFlags & 0x00200000); }
bool isDrawPrntAhead() const { return !!(mpData->mFlags & 0x00400000); }
bool isClipOn() const { return !!(mpData->mFlags & 0x00800000); }
bool isTexCrdAnm() const { return !!(mpData->mFlags & 0x01000000); }
bool isNoDrawParent() const { return !!(mpData->mFlags & 0x08000000); }
bool isNoDrawChild() const { return !!(mpData->mFlags & 0x10000000); }
bool isPrmAnm() const { return !!(mpData->mClrFlg & 0x02); }
bool isEnvAnm() const { return !!(mpData->mClrFlg & 0x08); }
u8 getClrAnmType() const { return (mpData->mClrFlg >> 4) & 0x07; }
s16 getClrAnmMaxFrm() const { return mpData->mClrAnmFrmMax; }
void getPrmClr(s16 idx, GXColor* dst) { *dst = mpPrmClrAnmTbl[idx]; }
void getEnvClr(s16 idx, GXColor* dst) { *dst = mpEnvClrAnmTbl[idx]; }
bool isTexAnm() const { return !!(mpData->mTexFlg & 0x01); }
u8 getTexAnmType() const { return (mpData->mTexFlg >> 2) & 0x07; }
u32 getTexIdx() const { return mpData->mTexIdx; }
f32 getBaseSizeX() const { return mpData->mBaseSizeX; }
f32 getBaseSizeY() const { return mpData->mBaseSizeY; }
public:
const JPABaseShapeData* mpData;
const void* mpTexCrdMtxAnmTbl;
const u8* mpTexIdxAnimTbl;
GXColor* mpPrmClrAnmTbl;
GXColor* mpEnvClrAnmTbl;
};
struct JMath { struct JMath {
static u8 sincosTable_[65536]; static u8 sincosTable_[65536];
}; };
@ -259,90 +160,119 @@ void JPASetLineWidth(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
GXSetLineWidth((u8)(lit_2262[0] * work->mGlobalPtclScl.x * ptcl->mParticleScaleX), GX_TO_ONE); GXSetLineWidth((u8)(lit_2262[0] * work->mGlobalPtclScl.x * ptcl->mParticleScaleX), GX_TO_ONE);
} }
/* 80276B90-80276C2C 2714D0 009C+00 0/0 1/1 0/0 .text JPARegistPrm__FP18JPAEmitterWorkData */ static inline u8 COLOR_MULTI(u32 a, u32 b) {
#pragma push return ((a * (b + 1)) * 0x10000) >> 24;
#pragma optimization_level 0 }
#pragma optimizewithasm off
asm void JPARegistPrm(JPAEmitterWorkData* param_0) { /* 80276B90-80276C2C 2714D0 009C+00 0/0 1/1 0/0 .text JPARegistPrm__FP18JPAEmitterWorkData */
nofralloc void JPARegistPrm(JPAEmitterWorkData* work) {
#include "asm/JSystem/JParticle/JPABaseShape/JPARegistPrm__FP18JPAEmitterWorkData.s" JPABaseEmitter* emtr = work->mpEmtr;
GXColor prm = emtr->mPrmClr;
prm.r = COLOR_MULTI(prm.r, emtr->mGlobalPrmClr.r);
prm.g = COLOR_MULTI(prm.g, emtr->mGlobalPrmClr.g);
prm.b = COLOR_MULTI(prm.b, emtr->mGlobalPrmClr.b);
prm.a = COLOR_MULTI(prm.a, emtr->mGlobalPrmClr.a);
GXSetTevColor(GX_TEVREG0, prm);
} }
#pragma pop
/* 80276C2C-80276CB0 27156C 0084+00 0/0 1/1 0/0 .text JPARegistEnv__FP18JPAEmitterWorkData */ /* 80276C2C-80276CB0 27156C 0084+00 0/0 1/1 0/0 .text JPARegistEnv__FP18JPAEmitterWorkData */
#pragma push void JPARegistEnv(JPAEmitterWorkData* work) {
#pragma optimization_level 0 JPABaseEmitter* emtr = work->mpEmtr;
#pragma optimizewithasm off GXColor env = emtr->mEnvClr;
asm void JPARegistEnv(JPAEmitterWorkData* param_0) { env.r = COLOR_MULTI(env.r, emtr->mGlobalEnvClr.r);
nofralloc env.g = COLOR_MULTI(env.g, emtr->mGlobalEnvClr.g);
#include "asm/JSystem/JParticle/JPABaseShape/JPARegistEnv__FP18JPAEmitterWorkData.s" env.b = COLOR_MULTI(env.b, emtr->mGlobalEnvClr.b);
GXSetTevColor(GX_TEVREG1, env);
} }
#pragma pop
/* 80276CB0-80276DB0 2715F0 0100+00 0/0 1/1 0/0 .text JPARegistPrmEnv__FP18JPAEmitterWorkData */ /* 80276CB0-80276DB0 2715F0 0100+00 0/0 1/1 0/0 .text JPARegistPrmEnv__FP18JPAEmitterWorkData */
#pragma push void JPARegistPrmEnv(JPAEmitterWorkData* work) {
#pragma optimization_level 0 JPABaseEmitter* emtr = work->mpEmtr;
#pragma optimizewithasm off GXColor prm = emtr->mPrmClr;
asm void JPARegistPrmEnv(JPAEmitterWorkData* param_0) { GXColor env = emtr->mEnvClr;
nofralloc prm.r = COLOR_MULTI(prm.r, emtr->mGlobalPrmClr.r);
#include "asm/JSystem/JParticle/JPABaseShape/JPARegistPrmEnv__FP18JPAEmitterWorkData.s" prm.g = COLOR_MULTI(prm.g, emtr->mGlobalPrmClr.g);
prm.b = COLOR_MULTI(prm.b, emtr->mGlobalPrmClr.b);
prm.a = COLOR_MULTI(prm.a, emtr->mGlobalPrmClr.a);
env.r = COLOR_MULTI(env.r, emtr->mGlobalEnvClr.r);
env.g = COLOR_MULTI(env.g, emtr->mGlobalEnvClr.g);
env.b = COLOR_MULTI(env.b, emtr->mGlobalEnvClr.b);
GXSetTevColor(GX_TEVREG0, prm);
GXSetTevColor(GX_TEVREG1, env);
} }
#pragma pop
/* 80276DB0-80276E60 2716F0 00B0+00 0/0 1/1 0/0 .text /* 80276DB0-80276E60 2716F0 00B0+00 0/0 1/1 0/0 .text
* JPARegistAlpha__FP18JPAEmitterWorkDataP15JPABaseParticle */ * JPARegistAlpha__FP18JPAEmitterWorkDataP15JPABaseParticle */
#pragma push void JPARegistAlpha(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
#pragma optimization_level 0 JPABaseEmitter* emtr = work->mpEmtr;
#pragma optimizewithasm off GXColor prm = emtr->mPrmClr;
asm void JPARegistAlpha(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { prm.r = COLOR_MULTI(prm.r, emtr->mGlobalPrmClr.r);
nofralloc prm.g = COLOR_MULTI(prm.g, emtr->mGlobalPrmClr.g);
#include "asm/JSystem/JParticle/JPABaseShape/JPARegistAlpha__FP18JPAEmitterWorkDataP15JPABaseParticle.s" prm.b = COLOR_MULTI(prm.b, emtr->mGlobalPrmClr.b);
prm.a = COLOR_MULTI(prm.a, emtr->mGlobalPrmClr.a);
prm.a = COLOR_MULTI(prm.a, ptcl->mPrmColorAlphaAnm);
GXSetTevColor(GX_TEVREG0, prm);
} }
#pragma pop
/* 80276E60-80276F10 2717A0 00B0+00 0/0 1/1 0/0 .text /* 80276E60-80276F10 2717A0 00B0+00 0/0 1/1 0/0 .text
* JPARegistPrmAlpha__FP18JPAEmitterWorkDataP15JPABaseParticle */ * JPARegistPrmAlpha__FP18JPAEmitterWorkDataP15JPABaseParticle */
#pragma push void JPARegistPrmAlpha(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
#pragma optimization_level 0 JPABaseEmitter* emtr = work->mpEmtr;
#pragma optimizewithasm off GXColor prm = ptcl->mPrmClr;
asm void JPARegistPrmAlpha(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { prm.r = COLOR_MULTI(prm.r, emtr->mGlobalPrmClr.r);
nofralloc prm.g = COLOR_MULTI(prm.g, emtr->mGlobalPrmClr.g);
#include "asm/JSystem/JParticle/JPABaseShape/JPARegistPrmAlpha__FP18JPAEmitterWorkDataP15JPABaseParticle.s" prm.b = COLOR_MULTI(prm.b, emtr->mGlobalPrmClr.b);
prm.a = COLOR_MULTI(prm.a, emtr->mGlobalPrmClr.a);
prm.a = COLOR_MULTI(prm.a, ptcl->mPrmColorAlphaAnm);
GXSetTevColor(GX_TEVREG0, prm);
} }
#pragma pop
/* 80276F10-80277024 271850 0114+00 0/0 1/1 0/0 .text /* 80276F10-80277024 271850 0114+00 0/0 1/1 0/0 .text
* JPARegistPrmAlphaEnv__FP18JPAEmitterWorkDataP15JPABaseParticle */ * JPARegistPrmAlphaEnv__FP18JPAEmitterWorkDataP15JPABaseParticle */
#pragma push void JPARegistPrmAlphaEnv(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
#pragma optimization_level 0 JPABaseEmitter* emtr = work->mpEmtr;
#pragma optimizewithasm off GXColor prm = ptcl->mPrmClr;
asm void JPARegistPrmAlphaEnv(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { GXColor env = ptcl->mEnvClr;
nofralloc prm.r = COLOR_MULTI(prm.r, emtr->mGlobalPrmClr.r);
#include "asm/JSystem/JParticle/JPABaseShape/JPARegistPrmAlphaEnv__FP18JPAEmitterWorkDataP15JPABaseParticle.s" prm.g = COLOR_MULTI(prm.g, emtr->mGlobalPrmClr.g);
prm.b = COLOR_MULTI(prm.b, emtr->mGlobalPrmClr.b);
prm.a = COLOR_MULTI(prm.a, emtr->mGlobalPrmClr.a);
prm.a = COLOR_MULTI(prm.a, ptcl->mPrmColorAlphaAnm);
env.r = COLOR_MULTI(env.r, emtr->mGlobalEnvClr.r);
env.g = COLOR_MULTI(env.g, emtr->mGlobalEnvClr.g);
env.b = COLOR_MULTI(env.b, emtr->mGlobalEnvClr.b);
GXSetTevColor(GX_TEVREG0, prm);
GXSetTevColor(GX_TEVREG1, env);
} }
#pragma pop
/* 80277024-80277138 271964 0114+00 0/0 1/1 0/0 .text /* 80277024-80277138 271964 0114+00 0/0 1/1 0/0 .text
* JPARegistAlphaEnv__FP18JPAEmitterWorkDataP15JPABaseParticle */ * JPARegistAlphaEnv__FP18JPAEmitterWorkDataP15JPABaseParticle */
#pragma push void JPARegistAlphaEnv(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
#pragma optimization_level 0 JPABaseEmitter* emtr = work->mpEmtr;
#pragma optimizewithasm off GXColor prm = emtr->mPrmClr;
asm void JPARegistAlphaEnv(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { GXColor env = ptcl->mEnvClr;
nofralloc prm.r = COLOR_MULTI(prm.r, emtr->mGlobalPrmClr.r);
#include "asm/JSystem/JParticle/JPABaseShape/JPARegistAlphaEnv__FP18JPAEmitterWorkDataP15JPABaseParticle.s" prm.g = COLOR_MULTI(prm.g, emtr->mGlobalPrmClr.g);
prm.b = COLOR_MULTI(prm.b, emtr->mGlobalPrmClr.b);
prm.a = COLOR_MULTI(prm.a, emtr->mGlobalPrmClr.a);
prm.a = COLOR_MULTI(prm.a, ptcl->mPrmColorAlphaAnm);
env.r = COLOR_MULTI(env.r, emtr->mGlobalEnvClr.r);
env.g = COLOR_MULTI(env.g, emtr->mGlobalEnvClr.g);
env.b = COLOR_MULTI(env.b, emtr->mGlobalEnvClr.b);
GXSetTevColor(GX_TEVREG0, prm);
GXSetTevColor(GX_TEVREG1, env);
} }
#pragma pop
/* 80277138-802771BC 271A78 0084+00 0/0 1/1 0/0 .text /* 80277138-802771BC 271A78 0084+00 0/0 1/1 0/0 .text
* JPARegistEnv__FP18JPAEmitterWorkDataP15JPABaseParticle */ * JPARegistEnv__FP18JPAEmitterWorkDataP15JPABaseParticle */
#pragma push void JPARegistEnv(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
#pragma optimization_level 0 JPABaseEmitter* emtr = work->mpEmtr;
#pragma optimizewithasm off GXColor env = ptcl->mEnvClr;
asm void JPARegistEnv(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { env.r = COLOR_MULTI(env.r, emtr->mGlobalEnvClr.r);
nofralloc env.g = COLOR_MULTI(env.g, emtr->mGlobalEnvClr.g);
#include "asm/JSystem/JParticle/JPABaseShape/JPARegistEnv__FP18JPAEmitterWorkDataP15JPABaseParticle.s" env.b = COLOR_MULTI(env.b, emtr->mGlobalEnvClr.b);
GXSetTevColor(GX_TEVREG1, env);
} }
#pragma pop
#define MIN(a, b) ((a) < (b) ? (a) : (b)) #define MIN(a, b) ((a) < (b) ? (a) : (b))
@ -976,6 +906,22 @@ asm void JPADrawRotation(JPAEmitterWorkData* param_0, JPABaseParticle* param_1)
/* 80279110-802791B0 273A50 00A0+00 0/0 1/1 0/0 .text /* 80279110-802791B0 273A50 00A0+00 0/0 1/1 0/0 .text
* JPADrawPoint__FP18JPAEmitterWorkDataP15JPABaseParticle */ * JPADrawPoint__FP18JPAEmitterWorkDataP15JPABaseParticle */
#ifdef NONMATCHING
// literal only
void JPADrawPoint(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
if (!!(ptcl->mStatus & JPAPtclStts_Invisible))
return;
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
GXBegin(GX_POINTS, GX_VTXFMT1, 1);
GXPosition3f32(ptcl->mPosition.x, ptcl->mPosition.y, ptcl->mPosition.z);
GXTexCoord2f32(0.0f, 0.0f);
GXEnd();
GXSetVtxDesc(GX_VA_POS, GX_INDEX8);
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX8);
}
#else
#pragma push #pragma push
#pragma optimization_level 0 #pragma optimization_level 0
#pragma optimizewithasm off #pragma optimizewithasm off
@ -984,6 +930,7 @@ asm void JPADrawPoint(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) {
#include "asm/JSystem/JParticle/JPABaseShape/JPADrawPoint__FP18JPAEmitterWorkDataP15JPABaseParticle.s" #include "asm/JSystem/JParticle/JPABaseShape/JPADrawPoint__FP18JPAEmitterWorkDataP15JPABaseParticle.s"
} }
#pragma pop #pragma pop
#endif
/* 802791B0-80279364 273AF0 01B4+00 0/0 1/1 0/0 .text /* 802791B0-80279364 273AF0 01B4+00 0/0 1/1 0/0 .text
* JPADrawLine__FP18JPAEmitterWorkDataP15JPABaseParticle */ * JPADrawLine__FP18JPAEmitterWorkDataP15JPABaseParticle */
@ -1049,14 +996,12 @@ asm void JPADrawEmitterCallBackB(JPAEmitterWorkData* param_0) {
/* 8027A414-8027A454 274D54 0040+00 0/0 1/1 0/0 .text /* 8027A414-8027A454 274D54 0040+00 0/0 1/1 0/0 .text
* JPADrawParticleCallBack__FP18JPAEmitterWorkDataP15JPABaseParticle */ * JPADrawParticleCallBack__FP18JPAEmitterWorkDataP15JPABaseParticle */
#pragma push void JPADrawParticleCallBack(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
#pragma optimization_level 0 if (work->mpEmtr->mpPtclCallBack == NULL)
#pragma optimizewithasm off return;
asm void JPADrawParticleCallBack(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) {
nofralloc work->mpEmtr->mpPtclCallBack->draw(work->mpEmtr, ptcl);
#include "asm/JSystem/JParticle/JPABaseShape/JPADrawParticleCallBack__FP18JPAEmitterWorkDataP15JPABaseParticle.s"
} }
#pragma pop
/* 8027A454-8027A6DC 274D94 0288+00 1/1 0/0 0/0 .text /* 8027A454-8027A6DC 274D94 0288+00 1/1 0/0 0/0 .text
* makeColorTable__FPP8_GXColorPC16JPAClrAnmKeyDataUcsP7JKRHeap */ * makeColorTable__FPP8_GXColorPC16JPAClrAnmKeyDataUcsP7JKRHeap */

View File

@ -7,81 +7,59 @@
#include "JSystem/JParticle/JPAParticle.h" #include "JSystem/JParticle/JPAParticle.h"
#include "dol2asm.h" #include "dol2asm.h"
#include "dolphin/types.h" #include "dolphin/types.h"
#include "dolphin/os/OS.h"
// //
// Types: // Types:
// //
struct JPAChildShape {
public:
/* 8027B038 */ JPAChildShape(u8 const*);
public:
u8 const* mpData;
};
// //
// Forward References: // Forward References:
// //
extern "C" void JPARegistChildPrmEnv__FP18JPAEmitterWorkData();
extern "C" void JPACalcChildAlphaOut__FP18JPAEmitterWorkDataP15JPABaseParticle();
extern "C" void JPACalcChildScaleOut__FP18JPAEmitterWorkDataP15JPABaseParticle();
extern "C" void __ct__13JPAChildShapeFPCUc();
// //
// Declarations: // Declarations:
// //
static inline u32 COLOR_MULTI(u32 a, u32 b) {
return ((a * (b + 1)) * 0x10000) >> 24;
}
/* 8027AEBC-8027AFDC 2757FC 0120+00 0/0 1/1 0/0 .text JPARegistChildPrmEnv__FP18JPAEmitterWorkData /* 8027AEBC-8027AFDC 2757FC 0120+00 0/0 1/1 0/0 .text JPARegistChildPrmEnv__FP18JPAEmitterWorkData
*/ */
#pragma push void JPARegistChildPrmEnv(JPAEmitterWorkData* work) {
#pragma optimization_level 0 JPAChildShape* csp = work->mpRes->getCsp();
#pragma optimizewithasm off JPABaseEmitter* emtr = work->mpEmtr;
asm void JPARegistChildPrmEnv(JPAEmitterWorkData* param_0) { GXColor prm, env;
nofralloc csp->getPrmClr(&prm);
#include "asm/JSystem/JParticle/JPAChildShape/JPARegistChildPrmEnv__FP18JPAEmitterWorkData.s" csp->getEnvClr(&env);
prm.r = COLOR_MULTI(prm.r, emtr->mGlobalPrmClr.r);
prm.g = COLOR_MULTI(prm.g, emtr->mGlobalPrmClr.g);
prm.b = COLOR_MULTI(prm.b, emtr->mGlobalPrmClr.b);
prm.a = COLOR_MULTI(prm.a, emtr->mGlobalPrmClr.a);
env.r = COLOR_MULTI(env.r, emtr->mGlobalEnvClr.r);
env.g = COLOR_MULTI(env.g, emtr->mGlobalEnvClr.g);
env.b = COLOR_MULTI(env.b, emtr->mGlobalEnvClr.b);
GXSetTevColor(GX_TEVREG0, prm);
GXSetTevColor(GX_TEVREG1, env);
} }
#pragma pop
/* ############################################################################################## */
/* 80455308-8045530C 003908 0004+00 1/1 0/0 0/0 .sdata2 @2318 */
SECTION_SDATA2 static f32 lit_2318 = 255.0f;
/* 8045530C-80455310 00390C 0004+00 2/2 0/0 0/0 .sdata2 @2319 */
SECTION_SDATA2 static f32 lit_2319 = 1.0f;
/* 8027AFDC-8027B008 27591C 002C+00 0/0 1/1 0/0 .text /* 8027AFDC-8027B008 27591C 002C+00 0/0 1/1 0/0 .text
* JPACalcChildAlphaOut__FP18JPAEmitterWorkDataP15JPABaseParticle */ * JPACalcChildAlphaOut__FP18JPAEmitterWorkDataP15JPABaseParticle */
#pragma push void JPACalcChildAlphaOut(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
#pragma optimization_level 0 f32 anm = (1.0f - ptcl->mTime) * 255.0f;
#pragma optimizewithasm off OSf32tou8(&anm, &ptcl->mPrmColorAlphaAnm);
asm void JPACalcChildAlphaOut(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) {
nofralloc
#include "asm/JSystem/JParticle/JPAChildShape/JPACalcChildAlphaOut__FP18JPAEmitterWorkDataP15JPABaseParticle.s"
} }
#pragma pop
/* 8027B008-8027B038 275948 0030+00 0/0 1/1 0/0 .text /* 8027B008-8027B038 275948 0030+00 0/0 1/1 0/0 .text
* JPACalcChildScaleOut__FP18JPAEmitterWorkDataP15JPABaseParticle */ * JPACalcChildScaleOut__FP18JPAEmitterWorkDataP15JPABaseParticle */
#ifdef NONMATCHING
void JPACalcChildScaleOut(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { void JPACalcChildScaleOut(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
// literal // literal
ptcl->mParticleScaleX = ptcl->mScaleOut * (1.0f - ptcl->mTime); ptcl->mParticleScaleX = ptcl->mScaleOut * (1.0f - ptcl->mTime);
ptcl->mParticleScaleY = ptcl->mAlphaWaveRandom * (1.0f - ptcl->mTime); ptcl->mParticleScaleY = ptcl->mAlphaWaveRandom * (1.0f - ptcl->mTime);
} }
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JPACalcChildScaleOut(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) {
nofralloc
#include "asm/JSystem/JParticle/JPAChildShape/JPACalcChildScaleOut__FP18JPAEmitterWorkDataP15JPABaseParticle.s"
}
#pragma pop
#endif
/* 8027B038-8027B040 -00001 0008+00 0/0 0/0 0/0 .text __ct__13JPAChildShapeFPCUc */ /* 8027B038-8027B040 -00001 0008+00 0/0 0/0 0/0 .text __ct__13JPAChildShapeFPCUc */
JPAChildShape::JPAChildShape(u8 const* pData) { JPAChildShape::JPAChildShape(u8 const* pData) {
mpData = pData; mpData = (JPAChildShapeData*)pData;
} }

View File

@ -4,6 +4,8 @@
// //
#include "JSystem/JParticle/JPADynamicsBlock.h" #include "JSystem/JParticle/JPADynamicsBlock.h"
#include "JSystem/JParticle/JPAParticle.h"
#include "JSystem/JMath/JMATrigonometric.h"
#include "dol2asm.h" #include "dol2asm.h"
#include "dolphin/types.h" #include "dolphin/types.h"
@ -11,27 +13,17 @@
// Types: // Types:
// //
struct JPAEmitterWorkData {};
struct JPABaseEmitter {
/* 8027EA40 */ void createParticle();
};
struct JMath {
static u8 sincosTable_[65536];
};
// //
// Forward References: // Forward References:
// //
extern "C" static void JPAVolumePoint__FP18JPAEmitterWorkData(); extern "C" static void JPAVolumePoint(JPAEmitterWorkData*);
extern "C" static void JPAVolumeLine__FP18JPAEmitterWorkData(); extern "C" static void JPAVolumeLine(JPAEmitterWorkData*);
extern "C" static void JPAVolumeCircle__FP18JPAEmitterWorkData(); extern "C" static void JPAVolumeCircle(JPAEmitterWorkData*);
extern "C" static void JPAVolumeCube__FP18JPAEmitterWorkData(); extern "C" static void JPAVolumeCube(JPAEmitterWorkData*);
extern "C" static void JPAVolumeSphere__FP18JPAEmitterWorkData(); extern "C" static void JPAVolumeSphere(JPAEmitterWorkData*);
extern "C" static void JPAVolumeCylinder__FP18JPAEmitterWorkData(); extern "C" static void JPAVolumeCylinder(JPAEmitterWorkData*);
extern "C" static void JPAVolumeTorus__FP18JPAEmitterWorkData(); extern "C" static void JPAVolumeTorus(JPAEmitterWorkData*);
extern "C" void __ct__16JPADynamicsBlockFPCUc(); extern "C" void __ct__16JPADynamicsBlockFPCUc();
extern "C" void init__16JPADynamicsBlockFv(); extern "C" void init__16JPADynamicsBlockFv();
extern "C" void create__16JPADynamicsBlockFP18JPAEmitterWorkData(); extern "C" void create__16JPADynamicsBlockFP18JPAEmitterWorkData();
@ -67,6 +59,17 @@ SECTION_SDATA2 static f32 lit_2289[1 + 1 /* padding */] = {
}; };
/* 8027B144-8027B220 275A84 00DC+00 1/1 0/0 0/0 .text JPAVolumePoint__FP18JPAEmitterWorkData */ /* 8027B144-8027B220 275A84 00DC+00 1/1 0/0 0/0 .text JPAVolumePoint__FP18JPAEmitterWorkData */
#ifdef NONMATCHING
// bug in diff.py preventing me from seeing what's wrong
void JPAVolumePoint(JPAEmitterWorkData* work) {
work->mVolumePos.zero();
work->mVelOmni.set(work->mpEmtr->get_r_zh(), work->mpEmtr->get_r_zh(), work->mpEmtr->get_r_zh());
work->mVelAxis.set(work->mVelOmni.x, 0.0f, work->mVelOmni.z);
}
#else
#pragma push #pragma push
#pragma optimization_level 0 #pragma optimization_level 0
#pragma optimizewithasm off #pragma optimizewithasm off
@ -76,11 +79,30 @@ static asm void JPAVolumePoint(JPAEmitterWorkData* param_0) {
} }
#pragma pop #pragma pop
#endif
/* ############################################################################################## */ /* ############################################################################################## */
/* 80455320-80455328 003920 0008+00 6/6 0/0 0/0 .sdata2 @2321 */ /* 80455320-80455328 003920 0008+00 6/6 0/0 0/0 .sdata2 @2321 */
SECTION_SDATA2 static f64 lit_2321 = 4503601774854144.0 /* cast s32 to float */; SECTION_SDATA2 static f64 lit_2321 = 4503601774854144.0 /* cast s32 to float */;
/* 8027B220-8027B33C 275B60 011C+00 1/1 0/0 0/0 .text JPAVolumeLine__FP18JPAEmitterWorkData */ /* 8027B220-8027B33C 275B60 011C+00 1/1 0/0 0/0 .text JPAVolumeLine__FP18JPAEmitterWorkData */
#ifdef NONMATCHING
// bug in diff.py preventing me from seeing what's wrong
void JPAVolumeLine(JPAEmitterWorkData* work) {
if (work->mpEmtr->checkFlag(JPADynFlag_FixedInterval)) {
work->mVolumePos.set(0.0f, 0.0f, work->mVolumeSize * (s32)((work->mVolumeEmitIdx / (work->mEmitCount - 1.0f) - 0.5f)));
work->mVolumeEmitIdx++;
} else {
work->mVolumePos.set(0.0f, 0.0f, work->mVolumeSize * work->mpEmtr->get_r_zh());
}
work->mVelOmni.set(0.0f, 0.0f, work->mVolumePos.z * work->mGlobalScl.z);
work->mVelAxis.set(0.0f, 0.0f, work->mVolumePos.z);
}
#else
#pragma push #pragma push
#pragma optimization_level 0 #pragma optimization_level 0
#pragma optimizewithasm off #pragma optimizewithasm off
@ -90,7 +112,34 @@ static asm void JPAVolumeLine(JPAEmitterWorkData* param_0) {
} }
#pragma pop #pragma pop
#endif
/* 8027B33C-8027B4E8 275C7C 01AC+00 1/1 0/0 0/0 .text JPAVolumeCircle__FP18JPAEmitterWorkData */ /* 8027B33C-8027B4E8 275C7C 01AC+00 1/1 0/0 0/0 .text JPAVolumeCircle__FP18JPAEmitterWorkData */
#ifdef NONMATCHING
// bug in diff.py preventing me from seeing what's wrong
void JPAVolumeCircle(JPAEmitterWorkData* work) {
f32 theta, distance, sizeXZ;
if (work->mpEmtr->checkFlag(JPADynFlag_FixedInterval)) {
theta = work->mVolumeSweep * (work->mVolumeEmitIdx++ / work->mEmitCount);
} else {
theta = work->mVolumeSweep * work->mpEmtr->get_r_ss();
}
distance = work->mpEmtr->get_r_f();
if (work->mpEmtr->checkFlag(JPADynFlag_FixedDensity)) {
distance = 1.0f - (distance * distance);
}
sizeXZ = work->mVolumeSize * (work->mVolumeMinRad + distance * (1.0f - work->mVolumeMinRad));
work->mVolumePos.set(sizeXZ * JMASSin(theta), 0.0f, sizeXZ * JMASCos(theta));
work->mVelOmni.mul(work->mVolumePos, work->mGlobalScl);
work->mVelAxis.set(work->mVolumePos.x, 0.0f, work->mVolumePos.z);
}
#else
#pragma push #pragma push
#pragma optimization_level 0 #pragma optimization_level 0
#pragma optimizewithasm off #pragma optimizewithasm off
@ -100,7 +149,22 @@ static asm void JPAVolumeCircle(JPAEmitterWorkData* param_0) {
} }
#pragma pop #pragma pop
#endif
/* 8027B4E8-8027B5F0 275E28 0108+00 1/1 0/0 0/0 .text JPAVolumeCube__FP18JPAEmitterWorkData */ /* 8027B4E8-8027B5F0 275E28 0108+00 1/1 0/0 0/0 .text JPAVolumeCube__FP18JPAEmitterWorkData */
#ifdef NONMATCHING
// bug in diff.py preventing me from seeing what's wrong
void JPAVolumeCube(JPAEmitterWorkData* work) {
f32 size = work->mVolumeSize;
work->mVolumePos.set(size * work->mpEmtr->get_r_zh(), size * work->mpEmtr->get_r_zh(), size * work->mpEmtr->get_r_zh());
work->mVelOmni.mul(work->mVolumePos, work->mGlobalScl);
work->mVelAxis.set(work->mVolumePos.x, 0.0f, work->mVolumePos.z);
}
#else
#pragma push #pragma push
#pragma optimization_level 0 #pragma optimization_level 0
#pragma optimizewithasm off #pragma optimizewithasm off
@ -110,6 +174,8 @@ static asm void JPAVolumeCube(JPAEmitterWorkData* param_0) {
} }
#pragma pop #pragma pop
#endif
/* ############################################################################################## */ /* ############################################################################################## */
/* 80455328-80455330 003928 0004+04 1/1 0/0 0/0 .sdata2 @2501 */ /* 80455328-80455330 003928 0004+04 1/1 0/0 0/0 .sdata2 @2501 */
SECTION_SDATA2 static f32 lit_2501[1 + 1 /* padding */] = { SECTION_SDATA2 static f32 lit_2501[1 + 1 /* padding */] = {
@ -152,41 +218,94 @@ static asm void JPAVolumeTorus(JPAEmitterWorkData* param_0) {
#pragma pop #pragma pop
/* 8027BB18-8027BB4C 276458 0034+00 0/0 1/1 0/0 .text __ct__16JPADynamicsBlockFPCUc */ /* 8027BB18-8027BB4C 276458 0034+00 0/0 1/1 0/0 .text __ct__16JPADynamicsBlockFPCUc */
#pragma push JPADynamicsBlock::JPADynamicsBlock(u8 const* data) {
#pragma optimization_level 0 mpData = (const JPADynamicsBlockData*)data;
#pragma optimizewithasm off init();
asm JPADynamicsBlock::JPADynamicsBlock(u8 const* param_0) {
nofralloc
#include "asm/JSystem/JParticle/JPADynamicsBlock/__ct__16JPADynamicsBlockFPCUc.s"
} }
#pragma pop
/* ############################################################################################## */ enum {
/* 803C4488-803C44A8 -00001 001C+04 1/1 0/0 0/0 .data @2631 */ VOL_Cube = 0x00,
SECTION_DATA static void* lit_2631[7 + 1 /* padding */] = { VOL_Sphere = 0x01,
(void*)(((char*)init__16JPADynamicsBlockFv) + 0x2C), VOL_Cylinder = 0x02,
(void*)(((char*)init__16JPADynamicsBlockFv) + 0x3C), VOL_Torus = 0x03,
(void*)(((char*)init__16JPADynamicsBlockFv) + 0x4C), VOL_Point = 0x04,
(void*)(((char*)init__16JPADynamicsBlockFv) + 0x5C), VOL_Circle = 0x05,
(void*)(((char*)init__16JPADynamicsBlockFv) + 0x6C), VOL_Line = 0x06,
(void*)(((char*)init__16JPADynamicsBlockFv) + 0x7C),
(void*)(((char*)init__16JPADynamicsBlockFv) + 0x8C),
/* padding */
NULL,
}; };
/* 8027BB4C-8027BBE8 27648C 009C+00 2/1 0/0 0/0 .text init__16JPADynamicsBlockFv */ /* 8027BB4C-8027BBE8 27648C 009C+00 2/1 0/0 0/0 .text init__16JPADynamicsBlockFv */
#pragma push void JPADynamicsBlock::init() {
#pragma optimization_level 0 switch (getVolumeType()) {
#pragma optimizewithasm off case VOL_Cube: mpCalcVolumeFunc = &JPAVolumeCube; break;
asm void JPADynamicsBlock::init() { case VOL_Sphere: mpCalcVolumeFunc = &JPAVolumeSphere; break;
nofralloc case VOL_Cylinder: mpCalcVolumeFunc = &JPAVolumeCylinder; break;
#include "asm/JSystem/JParticle/JPADynamicsBlock/init__16JPADynamicsBlockFv.s" case VOL_Torus: mpCalcVolumeFunc = &JPAVolumeTorus; break;
case VOL_Point: mpCalcVolumeFunc = &JPAVolumePoint; break;
case VOL_Circle: mpCalcVolumeFunc = &JPAVolumeCircle; break;
case VOL_Line: mpCalcVolumeFunc = &JPAVolumeLine; break;
}
} }
#pragma pop
/* 8027BBE8-8027BDEC 276528 0204+00 0/0 1/1 0/0 .text /* 8027BBE8-8027BDEC 276528 0204+00 0/0 1/1 0/0 .text
* create__16JPADynamicsBlockFP18JPAEmitterWorkData */ * create__16JPADynamicsBlockFP18JPAEmitterWorkData */
#ifdef NONMATCHING
// literal only
void JPADynamicsBlock::create(JPAEmitterWorkData* work) {
if (work->mpEmtr->checkStatus(JPAEmtrStts_RateStepEmit)) {
s32 emitCount;
s32 createCount;
// Probably an inlined function.
if (work->mpEmtr->checkFlag(JPADynFlag_FixedInterval)) {
s32 count;
if (getVolumeType() == VOL_Sphere) {
count = 4 * getDivNumber() * getDivNumber() + 2;
} else {
count = getDivNumber();
}
emitCount = count;
work->mVolumeEmitIdx = 0;
} else {
f32 newPtclCount = work->mpEmtr->mRate * (getRateRndm() * work->mpEmtr->get_r_zp() + 1.0f);
f32 newEmitCount = work->mpEmtr->mEmitCount + newPtclCount;
work->mpEmtr->mEmitCount = newEmitCount;
emitCount = (s32)newEmitCount;
work->mpEmtr->mEmitCount -= emitCount;
if (work->mpEmtr->checkStatus(JPAEmtrStts_FirstEmit) && 0.0f < newPtclCount && newPtclCount < 1.0f)
emitCount = 1;
}
work->mEmitCount = emitCount;
if (work->mpEmtr->checkStatus(JPAEmtrStts_StopEmit)) {
emitCount = 0;
}
// Probably an inlined function.
createCount = emitCount;
while (createCount > 0) {
JPABaseParticle* ptcl = work->mpEmtr->createParticle();
if (ptcl == NULL)
break;
createCount--;
}
}
if (++work->mpEmtr->mRateStepTimer >= (work->mpEmtr->mRateStep + 1)) {
work->mpEmtr->mRateStepTimer -= (work->mpEmtr->mRateStep + 1);
work->mpEmtr->setStatus(JPAEmtrStts_RateStepEmit);
} else {
work->mpEmtr->clearStatus(JPAEmtrStts_RateStepEmit);
}
work->mpEmtr->clearStatus(JPAEmtrStts_FirstEmit);
}
#else
#pragma push #pragma push
#pragma optimization_level 0 #pragma optimization_level 0
#pragma optimizewithasm off #pragma optimizewithasm off
@ -195,3 +314,5 @@ asm void JPADynamicsBlock::create(JPAEmitterWorkData* param_0) {
#include "asm/JSystem/JParticle/JPADynamicsBlock/create__16JPADynamicsBlockFP18JPAEmitterWorkData.s" #include "asm/JSystem/JParticle/JPADynamicsBlock/create__16JPADynamicsBlockFP18JPAEmitterWorkData.s"
} }
#pragma pop #pragma pop
#endif

View File

@ -14,12 +14,6 @@
// Types: // Types:
// //
struct JPAResource;
struct JPAResource {
/* 802755E8 */ bool calc(JPAEmitterWorkData*, JPABaseEmitter*);
/* 80275A94 */ void draw(JPAEmitterWorkData*, JPABaseEmitter*);
};
// //
// Forward References: // Forward References:
// //

View File

@ -4,214 +4,144 @@
// //
#include "JSystem/JParticle/JPAExtraShape.h" #include "JSystem/JParticle/JPAExtraShape.h"
#include "JSystem/JParticle/JPAParticle.h"
#include "JSystem/JParticle/JPAResource.h"
#include "JSystem/JParticle/JPAResourceManager.h"
#include "JSystem/JMath/JMATrigonometric.h"
#include "dol2asm.h" #include "dol2asm.h"
#include "dolphin/types.h" #include "dolphin/types.h"
#include "dolphin/os/OS.h"
// //
// Types: // Types:
// //
struct JPAExtraShape {
/* 8027AD88 */ JPAExtraShape(u8 const*);
/* 8027ADBC */ void init();
};
struct JPAEmitterWorkData {};
struct JPABaseParticle {};
struct JMath {
static u8 sincosTable_[65536];
};
//
// Forward References:
//
extern "C" void JPACalcScaleX__FP18JPAEmitterWorkDataP15JPABaseParticle();
extern "C" void JPACalcScaleY__FP18JPAEmitterWorkDataP15JPABaseParticle();
extern "C" void JPACalcScaleCopy__FP18JPAEmitterWorkDataP15JPABaseParticle();
extern "C" void JPACalcScaleAnmNormal__FP18JPAEmitterWorkDataP15JPABaseParticle();
extern "C" void JPACalcScaleAnmRepeatX__FP18JPAEmitterWorkDataP15JPABaseParticle();
extern "C" void JPACalcScaleAnmRepeatY__FP18JPAEmitterWorkDataP15JPABaseParticle();
extern "C" void JPACalcScaleAnmReverseX__FP18JPAEmitterWorkDataP15JPABaseParticle();
extern "C" void JPACalcScaleAnmReverseY__FP18JPAEmitterWorkDataP15JPABaseParticle();
extern "C" void JPACalcAlphaAnm__FP18JPAEmitterWorkDataP15JPABaseParticle();
extern "C" void JPACalcAlphaFlickAnm__FP18JPAEmitterWorkDataP15JPABaseParticle();
extern "C" void __ct__13JPAExtraShapeFPCUc();
extern "C" void init__13JPAExtraShapeFv();
//
// External References:
//
extern "C" u8 sincosTable___5JMath[65536];
//
// Declarations:
//
/* ############################################################################################## */
/* 804552E0-804552E8 0038E0 0004+04 6/6 0/0 0/0 .sdata2 @2270 */
SECTION_SDATA2 static f32 lit_2270[1 + 1 /* padding */] = {
1.0f,
/* padding */
0.0f,
};
/* 8027A918-8027A990 275258 0078+00 0/0 1/1 0/0 .text /* 8027A918-8027A990 275258 0078+00 0/0 1/1 0/0 .text
* JPACalcScaleX__FP18JPAEmitterWorkDataP15JPABaseParticle */ * JPACalcScaleX__FP18JPAEmitterWorkDataP15JPABaseParticle */
#pragma push void JPACalcScaleX(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
#pragma optimization_level 0 JPAExtraShape* esp = work->mpRes->getEsp();
#pragma optimizewithasm off if (work->mScaleAnm < esp->getScaleInTiming()) {
asm void JPACalcScaleX(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { ptcl->mParticleScaleX = ptcl->mScaleOut * (esp->getScaleIncRateX() * work->mScaleAnm + esp->getScaleInValueX());
nofralloc } else if (work->mScaleAnm > esp->getScaleOutTiming()) {
#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleX__FP18JPAEmitterWorkDataP15JPABaseParticle.s" ptcl->mParticleScaleX = ptcl->mScaleOut * (esp->getScaleDecRateX() * (work->mScaleAnm - esp->getScaleOutTiming()) + 1.0f);
} else {
ptcl->mParticleScaleX = ptcl->mScaleOut;
}
} }
#pragma pop
/* 8027A990-8027AA08 2752D0 0078+00 0/0 1/1 0/0 .text /* 8027A990-8027AA08 2752D0 0078+00 0/0 1/1 0/0 .text
* JPACalcScaleY__FP18JPAEmitterWorkDataP15JPABaseParticle */ * JPACalcScaleY__FP18JPAEmitterWorkDataP15JPABaseParticle */
#pragma push void JPACalcScaleY(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
#pragma optimization_level 0 JPAExtraShape* esp = work->mpRes->getEsp();
#pragma optimizewithasm off if (work->mScaleAnm < esp->getScaleInTiming()) {
asm void JPACalcScaleY(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { ptcl->mParticleScaleY = ptcl->mScaleOut * (esp->getScaleIncRateY() * work->mScaleAnm + esp->getScaleInValueY());
nofralloc } else if (work->mScaleAnm > esp->getScaleOutTiming()) {
#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleY__FP18JPAEmitterWorkDataP15JPABaseParticle.s" ptcl->mParticleScaleY = ptcl->mScaleOut * (esp->getScaleDecRateY() * (work->mScaleAnm - esp->getScaleOutTiming()) + 1.0f);
} else {
ptcl->mParticleScaleY = ptcl->mScaleOut;
}
} }
#pragma pop
/* 8027AA08-8027AA14 275348 000C+00 0/0 1/1 0/0 .text /* 8027AA08-8027AA14 275348 000C+00 0/0 1/1 0/0 .text
* JPACalcScaleCopy__FP18JPAEmitterWorkDataP15JPABaseParticle */ * JPACalcScaleCopy__FP18JPAEmitterWorkDataP15JPABaseParticle */
#pragma push void JPACalcScaleCopy(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
#pragma optimization_level 0 JPAExtraShape* esp = work->mpRes->getEsp();
#pragma optimizewithasm off ptcl->mParticleScaleY = ptcl->mParticleScaleX;
asm void JPACalcScaleCopy(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) {
nofralloc
#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleCopy__FP18JPAEmitterWorkDataP15JPABaseParticle.s"
} }
#pragma pop
/* 8027AA14-8027AA20 275354 000C+00 0/0 1/1 0/0 .text /* 8027AA14-8027AA20 275354 000C+00 0/0 1/1 0/0 .text
* JPACalcScaleAnmNormal__FP18JPAEmitterWorkDataP15JPABaseParticle */ * JPACalcScaleAnmNormal__FP18JPAEmitterWorkDataP15JPABaseParticle */
#pragma push void JPACalcScaleAnmNormal(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
#pragma optimization_level 0 work->mScaleAnm = ptcl->mTime;
#pragma optimizewithasm off
asm void JPACalcScaleAnmNormal(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) {
nofralloc
#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmNormal__FP18JPAEmitterWorkDataP15JPABaseParticle.s"
} }
#pragma pop
/* ############################################################################################## */
/* 804552E8-804552F0 0038E8 0008+00 5/5 0/0 0/0 .sdata2 @2312 */
SECTION_SDATA2 static f64 lit_2312 = 4503601774854144.0 /* cast s32 to float */;
/* 8027AA20-8027AA84 275360 0064+00 0/0 1/1 0/0 .text /* 8027AA20-8027AA84 275360 0064+00 0/0 1/1 0/0 .text
* JPACalcScaleAnmRepeatX__FP18JPAEmitterWorkDataP15JPABaseParticle */ * JPACalcScaleAnmRepeatX__FP18JPAEmitterWorkDataP15JPABaseParticle */
#pragma push void JPACalcScaleAnmRepeatX(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
#pragma optimization_level 0 JPAExtraShape* esp = work->mpRes->getEsp();
#pragma optimizewithasm off work->mScaleAnm = (ptcl->mAge % esp->getScaleAnmCycleX()) / (f32)esp->getScaleAnmCycleX();
asm void JPACalcScaleAnmRepeatX(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) {
nofralloc
#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmRepeatX__FP18JPAEmitterWorkDataP15JPABaseParticle.s"
} }
#pragma pop
/* 8027AA84-8027AAE8 2753C4 0064+00 0/0 1/1 0/0 .text /* 8027AA84-8027AAE8 2753C4 0064+00 0/0 1/1 0/0 .text
* JPACalcScaleAnmRepeatY__FP18JPAEmitterWorkDataP15JPABaseParticle */ * JPACalcScaleAnmRepeatY__FP18JPAEmitterWorkDataP15JPABaseParticle */
#pragma push void JPACalcScaleAnmRepeatY(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
#pragma optimization_level 0 JPAExtraShape* esp = work->mpRes->getEsp();
#pragma optimizewithasm off work->mScaleAnm = (ptcl->mAge % esp->getScaleAnmCycleY()) / (f32)esp->getScaleAnmCycleY();
asm void JPACalcScaleAnmRepeatY(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) {
nofralloc
#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmRepeatY__FP18JPAEmitterWorkDataP15JPABaseParticle.s"
} }
#pragma pop
/* ############################################################################################## */
/* 804552F0-804552F4 0038F0 0004+00 2/2 0/0 0/0 .sdata2 @2339 */
SECTION_SDATA2 static f32 lit_2339 = 2.0f;
/* 8027AAE8-8027AB7C 275428 0094+00 0/0 1/1 0/0 .text /* 8027AAE8-8027AB7C 275428 0094+00 0/0 1/1 0/0 .text
* JPACalcScaleAnmReverseX__FP18JPAEmitterWorkDataP15JPABaseParticle */ * JPACalcScaleAnmReverseX__FP18JPAEmitterWorkDataP15JPABaseParticle */
#pragma push void JPACalcScaleAnmReverseX(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
#pragma optimization_level 0 JPAExtraShape* esp = work->mpRes->getEsp();
#pragma optimizewithasm off s32 cycle = ptcl->mAge / esp->getScaleAnmCycleX();
asm void JPACalcScaleAnmReverseX(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { f32 base = (ptcl->mAge % esp->getScaleAnmCycleX()) / (f32)esp->getScaleAnmCycleX();
nofralloc work->mScaleAnm = base + ((cycle & 1) * (1.0f - base * 2.0f));
#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmReverseX__FP18JPAEmitterWorkDataP15JPABaseParticle.s"
} }
#pragma pop
/* 8027AB7C-8027AC10 2754BC 0094+00 0/0 1/1 0/0 .text /* 8027AB7C-8027AC10 2754BC 0094+00 0/0 1/1 0/0 .text
* JPACalcScaleAnmReverseY__FP18JPAEmitterWorkDataP15JPABaseParticle */ * JPACalcScaleAnmReverseY__FP18JPAEmitterWorkDataP15JPABaseParticle */
#pragma push void JPACalcScaleAnmReverseY(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
#pragma optimization_level 0 JPAExtraShape* esp = work->mpRes->getEsp();
#pragma optimizewithasm off s32 cycle = ptcl->mAge / esp->getScaleAnmCycleY();
asm void JPACalcScaleAnmReverseY(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { f32 base = (ptcl->mAge % esp->getScaleAnmCycleY()) / (f32)esp->getScaleAnmCycleY();
nofralloc work->mScaleAnm = base + ((cycle & 1) * (1.0f - base * 2.0f));
#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcScaleAnmReverseY__FP18JPAEmitterWorkDataP15JPABaseParticle.s"
} }
#pragma pop
/* ############################################################################################## */
/* 804552F4-804552F8 0038F4 0004+00 2/2 0/0 0/0 .sdata2 @2390 */
SECTION_SDATA2 static f32 lit_2390 = 255.0f;
/* 8027AC10-8027AC98 275550 0088+00 0/0 1/1 0/0 .text /* 8027AC10-8027AC98 275550 0088+00 0/0 1/1 0/0 .text
* JPACalcAlphaAnm__FP18JPAEmitterWorkDataP15JPABaseParticle */ * JPACalcAlphaAnm__FP18JPAEmitterWorkDataP15JPABaseParticle */
#pragma push void JPACalcAlphaAnm(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
#pragma optimization_level 0 JPAExtraShape* esp = work->mpRes->getEsp();
#pragma optimizewithasm off f32 alpha;
asm void JPACalcAlphaAnm(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { if (ptcl->mTime < esp->getAlphaInTiming()) {
nofralloc alpha = 255.0f * (esp->getAlphaInValue() + esp->getAlphaIncRate() * ptcl->mTime);
#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcAlphaAnm__FP18JPAEmitterWorkDataP15JPABaseParticle.s" } else if (ptcl->mTime > esp->getAlphaOutTiming()) {
alpha = 255.0f * ((ptcl->mTime - esp->getAlphaOutTiming()) * esp->getAlphaDecRate() + esp->getAlphaBaseValue());
} else {
alpha = 255.0f * esp->getAlphaBaseValue();
}
OSf32tou8(&alpha, &ptcl->mPrmColorAlphaAnm);
} }
#pragma pop
/* ############################################################################################## */
/* 804552F8-804552FC 0038F8 0004+00 1/1 0/0 0/0 .sdata2 @2433 */
SECTION_SDATA2 static f32 lit_2433 = 16384.0f;
/* 804552FC-80455300 0038FC 0004+00 1/1 0/0 0/0 .sdata2 @2434 */
SECTION_SDATA2 static f32 lit_2434 = 0.5f;
/* 8027AC98-8027AD88 2755D8 00F0+00 0/0 1/1 0/0 .text /* 8027AC98-8027AD88 2755D8 00F0+00 0/0 1/1 0/0 .text
* JPACalcAlphaFlickAnm__FP18JPAEmitterWorkDataP15JPABaseParticle */ * JPACalcAlphaFlickAnm__FP18JPAEmitterWorkDataP15JPABaseParticle */
#pragma push void JPACalcAlphaFlickAnm(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
#pragma optimization_level 0 JPAExtraShape* esp = work->mpRes->getEsp();
#pragma optimizewithasm off f32 alpha;
asm void JPACalcAlphaFlickAnm(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { if (ptcl->mTime < esp->getAlphaInTiming()) {
nofralloc alpha = (esp->getAlphaInValue() + esp->getAlphaIncRate() * ptcl->mTime);
#include "asm/JSystem/JParticle/JPAExtraShape/JPACalcAlphaFlickAnm__FP18JPAEmitterWorkDataP15JPABaseParticle.s" } else if (ptcl->mTime > esp->getAlphaOutTiming()) {
alpha = ((ptcl->mTime - esp->getAlphaOutTiming()) * esp->getAlphaDecRate() + esp->getAlphaBaseValue());
} else {
alpha = esp->getAlphaBaseValue();
}
s32 theta = ptcl->mAlphaWaveRandom * ptcl->mAge * 16384.0f * (1.0f - esp->getAlphaFreq());
f32 wave = JMASSin(theta);
alpha *= (1.0f + esp->getAlphaAmp() * (wave - 1.0f) * 0.5f) * 255.0f;
OSf32tou8(&alpha, &ptcl->mPrmColorAlphaAnm);
} }
#pragma pop
/* 8027AD88-8027ADBC 2756C8 0034+00 0/0 1/1 0/0 .text __ct__13JPAExtraShapeFPCUc */ /* 8027AD88-8027ADBC 2756C8 0034+00 0/0 1/1 0/0 .text __ct__13JPAExtraShapeFPCUc */
#pragma push JPAExtraShape::JPAExtraShape(u8 const* data) {
#pragma optimization_level 0 mpData = (const JPAExtraShapeData*)data;
#pragma optimizewithasm off init();
asm JPAExtraShape::JPAExtraShape(u8 const* param_0) {
nofralloc
#include "asm/JSystem/JParticle/JPAExtraShape/__ct__13JPAExtraShapeFPCUc.s"
} }
#pragma pop
/* ############################################################################################## */
/* 80455300-80455308 003900 0004+04 1/1 0/0 0/0 .sdata2 @2503 */
SECTION_SDATA2 static f32 lit_2503[1 + 1 /* padding */] = {
0.0f,
/* padding */
0.0f,
};
/* 8027ADBC-8027AEBC 2756FC 0100+00 1/1 0/0 0/0 .text init__13JPAExtraShapeFv */ /* 8027ADBC-8027AEBC 2756FC 0100+00 1/1 0/0 0/0 .text init__13JPAExtraShapeFv */
#pragma push void JPAExtraShape::init() {
#pragma optimization_level 0 mAlphaIncRate = (getAlphaInTiming() != 0.0f) ? (getAlphaBaseValue() - getAlphaInValue()) / getAlphaInTiming() : 1.0f;
#pragma optimizewithasm off mAlphaDecRate = (getAlphaOutTiming() != 1.0f) ? (getAlphaOutValue() - getAlphaBaseValue()) / (1.0f - getAlphaOutTiming()) : 1.0f;
asm void JPAExtraShape::init() {
nofralloc if (getScaleInTiming() != 0.0f) {
#include "asm/JSystem/JParticle/JPAExtraShape/init__13JPAExtraShapeFv.s" mScaleIncRateX = (1.0f - getScaleInValueX()) / getScaleInTiming();
mScaleIncRateY = (1.0f - getScaleInValueY()) / getScaleInTiming();
} else {
mScaleIncRateX = mScaleIncRateY = 1.0f;
}
if (getScaleOutTiming() != 1.0f) {
mScaleDecRateX = (getScaleOutValueX() - 1.0f) / (1.0f - getScaleOutTiming());
mScaleDecRateY = (getScaleOutValueY() - 1.0f) / (1.0f - getScaleOutTiming());
} else {
mScaleDecRateX = mScaleDecRateY = 1.0f;
}
} }
#pragma pop

View File

@ -7,16 +7,6 @@
#include "dol2asm.h" #include "dol2asm.h"
#include "dolphin/types.h" #include "dolphin/types.h"
//
// Types:
//
struct JPAResource {
/* 8027658C */ void calc_p(JPAEmitterWorkData*, JPABaseParticle*);
/* 80276608 */ void calc_c(JPAEmitterWorkData*, JPABaseParticle*);
/* 80276684 */ void calcField(JPAEmitterWorkData*, JPABaseParticle*);
};
// //
// Forward References: // Forward References:
// //

View File

@ -5,6 +5,7 @@
#include "JSystem/JParticle/JPAResource.h" #include "JSystem/JParticle/JPAResource.h"
#include "JSystem/JParticle/JPAMath.h" #include "JSystem/JParticle/JPAMath.h"
#include "JSystem/JParticle/JPABaseShape.h"
#include "JSystem/JParticle/JPAParticle.h" #include "JSystem/JParticle/JPAParticle.h"
#include "dol2asm.h" #include "dol2asm.h"
#include "dolphin/mtx/mtx.h" #include "dolphin/mtx/mtx.h"
@ -148,14 +149,34 @@ extern "C" void _restgpr_28();
// //
/* 80274010-80274080 26E950 0070+00 0/0 1/1 0/0 .text __ct__11JPAResourceFv */ /* 80274010-80274080 26E950 0070+00 0/0 1/1 0/0 .text __ct__11JPAResourceFv */
#pragma push JPAResource::JPAResource() {
#pragma optimization_level 0 mpDrawEmitterChildFuncList = NULL;
#pragma optimizewithasm off mpDrawEmitterFuncList = NULL;
asm JPAResource::JPAResource() { mpCalcEmitterFuncList = NULL;
nofralloc mpDrawParticleChildFuncList = NULL;
#include "asm/JSystem/JParticle/JPAResource/__ct__11JPAResourceFv.s" mpCalcParticleChildFuncList = NULL;
mpDrawParticleFuncList = NULL;
mpCalcParticleFuncList = NULL;
mpBaseShape = NULL;
mpExtraShape = NULL;
mpChildShape = NULL;
mpExTexShape = NULL;
mpDynamicsBlock = NULL;
mpFieldBlocks = NULL;
mpKeyBlocks = NULL;
mpTDB1 = NULL;
mpDrawParticleChildFuncListNum = 0;
mpCalcParticleChildFuncListNum = 0;
mpDrawParticleFuncListNum = 0;
mpCalcParticleFuncListNum = 0;
mpDrawEmitterChildFuncListNum = 0;
mpDrawEmitterFuncListNum = 0;
mpCalcEmitterFuncListNum = 0;
mTDB1Num = 0;
mKeyBlockNum = 0;
mFieldBlockNum = 0;
mUsrIdx = 0;
} }
#pragma pop
/* ############################################################################################## */ /* ############################################################################################## */
/* 803C40C0-803C4220 0211E0 0144+1C 2/2 0/0 0/0 .data jpa_pos */ /* 803C40C0-803C4220 0211E0 0144+1C 2/2 0/0 0/0 .data jpa_pos */
@ -566,7 +587,7 @@ asm void JPAResource::init(JKRHeap* param_0) {
#pragma push #pragma push
#pragma optimization_level 0 #pragma optimization_level 0
#pragma optimizewithasm off #pragma optimizewithasm off
asm void JPAResource::calc(JPAEmitterWorkData* param_0, JPABaseEmitter* param_1) { asm bool JPAResource::calc(JPAEmitterWorkData* param_0, JPABaseEmitter* param_1) {
nofralloc nofralloc
#include "asm/JSystem/JParticle/JPAResource/calc__11JPAResourceFP18JPAEmitterWorkDataP14JPABaseEmitter.s" #include "asm/JSystem/JParticle/JPAResource/calc__11JPAResourceFP18JPAEmitterWorkDataP14JPABaseEmitter.s"
} }
@ -574,14 +595,21 @@ asm void JPAResource::calc(JPAEmitterWorkData* param_0, JPABaseEmitter* param_1)
/* 80275A94-80275B74 2703D4 00E0+00 0/0 1/1 0/0 .text /* 80275A94-80275B74 2703D4 00E0+00 0/0 1/1 0/0 .text
* draw__11JPAResourceFP18JPAEmitterWorkDataP14JPABaseEmitter */ * draw__11JPAResourceFP18JPAEmitterWorkDataP14JPABaseEmitter */
#pragma push void JPAResource::draw(JPAEmitterWorkData* work, JPABaseEmitter* emtr) {
#pragma optimization_level 0 work->mpEmtr = emtr;
#pragma optimizewithasm off work->mpRes = this;
asm void JPAResource::draw(JPAEmitterWorkData* param_0, JPABaseEmitter* param_1) { work->mDrawCount = 0;
nofralloc calcWorkData_d(work);
#include "asm/JSystem/JParticle/JPAResource/draw__11JPAResourceFP18JPAEmitterWorkDataP14JPABaseEmitter.s" mpBaseShape->setGX(work);
for (s32 i = 1; i <= emtr->getDrawTimes(); i++) {
work->mDrawCount++;
if (mpBaseShape->isDrawPrntAhead() && mpChildShape != NULL)
drawC(work);
drawP(work);
if (!mpBaseShape->isDrawPrntAhead() && mpChildShape != NULL)
drawC(work);
}
} }
#pragma pop
/* ############################################################################################## */ /* ############################################################################################## */
/* 80455290-80455294 003890 0004+00 2/2 0/0 0/0 .sdata2 @3189 */ /* 80455290-80455294 003890 0004+00 2/2 0/0 0/0 .sdata2 @3189 */

File diff suppressed because it is too large Load Diff

View File

@ -553,7 +553,7 @@ s32 fopAcM_create(s16 procName, u16 enemyNo, u32 parameter, const cXyz* pPos, in
fopAcM_prm_class* params = fopAcM_prm_class* params =
createAppend(enemyNo, parameter, pPos, roomNo, pRot, pScale, subType, 0xFFFFFFFF); createAppend(enemyNo, parameter, pPos, roomNo, pRot, pScale, subType, 0xFFFFFFFF);
if (params == NULL) { if (params == NULL) {
return 0xFFFFFFFF; return -1;
} else { } else {
return fpcSCtRq_Request(fpcLy_CurrentLayer(), procName, (stdCreateFunc)pCreateFunc, NULL, return fpcSCtRq_Request(fpcLy_CurrentLayer(), procName, (stdCreateFunc)pCreateFunc, NULL,
params); params);

View File

@ -60,7 +60,7 @@ s32 fpcLf_Create(leafdraw_class* pLeaf) {
profDef = (leaf_process_profile_definition*)pLeaf->mBase.mpProf; profDef = (leaf_process_profile_definition*)pLeaf->mBase.mpProf;
pLeaf->mpDrawMtd = profDef->mLfDrwMth; pLeaf->mpDrawMtd = profDef->mLfDrwMth;
pLeaf->mBase.mSubType = fpcBs_MakeOfType(&g_fpcLf_type); pLeaf->mBase.mSubType = fpcBs_MakeOfType(&g_fpcLf_type);
fpcDwPi_Init(&pLeaf->mDwPi, profDef->unk20); fpcDwPi_Init(&pLeaf->mDwPi, profDef->mPriority);
pLeaf->mbUnk0 = 0; pLeaf->mbUnk0 = 0;
} }
return fpcMtd_Create(&pLeaf->mpDrawMtd->mBase, pLeaf); return fpcMtd_Create(&pLeaf->mpDrawMtd->mBase, pLeaf);