From 3db87244b4b5b10e6b3af608b76b53eca5ddd2f2 Mon Sep 17 00:00:00 2001 From: AdamKiddle <54328813+AdamKiddle@users.noreply.github.com> Date: Sat, 30 Jan 2021 18:29:37 +0000 Subject: [PATCH] EnTrap OK (#615) * Manual migration of work to new branch due to screwing up git * removing unused asm * formatting * Fixing a comment * Adding a missing sound define --- .../actors/ovl_En_Trap/EnTrap_Destroy.s | 12 - .../overlays/actors/ovl_En_Trap/EnTrap_Draw.s | 18 - .../overlays/actors/ovl_En_Trap/EnTrap_Init.s | 263 ----- .../actors/ovl_En_Trap/EnTrap_Update.s | 983 ------------------ data/overlays/actors/z_en_trap.data.s | 20 - data/overlays/actors/z_en_trap.reloc.s | 13 - spec | 3 +- src/overlays/actors/ovl_En_Trap/z_en_trap.c | 376 ++++++- src/overlays/actors/ovl_En_Trap/z_en_trap.h | 23 +- 9 files changed, 382 insertions(+), 1329 deletions(-) delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Trap/EnTrap_Destroy.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Trap/EnTrap_Draw.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Trap/EnTrap_Init.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Trap/EnTrap_Update.s delete mode 100644 data/overlays/actors/z_en_trap.data.s delete mode 100644 data/overlays/actors/z_en_trap.reloc.s diff --git a/asm/non_matchings/overlays/actors/ovl_En_Trap/EnTrap_Destroy.s b/asm/non_matchings/overlays/actors/ovl_En_Trap/EnTrap_Destroy.s deleted file mode 100644 index a31c00089a..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Trap/EnTrap_Destroy.s +++ /dev/null @@ -1,12 +0,0 @@ -glabel EnTrap_Destroy -/* 003B8 80B24A18 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8 -/* 003BC 80B24A1C 00803025 */ or $a2, $a0, $zero ## $a2 = 00000000 -/* 003C0 80B24A20 AFBF0014 */ sw $ra, 0x0014($sp) -/* 003C4 80B24A24 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000 -/* 003C8 80B24A28 0C0170EB */ jal Collider_DestroyCylinder - -/* 003CC 80B24A2C 24C501A0 */ addiu $a1, $a2, 0x01A0 ## $a1 = 000001A0 -/* 003D0 80B24A30 8FBF0014 */ lw $ra, 0x0014($sp) -/* 003D4 80B24A34 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000 -/* 003D8 80B24A38 03E00008 */ jr $ra -/* 003DC 80B24A3C 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_En_Trap/EnTrap_Draw.s b/asm/non_matchings/overlays/actors/ovl_En_Trap/EnTrap_Draw.s deleted file mode 100644 index 1695def12f..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Trap/EnTrap_Draw.s +++ /dev/null @@ -1,18 +0,0 @@ -glabel EnTrap_Draw -/* 01170 80B257D0 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8 -/* 01174 80B257D4 AFBF0014 */ sw $ra, 0x0014($sp) -/* 01178 80B257D8 AFA5001C */ sw $a1, 0x001C($sp) -/* 0117C 80B257DC 0C00BAF3 */ jal func_8002EBCC -/* 01180 80B257E0 24060001 */ addiu $a2, $zero, 0x0001 ## $a2 = 00000001 -/* 01184 80B257E4 3C050600 */ lui $a1, %hi(D_06001400) ## $a1 = 06000000 -/* 01188 80B257E8 24A51400 */ addiu $a1, $a1, %lo(D_06001400) ## $a1 = 06001400 -/* 0118C 80B257EC 0C00D498 */ jal Gfx_DrawDListOpa - -/* 01190 80B257F0 8FA4001C */ lw $a0, 0x001C($sp) -/* 01194 80B257F4 8FBF0014 */ lw $ra, 0x0014($sp) -/* 01198 80B257F8 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000 -/* 0119C 80B257FC 03E00008 */ jr $ra -/* 011A0 80B25800 00000000 */ nop -/* 011A4 80B25804 00000000 */ nop -/* 011A8 80B25808 00000000 */ nop -/* 011AC 80B2580C 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_En_Trap/EnTrap_Init.s b/asm/non_matchings/overlays/actors/ovl_En_Trap/EnTrap_Init.s deleted file mode 100644 index c8776c8c72..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Trap/EnTrap_Init.s +++ /dev/null @@ -1,263 +0,0 @@ -glabel EnTrap_Init -/* 00000 80B24660 27BDFFB0 */ addiu $sp, $sp, 0xFFB0 ## $sp = FFFFFFB0 -/* 00004 80B24664 AFBF002C */ sw $ra, 0x002C($sp) -/* 00008 80B24668 AFB00028 */ sw $s0, 0x0028($sp) -/* 0000C 80B2466C F7B40020 */ sdc1 $f20, 0x0020($sp) -/* 00010 80B24670 AFA50054 */ sw $a1, 0x0054($sp) -/* 00014 80B24674 8482001C */ lh $v0, 0x001C($a0) ## 0000001C -/* 00018 80B24678 3C053DCC */ lui $a1, 0x3DCC ## $a1 = 3DCC0000 -/* 0001C 80B2467C 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000 -/* 00020 80B24680 00027203 */ sra $t6, $v0, 8 -/* 00024 80B24684 31CF00FF */ andi $t7, $t6, 0x00FF ## $t7 = 00000000 -/* 00028 80B24688 305800FF */ andi $t8, $v0, 0x00FF ## $t8 = 00000000 -/* 0002C 80B2468C A48F0150 */ sh $t7, 0x0150($a0) ## 00000150 -/* 00030 80B24690 A498001C */ sh $t8, 0x001C($a0) ## 0000001C -/* 00034 80B24694 0C00B58B */ jal Actor_SetScale - -/* 00038 80B24698 34A5CCCD */ ori $a1, $a1, 0xCCCD ## $a1 = 3DCCCCCD -/* 0003C 80B2469C 8602001C */ lh $v0, 0x001C($s0) ## 0000001C -/* 00040 80B246A0 3C01C000 */ lui $at, 0xC000 ## $at = C0000000 -/* 00044 80B246A4 44812000 */ mtc1 $at, $f4 ## $f4 = -2.00 -/* 00048 80B246A8 30590010 */ andi $t9, $v0, 0x0010 ## $t9 = 00000000 -/* 0004C 80B246AC 1320000E */ beq $t9, $zero, .L80B246E8 -/* 00050 80B246B0 E604006C */ swc1 $f4, 0x006C($s0) ## 0000006C -/* 00054 80B246B4 86080150 */ lh $t0, 0x0150($s0) ## 00000150 -/* 00058 80B246B8 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 0005C 80B246BC 2405287D */ addiu $a1, $zero, 0x287D ## $a1 = 0000287D -/* 00060 80B246C0 3109000F */ andi $t1, $t0, 0x000F ## $t1 = 00000000 -/* 00064 80B246C4 44893000 */ mtc1 $t1, $f6 ## $f6 = 0.00 -/* 00068 80B246C8 00000000 */ nop -/* 0006C 80B246CC 46803020 */ cvt.s.w $f0, $f6 -/* 00070 80B246D0 E600019C */ swc1 $f0, 0x019C($s0) ## 0000019C -/* 00074 80B246D4 0C00BE0A */ jal Audio_PlayActorSound2 - -/* 00078 80B246D8 E6000068 */ swc1 $f0, 0x0068($s0) ## 00000068 -/* 0007C 80B246DC 260A0024 */ addiu $t2, $s0, 0x0024 ## $t2 = 00000024 -/* 00080 80B246E0 100000AC */ beq $zero, $zero, .L80B24994 -/* 00084 80B246E4 AFAA0030 */ sw $t2, 0x0030($sp) -.L80B246E8: -/* 00088 80B246E8 304B0020 */ andi $t3, $v0, 0x0020 ## $t3 = 00000000 -/* 0008C 80B246EC 1160001E */ beq $t3, $zero, .L80B24768 -/* 00090 80B246F0 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000 -/* 00094 80B246F4 86020150 */ lh $v0, 0x0150($s0) ## 00000150 -/* 00098 80B246F8 3C014220 */ lui $at, 0x4220 ## $at = 42200000 -/* 0009C 80B246FC 44818000 */ mtc1 $at, $f16 ## $f16 = 40.00 -/* 000A0 80B24700 304C000F */ andi $t4, $v0, 0x000F ## $t4 = 00000000 -/* 000A4 80B24704 448C4000 */ mtc1 $t4, $f8 ## $f8 = 0.00 -/* 000A8 80B24708 304D00F0 */ andi $t5, $v0, 0x00F0 ## $t5 = 00000000 -/* 000AC 80B2470C 25AE0010 */ addiu $t6, $t5, 0x0010 ## $t6 = 00000010 -/* 000B0 80B24710 468042A0 */ cvt.s.w $f10, $f8 -/* 000B4 80B24714 000E7940 */ sll $t7, $t6, 5 -/* 000B8 80B24718 A60F0150 */ sh $t7, 0x0150($s0) ## 00000150 -/* 000BC 80B2471C 00002025 */ or $a0, $zero, $zero ## $a0 = 00000000 -/* 000C0 80B24720 46105482 */ mul.s $f18, $f10, $f16 -/* 000C4 80B24724 0C01DE1C */ jal Math_SinS - ## sins? -/* 000C8 80B24728 E6120154 */ swc1 $f18, 0x0154($s0) ## 00000154 -/* 000CC 80B2472C C6040154 */ lwc1 $f4, 0x0154($s0) ## 00000154 -/* 000D0 80B24730 C6080008 */ lwc1 $f8, 0x0008($s0) ## 00000008 -/* 000D4 80B24734 00002025 */ or $a0, $zero, $zero ## $a0 = 00000000 -/* 000D8 80B24738 46040182 */ mul.s $f6, $f0, $f4 -/* 000DC 80B2473C 46083280 */ add.s $f10, $f6, $f8 -/* 000E0 80B24740 0C01DE0D */ jal Math_CosS - ## coss? -/* 000E4 80B24744 E60A0024 */ swc1 $f10, 0x0024($s0) ## 00000024 -/* 000E8 80B24748 C6100154 */ lwc1 $f16, 0x0154($s0) ## 00000154 -/* 000EC 80B2474C C6040010 */ lwc1 $f4, 0x0010($s0) ## 00000010 -/* 000F0 80B24750 26180024 */ addiu $t8, $s0, 0x0024 ## $t8 = 00000024 -/* 000F4 80B24754 46100482 */ mul.s $f18, $f0, $f16 -/* 000F8 80B24758 46049180 */ add.s $f6, $f18, $f4 -/* 000FC 80B2475C E606002C */ swc1 $f6, 0x002C($s0) ## 0000002C -/* 00100 80B24760 1000008C */ beq $zero, $zero, .L80B24994 -/* 00104 80B24764 AFB80030 */ sw $t8, 0x0030($sp) -.L80B24768: -/* 00108 80B24768 86020150 */ lh $v0, 0x0150($s0) ## 00000150 -/* 0010C 80B2476C 3C064120 */ lui $a2, 0x4120 ## $a2 = 41200000 -/* 00110 80B24770 240B001D */ addiu $t3, $zero, 0x001D ## $t3 = 0000001D -/* 00114 80B24774 1040000B */ beq $v0, $zero, .L80B247A4 -/* 00118 80B24778 3049000F */ andi $t1, $v0, 0x000F ## $t1 = 00000000 -/* 0011C 80B2477C 44895000 */ mtc1 $t1, $f10 ## $f10 = 0.00 -/* 00120 80B24780 0002C903 */ sra $t9, $v0, 4 -/* 00124 80B24784 00194080 */ sll $t0, $t9, 2 -/* 00128 80B24788 46805420 */ cvt.s.w $f16, $f10 -/* 0012C 80B2478C 01194021 */ addu $t0, $t0, $t9 -/* 00130 80B24790 000840C0 */ sll $t0, $t0, 3 -/* 00134 80B24794 44884000 */ mtc1 $t0, $f8 ## $f8 = 0.00 -/* 00138 80B24798 E7B00048 */ swc1 $f16, 0x0048($sp) -/* 0013C 80B2479C 10000008 */ beq $zero, $zero, .L80B247C0 -/* 00140 80B247A0 46804520 */ cvt.s.w $f20, $f8 -.L80B247A4: -/* 00144 80B247A4 3C014348 */ lui $at, 0x4348 ## $at = 43480000 -/* 00148 80B247A8 4481A000 */ mtc1 $at, $f20 ## $f20 = 200.00 -/* 0014C 80B247AC 3C014120 */ lui $at, 0x4120 ## $at = 41200000 -/* 00150 80B247B0 44819000 */ mtc1 $at, $f18 ## $f18 = 10.00 -/* 00154 80B247B4 240A000F */ addiu $t2, $zero, 0x000F ## $t2 = 0000000F -/* 00158 80B247B8 E7B20048 */ swc1 $f18, 0x0048($sp) -/* 0015C 80B247BC A60A001C */ sh $t2, 0x001C($s0) ## 0000001C -.L80B247C0: -/* 00160 80B247C0 3C0141A0 */ lui $at, 0x41A0 ## $at = 41A00000 -/* 00164 80B247C4 44810000 */ mtc1 $at, $f0 ## $f0 = 20.00 -/* 00168 80B247C8 8FA40054 */ lw $a0, 0x0054($sp) -/* 0016C 80B247CC AFAB0014 */ sw $t3, 0x0014($sp) -/* 00170 80B247D0 44070000 */ mfc1 $a3, $f0 -/* 00174 80B247D4 0C00B92D */ jal Actor_UpdateBgCheckInfo -/* 00178 80B247D8 E7A00010 */ swc1 $f0, 0x0010($sp) -/* 0017C 80B247DC 26020024 */ addiu $v0, $s0, 0x0024 ## $v0 = 00000024 -/* 00180 80B247E0 8C4D0000 */ lw $t5, 0x0000($v0) ## 00000024 -/* 00184 80B247E4 86040032 */ lh $a0, 0x0032($s0) ## 00000032 -/* 00188 80B247E8 AE0D0008 */ sw $t5, 0x0008($s0) ## 00000008 -/* 0018C 80B247EC 8C4C0004 */ lw $t4, 0x0004($v0) ## 00000028 -/* 00190 80B247F0 AE0C000C */ sw $t4, 0x000C($s0) ## 0000000C -/* 00194 80B247F4 8C4D0008 */ lw $t5, 0x0008($v0) ## 0000002C -/* 00198 80B247F8 AE0D0010 */ sw $t5, 0x0010($s0) ## 00000010 -/* 0019C 80B247FC 0C01DE0D */ jal Math_CosS - ## coss? -/* 001A0 80B24800 AFA20030 */ sw $v0, 0x0030($sp) -/* 001A4 80B24804 46140102 */ mul.s $f4, $f0, $f20 -/* 001A8 80B24808 C6060024 */ lwc1 $f6, 0x0024($s0) ## 00000024 -/* 001AC 80B2480C 86040032 */ lh $a0, 0x0032($s0) ## 00000032 -/* 001B0 80B24810 46062200 */ add.s $f8, $f4, $f6 -/* 001B4 80B24814 0C01DE1C */ jal Math_SinS - ## sins? -/* 001B8 80B24818 E6080158 */ swc1 $f8, 0x0158($s0) ## 00000158 -/* 001BC 80B2481C 46140402 */ mul.s $f16, $f0, $f20 -/* 001C0 80B24820 C60A002C */ lwc1 $f10, 0x002C($s0) ## 0000002C -/* 001C4 80B24824 86040032 */ lh $a0, 0x0032($s0) ## 00000032 -/* 001C8 80B24828 34018000 */ ori $at, $zero, 0x8000 ## $at = 00008000 -/* 001CC 80B2482C 00812021 */ addu $a0, $a0, $at -/* 001D0 80B24830 00042400 */ sll $a0, $a0, 16 -/* 001D4 80B24834 46105481 */ sub.s $f18, $f10, $f16 -/* 001D8 80B24838 00042403 */ sra $a0, $a0, 16 -/* 001DC 80B2483C 0C01DE0D */ jal Math_CosS - ## coss? -/* 001E0 80B24840 E6120160 */ swc1 $f18, 0x0160($s0) ## 00000160 -/* 001E4 80B24844 46140102 */ mul.s $f4, $f0, $f20 -/* 001E8 80B24848 C6060024 */ lwc1 $f6, 0x0024($s0) ## 00000024 -/* 001EC 80B2484C 86040032 */ lh $a0, 0x0032($s0) ## 00000032 -/* 001F0 80B24850 34018000 */ ori $at, $zero, 0x8000 ## $at = 00008000 -/* 001F4 80B24854 00812021 */ addu $a0, $a0, $at -/* 001F8 80B24858 00042400 */ sll $a0, $a0, 16 -/* 001FC 80B2485C 46062200 */ add.s $f8, $f4, $f6 -/* 00200 80B24860 00042403 */ sra $a0, $a0, 16 -/* 00204 80B24864 0C01DE1C */ jal Math_SinS - ## sins? -/* 00208 80B24868 E6080164 */ swc1 $f8, 0x0164($s0) ## 00000164 -/* 0020C 80B2486C 46140402 */ mul.s $f16, $f0, $f20 -/* 00210 80B24870 C60A002C */ lwc1 $f10, 0x002C($s0) ## 0000002C -/* 00214 80B24874 86040032 */ lh $a0, 0x0032($s0) ## 00000032 -/* 00218 80B24878 46105481 */ sub.s $f18, $f10, $f16 -/* 0021C 80B2487C 0C01DE1C */ jal Math_SinS - ## sins? -/* 00220 80B24880 E612016C */ swc1 $f18, 0x016C($s0) ## 0000016C -/* 00224 80B24884 46140102 */ mul.s $f4, $f0, $f20 -/* 00228 80B24888 C6060024 */ lwc1 $f6, 0x0024($s0) ## 00000024 -/* 0022C 80B2488C 86040032 */ lh $a0, 0x0032($s0) ## 00000032 -/* 00230 80B24890 46062200 */ add.s $f8, $f4, $f6 -/* 00234 80B24894 0C01DE0D */ jal Math_CosS - ## coss? -/* 00238 80B24898 E6080170 */ swc1 $f8, 0x0170($s0) ## 00000170 -/* 0023C 80B2489C 46140282 */ mul.s $f10, $f0, $f20 -/* 00240 80B248A0 C610002C */ lwc1 $f16, 0x002C($s0) ## 0000002C -/* 00244 80B248A4 86040032 */ lh $a0, 0x0032($s0) ## 00000032 -/* 00248 80B248A8 34018000 */ ori $at, $zero, 0x8000 ## $at = 00008000 -/* 0024C 80B248AC 00812021 */ addu $a0, $a0, $at -/* 00250 80B248B0 00042400 */ sll $a0, $a0, 16 -/* 00254 80B248B4 46105480 */ add.s $f18, $f10, $f16 -/* 00258 80B248B8 00042403 */ sra $a0, $a0, 16 -/* 0025C 80B248BC 0C01DE1C */ jal Math_SinS - ## sins? -/* 00260 80B248C0 E6120178 */ swc1 $f18, 0x0178($s0) ## 00000178 -/* 00264 80B248C4 46140102 */ mul.s $f4, $f0, $f20 -/* 00268 80B248C8 C6060024 */ lwc1 $f6, 0x0024($s0) ## 00000024 -/* 0026C 80B248CC 86040032 */ lh $a0, 0x0032($s0) ## 00000032 -/* 00270 80B248D0 34018000 */ ori $at, $zero, 0x8000 ## $at = 00008000 -/* 00274 80B248D4 00812021 */ addu $a0, $a0, $at -/* 00278 80B248D8 00042400 */ sll $a0, $a0, 16 -/* 0027C 80B248DC 46062200 */ add.s $f8, $f4, $f6 -/* 00280 80B248E0 00042403 */ sra $a0, $a0, 16 -/* 00284 80B248E4 0C01DE0D */ jal Math_CosS - ## coss? -/* 00288 80B248E8 E608017C */ swc1 $f8, 0x017C($s0) ## 0000017C -/* 0028C 80B248EC 46140282 */ mul.s $f10, $f0, $f20 -/* 00290 80B248F0 C610002C */ lwc1 $f16, 0x002C($s0) ## 0000002C -/* 00294 80B248F4 86040032 */ lh $a0, 0x0032($s0) ## 00000032 -/* 00298 80B248F8 46105480 */ add.s $f18, $f10, $f16 -/* 0029C 80B248FC 0C01DE0D */ jal Math_CosS - ## coss? -/* 002A0 80B24900 E6120184 */ swc1 $f18, 0x0184($s0) ## 00000184 -/* 002A4 80B24904 C7A40048 */ lwc1 $f4, 0x0048($sp) -/* 002A8 80B24908 86040032 */ lh $a0, 0x0032($s0) ## 00000032 -/* 002AC 80B2490C 46040182 */ mul.s $f6, $f0, $f4 -/* 002B0 80B24910 4600320D */ trunc.w.s $f8, $f6 -/* 002B4 80B24914 44024000 */ mfc1 $v0, $f8 -/* 002B8 80B24918 00000000 */ nop -/* 002BC 80B2491C 00021400 */ sll $v0, $v0, 16 -/* 002C0 80B24920 00021403 */ sra $v0, $v0, 16 -/* 002C4 80B24924 0C01DE1C */ jal Math_SinS - ## sins? -/* 002C8 80B24928 A7A20046 */ sh $v0, 0x0046($sp) -/* 002CC 80B2492C C7AA0048 */ lwc1 $f10, 0x0048($sp) -/* 002D0 80B24930 87A20046 */ lh $v0, 0x0046($sp) -/* 002D4 80B24934 460A0402 */ mul.s $f16, $f0, $f10 -/* 002D8 80B24938 4600848D */ trunc.w.s $f18, $f16 -/* 002DC 80B2493C 44039000 */ mfc1 $v1, $f18 -/* 002E0 80B24940 00000000 */ nop -/* 002E4 80B24944 00032C00 */ sll $a1, $v1, 16 -/* 002E8 80B24948 04410004 */ bgez $v0, .L80B2495C -/* 002EC 80B2494C 00052C03 */ sra $a1, $a1, 16 -/* 002F0 80B24950 00021023 */ subu $v0, $zero, $v0 -/* 002F4 80B24954 00021400 */ sll $v0, $v0, 16 -/* 002F8 80B24958 00021403 */ sra $v0, $v0, 16 -.L80B2495C: -/* 002FC 80B2495C 44822000 */ mtc1 $v0, $f4 ## $f4 = 0.00 -/* 00300 80B24960 00032400 */ sll $a0, $v1, 16 -/* 00304 80B24964 00042403 */ sra $a0, $a0, 16 -/* 00308 80B24968 04810004 */ bgez $a0, .L80B2497C -/* 0030C 80B2496C 46802020 */ cvt.s.w $f0, $f4 -/* 00310 80B24970 00042823 */ subu $a1, $zero, $a0 -/* 00314 80B24974 00052C00 */ sll $a1, $a1, 16 -/* 00318 80B24978 00052C03 */ sra $a1, $a1, 16 -.L80B2497C: -/* 0031C 80B2497C 44853000 */ mtc1 $a1, $f6 ## $f6 = 0.00 -/* 00320 80B24980 E600019C */ swc1 $f0, 0x019C($s0) ## 0000019C -/* 00324 80B24984 E6000188 */ swc1 $f0, 0x0188($s0) ## 00000188 -/* 00328 80B24988 468030A0 */ cvt.s.w $f2, $f6 -/* 0032C 80B2498C E6020194 */ swc1 $f2, 0x0194($s0) ## 00000194 -/* 00330 80B24990 E6020190 */ swc1 $f2, 0x0190($s0) ## 00000190 -.L80B24994: -/* 00334 80B24994 8FB80030 */ lw $t8, 0x0030($sp) -/* 00338 80B24998 260501A0 */ addiu $a1, $s0, 0x01A0 ## $a1 = 000001A0 -/* 0033C 80B2499C 8F080000 */ lw $t0, 0x0000($t8) ## 00000000 -/* 00340 80B249A0 AE080038 */ sw $t0, 0x0038($s0) ## 00000038 -/* 00344 80B249A4 8F190004 */ lw $t9, 0x0004($t8) ## 00000004 -/* 00348 80B249A8 AE19003C */ sw $t9, 0x003C($s0) ## 0000003C -/* 0034C 80B249AC 8F080008 */ lw $t0, 0x0008($t8) ## 00000008 -/* 00350 80B249B0 AE080040 */ sw $t0, 0x0040($s0) ## 00000040 -/* 00354 80B249B4 AFA50034 */ sw $a1, 0x0034($sp) -/* 00358 80B249B8 0C0170D9 */ jal Collider_InitCylinder - -/* 0035C 80B249BC 8FA40054 */ lw $a0, 0x0054($sp) -/* 00360 80B249C0 3C0780B2 */ lui $a3, %hi(D_80B25830) ## $a3 = 80B20000 -/* 00364 80B249C4 8FA50034 */ lw $a1, 0x0034($sp) -/* 00368 80B249C8 24E75830 */ addiu $a3, $a3, %lo(D_80B25830) ## $a3 = 80B25830 -/* 0036C 80B249CC 8FA40054 */ lw $a0, 0x0054($sp) -/* 00370 80B249D0 0C01712B */ jal Collider_SetCylinder - -/* 00374 80B249D4 02003025 */ or $a2, $s0, $zero ## $a2 = 00000000 -/* 00378 80B249D8 44800000 */ mtc1 $zero, $f0 ## $f0 = 0.00 -/* 0037C 80B249DC 3C068003 */ lui $a2, %hi(ActorShadow_DrawCircle) -/* 00380 80B249E0 24C6B5EC */ addiu $a2, %lo(ActorShadow_DrawCircle) -/* 00384 80B249E4 44050000 */ mfc1 $a1, $f0 -/* 00388 80B249E8 44070000 */ mfc1 $a3, $f0 -/* 0038C 80B249EC 0C00AC78 */ jal ActorShape_Init - -/* 00390 80B249F0 260400B4 */ addiu $a0, $s0, 0x00B4 ## $a0 = 000000B4 -/* 00394 80B249F4 24090003 */ addiu $t1, $zero, 0x0003 ## $t1 = 00000003 -/* 00398 80B249F8 240A00FF */ addiu $t2, $zero, 0x00FF ## $t2 = 000000FF -/* 0039C 80B249FC A209001F */ sb $t1, 0x001F($s0) ## 0000001F -/* 003A0 80B24A00 A20A00AE */ sb $t2, 0x00AE($s0) ## 000000AE -/* 003A4 80B24A04 8FBF002C */ lw $ra, 0x002C($sp) -/* 003A8 80B24A08 8FB00028 */ lw $s0, 0x0028($sp) -/* 003AC 80B24A0C D7B40020 */ ldc1 $f20, 0x0020($sp) -/* 003B0 80B24A10 03E00008 */ jr $ra -/* 003B4 80B24A14 27BD0050 */ addiu $sp, $sp, 0x0050 ## $sp = 00000000 diff --git a/asm/non_matchings/overlays/actors/ovl_En_Trap/EnTrap_Update.s b/asm/non_matchings/overlays/actors/ovl_En_Trap/EnTrap_Update.s deleted file mode 100644 index 1f8cfd7528..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Trap/EnTrap_Update.s +++ /dev/null @@ -1,983 +0,0 @@ -.late_rodata -glabel D_80B25860 - .float 1.8 -glabel D_80B25864 - .float 1.8 -glabel D_80B25868 - .float 1.8 -glabel D_80B2586C - .float 65535.0 -glabel D_80B25870 - .float 65535.0 -glabel D_80B25874 - .float 65535.0 -glabel D_80B25878 - .float 65535.0 -glabel D_80B2587C - .float 65535.0 - -.text -glabel EnTrap_Update -/* 003E0 80B24A40 27BDFF58 */ addiu $sp, $sp, 0xFF58 ## $sp = FFFFFF58 -/* 003E4 80B24A44 AFBF003C */ sw $ra, 0x003C($sp) -/* 003E8 80B24A48 AFB00038 */ sw $s0, 0x0038($sp) -/* 003EC 80B24A4C AFA500AC */ sw $a1, 0x00AC($sp) -/* 003F0 80B24A50 848F0032 */ lh $t7, 0x0032($a0) ## 00000032 -/* 003F4 80B24A54 848E007E */ lh $t6, 0x007E($a0) ## 0000007E -/* 003F8 80B24A58 908201B2 */ lbu $v0, 0x01B2($a0) ## 000001B2 -/* 003FC 80B24A5C 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000 -/* 00400 80B24A60 01CF4023 */ subu $t0, $t6, $t7 -/* 00404 80B24A64 00084400 */ sll $t0, $t0, 16 -/* 00408 80B24A68 30580002 */ andi $t8, $v0, 0x0002 ## $t8 = 00000000 -/* 0040C 80B24A6C 00005025 */ or $t2, $zero, $zero ## $t2 = 00000000 -/* 00410 80B24A70 00005825 */ or $t3, $zero, $zero ## $t3 = 00000000 -/* 00414 80B24A74 13000011 */ beq $t8, $zero, .L80B24ABC -/* 00418 80B24A78 00084403 */ sra $t0, $t0, 16 -/* 0041C 80B24A7C 3059FFFD */ andi $t9, $v0, 0xFFFD ## $t9 = 00000000 -/* 00420 80B24A80 A09901B2 */ sb $t9, 0x01B2($a0) ## 000001B2 -/* 00424 80B24A84 8C8401AC */ lw $a0, 0x01AC($a0) ## 000001AC -/* 00428 80B24A88 A7A00090 */ sh $zero, 0x0090($sp) -/* 0042C 80B24A8C A7A8008A */ sh $t0, 0x008A($sp) -/* 00430 80B24A90 26050024 */ addiu $a1, $s0, 0x0024 ## $a1 = 00000024 -/* 00434 80B24A94 0C01E01A */ jal Math_Vec3f_Yaw - -/* 00438 80B24A98 24840024 */ addiu $a0, $a0, 0x0024 ## $a0 = 00000024 -/* 0043C 80B24A9C 860C0032 */ lh $t4, 0x0032($s0) ## 00000032 -/* 00440 80B24AA0 87A8008A */ lh $t0, 0x008A($sp) -/* 00444 80B24AA4 87AB0090 */ lh $t3, 0x0090($sp) -/* 00448 80B24AA8 004C4821 */ addu $t1, $v0, $t4 -/* 0044C 80B24AAC 00094C00 */ sll $t1, $t1, 16 -/* 00450 80B24AB0 00094C03 */ sra $t1, $t1, 16 -/* 00454 80B24AB4 A7A90094 */ sh $t1, 0x0094($sp) -/* 00458 80B24AB8 240A0001 */ addiu $t2, $zero, 0x0001 ## $t2 = 00000001 -.L80B24ABC: -/* 0045C 80B24ABC 920D01B1 */ lbu $t5, 0x01B1($s0) ## 000001B1 -/* 00460 80B24AC0 87A90094 */ lh $t1, 0x0094($sp) -/* 00464 80B24AC4 31AE0002 */ andi $t6, $t5, 0x0002 ## $t6 = 00000000 -/* 00468 80B24AC8 51C0006E */ beql $t6, $zero, .L80B24C84 -/* 0046C 80B24ACC 920F0114 */ lbu $t7, 0x0114($s0) ## 00000114 -/* 00470 80B24AD0 8E190024 */ lw $t9, 0x0024($s0) ## 00000024 -/* 00474 80B24AD4 27AF007C */ addiu $t7, $sp, 0x007C ## $t7 = FFFFFFD4 -/* 00478 80B24AD8 240E00FA */ addiu $t6, $zero, 0x00FA ## $t6 = 000000FA -/* 0047C 80B24ADC ADF90000 */ sw $t9, 0x0000($t7) ## FFFFFFD4 -/* 00480 80B24AE0 8E180028 */ lw $t8, 0x0028($s0) ## 00000028 -/* 00484 80B24AE4 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00488 80B24AE8 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000 -/* 0048C 80B24AEC ADF80004 */ sw $t8, 0x0004($t7) ## FFFFFFD8 -/* 00490 80B24AF0 8E19002C */ lw $t9, 0x002C($s0) ## 0000002C -/* 00494 80B24AF4 240600FA */ addiu $a2, $zero, 0x00FA ## $a2 = 000000FA -/* 00498 80B24AF8 00003825 */ or $a3, $zero, $zero ## $a3 = 00000000 -/* 0049C 80B24AFC ADF90008 */ sw $t9, 0x0008($t7) ## FFFFFFDC -/* 004A0 80B24B00 920C01B1 */ lbu $t4, 0x01B1($s0) ## 000001B1 -/* 004A4 80B24B04 318DFFFD */ andi $t5, $t4, 0xFFFD ## $t5 = 00000000 -/* 004A8 80B24B08 A20D01B1 */ sb $t5, 0x01B1($s0) ## 000001B1 -/* 004AC 80B24B0C A7AB0090 */ sh $t3, 0x0090($sp) -/* 004B0 80B24B10 A7AA0092 */ sh $t2, 0x0092($sp) -/* 004B4 80B24B14 A7A90094 */ sh $t1, 0x0094($sp) -/* 004B8 80B24B18 A7A8008A */ sh $t0, 0x008A($sp) -/* 004BC 80B24B1C 0C00D09B */ jal func_8003426C -/* 004C0 80B24B20 AFAE0010 */ sw $t6, 0x0010($sp) -/* 004C4 80B24B24 3C014120 */ lui $at, 0x4120 ## $at = 41200000 -/* 004C8 80B24B28 44810000 */ mtc1 $at, $f0 ## $f0 = 10.00 -/* 004CC 80B24B2C C7A40080 */ lwc1 $f4, 0x0080($sp) -/* 004D0 80B24B30 C7A80084 */ lwc1 $f8, 0x0084($sp) -/* 004D4 80B24B34 3C0180B2 */ lui $at, %hi(D_80B25860) ## $at = 80B20000 -/* 004D8 80B24B38 46002180 */ add.s $f6, $f4, $f0 -/* 004DC 80B24B3C C4305860 */ lwc1 $f16, %lo(D_80B25860)($at) -/* 004E0 80B24B40 240F0096 */ addiu $t7, $zero, 0x0096 ## $t7 = 00000096 -/* 004E4 80B24B44 46004280 */ add.s $f10, $f8, $f0 -/* 004E8 80B24B48 24180096 */ addiu $t8, $zero, 0x0096 ## $t8 = 00000096 -/* 004EC 80B24B4C 241900FA */ addiu $t9, $zero, 0x00FA ## $t9 = 000000FA -/* 004F0 80B24B50 240C00EB */ addiu $t4, $zero, 0x00EB ## $t4 = 000000EB -/* 004F4 80B24B54 240D00F5 */ addiu $t5, $zero, 0x00F5 ## $t5 = 000000F5 -/* 004F8 80B24B58 240E00FF */ addiu $t6, $zero, 0x00FF ## $t6 = 000000FF -/* 004FC 80B24B5C E7A60080 */ swc1 $f6, 0x0080($sp) -/* 00500 80B24B60 E7AA0084 */ swc1 $f10, 0x0084($sp) -/* 00504 80B24B64 AFAE0024 */ sw $t6, 0x0024($sp) -/* 00508 80B24B68 AFAD0020 */ sw $t5, 0x0020($sp) -/* 0050C 80B24B6C AFAC001C */ sw $t4, 0x001C($sp) -/* 00510 80B24B70 AFB90018 */ sw $t9, 0x0018($sp) -/* 00514 80B24B74 AFB80014 */ sw $t8, 0x0014($sp) -/* 00518 80B24B78 AFAF0010 */ sw $t7, 0x0010($sp) -/* 0051C 80B24B7C 8FA400AC */ lw $a0, 0x00AC($sp) -/* 00520 80B24B80 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000 -/* 00524 80B24B84 27A6007C */ addiu $a2, $sp, 0x007C ## $a2 = FFFFFFD4 -/* 00528 80B24B88 24070096 */ addiu $a3, $zero, 0x0096 ## $a3 = 00000096 -/* 0052C 80B24B8C 0C00A850 */ jal EffectSsEnIce_SpawnFlyingVec3f -/* 00530 80B24B90 E7B00028 */ swc1 $f16, 0x0028($sp) -/* 00534 80B24B94 3C014120 */ lui $at, 0x4120 ## $at = 41200000 -/* 00538 80B24B98 44812000 */ mtc1 $at, $f4 ## $f4 = 10.00 -/* 0053C 80B24B9C C7B2007C */ lwc1 $f18, 0x007C($sp) -/* 00540 80B24BA0 3C0141A0 */ lui $at, 0x41A0 ## $at = 41A00000 -/* 00544 80B24BA4 44815000 */ mtc1 $at, $f10 ## $f10 = 20.00 -/* 00548 80B24BA8 C7A80084 */ lwc1 $f8, 0x0084($sp) -/* 0054C 80B24BAC 46049180 */ add.s $f6, $f18, $f4 -/* 00550 80B24BB0 3C0180B2 */ lui $at, %hi(D_80B25864) ## $at = 80B20000 -/* 00554 80B24BB4 C4325864 */ lwc1 $f18, %lo(D_80B25864)($at) -/* 00558 80B24BB8 460A4401 */ sub.s $f16, $f8, $f10 -/* 0055C 80B24BBC 240F0096 */ addiu $t7, $zero, 0x0096 ## $t7 = 00000096 -/* 00560 80B24BC0 24180096 */ addiu $t8, $zero, 0x0096 ## $t8 = 00000096 -/* 00564 80B24BC4 241900FA */ addiu $t9, $zero, 0x00FA ## $t9 = 000000FA -/* 00568 80B24BC8 240C00EB */ addiu $t4, $zero, 0x00EB ## $t4 = 000000EB -/* 0056C 80B24BCC 240D00F5 */ addiu $t5, $zero, 0x00F5 ## $t5 = 000000F5 -/* 00570 80B24BD0 240E00FF */ addiu $t6, $zero, 0x00FF ## $t6 = 000000FF -/* 00574 80B24BD4 E7A6007C */ swc1 $f6, 0x007C($sp) -/* 00578 80B24BD8 E7B00084 */ swc1 $f16, 0x0084($sp) -/* 0057C 80B24BDC AFAE0024 */ sw $t6, 0x0024($sp) -/* 00580 80B24BE0 AFAD0020 */ sw $t5, 0x0020($sp) -/* 00584 80B24BE4 AFAC001C */ sw $t4, 0x001C($sp) -/* 00588 80B24BE8 AFB90018 */ sw $t9, 0x0018($sp) -/* 0058C 80B24BEC AFB80014 */ sw $t8, 0x0014($sp) -/* 00590 80B24BF0 AFAF0010 */ sw $t7, 0x0010($sp) -/* 00594 80B24BF4 8FA400AC */ lw $a0, 0x00AC($sp) -/* 00598 80B24BF8 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000 -/* 0059C 80B24BFC 27A6007C */ addiu $a2, $sp, 0x007C ## $a2 = FFFFFFD4 -/* 005A0 80B24C00 24070096 */ addiu $a3, $zero, 0x0096 ## $a3 = 00000096 -/* 005A4 80B24C04 0C00A850 */ jal EffectSsEnIce_SpawnFlyingVec3f -/* 005A8 80B24C08 E7B20028 */ swc1 $f18, 0x0028($sp) -/* 005AC 80B24C0C 3C0141A0 */ lui $at, 0x41A0 ## $at = 41A00000 -/* 005B0 80B24C10 44813000 */ mtc1 $at, $f6 ## $f6 = 20.00 -/* 005B4 80B24C14 C7A4007C */ lwc1 $f4, 0x007C($sp) -/* 005B8 80B24C18 3C0180B2 */ lui $at, %hi(D_80B25868) ## $at = 80B20000 -/* 005BC 80B24C1C C42A5868 */ lwc1 $f10, %lo(D_80B25868)($at) -/* 005C0 80B24C20 46062201 */ sub.s $f8, $f4, $f6 -/* 005C4 80B24C24 240F0096 */ addiu $t7, $zero, 0x0096 ## $t7 = 00000096 -/* 005C8 80B24C28 24180096 */ addiu $t8, $zero, 0x0096 ## $t8 = 00000096 -/* 005CC 80B24C2C 241900FA */ addiu $t9, $zero, 0x00FA ## $t9 = 000000FA -/* 005D0 80B24C30 240C00EB */ addiu $t4, $zero, 0x00EB ## $t4 = 000000EB -/* 005D4 80B24C34 240D00F5 */ addiu $t5, $zero, 0x00F5 ## $t5 = 000000F5 -/* 005D8 80B24C38 240E00FF */ addiu $t6, $zero, 0x00FF ## $t6 = 000000FF -/* 005DC 80B24C3C E7A8007C */ swc1 $f8, 0x007C($sp) -/* 005E0 80B24C40 AFAE0024 */ sw $t6, 0x0024($sp) -/* 005E4 80B24C44 AFAD0020 */ sw $t5, 0x0020($sp) -/* 005E8 80B24C48 AFAC001C */ sw $t4, 0x001C($sp) -/* 005EC 80B24C4C AFB90018 */ sw $t9, 0x0018($sp) -/* 005F0 80B24C50 AFB80014 */ sw $t8, 0x0014($sp) -/* 005F4 80B24C54 AFAF0010 */ sw $t7, 0x0010($sp) -/* 005F8 80B24C58 8FA400AC */ lw $a0, 0x00AC($sp) -/* 005FC 80B24C5C 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000 -/* 00600 80B24C60 27A6007C */ addiu $a2, $sp, 0x007C ## $a2 = FFFFFFD4 -/* 00604 80B24C64 24070096 */ addiu $a3, $zero, 0x0096 ## $a3 = 00000096 -/* 00608 80B24C68 0C00A850 */ jal EffectSsEnIce_SpawnFlyingVec3f -/* 0060C 80B24C6C E7AA0028 */ swc1 $f10, 0x0028($sp) -/* 00610 80B24C70 87A8008A */ lh $t0, 0x008A($sp) -/* 00614 80B24C74 87A90094 */ lh $t1, 0x0094($sp) -/* 00618 80B24C78 87AA0092 */ lh $t2, 0x0092($sp) -/* 0061C 80B24C7C 87AB0090 */ lh $t3, 0x0090($sp) -/* 00620 80B24C80 920F0114 */ lbu $t7, 0x0114($s0) ## 00000114 -.L80B24C84: -/* 00624 80B24C84 3C014220 */ lui $at, 0x4220 ## $at = 42200000 -/* 00628 80B24C88 55E002BB */ bnel $t7, $zero, .L80B25778 -/* 0062C 80B24C8C 260501A0 */ addiu $a1, $s0, 0x01A0 ## $a1 = 000001A0 -/* 00630 80B24C90 8E02014C */ lw $v0, 0x014C($s0) ## 0000014C -/* 00634 80B24C94 44818000 */ mtc1 $at, $f16 ## $f16 = 40.00 -/* 00638 80B24C98 10400002 */ beq $v0, $zero, .L80B24CA4 -/* 0063C 80B24C9C 2458FFFF */ addiu $t8, $v0, 0xFFFF ## $t8 = FFFFFFFF -/* 00640 80B24CA0 AE18014C */ sw $t8, 0x014C($s0) ## 0000014C -.L80B24CA4: -/* 00644 80B24CA4 C6120090 */ lwc1 $f18, 0x0090($s0) ## 00000090 -/* 00648 80B24CA8 4610903E */ c.le.s $f18, $f16 -/* 0064C 80B24CAC 00000000 */ nop -/* 00650 80B24CB0 45020037 */ bc1fl .L80B24D90 -/* 00654 80B24CB4 8602001C */ lh $v0, 0x001C($s0) ## 0000001C -/* 00658 80B24CB8 8E19014C */ lw $t9, 0x014C($s0) ## 0000014C -/* 0065C 80B24CBC 3C0141A0 */ lui $at, 0x41A0 ## $at = 41A00000 -/* 00660 80B24CC0 57200033 */ bnel $t9, $zero, .L80B24D90 -/* 00664 80B24CC4 8602001C */ lh $v0, 0x001C($s0) ## 0000001C -/* 00668 80B24CC8 44812000 */ mtc1 $at, $f4 ## $f4 = 20.00 -/* 0066C 80B24CCC C6060094 */ lwc1 $f6, 0x0094($s0) ## 00000094 -/* 00670 80B24CD0 4604303E */ c.le.s $f6, $f4 -/* 00674 80B24CD4 00000000 */ nop -/* 00678 80B24CD8 4502002D */ bc1fl .L80B24D90 -/* 0067C 80B24CDC 8602001C */ lh $v0, 0x001C($s0) ## 0000001C -/* 00680 80B24CE0 860C001C */ lh $t4, 0x001C($s0) ## 0000001C -/* 00684 80B24CE4 318D0030 */ andi $t5, $t4, 0x0030 ## $t5 = 00000000 -/* 00688 80B24CE8 55A0000E */ bnel $t5, $zero, .L80B24D24 -/* 0068C 80B24CEC 860E008A */ lh $t6, 0x008A($s0) ## 0000008A -/* 00690 80B24CF0 86070152 */ lh $a3, 0x0152($s0) ## 00000152 -/* 00694 80B24CF4 860E008A */ lh $t6, 0x008A($s0) ## 0000008A -/* 00698 80B24CF8 24ECC000 */ addiu $t4, $a3, 0xC000 ## $t4 = FFFFC000 -/* 0069C 80B24CFC 00EE7823 */ subu $t7, $a3, $t6 -/* 006A0 80B24D00 000FC400 */ sll $t8, $t7, 16 -/* 006A4 80B24D04 0018CC03 */ sra $t9, $t8, 16 -/* 006A8 80B24D08 07200003 */ bltz $t9, .L80B24D18 -/* 006AC 80B24D0C 24ED4000 */ addiu $t5, $a3, 0x4000 ## $t5 = 00004000 -/* 006B0 80B24D10 10000005 */ beq $zero, $zero, .L80B24D28 -/* 006B4 80B24D14 A7AC0096 */ sh $t4, 0x0096($sp) -.L80B24D18: -/* 006B8 80B24D18 10000003 */ beq $zero, $zero, .L80B24D28 -/* 006BC 80B24D1C A7AD0096 */ sh $t5, 0x0096($sp) -/* 006C0 80B24D20 860E008A */ lh $t6, 0x008A($s0) ## 0000008A -.L80B24D24: -/* 006C4 80B24D24 A7AE0096 */ sh $t6, 0x0096($sp) -.L80B24D28: -/* 006C8 80B24D28 8FA400AC */ lw $a0, 0x00AC($sp) -/* 006CC 80B24D2C 3C190001 */ lui $t9, 0x0001 ## $t9 = 00010000 -/* 006D0 80B24D30 A7A8008A */ sh $t0, 0x008A($sp) -/* 006D4 80B24D34 A7A90094 */ sh $t1, 0x0094($sp) -/* 006D8 80B24D38 A7AA0092 */ sh $t2, 0x0092($sp) -/* 006DC 80B24D3C A7AB0090 */ sh $t3, 0x0090($sp) -/* 006E0 80B24D40 0324C821 */ addu $t9, $t9, $a0 -/* 006E4 80B24D44 8F391D58 */ lw $t9, 0x1D58($t9) ## 00011D58 -/* 006E8 80B24D48 2405FFFC */ addiu $a1, $zero, 0xFFFC ## $a1 = FFFFFFFC -/* 006EC 80B24D4C 0320F809 */ jalr $ra, $t9 -/* 006F0 80B24D50 00000000 */ nop -/* 006F4 80B24D54 3C0140C0 */ lui $at, 0x40C0 ## $at = 40C00000 -/* 006F8 80B24D58 44810000 */ mtc1 $at, $f0 ## $f0 = 6.00 -/* 006FC 80B24D5C 8FA400AC */ lw $a0, 0x00AC($sp) -/* 00700 80B24D60 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000 -/* 00704 80B24D64 44060000 */ mfc1 $a2, $f0 -/* 00708 80B24D68 87A70096 */ lh $a3, 0x0096($sp) -/* 0070C 80B24D6C 0C00BDE8 */ jal func_8002F7A0 -/* 00710 80B24D70 E7A00010 */ swc1 $f0, 0x0010($sp) -/* 00714 80B24D74 87A8008A */ lh $t0, 0x008A($sp) -/* 00718 80B24D78 87A90094 */ lh $t1, 0x0094($sp) -/* 0071C 80B24D7C 87AA0092 */ lh $t2, 0x0092($sp) -/* 00720 80B24D80 87AB0090 */ lh $t3, 0x0090($sp) -/* 00724 80B24D84 2418000F */ addiu $t8, $zero, 0x000F ## $t8 = 0000000F -/* 00728 80B24D88 AE18014C */ sw $t8, 0x014C($s0) ## 0000014C -/* 0072C 80B24D8C 8602001C */ lh $v0, 0x001C($s0) ## 0000001C -.L80B24D90: -/* 00730 80B24D90 304C0010 */ andi $t4, $v0, 0x0010 ## $t4 = 00000000 -/* 00734 80B24D94 51800069 */ beql $t4, $zero, .L80B24F3C -/* 00738 80B24D98 304C0020 */ andi $t4, $v0, 0x0020 ## $t4 = 00000000 -/* 0073C 80B24D9C 960D0088 */ lhu $t5, 0x0088($s0) ## 00000088 -/* 00740 80B24DA0 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000 -/* 00744 80B24DA4 44814000 */ mtc1 $at, $f8 ## $f8 = 1.00 -/* 00748 80B24DA8 31AE0008 */ andi $t6, $t5, 0x0008 ## $t6 = 00000000 -/* 0074C 80B24DAC 11C0000B */ beq $t6, $zero, .L80B24DDC -/* 00750 80B24DB0 E6080154 */ swc1 $f8, 0x0154($s0) ## 00000154 -/* 00754 80B24DB4 05000003 */ bltz $t0, .L80B24DC4 -/* 00758 80B24DB8 00081823 */ subu $v1, $zero, $t0 -/* 0075C 80B24DBC 10000001 */ beq $zero, $zero, .L80B24DC4 -/* 00760 80B24DC0 01001825 */ or $v1, $t0, $zero ## $v1 = 00000000 -.L80B24DC4: -/* 00764 80B24DC4 28616000 */ slti $at, $v1, 0x6000 -/* 00768 80B24DC8 54200005 */ bnel $at, $zero, .L80B24DE0 -/* 0076C 80B24DCC 44801000 */ mtc1 $zero, $f2 ## $f2 = 0.00 -/* 00770 80B24DD0 44801000 */ mtc1 $zero, $f2 ## $f2 = 0.00 -/* 00774 80B24DD4 00000000 */ nop -/* 00778 80B24DD8 E6020154 */ swc1 $f2, 0x0154($s0) ## 00000154 -.L80B24DDC: -/* 0077C 80B24DDC 44801000 */ mtc1 $zero, $f2 ## $f2 = 0.00 -.L80B24DE0: -/* 00780 80B24DE0 C60A0154 */ lwc1 $f10, 0x0154($s0) ## 00000154 -/* 00784 80B24DE4 260F0024 */ addiu $t7, $s0, 0x0024 ## $t7 = 00000024 -/* 00788 80B24DE8 460A1032 */ c.eq.s $f2, $f10 -/* 0078C 80B24DEC 00000000 */ nop -/* 00790 80B24DF0 4501002B */ bc1t .L80B24EA0 -/* 00794 80B24DF4 00000000 */ nop -/* 00798 80B24DF8 86040032 */ lh $a0, 0x0032($s0) ## 00000032 -/* 0079C 80B24DFC A7AA0092 */ sh $t2, 0x0092($sp) -/* 007A0 80B24E00 0C01DE1C */ jal Math_SinS - ## sins? -/* 007A4 80B24E04 AFAF0048 */ sw $t7, 0x0048($sp) -/* 007A8 80B24E08 3C0141F0 */ lui $at, 0x41F0 ## $at = 41F00000 -/* 007AC 80B24E0C 44818000 */ mtc1 $at, $f16 ## $f16 = 30.00 -/* 007B0 80B24E10 C6040024 */ lwc1 $f4, 0x0024($s0) ## 00000024 -/* 007B4 80B24E14 46100482 */ mul.s $f18, $f0, $f16 -/* 007B8 80B24E18 46049180 */ add.s $f6, $f18, $f4 -/* 007BC 80B24E1C E7A60070 */ swc1 $f6, 0x0070($sp) -/* 007C0 80B24E20 0C01DE0D */ jal Math_CosS - ## coss? -/* 007C4 80B24E24 86040032 */ lh $a0, 0x0032($s0) ## 00000032 -/* 007C8 80B24E28 3C0141F0 */ lui $at, 0x41F0 ## $at = 41F00000 -/* 007CC 80B24E2C 44814000 */ mtc1 $at, $f8 ## $f8 = 30.00 -/* 007D0 80B24E30 C610002C */ lwc1 $f16, 0x002C($s0) ## 0000002C -/* 007D4 80B24E34 8FA400AC */ lw $a0, 0x00AC($sp) -/* 007D8 80B24E38 46080282 */ mul.s $f10, $f0, $f8 -/* 007DC 80B24E3C 27B90060 */ addiu $t9, $sp, 0x0060 ## $t9 = FFFFFFB8 -/* 007E0 80B24E40 24180001 */ addiu $t8, $zero, 0x0001 ## $t8 = 00000001 -/* 007E4 80B24E44 240C0001 */ addiu $t4, $zero, 0x0001 ## $t4 = 00000001 -/* 007E8 80B24E48 240D0001 */ addiu $t5, $zero, 0x0001 ## $t5 = 00000001 -/* 007EC 80B24E4C 27AE005C */ addiu $t6, $sp, 0x005C ## $t6 = FFFFFFB4 -/* 007F0 80B24E50 8FA50048 */ lw $a1, 0x0048($sp) -/* 007F4 80B24E54 46105480 */ add.s $f18, $f10, $f16 -/* 007F8 80B24E58 27A60070 */ addiu $a2, $sp, 0x0070 ## $a2 = FFFFFFC8 -/* 007FC 80B24E5C 27A70064 */ addiu $a3, $sp, 0x0064 ## $a3 = FFFFFFBC -/* 00800 80B24E60 248407C0 */ addiu $a0, $a0, 0x07C0 ## $a0 = 000007C0 -/* 00804 80B24E64 E7B20078 */ swc1 $f18, 0x0078($sp) -/* 00808 80B24E68 C6040028 */ lwc1 $f4, 0x0028($s0) ## 00000028 -/* 0080C 80B24E6C AFAE0024 */ sw $t6, 0x0024($sp) -/* 00810 80B24E70 AFAD0020 */ sw $t5, 0x0020($sp) -/* 00814 80B24E74 AFA0001C */ sw $zero, 0x001C($sp) -/* 00818 80B24E78 AFAC0018 */ sw $t4, 0x0018($sp) -/* 0081C 80B24E7C AFB80014 */ sw $t8, 0x0014($sp) -/* 00820 80B24E80 AFB90010 */ sw $t9, 0x0010($sp) -/* 00824 80B24E84 0C00F7A1 */ jal BgCheck_EntityLineTest1 -/* 00828 80B24E88 E7A40074 */ swc1 $f4, 0x0074($sp) -/* 0082C 80B24E8C 44801000 */ mtc1 $zero, $f2 ## $f2 = 0.00 -/* 00830 80B24E90 24010001 */ addiu $at, $zero, 0x0001 ## $at = 00000001 -/* 00834 80B24E94 14410002 */ bne $v0, $at, .L80B24EA0 -/* 00838 80B24E98 87AA0092 */ lh $t2, 0x0092($sp) -/* 0083C 80B24E9C E6020154 */ swc1 $f2, 0x0154($s0) ## 00000154 -.L80B24EA0: -/* 00840 80B24EA0 51400018 */ beql $t2, $zero, .L80B24F04 -/* 00844 80B24EA4 C6080154 */ lwc1 $f8, 0x0154($s0) ## 00000154 -/* 00848 80B24EA8 C6060154 */ lwc1 $f6, 0x0154($s0) ## 00000154 -/* 0084C 80B24EAC 46061032 */ c.eq.s $f2, $f6 -/* 00850 80B24EB0 00000000 */ nop -/* 00854 80B24EB4 45030013 */ bc1tl .L80B24F04 -/* 00858 80B24EB8 C6080154 */ lwc1 $f8, 0x0154($s0) ## 00000154 -/* 0085C 80B24EBC 8E0501AC */ lw $a1, 0x01AC($s0) ## 000001AC -/* 00860 80B24EC0 26040024 */ addiu $a0, $s0, 0x0024 ## $a0 = 00000024 -/* 00864 80B24EC4 0C01E01A */ jal Math_Vec3f_Yaw - -/* 00868 80B24EC8 24A50024 */ addiu $a1, $a1, 0x0024 ## $a1 = 00000024 -/* 0086C 80B24ECC 860F0032 */ lh $t7, 0x0032($s0) ## 00000032 -/* 00870 80B24ED0 44801000 */ mtc1 $zero, $f2 ## $f2 = 0.00 -/* 00874 80B24ED4 004F4823 */ subu $t1, $v0, $t7 -/* 00878 80B24ED8 00094C00 */ sll $t1, $t1, 16 -/* 0087C 80B24EDC 00094C03 */ sra $t1, $t1, 16 -/* 00880 80B24EE0 05200003 */ bltz $t1, .L80B24EF0 -/* 00884 80B24EE4 00091823 */ subu $v1, $zero, $t1 -/* 00888 80B24EE8 10000001 */ beq $zero, $zero, .L80B24EF0 -/* 0088C 80B24EEC 01201825 */ or $v1, $t1, $zero ## $v1 = 00000000 -.L80B24EF0: -/* 00890 80B24EF0 28611000 */ slti $at, $v1, 0x1000 -/* 00894 80B24EF4 50200003 */ beql $at, $zero, .L80B24F04 -/* 00898 80B24EF8 C6080154 */ lwc1 $f8, 0x0154($s0) ## 00000154 -/* 0089C 80B24EFC E6020154 */ swc1 $f2, 0x0154($s0) ## 00000154 -/* 008A0 80B24F00 C6080154 */ lwc1 $f8, 0x0154($s0) ## 00000154 -.L80B24F04: -/* 008A4 80B24F04 34018000 */ ori $at, $zero, 0x8000 ## $at = 00008000 -/* 008A8 80B24F08 46081032 */ c.eq.s $f2, $f8 -/* 008AC 80B24F0C 00000000 */ nop -/* 008B0 80B24F10 450001FA */ bc1f .L80B256FC -/* 008B4 80B24F14 00000000 */ nop -/* 008B8 80B24F18 86190032 */ lh $t9, 0x0032($s0) ## 00000032 -/* 008BC 80B24F1C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 008C0 80B24F20 2405287D */ addiu $a1, $zero, 0x287D ## $a1 = 0000287D -/* 008C4 80B24F24 0321C021 */ addu $t8, $t9, $at -/* 008C8 80B24F28 0C00BE0A */ jal Audio_PlayActorSound2 - -/* 008CC 80B24F2C A6180032 */ sh $t8, 0x0032($s0) ## 00000032 -/* 008D0 80B24F30 100001F2 */ beq $zero, $zero, .L80B256FC -/* 008D4 80B24F34 00000000 */ nop -/* 008D8 80B24F38 304C0020 */ andi $t4, $v0, 0x0020 ## $t4 = 00000000 -.L80B24F3C: -/* 008DC 80B24F3C 1180002E */ beq $t4, $zero, .L80B24FF8 -/* 008E0 80B24F40 260D0024 */ addiu $t5, $s0, 0x0024 ## $t5 = 00000024 -/* 008E4 80B24F44 86040152 */ lh $a0, 0x0152($s0) ## 00000152 -/* 008E8 80B24F48 0C01DE1C */ jal Math_SinS - ## sins? -/* 008EC 80B24F4C AFAD0048 */ sw $t5, 0x0048($sp) -/* 008F0 80B24F50 44801000 */ mtc1 $zero, $f2 ## $f2 = 0.00 -/* 008F4 80B24F54 860E0152 */ lh $t6, 0x0152($s0) ## 00000152 -/* 008F8 80B24F58 860F0150 */ lh $t7, 0x0150($s0) ## 00000150 -/* 008FC 80B24F5C 4602003C */ c.lt.s $f0, $f2 -/* 00900 80B24F60 01CFC821 */ addu $t9, $t6, $t7 -/* 00904 80B24F64 A6190152 */ sh $t9, 0x0152($s0) ## 00000152 -/* 00908 80B24F68 4500000B */ bc1f .L80B24F98 -/* 0090C 80B24F6C 00000000 */ nop -/* 00910 80B24F70 0C01DE1C */ jal Math_SinS - ## sins? -/* 00914 80B24F74 86040152 */ lh $a0, 0x0152($s0) ## 00000152 -/* 00918 80B24F78 44801000 */ mtc1 $zero, $f2 ## $f2 = 0.00 -/* 0091C 80B24F7C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00920 80B24F80 4600103E */ c.le.s $f2, $f0 -/* 00924 80B24F84 00000000 */ nop -/* 00928 80B24F88 45000003 */ bc1f .L80B24F98 -/* 0092C 80B24F8C 00000000 */ nop -/* 00930 80B24F90 0C00BE0A */ jal Audio_PlayActorSound2 - -/* 00934 80B24F94 240528D2 */ addiu $a1, $zero, 0x28D2 ## $a1 = 000028D2 -.L80B24F98: -/* 00938 80B24F98 0C01DE1C */ jal Math_SinS - ## sins? -/* 0093C 80B24F9C 86040152 */ lh $a0, 0x0152($s0) ## 00000152 -/* 00940 80B24FA0 C60A0154 */ lwc1 $f10, 0x0154($s0) ## 00000154 -/* 00944 80B24FA4 C6120008 */ lwc1 $f18, 0x0008($s0) ## 00000008 -/* 00948 80B24FA8 86040152 */ lh $a0, 0x0152($s0) ## 00000152 -/* 0094C 80B24FAC 460A0402 */ mul.s $f16, $f0, $f10 -/* 00950 80B24FB0 46128100 */ add.s $f4, $f16, $f18 -/* 00954 80B24FB4 0C01DE0D */ jal Math_CosS - ## coss? -/* 00958 80B24FB8 E6040024 */ swc1 $f4, 0x0024($s0) ## 00000024 -/* 0095C 80B24FBC C6060154 */ lwc1 $f6, 0x0154($s0) ## 00000154 -/* 00960 80B24FC0 C60A0010 */ lwc1 $f10, 0x0010($s0) ## 00000010 -/* 00964 80B24FC4 C6120080 */ lwc1 $f18, 0x0080($s0) ## 00000080 -/* 00968 80B24FC8 46060202 */ mul.s $f8, $f0, $f6 -/* 0096C 80B24FCC E6120028 */ swc1 $f18, 0x0028($s0) ## 00000028 -/* 00970 80B24FD0 460A4400 */ add.s $f16, $f8, $f10 -/* 00974 80B24FD4 E610002C */ swc1 $f16, 0x002C($s0) ## 0000002C -/* 00978 80B24FD8 8FB80048 */ lw $t8, 0x0048($sp) -/* 0097C 80B24FDC 8F0D0000 */ lw $t5, 0x0000($t8) ## 00000000 -/* 00980 80B24FE0 AE0D0100 */ sw $t5, 0x0100($s0) ## 00000100 -/* 00984 80B24FE4 8F0C0004 */ lw $t4, 0x0004($t8) ## 00000004 -/* 00988 80B24FE8 AE0C0104 */ sw $t4, 0x0104($s0) ## 00000104 -/* 0098C 80B24FEC 8F0D0008 */ lw $t5, 0x0008($t8) ## 00000008 -/* 00990 80B24FF0 100001C2 */ beq $zero, $zero, .L80B256FC -/* 00994 80B24FF4 AE0D0108 */ sw $t5, 0x0108($s0) ## 00000108 -.L80B24FF8: -/* 00998 80B24FF8 44801000 */ mtc1 $zero, $f2 ## $f2 = 0.00 -/* 0099C 80B24FFC C6000154 */ lwc1 $f0, 0x0154($s0) ## 00000154 -/* 009A0 80B25000 46001032 */ c.eq.s $f2, $f0 -/* 009A4 80B25004 00000000 */ nop -/* 009A8 80B25008 45030120 */ bc1tl .L80B2548C -/* 009AC 80B2500C C6040008 */ lwc1 $f4, 0x0008($s0) ## 00000008 -/* 009B0 80B25010 86070152 */ lh $a3, 0x0152($s0) ## 00000152 -/* 009B4 80B25014 24018000 */ addiu $at, $zero, 0x8000 ## $at = FFFF8000 -/* 009B8 80B25018 30590002 */ andi $t9, $v0, 0x0002 ## $t9 = 00000000 -/* 009BC 80B2501C 10E1008D */ beq $a3, $at, .L80B25254 -/* 009C0 80B25020 2401C000 */ addiu $at, $zero, 0xC000 ## $at = FFFFC000 -/* 009C4 80B25024 10E100D0 */ beq $a3, $at, .L80B25368 -/* 009C8 80B25028 304E0008 */ andi $t6, $v0, 0x0008 ## $t6 = 00000000 -/* 009CC 80B2502C 10E00006 */ beq $a3, $zero, .L80B25048 -/* 009D0 80B25030 304E0001 */ andi $t6, $v0, 0x0001 ## $t6 = 00000000 -/* 009D4 80B25034 24014000 */ addiu $at, $zero, 0x4000 ## $at = 00004000 -/* 009D8 80B25038 10E10046 */ beq $a3, $at, .L80B25154 -/* 009DC 80B2503C 304C0004 */ andi $t4, $v0, 0x0004 ## $t4 = 00000000 -/* 009E0 80B25040 10000109 */ beq $zero, $zero, .L80B25468 -/* 009E4 80B25044 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -.L80B25048: -/* 009E8 80B25048 55C00005 */ bnel $t6, $zero, .L80B25060 -/* 009EC 80B2504C 960F0088 */ lhu $t7, 0x0088($s0) ## 00000088 -/* 009F0 80B25050 E6020154 */ swc1 $f2, 0x0154($s0) ## 00000154 -/* 009F4 80B25054 1000000E */ beq $zero, $zero, .L80B25090 -/* 009F8 80B25058 C6000154 */ lwc1 $f0, 0x0154($s0) ## 00000154 -/* 009FC 80B2505C 960F0088 */ lhu $t7, 0x0088($s0) ## 00000088 -.L80B25060: -/* 00A00 80B25060 31F90008 */ andi $t9, $t7, 0x0008 ## $t9 = 00000000 -/* 00A04 80B25064 1320000A */ beq $t9, $zero, .L80B25090 -/* 00A08 80B25068 00000000 */ nop -/* 00A0C 80B2506C 05000003 */ bltz $t0, .L80B2507C -/* 00A10 80B25070 00081823 */ subu $v1, $zero, $t0 -/* 00A14 80B25074 10000001 */ beq $zero, $zero, .L80B2507C -/* 00A18 80B25078 01001825 */ or $v1, $t0, $zero ## $v1 = 00000000 -.L80B2507C: -/* 00A1C 80B2507C 28616001 */ slti $at, $v1, 0x6001 -/* 00A20 80B25080 14200003 */ bne $at, $zero, .L80B25090 -/* 00A24 80B25084 00000000 */ nop -/* 00A28 80B25088 E6020154 */ swc1 $f2, 0x0154($s0) ## 00000154 -/* 00A2C 80B2508C C6000154 */ lwc1 $f0, 0x0154($s0) ## 00000154 -.L80B25090: -/* 00A30 80B25090 5140000F */ beql $t2, $zero, .L80B250D0 -/* 00A34 80B25094 46001032 */ c.eq.s $f2, $f0 -/* 00A38 80B25098 46001032 */ c.eq.s $f2, $f0 -/* 00A3C 80B2509C 00000000 */ nop -/* 00A40 80B250A0 4503000B */ bc1tl .L80B250D0 -/* 00A44 80B250A4 46001032 */ c.eq.s $f2, $f0 -/* 00A48 80B250A8 05200003 */ bltz $t1, .L80B250B8 -/* 00A4C 80B250AC 00091823 */ subu $v1, $zero, $t1 -/* 00A50 80B250B0 10000001 */ beq $zero, $zero, .L80B250B8 -/* 00A54 80B250B4 01201825 */ or $v1, $t1, $zero ## $v1 = 00000000 -.L80B250B8: -/* 00A58 80B250B8 28616001 */ slti $at, $v1, 0x6001 -/* 00A5C 80B250BC 54200004 */ bnel $at, $zero, .L80B250D0 -/* 00A60 80B250C0 46001032 */ c.eq.s $f2, $f0 -/* 00A64 80B250C4 E6020154 */ swc1 $f2, 0x0154($s0) ## 00000154 -/* 00A68 80B250C8 C6000154 */ lwc1 $f0, 0x0154($s0) ## 00000154 -/* 00A6C 80B250CC 46001032 */ c.eq.s $f2, $f0 -.L80B250D0: -/* 00A70 80B250D0 3C0180B2 */ lui $at, %hi(D_80B2586C) ## $at = 80B20000 -/* 00A74 80B250D4 4501001D */ bc1t .L80B2514C -/* 00A78 80B250D8 00000000 */ nop -/* 00A7C 80B250DC C424586C */ lwc1 $f4, %lo(D_80B2586C)($at) -/* 00A80 80B250E0 26180024 */ addiu $t8, $s0, 0x0024 ## $t8 = 00000024 -/* 00A84 80B250E4 AFB80048 */ sw $t8, 0x0048($sp) -/* 00A88 80B250E8 46002032 */ c.eq.s $f4, $f0 -/* 00A8C 80B250EC 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00A90 80B250F0 45020006 */ bc1fl .L80B2510C -/* 00A94 80B250F4 8E050178 */ lw $a1, 0x0178($s0) ## 00000178 -/* 00A98 80B250F8 0C00BE0A */ jal Audio_PlayActorSound2 - -/* 00A9C 80B250FC 2405287D */ addiu $a1, $zero, 0x287D ## $a1 = 0000287D -/* 00AA0 80B25100 44801000 */ mtc1 $zero, $f2 ## $f2 = 0.00 -/* 00AA4 80B25104 00000000 */ nop -/* 00AA8 80B25108 8E050178 */ lw $a1, 0x0178($s0) ## 00000178 -.L80B2510C: -/* 00AAC 80B2510C 8E07019C */ lw $a3, 0x019C($s0) ## 0000019C -/* 00AB0 80B25110 E7A20010 */ swc1 $f2, 0x0010($sp) -/* 00AB4 80B25114 2604002C */ addiu $a0, $s0, 0x002C ## $a0 = 0000002C -/* 00AB8 80B25118 0C01E0C4 */ jal Math_SmoothStepToF - -/* 00ABC 80B2511C 3C063F80 */ lui $a2, 0x3F80 ## $a2 = 3F800000 -/* 00AC0 80B25120 44801000 */ mtc1 $zero, $f2 ## $f2 = 0.00 -/* 00AC4 80B25124 E6000154 */ swc1 $f0, 0x0154($s0) ## 00000154 -/* 00AC8 80B25128 8E050170 */ lw $a1, 0x0170($s0) ## 00000170 -/* 00ACC 80B2512C 8E070194 */ lw $a3, 0x0194($s0) ## 00000194 -/* 00AD0 80B25130 8FA40048 */ lw $a0, 0x0048($sp) -/* 00AD4 80B25134 3C063F80 */ lui $a2, 0x3F80 ## $a2 = 3F800000 -/* 00AD8 80B25138 0C01E0C4 */ jal Math_SmoothStepToF - -/* 00ADC 80B2513C E7A20010 */ swc1 $f2, 0x0010($sp) -/* 00AE0 80B25140 C6060154 */ lwc1 $f6, 0x0154($s0) ## 00000154 -/* 00AE4 80B25144 46003200 */ add.s $f8, $f6, $f0 -/* 00AE8 80B25148 E6080154 */ swc1 $f8, 0x0154($s0) ## 00000154 -.L80B2514C: -/* 00AEC 80B2514C 100000C5 */ beq $zero, $zero, .L80B25464 -/* 00AF0 80B25150 86070152 */ lh $a3, 0x0152($s0) ## 00000152 -.L80B25154: -/* 00AF4 80B25154 55800005 */ bnel $t4, $zero, .L80B2516C -/* 00AF8 80B25158 960D0088 */ lhu $t5, 0x0088($s0) ## 00000088 -/* 00AFC 80B2515C E6020154 */ swc1 $f2, 0x0154($s0) ## 00000154 -/* 00B00 80B25160 1000000D */ beq $zero, $zero, .L80B25198 -/* 00B04 80B25164 C6000154 */ lwc1 $f0, 0x0154($s0) ## 00000154 -/* 00B08 80B25168 960D0088 */ lhu $t5, 0x0088($s0) ## 00000088 -.L80B2516C: -/* 00B0C 80B2516C 2901E000 */ slti $at, $t0, 0xE000 -/* 00B10 80B25170 31AE0008 */ andi $t6, $t5, 0x0008 ## $t6 = 00000000 -/* 00B14 80B25174 11C00008 */ beq $t6, $zero, .L80B25198 -/* 00B18 80B25178 00000000 */ nop -/* 00B1C 80B2517C 10200006 */ beq $at, $zero, .L80B25198 -/* 00B20 80B25180 2901A001 */ slti $at, $t0, 0xA001 -/* 00B24 80B25184 14200004 */ bne $at, $zero, .L80B25198 -/* 00B28 80B25188 00000000 */ nop -/* 00B2C 80B2518C E6020154 */ swc1 $f2, 0x0154($s0) ## 00000154 -/* 00B30 80B25190 100000B4 */ beq $zero, $zero, .L80B25464 -/* 00B34 80B25194 86070152 */ lh $a3, 0x0152($s0) ## 00000152 -.L80B25198: -/* 00B38 80B25198 5140000D */ beql $t2, $zero, .L80B251D0 -/* 00B3C 80B2519C 46001032 */ c.eq.s $f2, $f0 -/* 00B40 80B251A0 46001032 */ c.eq.s $f2, $f0 -/* 00B44 80B251A4 2921E001 */ slti $at, $t1, 0xE001 -/* 00B48 80B251A8 45030009 */ bc1tl .L80B251D0 -/* 00B4C 80B251AC 46001032 */ c.eq.s $f2, $f0 -/* 00B50 80B251B0 10200006 */ beq $at, $zero, .L80B251CC -/* 00B54 80B251B4 2921A001 */ slti $at, $t1, 0xA001 -/* 00B58 80B251B8 54200005 */ bnel $at, $zero, .L80B251D0 -/* 00B5C 80B251BC 46001032 */ c.eq.s $f2, $f0 -/* 00B60 80B251C0 E6020154 */ swc1 $f2, 0x0154($s0) ## 00000154 -/* 00B64 80B251C4 100000A7 */ beq $zero, $zero, .L80B25464 -/* 00B68 80B251C8 86070152 */ lh $a3, 0x0152($s0) ## 00000152 -.L80B251CC: -/* 00B6C 80B251CC 46001032 */ c.eq.s $f2, $f0 -.L80B251D0: -/* 00B70 80B251D0 3C0180B2 */ lui $at, %hi(D_80B25870) ## $at = 80B20000 -/* 00B74 80B251D4 4501001D */ bc1t .L80B2524C -/* 00B78 80B251D8 00000000 */ nop -/* 00B7C 80B251DC C42A5870 */ lwc1 $f10, %lo(D_80B25870)($at) -/* 00B80 80B251E0 260F0024 */ addiu $t7, $s0, 0x0024 ## $t7 = 00000024 -/* 00B84 80B251E4 AFAF0048 */ sw $t7, 0x0048($sp) -/* 00B88 80B251E8 46005032 */ c.eq.s $f10, $f0 -/* 00B8C 80B251EC 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00B90 80B251F0 45020006 */ bc1fl .L80B2520C -/* 00B94 80B251F4 8E050158 */ lw $a1, 0x0158($s0) ## 00000158 -/* 00B98 80B251F8 0C00BE0A */ jal Audio_PlayActorSound2 - -/* 00B9C 80B251FC 2405287D */ addiu $a1, $zero, 0x287D ## $a1 = 0000287D -/* 00BA0 80B25200 44801000 */ mtc1 $zero, $f2 ## $f2 = 0.00 -/* 00BA4 80B25204 00000000 */ nop -/* 00BA8 80B25208 8E050158 */ lw $a1, 0x0158($s0) ## 00000158 -.L80B2520C: -/* 00BAC 80B2520C 8E070188 */ lw $a3, 0x0188($s0) ## 00000188 -/* 00BB0 80B25210 E7A20010 */ swc1 $f2, 0x0010($sp) -/* 00BB4 80B25214 8FA40048 */ lw $a0, 0x0048($sp) -/* 00BB8 80B25218 0C01E0C4 */ jal Math_SmoothStepToF - -/* 00BBC 80B2521C 3C063F80 */ lui $a2, 0x3F80 ## $a2 = 3F800000 -/* 00BC0 80B25220 44801000 */ mtc1 $zero, $f2 ## $f2 = 0.00 -/* 00BC4 80B25224 E6000154 */ swc1 $f0, 0x0154($s0) ## 00000154 -/* 00BC8 80B25228 8E050160 */ lw $a1, 0x0160($s0) ## 00000160 -/* 00BCC 80B2522C 8E070190 */ lw $a3, 0x0190($s0) ## 00000190 -/* 00BD0 80B25230 2604002C */ addiu $a0, $s0, 0x002C ## $a0 = 0000002C -/* 00BD4 80B25234 3C063F80 */ lui $a2, 0x3F80 ## $a2 = 3F800000 -/* 00BD8 80B25238 0C01E0C4 */ jal Math_SmoothStepToF - -/* 00BDC 80B2523C E7A20010 */ swc1 $f2, 0x0010($sp) -/* 00BE0 80B25240 C6100154 */ lwc1 $f16, 0x0154($s0) ## 00000154 -/* 00BE4 80B25244 46008480 */ add.s $f18, $f16, $f0 -/* 00BE8 80B25248 E6120154 */ swc1 $f18, 0x0154($s0) ## 00000154 -.L80B2524C: -/* 00BEC 80B2524C 10000085 */ beq $zero, $zero, .L80B25464 -/* 00BF0 80B25250 86070152 */ lh $a3, 0x0152($s0) ## 00000152 -.L80B25254: -/* 00BF4 80B25254 57200005 */ bnel $t9, $zero, .L80B2526C -/* 00BF8 80B25258 96180088 */ lhu $t8, 0x0088($s0) ## 00000088 -/* 00BFC 80B2525C E6020154 */ swc1 $f2, 0x0154($s0) ## 00000154 -/* 00C00 80B25260 1000000F */ beq $zero, $zero, .L80B252A0 -/* 00C04 80B25264 C6000154 */ lwc1 $f0, 0x0154($s0) ## 00000154 -/* 00C08 80B25268 96180088 */ lhu $t8, 0x0088($s0) ## 00000088 -.L80B2526C: -/* 00C0C 80B2526C 330C0008 */ andi $t4, $t8, 0x0008 ## $t4 = 00000000 -/* 00C10 80B25270 1180000B */ beq $t4, $zero, .L80B252A0 -/* 00C14 80B25274 00000000 */ nop -/* 00C18 80B25278 05000003 */ bltz $t0, .L80B25288 -/* 00C1C 80B2527C 00081823 */ subu $v1, $zero, $t0 -/* 00C20 80B25280 10000001 */ beq $zero, $zero, .L80B25288 -/* 00C24 80B25284 01001825 */ or $v1, $t0, $zero ## $v1 = 00000000 -.L80B25288: -/* 00C28 80B25288 28612000 */ slti $at, $v1, 0x2000 -/* 00C2C 80B2528C 10200004 */ beq $at, $zero, .L80B252A0 -/* 00C30 80B25290 00000000 */ nop -/* 00C34 80B25294 E6020154 */ swc1 $f2, 0x0154($s0) ## 00000154 -/* 00C38 80B25298 10000072 */ beq $zero, $zero, .L80B25464 -/* 00C3C 80B2529C 86070152 */ lh $a3, 0x0152($s0) ## 00000152 -.L80B252A0: -/* 00C40 80B252A0 51400010 */ beql $t2, $zero, .L80B252E4 -/* 00C44 80B252A4 46001032 */ c.eq.s $f2, $f0 -/* 00C48 80B252A8 46001032 */ c.eq.s $f2, $f0 -/* 00C4C 80B252AC 00000000 */ nop -/* 00C50 80B252B0 4503000C */ bc1tl .L80B252E4 -/* 00C54 80B252B4 46001032 */ c.eq.s $f2, $f0 -/* 00C58 80B252B8 05200003 */ bltz $t1, .L80B252C8 -/* 00C5C 80B252BC 00091823 */ subu $v1, $zero, $t1 -/* 00C60 80B252C0 10000001 */ beq $zero, $zero, .L80B252C8 -/* 00C64 80B252C4 01201825 */ or $v1, $t1, $zero ## $v1 = 00000000 -.L80B252C8: -/* 00C68 80B252C8 28612000 */ slti $at, $v1, 0x2000 -/* 00C6C 80B252CC 50200005 */ beql $at, $zero, .L80B252E4 -/* 00C70 80B252D0 46001032 */ c.eq.s $f2, $f0 -/* 00C74 80B252D4 E6020154 */ swc1 $f2, 0x0154($s0) ## 00000154 -/* 00C78 80B252D8 10000062 */ beq $zero, $zero, .L80B25464 -/* 00C7C 80B252DC 86070152 */ lh $a3, 0x0152($s0) ## 00000152 -/* 00C80 80B252E0 46001032 */ c.eq.s $f2, $f0 -.L80B252E4: -/* 00C84 80B252E4 3C0180B2 */ lui $at, %hi(D_80B25874) ## $at = 80B20000 -/* 00C88 80B252E8 4501001D */ bc1t .L80B25360 -/* 00C8C 80B252EC 00000000 */ nop -/* 00C90 80B252F0 C4245874 */ lwc1 $f4, %lo(D_80B25874)($at) -/* 00C94 80B252F4 260D0024 */ addiu $t5, $s0, 0x0024 ## $t5 = 00000024 -/* 00C98 80B252F8 AFAD0048 */ sw $t5, 0x0048($sp) -/* 00C9C 80B252FC 46002032 */ c.eq.s $f4, $f0 -/* 00CA0 80B25300 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00CA4 80B25304 45020006 */ bc1fl .L80B25320 -/* 00CA8 80B25308 8E050184 */ lw $a1, 0x0184($s0) ## 00000184 -/* 00CAC 80B2530C 0C00BE0A */ jal Audio_PlayActorSound2 - -/* 00CB0 80B25310 2405287D */ addiu $a1, $zero, 0x287D ## $a1 = 0000287D -/* 00CB4 80B25314 44801000 */ mtc1 $zero, $f2 ## $f2 = 0.00 -/* 00CB8 80B25318 00000000 */ nop -/* 00CBC 80B2531C 8E050184 */ lw $a1, 0x0184($s0) ## 00000184 -.L80B25320: -/* 00CC0 80B25320 8E07019C */ lw $a3, 0x019C($s0) ## 0000019C -/* 00CC4 80B25324 E7A20010 */ swc1 $f2, 0x0010($sp) -/* 00CC8 80B25328 2604002C */ addiu $a0, $s0, 0x002C ## $a0 = 0000002C -/* 00CCC 80B2532C 0C01E0C4 */ jal Math_SmoothStepToF - -/* 00CD0 80B25330 3C063F80 */ lui $a2, 0x3F80 ## $a2 = 3F800000 -/* 00CD4 80B25334 44801000 */ mtc1 $zero, $f2 ## $f2 = 0.00 -/* 00CD8 80B25338 E6000154 */ swc1 $f0, 0x0154($s0) ## 00000154 -/* 00CDC 80B2533C 8E05017C */ lw $a1, 0x017C($s0) ## 0000017C -/* 00CE0 80B25340 8E070194 */ lw $a3, 0x0194($s0) ## 00000194 -/* 00CE4 80B25344 8FA40048 */ lw $a0, 0x0048($sp) -/* 00CE8 80B25348 3C063F80 */ lui $a2, 0x3F80 ## $a2 = 3F800000 -/* 00CEC 80B2534C 0C01E0C4 */ jal Math_SmoothStepToF - -/* 00CF0 80B25350 E7A20010 */ swc1 $f2, 0x0010($sp) -/* 00CF4 80B25354 C6060154 */ lwc1 $f6, 0x0154($s0) ## 00000154 -/* 00CF8 80B25358 46003200 */ add.s $f8, $f6, $f0 -/* 00CFC 80B2535C E6080154 */ swc1 $f8, 0x0154($s0) ## 00000154 -.L80B25360: -/* 00D00 80B25360 10000040 */ beq $zero, $zero, .L80B25464 -/* 00D04 80B25364 86070152 */ lh $a3, 0x0152($s0) ## 00000152 -.L80B25368: -/* 00D08 80B25368 55C00005 */ bnel $t6, $zero, .L80B25380 -/* 00D0C 80B2536C 960F0088 */ lhu $t7, 0x0088($s0) ## 00000088 -/* 00D10 80B25370 E6020154 */ swc1 $f2, 0x0154($s0) ## 00000154 -/* 00D14 80B25374 1000000D */ beq $zero, $zero, .L80B253AC -/* 00D18 80B25378 C6000154 */ lwc1 $f0, 0x0154($s0) ## 00000154 -/* 00D1C 80B2537C 960F0088 */ lhu $t7, 0x0088($s0) ## 00000088 -.L80B25380: -/* 00D20 80B25380 29012001 */ slti $at, $t0, 0x2001 -/* 00D24 80B25384 31F90008 */ andi $t9, $t7, 0x0008 ## $t9 = 00000000 -/* 00D28 80B25388 13200008 */ beq $t9, $zero, .L80B253AC -/* 00D2C 80B2538C 00000000 */ nop -/* 00D30 80B25390 14200006 */ bne $at, $zero, .L80B253AC -/* 00D34 80B25394 29016000 */ slti $at, $t0, 0x6000 -/* 00D38 80B25398 10200004 */ beq $at, $zero, .L80B253AC -/* 00D3C 80B2539C 00000000 */ nop -/* 00D40 80B253A0 E6020154 */ swc1 $f2, 0x0154($s0) ## 00000154 -/* 00D44 80B253A4 1000002F */ beq $zero, $zero, .L80B25464 -/* 00D48 80B253A8 86070152 */ lh $a3, 0x0152($s0) ## 00000152 -.L80B253AC: -/* 00D4C 80B253AC 5140000D */ beql $t2, $zero, .L80B253E4 -/* 00D50 80B253B0 46001032 */ c.eq.s $f2, $f0 -/* 00D54 80B253B4 46001032 */ c.eq.s $f2, $f0 -/* 00D58 80B253B8 29212001 */ slti $at, $t1, 0x2001 -/* 00D5C 80B253BC 45030009 */ bc1tl .L80B253E4 -/* 00D60 80B253C0 46001032 */ c.eq.s $f2, $f0 -/* 00D64 80B253C4 14200006 */ bne $at, $zero, .L80B253E0 -/* 00D68 80B253C8 29216000 */ slti $at, $t1, 0x6000 -/* 00D6C 80B253CC 50200005 */ beql $at, $zero, .L80B253E4 -/* 00D70 80B253D0 46001032 */ c.eq.s $f2, $f0 -/* 00D74 80B253D4 E6020154 */ swc1 $f2, 0x0154($s0) ## 00000154 -/* 00D78 80B253D8 10000022 */ beq $zero, $zero, .L80B25464 -/* 00D7C 80B253DC 86070152 */ lh $a3, 0x0152($s0) ## 00000152 -.L80B253E0: -/* 00D80 80B253E0 46001032 */ c.eq.s $f2, $f0 -.L80B253E4: -/* 00D84 80B253E4 3C0180B2 */ lui $at, %hi(D_80B25878) ## $at = 80B20000 -/* 00D88 80B253E8 4503001E */ bc1tl .L80B25464 -/* 00D8C 80B253EC 86070152 */ lh $a3, 0x0152($s0) ## 00000152 -/* 00D90 80B253F0 C42A5878 */ lwc1 $f10, %lo(D_80B25878)($at) -/* 00D94 80B253F4 26180024 */ addiu $t8, $s0, 0x0024 ## $t8 = 00000024 -/* 00D98 80B253F8 AFB80048 */ sw $t8, 0x0048($sp) -/* 00D9C 80B253FC 46005032 */ c.eq.s $f10, $f0 -/* 00DA0 80B25400 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00DA4 80B25404 45020006 */ bc1fl .L80B25420 -/* 00DA8 80B25408 8E050164 */ lw $a1, 0x0164($s0) ## 00000164 -/* 00DAC 80B2540C 0C00BE0A */ jal Audio_PlayActorSound2 - -/* 00DB0 80B25410 2405287D */ addiu $a1, $zero, 0x287D ## $a1 = 0000287D -/* 00DB4 80B25414 44801000 */ mtc1 $zero, $f2 ## $f2 = 0.00 -/* 00DB8 80B25418 00000000 */ nop -/* 00DBC 80B2541C 8E050164 */ lw $a1, 0x0164($s0) ## 00000164 -.L80B25420: -/* 00DC0 80B25420 8E070188 */ lw $a3, 0x0188($s0) ## 00000188 -/* 00DC4 80B25424 E7A20010 */ swc1 $f2, 0x0010($sp) -/* 00DC8 80B25428 8FA40048 */ lw $a0, 0x0048($sp) -/* 00DCC 80B2542C 0C01E0C4 */ jal Math_SmoothStepToF - -/* 00DD0 80B25430 3C063F80 */ lui $a2, 0x3F80 ## $a2 = 3F800000 -/* 00DD4 80B25434 44801000 */ mtc1 $zero, $f2 ## $f2 = 0.00 -/* 00DD8 80B25438 E6000154 */ swc1 $f0, 0x0154($s0) ## 00000154 -/* 00DDC 80B2543C 8E05016C */ lw $a1, 0x016C($s0) ## 0000016C -/* 00DE0 80B25440 8E070190 */ lw $a3, 0x0190($s0) ## 00000190 -/* 00DE4 80B25444 2604002C */ addiu $a0, $s0, 0x002C ## $a0 = 0000002C -/* 00DE8 80B25448 3C063F80 */ lui $a2, 0x3F80 ## $a2 = 3F800000 -/* 00DEC 80B2544C 0C01E0C4 */ jal Math_SmoothStepToF - -/* 00DF0 80B25450 E7A20010 */ swc1 $f2, 0x0010($sp) -/* 00DF4 80B25454 C6100154 */ lwc1 $f16, 0x0154($s0) ## 00000154 -/* 00DF8 80B25458 46008480 */ add.s $f18, $f16, $f0 -/* 00DFC 80B2545C E6120154 */ swc1 $f18, 0x0154($s0) ## 00000154 -/* 00E00 80B25460 86070152 */ lh $a3, 0x0152($s0) ## 00000152 -.L80B25464: -/* 00E04 80B25464 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -.L80B25468: -/* 00E08 80B25468 8FA500AC */ lw $a1, 0x00AC($sp) -/* 00E0C 80B2546C 0C00CE6E */ jal func_800339B8 -/* 00E10 80B25470 3C064248 */ lui $a2, 0x4248 ## $a2 = 42480000 -/* 00E14 80B25474 44801000 */ mtc1 $zero, $f2 ## $f2 = 0.00 -/* 00E18 80B25478 144000A0 */ bne $v0, $zero, .L80B256FC -/* 00E1C 80B2547C 00000000 */ nop -/* 00E20 80B25480 1000009E */ beq $zero, $zero, .L80B256FC -/* 00E24 80B25484 E6020154 */ swc1 $f2, 0x0154($s0) ## 00000154 -/* 00E28 80B25488 C6040008 */ lwc1 $f4, 0x0008($s0) ## 00000008 -.L80B2548C: -/* 00E2C 80B2548C C6060024 */ lwc1 $f6, 0x0024($s0) ## 00000024 -/* 00E30 80B25490 26040024 */ addiu $a0, $s0, 0x0024 ## $a0 = 00000024 -/* 00E34 80B25494 26050008 */ addiu $a1, $s0, 0x0008 ## $a1 = 00000008 -/* 00E38 80B25498 46062032 */ c.eq.s $f4, $f6 -/* 00E3C 80B2549C 00000000 */ nop -/* 00E40 80B254A0 45020018 */ bc1fl .L80B25504 -/* 00E44 80B254A4 AFA40048 */ sw $a0, 0x0048($sp) -/* 00E48 80B254A8 C6080010 */ lwc1 $f8, 0x0010($s0) ## 00000010 -/* 00E4C 80B254AC C60A002C */ lwc1 $f10, 0x002C($s0) ## 0000002C -/* 00E50 80B254B0 3C014348 */ lui $at, 0x4348 ## $at = 43480000 -/* 00E54 80B254B4 460A4032 */ c.eq.s $f8, $f10 -/* 00E58 80B254B8 00000000 */ nop -/* 00E5C 80B254BC 45020011 */ bc1fl .L80B25504 -/* 00E60 80B254C0 AFA40048 */ sw $a0, 0x0048($sp) -/* 00E64 80B254C4 C6100090 */ lwc1 $f16, 0x0090($s0) ## 00000090 -/* 00E68 80B254C8 44819000 */ mtc1 $at, $f18 ## $f18 = 200.00 -/* 00E6C 80B254CC 860C008A */ lh $t4, 0x008A($s0) ## 0000008A -/* 00E70 80B254D0 860D0032 */ lh $t5, 0x0032($s0) ## 00000032 -/* 00E74 80B254D4 4612803C */ c.lt.s $f16, $f18 -/* 00E78 80B254D8 E6020154 */ swc1 $f2, 0x0154($s0) ## 00000154 -/* 00E7C 80B254DC 018D7023 */ subu $t6, $t4, $t5 -/* 00E80 80B254E0 25CF2000 */ addiu $t7, $t6, 0x2000 ## $t7 = 00002000 -/* 00E84 80B254E4 31F9C000 */ andi $t9, $t7, 0xC000 ## $t9 = 00000000 -/* 00E88 80B254E8 45000084 */ bc1f .L80B256FC -/* 00E8C 80B254EC A6190152 */ sh $t9, 0x0152($s0) ## 00000152 -/* 00E90 80B254F0 3C0180B2 */ lui $at, %hi(D_80B2587C) ## $at = 80B20000 -/* 00E94 80B254F4 C424587C */ lwc1 $f4, %lo(D_80B2587C)($at) -/* 00E98 80B254F8 10000080 */ beq $zero, $zero, .L80B256FC -/* 00E9C 80B254FC E6040154 */ swc1 $f4, 0x0154($s0) ## 00000154 -/* 00EA0 80B25500 AFA40048 */ sw $a0, 0x0048($sp) -.L80B25504: -/* 00EA4 80B25504 A7A90094 */ sh $t1, 0x0094($sp) -/* 00EA8 80B25508 A7AA0092 */ sh $t2, 0x0092($sp) -/* 00EAC 80B2550C 0C01E01A */ jal Math_Vec3f_Yaw - -/* 00EB0 80B25510 A7AB0090 */ sh $t3, 0x0090($sp) -/* 00EB4 80B25514 244C2000 */ addiu $t4, $v0, 0x2000 ## $t4 = 00002000 -/* 00EB8 80B25518 318DC000 */ andi $t5, $t4, 0xC000 ## $t5 = 00000000 -/* 00EBC 80B2551C 87A90094 */ lh $t1, 0x0094($sp) -/* 00EC0 80B25520 87AA0092 */ lh $t2, 0x0092($sp) -/* 00EC4 80B25524 87AB0090 */ lh $t3, 0x0090($sp) -/* 00EC8 80B25528 A60D0152 */ sh $t5, 0x0152($s0) ## 00000152 -/* 00ECC 80B2552C 86030152 */ lh $v1, 0x0152($s0) ## 00000152 -/* 00ED0 80B25530 44801000 */ mtc1 $zero, $f2 ## $f2 = 0.00 -/* 00ED4 80B25534 24018000 */ addiu $at, $zero, 0x8000 ## $at = FFFF8000 -/* 00ED8 80B25538 10610037 */ beq $v1, $at, .L80B25618 -/* 00EDC 80B2553C 8FA40048 */ lw $a0, 0x0048($sp) -/* 00EE0 80B25540 2401C000 */ addiu $at, $zero, 0xC000 ## $at = FFFFC000 -/* 00EE4 80B25544 5061004E */ beql $v1, $at, .L80B25680 -/* 00EE8 80B25548 960E0088 */ lhu $t6, 0x0088($s0) ## 00000088 -/* 00EEC 80B2554C 10600005 */ beq $v1, $zero, .L80B25564 -/* 00EF0 80B25550 24014000 */ addiu $at, $zero, 0x4000 ## $at = 00004000 -/* 00EF4 80B25554 5061001D */ beql $v1, $at, .L80B255CC -/* 00EF8 80B25558 96190088 */ lhu $t9, 0x0088($s0) ## 00000088 -/* 00EFC 80B2555C 1000005A */ beq $zero, $zero, .L80B256C8 -/* 00F00 80B25560 00000000 */ nop -.L80B25564: -/* 00F04 80B25564 960E0088 */ lhu $t6, 0x0088($s0) ## 00000088 -/* 00F08 80B25568 31CF0008 */ andi $t7, $t6, 0x0008 ## $t7 = 00000000 -/* 00F0C 80B2556C 11E0000B */ beq $t7, $zero, .L80B2559C -/* 00F10 80B25570 00000000 */ nop -/* 00F14 80B25574 8602007E */ lh $v0, 0x007E($s0) ## 0000007E -/* 00F18 80B25578 04400003 */ bltz $v0, .L80B25588 -/* 00F1C 80B2557C 00021823 */ subu $v1, $zero, $v0 -/* 00F20 80B25580 10000001 */ beq $zero, $zero, .L80B25588 -/* 00F24 80B25584 00401825 */ or $v1, $v0, $zero ## $v1 = 00000000 -.L80B25588: -/* 00F28 80B25588 28616001 */ slti $at, $v1, 0x6001 -/* 00F2C 80B2558C 1420004E */ bne $at, $zero, .L80B256C8 -/* 00F30 80B25590 00000000 */ nop -/* 00F34 80B25594 1000004C */ beq $zero, $zero, .L80B256C8 -/* 00F38 80B25598 240B0001 */ addiu $t3, $zero, 0x0001 ## $t3 = 00000001 -.L80B2559C: -/* 00F3C 80B2559C 1140004A */ beq $t2, $zero, .L80B256C8 -/* 00F40 80B255A0 00000000 */ nop -/* 00F44 80B255A4 05200003 */ bltz $t1, .L80B255B4 -/* 00F48 80B255A8 00091823 */ subu $v1, $zero, $t1 -/* 00F4C 80B255AC 10000001 */ beq $zero, $zero, .L80B255B4 -/* 00F50 80B255B0 01201825 */ or $v1, $t1, $zero ## $v1 = 00000000 -.L80B255B4: -/* 00F54 80B255B4 28616001 */ slti $at, $v1, 0x6001 -/* 00F58 80B255B8 14200043 */ bne $at, $zero, .L80B256C8 -/* 00F5C 80B255BC 00000000 */ nop -/* 00F60 80B255C0 10000041 */ beq $zero, $zero, .L80B256C8 -/* 00F64 80B255C4 240B0001 */ addiu $t3, $zero, 0x0001 ## $t3 = 00000001 -/* 00F68 80B255C8 96190088 */ lhu $t9, 0x0088($s0) ## 00000088 -.L80B255CC: -/* 00F6C 80B255CC 33380008 */ andi $t8, $t9, 0x0008 ## $t8 = 00000000 -/* 00F70 80B255D0 13000009 */ beq $t8, $zero, .L80B255F8 -/* 00F74 80B255D4 00000000 */ nop -/* 00F78 80B255D8 8602007E */ lh $v0, 0x007E($s0) ## 0000007E -/* 00F7C 80B255DC 2841E000 */ slti $at, $v0, 0xE000 -/* 00F80 80B255E0 10200039 */ beq $at, $zero, .L80B256C8 -/* 00F84 80B255E4 2841A001 */ slti $at, $v0, 0xA001 -/* 00F88 80B255E8 14200037 */ bne $at, $zero, .L80B256C8 -/* 00F8C 80B255EC 00000000 */ nop -/* 00F90 80B255F0 10000035 */ beq $zero, $zero, .L80B256C8 -/* 00F94 80B255F4 240B0001 */ addiu $t3, $zero, 0x0001 ## $t3 = 00000001 -.L80B255F8: -/* 00F98 80B255F8 11400033 */ beq $t2, $zero, .L80B256C8 -/* 00F9C 80B255FC 2921E000 */ slti $at, $t1, 0xE000 -/* 00FA0 80B25600 10200031 */ beq $at, $zero, .L80B256C8 -/* 00FA4 80B25604 2921A001 */ slti $at, $t1, 0xA001 -/* 00FA8 80B25608 1420002F */ bne $at, $zero, .L80B256C8 -/* 00FAC 80B2560C 00000000 */ nop -/* 00FB0 80B25610 1000002D */ beq $zero, $zero, .L80B256C8 -/* 00FB4 80B25614 240B0001 */ addiu $t3, $zero, 0x0001 ## $t3 = 00000001 -.L80B25618: -/* 00FB8 80B25618 960C0088 */ lhu $t4, 0x0088($s0) ## 00000088 -/* 00FBC 80B2561C 318D0008 */ andi $t5, $t4, 0x0008 ## $t5 = 00000000 -/* 00FC0 80B25620 11A0000B */ beq $t5, $zero, .L80B25650 -/* 00FC4 80B25624 00000000 */ nop -/* 00FC8 80B25628 8602007E */ lh $v0, 0x007E($s0) ## 0000007E -/* 00FCC 80B2562C 04400003 */ bltz $v0, .L80B2563C -/* 00FD0 80B25630 00021823 */ subu $v1, $zero, $v0 -/* 00FD4 80B25634 10000001 */ beq $zero, $zero, .L80B2563C -/* 00FD8 80B25638 00401825 */ or $v1, $v0, $zero ## $v1 = 00000000 -.L80B2563C: -/* 00FDC 80B2563C 28612000 */ slti $at, $v1, 0x2000 -/* 00FE0 80B25640 10200021 */ beq $at, $zero, .L80B256C8 -/* 00FE4 80B25644 00000000 */ nop -/* 00FE8 80B25648 1000001F */ beq $zero, $zero, .L80B256C8 -/* 00FEC 80B2564C 240B0001 */ addiu $t3, $zero, 0x0001 ## $t3 = 00000001 -.L80B25650: -/* 00FF0 80B25650 1140001D */ beq $t2, $zero, .L80B256C8 -/* 00FF4 80B25654 00000000 */ nop -/* 00FF8 80B25658 05200003 */ bltz $t1, .L80B25668 -/* 00FFC 80B2565C 00091823 */ subu $v1, $zero, $t1 -/* 01000 80B25660 10000001 */ beq $zero, $zero, .L80B25668 -/* 01004 80B25664 01201825 */ or $v1, $t1, $zero ## $v1 = 00000000 -.L80B25668: -/* 01008 80B25668 28612000 */ slti $at, $v1, 0x2000 -/* 0100C 80B2566C 10200016 */ beq $at, $zero, .L80B256C8 -/* 01010 80B25670 00000000 */ nop -/* 01014 80B25674 10000014 */ beq $zero, $zero, .L80B256C8 -/* 01018 80B25678 240B0001 */ addiu $t3, $zero, 0x0001 ## $t3 = 00000001 -/* 0101C 80B2567C 960E0088 */ lhu $t6, 0x0088($s0) ## 00000088 -.L80B25680: -/* 01020 80B25680 31CF0008 */ andi $t7, $t6, 0x0008 ## $t7 = 00000000 -/* 01024 80B25684 11E00009 */ beq $t7, $zero, .L80B256AC -/* 01028 80B25688 00000000 */ nop -/* 0102C 80B2568C 8602007E */ lh $v0, 0x007E($s0) ## 0000007E -/* 01030 80B25690 28412001 */ slti $at, $v0, 0x2001 -/* 01034 80B25694 1420000C */ bne $at, $zero, .L80B256C8 -/* 01038 80B25698 28416000 */ slti $at, $v0, 0x6000 -/* 0103C 80B2569C 1020000A */ beq $at, $zero, .L80B256C8 -/* 01040 80B256A0 00000000 */ nop -/* 01044 80B256A4 10000008 */ beq $zero, $zero, .L80B256C8 -/* 01048 80B256A8 240B0001 */ addiu $t3, $zero, 0x0001 ## $t3 = 00000001 -.L80B256AC: -/* 0104C 80B256AC 11400006 */ beq $t2, $zero, .L80B256C8 -/* 01050 80B256B0 29212001 */ slti $at, $t1, 0x2001 -/* 01054 80B256B4 14200004 */ bne $at, $zero, .L80B256C8 -/* 01058 80B256B8 29216000 */ slti $at, $t1, 0x6000 -/* 0105C 80B256BC 10200002 */ beq $at, $zero, .L80B256C8 -/* 01060 80B256C0 00000000 */ nop -/* 01064 80B256C4 240B0001 */ addiu $t3, $zero, 0x0001 ## $t3 = 00000001 -.L80B256C8: -/* 01068 80B256C8 1560000C */ bne $t3, $zero, .L80B256FC -/* 0106C 80B256CC 3C063F80 */ lui $a2, 0x3F80 ## $a2 = 3F800000 -/* 01070 80B256D0 8E050008 */ lw $a1, 0x0008($s0) ## 00000008 -/* 01074 80B256D4 E7A20010 */ swc1 $f2, 0x0010($sp) -/* 01078 80B256D8 0C01E0C4 */ jal Math_SmoothStepToF - -/* 0107C 80B256DC 3C074040 */ lui $a3, 0x4040 ## $a3 = 40400000 -/* 01080 80B256E0 44801000 */ mtc1 $zero, $f2 ## $f2 = 0.00 -/* 01084 80B256E4 8E050010 */ lw $a1, 0x0010($s0) ## 00000010 -/* 01088 80B256E8 2604002C */ addiu $a0, $s0, 0x002C ## $a0 = 0000002C -/* 0108C 80B256EC 3C063F80 */ lui $a2, 0x3F80 ## $a2 = 3F800000 -/* 01090 80B256F0 3C074040 */ lui $a3, 0x4040 ## $a3 = 40400000 -/* 01094 80B256F4 0C01E0C4 */ jal Math_SmoothStepToF - -/* 01098 80B256F8 E7A20010 */ swc1 $f2, 0x0010($sp) -.L80B256FC: -/* 0109C 80B256FC 0C00B638 */ jal Actor_MoveForward - -/* 010A0 80B25700 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 010A4 80B25704 8619001C */ lh $t9, 0x001C($s0) ## 0000001C -/* 010A8 80B25708 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000 -/* 010AC 80B2570C 3C0641C8 */ lui $a2, 0x41C8 ## $a2 = 41C80000 -/* 010B0 80B25710 33380010 */ andi $t8, $t9, 0x0010 ## $t8 = 00000000 -/* 010B4 80B25714 13000008 */ beq $t8, $zero, .L80B25738 -/* 010B8 80B25718 3C0741A0 */ lui $a3, 0x41A0 ## $a3 = 41A00000 -/* 010BC 80B2571C 8E0E0024 */ lw $t6, 0x0024($s0) ## 00000024 -/* 010C0 80B25720 27AC0098 */ addiu $t4, $sp, 0x0098 ## $t4 = FFFFFFF0 -/* 010C4 80B25724 AD8E0000 */ sw $t6, 0x0000($t4) ## FFFFFFF0 -/* 010C8 80B25728 8E0D0028 */ lw $t5, 0x0028($s0) ## 00000028 -/* 010CC 80B2572C AD8D0004 */ sw $t5, 0x0004($t4) ## FFFFFFF4 -/* 010D0 80B25730 8E0E002C */ lw $t6, 0x002C($s0) ## 0000002C -/* 010D4 80B25734 AD8E0008 */ sw $t6, 0x0008($t4) ## FFFFFFF8 -.L80B25738: -/* 010D8 80B25738 3C0141A0 */ lui $at, 0x41A0 ## $at = 41A00000 -/* 010DC 80B2573C 44813000 */ mtc1 $at, $f6 ## $f6 = 20.00 -/* 010E0 80B25740 240F001D */ addiu $t7, $zero, 0x001D ## $t7 = 0000001D -/* 010E4 80B25744 AFAF0014 */ sw $t7, 0x0014($sp) -/* 010E8 80B25748 8FA400AC */ lw $a0, 0x00AC($sp) -/* 010EC 80B2574C 0C00B92D */ jal Actor_UpdateBgCheckInfo -/* 010F0 80B25750 E7A60010 */ swc1 $f6, 0x0010($sp) -/* 010F4 80B25754 8619001C */ lh $t9, 0x001C($s0) ## 0000001C -/* 010F8 80B25758 C7A80098 */ lwc1 $f8, 0x0098($sp) -/* 010FC 80B2575C 33380010 */ andi $t8, $t9, 0x0010 ## $t8 = 00000000 -/* 01100 80B25760 53000005 */ beql $t8, $zero, .L80B25778 -/* 01104 80B25764 260501A0 */ addiu $a1, $s0, 0x01A0 ## $a1 = 000001A0 -/* 01108 80B25768 E6080024 */ swc1 $f8, 0x0024($s0) ## 00000024 -/* 0110C 80B2576C C7AA00A0 */ lwc1 $f10, 0x00A0($sp) -/* 01110 80B25770 E60A002C */ swc1 $f10, 0x002C($s0) ## 0000002C -/* 01114 80B25774 260501A0 */ addiu $a1, $s0, 0x01A0 ## $a1 = 000001A0 -.L80B25778: -/* 01118 80B25778 AFA50048 */ sw $a1, 0x0048($sp) -/* 0111C 80B2577C 0C0189B7 */ jal Collider_UpdateCylinder - -/* 01120 80B25780 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 01124 80B25784 8FA400AC */ lw $a0, 0x00AC($sp) -/* 01128 80B25788 3C010001 */ lui $at, 0x0001 ## $at = 00010000 -/* 0112C 80B2578C 34211E60 */ ori $at, $at, 0x1E60 ## $at = 00011E60 -/* 01130 80B25790 00812821 */ addu $a1, $a0, $at -/* 01134 80B25794 AFA5004C */ sw $a1, 0x004C($sp) -/* 01138 80B25798 0C017713 */ jal CollisionCheck_SetOC - ## CollisionCheck_setOC -/* 0113C 80B2579C 8FA60048 */ lw $a2, 0x0048($sp) -/* 01140 80B257A0 920D0114 */ lbu $t5, 0x0114($s0) ## 00000114 -/* 01144 80B257A4 8FA5004C */ lw $a1, 0x004C($sp) -/* 01148 80B257A8 8FA400AC */ lw $a0, 0x00AC($sp) -/* 0114C 80B257AC 55A00004 */ bnel $t5, $zero, .L80B257C0 -/* 01150 80B257B0 8FBF003C */ lw $ra, 0x003C($sp) -/* 01154 80B257B4 0C01767D */ jal CollisionCheck_SetAC - ## CollisionCheck_setAC -/* 01158 80B257B8 8FA60048 */ lw $a2, 0x0048($sp) -/* 0115C 80B257BC 8FBF003C */ lw $ra, 0x003C($sp) -.L80B257C0: -/* 01160 80B257C0 8FB00038 */ lw $s0, 0x0038($sp) -/* 01164 80B257C4 27BD00A8 */ addiu $sp, $sp, 0x00A8 ## $sp = 00000000 -/* 01168 80B257C8 03E00008 */ jr $ra -/* 0116C 80B257CC 00000000 */ nop diff --git a/data/overlays/actors/z_en_trap.data.s b/data/overlays/actors/z_en_trap.data.s deleted file mode 100644 index 5a8e3b9918..0000000000 --- a/data/overlays/actors/z_en_trap.data.s +++ /dev/null @@ -1,20 +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_Trap_InitVars - .word 0x00800100, 0x00000010, 0x00850000, 0x000001EC -.word EnTrap_Init -.word EnTrap_Destroy -.word EnTrap_Update -.word EnTrap_Draw -glabel D_80B25830 - .word 0x00000935, 0x10010000, 0x00000000, 0x00000000, 0x00000000, 0x00001000, 0x00000000, 0x00010100, 0x001E0014, 0x00000000, 0x00000000, 0x00000000 - diff --git a/data/overlays/actors/z_en_trap.reloc.s b/data/overlays/actors/z_en_trap.reloc.s deleted file mode 100644 index cb18bc783e..0000000000 --- a/data/overlays/actors/z_en_trap.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_80B25880 - .incbin "baserom/ovl_En_Trap", 0x1220, 0x00000070 diff --git a/spec b/spec index 9cd9b2085f..852f6686b0 100644 --- a/spec +++ b/spec @@ -3069,8 +3069,7 @@ endseg beginseg name "ovl_En_Trap" include "build/src/overlays/actors/ovl_En_Trap/z_en_trap.o" - include "build/data/overlays/actors/z_en_trap.data.o" - include "build/data/overlays/actors/z_en_trap.reloc.o" + include "build/src/overlays/actors/ovl_En_Trap/ovl_En_Trap_reloc.o" endseg beginseg diff --git a/src/overlays/actors/ovl_En_Trap/z_en_trap.c b/src/overlays/actors/ovl_En_Trap/z_en_trap.c index d14cc71d7d..6077f982a6 100644 --- a/src/overlays/actors/ovl_En_Trap/z_en_trap.c +++ b/src/overlays/actors/ovl_En_Trap/z_en_trap.c @@ -10,14 +10,31 @@ #define THIS ((EnTrap*)thisx) +#define BEGIN_MOVE_OUT 65535.0f + +#define DIR_FWD 0 +#define DIR_LEFT 0x4000 +#define DIR_BACK -0x8000 +#define DIR_RIGHT -0x4000 + +// Linear motion +#define vLinearVel upperParams +#define vContinue genericVar2 + +// Circular motion +#define vAngularVel upperParams +#define vAngularPos genericVar1 +#define vRadius genericVar2 + +// Four-way motion +#define vClosestDirection genericVar1 // relative to spike trap's facing angle if moving out, absolute if moving in +#define vMovementMetric genericVar2 + void EnTrap_Init(Actor* thisx, GlobalContext* globalCtx); void EnTrap_Destroy(Actor* thisx, GlobalContext* globalCtx); void EnTrap_Update(Actor* thisx, GlobalContext* globalCtx); void EnTrap_Draw(Actor* thisx, GlobalContext* globalCtx); -extern UNK_TYPE D_06001400; - -/* const ActorInit En_Trap_InitVars = { ACTOR_EN_TRAP, ACTORCAT_BG, @@ -30,24 +47,349 @@ const ActorInit En_Trap_InitVars = { (ActorFunc)EnTrap_Draw, }; -static ColliderCylinderInit D_80B25830 = { - { COLTYPE_HIT0, AT_NONE, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_NO_PUSH | OC1_TYPE_1 | OC1_TYPE_2, OC2_TYPE_1, -COLSHAPE_CYLINDER }, +static ColliderCylinderInit sCylinderInit = { { - ELEMTYPE_UNK0, - { 0x00000000, 0x00, 0x00 }, - { 0x00001000, 0x00, 0x00 }, - TOUCH_NONE, - BUMP_ON, - OCELEM_ON, + COLTYPE_HIT0, + AT_NONE, + AC_ON | AC_TYPE_PLAYER, + OC1_ON | OC1_NO_PUSH | OC1_TYPE_1 | OC1_TYPE_2, + OC2_TYPE_1, + COLSHAPE_CYLINDER, }, + { ELEMTYPE_UNK0, { 0x00000000, 0x00, 0x00 }, { 0x00001000, 0x00, 0x00 }, TOUCH_NONE, BUMP_ON, OCELEM_ON }, { 30, 20, 0, { 0, 0, 0 } }, }; -*/ -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Trap/EnTrap_Init.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Trap/EnTrap_Destroy.s") +extern Gfx D_06001400[]; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Trap/EnTrap_Update.s") +void EnTrap_Init(Actor* thisx, GlobalContext* globalCtx) { + f32 trapDist; + f32 trapSpeed; + s16 zSpeed; + s16 xSpeed; + EnTrap* this = THIS; + ColliderCylinder* unused = &this->collider; // required to match -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Trap/EnTrap_Draw.s") + this->upperParams = (thisx->params >> 8) & 0xFF; + thisx->params &= 0xFF; + Actor_SetScale(thisx, 0.1f); + thisx->gravity = -2.0f; + if (thisx->params & SPIKETRAP_MODE_LINEAR) { + thisx->speedXZ = this->moveSpeedForwardBack.z = this->upperParams & 0xF; + Audio_PlayActorSound2(thisx, NA_SE_EV_SPINE_TRAP_MOVE); + } else if (thisx->params & SPIKETRAP_MODE_CIRCULAR) { + this->vRadius = (this->upperParams & 0xF) * 40.0f; + this->vAngularVel = ((this->upperParams & 0xF0) + 0x10) << 5; + thisx->world.pos.x = thisx->home.pos.x + (Math_SinS(0) * this->vRadius); + thisx->world.pos.z = thisx->home.pos.z + (Math_CosS(0) * this->vRadius); + } else { // Four-way motion + if (this->upperParams != 0) { + trapDist = (this->upperParams >> 4) * 40; + trapSpeed = (this->upperParams & 0xF); + } else { + trapDist = 200.0f; + trapSpeed = 10.0f; + thisx->params = 0xF; + } + Actor_UpdateBgCheckInfo(globalCtx, thisx, 10.0f, 20.0f, 20.0f, 0x1D); + thisx->home.pos = thisx->world.pos; + this->targetPosLeft.x = thisx->world.pos.x + (trapDist * Math_CosS(thisx->world.rot.y)); + this->targetPosLeft.z = thisx->world.pos.z - (trapDist * Math_SinS(thisx->world.rot.y)); + this->targetPosRight.x = thisx->world.pos.x + (trapDist * Math_CosS(thisx->world.rot.y + 0x8000)); + this->targetPosRight.z = thisx->world.pos.z - (trapDist * Math_SinS(thisx->world.rot.y + 0x8000)); + this->targetPosFwd.x = thisx->world.pos.x + (trapDist * Math_SinS(thisx->world.rot.y)); + this->targetPosFwd.z = thisx->world.pos.z + (trapDist * Math_CosS(thisx->world.rot.y)); + this->targetPosBack.x = thisx->world.pos.x + (trapDist * Math_SinS(thisx->world.rot.y + 0x8000)); + this->targetPosBack.z = thisx->world.pos.z + (trapDist * Math_CosS(thisx->world.rot.y + 0x8000)); + + zSpeed = trapSpeed * Math_CosS(thisx->world.rot.y); + xSpeed = trapSpeed * Math_SinS(thisx->world.rot.y); + zSpeed = ABS(zSpeed); + xSpeed = ABS(xSpeed); + this->moveSpeedLeftRight.x = this->moveSpeedForwardBack.z = zSpeed; + this->moveSpeedLeftRight.z = this->moveSpeedForwardBack.x = xSpeed; + } + thisx->focus.pos = thisx->world.pos; + Collider_InitCylinder(globalCtx, &this->collider); + Collider_SetCylinder(globalCtx, &this->collider, thisx, &sCylinderInit); + ActorShape_Init(&thisx->shape, 0.0f, &ActorShadow_DrawCircle, 0.0f); + thisx->targetMode = 3; + thisx->colChkInfo.mass = 0xFF; +} + +void EnTrap_Destroy(Actor* thisx, GlobalContext* globalCtx) { + EnTrap* this = THIS; + Collider_DestroyCylinder(globalCtx, &this->collider); +} + +void EnTrap_Update(Actor* thisx, GlobalContext* globalCtx) { + EnTrap* this = THIS; + Vec3f posTemp; + s16 angleToKnockPlayer; + s16 angleToCollidedActor; + s16 touchingActor; + s16 blockedOnReturn; + s32 pad; + s16 angleToWall; + Vec3f icePos; + Vec3f posAhead; + Vec3f colPoint; // unused return value from function + CollisionPoly* colPoly; // unused return value from function + s32 bgId; // unused return value from function + f32 temp_cond; + + touchingActor = false; + blockedOnReturn = false; + angleToWall = thisx->wallYaw - thisx->world.rot.y; + if (this->collider.base.ocFlags1 & OC1_HIT) { + this->collider.base.ocFlags1 &= ~OC1_HIT; + angleToCollidedActor = + thisx->world.rot.y + Math_Vec3f_Yaw(&this->collider.base.oc->world.pos, &thisx->world.pos); + touchingActor = true; + } + // Freeze the trap if hit by ice arrows: + if ((this->collider.base.acFlags & AC_HIT) != 0) { + icePos = thisx->world.pos; + this->collider.base.acFlags &= ~AC_HIT; + func_8003426C(thisx, 0, 250, 0, 250); + icePos.y += 10.0f; + icePos.z += 10.0f; + EffectSsEnIce_SpawnFlyingVec3f(globalCtx, thisx, &icePos, 150, 150, 150, 250, 235, 245, 255, 1.8f); + icePos.x += 10.0f; + icePos.z -= 20.0f; + EffectSsEnIce_SpawnFlyingVec3f(globalCtx, thisx, &icePos, 150, 150, 150, 250, 235, 245, 255, 1.8f); + icePos.x -= 20.0f; + EffectSsEnIce_SpawnFlyingVec3f(globalCtx, thisx, &icePos, 150, 150, 150, 250, 235, 245, 255, 1.8f); + } + // If not frozen: + if (thisx->colorFilterTimer == 0) { + DECR(this->playerDmgTimer); + // Handles damaging player: + //! @bug there is no yDistToPlayer check for player being below. Therefore hitbox extends down infinitely + if ((thisx->xzDistToPlayer <= 40.0f) && (this->playerDmgTimer == 0) && (thisx->yDistToPlayer <= 20.0f)) { + if (!(thisx->params & (SPIKETRAP_MODE_LINEAR | SPIKETRAP_MODE_CIRCULAR))) { // if in 4-way mode: + if ((s16)(this->vClosestDirection - thisx->yawTowardsPlayer) >= 0) { + angleToKnockPlayer = this->vClosestDirection - 0x4000; + } else { + angleToKnockPlayer = this->vClosestDirection + 0x4000; + } + } else { + angleToKnockPlayer = thisx->yawTowardsPlayer; + } + globalCtx->damagePlayer(globalCtx, -4); + func_8002F7A0(globalCtx, thisx, 6.0f, angleToKnockPlayer, 6.0f); + this->playerDmgTimer = 15; + } + if (thisx->params & SPIKETRAP_MODE_LINEAR) { + this->vContinue = 1.0f; + // If physically touching a wall and wall faces towards spike trap + if ((thisx->bgCheckFlags & 8) && (ABS(angleToWall) >= 0x6000)) { + this->vContinue = 0.0f; + } + // If there is a collision poly between current position and a position 30 units ahead of spike trap + if (this->vContinue != 0.0f) { + posAhead.x = (Math_SinS(thisx->world.rot.y) * 30.0f) + thisx->world.pos.x; + posAhead.z = (Math_CosS(thisx->world.rot.y) * 30.0f) + thisx->world.pos.z; + posAhead.y = thisx->world.pos.y; + if (BgCheck_EntityLineTest1(&globalCtx->colCtx, &thisx->world.pos, &posAhead, &colPoint, &colPoly, 1, 1, + 0, 1, &bgId) == true) { + this->vContinue = 0.0f; + } + } + // If spike trap is touching an actor which is in the path of the spike trap + if (touchingActor && (this->vContinue != 0.0f)) { + angleToCollidedActor = + Math_Vec3f_Yaw(&thisx->world.pos, &this->collider.base.oc->world.pos) - thisx->world.rot.y; + if (ABS(angleToCollidedActor) < 0x1000) { + this->vContinue = 0.0f; + } + } + // If any of the above three conditions are met, turn around + if (this->vContinue == 0.0f) { + thisx->world.rot.y += 0x8000; + Audio_PlayActorSound2(thisx, NA_SE_EV_SPINE_TRAP_MOVE); + } + } else if (thisx->params & SPIKETRAP_MODE_CIRCULAR) { + temp_cond = Math_SinS(this->vAngularPos); + this->vAngularPos += this->vAngularVel; + // Every full circle make a sound: + if ((temp_cond < 0.0f) && (Math_SinS(this->vAngularPos) >= 0.0f)) { + Audio_PlayActorSound2(thisx, NA_SE_EV_ROUND_TRAP_MOVE); + } + thisx->world.pos.x = (this->vRadius * Math_SinS(this->vAngularPos)) + thisx->home.pos.x; + thisx->world.pos.z = (this->vRadius * Math_CosS(this->vAngularPos)) + thisx->home.pos.z; + thisx->world.pos.y = thisx->floorHeight; + thisx->prevPos = thisx->world.pos; + } else { // 4 way movement + // if moving outwards: + if (this->vMovementMetric != 0.0f) { + switch (this->vClosestDirection) { // movement direction relative to spike trap + case DIR_FWD: + if (!(thisx->params & SPIKETRAP_FOURWAY_FWD_ALLOWED)) { + this->vMovementMetric = 0.0f; + } else if ((thisx->bgCheckFlags & 8) && (ABS(angleToWall) > 0x6000)) { + this->vMovementMetric = 0.0f; + } + if (touchingActor && (this->vMovementMetric != 0.0f) && (ABS(angleToCollidedActor) > 0x6000)) { + this->vMovementMetric = 0.0f; + } + if (this->vMovementMetric != 0.0f) { + if (this->vMovementMetric == BEGIN_MOVE_OUT) { + Audio_PlayActorSound2(thisx, NA_SE_EV_SPINE_TRAP_MOVE); + } + this->vMovementMetric = Math_SmoothStepToF(&thisx->world.pos.z, this->targetPosFwd.z, 1.0f, + this->moveSpeedForwardBack.z, 0.0f); + this->vMovementMetric += Math_SmoothStepToF(&thisx->world.pos.x, this->targetPosFwd.x, 1.0f, + this->moveSpeedForwardBack.x, 0.0f); + } + break; + case DIR_LEFT: + if (!(thisx->params & SPIKETRAP_FOURWAY_LEFT_ALLOWED)) { + this->vMovementMetric = 0.0f; + } else if ((thisx->bgCheckFlags & 8) && (angleToWall < -0x2000) && (angleToWall > -0x6000)) { + this->vMovementMetric = 0.0f; + break; + } + if (touchingActor && (this->vMovementMetric != 0.0f) && (angleToCollidedActor <= -0x2000) && + (angleToCollidedActor > -0x6000)) { + this->vMovementMetric = 0.0f; + break; + } + if (this->vMovementMetric != 0.0f) { + if (this->vMovementMetric == BEGIN_MOVE_OUT) { + Audio_PlayActorSound2(thisx, NA_SE_EV_SPINE_TRAP_MOVE); + } + this->vMovementMetric = Math_SmoothStepToF(&thisx->world.pos.x, this->targetPosLeft.x, 1.0f, + this->moveSpeedLeftRight.x, 0.0f); + this->vMovementMetric += Math_SmoothStepToF(&thisx->world.pos.z, this->targetPosLeft.z, + 1.0f, this->moveSpeedLeftRight.z, 0.0f); + } + break; + case DIR_BACK: + if (!(thisx->params & SPIKETRAP_FOURWAY_BACK_ALLOWED)) { + this->vMovementMetric = 0.0f; + } else if ((thisx->bgCheckFlags & 8) && (ABS(angleToWall) < 0x2000)) { + this->vMovementMetric = 0.0f; + break; + } + if (touchingActor && (this->vMovementMetric != 0.0f) && (ABS(angleToCollidedActor) < 0x2000)) { + this->vMovementMetric = 0.0f; + break; + } + if (this->vMovementMetric != 0.0f) { + if (this->vMovementMetric == BEGIN_MOVE_OUT) { + Audio_PlayActorSound2(thisx, NA_SE_EV_SPINE_TRAP_MOVE); + } + this->vMovementMetric = Math_SmoothStepToF(&thisx->world.pos.z, this->targetPosBack.z, 1.0f, + this->moveSpeedForwardBack.z, 0.0f); + this->vMovementMetric += Math_SmoothStepToF(&thisx->world.pos.x, this->targetPosBack.x, + 1.0f, this->moveSpeedForwardBack.x, 0.0f); + } + break; + case DIR_RIGHT: + if (!(thisx->params & SPIKETRAP_FOURWAY_RIGHT_ALLOWED)) { + this->vMovementMetric = 0.0f; + } else if ((thisx->bgCheckFlags & 8) && (angleToWall > 0x2000) && (angleToWall < 0x6000)) { + this->vMovementMetric = 0.0f; + break; + } + if (touchingActor && (this->vMovementMetric != 0.0f) && (angleToCollidedActor > 0x2000) && + (angleToCollidedActor < 0x6000)) { + this->vMovementMetric = 0.0f; + break; + } + if (this->vMovementMetric != 0.0f) { + if (this->vMovementMetric == BEGIN_MOVE_OUT) { + Audio_PlayActorSound2(thisx, NA_SE_EV_SPINE_TRAP_MOVE); + } + this->vMovementMetric = Math_SmoothStepToF(&thisx->world.pos.x, this->targetPosRight.x, + 1.0f, this->moveSpeedLeftRight.x, 0.0f); + this->vMovementMetric += Math_SmoothStepToF(&thisx->world.pos.z, this->targetPosRight.z, + 1.0f, this->moveSpeedLeftRight.z, 0.0f); + } + break; + } + if (!func_800339B8(thisx, globalCtx, 50.0f, this->vClosestDirection)) { + this->vMovementMetric = 0.0f; + } + // if in initial position: + } else if ((thisx->world.pos.x == thisx->home.pos.x) && (thisx->world.pos.z == thisx->home.pos.z)) { + // of the available 4-way directions, get the one which is closest to the direction of player: + this->vClosestDirection = ((thisx->yawTowardsPlayer - thisx->world.rot.y) + 0x2000) & 0xC000; + this->vMovementMetric = 0.0f; + if (thisx->xzDistToPlayer < 200.0f) { + this->vMovementMetric = BEGIN_MOVE_OUT; + } + // If returning to origin: + } else { + // Of the four real world compass directions, get the one which is closest to the movement direction of + // the returning spike. Note that this is different from the previous usages of vClosestDirection + this->vClosestDirection = (Math_Vec3f_Yaw(&thisx->world.pos, &thisx->home.pos) + 0x2000) & 0xC000; + switch (this->vClosestDirection) { + case 0: // movement is closest to +z direction + if (thisx->bgCheckFlags & 8) { + if (ABS(thisx->wallYaw) > 0x6000) { + blockedOnReturn = true; + } + } else if (touchingActor && (ABS(angleToCollidedActor) > 0x6000)) { + blockedOnReturn = true; + } + break; + case 0x4000: // movement is closest to +x direction + if (thisx->bgCheckFlags & 8) { + if ((thisx->wallYaw < -0x2000) && (thisx->wallYaw > -0x6000)) { + blockedOnReturn = true; + } + } else if (touchingActor && (angleToCollidedActor < -0x2000) && + (angleToCollidedActor > -0x6000)) { + blockedOnReturn = true; + } + break; + case -0x8000: // movement is closest to -z direction + if (thisx->bgCheckFlags & 8) { + if (ABS(thisx->wallYaw) < 0x2000) { + blockedOnReturn = true; + } + } else if (touchingActor && (ABS(angleToCollidedActor) < 0x2000)) { + blockedOnReturn = true; + } + break; + case -0x4000: // movement is closest to -x direction + if (thisx->bgCheckFlags & 8) { + if ((thisx->wallYaw > 0x2000) && (thisx->wallYaw < 0x6000)) { + blockedOnReturn = true; + } + } else if (touchingActor && (angleToCollidedActor > 0x2000) && + (angleToCollidedActor < 0x6000)) { + blockedOnReturn = true; + } + break; + } + if (!blockedOnReturn) { + Math_SmoothStepToF(&thisx->world.pos.x, thisx->home.pos.x, 1.0f, 3.0f, 0.0f); + Math_SmoothStepToF(&thisx->world.pos.z, thisx->home.pos.z, 1.0f, 3.0f, 0.0f); + } + } + } + Actor_MoveForward(thisx); // Only used by straight line logic + // Adjust position using bgcheck, but do not adjust x, z position if in straight line mode: + if (thisx->params & SPIKETRAP_MODE_LINEAR) { + posTemp = thisx->world.pos; + } + Actor_UpdateBgCheckInfo(globalCtx, thisx, 25.0f, 20.0f, 20.0f, 0x1D); + if (thisx->params & SPIKETRAP_MODE_LINEAR) { + thisx->world.pos.x = posTemp.x; + thisx->world.pos.z = posTemp.z; + } + } + Collider_UpdateCylinder(thisx, &this->collider); + CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->collider.base); + if (thisx->colorFilterTimer == 0) { + CollisionCheck_SetAC(globalCtx, &globalCtx->colChkCtx, &this->collider.base); + } +} + +void EnTrap_Draw(Actor* thisx, GlobalContext* globalCtx) { + func_8002EBCC(thisx, globalCtx, 1); + Gfx_DrawDListOpa(globalCtx, D_06001400); +} diff --git a/src/overlays/actors/ovl_En_Trap/z_en_trap.h b/src/overlays/actors/ovl_En_Trap/z_en_trap.h index d09942829c..97054237cd 100644 --- a/src/overlays/actors/ovl_En_Trap/z_en_trap.h +++ b/src/overlays/actors/ovl_En_Trap/z_en_trap.h @@ -4,11 +4,32 @@ #include "ultra64.h" #include "global.h" +// Different movement modes (set in params): +#define SPIKETRAP_MODE_LINEAR 0x10 +#define SPIKETRAP_MODE_CIRCULAR 0x20 +#define SPIKETRAP_MODE_FOUR_WAY 0x30 + +// When four-way mode is set, these flags decide on which directions are allowed: +#define SPIKETRAP_FOURWAY_FWD_ALLOWED (1 << 0) +#define SPIKETRAP_FOURWAY_BACK_ALLOWED (1 << 1) +#define SPIKETRAP_FOURWAY_LEFT_ALLOWED (1 << 2) +#define SPIKETRAP_FOURWAY_RIGHT_ALLOWED (1 << 3) + struct EnTrap; typedef struct EnTrap { /* 0x0000 */ Actor actor; - /* 0x014C */ char unk_14C[0xA0]; + /* 0x014C */ s32 playerDmgTimer; + /* 0x0150 */ s16 upperParams; + /* 0x0152 */ s16 genericVar1; + /* 0x0154 */ f32 genericVar2; + /* 0x0158 */ Vec3f targetPosLeft; + /* 0x0164 */ Vec3f targetPosRight; + /* 0x0170 */ Vec3f targetPosFwd; + /* 0x017C */ Vec3f targetPosBack; + /* 0x0188 */ Vec3f moveSpeedLeftRight; + /* 0x0194 */ Vec3f moveSpeedForwardBack; + /* 0x01A0 */ ColliderCylinder collider; } EnTrap; // size = 0x01EC extern const ActorInit En_Trap_InitVars;