From 0e76c84c450ec646c0962133d03588a275f48515 Mon Sep 17 00:00:00 2001 From: EllipticEllipsis <73679967+EllipticEllipsis@users.noreply.github.com> Date: Thu, 21 Jan 2021 05:47:38 +0000 Subject: [PATCH] EnMThunder, 1 nonmatching (#604) * Data migrated, all but Draw matched * Draw likely equivalent but serious regalloc issues, and that last Gfx_TwoTexScroll is being very stubborn * Merge remote-tracking branch 'upstream/master' into Thunder * some improvements, set up to PR as nonmatching * spec * corrected header * added function to functions.h * delete asm * Added new collider init Co-authored-by: fig02 --- .../ovl_En_M_Thunder/EnMThunder_Destroy.s | 31 -- .../actors/ovl_En_M_Thunder/EnMThunder_Init.s | 193 --------- .../ovl_En_M_Thunder/EnMThunder_Update.s | 123 ------ .../actors/ovl_En_M_Thunder/func_80A9EFE0.s | 3 - .../actors/ovl_En_M_Thunder/func_80A9F314.s | 16 - .../actors/ovl_En_M_Thunder/func_80A9F350.s | 54 --- .../actors/ovl_En_M_Thunder/func_80A9F408.s | 395 ------------------ .../actors/ovl_En_M_Thunder/func_80A9F938.s | 41 -- .../actors/ovl_En_M_Thunder/func_80A9F9B4.s | 112 ----- data/overlays/actors/z_en_m_thunder.data.s | 28 -- include/functions.h | 1 + spec | 5 +- .../actors/ovl_En_M_Thunder/z_en_m_thunder.c | 381 ++++++++++++++++- .../actors/ovl_En_M_Thunder/z_en_m_thunder.h | 18 +- 14 files changed, 387 insertions(+), 1014 deletions(-) delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_M_Thunder/EnMThunder_Destroy.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_M_Thunder/EnMThunder_Init.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_M_Thunder/EnMThunder_Update.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9EFE0.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F314.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F350.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F408.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F938.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F9B4.s delete mode 100644 data/overlays/actors/z_en_m_thunder.data.s diff --git a/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/EnMThunder_Destroy.s b/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/EnMThunder_Destroy.s deleted file mode 100644 index c77361ea46..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/EnMThunder_Destroy.s +++ /dev/null @@ -1,31 +0,0 @@ -glabel EnMThunder_Destroy -/* 002C8 80A9F2A8 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0 -/* 002CC 80A9F2AC AFBF001C */ sw $ra, 0x001C($sp) -/* 002D0 80A9F2B0 AFB00018 */ sw $s0, 0x0018($sp) -/* 002D4 80A9F2B4 AFA40020 */ sw $a0, 0x0020($sp) -/* 002D8 80A9F2B8 908F01CA */ lbu $t7, 0x01CA($a0) ## 000001CA -/* 002DC 80A9F2BC 00A08025 */ or $s0, $a1, $zero ## $s0 = 00000000 -/* 002E0 80A9F2C0 51E00004 */ beql $t7, $zero, .L80A9F2D4 -/* 002E4 80A9F2C4 8FA50020 */ lw $a1, 0x0020($sp) -/* 002E8 80A9F2C8 0C021DB2 */ jal func_800876C8 -/* 002EC 80A9F2CC 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000 -/* 002F0 80A9F2D0 8FA50020 */ lw $a1, 0x0020($sp) -.L80A9F2D4: -/* 002F4 80A9F2D4 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 002F8 80A9F2D8 0C0170EB */ jal Collider_DestroyCylinder - -/* 002FC 80A9F2DC 24A5014C */ addiu $a1, $a1, 0x014C ## $a1 = 0000014C -/* 00300 80A9F2E0 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00304 80A9F2E4 0C2A7CC5 */ jal func_80A9F314 -/* 00308 80A9F2E8 24050000 */ addiu $a1, $zero, 0x0000 ## $a1 = 00000000 -/* 0030C 80A9F2EC 8FB80020 */ lw $t8, 0x0020($sp) -/* 00310 80A9F2F0 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00314 80A9F2F4 260507A8 */ addiu $a1, $s0, 0x07A8 ## $a1 = 000007A8 -/* 00318 80A9F2F8 0C01E9F1 */ jal LightContext_RemoveLight - -/* 0031C 80A9F2FC 8F060198 */ lw $a2, 0x0198($t8) ## 00000198 -/* 00320 80A9F300 8FBF001C */ lw $ra, 0x001C($sp) -/* 00324 80A9F304 8FB00018 */ lw $s0, 0x0018($sp) -/* 00328 80A9F308 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000 -/* 0032C 80A9F30C 03E00008 */ jr $ra -/* 00330 80A9F310 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/EnMThunder_Init.s b/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/EnMThunder_Init.s deleted file mode 100644 index aa0018db99..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/EnMThunder_Init.s +++ /dev/null @@ -1,193 +0,0 @@ -glabel EnMThunder_Init -/* 00008 80A9EFE8 27BDFFC0 */ addiu $sp, $sp, 0xFFC0 ## $sp = FFFFFFC0 -/* 0000C 80A9EFEC AFB00024 */ sw $s0, 0x0024($sp) -/* 00010 80A9EFF0 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000 -/* 00014 80A9EFF4 AFBF002C */ sw $ra, 0x002C($sp) -/* 00018 80A9EFF8 AFB10028 */ sw $s1, 0x0028($sp) -/* 0001C 80A9EFFC 00A03025 */ or $a2, $a1, $zero ## $a2 = 00000000 -/* 00020 80A9F000 8CB11C44 */ lw $s1, 0x1C44($a1) ## 00001C44 -/* 00024 80A9F004 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000 -/* 00028 80A9F008 2605014C */ addiu $a1, $s0, 0x014C ## $a1 = 0000014C -/* 0002C 80A9F00C AFA50030 */ sw $a1, 0x0030($sp) -/* 00030 80A9F010 0C0170D9 */ jal Collider_InitCylinder - -/* 00034 80A9F014 AFA60044 */ sw $a2, 0x0044($sp) -/* 00038 80A9F018 3C0780AA */ lui $a3, %hi(D_80AA0420) ## $a3 = 80AA0000 -/* 0003C 80A9F01C 8FA50030 */ lw $a1, 0x0030($sp) -/* 00040 80A9F020 24E70420 */ addiu $a3, $a3, %lo(D_80AA0420) ## $a3 = 80AA0420 -/* 00044 80A9F024 8FA40044 */ lw $a0, 0x0044($sp) -/* 00048 80A9F028 0C01712B */ jal Collider_SetCylinder - -/* 0004C 80A9F02C 02003025 */ or $a2, $s0, $zero ## $a2 = 00000000 -/* 00050 80A9F030 C6040024 */ lwc1 $f4, 0x0024($s0) ## 00000024 -/* 00054 80A9F034 C6080028 */ lwc1 $f8, 0x0028($s0) ## 00000028 -/* 00058 80A9F038 C610002C */ lwc1 $f16, 0x002C($s0) ## 0000002C -/* 0005C 80A9F03C 4600218D */ trunc.w.s $f6, $f4 -/* 00060 80A9F040 860F001C */ lh $t7, 0x001C($s0) ## 0000001C -/* 00064 80A9F044 2604019C */ addiu $a0, $s0, 0x019C ## $a0 = 0000019C -/* 00068 80A9F048 4600428D */ trunc.w.s $f10, $f8 -/* 0006C 80A9F04C 25F8FFFF */ addiu $t8, $t7, 0xFFFF ## $t8 = FFFFFFFF -/* 00070 80A9F050 44053000 */ mfc1 $a1, $f6 -/* 00074 80A9F054 4600848D */ trunc.w.s $f18, $f16 -/* 00078 80A9F058 44065000 */ mfc1 $a2, $f10 -/* 0007C 80A9F05C A21801C7 */ sb $t8, 0x01C7($s0) ## 000001C7 -/* 00080 80A9F060 240A00FF */ addiu $t2, $zero, 0x00FF ## $t2 = 000000FF -/* 00084 80A9F064 44079000 */ mfc1 $a3, $f18 -/* 00088 80A9F068 240B00FF */ addiu $t3, $zero, 0x00FF ## $t3 = 000000FF -/* 0008C 80A9F06C 240C00FF */ addiu $t4, $zero, 0x00FF ## $t4 = 000000FF -/* 00090 80A9F070 00052C00 */ sll $a1, $a1, 16 -/* 00094 80A9F074 00063400 */ sll $a2, $a2, 16 -/* 00098 80A9F078 00073C00 */ sll $a3, $a3, 16 -/* 0009C 80A9F07C 00073C03 */ sra $a3, $a3, 16 -/* 000A0 80A9F080 00063403 */ sra $a2, $a2, 16 -/* 000A4 80A9F084 00052C03 */ sra $a1, $a1, 16 -/* 000A8 80A9F088 AFAC0018 */ sw $t4, 0x0018($sp) -/* 000AC 80A9F08C AFAB0014 */ sw $t3, 0x0014($sp) -/* 000B0 80A9F090 AFAA0010 */ sw $t2, 0x0010($sp) -/* 000B4 80A9F094 AFA40030 */ sw $a0, 0x0030($sp) -/* 000B8 80A9F098 0C01E763 */ jal Lights_PointNoGlowSetInfo - -/* 000BC 80A9F09C AFA0001C */ sw $zero, 0x001C($sp) -/* 000C0 80A9F0A0 8FA40044 */ lw $a0, 0x0044($sp) -/* 000C4 80A9F0A4 8FA60030 */ lw $a2, 0x0030($sp) -/* 000C8 80A9F0A8 0C01E9D9 */ jal LightContext_InsertLight - -/* 000CC 80A9F0AC 248507A8 */ addiu $a1, $a0, 0x07A8 ## $a1 = 000007A8 -/* 000D0 80A9F0B0 44800000 */ mtc1 $zero, $f0 ## $f0 = 0.00 -/* 000D4 80A9F0B4 240D0028 */ addiu $t5, $zero, 0x0028 ## $t5 = 00000028 -/* 000D8 80A9F0B8 240EFFEC */ addiu $t6, $zero, 0xFFEC ## $t6 = FFFFFFEC -/* 000DC 80A9F0BC 240F0008 */ addiu $t7, $zero, 0x0008 ## $t7 = 00000008 -/* 000E0 80A9F0C0 AE020198 */ sw $v0, 0x0198($s0) ## 00000198 -/* 000E4 80A9F0C4 A600018C */ sh $zero, 0x018C($s0) ## 0000018C -/* 000E8 80A9F0C8 A60D018E */ sh $t5, 0x018E($s0) ## 0000018E -/* 000EC 80A9F0CC A60E0190 */ sh $t6, 0x0190($s0) ## 00000190 -/* 000F0 80A9F0D0 A60F01C4 */ sh $t7, 0x01C4($s0) ## 000001C4 -/* 000F4 80A9F0D4 E60001B4 */ swc1 $f0, 0x01B4($s0) ## 000001B4 -/* 000F8 80A9F0D8 8E390908 */ lw $t9, 0x0908($s1) ## 00000908 -/* 000FC 80A9F0DC 34018000 */ ori $at, $zero, 0x8000 ## $at = 00008000 -/* 00100 80A9F0E0 240AFFFF */ addiu $t2, $zero, 0xFFFF ## $t2 = FFFFFFFF -/* 00104 80A9F0E4 AE190024 */ sw $t9, 0x0024($s0) ## 00000024 -/* 00108 80A9F0E8 8E38090C */ lw $t8, 0x090C($s1) ## 0000090C -/* 0010C 80A9F0EC 3C053DCC */ lui $a1, 0x3DCC ## $a1 = 3DCC0000 -/* 00110 80A9F0F0 34A5CCCD */ ori $a1, $a1, 0xCCCD ## $a1 = 3DCCCCCD -/* 00114 80A9F0F4 AE180028 */ sw $t8, 0x0028($s0) ## 00000028 -/* 00118 80A9F0F8 8E390910 */ lw $t9, 0x0910($s1) ## 00000910 -/* 0011C 80A9F0FC E60001AC */ swc1 $f0, 0x01AC($s0) ## 000001AC -/* 00120 80A9F100 E60001BC */ swc1 $f0, 0x01BC($s0) ## 000001BC -/* 00124 80A9F104 AE19002C */ sw $t9, 0x002C($s0) ## 0000002C -/* 00128 80A9F108 862800B6 */ lh $t0, 0x00B6($s1) ## 000000B6 -/* 0012C 80A9F10C A20A0003 */ sb $t2, 0x0003($s0) ## 00000003 -/* 00130 80A9F110 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00134 80A9F114 01014821 */ addu $t1, $t0, $at -/* 00138 80A9F118 0C00B58B */ jal Actor_SetScale - -/* 0013C 80A9F11C A60900B6 */ sh $t1, 0x00B6($s0) ## 000000B6 -/* 00140 80A9F120 A20001CA */ sb $zero, 0x01CA($s0) ## 000001CA -/* 00144 80A9F124 8E2B0680 */ lw $t3, 0x0680($s1) ## 00000680 -/* 00148 80A9F128 3C028016 */ lui $v0, %hi(gSaveContext) -/* 0014C 80A9F12C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00150 80A9F130 000B6380 */ sll $t4, $t3, 14 -/* 00154 80A9F134 05810054 */ bgez $t4, .L80A9F288 -/* 00158 80A9F138 3C0580AA */ lui $a1, %hi(func_80A9F408) ## $a1 = 80AA0000 -/* 0015C 80A9F13C 2442E660 */ addiu $v0, %lo(gSaveContext) -/* 00160 80A9F140 904D003A */ lbu $t5, 0x003A($v0) ## 8015E69A -/* 00164 80A9F144 11A0000E */ beq $t5, $zero, .L80A9F180 -/* 00168 80A9F148 00000000 */ nop -/* 0016C 80A9F14C 844E13F0 */ lh $t6, 0x13F0($v0) ## 8015FA50 -/* 00170 80A9F150 15C0000B */ bne $t6, $zero, .L80A9F180 -/* 00174 80A9F154 00000000 */ nop -/* 00178 80A9F158 8602001C */ lh $v0, 0x001C($s0) ## 0000001C -/* 0017C 80A9F15C 8FA40044 */ lw $a0, 0x0044($sp) -/* 00180 80A9F160 00003025 */ or $a2, $zero, $zero ## $a2 = 00000000 -/* 00184 80A9F164 3042FF00 */ andi $v0, $v0, 0xFF00 ## $v0 = 0000E600 -/* 00188 80A9F168 00021203 */ sra $v0, $v0, 8 -/* 0018C 80A9F16C 1040001D */ beq $v0, $zero, .L80A9F1E4 -/* 00190 80A9F170 00022C00 */ sll $a1, $v0, 16 -/* 00194 80A9F174 0C021DC2 */ jal func_80087708 -/* 00198 80A9F178 00052C03 */ sra $a1, $a1, 16 -/* 0019C 80A9F17C 14400019 */ bne $v0, $zero, .L80A9F1E4 -.L80A9F180: -/* 001A0 80A9F180 3C078013 */ lui $a3, %hi(D_801333E0) -/* 001A4 80A9F184 3C0F8013 */ lui $t7, %hi(D_801333E8) -/* 001A8 80A9F188 24E733E0 */ addiu $a3, %lo(D_801333E0) -/* 001AC 80A9F18C 25EF33E8 */ addiu $t7, %lo(D_801333E8) -/* 001B0 80A9F190 262500E4 */ addiu $a1, $s1, 0x00E4 ## $a1 = 000000E4 -/* 001B4 80A9F194 AFA50030 */ sw $a1, 0x0030($sp) -/* 001B8 80A9F198 AFAF0014 */ sw $t7, 0x0014($sp) -/* 001BC 80A9F19C AFA70010 */ sw $a3, 0x0010($sp) -/* 001C0 80A9F1A0 24041823 */ addiu $a0, $zero, 0x1823 ## $a0 = 00001823 -/* 001C4 80A9F1A4 0C03DCE3 */ jal Audio_PlaySoundGeneral - -/* 001C8 80A9F1A8 24060004 */ addiu $a2, $zero, 0x0004 ## $a2 = 00000004 -/* 001CC 80A9F1AC 3C078013 */ lui $a3, %hi(D_801333E0) -/* 001D0 80A9F1B0 3C188013 */ lui $t8, %hi(D_801333E8) -/* 001D4 80A9F1B4 24E733E0 */ addiu $a3, %lo(D_801333E0) -/* 001D8 80A9F1B8 271833E8 */ addiu $t8, %lo(D_801333E8) -/* 001DC 80A9F1BC 8FA50030 */ lw $a1, 0x0030($sp) -/* 001E0 80A9F1C0 AFB80014 */ sw $t8, 0x0014($sp) -/* 001E4 80A9F1C4 AFA70010 */ sw $a3, 0x0010($sp) -/* 001E8 80A9F1C8 24041818 */ addiu $a0, $zero, 0x1818 ## $a0 = 00001818 -/* 001EC 80A9F1CC 0C03DCE3 */ jal Audio_PlaySoundGeneral - -/* 001F0 80A9F1D0 24060004 */ addiu $a2, $zero, 0x0004 ## $a2 = 00000004 -/* 001F4 80A9F1D4 0C00B55C */ jal Actor_Kill - -/* 001F8 80A9F1D8 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 001FC 80A9F1DC 1000002E */ beq $zero, $zero, .L80A9F298 -/* 00200 80A9F1E0 8FBF002C */ lw $ra, 0x002C($sp) -.L80A9F1E4: -/* 00204 80A9F1E4 8E390680 */ lw $t9, 0x0680($s1) ## 00000680 -/* 00208 80A9F1E8 3C01FFFD */ lui $at, 0xFFFD ## $at = FFFD0000 -/* 0020C 80A9F1EC 3421FFFF */ ori $at, $at, 0xFFFF ## $at = FFFDFFFF -/* 00210 80A9F1F0 03214024 */ and $t0, $t9, $at -/* 00214 80A9F1F4 AE280680 */ sw $t0, 0x0680($s1) ## 00000680 -/* 00218 80A9F1F8 920201C7 */ lbu $v0, 0x01C7($s0) ## 000001C7 -/* 0021C 80A9F1FC 24030001 */ addiu $v1, $zero, 0x0001 ## $v1 = 00000001 -/* 00220 80A9F200 3C0A80AA */ lui $t2, %hi(D_80AA044C) ## $t2 = 80AA0000 -/* 00224 80A9F204 00024880 */ sll $t1, $v0, 2 -/* 00228 80A9F208 A20301CA */ sb $v1, 0x01CA($s0) ## 000001CA -/* 0022C 80A9F20C 01495021 */ addu $t2, $t2, $t1 -/* 00230 80A9F210 8D4A044C */ lw $t2, %lo(D_80AA044C)($t2) -/* 00234 80A9F214 24010001 */ addiu $at, $zero, 0x0001 ## $at = 00000001 -/* 00238 80A9F218 A20301C6 */ sb $v1, 0x01C6($s0) ## 000001C6 -/* 0023C 80A9F21C 14410004 */ bne $v0, $at, .L80A9F230 -/* 00240 80A9F220 AE0A0164 */ sw $t2, 0x0164($s0) ## 00000164 -/* 00244 80A9F224 240B0002 */ addiu $t3, $zero, 0x0002 ## $t3 = 00000002 -/* 00248 80A9F228 10000003 */ beq $zero, $zero, .L80A9F238 -/* 0024C 80A9F22C A20B01C9 */ sb $t3, 0x01C9($s0) ## 000001C9 -.L80A9F230: -/* 00250 80A9F230 240C0004 */ addiu $t4, $zero, 0x0004 ## $t4 = 00000004 -/* 00254 80A9F234 A20C01C9 */ sb $t4, 0x01C9($s0) ## 000001C9 -.L80A9F238: -/* 00258 80A9F238 3C0580AA */ lui $a1, %hi(func_80A9F9B4) ## $a1 = 80AA0000 -/* 0025C 80A9F23C 24A5F9B4 */ addiu $a1, $a1, %lo(func_80A9F9B4) ## $a1 = 80A9F9B4 -/* 00260 80A9F240 0C2A7BF8 */ jal func_80A9EFE0 -/* 00264 80A9F244 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00268 80A9F248 3C078013 */ lui $a3, %hi(D_801333E0) -/* 0026C 80A9F24C 240D0008 */ addiu $t5, $zero, 0x0008 ## $t5 = 00000008 -/* 00270 80A9F250 3C0E8013 */ lui $t6, %hi(D_801333E8) -/* 00274 80A9F254 24E733E0 */ addiu $a3, %lo(D_801333E0) -/* 00278 80A9F258 A60D01C4 */ sh $t5, 0x01C4($s0) ## 000001C4 -/* 0027C 80A9F25C 25CE33E8 */ addiu $t6, %lo(D_801333E8) -/* 00280 80A9F260 AFAE0014 */ sw $t6, 0x0014($sp) -/* 00284 80A9F264 AFA70010 */ sw $a3, 0x0010($sp) -/* 00288 80A9F268 2404182E */ addiu $a0, $zero, 0x182E ## $a0 = 0000182E -/* 0028C 80A9F26C 262500E4 */ addiu $a1, $s1, 0x00E4 ## $a1 = 000000E4 -/* 00290 80A9F270 0C03DCE3 */ jal Audio_PlaySoundGeneral - -/* 00294 80A9F274 24060004 */ addiu $a2, $zero, 0x0004 ## $a2 = 00000004 -/* 00298 80A9F278 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000 -/* 0029C 80A9F27C 44812000 */ mtc1 $at, $f4 ## $f4 = 1.00 -/* 002A0 80A9F280 10000003 */ beq $zero, $zero, .L80A9F290 -/* 002A4 80A9F284 E60401AC */ swc1 $f4, 0x01AC($s0) ## 000001AC -.L80A9F288: -/* 002A8 80A9F288 0C2A7BF8 */ jal func_80A9EFE0 -/* 002AC 80A9F28C 24A5F408 */ addiu $a1, $a1, %lo(func_80A9F408) ## $a1 = FFFFF408 -.L80A9F290: -/* 002B0 80A9F290 AE00011C */ sw $zero, 0x011C($s0) ## 0000011C -/* 002B4 80A9F294 8FBF002C */ lw $ra, 0x002C($sp) -.L80A9F298: -/* 002B8 80A9F298 8FB00024 */ lw $s0, 0x0024($sp) -/* 002BC 80A9F29C 8FB10028 */ lw $s1, 0x0028($sp) -/* 002C0 80A9F2A0 03E00008 */ jr $ra -/* 002C4 80A9F2A4 27BD0040 */ addiu $sp, $sp, 0x0040 ## $sp = 00000000 diff --git a/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/EnMThunder_Update.s b/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/EnMThunder_Update.s deleted file mode 100644 index 7e350f00ae..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/EnMThunder_Update.s +++ /dev/null @@ -1,123 +0,0 @@ -glabel EnMThunder_Update -/* 00B3C 80A9FB1C 27BDFFD0 */ addiu $sp, $sp, 0xFFD0 ## $sp = FFFFFFD0 -/* 00B40 80A9FB20 AFB00028 */ sw $s0, 0x0028($sp) -/* 00B44 80A9FB24 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000 -/* 00B48 80A9FB28 AFBF002C */ sw $ra, 0x002C($sp) -/* 00B4C 80A9FB2C AFA50034 */ sw $a1, 0x0034($sp) -/* 00B50 80A9FB30 8E1901C0 */ lw $t9, 0x01C0($s0) ## 000001C0 -/* 00B54 80A9FB34 0320F809 */ jalr $ra, $t9 -/* 00B58 80A9FB38 00000000 */ nop -/* 00B5C 80A9FB3C 8FA40034 */ lw $a0, 0x0034($sp) -/* 00B60 80A9FB40 0C2A7CC5 */ jal func_80A9F314 -/* 00B64 80A9FB44 8E0501BC */ lw $a1, 0x01BC($s0) ## 000001BC -/* 00B68 80A9FB48 C6040024 */ lwc1 $f4, 0x0024($s0) ## 00000024 -/* 00B6C 80A9FB4C 3C01437F */ lui $at, 0x437F ## $at = 437F0000 -/* 00B70 80A9FB50 C60001AC */ lwc1 $f0, 0x01AC($s0) ## 000001AC -/* 00B74 80A9FB54 4600218D */ trunc.w.s $f6, $f4 -/* 00B78 80A9FB58 44812000 */ mtc1 $at, $f4 ## $f4 = 255.00 -/* 00B7C 80A9FB5C C6080028 */ lwc1 $f8, 0x0028($s0) ## 00000028 -/* 00B80 80A9FB60 C610002C */ lwc1 $f16, 0x002C($s0) ## 0000002C -/* 00B84 80A9FB64 44053000 */ mfc1 $a1, $f6 -/* 00B88 80A9FB68 46040182 */ mul.s $f6, $f0, $f4 -/* 00B8C 80A9FB6C 4600428D */ trunc.w.s $f10, $f8 -/* 00B90 80A9FB70 24020001 */ addiu $v0, $zero, 0x0001 ## $v0 = 00000001 -/* 00B94 80A9FB74 00052C00 */ sll $a1, $a1, 16 -/* 00B98 80A9FB78 00052C03 */ sra $a1, $a1, 16 -/* 00B9C 80A9FB7C 44065000 */ mfc1 $a2, $f10 -/* 00BA0 80A9FB80 4600848D */ trunc.w.s $f18, $f16 -/* 00BA4 80A9FB84 3C014F00 */ lui $at, 0x4F00 ## $at = 4F000000 -/* 00BA8 80A9FB88 00063400 */ sll $a2, $a2, 16 -/* 00BAC 80A9FB8C 00063403 */ sra $a2, $a2, 16 -/* 00BB0 80A9FB90 4448F800 */ cfc1 $t0, $31 -/* 00BB4 80A9FB94 44C2F800 */ ctc1 $v0, $31 -/* 00BB8 80A9FB98 44079000 */ mfc1 $a3, $f18 -/* 00BBC 80A9FB9C 2604019C */ addiu $a0, $s0, 0x019C ## $a0 = 0000019C -/* 00BC0 80A9FBA0 46003224 */ cvt.w.s $f8, $f6 -/* 00BC4 80A9FBA4 00073C00 */ sll $a3, $a3, 16 -/* 00BC8 80A9FBA8 00073C03 */ sra $a3, $a3, 16 -/* 00BCC 80A9FBAC 4442F800 */ cfc1 $v0, $31 -/* 00BD0 80A9FBB0 00000000 */ nop -/* 00BD4 80A9FBB4 30420078 */ andi $v0, $v0, 0x0078 ## $v0 = 00000000 -/* 00BD8 80A9FBB8 50400013 */ beql $v0, $zero, .L80A9FC08 -/* 00BDC 80A9FBBC 44024000 */ mfc1 $v0, $f8 -/* 00BE0 80A9FBC0 44814000 */ mtc1 $at, $f8 ## $f8 = 2147483648.00 -/* 00BE4 80A9FBC4 24020001 */ addiu $v0, $zero, 0x0001 ## $v0 = 00000001 -/* 00BE8 80A9FBC8 46083201 */ sub.s $f8, $f6, $f8 -/* 00BEC 80A9FBCC 44C2F800 */ ctc1 $v0, $31 -/* 00BF0 80A9FBD0 00000000 */ nop -/* 00BF4 80A9FBD4 46004224 */ cvt.w.s $f8, $f8 -/* 00BF8 80A9FBD8 4442F800 */ cfc1 $v0, $31 -/* 00BFC 80A9FBDC 00000000 */ nop -/* 00C00 80A9FBE0 30420078 */ andi $v0, $v0, 0x0078 ## $v0 = 00000000 -/* 00C04 80A9FBE4 14400005 */ bne $v0, $zero, .L80A9FBFC -/* 00C08 80A9FBE8 00000000 */ nop -/* 00C0C 80A9FBEC 44024000 */ mfc1 $v0, $f8 -/* 00C10 80A9FBF0 3C018000 */ lui $at, 0x8000 ## $at = 80000000 -/* 00C14 80A9FBF4 10000007 */ beq $zero, $zero, .L80A9FC14 -/* 00C18 80A9FBF8 00411025 */ or $v0, $v0, $at ## $v0 = 80000000 -.L80A9FBFC: -/* 00C1C 80A9FBFC 10000005 */ beq $zero, $zero, .L80A9FC14 -/* 00C20 80A9FC00 2402FFFF */ addiu $v0, $zero, 0xFFFF ## $v0 = FFFFFFFF -/* 00C24 80A9FC04 44024000 */ mfc1 $v0, $f8 -.L80A9FC08: -/* 00C28 80A9FC08 00000000 */ nop -/* 00C2C 80A9FC0C 0440FFFB */ bltz $v0, .L80A9FBFC -/* 00C30 80A9FC10 00000000 */ nop -.L80A9FC14: -/* 00C34 80A9FC14 3C0142C8 */ lui $at, 0x42C8 ## $at = 42C80000 -/* 00C38 80A9FC18 44C8F800 */ ctc1 $t0, $31 -/* 00C3C 80A9FC1C 44815000 */ mtc1 $at, $f10 ## $f10 = 100.00 -/* 00C40 80A9FC20 240A0001 */ addiu $t2, $zero, 0x0001 ## $t2 = 00000001 -/* 00C44 80A9FC24 304200FF */ andi $v0, $v0, 0x00FF ## $v0 = 000000FF -/* 00C48 80A9FC28 460A0402 */ mul.s $f16, $f0, $f10 -/* 00C4C 80A9FC2C AFA20010 */ sw $v0, 0x0010($sp) -/* 00C50 80A9FC30 AFA20014 */ sw $v0, 0x0014($sp) -/* 00C54 80A9FC34 3C014F00 */ lui $at, 0x4F00 ## $at = 4F000000 -/* 00C58 80A9FC38 4449F800 */ cfc1 $t1, $31 -/* 00C5C 80A9FC3C 44CAF800 */ ctc1 $t2, $31 -/* 00C60 80A9FC40 00000000 */ nop -/* 00C64 80A9FC44 460084A4 */ cvt.w.s $f18, $f16 -/* 00C68 80A9FC48 444AF800 */ cfc1 $t2, $31 -/* 00C6C 80A9FC4C 00000000 */ nop -/* 00C70 80A9FC50 314A0078 */ andi $t2, $t2, 0x0078 ## $t2 = 00000000 -/* 00C74 80A9FC54 51400013 */ beql $t2, $zero, .L80A9FCA4 -/* 00C78 80A9FC58 440A9000 */ mfc1 $t2, $f18 -/* 00C7C 80A9FC5C 44819000 */ mtc1 $at, $f18 ## $f18 = 2147483648.00 -/* 00C80 80A9FC60 240A0001 */ addiu $t2, $zero, 0x0001 ## $t2 = 00000001 -/* 00C84 80A9FC64 46128481 */ sub.s $f18, $f16, $f18 -/* 00C88 80A9FC68 44CAF800 */ ctc1 $t2, $31 -/* 00C8C 80A9FC6C 00000000 */ nop -/* 00C90 80A9FC70 460094A4 */ cvt.w.s $f18, $f18 -/* 00C94 80A9FC74 444AF800 */ cfc1 $t2, $31 -/* 00C98 80A9FC78 00000000 */ nop -/* 00C9C 80A9FC7C 314A0078 */ andi $t2, $t2, 0x0078 ## $t2 = 00000000 -/* 00CA0 80A9FC80 15400005 */ bne $t2, $zero, .L80A9FC98 -/* 00CA4 80A9FC84 00000000 */ nop -/* 00CA8 80A9FC88 440A9000 */ mfc1 $t2, $f18 -/* 00CAC 80A9FC8C 3C018000 */ lui $at, 0x8000 ## $at = 80000000 -/* 00CB0 80A9FC90 10000007 */ beq $zero, $zero, .L80A9FCB0 -/* 00CB4 80A9FC94 01415025 */ or $t2, $t2, $at ## $t2 = 80000000 -.L80A9FC98: -/* 00CB8 80A9FC98 10000005 */ beq $zero, $zero, .L80A9FCB0 -/* 00CBC 80A9FC9C 240AFFFF */ addiu $t2, $zero, 0xFFFF ## $t2 = FFFFFFFF -/* 00CC0 80A9FCA0 440A9000 */ mfc1 $t2, $f18 -.L80A9FCA4: -/* 00CC4 80A9FCA4 00000000 */ nop -/* 00CC8 80A9FCA8 0540FFFB */ bltz $t2, .L80A9FC98 -/* 00CCC 80A9FCAC 00000000 */ nop -.L80A9FCB0: -/* 00CD0 80A9FCB0 3C014448 */ lui $at, 0x4448 ## $at = 44480000 -/* 00CD4 80A9FCB4 44812000 */ mtc1 $at, $f4 ## $f4 = 800.00 -/* 00CD8 80A9FCB8 44C9F800 */ ctc1 $t1, $31 -/* 00CDC 80A9FCBC AFAA0018 */ sw $t2, 0x0018($sp) -/* 00CE0 80A9FCC0 46040182 */ mul.s $f6, $f0, $f4 -/* 00CE4 80A9FCC4 4600320D */ trunc.w.s $f8, $f6 -/* 00CE8 80A9FCC8 440C4000 */ mfc1 $t4, $f8 -/* 00CEC 80A9FCCC 0C01E763 */ jal Lights_PointNoGlowSetInfo - -/* 00CF0 80A9FCD0 AFAC001C */ sw $t4, 0x001C($sp) -/* 00CF4 80A9FCD4 8FBF002C */ lw $ra, 0x002C($sp) -/* 00CF8 80A9FCD8 8FB00028 */ lw $s0, 0x0028($sp) -/* 00CFC 80A9FCDC 27BD0030 */ addiu $sp, $sp, 0x0030 ## $sp = 00000000 -/* 00D00 80A9FCE0 03E00008 */ jr $ra -/* 00D04 80A9FCE4 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9EFE0.s b/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9EFE0.s deleted file mode 100644 index bb6d79b69d..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9EFE0.s +++ /dev/null @@ -1,3 +0,0 @@ -glabel func_80A9EFE0 -/* 00000 80A9EFE0 03E00008 */ jr $ra -/* 00004 80A9EFE4 AC8501C0 */ sw $a1, 0x01C0($a0) ## 000001C0 diff --git a/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F314.s b/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F314.s deleted file mode 100644 index 3c18811651..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F314.s +++ /dev/null @@ -1,16 +0,0 @@ -glabel func_80A9F314 -/* 00334 80A9F314 44856000 */ mtc1 $a1, $f12 ## $f12 = 0.00 -/* 00338 80A9F318 44802000 */ mtc1 $zero, $f4 ## $f4 = 0.00 -/* 0033C 80A9F31C 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0 -/* 00340 80A9F320 AFBF001C */ sw $ra, 0x001C($sp) -/* 00344 80A9F324 3C064454 */ lui $a2, 0x4454 ## $a2 = 44540000 -/* 00348 80A9F328 3C073E4C */ lui $a3, 0x3E4C ## $a3 = 3E4C0000 -/* 0034C 80A9F32C 44056000 */ mfc1 $a1, $f12 -/* 00350 80A9F330 34E7CCCD */ ori $a3, $a3, 0xCCCD ## $a3 = 3E4CCCCD -/* 00354 80A9F334 34C68000 */ ori $a2, $a2, 0x8000 ## $a2 = 44548000 -/* 00358 80A9F338 0C01DCEA */ jal func_800773A8 -/* 0035C 80A9F33C E7A40010 */ swc1 $f4, 0x0010($sp) -/* 00360 80A9F340 8FBF001C */ lw $ra, 0x001C($sp) -/* 00364 80A9F344 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000 -/* 00368 80A9F348 03E00008 */ jr $ra -/* 0036C 80A9F34C 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F350.s b/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F350.s deleted file mode 100644 index 6b51fff68b..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F350.s +++ /dev/null @@ -1,54 +0,0 @@ -glabel func_80A9F350 -/* 00370 80A9F350 27BDFFD8 */ addiu $sp, $sp, 0xFFD8 ## $sp = FFFFFFD8 -/* 00374 80A9F354 AFBF001C */ sw $ra, 0x001C($sp) -/* 00378 80A9F358 AFA40028 */ sw $a0, 0x0028($sp) -/* 0037C 80A9F35C 8CA21C44 */ lw $v0, 0x1C44($a1) ## 00001C44 -/* 00380 80A9F360 8C4E0680 */ lw $t6, 0x0680($v0) ## 00000680 -/* 00384 80A9F364 000E7B80 */ sll $t7, $t6, 14 -/* 00388 80A9F368 05E3001E */ bgezl $t7, .L80A9F3E4 -/* 0038C 80A9F36C 8C49067C */ lw $t1, 0x067C($v0) ## 0000067C -/* 00390 80A9F370 80580842 */ lb $t8, 0x0842($v0) ## 00000842 -/* 00394 80A9F374 3C078013 */ lui $a3, %hi(D_801333E0) -/* 00398 80A9F378 24E733E0 */ addiu $a3, %lo(D_801333E0) -/* 0039C 80A9F37C 2B010018 */ slti $at, $t8, 0x0018 -/* 003A0 80A9F380 14200013 */ bne $at, $zero, .L80A9F3D0 -/* 003A4 80A9F384 24041823 */ addiu $a0, $zero, 0x1823 ## $a0 = 00001823 -/* 003A8 80A9F388 3C198013 */ lui $t9, %hi(D_801333E8) -/* 003AC 80A9F38C 273933E8 */ addiu $t9, %lo(D_801333E8) -/* 003B0 80A9F390 244500E4 */ addiu $a1, $v0, 0x00E4 ## $a1 = 000000E4 -/* 003B4 80A9F394 AFA50020 */ sw $a1, 0x0020($sp) -/* 003B8 80A9F398 AFB90014 */ sw $t9, 0x0014($sp) -/* 003BC 80A9F39C 24060004 */ addiu $a2, $zero, 0x0004 ## $a2 = 00000004 -/* 003C0 80A9F3A0 0C03DCE3 */ jal Audio_PlaySoundGeneral - -/* 003C4 80A9F3A4 AFA70010 */ sw $a3, 0x0010($sp) -/* 003C8 80A9F3A8 3C078013 */ lui $a3, %hi(D_801333E0) -/* 003CC 80A9F3AC 3C088013 */ lui $t0, %hi(D_801333E8) -/* 003D0 80A9F3B0 24E733E0 */ addiu $a3, %lo(D_801333E0) -/* 003D4 80A9F3B4 250833E8 */ addiu $t0, %lo(D_801333E8) -/* 003D8 80A9F3B8 8FA50020 */ lw $a1, 0x0020($sp) -/* 003DC 80A9F3BC AFA80014 */ sw $t0, 0x0014($sp) -/* 003E0 80A9F3C0 AFA70010 */ sw $a3, 0x0010($sp) -/* 003E4 80A9F3C4 24041818 */ addiu $a0, $zero, 0x1818 ## $a0 = 00001818 -/* 003E8 80A9F3C8 0C03DCE3 */ jal Audio_PlaySoundGeneral - -/* 003EC 80A9F3CC 24060004 */ addiu $a2, $zero, 0x0004 ## $a2 = 00000004 -.L80A9F3D0: -/* 003F0 80A9F3D0 0C00B55C */ jal Actor_Kill - -/* 003F4 80A9F3D4 8FA40028 */ lw $a0, 0x0028($sp) -/* 003F8 80A9F3D8 10000008 */ beq $zero, $zero, .L80A9F3FC -/* 003FC 80A9F3DC 8FBF001C */ lw $ra, 0x001C($sp) -/* 00400 80A9F3E0 8C49067C */ lw $t1, 0x067C($v0) ## 0000067C -.L80A9F3E4: -/* 00404 80A9F3E4 312A1000 */ andi $t2, $t1, 0x1000 ## $t2 = 00000000 -/* 00408 80A9F3E8 55400004 */ bnel $t2, $zero, .L80A9F3FC -/* 0040C 80A9F3EC 8FBF001C */ lw $ra, 0x001C($sp) -/* 00410 80A9F3F0 0C00B55C */ jal Actor_Kill - -/* 00414 80A9F3F4 8FA40028 */ lw $a0, 0x0028($sp) -/* 00418 80A9F3F8 8FBF001C */ lw $ra, 0x001C($sp) -.L80A9F3FC: -/* 0041C 80A9F3FC 27BD0028 */ addiu $sp, $sp, 0x0028 ## $sp = 00000000 -/* 00420 80A9F400 03E00008 */ jr $ra -/* 00424 80A9F404 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F408.s b/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F408.s deleted file mode 100644 index 51b049e24f..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F408.s +++ /dev/null @@ -1,395 +0,0 @@ -.late_rodata -glabel D_80AA04E0 - .float 0.1 - -glabel D_80AA04E4 - .float 0.1 - -glabel D_80AA04E8 - .float 0.15 - -glabel D_80AA04EC - .float 0.1 - -glabel D_80AA04F0 - .float 0.85 - -glabel D_80AA04F4 - .float 0.15 - -glabel D_80AA04F8 - .float 0.15 - -glabel D_80AA04FC - .float 0.1 - -glabel D_80AA0500 - .float 0.85 - -glabel D_80AA0504 - .float 0.1 - -.text -glabel func_80A9F408 -/* 00428 80A9F408 27BDFFB0 */ addiu $sp, $sp, 0xFFB0 ## $sp = FFFFFFB0 -/* 0042C 80A9F40C AFBF003C */ sw $ra, 0x003C($sp) -/* 00430 80A9F410 AFB00038 */ sw $s0, 0x0038($sp) -/* 00434 80A9F414 AFA50054 */ sw $a1, 0x0054($sp) -/* 00438 80A9F418 8CA31C44 */ lw $v1, 0x1C44($a1) ## 00001C44 -/* 0043C 80A9F41C 908A01CA */ lbu $t2, 0x01CA($a0) ## 000001CA -/* 00440 80A9F420 34018000 */ ori $at, $zero, 0x8000 ## $at = 00008000 -/* 00444 80A9F424 C4640858 */ lwc1 $f4, 0x0858($v1) ## 00000858 -/* 00448 80A9F428 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000 -/* 0044C 80A9F42C 8C88011C */ lw $t0, 0x011C($a0) ## 0000011C -/* 00450 80A9F430 E48401B8 */ swc1 $f4, 0x01B8($a0) ## 000001B8 -/* 00454 80A9F434 8C780908 */ lw $t8, 0x0908($v1) ## 00000908 -/* 00458 80A9F438 AC980024 */ sw $t8, 0x0024($a0) ## 00000024 -/* 0045C 80A9F43C 8C6F090C */ lw $t7, 0x090C($v1) ## 0000090C -/* 00460 80A9F440 AC8F0028 */ sw $t7, 0x0028($a0) ## 00000028 -/* 00464 80A9F444 8C780910 */ lw $t8, 0x0910($v1) ## 00000910 -/* 00468 80A9F448 AC98002C */ sw $t8, 0x002C($a0) ## 0000002C -/* 0046C 80A9F44C 847900B6 */ lh $t9, 0x00B6($v1) ## 000000B6 -/* 00470 80A9F450 03214821 */ addu $t1, $t9, $at -/* 00474 80A9F454 15400029 */ bne $t2, $zero, .L80A9F4FC -/* 00478 80A9F458 A48900B6 */ sh $t1, 0x00B6($a0) ## 000000B6 -/* 0047C 80A9F45C 3C0180AA */ lui $at, %hi(D_80AA04E0) ## $at = 80AA0000 -/* 00480 80A9F460 C42804E0 */ lwc1 $f8, %lo(D_80AA04E0)($at) -/* 00484 80A9F464 C4660858 */ lwc1 $f6, 0x0858($v1) ## 00000858 -/* 00488 80A9F468 3C0B8016 */ lui $t3, %hi(gSaveContext+0x13f0) -/* 0048C 80A9F46C 4606403E */ c.le.s $f8, $f6 -/* 00490 80A9F470 00000000 */ nop -/* 00494 80A9F474 45000021 */ bc1f .L80A9F4FC -/* 00498 80A9F478 00000000 */ nop -/* 0049C 80A9F47C 856BFA50 */ lh $t3, %lo(gSaveContext+0x13f0)($t3) -/* 004A0 80A9F480 55600010 */ bnel $t3, $zero, .L80A9F4C4 -/* 004A4 80A9F484 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 004A8 80A9F488 8482001C */ lh $v0, 0x001C($a0) ## 0000001C -/* 004AC 80A9F48C 8FA40054 */ lw $a0, 0x0054($sp) -/* 004B0 80A9F490 24060004 */ addiu $a2, $zero, 0x0004 ## $a2 = 00000004 -/* 004B4 80A9F494 3042FF00 */ andi $v0, $v0, 0xFF00 ## $v0 = 00000000 -/* 004B8 80A9F498 00021203 */ sra $v0, $v0, 8 -/* 004BC 80A9F49C 10400015 */ beq $v0, $zero, .L80A9F4F4 -/* 004C0 80A9F4A0 00022C00 */ sll $a1, $v0, 16 -/* 004C4 80A9F4A4 00052C03 */ sra $a1, $a1, 16 -/* 004C8 80A9F4A8 AFA3004C */ sw $v1, 0x004C($sp) -/* 004CC 80A9F4AC 0C021DC2 */ jal func_80087708 -/* 004D0 80A9F4B0 AFA80048 */ sw $t0, 0x0048($sp) -/* 004D4 80A9F4B4 8FA3004C */ lw $v1, 0x004C($sp) -/* 004D8 80A9F4B8 1440000E */ bne $v0, $zero, .L80A9F4F4 -/* 004DC 80A9F4BC 8FA80048 */ lw $t0, 0x0048($sp) -/* 004E0 80A9F4C0 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -.L80A9F4C4: -/* 004E4 80A9F4C4 0C2A7CD4 */ jal func_80A9F350 -/* 004E8 80A9F4C8 8FA50054 */ lw $a1, 0x0054($sp) -/* 004EC 80A9F4CC 3C0580AA */ lui $a1, %hi(func_80A9F350) ## $a1 = 80AA0000 -/* 004F0 80A9F4D0 24A5F350 */ addiu $a1, $a1, %lo(func_80A9F350) ## $a1 = 80A9F350 -/* 004F4 80A9F4D4 0C2A7BF8 */ jal func_80A9EFE0 -/* 004F8 80A9F4D8 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 004FC 80A9F4DC 44805000 */ mtc1 $zero, $f10 ## $f10 = 0.00 -/* 00500 80A9F4E0 44808000 */ mtc1 $zero, $f16 ## $f16 = 0.00 -/* 00504 80A9F4E4 A20001C8 */ sb $zero, 0x01C8($s0) ## 000001C8 -/* 00508 80A9F4E8 E60A01BC */ swc1 $f10, 0x01BC($s0) ## 000001BC -/* 0050C 80A9F4EC 1000010D */ beq $zero, $zero, .L80A9F924 -/* 00510 80A9F4F0 E61001AC */ swc1 $f16, 0x01AC($s0) ## 000001AC -.L80A9F4F4: -/* 00514 80A9F4F4 240C0001 */ addiu $t4, $zero, 0x0001 ## $t4 = 00000001 -/* 00518 80A9F4F8 A20C01CA */ sb $t4, 0x01CA($s0) ## 000001CA -.L80A9F4FC: -/* 0051C 80A9F4FC 3C0180AA */ lui $at, %hi(D_80AA04E4) ## $at = 80AA0000 -/* 00520 80A9F500 C43204E4 */ lwc1 $f18, %lo(D_80AA04E4)($at) -/* 00524 80A9F504 C4600858 */ lwc1 $f0, 0x0858($v1) ## 00000858 -/* 00528 80A9F508 3C014316 */ lui $at, 0x4316 ## $at = 43160000 -/* 0052C 80A9F50C 4600903E */ c.le.s $f18, $f0 -/* 00530 80A9F510 00000000 */ nop -/* 00534 80A9F514 45020010 */ bc1fl .L80A9F558 -/* 00538 80A9F518 8C6E0680 */ lw $t6, 0x0680($v1) ## 00000680 -/* 0053C 80A9F51C 44812000 */ mtc1 $at, $f4 ## $f4 = 150.00 -/* 00540 80A9F520 44806000 */ mtc1 $zero, $f12 ## $f12 = 0.00 -/* 00544 80A9F524 24060002 */ addiu $a2, $zero, 0x0002 ## $a2 = 00000002 -/* 00548 80A9F528 46040182 */ mul.s $f6, $f0, $f4 -/* 0054C 80A9F52C AFA3004C */ sw $v1, 0x004C($sp) -/* 00550 80A9F530 AFA80048 */ sw $t0, 0x0048($sp) -/* 00554 80A9F534 4600320D */ trunc.w.s $f8, $f6 -/* 00558 80A9F538 44054000 */ mfc1 $a1, $f8 -/* 0055C 80A9F53C 00000000 */ nop -/* 00560 80A9F540 30A500FF */ andi $a1, $a1, 0x00FF ## $a1 = 00000000 -/* 00564 80A9F544 0C02A800 */ jal func_800AA000 -/* 00568 80A9F548 30A700FF */ andi $a3, $a1, 0x00FF ## $a3 = 00000000 -/* 0056C 80A9F54C 8FA3004C */ lw $v1, 0x004C($sp) -/* 00570 80A9F550 8FA80048 */ lw $t0, 0x0048($sp) -/* 00574 80A9F554 8C6E0680 */ lw $t6, 0x0680($v1) ## 00000680 -.L80A9F558: -/* 00578 80A9F558 3C0180AA */ lui $at, %hi(D_80AA04E8) ## $at = 80AA0000 -/* 0057C 80A9F55C 000E7B80 */ sll $t7, $t6, 14 -/* 00580 80A9F560 05E3007A */ bgezl $t7, .L80A9F74C -/* 00584 80A9F564 8C6B067C */ lw $t3, 0x067C($v1) ## 0000067C -/* 00588 80A9F568 11000005 */ beq $t0, $zero, .L80A9F580 -/* 0058C 80A9F56C 3C0580AA */ lui $a1, %hi(func_80A9F9B4) ## $a1 = 80AA0000 -/* 00590 80A9F570 8D180130 */ lw $t8, 0x0130($t0) ## 00000130 -/* 00594 80A9F574 13000002 */ beq $t8, $zero, .L80A9F580 -/* 00598 80A9F578 00000000 */ nop -/* 0059C 80A9F57C AD000118 */ sw $zero, 0x0118($t0) ## 00000118 -.L80A9F580: -/* 005A0 80A9F580 C42C04E8 */ lwc1 $f12, %lo(D_80AA04E8)($at) -/* 005A4 80A9F584 C4600858 */ lwc1 $f0, 0x0858($v1) ## 00000858 -/* 005A8 80A9F588 3C0180AA */ lui $at, %hi(D_80AA04EC) ## $at = 80AA0000 -/* 005AC 80A9F58C 24A5F9B4 */ addiu $a1, $a1, %lo(func_80A9F9B4) ## $a1 = 80A9F9B4 -/* 005B0 80A9F590 460C003E */ c.le.s $f0, $f12 -/* 005B4 80A9F594 00000000 */ nop -/* 005B8 80A9F598 45020023 */ bc1fl .L80A9F628 -/* 005BC 80A9F59C 8C6B0680 */ lw $t3, 0x0680($v1) ## 00000680 -/* 005C0 80A9F5A0 C42A04EC */ lwc1 $f10, %lo(D_80AA04EC)($at) -/* 005C4 80A9F5A4 4600503E */ c.le.s $f10, $f0 -/* 005C8 80A9F5A8 00000000 */ nop -/* 005CC 80A9F5AC 45000019 */ bc1f .L80A9F614 -/* 005D0 80A9F5B0 00000000 */ nop -/* 005D4 80A9F5B4 80790842 */ lb $t9, 0x0842($v1) ## 00000842 -/* 005D8 80A9F5B8 3C078013 */ lui $a3, %hi(D_801333E0) -/* 005DC 80A9F5BC 24E733E0 */ addiu $a3, %lo(D_801333E0) -/* 005E0 80A9F5C0 2B210018 */ slti $at, $t9, 0x0018 -/* 005E4 80A9F5C4 14200013 */ bne $at, $zero, .L80A9F614 -/* 005E8 80A9F5C8 24041823 */ addiu $a0, $zero, 0x1823 ## $a0 = 00001823 -/* 005EC 80A9F5CC 3C098013 */ lui $t1, %hi(D_801333E8) -/* 005F0 80A9F5D0 252933E8 */ addiu $t1, %lo(D_801333E8) -/* 005F4 80A9F5D4 246500E4 */ addiu $a1, $v1, 0x00E4 ## $a1 = 000000E4 -/* 005F8 80A9F5D8 AFA50044 */ sw $a1, 0x0044($sp) -/* 005FC 80A9F5DC AFA90014 */ sw $t1, 0x0014($sp) -/* 00600 80A9F5E0 24060004 */ addiu $a2, $zero, 0x0004 ## $a2 = 00000004 -/* 00604 80A9F5E4 0C03DCE3 */ jal Audio_PlaySoundGeneral - -/* 00608 80A9F5E8 AFA70010 */ sw $a3, 0x0010($sp) -/* 0060C 80A9F5EC 3C078013 */ lui $a3, %hi(D_801333E0) -/* 00610 80A9F5F0 3C0A8013 */ lui $t2, %hi(D_801333E8) -/* 00614 80A9F5F4 24E733E0 */ addiu $a3, %lo(D_801333E0) -/* 00618 80A9F5F8 254A33E8 */ addiu $t2, %lo(D_801333E8) -/* 0061C 80A9F5FC 8FA50044 */ lw $a1, 0x0044($sp) -/* 00620 80A9F600 AFAA0014 */ sw $t2, 0x0014($sp) -/* 00624 80A9F604 AFA70010 */ sw $a3, 0x0010($sp) -/* 00628 80A9F608 24041818 */ addiu $a0, $zero, 0x1818 ## $a0 = 00001818 -/* 0062C 80A9F60C 0C03DCE3 */ jal Audio_PlaySoundGeneral - -/* 00630 80A9F610 24060004 */ addiu $a2, $zero, 0x0004 ## $a2 = 00000004 -.L80A9F614: -/* 00634 80A9F614 0C00B55C */ jal Actor_Kill - -/* 00638 80A9F618 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 0063C 80A9F61C 100000C2 */ beq $zero, $zero, .L80A9F928 -/* 00640 80A9F620 8FBF003C */ lw $ra, 0x003C($sp) -/* 00644 80A9F624 8C6B0680 */ lw $t3, 0x0680($v1) ## 00000680 -.L80A9F628: -/* 00648 80A9F628 3C01FFFD */ lui $at, 0xFFFD ## $at = FFFD0000 -/* 0064C 80A9F62C 3421FFFF */ ori $at, $at, 0xFFFF ## $at = FFFDFFFF -/* 00650 80A9F630 01616024 */ and $t4, $t3, $at -/* 00654 80A9F634 AC6C0680 */ sw $t4, 0x0680($v1) ## 00000680 -/* 00658 80A9F638 860D001C */ lh $t5, 0x001C($s0) ## 0000001C -/* 0065C 80A9F63C 24040001 */ addiu $a0, $zero, 0x0001 ## $a0 = 00000001 -/* 00660 80A9F640 3C018016 */ lui $at, %hi(gSaveContext+0x13f0) -/* 00664 80A9F644 31AEFF00 */ andi $t6, $t5, 0xFF00 ## $t6 = 00000000 -/* 00668 80A9F648 000E7A03 */ sra $t7, $t6, 8 -/* 0066C 80A9F64C 11E00002 */ beq $t7, $zero, .L80A9F658 -/* 00670 80A9F650 00000000 */ nop -/* 00674 80A9F654 A424FA50 */ sh $a0, %lo(gSaveContext+0x13f0)($at) -.L80A9F658: -/* 00678 80A9F658 3C0180AA */ lui $at, %hi(D_80AA04F0) ## $at = 80AA0000 -/* 0067C 80A9F65C C43204F0 */ lwc1 $f18, %lo(D_80AA04F0)($at) -/* 00680 80A9F660 C4700858 */ lwc1 $f16, 0x0858($v1) ## 00000858 -/* 00684 80A9F664 24040001 */ addiu $a0, $zero, 0x0001 ## $a0 = 00000001 -/* 00688 80A9F668 4612803C */ c.lt.s $f16, $f18 -/* 0068C 80A9F66C 00000000 */ nop -/* 00690 80A9F670 45020011 */ bc1fl .L80A9F6B8 -/* 00694 80A9F674 920201C7 */ lbu $v0, 0x01C7($s0) ## 000001C7 -/* 00698 80A9F678 920201C7 */ lbu $v0, 0x01C7($s0) ## 000001C7 -/* 0069C 80A9F67C 3C1980AA */ lui $t9, %hi(D_80AA044C) ## $t9 = 80AA0000 -/* 006A0 80A9F680 24090001 */ addiu $t1, $zero, 0x0001 ## $t1 = 00000001 -/* 006A4 80A9F684 0002C080 */ sll $t8, $v0, 2 -/* 006A8 80A9F688 0338C821 */ addu $t9, $t9, $t8 -/* 006AC 80A9F68C 8F39044C */ lw $t9, %lo(D_80AA044C)($t9) -/* 006B0 80A9F690 A20901C6 */ sb $t1, 0x01C6($s0) ## 000001C6 -/* 006B4 80A9F694 14820004 */ bne $a0, $v0, .L80A9F6A8 -/* 006B8 80A9F698 AE190164 */ sw $t9, 0x0164($s0) ## 00000164 -/* 006BC 80A9F69C 240A0002 */ addiu $t2, $zero, 0x0002 ## $t2 = 00000002 -/* 006C0 80A9F6A0 10000011 */ beq $zero, $zero, .L80A9F6E8 -/* 006C4 80A9F6A4 A20A01C9 */ sb $t2, 0x01C9($s0) ## 000001C9 -.L80A9F6A8: -/* 006C8 80A9F6A8 240B0004 */ addiu $t3, $zero, 0x0004 ## $t3 = 00000004 -/* 006CC 80A9F6AC 1000000E */ beq $zero, $zero, .L80A9F6E8 -/* 006D0 80A9F6B0 A20B01C9 */ sb $t3, 0x01C9($s0) ## 000001C9 -/* 006D4 80A9F6B4 920201C7 */ lbu $v0, 0x01C7($s0) ## 000001C7 -.L80A9F6B8: -/* 006D8 80A9F6B8 3C0D80AA */ lui $t5, %hi(D_80AA0458) ## $t5 = 80AA0000 -/* 006DC 80A9F6BC 240F0008 */ addiu $t7, $zero, 0x0008 ## $t7 = 00000008 -/* 006E0 80A9F6C0 00026080 */ sll $t4, $v0, 2 -/* 006E4 80A9F6C4 01AC6821 */ addu $t5, $t5, $t4 -/* 006E8 80A9F6C8 8DAD0458 */ lw $t5, %lo(D_80AA0458)($t5) -/* 006EC 80A9F6CC A20001C6 */ sb $zero, 0x01C6($s0) ## 000001C6 -/* 006F0 80A9F6D0 14820004 */ bne $a0, $v0, .L80A9F6E4 -/* 006F4 80A9F6D4 AE0D0164 */ sw $t5, 0x0164($s0) ## 00000164 -/* 006F8 80A9F6D8 240E0004 */ addiu $t6, $zero, 0x0004 ## $t6 = 00000004 -/* 006FC 80A9F6DC 10000002 */ beq $zero, $zero, .L80A9F6E8 -/* 00700 80A9F6E0 A20E01C9 */ sb $t6, 0x01C9($s0) ## 000001C9 -.L80A9F6E4: -/* 00704 80A9F6E4 A20F01C9 */ sb $t7, 0x01C9($s0) ## 000001C9 -.L80A9F6E8: -/* 00708 80A9F6E8 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 0070C 80A9F6EC 0C2A7BF8 */ jal func_80A9EFE0 -/* 00710 80A9F6F0 AFA3004C */ sw $v1, 0x004C($sp) -/* 00714 80A9F6F4 921901C6 */ lbu $t9, 0x01C6($s0) ## 000001C6 -/* 00718 80A9F6F8 8FA3004C */ lw $v1, 0x004C($sp) -/* 0071C 80A9F6FC 24180008 */ addiu $t8, $zero, 0x0008 ## $t8 = 00000008 -/* 00720 80A9F700 3C078013 */ lui $a3, %hi(D_801333E0) -/* 00724 80A9F704 A61801C4 */ sh $t8, 0x01C4($s0) ## 000001C4 -/* 00728 80A9F708 3C0480AA */ lui $a0, %hi(D_80AA0464) ## $a0 = 80AA0000 -/* 0072C 80A9F70C 3C0A8013 */ lui $t2, %hi(D_801333E8) -/* 00730 80A9F710 00194840 */ sll $t1, $t9, 1 -/* 00734 80A9F714 24E733E0 */ addiu $a3, %lo(D_801333E0) -/* 00738 80A9F718 00892021 */ addu $a0, $a0, $t1 -/* 0073C 80A9F71C 254A33E8 */ addiu $t2, %lo(D_801333E8) -/* 00740 80A9F720 AFAA0014 */ sw $t2, 0x0014($sp) -/* 00744 80A9F724 94840464 */ lhu $a0, %lo(D_80AA0464)($a0) -/* 00748 80A9F728 AFA70010 */ sw $a3, 0x0010($sp) -/* 0074C 80A9F72C 24060004 */ addiu $a2, $zero, 0x0004 ## $a2 = 00000004 -/* 00750 80A9F730 0C03DCE3 */ jal Audio_PlaySoundGeneral - -/* 00754 80A9F734 246500E4 */ addiu $a1, $v1, 0x00E4 ## $a1 = 000000E4 -/* 00758 80A9F738 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000 -/* 0075C 80A9F73C 44812000 */ mtc1 $at, $f4 ## $f4 = 1.00 -/* 00760 80A9F740 10000078 */ beq $zero, $zero, .L80A9F924 -/* 00764 80A9F744 E60401AC */ swc1 $f4, 0x01AC($s0) ## 000001AC -/* 00768 80A9F748 8C6B067C */ lw $t3, 0x067C($v1) ## 0000067C -.L80A9F74C: -/* 0076C 80A9F74C 3C0180AA */ lui $at, %hi(D_80AA04F4) ## $at = 80AA0000 -/* 00770 80A9F750 316C1000 */ andi $t4, $t3, 0x1000 ## $t4 = 00000000 -/* 00774 80A9F754 15800009 */ bne $t4, $zero, .L80A9F77C -/* 00778 80A9F758 00000000 */ nop -/* 0077C 80A9F75C 8E02011C */ lw $v0, 0x011C($s0) ## 0000011C -/* 00780 80A9F760 10400002 */ beq $v0, $zero, .L80A9F76C -/* 00784 80A9F764 00000000 */ nop -/* 00788 80A9F768 AC400118 */ sw $zero, 0x0118($v0) ## 00000118 -.L80A9F76C: -/* 0078C 80A9F76C 0C00B55C */ jal Actor_Kill - -/* 00790 80A9F770 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00794 80A9F774 1000006C */ beq $zero, $zero, .L80A9F928 -/* 00798 80A9F778 8FBF003C */ lw $ra, 0x003C($sp) -.L80A9F77C: -/* 0079C 80A9F77C C42C04F4 */ lwc1 $f12, %lo(D_80AA04F4)($at) -/* 007A0 80A9F780 C4600858 */ lwc1 $f0, 0x0858($v1) ## 00000858 -/* 007A4 80A9F784 3C0180AA */ lui $at, %hi(D_80AA04FC) ## $at = 80AA0000 -/* 007A8 80A9F788 4600603C */ c.lt.s $f12, $f0 -/* 007AC 80A9F78C 00000000 */ nop -/* 007B0 80A9F790 45000029 */ bc1f .L80A9F838 -/* 007B4 80A9F794 00000000 */ nop -/* 007B8 80A9F798 8E0E011C */ lw $t6, 0x011C($s0) ## 0000011C -/* 007BC 80A9F79C 240D00FF */ addiu $t5, $zero, 0x00FF ## $t5 = 000000FF -/* 007C0 80A9F7A0 A20D01C8 */ sb $t5, 0x01C8($s0) ## 000001C8 -/* 007C4 80A9F7A4 55C00018 */ bnel $t6, $zero, .L80A9F808 -/* 007C8 80A9F7A8 C4700858 */ lwc1 $f16, 0x0858($v1) ## 00000858 -/* 007CC 80A9F7AC C6060024 */ lwc1 $f6, 0x0024($s0) ## 00000024 -/* 007D0 80A9F7B0 8FA60054 */ lw $a2, 0x0054($sp) -/* 007D4 80A9F7B4 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000 -/* 007D8 80A9F7B8 E7A60010 */ swc1 $f6, 0x0010($sp) -/* 007DC 80A9F7BC C6080028 */ lwc1 $f8, 0x0028($s0) ## 00000028 -/* 007E0 80A9F7C0 24070101 */ addiu $a3, $zero, 0x0101 ## $a3 = 00000101 -/* 007E4 80A9F7C4 24C41C24 */ addiu $a0, $a2, 0x1C24 ## $a0 = 00001C24 -/* 007E8 80A9F7C8 E7A80014 */ swc1 $f8, 0x0014($sp) -/* 007EC 80A9F7CC C60A002C */ lwc1 $f10, 0x002C($s0) ## 0000002C -/* 007F0 80A9F7D0 AFA0001C */ sw $zero, 0x001C($sp) -/* 007F4 80A9F7D4 E7AA0018 */ swc1 $f10, 0x0018($sp) -/* 007F8 80A9F7D8 861800B6 */ lh $t8, 0x00B6($s0) ## 000000B6 -/* 007FC 80A9F7DC AFA00024 */ sw $zero, 0x0024($sp) -/* 00800 80A9F7E0 AFB80020 */ sw $t8, 0x0020($sp) -/* 00804 80A9F7E4 921901C7 */ lbu $t9, 0x01C7($s0) ## 000001C7 -/* 00808 80A9F7E8 AFA3004C */ sw $v1, 0x004C($sp) -/* 0080C 80A9F7EC 27290002 */ addiu $t1, $t9, 0x0002 ## $t1 = 00000002 -/* 00810 80A9F7F0 0C00C916 */ jal Actor_SpawnAsChild - -/* 00814 80A9F7F4 AFA90028 */ sw $t1, 0x0028($sp) -/* 00818 80A9F7F8 3C0180AA */ lui $at, %hi(D_80AA04F8) ## $at = 80AA0000 -/* 0081C 80A9F7FC C42C04F8 */ lwc1 $f12, %lo(D_80AA04F8)($at) -/* 00820 80A9F800 8FA3004C */ lw $v1, 0x004C($sp) -/* 00824 80A9F804 C4700858 */ lwc1 $f16, 0x0858($v1) ## 00000858 -.L80A9F808: -/* 00828 80A9F808 3C013FC0 */ lui $at, 0x3FC0 ## $at = 3FC00000 -/* 0082C 80A9F80C 44812000 */ mtc1 $at, $f4 ## $f4 = 1.50 -/* 00830 80A9F810 460C8481 */ sub.s $f18, $f16, $f12 -/* 00834 80A9F814 C60001BC */ lwc1 $f0, 0x01BC($s0) ## 000001BC -/* 00838 80A9F818 3C013F00 */ lui $at, 0x3F00 ## $at = 3F000000 -/* 0083C 80A9F81C 44815000 */ mtc1 $at, $f10 ## $f10 = 0.50 -/* 00840 80A9F820 46049182 */ mul.s $f6, $f18, $f4 -/* 00844 80A9F824 46003201 */ sub.s $f8, $f6, $f0 -/* 00848 80A9F828 460A4402 */ mul.s $f16, $f8, $f10 -/* 0084C 80A9F82C 46100480 */ add.s $f18, $f0, $f16 -/* 00850 80A9F830 10000019 */ beq $zero, $zero, .L80A9F898 -/* 00854 80A9F834 E61201BC */ swc1 $f18, 0x01BC($s0) ## 000001BC -.L80A9F838: -/* 00858 80A9F838 C42204FC */ lwc1 $f2, %lo(D_80AA04FC)($at) -/* 0085C 80A9F83C 3C01437F */ lui $at, 0x437F ## $at = 437F0000 -/* 00860 80A9F840 4600103C */ c.lt.s $f2, $f0 -/* 00864 80A9F844 00000000 */ nop -/* 00868 80A9F848 45020013 */ bc1fl .L80A9F898 -/* 0086C 80A9F84C A20001C8 */ sb $zero, 0x01C8($s0) ## 000001C8 -/* 00870 80A9F850 46020101 */ sub.s $f4, $f0, $f2 -/* 00874 80A9F854 44813000 */ mtc1 $at, $f6 ## $f6 = 255.00 -/* 00878 80A9F858 3C0141A0 */ lui $at, 0x41A0 ## $at = 41A00000 -/* 0087C 80A9F85C 44815000 */ mtc1 $at, $f10 ## $f10 = 20.00 -/* 00880 80A9F860 46062202 */ mul.s $f8, $f4, $f6 -/* 00884 80A9F864 3C014120 */ lui $at, 0x4120 ## $at = 41200000 -/* 00888 80A9F868 460A4402 */ mul.s $f16, $f8, $f10 -/* 0088C 80A9F86C 44814000 */ mtc1 $at, $f8 ## $f8 = 10.00 -/* 00890 80A9F870 4600848D */ trunc.w.s $f18, $f16 -/* 00894 80A9F874 440B9000 */ mfc1 $t3, $f18 -/* 00898 80A9F878 00000000 */ nop -/* 0089C 80A9F87C A20B01C8 */ sb $t3, 0x01C8($s0) ## 000001C8 -/* 008A0 80A9F880 C4640858 */ lwc1 $f4, 0x0858($v1) ## 00000858 -/* 008A4 80A9F884 46022181 */ sub.s $f6, $f4, $f2 -/* 008A8 80A9F888 46083282 */ mul.s $f10, $f6, $f8 -/* 008AC 80A9F88C 10000002 */ beq $zero, $zero, .L80A9F898 -/* 008B0 80A9F890 E60A01AC */ swc1 $f10, 0x01AC($s0) ## 000001AC -/* 008B4 80A9F894 A20001C8 */ sb $zero, 0x01C8($s0) ## 000001C8 -.L80A9F898: -/* 008B8 80A9F898 3C0180AA */ lui $at, %hi(D_80AA0500) ## $at = 80AA0000 -/* 008BC 80A9F89C C4300500 */ lwc1 $f16, %lo(D_80AA0500)($at) -/* 008C0 80A9F8A0 C4600858 */ lwc1 $f0, 0x0858($v1) ## 00000858 -/* 008C4 80A9F8A4 246400E4 */ addiu $a0, $v1, 0x00E4 ## $a0 = 000000E4 -/* 008C8 80A9F8A8 4600803C */ c.lt.s $f16, $f0 -/* 008CC 80A9F8AC 00000000 */ nop -/* 008D0 80A9F8B0 45020006 */ bc1fl .L80A9F8CC -/* 008D4 80A9F8B4 4600603C */ c.lt.s $f12, $f0 -/* 008D8 80A9F8B8 0C03D095 */ jal func_800F4254 -/* 008DC 80A9F8BC 24050002 */ addiu $a1, $zero, 0x0002 ## $a1 = 00000002 -/* 008E0 80A9F8C0 10000012 */ beq $zero, $zero, .L80A9F90C -/* 008E4 80A9F8C4 00000000 */ nop -/* 008E8 80A9F8C8 4600603C */ c.lt.s $f12, $f0 -.L80A9F8CC: -/* 008EC 80A9F8CC 246400E4 */ addiu $a0, $v1, 0x00E4 ## $a0 = 000000E4 -/* 008F0 80A9F8D0 3C0180AA */ lui $at, %hi(D_80AA0504) ## $at = 80AA0000 -/* 008F4 80A9F8D4 45000005 */ bc1f .L80A9F8EC -/* 008F8 80A9F8D8 00000000 */ nop -/* 008FC 80A9F8DC 0C03D095 */ jal func_800F4254 -/* 00900 80A9F8E0 24050001 */ addiu $a1, $zero, 0x0001 ## $a1 = 00000001 -/* 00904 80A9F8E4 10000009 */ beq $zero, $zero, .L80A9F90C -/* 00908 80A9F8E8 00000000 */ nop -.L80A9F8EC: -/* 0090C 80A9F8EC C4320504 */ lwc1 $f18, %lo(D_80AA0504)($at) -/* 00910 80A9F8F0 246400E4 */ addiu $a0, $v1, 0x00E4 ## $a0 = 000000E4 -/* 00914 80A9F8F4 4600903C */ c.lt.s $f18, $f0 -/* 00918 80A9F8F8 00000000 */ nop -/* 0091C 80A9F8FC 45000003 */ bc1f .L80A9F90C -/* 00920 80A9F900 00000000 */ nop -/* 00924 80A9F904 0C03D095 */ jal func_800F4254 -/* 00928 80A9F908 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000 -.L80A9F90C: -/* 0092C 80A9F90C 0C02FF21 */ jal Gameplay_InCsMode -/* 00930 80A9F910 8FA40054 */ lw $a0, 0x0054($sp) -/* 00934 80A9F914 50400004 */ beql $v0, $zero, .L80A9F928 -/* 00938 80A9F918 8FBF003C */ lw $ra, 0x003C($sp) -/* 0093C 80A9F91C 0C00B55C */ jal Actor_Kill - -/* 00940 80A9F920 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -.L80A9F924: -/* 00944 80A9F924 8FBF003C */ lw $ra, 0x003C($sp) -.L80A9F928: -/* 00948 80A9F928 8FB00038 */ lw $s0, 0x0038($sp) -/* 0094C 80A9F92C 27BD0050 */ addiu $sp, $sp, 0x0050 ## $sp = 00000000 -/* 00950 80A9F930 03E00008 */ jr $ra -/* 00954 80A9F934 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F938.s b/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F938.s deleted file mode 100644 index bf79073d7b..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F938.s +++ /dev/null @@ -1,41 +0,0 @@ -.late_rodata -glabel D_80AA0508 - .float 0.1 - -.text -glabel func_80A9F938 -/* 00958 80A9F938 AFA50004 */ sw $a1, 0x0004($sp) -/* 0095C 80A9F93C 948E01C4 */ lhu $t6, 0x01C4($a0) ## 000001C4 -/* 00960 80A9F940 29C10002 */ slti $at, $t6, 0x0002 -/* 00964 80A9F944 50200009 */ beql $at, $zero, .L80A9F96C -/* 00968 80A9F948 C48001B0 */ lwc1 $f0, 0x01B0($a0) ## 000001B0 -/* 0096C 80A9F94C 908201C8 */ lbu $v0, 0x01C8($a0) ## 000001C8 -/* 00970 80A9F950 28410028 */ slti $at, $v0, 0x0028 -/* 00974 80A9F954 10200003 */ beq $at, $zero, .L80A9F964 -/* 00978 80A9F958 244FFFD8 */ addiu $t7, $v0, 0xFFD8 ## $t7 = FFFFFFD8 -/* 0097C 80A9F95C 10000002 */ beq $zero, $zero, .L80A9F968 -/* 00980 80A9F960 A08001C8 */ sb $zero, 0x01C8($a0) ## 000001C8 -.L80A9F964: -/* 00984 80A9F964 A08F01C8 */ sb $t7, 0x01C8($a0) ## 000001C8 -.L80A9F968: -/* 00988 80A9F968 C48001B0 */ lwc1 $f0, 0x01B0($a0) ## 000001B0 -.L80A9F96C: -/* 0098C 80A9F96C C48201BC */ lwc1 $f2, 0x01BC($a0) ## 000001BC -/* 00990 80A9F970 C48C01AC */ lwc1 $f12, 0x01AC($a0) ## 000001AC -/* 00994 80A9F974 46000180 */ add.s $f6, $f0, $f0 -/* 00998 80A9F978 C48401B4 */ lwc1 $f4, 0x01B4($a0) ## 000001B4 -/* 0099C 80A9F97C 3C0180AA */ lui $at, %hi(D_80AA0508) ## $at = 80AA0000 -/* 009A0 80A9F980 460C103C */ c.lt.s $f2, $f12 -/* 009A4 80A9F984 46062200 */ add.s $f8, $f4, $f6 -/* 009A8 80A9F988 45000007 */ bc1f .L80A9F9A8 -/* 009AC 80A9F98C E48801B4 */ swc1 $f8, 0x01B4($a0) ## 000001B4 -/* 009B0 80A9F990 46026281 */ sub.s $f10, $f12, $f2 -/* 009B4 80A9F994 C4300508 */ lwc1 $f16, %lo(D_80AA0508)($at) -/* 009B8 80A9F998 46105482 */ mul.s $f18, $f10, $f16 -/* 009BC 80A9F99C 46121100 */ add.s $f4, $f2, $f18 -/* 009C0 80A9F9A0 03E00008 */ jr $ra -/* 009C4 80A9F9A4 E48401BC */ swc1 $f4, 0x01BC($a0) ## 000001BC -.L80A9F9A8: -/* 009C8 80A9F9A8 E48C01BC */ swc1 $f12, 0x01BC($a0) ## 000001BC -/* 009CC 80A9F9AC 03E00008 */ jr $ra -/* 009D0 80A9F9B0 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F9B4.s b/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F9B4.s deleted file mode 100644 index 70a775c5d4..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F9B4.s +++ /dev/null @@ -1,112 +0,0 @@ -.late_rodata -glabel D_80AA050C - .float 0.6 - -glabel D_80AA0510 - .word 0x3FD55555 - -.text -glabel func_80A9F9B4 -/* 009D4 80A9F9B4 27BDFFD0 */ addiu $sp, $sp, 0xFFD0 ## $sp = FFFFFFD0 -/* 009D8 80A9F9B8 AFBF0024 */ sw $ra, 0x0024($sp) -/* 009DC 80A9F9BC AFB00020 */ sw $s0, 0x0020($sp) -/* 009E0 80A9F9C0 AFA50034 */ sw $a1, 0x0034($sp) -/* 009E4 80A9F9C4 8CAF1C44 */ lw $t7, 0x1C44($a1) ## 00001C44 -/* 009E8 80A9F9C8 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000 -/* 009EC 80A9F9CC 248401AC */ addiu $a0, $a0, 0x01AC ## $a0 = 000001AC -/* 009F0 80A9F9D0 24050000 */ addiu $a1, $zero, 0x0000 ## $a1 = 00000000 -/* 009F4 80A9F9D4 3C063D80 */ lui $a2, 0x3D80 ## $a2 = 3D800000 -/* 009F8 80A9F9D8 0C01DE80 */ jal Math_StepToF - -/* 009FC 80A9F9DC AFAF002C */ sw $t7, 0x002C($sp) -/* 00A00 80A9F9E0 50400006 */ beql $v0, $zero, .L80A9F9FC -/* 00A04 80A9F9E4 921801C9 */ lbu $t8, 0x01C9($s0) ## 000001C9 -/* 00A08 80A9F9E8 0C00B55C */ jal Actor_Kill - -/* 00A0C 80A9F9EC 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00A10 80A9F9F0 10000025 */ beq $zero, $zero, .L80A9FA88 -/* 00A14 80A9F9F4 960201C4 */ lhu $v0, 0x01C4($s0) ## 000001C4 -/* 00A18 80A9F9F8 921801C9 */ lbu $t8, 0x01C9($s0) ## 000001C9 -.L80A9F9FC: -/* 00A1C 80A9F9FC 44803000 */ mtc1 $zero, $f6 ## $f6 = 0.00 -/* 00A20 80A9FA00 3C063F19 */ lui $a2, 0x3F19 ## $a2 = 3F190000 -/* 00A24 80A9FA04 44982000 */ mtc1 $t8, $f4 ## $f4 = 0.00 -/* 00A28 80A9FA08 3C073F4C */ lui $a3, 0x3F4C ## $a3 = 3F4C0000 -/* 00A2C 80A9FA0C 34E7CCCD */ ori $a3, $a3, 0xCCCD ## $a3 = 3F4CCCCD -/* 00A30 80A9FA10 46802120 */ cvt.s.w $f4, $f4 -/* 00A34 80A9FA14 34C6999A */ ori $a2, $a2, 0x999A ## $a2 = 3F19999A -/* 00A38 80A9FA18 26040050 */ addiu $a0, $s0, 0x0050 ## $a0 = 00000050 -/* 00A3C 80A9FA1C E7A60010 */ swc1 $f6, 0x0010($sp) -/* 00A40 80A9FA20 44052000 */ mfc1 $a1, $f4 -/* 00A44 80A9FA24 0C01E0C4 */ jal Math_SmoothStepToF - -/* 00A48 80A9FA28 00000000 */ nop -/* 00A4C 80A9FA2C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00A50 80A9FA30 0C00B58B */ jal Actor_SetScale - -/* 00A54 80A9FA34 8E050050 */ lw $a1, 0x0050($s0) ## 00000050 -/* 00A58 80A9FA38 3C0141C8 */ lui $at, 0x41C8 ## $at = 41C80000 -/* 00A5C 80A9FA3C 44815000 */ mtc1 $at, $f10 ## $f10 = 25.00 -/* 00A60 80A9FA40 C6080050 */ lwc1 $f8, 0x0050($s0) ## 00000050 -/* 00A64 80A9FA44 2606014C */ addiu $a2, $s0, 0x014C ## $a2 = 0000014C -/* 00A68 80A9FA48 00C02825 */ or $a1, $a2, $zero ## $a1 = 0000014C -/* 00A6C 80A9FA4C 460A4402 */ mul.s $f16, $f8, $f10 -/* 00A70 80A9FA50 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00A74 80A9FA54 4600848D */ trunc.w.s $f18, $f16 -/* 00A78 80A9FA58 44089000 */ mfc1 $t0, $f18 -/* 00A7C 80A9FA5C 00000000 */ nop -/* 00A80 80A9FA60 A608018C */ sh $t0, 0x018C($s0) ## 0000018C -/* 00A84 80A9FA64 0C0189B7 */ jal Collider_UpdateCylinder - -/* 00A88 80A9FA68 AFA60028 */ sw $a2, 0x0028($sp) -/* 00A8C 80A9FA6C 8FA40034 */ lw $a0, 0x0034($sp) -/* 00A90 80A9FA70 3C010001 */ lui $at, 0x0001 ## $at = 00010000 -/* 00A94 80A9FA74 34211E60 */ ori $at, $at, 0x1E60 ## $at = 00011E60 -/* 00A98 80A9FA78 8FA60028 */ lw $a2, 0x0028($sp) -/* 00A9C 80A9FA7C 0C0175E7 */ jal CollisionCheck_SetAT - ## CollisionCheck_setAT -/* 00AA0 80A9FA80 00812821 */ addu $a1, $a0, $at -/* 00AA4 80A9FA84 960201C4 */ lhu $v0, 0x01C4($s0) ## 000001C4 -.L80A9FA88: -/* 00AA8 80A9FA88 8FA3002C */ lw $v1, 0x002C($sp) -/* 00AAC 80A9FA8C 3C0180AA */ lui $at, %hi(D_80AA050C) ## $at = 80AA0000 -/* 00AB0 80A9FA90 18400007 */ blez $v0, .L80A9FAB0 -/* 00AB4 80A9FA94 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00AB8 80A9FA98 C4640908 */ lwc1 $f4, 0x0908($v1) ## 00000908 -/* 00ABC 80A9FA9C 2449FFFF */ addiu $t1, $v0, 0xFFFF ## $t1 = FFFFFFFF -/* 00AC0 80A9FAA0 E6040024 */ swc1 $f4, 0x0024($s0) ## 00000024 -/* 00AC4 80A9FAA4 C4660910 */ lwc1 $f6, 0x0910($v1) ## 00000910 -/* 00AC8 80A9FAA8 A60901C4 */ sh $t1, 0x01C4($s0) ## 000001C4 -/* 00ACC 80A9FAAC E606002C */ swc1 $f6, 0x002C($s0) ## 0000002C -.L80A9FAB0: -/* 00AD0 80A9FAB0 C60001AC */ lwc1 $f0, 0x01AC($s0) ## 000001AC -/* 00AD4 80A9FAB4 C428050C */ lwc1 $f8, %lo(D_80AA050C)($at) -/* 00AD8 80A9FAB8 3C0180AA */ lui $at, %hi(D_80AA0510) ## $at = 80AA0000 -/* 00ADC 80A9FABC 4600403C */ c.lt.s $f8, $f0 -/* 00AE0 80A9FAC0 00000000 */ nop -/* 00AE4 80A9FAC4 45000005 */ bc1f .L80A9FADC -/* 00AE8 80A9FAC8 00000000 */ nop -/* 00AEC 80A9FACC 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000 -/* 00AF0 80A9FAD0 44815000 */ mtc1 $at, $f10 ## $f10 = 1.00 -/* 00AF4 80A9FAD4 10000004 */ beq $zero, $zero, .L80A9FAE8 -/* 00AF8 80A9FAD8 E60A01B0 */ swc1 $f10, 0x01B0($s0) ## 000001B0 -.L80A9FADC: -/* 00AFC 80A9FADC C4300510 */ lwc1 $f16, %lo(D_80AA0510)($at) -/* 00B00 80A9FAE0 46100482 */ mul.s $f18, $f0, $f16 -/* 00B04 80A9FAE4 E61201B0 */ swc1 $f18, 0x01B0($s0) ## 000001B0 -.L80A9FAE8: -/* 00B08 80A9FAE8 0C2A7E4E */ jal func_80A9F938 -/* 00B0C 80A9FAEC 8FA50034 */ lw $a1, 0x0034($sp) -/* 00B10 80A9FAF0 0C02FF21 */ jal Gameplay_InCsMode -/* 00B14 80A9FAF4 8FA40034 */ lw $a0, 0x0034($sp) -/* 00B18 80A9FAF8 50400004 */ beql $v0, $zero, .L80A9FB0C -/* 00B1C 80A9FAFC 8FBF0024 */ lw $ra, 0x0024($sp) -/* 00B20 80A9FB00 0C00B55C */ jal Actor_Kill - -/* 00B24 80A9FB04 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00B28 80A9FB08 8FBF0024 */ lw $ra, 0x0024($sp) -.L80A9FB0C: -/* 00B2C 80A9FB0C 8FB00020 */ lw $s0, 0x0020($sp) -/* 00B30 80A9FB10 27BD0030 */ addiu $sp, $sp, 0x0030 ## $sp = 00000000 -/* 00B34 80A9FB14 03E00008 */ jr $ra -/* 00B38 80A9FB18 00000000 */ nop diff --git a/data/overlays/actors/z_en_m_thunder.data.s b/data/overlays/actors/z_en_m_thunder.data.s deleted file mode 100644 index 4f2aab6404..0000000000 --- a/data/overlays/actors/z_en_m_thunder.data.s +++ /dev/null @@ -1,28 +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 En_M_Thunder_InitVars - .word 0x00570700, 0x00000000, 0x00010000, 0x000001CC -.word EnMThunder_Init -.word EnMThunder_Destroy -.word EnMThunder_Update -.word EnMThunder_Draw -glabel D_80AA0420 - .word 0x0A090000, 0x10010000, 0x02000000, 0x00000001, 0x00000000, 0xFFCFFFFF, 0x00000000, 0x19010100, 0x00C800C8, 0x00000000, 0x00000000 -glabel D_80AA044C - .word 0x01000000, 0x00400000, 0x00800000 -glabel D_80AA0458 - .word 0x08000000, 0x02000000, 0x04000000 -glabel D_80AA0464 - .word 0x182F182E, 0x182F182E -glabel D_80AA046C - .word 0x3DCCCCCD, 0x3E19999A, 0x3E4CCCCD, 0x3E800000, 0x3E99999A, 0x3E800000, 0x3E4CCCCD, 0x3E19999A, 0x00000000 - diff --git a/include/functions.h b/include/functions.h index b3f1be4f49..06294f143c 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2236,6 +2236,7 @@ void func_800F4010(Vec3f*, u16 sfxId, f32); void func_800F41E0(Vec3f*, u16 sfxId, u8); void func_800F4138(Vec3f*, u16 sfxId, f32); void func_800F4190(Vec3f*, u16 sfxId); +void func_800F4254(Vec3f* pos, u8 arg1); void func_800F436C(Vec3f*, s16 arg1, f32 arg2); void func_800F4414(Vec3f*, u16, f32); void func_800F44EC(UNK_TYPE arg0, UNK_TYPE arg1); diff --git a/spec b/spec index a2053a3fc9..3227b6a65a 100644 --- a/spec +++ b/spec @@ -2630,8 +2630,11 @@ endseg beginseg name "ovl_En_M_Thunder" include "build/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.o" - include "build/data/overlays/actors/z_en_m_thunder.data.o" +#ifdef NON_MATCHING + include "build/src/overlays/actors/ovl_En_M_Thunder/ovl_En_M_Thunder_reloc.o" +#else include "build/data/overlays/actors/z_en_m_thunder.reloc.o" +#endif endseg beginseg diff --git a/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.c b/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.c index a076561d9d..04dab1aaf7 100644 --- a/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.c +++ b/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.c @@ -9,13 +9,10 @@ void EnMThunder_Destroy(Actor* thisx, GlobalContext* globalCtx); void EnMThunder_Update(Actor* thisx, GlobalContext* globalCtx); void EnMThunder_Draw(Actor* thisx, GlobalContext* globalCtx); -extern UNK_TYPE D_04012570; -extern UNK_TYPE D_04012690; -extern UNK_TYPE D_04012AF0; -extern UNK_TYPE D_04012C10; -extern UNK_TYPE D_04013610; +void func_80A9F314(GlobalContext* globalCtx, f32 arg1); +void func_80A9F408(EnMThunder* this, GlobalContext* globalCtx); +void func_80A9F9B4(EnMThunder* this, GlobalContext* globalCtx); -/* const ActorInit En_M_Thunder_InitVars = { ACTOR_EN_M_THUNDER, ACTORCAT_ITEMACTION, @@ -47,23 +44,375 @@ static ColliderCylinderInit D_80AA0420 = { }, { 200, 200, 0, { 0, 0, 0 } }, }; -*/ -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9EFE0.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_M_Thunder/EnMThunder_Init.s") +static u32 D_80AA044C[] = { 0x01000000, 0x00400000, 0x00800000 }; +static u32 D_80AA0458[] = { 0x08000000, 0x02000000, 0x04000000 }; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_M_Thunder/EnMThunder_Destroy.s") +static u16 sSfxIds[] = { + NA_SE_IT_ROLLING_CUT_LV2, + NA_SE_IT_ROLLING_CUT_LV1, + NA_SE_IT_ROLLING_CUT_LV2, + NA_SE_IT_ROLLING_CUT_LV1 +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F314.s") +extern Gfx D_04012570[]; +extern Gfx D_04012690[]; +extern Gfx D_04012AF0[]; +extern Gfx D_04012C10[]; +extern Gfx D_04013610[]; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F350.s") +// Setup action +void func_80A9EFE0(EnMThunder* this, EnMThunderActionFunc actionFunc) { + this->actionFunc = actionFunc; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F408.s") +void EnMThunder_Init(Actor* thisx, GlobalContext* globalCtx2) { + GlobalContext* globalCtx = globalCtx2; + EnMThunder* this = THIS; + Player* player = PLAYER; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F938.s") + Collider_InitCylinder(globalCtx, &this->collider); + Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &D_80AA0420); + this->unk_1C7 = (this->actor.params & 0xFF) - 1; + Lights_PointNoGlowSetInfo(&this->lightInfo, this->actor.world.pos.x, this->actor.world.pos.y, + this->actor.world.pos.z, 255, 255, 255, 0); + this->lightNode = LightContext_InsertLight(globalCtx, &globalCtx->lightCtx, &this->lightInfo); + this->collider.dim.radius = 0; + this->collider.dim.height = 40; + this->collider.dim.yShift = -20; + this->unk_1C4 = 8; + this->unk_1B4 = 0.0f; + this->actor.world.pos = player->bodyPartsPos[0]; + this->unk_1AC = 0.0f; + this->unk_1BC = 0.0f; + this->actor.shape.rot.y = player->actor.shape.rot.y + 0x8000; + this->actor.room = -1; + Actor_SetScale(&this->actor, 0.1f); + this->unk_1CA = 0; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_M_Thunder/func_80A9F9B4.s") + if (player->stateFlags2 & 0x20000) { + if (!gSaveContext.magicAcquired || gSaveContext.unk_13F0 || + (((this->actor.params & 0xFF00) >> 8) && + !(func_80087708(globalCtx, (this->actor.params & 0xFF00) >> 8, 0)))) { + Audio_PlaySoundGeneral(NA_SE_IT_ROLLING_CUT, &player->actor.projectedPos, 4, &D_801333E0, &D_801333E0, + &D_801333E8); + Audio_PlaySoundGeneral(NA_SE_IT_SWORD_SWING_HARD, &player->actor.projectedPos, 4, &D_801333E0, &D_801333E0, + &D_801333E8); + Actor_Kill(&this->actor); + return; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_M_Thunder/EnMThunder_Update.s") + player->stateFlags2 &= ~0x20000; + this->unk_1CA = 1; + this->collider.info.toucher.dmgFlags = D_80AA044C[this->unk_1C7]; + this->unk_1C6 = 1; + this->unk_1C9 = ((this->unk_1C7 == 1) ? 2 : 4); + func_80A9EFE0(this, func_80A9F9B4); + this->unk_1C4 = 8; + Audio_PlaySoundGeneral(NA_SE_IT_ROLLING_CUT_LV1, &player->actor.projectedPos, 4, &D_801333E0, &D_801333E0, + &D_801333E8); + this->unk_1AC = 1.0f; + } else { + func_80A9EFE0(this, func_80A9F408); + } + this->actor.child = NULL; +} +void EnMThunder_Destroy(Actor* thisx, GlobalContext* globalCtx) { + EnMThunder* this = THIS; + + if (this->unk_1CA != 0) { + func_800876C8(globalCtx); + } + + Collider_DestroyCylinder(globalCtx, &this->collider); + func_80A9F314(globalCtx, 0.0f); + LightContext_RemoveLight(globalCtx, &globalCtx->lightCtx, this->lightNode); +} + +void func_80A9F314(GlobalContext* globalCtx, f32 arg1) { + func_800773A8(globalCtx, arg1, 850.0f, 0.2f, 0.0f); +} + +void func_80A9F350(EnMThunder* this, GlobalContext* globalCtx) { + Player* player = PLAYER; + + if (player->stateFlags2 & 0x20000) { + if (player->swordAnimation >= 0x18) { + Audio_PlaySoundGeneral(NA_SE_IT_ROLLING_CUT, &player->actor.projectedPos, 4, &D_801333E0, &D_801333E0, + &D_801333E8); + Audio_PlaySoundGeneral(NA_SE_IT_SWORD_SWING_HARD, &player->actor.projectedPos, 4, &D_801333E0, &D_801333E0, + &D_801333E8); + } + + Actor_Kill(&this->actor); + return; + } + + if (!(player->stateFlags1 & 0x1000)) { + Actor_Kill(&this->actor); + } +} + +void func_80A9F408(EnMThunder* this, GlobalContext* globalCtx) { + Player* player = PLAYER; + Actor* child = this->actor.child; + + this->unk_1B8 = player->unk_858; + this->actor.world.pos = player->bodyPartsPos[0]; + this->actor.shape.rot.y = player->actor.shape.rot.y + 0x8000; + + if (this->unk_1CA == 0) { + if (player->unk_858 >= 0.1f) { + if ((gSaveContext.unk_13F0) || (((this->actor.params & 0xFF00) >> 8) && + !(func_80087708(globalCtx, (this->actor.params & 0xFF00) >> 8, 4)))) { + func_80A9F350(this, globalCtx); + func_80A9EFE0(this, func_80A9F350); + this->unk_1C8 = 0; + this->unk_1BC = 0.0; + this->unk_1AC = 0.0f; + return; + } + + this->unk_1CA = 1; + } + } + + if (player->unk_858 >= 0.1f) { + func_800AA000(0.0f, (s32)(player->unk_858 * 150.0f) & 0xFF, 2, (s32)(player->unk_858 * 150.0f) & 0xFF); + } + + if (player->stateFlags2 & 0x20000) { + if ((child != NULL) && (child->update != NULL)) { + child->parent = NULL; + } + + if (player->unk_858 <= 0.15f) { + if ((player->unk_858 >= 0.1f) && (player->swordAnimation >= 0x18)) { + Audio_PlaySoundGeneral(NA_SE_IT_ROLLING_CUT, &player->actor.projectedPos, 4, &D_801333E0, &D_801333E0, + &D_801333E8); + Audio_PlaySoundGeneral(NA_SE_IT_SWORD_SWING_HARD, &player->actor.projectedPos, 4, &D_801333E0, + &D_801333E0, &D_801333E8); + } + Actor_Kill(&this->actor); + return; + } else { + player->stateFlags2 &= ~0x20000; + if ((this->actor.params & 0xFF00) >> 8) { + gSaveContext.unk_13F0 = 1; + } + if (player->unk_858 < 0.85f) { + this->collider.info.toucher.dmgFlags = D_80AA044C[this->unk_1C7]; + this->unk_1C6 = 1; + this->unk_1C9 = ((this->unk_1C7 == 1) ? 2 : 4); + } else { + this->collider.info.toucher.dmgFlags = D_80AA0458[this->unk_1C7]; + this->unk_1C6 = 0; + this->unk_1C9 = ((this->unk_1C7 == 1) ? 4 : 8); + } + + func_80A9EFE0(this, func_80A9F9B4); + this->unk_1C4 = 8; + Audio_PlaySoundGeneral(sSfxIds[this->unk_1C6], &player->actor.projectedPos, 4, &D_801333E0, &D_801333E0, + &D_801333E8); + this->unk_1AC = 1.0f; + return; + } + } + + if (!(player->stateFlags1 & 0x1000)) { + if (this->actor.child != NULL) { + this->actor.child->parent = NULL; + } + Actor_Kill(&this->actor); + return; + } + + if (player->unk_858 > 0.15f) { + this->unk_1C8 = 255; + if (this->actor.child == NULL) { + Actor_SpawnAsChild(&globalCtx->actorCtx, &this->actor, globalCtx, ACTOR_EFF_DUST, this->actor.world.pos.x, + this->actor.world.pos.y, this->actor.world.pos.z, 0, this->actor.shape.rot.y, 0, + this->unk_1C7 + 2); + } + this->unk_1BC += ((((player->unk_858 - 0.15f) * 1.5f) - this->unk_1BC) * 0.5f); + + } else if (player->unk_858 > .1f) { + this->unk_1C8 = (s32)((player->unk_858 - .1f) * 255.0f * 20.0f); + this->unk_1AC = (player->unk_858 - .1f) * 10.0f; + } else { + this->unk_1C8 = 0; + } + + if (player->unk_858 > 0.85f) { + func_800F4254(&player->actor.projectedPos, 2); + } else if (player->unk_858 > 0.15f) { + func_800F4254(&player->actor.projectedPos, 1); + } else if (player->unk_858 > 0.1f) { + func_800F4254(&player->actor.projectedPos, 0); + } + + if (Gameplay_InCsMode(globalCtx)) { + Actor_Kill(&this->actor); + } +} + +void func_80A9F938(EnMThunder* this, GlobalContext* globalCtx) { + if (this->unk_1C4 < 2) { + if (this->unk_1C8 < 40) { + this->unk_1C8 = 0; + } else { + this->unk_1C8 -= 40; + } + } + + this->unk_1B4 += 2.0f * this->unk_1B0; + + if (this->unk_1BC < this->unk_1AC) { + this->unk_1BC += ((this->unk_1AC - this->unk_1BC) * 0.1f); + } else { + this->unk_1BC = this->unk_1AC; + } +} + +void func_80A9F9B4(EnMThunder* this, GlobalContext* globalCtx) { + Player* player = PLAYER; + + if (Math_StepToF(&this->unk_1AC, 0.0f, 0.0625f)) { + Actor_Kill(&this->actor); + } else { + Math_SmoothStepToF(&this->actor.scale.x, (s32)this->unk_1C9, 0.6f, 0.8f, 0.0f); + Actor_SetScale(&this->actor, this->actor.scale.x); + this->collider.dim.radius = (this->actor.scale.x * 25.0f); + Collider_UpdateCylinder(&this->actor, &this->collider); + CollisionCheck_SetAT(globalCtx, &globalCtx->colChkCtx, &this->collider.base); + } + + if (this->unk_1C4 > 0) { + this->actor.world.pos.x = player->bodyPartsPos[0].x; + this->actor.world.pos.z = player->bodyPartsPos[0].z; + this->unk_1C4--; + } + + if (this->unk_1AC > 0.6f) { + this->unk_1B0 = 1.0f; + } else { + this->unk_1B0 = this->unk_1AC * 1.6666666f; + } + + func_80A9F938(this, globalCtx); + + if (Gameplay_InCsMode(globalCtx)) { + Actor_Kill(&this->actor); + } +} + +void EnMThunder_Update(Actor* thisx, GlobalContext* globalCtx) { + EnMThunder* this = THIS; + f32 blueRadius; + s32 redGreen; + + this->actionFunc(this, globalCtx); + func_80A9F314(globalCtx, this->unk_1BC); + blueRadius = this->unk_1AC; + redGreen = (u32)(blueRadius * 255.0f) & 0xFF; + Lights_PointNoGlowSetInfo(&this->lightInfo, this->actor.world.pos.x, this->actor.world.pos.y, + this->actor.world.pos.z, redGreen, redGreen, (u32)(blueRadius * 100.0f), + (s32)(blueRadius * 800.0f)); +} + +#ifdef NON_MATCHING +void EnMThunder_Draw(Actor* thisx, GlobalContext* globalCtx2) { + static f32 D_80AA046C[] = { 0.1f, 0.15f, 0.2f, 0.25f, 0.3f, 0.25f, 0.2f, 0.15f }; + GlobalContext* globalCtx = globalCtx2; + EnMThunder* this = THIS; + Player* player = PLAYER; + f32 phi_f14; + s32 phi_t1; + // u8 frames; + + if (1) {} + + OPEN_DISPS(globalCtx->state.gfxCtx, "../z_en_m_thunder.c", 844); + func_80093D84(globalCtx->state.gfxCtx); + Matrix_Scale(0.02f, 0.02f, 0.02f, MTXMODE_APPLY); + gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_en_m_thunder.c", 853), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + if (((this->unk_1C6 & 0xFF) == 0) || ((this->unk_1C6) == 1)) { + gSPSegment(POLY_XLU_DISP++, 0x08, + Gfx_TwoTexScroll(globalCtx->state.gfxCtx, 0, 0xFF - ((s8)(this->unk_1B4 * 30) & 0xFF), 0, 0x40, 0x20, + 1, 0xFF - ((s8)(this->unk_1B4 * 20) & 0xFF), 0, 8, 8)); + if (1) {} + } + + switch (this->unk_1C6) { + case 0: + gDPSetPrimColor(POLY_XLU_DISP++, 0, 0x80, 255, 255, 170, (u8)((u32)(this->unk_1B0 * 255) & 0xFF)); + gSPDisplayList(POLY_XLU_DISP++, D_04012AF0); + gSPDisplayList(POLY_XLU_DISP++, D_04012C10); + break; + case 1: + gDPSetPrimColor(POLY_XLU_DISP++, 0, 0x80, 170, 255, 255, (u8)((u32)(this->unk_1B0 * 255) & 0xFF)); + gSPDisplayList(POLY_XLU_DISP++, D_04012570); + gSPDisplayList(POLY_XLU_DISP++, D_04012690); + break; + } + + Matrix_Mult(&player->mf_9E0, MTXMODE_NEW); + + switch (this->unk_1C7) { + case 1: + Matrix_Translate(0.0f, 220.0f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(-0.7f, -0.6f, -0.4f, MTXMODE_APPLY); + Matrix_RotateX(16384.0f, MTXMODE_APPLY); + break; + case 0: + Matrix_Translate(0.0f, 300.0f, -100.0f, MTXMODE_APPLY); + Matrix_Scale(-1.2f, -1.0f, -0.7f, MTXMODE_APPLY); + Matrix_RotateX(16384.0f, MTXMODE_APPLY); + break; + case 2: + Matrix_Translate(200.0f, 350.0f, 0.0f, MTXMODE_APPLY); + Matrix_Scale(-1.8f, -1.4f, -0.7f, MTXMODE_APPLY); + Matrix_RotateX(16384.0f, MTXMODE_APPLY); + break; + } + + if (this->unk_1B8 >= 0.85f) { + phi_f14 = (D_80AA046C[(globalCtx->gameplayFrames & 7)] * 6.0f) + 1.0f; + gDPSetPrimColor(POLY_XLU_DISP++, 0, 0x80, 255, 255, 170, this->unk_1C8); + gDPSetEnvColor(POLY_XLU_DISP++, 255, 100, 0, 128); + phi_t1 = 0x28; + } else { + phi_f14 = (D_80AA046C[globalCtx->gameplayFrames & 7] * 2.0f) + 1.0f; + gDPSetPrimColor(POLY_XLU_DISP++, 0, 0x80, 170, 255, 255, this->unk_1C8); + gDPSetEnvColor(POLY_XLU_DISP++, 0, 100, 255, 128); + phi_t1 = 0x14; + } + Matrix_Scale(1.0f, phi_f14, phi_f14, MTXMODE_APPLY); + gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_en_m_thunder.c", 960), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + // redGreen_14 = temp_s0->polyXlu.p; + // temp_s0->polyXlu.p = redGreen_14 + 8; + // redGreen_14->words.w0 = 0xDB060024; + // temp_v1_3 = temp_t2->unk1DE4; + // temp_v1_3 = globalCtx->gameplayFrames; + // sp50 = redGreen_14; + // sp50->words.w1 = Gfx_TwoTexScroll(globalCtx->state.gfxCtx, 0, (temp_v1_3 * 5) & 0xFF, 0U, 0x20, 0x20, 1, + // (temp_v1_3 * 0x14) & 0xFF, (temp_v1_3 * temp_t1) & 0xFF, 8, 8); + // frames = globalCtx->gameplayFrames; + gSPSegment(POLY_XLU_DISP++, 0x09, + Gfx_TwoTexScroll(globalCtx->state.gfxCtx, 0, (globalCtx->gameplayFrames * 5) & 0xFF, 0, 0x20, 0x20, 1, + (globalCtx->gameplayFrames * 0x14) & 0xFF, + (u8)(globalCtx->gameplayFrames * phi_t1) & 0xFF, 8, 8)); + + gSPDisplayList(POLY_XLU_DISP++, D_04013610); + + CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_en_m_thunder.c", 1031); +} +#else +f32 D_80AA046C[] = { 0.1f, 0.15f, 0.2f, 0.25f, 0.3f, 0.25f, 0.2f, 0.15f }; #pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_M_Thunder/EnMThunder_Draw.s") +#endif diff --git a/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.h b/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.h index cb6db0d41f..d1408439c1 100644 --- a/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.h +++ b/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.h @@ -6,9 +6,25 @@ struct EnMThunder; +typedef void (*EnMThunderActionFunc)(struct EnMThunder*, GlobalContext*); + typedef struct EnMThunder { /* 0x0000 */ Actor actor; - /* 0x014C */ char unk_14C[0x80]; + /* 0x014C */ ColliderCylinder collider; + /* 0x0198 */ LightNode* lightNode; + /* 0x019C */ LightInfo lightInfo; + /* 0x01AC */ f32 unk_1AC; + /* 0x01B0 */ f32 unk_1B0; + /* 0x01B0 */ f32 unk_1B4; + /* 0x01B0 */ f32 unk_1B8; + /* 0x01BC */ f32 unk_1BC; + /* 0x01C0 */ EnMThunderActionFunc actionFunc; + /* 0x01C4 */ u16 unk_1C4; + /* 0x01C6 */ u8 unk_1C6; + /* 0x01C7 */ u8 unk_1C7; + /* 0x01C8 */ u8 unk_1C8; + /* 0x01C9 */ u8 unk_1C9; + /* 0x01CA */ u8 unk_1CA; } EnMThunder; // size = 0x01CC extern const ActorInit En_M_Thunder_InitVars;