From d44dd61cd6b1b19ff0825c04b1a1addf06f6253c Mon Sep 17 00:00:00 2001 From: maekclena Date: Fri, 4 Sep 2020 23:22:12 +0200 Subject: [PATCH] ovl_Effect_Ss_Extra (#339) * ovl_Effect_Ss_Extra * EffectSsExtra_Spawn * Typo * PR review * PR review --- .../func_8002A5F4.s | 28 ---- .../actors/ovl_En_Dnt_Nomal/func_809F36CC.s | 4 +- .../actors/ovl_En_G_Switch/func_80A22250.s | 2 +- .../ovl_En_Yabusame_Mark/func_80B42F74.s | 2 +- .../ovl_Effect_Ss_Extra/EffectSsExtra_Init.s | 83 ----------- .../ovl_Effect_Ss_Extra/func_809A3E00.s | 141 ------------------ .../ovl_Effect_Ss_Extra/func_809A3FF8.s | 30 ---- data/overlays/effects/z_eff_ss_extra.data.s | 18 --- data/overlays/effects/z_eff_ss_extra.reloc.s | 13 -- include/functions.h | 2 +- spec | 3 +- src/code/z_effect_soft_sprite_old_init.c | 12 +- .../ovl_Effect_Ss_Extra/z_eff_ss_extra.c | 85 ++++++++--- .../ovl_Effect_Ss_Extra/z_eff_ss_extra.h | 4 +- 14 files changed, 86 insertions(+), 341 deletions(-) delete mode 100644 asm/non_matchings/code/z_effect_soft_sprite_old_init/func_8002A5F4.s delete mode 100644 asm/non_matchings/overlays/effects/ovl_Effect_Ss_Extra/EffectSsExtra_Init.s delete mode 100644 asm/non_matchings/overlays/effects/ovl_Effect_Ss_Extra/func_809A3E00.s delete mode 100644 asm/non_matchings/overlays/effects/ovl_Effect_Ss_Extra/func_809A3FF8.s delete mode 100644 data/overlays/effects/z_eff_ss_extra.data.s delete mode 100644 data/overlays/effects/z_eff_ss_extra.reloc.s diff --git a/asm/non_matchings/code/z_effect_soft_sprite_old_init/func_8002A5F4.s b/asm/non_matchings/code/z_effect_soft_sprite_old_init/func_8002A5F4.s deleted file mode 100644 index c69183fa44..0000000000 --- a/asm/non_matchings/code/z_effect_soft_sprite_old_init/func_8002A5F4.s +++ /dev/null @@ -1,28 +0,0 @@ -glabel func_8002A5F4 -/* AA1794 8002A5F4 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* AA1798 8002A5F8 AFBF0014 */ sw $ra, 0x14($sp) -/* AA179C 8002A5FC AFA40040 */ sw $a0, 0x40($sp) -/* AA17A0 8002A600 AFA60048 */ sw $a2, 0x48($sp) -/* AA17A4 8002A604 AFA7004C */ sw $a3, 0x4c($sp) -/* AA17A8 8002A608 0C01DF90 */ jal Math_Vec3f_Copy -/* AA17AC 8002A60C 27A40018 */ addiu $a0, $sp, 0x18 -/* AA17B0 8002A610 27A40024 */ addiu $a0, $sp, 0x24 -/* AA17B4 8002A614 0C01DF90 */ jal Math_Vec3f_Copy -/* AA17B8 8002A618 8FA50048 */ lw $a1, 0x48($sp) -/* AA17BC 8002A61C 27A40030 */ addiu $a0, $sp, 0x30 -/* AA17C0 8002A620 0C01DF90 */ jal Math_Vec3f_Copy -/* AA17C4 8002A624 8FA5004C */ lw $a1, 0x4c($sp) -/* AA17C8 8002A628 87AE0052 */ lh $t6, 0x52($sp) -/* AA17CC 8002A62C 87AF0056 */ lh $t7, 0x56($sp) -/* AA17D0 8002A630 8FA40040 */ lw $a0, 0x40($sp) -/* AA17D4 8002A634 2405001E */ li $a1, 30 -/* AA17D8 8002A638 24060064 */ li $a2, 100 -/* AA17DC 8002A63C 27A70018 */ addiu $a3, $sp, 0x18 -/* AA17E0 8002A640 A7AE003C */ sh $t6, 0x3c($sp) -/* AA17E4 8002A644 0C009DE6 */ jal EffectSs_Spawn -/* AA17E8 8002A648 A7AF003E */ sh $t7, 0x3e($sp) -/* AA17EC 8002A64C 8FBF0014 */ lw $ra, 0x14($sp) -/* AA17F0 8002A650 27BD0040 */ addiu $sp, $sp, 0x40 -/* AA17F4 8002A654 03E00008 */ jr $ra -/* AA17F8 8002A658 00000000 */ nop - diff --git a/asm/non_matchings/overlays/actors/ovl_En_Dnt_Nomal/func_809F36CC.s b/asm/non_matchings/overlays/actors/ovl_En_Dnt_Nomal/func_809F36CC.s index 92df119284..880d1e2c76 100644 --- a/asm/non_matchings/overlays/actors/ovl_En_Dnt_Nomal/func_809F36CC.s +++ b/asm/non_matchings/overlays/actors/ovl_En_Dnt_Nomal/func_809F36CC.s @@ -128,7 +128,7 @@ glabel func_809F36CC /* 005CC 809F388C C60A002C */ lwc1 $f10, 0x002C($s0) ## 0000002C /* 005D0 809F3890 AFAA0014 */ sw $t2, 0x0014($sp) /* 005D4 809F3894 AFA90010 */ sw $t1, 0x0010($sp) -/* 005D8 809F3898 0C00A97D */ jal func_8002A5F4 +/* 005D8 809F3898 0C00A97D */ jal EffectSsExtra_Spawn /* 005DC 809F389C E7AA0074 */ swc1 $f10, 0x0074($sp) /* 005E0 809F38A0 0C03E341 */ jal func_800F8D04 /* 005E4 809F38A4 24044807 */ addiu $a0, $zero, 0x4807 ## $a0 = 00004807 @@ -194,7 +194,7 @@ glabel func_809F36CC /* 006CC 809F398C C608002C */ lwc1 $f8, 0x002C($s0) ## 0000002C /* 006D0 809F3990 AFA00014 */ sw $zero, 0x0014($sp) /* 006D4 809F3994 AFA90010 */ sw $t1, 0x0010($sp) -/* 006D8 809F3998 0C00A97D */ jal func_8002A5F4 +/* 006D8 809F3998 0C00A97D */ jal EffectSsExtra_Spawn /* 006DC 809F399C E7A80074 */ swc1 $f8, 0x0074($sp) /* 006E0 809F39A0 A600026C */ sh $zero, 0x026C($s0) ## 0000026C .L809F39A4: diff --git a/asm/non_matchings/overlays/actors/ovl_En_G_Switch/func_80A22250.s b/asm/non_matchings/overlays/actors/ovl_En_G_Switch/func_80A22250.s index 8f0e4d86af..a2c178065a 100644 --- a/asm/non_matchings/overlays/actors/ovl_En_G_Switch/func_80A22250.s +++ b/asm/non_matchings/overlays/actors/ovl_En_G_Switch/func_80A22250.s @@ -82,7 +82,7 @@ glabel func_80A22250 /* 004C4 80A22384 AFAF0010 */ sw $t7, 0x0010($sp) /* 004C8 80A22388 27A60038 */ addiu $a2, $sp, 0x0038 ## $a2 = FFFFFFD0 /* 004CC 80A2238C 27A70044 */ addiu $a3, $sp, 0x0044 ## $a3 = FFFFFFDC -/* 004D0 80A22390 0C00A97D */ jal func_8002A5F4 +/* 004D0 80A22390 0C00A97D */ jal EffectSsExtra_Spawn /* 004D4 80A22394 E7A8003C */ swc1 $f8, 0x003C($sp) /* 004D8 80A22398 86220150 */ lh $v0, 0x0150($s1) ## 00000150 .L80A2239C: diff --git a/asm/non_matchings/overlays/actors/ovl_En_Yabusame_Mark/func_80B42F74.s b/asm/non_matchings/overlays/actors/ovl_En_Yabusame_Mark/func_80B42F74.s index 617909c901..7bb37ee862 100644 --- a/asm/non_matchings/overlays/actors/ovl_En_Yabusame_Mark/func_80B42F74.s +++ b/asm/non_matchings/overlays/actors/ovl_En_Yabusame_Mark/func_80B42F74.s @@ -302,7 +302,7 @@ glabel func_80B42F74 /* 00560 80B43320 27A50044 */ addiu $a1, $sp, 0x0044 ## $a1 = FFFFFFDC /* 00564 80B43324 27A60050 */ addiu $a2, $sp, 0x0050 ## $a2 = FFFFFFE8 /* 00568 80B43328 27A7005C */ addiu $a3, $sp, 0x005C ## $a3 = FFFFFFF4 -/* 0056C 80B4332C 0C00A97D */ jal func_8002A5F4 +/* 0056C 80B4332C 0C00A97D */ jal EffectSsExtra_Spawn /* 00570 80B43330 AFA90014 */ sw $t1, 0x0014($sp) .L80B43334: /* 00574 80B43334 8FBF001C */ lw $ra, 0x001C($sp) diff --git a/asm/non_matchings/overlays/effects/ovl_Effect_Ss_Extra/EffectSsExtra_Init.s b/asm/non_matchings/overlays/effects/ovl_Effect_Ss_Extra/EffectSsExtra_Init.s deleted file mode 100644 index c3a7773822..0000000000 --- a/asm/non_matchings/overlays/effects/ovl_Effect_Ss_Extra/EffectSsExtra_Init.s +++ /dev/null @@ -1,83 +0,0 @@ -glabel EffectSsExtra_Init -/* 000000 809A3CC0 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 000004 809A3CC4 3C010001 */ lui $at, (0x000117A4 >> 16) # lui $at, 1 -/* 000008 809A3CC8 AFA40030 */ sw $a0, 0x30($sp) -/* 00000C 809A3CCC 342117A4 */ ori $at, (0x000117A4 & 0xFFFF) # ori $at, $at, 0x17a4 -/* 000010 809A3CD0 AFBF0014 */ sw $ra, 0x14($sp) -/* 000014 809A3CD4 AFA50034 */ sw $a1, 0x34($sp) -/* 000018 809A3CD8 00812021 */ addu $a0, $a0, $at -/* 00001C 809A3CDC AFA4001C */ sw $a0, 0x1c($sp) -/* 000020 809A3CE0 24050117 */ li $a1, 279 -/* 000024 809A3CE4 AFA60038 */ sw $a2, 0x38($sp) -/* 000028 809A3CE8 0C02604B */ jal Object_GetIndex -/* 00002C 809A3CEC AFA7003C */ sw $a3, 0x3c($sp) -/* 000030 809A3CF0 8FA4001C */ lw $a0, 0x1c($sp) -/* 000034 809A3CF4 8FA60038 */ lw $a2, 0x38($sp) -/* 000038 809A3CF8 8FA7003C */ lw $a3, 0x3c($sp) -/* 00003C 809A3CFC 0440003B */ bltz $v0, .L809A3DEC -/* 000040 809A3D00 00402825 */ move $a1, $v0 -/* 000044 809A3D04 AFA20024 */ sw $v0, 0x24($sp) -/* 000048 809A3D08 AFA60038 */ sw $a2, 0x38($sp) -/* 00004C 809A3D0C 0C026062 */ jal Object_IsLoaded -/* 000050 809A3D10 AFA7003C */ sw $a3, 0x3c($sp) -/* 000054 809A3D14 8FA50024 */ lw $a1, 0x24($sp) -/* 000058 809A3D18 8FA60038 */ lw $a2, 0x38($sp) -/* 00005C 809A3D1C 10400033 */ beqz $v0, .L809A3DEC -/* 000060 809A3D20 8FA7003C */ lw $a3, 0x3c($sp) -/* 000064 809A3D24 8FAE0030 */ lw $t6, 0x30($sp) -/* 000068 809A3D28 00057900 */ sll $t7, $a1, 4 -/* 00006C 809A3D2C 01E57821 */ addu $t7, $t7, $a1 -/* 000070 809A3D30 000F7880 */ sll $t7, $t7, 2 -/* 000074 809A3D34 3C190001 */ lui $t9, 1 -/* 000078 809A3D38 01CFC021 */ addu $t8, $t6, $t7 -/* 00007C 809A3D3C 0338C821 */ addu $t9, $t9, $t8 -/* 000080 809A3D40 8F3917B4 */ lw $t9, 0x17b4($t9) -/* 000084 809A3D44 3C048016 */ lui $a0, %hi(gSegments) # $a0, 0x8016 -/* 000088 809A3D48 24846FA8 */ addiu $a0, %lo(gSegments) # addiu $a0, $a0, 0x6fa8 -/* 00008C 809A3D4C 3C018000 */ lui $at, 0x8000 -/* 000090 809A3D50 8C830018 */ lw $v1, 0x18($a0) -/* 000094 809A3D54 03214021 */ addu $t0, $t9, $at -/* 000098 809A3D58 AC880018 */ sw $t0, 0x18($a0) -/* 00009C 809A3D5C 8CEA0000 */ lw $t2, ($a3) -/* 0000A0 809A3D60 3C0F809A */ lui $t7, %hi(func_809A3E00) # $t7, 0x809a -/* 0000A4 809A3D64 3C18809A */ lui $t8, %hi(func_809A3FF8) # $t8, 0x809a -/* 0000A8 809A3D68 ACCA0000 */ sw $t2, ($a2) -/* 0000AC 809A3D6C 8CE90004 */ lw $t1, 4($a3) -/* 0000B0 809A3D70 25EF3E00 */ addiu $t7, %lo(func_809A3E00) # addiu $t7, $t7, 0x3e00 -/* 0000B4 809A3D74 27183FF8 */ addiu $t8, %lo(func_809A3FF8) # addiu $t8, $t8, 0x3ff8 -/* 0000B8 809A3D78 ACC90004 */ sw $t1, 4($a2) -/* 0000BC 809A3D7C 8CEA0008 */ lw $t2, 8($a3) -/* 0000C0 809A3D80 24190032 */ li $t9, 50 -/* 0000C4 809A3D84 24020001 */ li $v0, 1 -/* 0000C8 809A3D88 ACCA0008 */ sw $t2, 8($a2) -/* 0000CC 809A3D8C 8CEC000C */ lw $t4, 0xc($a3) -/* 0000D0 809A3D90 240A0005 */ li $t2, 5 -/* 0000D4 809A3D94 ACCC000C */ sw $t4, 0xc($a2) -/* 0000D8 809A3D98 8CEB0010 */ lw $t3, 0x10($a3) -/* 0000DC 809A3D9C ACCB0010 */ sw $t3, 0x10($a2) -/* 0000E0 809A3DA0 8CEC0014 */ lw $t4, 0x14($a3) -/* 0000E4 809A3DA4 ACCC0014 */ sw $t4, 0x14($a2) -/* 0000E8 809A3DA8 8CEE0018 */ lw $t6, 0x18($a3) -/* 0000EC 809A3DAC ACCE0018 */ sw $t6, 0x18($a2) -/* 0000F0 809A3DB0 8CED001C */ lw $t5, 0x1c($a3) -/* 0000F4 809A3DB4 ACCD001C */ sw $t5, 0x1c($a2) -/* 0000F8 809A3DB8 8CEE0020 */ lw $t6, 0x20($a3) -/* 0000FC 809A3DBC ACCF0028 */ sw $t7, 0x28($a2) -/* 000100 809A3DC0 ACD80024 */ sw $t8, 0x24($a2) -/* 000104 809A3DC4 A4D9005C */ sh $t9, 0x5c($a2) -/* 000108 809A3DC8 ACCE0020 */ sw $t6, 0x20($a2) -/* 00010C 809A3DCC 84E80026 */ lh $t0, 0x26($a3) -/* 000110 809A3DD0 A4C80044 */ sh $t0, 0x44($a2) -/* 000114 809A3DD4 84E90024 */ lh $t1, 0x24($a3) -/* 000118 809A3DD8 A4CA0042 */ sh $t2, 0x42($a2) -/* 00011C 809A3DDC A4C50040 */ sh $a1, 0x40($a2) -/* 000120 809A3DE0 A4C90046 */ sh $t1, 0x46($a2) -/* 000124 809A3DE4 10000002 */ b .L809A3DF0 -/* 000128 809A3DE8 AC830018 */ sw $v1, 0x18($a0) -.L809A3DEC: -/* 00012C 809A3DEC 00001025 */ move $v0, $zero -.L809A3DF0: -/* 000130 809A3DF0 8FBF0014 */ lw $ra, 0x14($sp) -/* 000134 809A3DF4 27BD0030 */ addiu $sp, $sp, 0x30 -/* 000138 809A3DF8 03E00008 */ jr $ra -/* 00013C 809A3DFC 00000000 */ nop diff --git a/asm/non_matchings/overlays/effects/ovl_Effect_Ss_Extra/func_809A3E00.s b/asm/non_matchings/overlays/effects/ovl_Effect_Ss_Extra/func_809A3E00.s deleted file mode 100644 index aef93af9ac..0000000000 --- a/asm/non_matchings/overlays/effects/ovl_Effect_Ss_Extra/func_809A3E00.s +++ /dev/null @@ -1,141 +0,0 @@ -.rdata -glabel D_809A4080 - .asciz "../z_eff_ss_extra.c" - .balign 4 - -glabel D_809A4094 - .asciz "../z_eff_ss_extra.c" - .balign 4 - -glabel D_809A40A8 - .asciz "../z_eff_ss_extra.c" - .balign 4 - -.text -glabel func_809A3E00 -/* 000140 809A3E00 27BDFFA0 */ addiu $sp, $sp, -0x60 -/* 000144 809A3E04 AFBF0024 */ sw $ra, 0x24($sp) -/* 000148 809A3E08 AFB20020 */ sw $s2, 0x20($sp) -/* 00014C 809A3E0C AFB1001C */ sw $s1, 0x1c($sp) -/* 000150 809A3E10 AFB00018 */ sw $s0, 0x18($sp) -/* 000154 809A3E14 AFA50064 */ sw $a1, 0x64($sp) -/* 000158 809A3E18 84CE0046 */ lh $t6, 0x46($a2) -/* 00015C 809A3E1C 3C0142C8 */ li $at, 0x42C80000 # 100.000000 -/* 000160 809A3E20 44814000 */ mtc1 $at, $f8 -/* 000164 809A3E24 448E2000 */ mtc1 $t6, $f4 -/* 000168 809A3E28 3C080001 */ lui $t0, 1 -/* 00016C 809A3E2C 00C08825 */ move $s1, $a2 -/* 000170 809A3E30 468021A0 */ cvt.s.w $f6, $f4 -/* 000174 809A3E34 00809025 */ move $s2, $a0 -/* 000178 809A3E38 240700A8 */ li $a3, 168 -/* 00017C 809A3E3C 46083283 */ div.s $f10, $f6, $f8 -/* 000180 809A3E40 E7AA0058 */ swc1 $f10, 0x58($sp) -/* 000184 809A3E44 84CF0040 */ lh $t7, 0x40($a2) -/* 000188 809A3E48 8C850000 */ lw $a1, ($a0) -/* 00018C 809A3E4C 3C06809A */ lui $a2, %hi(D_809A4080) # $a2, 0x809a -/* 000190 809A3E50 000FC100 */ sll $t8, $t7, 4 -/* 000194 809A3E54 030FC021 */ addu $t8, $t8, $t7 -/* 000198 809A3E58 0018C080 */ sll $t8, $t8, 2 -/* 00019C 809A3E5C 0098C821 */ addu $t9, $a0, $t8 -/* 0001A0 809A3E60 01194021 */ addu $t0, $t0, $t9 -/* 0001A4 809A3E64 8D0817B4 */ lw $t0, 0x17b4($t0) -/* 0001A8 809A3E68 27A40040 */ addiu $a0, $sp, 0x40 -/* 0001AC 809A3E6C 24C64080 */ addiu $a2, %lo(D_809A4080) # addiu $a2, $a2, 0x4080 -/* 0001B0 809A3E70 00A08025 */ move $s0, $a1 -/* 0001B4 809A3E74 0C031AB1 */ jal Graph_OpenDisps -/* 0001B8 809A3E78 AFA80054 */ sw $t0, 0x54($sp) -/* 0001BC 809A3E7C 8FA80054 */ lw $t0, 0x54($sp) -/* 0001C0 809A3E80 3C018000 */ lui $at, 0x8000 -/* 0001C4 809A3E84 3C0BDB06 */ lui $t3, (0xDB060018 >> 16) # lui $t3, 0xdb06 -/* 0001C8 809A3E88 01014821 */ addu $t1, $t0, $at -/* 0001CC 809A3E8C 3C018016 */ lui $at, %hi(gSegments+0x18) # $at, 0x8016 -/* 0001D0 809A3E90 AC296FC0 */ sw $t1, %lo(gSegments+0x18)($at) -/* 0001D4 809A3E94 8E0202D0 */ lw $v0, 0x2d0($s0) -/* 0001D8 809A3E98 356B0018 */ ori $t3, (0xDB060018 & 0xFFFF) # ori $t3, $t3, 0x18 -/* 0001DC 809A3E9C 00003825 */ move $a3, $zero -/* 0001E0 809A3EA0 244A0008 */ addiu $t2, $v0, 8 -/* 0001E4 809A3EA4 AE0A02D0 */ sw $t2, 0x2d0($s0) -/* 0001E8 809A3EA8 AC480004 */ sw $t0, 4($v0) -/* 0001EC 809A3EAC AC4B0000 */ sw $t3, ($v0) -/* 0001F0 809A3EB0 8E260008 */ lw $a2, 8($s1) -/* 0001F4 809A3EB4 C62E0004 */ lwc1 $f14, 4($s1) -/* 0001F8 809A3EB8 0C034261 */ jal Matrix_Translate -/* 0001FC 809A3EBC C62C0000 */ lwc1 $f12, ($s1) -/* 000200 809A3EC0 C7AC0058 */ lwc1 $f12, 0x58($sp) -/* 000204 809A3EC4 24070001 */ li $a3, 1 -/* 000208 809A3EC8 44066000 */ mfc1 $a2, $f12 -/* 00020C 809A3ECC 0C0342A3 */ jal Matrix_Scale -/* 000210 809A3ED0 46006386 */ mov.s $f14, $f12 -/* 000214 809A3ED4 0C024F61 */ jal func_80093D84 -/* 000218 809A3ED8 8E440000 */ lw $a0, ($s2) -/* 00021C 809A3EDC 3C010001 */ lui $at, (0x00011DA0 >> 16) # lui $at, 1 -/* 000220 809A3EE0 34211DA0 */ ori $at, (0x00011DA0 & 0xFFFF) # ori $at, $at, 0x1da0 -/* 000224 809A3EE4 0C0347F5 */ jal func_800D1FD4 -/* 000228 809A3EE8 02412021 */ addu $a0, $s2, $at -/* 00022C 809A3EEC 8E0202D0 */ lw $v0, 0x2d0($s0) -/* 000230 809A3EF0 3C0DDA38 */ lui $t5, (0xDA380003 >> 16) # lui $t5, 0xda38 -/* 000234 809A3EF4 35AD0003 */ ori $t5, (0xDA380003 & 0xFFFF) # ori $t5, $t5, 3 -/* 000238 809A3EF8 244C0008 */ addiu $t4, $v0, 8 -/* 00023C 809A3EFC AE0C02D0 */ sw $t4, 0x2d0($s0) -/* 000240 809A3F00 AC4D0000 */ sw $t5, ($v0) -/* 000244 809A3F04 8E440000 */ lw $a0, ($s2) -/* 000248 809A3F08 3C05809A */ lui $a1, %hi(D_809A4094) # $a1, 0x809a -/* 00024C 809A3F0C 24A54094 */ addiu $a1, %lo(D_809A4094) # addiu $a1, $a1, 0x4094 -/* 000250 809A3F10 240600BA */ li $a2, 186 -/* 000254 809A3F14 0C0346A2 */ jal Matrix_NewMtx -/* 000258 809A3F18 AFA20038 */ sw $v0, 0x38($sp) -/* 00025C 809A3F1C 8FA30038 */ lw $v1, 0x38($sp) -/* 000260 809A3F20 3C0FDB06 */ lui $t7, (0xDB060020 >> 16) # lui $t7, 0xdb06 -/* 000264 809A3F24 35EF0020 */ ori $t7, (0xDB060020 & 0xFFFF) # ori $t7, $t7, 0x20 -/* 000268 809A3F28 AC620004 */ sw $v0, 4($v1) -/* 00026C 809A3F2C 8E0202D0 */ lw $v0, 0x2d0($s0) -/* 000270 809A3F30 3C04809A */ lui $a0, %hi(D_809A4070) -/* 000274 809A3F34 3C078016 */ lui $a3, %hi(gSegments) # $a3, 0x8016 -/* 000278 809A3F38 244E0008 */ addiu $t6, $v0, 8 -/* 00027C 809A3F3C AE0E02D0 */ sw $t6, 0x2d0($s0) -/* 000280 809A3F40 AC4F0000 */ sw $t7, ($v0) -/* 000284 809A3F44 86380044 */ lh $t8, 0x44($s1) -/* 000288 809A3F48 24E76FA8 */ addiu $a3, %lo(gSegments) # addiu $a3, $a3, 0x6fa8 -/* 00028C 809A3F4C 3C0500FF */ lui $a1, (0x00FFFFFF >> 16) # lui $a1, 0xff -/* 000290 809A3F50 0018C880 */ sll $t9, $t8, 2 -/* 000294 809A3F54 00992021 */ addu $a0, $a0, $t9 -/* 000298 809A3F58 8C844070 */ lw $a0, %lo(D_809A4070)($a0) -/* 00029C 809A3F5C 34A5FFFF */ ori $a1, (0x00FFFFFF & 0xFFFF) # ori $a1, $a1, 0xffff -/* 0002A0 809A3F60 3C068000 */ lui $a2, 0x8000 -/* 0002A4 809A3F64 00045100 */ sll $t2, $a0, 4 -/* 0002A8 809A3F68 000A5F02 */ srl $t3, $t2, 0x1c -/* 0002AC 809A3F6C 000B6080 */ sll $t4, $t3, 2 -/* 0002B0 809A3F70 00EC6821 */ addu $t5, $a3, $t4 -/* 0002B4 809A3F74 8DAE0000 */ lw $t6, ($t5) -/* 0002B8 809A3F78 00854824 */ and $t1, $a0, $a1 -/* 0002BC 809A3F7C 3C040600 */ lui $a0, %hi(D_06000DC0) # $a0, 0x600 -/* 0002C0 809A3F80 012E7821 */ addu $t7, $t1, $t6 -/* 0002C4 809A3F84 01E6C021 */ addu $t8, $t7, $a2 -/* 0002C8 809A3F88 AC580004 */ sw $t8, 4($v0) -/* 0002CC 809A3F8C 8E0202D0 */ lw $v0, 0x2d0($s0) -/* 0002D0 809A3F90 24840DC0 */ addiu $a0, %lo(D_06000DC0) # addiu $a0, $a0, 0xdc0 -/* 0002D4 809A3F94 00045900 */ sll $t3, $a0, 4 -/* 0002D8 809A3F98 000B6702 */ srl $t4, $t3, 0x1c -/* 0002DC 809A3F9C 24590008 */ addiu $t9, $v0, 8 -/* 0002E0 809A3FA0 AE1902D0 */ sw $t9, 0x2d0($s0) -/* 0002E4 809A3FA4 000C6880 */ sll $t5, $t4, 2 -/* 0002E8 809A3FA8 3C0ADE00 */ lui $t2, 0xde00 -/* 0002EC 809A3FAC 00ED4821 */ addu $t1, $a3, $t5 -/* 0002F0 809A3FB0 AC4A0000 */ sw $t2, ($v0) -/* 0002F4 809A3FB4 8D2E0000 */ lw $t6, ($t1) -/* 0002F8 809A3FB8 00857824 */ and $t7, $a0, $a1 -/* 0002FC 809A3FBC 27A40040 */ addiu $a0, $sp, 0x40 -/* 000300 809A3FC0 01CFC021 */ addu $t8, $t6, $t7 -/* 000304 809A3FC4 0306C821 */ addu $t9, $t8, $a2 -/* 000308 809A3FC8 3C06809A */ lui $a2, %hi(D_809A40A8) # $a2, 0x809a -/* 00030C 809A3FCC AC590004 */ sw $t9, 4($v0) -/* 000310 809A3FD0 8E450000 */ lw $a1, ($s2) -/* 000314 809A3FD4 24C640A8 */ addiu $a2, %lo(D_809A40A8) # addiu $a2, $a2, 0x40a8 -/* 000318 809A3FD8 0C031AD5 */ jal Graph_CloseDisps -/* 00031C 809A3FDC 240700C2 */ li $a3, 194 -/* 000320 809A3FE0 8FBF0024 */ lw $ra, 0x24($sp) -/* 000324 809A3FE4 8FB00018 */ lw $s0, 0x18($sp) -/* 000328 809A3FE8 8FB1001C */ lw $s1, 0x1c($sp) -/* 00032C 809A3FEC 8FB20020 */ lw $s2, 0x20($sp) -/* 000330 809A3FF0 03E00008 */ jr $ra -/* 000334 809A3FF4 27BD0060 */ addiu $sp, $sp, 0x60 diff --git a/asm/non_matchings/overlays/effects/ovl_Effect_Ss_Extra/func_809A3FF8.s b/asm/non_matchings/overlays/effects/ovl_Effect_Ss_Extra/func_809A3FF8.s deleted file mode 100644 index e5fd50429d..0000000000 --- a/asm/non_matchings/overlays/effects/ovl_Effect_Ss_Extra/func_809A3FF8.s +++ /dev/null @@ -1,30 +0,0 @@ -glabel func_809A3FF8 -/* 00338 809A3FF8 AFA50004 */ sw $a1, 0x0004($sp) -/* 0033C 809A3FFC 84C20042 */ lh $v0, 0x0042($a2) ## 00000042 -/* 00340 809A4000 10400003 */ beq $v0, $zero, .L809A4010 -/* 00344 809A4004 244EFFFF */ addiu $t6, $v0, 0xFFFF ## $t6 = FFFFFFFF -/* 00348 809A4008 10000004 */ beq $zero, $zero, .L809A401C -/* 0034C 809A400C A4CE0042 */ sh $t6, 0x0042($a2) ## 00000042 -.L809A4010: -/* 00350 809A4010 44802000 */ mtc1 $zero, $f4 ## $f4 = 0.00 -/* 00354 809A4014 00000000 */ nop -/* 00358 809A4018 E4C40010 */ swc1 $f4, 0x0010($a2) ## 00000010 -.L809A401C: -/* 0035C 809A401C 84CF0042 */ lh $t7, 0x0042($a2) ## 00000042 -/* 00360 809A4020 24010001 */ addiu $at, $zero, 0x0001 ## $at = 00000001 -/* 00364 809A4024 15E10009 */ bne $t7, $at, .L809A404C -/* 00368 809A4028 00000000 */ nop -/* 0036C 809A402C 84D80044 */ lh $t8, 0x0044($a2) ## 00000044 -/* 00370 809A4030 3C08809A */ lui $t0, %hi(D_809A4060) ## $t0 = 809A0000 -/* 00374 809A4034 3C010001 */ lui $at, 0x0001 ## $at = 00010000 -/* 00378 809A4038 0018C840 */ sll $t9, $t8, 1 -/* 0037C 809A403C 01194021 */ addu $t0, $t0, $t9 -/* 00380 809A4040 85084060 */ lh $t0, %lo(D_809A4060)($t0) -/* 00384 809A4044 00240821 */ addu $at, $at, $a0 -/* 00388 809A4048 A428072C */ sh $t0, 0x072C($at) ## 0001072C -.L809A404C: -/* 0038C 809A404C 03E00008 */ jr $ra -/* 00390 809A4050 00000000 */ nop -/* 00394 809A4054 00000000 */ nop -/* 00398 809A4058 00000000 */ nop -/* 0039C 809A405C 00000000 */ nop diff --git a/data/overlays/effects/z_eff_ss_extra.data.s b/data/overlays/effects/z_eff_ss_extra.data.s deleted file mode 100644 index 3b30419cee..0000000000 --- a/data/overlays/effects/z_eff_ss_extra.data.s +++ /dev/null @@ -1,18 +0,0 @@ -.include "macro.inc" - - # assembler directives - .set noat # allow manual use of $at - .set noreorder # don't insert nops after branches - .set gp=64 # allow use of 64-bit general purpose registers - -.section .data - -.balign 16 - -glabel D_809A4060 - .word 0x001E003C, 0x00640000 -glabel Effect_Ss_Extra_InitVars -.word 0x0000001E -.word EffectSsExtra_Init -glabel D_809A4070 - .word 0x06000000, 0x06000480, 0x06000900, 0x00000000 diff --git a/data/overlays/effects/z_eff_ss_extra.reloc.s b/data/overlays/effects/z_eff_ss_extra.reloc.s deleted file mode 100644 index 7d93ae68cf..0000000000 --- a/data/overlays/effects/z_eff_ss_extra.reloc.s +++ /dev/null @@ -1,13 +0,0 @@ -.include "macro.inc" - - # assembler directives - .set noat # allow manual use of $at - .set noreorder # don't insert nops after branches - .set gp=64 # allow use of 64-bit general purpose registers - -.section .rodata - -.balign 16 - -glabel D_809A40C0 - .incbin "baserom/ovl_Effect_Ss_Extra", 0x400, 0x00000060 diff --git a/include/functions.h b/include/functions.h index b78584d8f1..5709c25b08 100644 --- a/include/functions.h +++ b/include/functions.h @@ -273,7 +273,7 @@ void EffectSsSolderSrchBall_Spawn(GlobalContext* globalCtx, Vec3f* pos, Vec3f* v // ? func_8002A3C4(?); // ? func_8002A484(?); // ? func_8002A4D4(?); -// ? func_8002A5F4(?); +void EffectSsExtra_Spawn(GlobalContext* globalCtx, Vec3f* pos, Vec3f* velocity, Vec3f* accel, s16 scale, s16 scoreIdx); void func_8002A65C(GlobalContext* globalCtx, Actor* actor, Vec3f* pos, s16 arg3, s16 arg4); void func_8002A6B8(GlobalContext* globalCtx, Vec3f* pos, Vec3f* arg2, Vec3f* arg3, u32 arg4, s32 arg5, u32 arg6, u32 arg7, u32 arg8, u32 arg9, u32 arg10, u32 arg11, u32 arg12, u32 arg13, u32 arg14, u32 arg15); diff --git a/spec b/spec index 0d1dd451fb..aded6c85ef 100644 --- a/spec +++ b/spec @@ -1778,8 +1778,7 @@ endseg beginseg name "ovl_Effect_Ss_Extra" include "build/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.o" - include "build/data/overlays/effects/z_eff_ss_extra.data.o" - include "build/data/overlays/effects/z_eff_ss_extra.reloc.o" + include "build/src/overlays/effects/ovl_Effect_Ss_Extra/ovl_Effect_Ss_Extra_reloc.o" endseg beginseg diff --git a/src/code/z_effect_soft_sprite_old_init.c b/src/code/z_effect_soft_sprite_old_init.c index 59f281a9fc..86855420df 100644 --- a/src/code/z_effect_soft_sprite_old_init.c +++ b/src/code/z_effect_soft_sprite_old_init.c @@ -4,6 +4,7 @@ #include "overlays/effects/ovl_Effect_Ss_Bomb/z_eff_ss_bomb.h" #include "overlays/effects/ovl_Effect_Ss_Bomb2/z_eff_ss_bomb2.h" #include "overlays/effects/ovl_Effect_Ss_Blast/z_eff_ss_blast.h" +#include "overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.h" #include "overlays/effects/ovl_Effect_Ss_G_Spk/z_eff_ss_g_spk.h" #include "overlays/effects/ovl_Effect_Ss_Solder_Srch_Ball/z_eff_ss_solder_srch_ball.h" #include "overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.h" @@ -465,7 +466,16 @@ void EffectSsSolderSrchBall_Spawn(GlobalContext* globalCtx, Vec3f* pos, Vec3f* v // EffectSsExtra Spawn Functions -#pragma GLOBAL_ASM("asm/non_matchings/code/z_effect_soft_sprite_old_init/func_8002A5F4.s") +void EffectSsExtra_Spawn(GlobalContext* globalCtx, Vec3f* pos, Vec3f* velocity, Vec3f* accel, s16 scale, s16 scoreIdx) { + EffectSsExtraInitParams initParams; + + Math_Vec3f_Copy(&initParams.pos, pos); + Math_Vec3f_Copy(&initParams.velocity, velocity); + Math_Vec3f_Copy(&initParams.accel, accel); + initParams.scale = scale; + initParams.scoreIdx = scoreIdx; + EffectSs_Spawn(globalCtx, EFFECT_SS_EXTRA, 100, &initParams); +} // EffectSsFCircle Spawn Functions diff --git a/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.c b/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.c index 691c563a33..dd6a54fca1 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.c +++ b/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.c @@ -1,40 +1,87 @@ /* * File: z_eff_ss_extra.c * Overlay: ovl_Effect_Ss_Extra - * Description: + * Description: Minigame Score Points */ #include "z_eff_ss_extra.h" typedef enum { - /* 0x00 */ SS_EXTRA_0, - /* 0x01 */ SS_EXTRA_1, - /* 0x02 */ SS_EXTRA_2, - /* 0x03 */ SS_EXTRA_3, - /* 0x04 */ SS_EXTRA_4, - /* 0x05 */ SS_EXTRA_5, - /* 0x06 */ SS_EXTRA_6, - /* 0x07 */ SS_EXTRA_7, - /* 0x08 */ SS_EXTRA_8, - /* 0x09 */ SS_EXTRA_9, - /* 0x0A */ SS_EXTRA_A, - /* 0x0B */ SS_EXTRA_B, - /* 0x0C */ SS_EXTRA_C, + /* 0x00 */ SS_EXTRA_OBJ_IDX, + /* 0x01 */ SS_EXTRA_TIMER, + /* 0x02 */ SS_EXTRA_SCORE_IDX, + /* 0x03 */ SS_EXTRA_SCALE } EffectSsExtraRegs; u32 EffectSsExtra_Init(GlobalContext* globalCtx, u32 index, EffectSs* this, void* initParamsx); void EffectSsExtra_Draw(GlobalContext* globalCtx, u32 index, EffectSs* this); void EffectSsExtra_Update(GlobalContext* globalCtx, u32 index, EffectSs* this); -/* +static s16 sScores[] = { 30, 60, 100 }; + EffectSsInit Effect_Ss_Extra_InitVars = { EFFECT_SS_EXTRA, EffectSsExtra_Init, }; -*/ -#pragma GLOBAL_ASM("asm/non_matchings/overlays/effects/ovl_Effect_Ss_Extra/EffectSsExtra_Init.s") +static UNK_PTR D_809A4070[] = { 0x06000000, 0x06000480, 0x06000900 }; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/effects/ovl_Effect_Ss_Extra/func_809A3E00.s") +extern Gfx D_06000DC0[]; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/effects/ovl_Effect_Ss_Extra/func_809A3FF8.s") +u32 EffectSsExtra_Init(GlobalContext* globalCtx, u32 index, EffectSs* this, void* initParamsx) { + EffectSsExtraInitParams* initParams = (EffectSsExtraInitParams*)initParamsx; + s32 pad; + s32 objBankIndex; + u32 oldSeg6; + + objBankIndex = Object_GetIndex(&globalCtx->objectCtx, OBJECT_YABUSAME_POINT); + + if ((objBankIndex >= 0) && Object_IsLoaded(&globalCtx->objectCtx, objBankIndex)) { + oldSeg6 = gSegments[6]; + gSegments[6] = VIRTUAL_TO_PHYSICAL(globalCtx->objectCtx.status[objBankIndex].segment); + this->pos = initParams->pos; + this->velocity = initParams->velocity; + this->accel = initParams->accel; + this->draw = EffectSsExtra_Draw; + this->update = EffectSsExtra_Update; + this->life = 50; + this->regs[SS_EXTRA_SCORE_IDX] = initParams->scoreIdx; + this->regs[SS_EXTRA_SCALE] = initParams->scale; + this->regs[SS_EXTRA_TIMER] = 5; + this->regs[SS_EXTRA_OBJ_IDX] = objBankIndex; + gSegments[6] = oldSeg6; + return 1; + } + + return 0; +} + +void EffectSsExtra_Draw(GlobalContext* globalCtx, u32 index, EffectSs* this) { + s32 pad; + f32 scale = this->regs[SS_EXTRA_SCALE] / 100.0f; + void* object = globalCtx->objectCtx.status[this->regs[SS_EXTRA_OBJ_IDX]].segment; + + OPEN_DISPS(globalCtx->state.gfxCtx, "../z_eff_ss_extra.c", 168); + gSegments[6] = VIRTUAL_TO_PHYSICAL(object); + gSPSegment(oGfxCtx->polyXlu.p++, 0x06, object); + Matrix_Translate(this->pos.x, this->pos.y, this->pos.z, MTXMODE_NEW); + Matrix_Scale(scale, scale, scale, MTXMODE_APPLY); + func_80093D84(globalCtx->state.gfxCtx); + func_800D1FD4(&globalCtx->mf_11DA0); + gSPMatrix(oGfxCtx->polyXlu.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_eff_ss_extra.c", 186), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPSegment(oGfxCtx->polyXlu.p++, 0x08, SEGMENTED_TO_VIRTUAL(D_809A4070[this->regs[SS_EXTRA_SCORE_IDX]])); + gSPDisplayList(oGfxCtx->polyXlu.p++, SEGMENTED_TO_VIRTUAL(D_06000DC0)); + CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_eff_ss_extra.c", 194); +} + +void EffectSsExtra_Update(GlobalContext* globalCtx, u32 index, EffectSs* this) { + if (this->regs[SS_EXTRA_TIMER] != 0) { + this->regs[SS_EXTRA_TIMER] -= 1; + } else { + this->velocity.y = 0.0f; + } + if (this->regs[SS_EXTRA_TIMER] == 1) { + globalCtx->interfaceCtx.unk_23C = sScores[this->regs[SS_EXTRA_SCORE_IDX]]; + } +} diff --git a/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.h b/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.h index de35e3c925..1ba601288d 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.h +++ b/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.h @@ -8,6 +8,8 @@ typedef struct { /* 0x00 */ Vec3f pos; /* 0x0C */ Vec3f velocity; /* 0x18 */ Vec3f accel; -} EffectSsExtraInitParams; // size = 0x + /* 0x24 */ s16 scale; + /* 0x26 */ s16 scoreIdx; +} EffectSsExtraInitParams; // size = 0x28 #endif