From 70ec8c42fc33616efbca70403f2e3f09885d5532 Mon Sep 17 00:00:00 2001 From: Stardust Sauce <35093523+StardustSauce@users.noreply.github.com> Date: Wed, 11 Aug 2021 10:35:17 -0400 Subject: [PATCH] ObJ_Lift OK (#883) * ObJ_Lift decompiled and matching. * Update src/overlays/actors/ovl_Obj_Lift/z_obj_lift.c Co-authored-by: EllipticEllipsis <73679967+EllipticEllipsis@users.noreply.github.com> * Implemented suggestions * Decorrected mask in z_obj_lift per suggestion * Update src/overlays/actors/ovl_Obj_Lift/z_obj_lift.c * review * unused asm * review Co-authored-by: EllipticEllipsis <73679967+EllipticEllipsis@users.noreply.github.com> Co-authored-by: fig02 --- .../actors/ovl_Obj_Lift/ObjLift_Destroy.s | 14 -- .../actors/ovl_Obj_Lift/ObjLift_Draw.s | 13 -- .../actors/ovl_Obj_Lift/ObjLift_Init.s | 91 -------- .../actors/ovl_Obj_Lift/ObjLift_Update.s | 15 -- .../actors/ovl_Obj_Lift/func_80B960D0.s | 3 - .../actors/ovl_Obj_Lift/func_80B960D8.s | 50 ----- .../actors/ovl_Obj_Lift/func_80B96160.s | 176 ---------------- .../actors/ovl_Obj_Lift/func_80B9651C.s | 18 -- .../actors/ovl_Obj_Lift/func_80B96560.s | 63 ------ .../actors/ovl_Obj_Lift/func_80B9664C.s | 12 -- .../actors/ovl_Obj_Lift/func_80B96678.s | 92 -------- .../actors/ovl_Obj_Lift/func_80B967C0.s | 34 --- .../actors/ovl_Obj_Lift/func_80B96840.s | 76 ------- data/overlays/actors/z_obj_lift.data.s | 28 --- data/overlays/actors/z_obj_lift.reloc.s | 13 -- spec | 3 +- src/overlays/actors/ovl_Obj_Lift/z_obj_lift.c | 197 ++++++++++++++++-- src/overlays/actors/ovl_Obj_Lift/z_obj_lift.h | 6 +- 18 files changed, 188 insertions(+), 716 deletions(-) delete mode 100644 asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Destroy.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Draw.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Init.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Update.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B960D0.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B960D8.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96160.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B9651C.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96560.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B9664C.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96678.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B967C0.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96840.s delete mode 100644 data/overlays/actors/z_obj_lift.data.s delete mode 100644 data/overlays/actors/z_obj_lift.reloc.s diff --git a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Destroy.s b/asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Destroy.s deleted file mode 100644 index 54dde34ad3..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Destroy.s +++ /dev/null @@ -1,14 +0,0 @@ -glabel ObjLift_Destroy -/* 0041C 80B964EC 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8 -/* 00420 80B964F0 AFA40018 */ sw $a0, 0x0018($sp) -/* 00424 80B964F4 8FAE0018 */ lw $t6, 0x0018($sp) -/* 00428 80B964F8 AFBF0014 */ sw $ra, 0x0014($sp) -/* 0042C 80B964FC 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000 -/* 00430 80B96500 24A50810 */ addiu $a1, $a1, 0x0810 ## $a1 = 00000810 -/* 00434 80B96504 0C00FB56 */ jal DynaPoly_DeleteBgActor - ## DynaPoly_DeleteBgActor -/* 00438 80B96508 8DC6014C */ lw $a2, 0x014C($t6) ## 0000014C -/* 0043C 80B9650C 8FBF0014 */ lw $ra, 0x0014($sp) -/* 00440 80B96510 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000 -/* 00444 80B96514 03E00008 */ jr $ra -/* 00448 80B96518 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Draw.s b/asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Draw.s deleted file mode 100644 index 4214533830..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Draw.s +++ /dev/null @@ -1,13 +0,0 @@ -glabel ObjLift_Draw -/* 008A4 80B96974 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8 -/* 008A8 80B96978 AFA40018 */ sw $a0, 0x0018($sp) -/* 008AC 80B9697C 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000 -/* 008B0 80B96980 AFBF0014 */ sw $ra, 0x0014($sp) -/* 008B4 80B96984 3C050600 */ lui $a1, %hi(gCollapsingPlatformDL) ## $a1 = 06000000 -/* 008B8 80B96988 0C00D498 */ jal Gfx_DrawDListOpa - -/* 008BC 80B9698C 24A50140 */ addiu $a1, $a1, %lo(gCollapsingPlatformDL) ## $a1 = 06000140 -/* 008C0 80B96990 8FBF0014 */ lw $ra, 0x0014($sp) -/* 008C4 80B96994 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000 -/* 008C8 80B96998 03E00008 */ jr $ra -/* 008CC 80B9699C 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Init.s b/asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Init.s deleted file mode 100644 index 53ec6cc658..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Init.s +++ /dev/null @@ -1,91 +0,0 @@ -.rdata -glabel D_80B96A70 - .asciz "(Dungeon Lift)(arg_data 0x%04x)\n" - .balign 4 - -.late_rodata -glabel D_80B96A98 - .word 0x477FFF80 -glabel D_80B96A9C - .word 0x477FFF80 -glabel D_80B96AA0 - .word 0x477FFF80 - -.text -glabel ObjLift_Init -/* 00314 80B963E4 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0 -/* 00318 80B963E8 AFBF001C */ sw $ra, 0x001C($sp) -/* 0031C 80B963EC AFB00018 */ sw $s0, 0x0018($sp) -/* 00320 80B963F0 3C060600 */ lui $a2, %hi(gCollapsingPlatformCol) ## $a2 = 06000000 -/* 00324 80B963F4 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000 -/* 00328 80B963F8 AFA50024 */ sw $a1, 0x0024($sp) -/* 0032C 80B963FC 24C603D0 */ addiu $a2, $a2, %lo(gCollapsingPlatformCol) ## $a2 = 060003D0 -/* 00330 80B96400 0C2E5836 */ jal func_80B960D8 -/* 00334 80B96404 24070001 */ addiu $a3, $zero, 0x0001 ## $a3 = 00000001 -/* 00338 80B96408 8605001C */ lh $a1, 0x001C($s0) ## 0000001C -/* 0033C 80B9640C 8FA40024 */ lw $a0, 0x0024($sp) -/* 00340 80B96410 00052883 */ sra $a1, $a1, 2 -/* 00344 80B96414 0C00B2D0 */ jal Flags_GetSwitch - -/* 00348 80B96418 30A5003F */ andi $a1, $a1, 0x003F ## $a1 = 00000000 -/* 0034C 80B9641C 50400006 */ beql $v0, $zero, .L80B96438 -/* 00350 80B96420 860E001C */ lh $t6, 0x001C($s0) ## 0000001C -/* 00354 80B96424 0C00B55C */ jal Actor_Kill - -/* 00358 80B96428 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 0035C 80B9642C 1000002B */ beq $zero, $zero, .L80B964DC -/* 00360 80B96430 8FBF001C */ lw $ra, 0x001C($sp) -/* 00364 80B96434 860E001C */ lh $t6, 0x001C($s0) ## 0000001C -.L80B96438: -/* 00368 80B96438 3C0580B9 */ lui $a1, %hi(D_80B96A08) ## $a1 = 80B90000 -/* 0036C 80B9643C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00370 80B96440 000E7843 */ sra $t7, $t6, 1 -/* 00374 80B96444 31F80001 */ andi $t8, $t7, 0x0001 ## $t8 = 00000000 -/* 00378 80B96448 0018C880 */ sll $t9, $t8, 2 -/* 0037C 80B9644C 00B92821 */ addu $a1, $a1, $t9 -/* 00380 80B96450 0C00B58B */ jal Actor_SetScale - -/* 00384 80B96454 8CA56A08 */ lw $a1, %lo(D_80B96A08)($a1) -/* 00388 80B96458 3C0580B9 */ lui $a1, %hi(D_80B969F4) ## $a1 = 80B90000 -/* 0038C 80B9645C 24A569F4 */ addiu $a1, $a1, %lo(D_80B969F4) ## $a1 = 80B969F4 -/* 00390 80B96460 0C01E037 */ jal Actor_ProcessInitChain - -/* 00394 80B96464 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00398 80B96468 0C03F66B */ jal Rand_ZeroOne - ## Rand.Next() float -/* 0039C 80B9646C 00000000 */ nop -/* 003A0 80B96470 3C0180B9 */ lui $at, %hi(D_80B96A98) ## $at = 80B90000 -/* 003A4 80B96474 C4246A98 */ lwc1 $f4, %lo(D_80B96A98)($at) -/* 003A8 80B96478 46040182 */ mul.s $f6, $f0, $f4 -/* 003AC 80B9647C 4600320D */ trunc.w.s $f8, $f6 -/* 003B0 80B96480 44094000 */ mfc1 $t1, $f8 -/* 003B4 80B96484 0C03F66B */ jal Rand_ZeroOne - ## Rand.Next() float -/* 003B8 80B96488 A6090168 */ sh $t1, 0x0168($s0) ## 00000168 -/* 003BC 80B9648C 3C0180B9 */ lui $at, %hi(D_80B96A9C) ## $at = 80B90000 -/* 003C0 80B96490 C42A6A9C */ lwc1 $f10, %lo(D_80B96A9C)($at) -/* 003C4 80B96494 460A0402 */ mul.s $f16, $f0, $f10 -/* 003C8 80B96498 4600848D */ trunc.w.s $f18, $f16 -/* 003CC 80B9649C 440B9000 */ mfc1 $t3, $f18 -/* 003D0 80B964A0 0C03F66B */ jal Rand_ZeroOne - ## Rand.Next() float -/* 003D4 80B964A4 A60B016A */ sh $t3, 0x016A($s0) ## 0000016A -/* 003D8 80B964A8 3C0180B9 */ lui $at, %hi(D_80B96AA0) ## $at = 80B90000 -/* 003DC 80B964AC C4246AA0 */ lwc1 $f4, %lo(D_80B96AA0)($at) -/* 003E0 80B964B0 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 003E4 80B964B4 46040182 */ mul.s $f6, $f0, $f4 -/* 003E8 80B964B8 4600320D */ trunc.w.s $f8, $f6 -/* 003EC 80B964BC 440D4000 */ mfc1 $t5, $f8 -/* 003F0 80B964C0 0C2E5947 */ jal func_80B9651C -/* 003F4 80B964C4 A60D016C */ sh $t5, 0x016C($s0) ## 0000016C -/* 003F8 80B964C8 3C0480B9 */ lui $a0, %hi(D_80B96A70) ## $a0 = 80B90000 -/* 003FC 80B964CC 24846A70 */ addiu $a0, $a0, %lo(D_80B96A70) ## $a0 = 80B96A70 -/* 00400 80B964D0 0C00084C */ jal osSyncPrintf - -/* 00404 80B964D4 8605001C */ lh $a1, 0x001C($s0) ## 0000001C -/* 00408 80B964D8 8FBF001C */ lw $ra, 0x001C($sp) -.L80B964DC: -/* 0040C 80B964DC 8FB00018 */ lw $s0, 0x0018($sp) -/* 00410 80B964E0 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000 -/* 00414 80B964E4 03E00008 */ jr $ra -/* 00418 80B964E8 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Update.s b/asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Update.s deleted file mode 100644 index 28553b5f56..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Update.s +++ /dev/null @@ -1,15 +0,0 @@ -glabel ObjLift_Update -/* 00870 80B96940 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8 -/* 00874 80B96944 AFBF0014 */ sw $ra, 0x0014($sp) -/* 00878 80B96948 8482016E */ lh $v0, 0x016E($a0) ## 0000016E -/* 0087C 80B9694C 18400002 */ blez $v0, .L80B96958 -/* 00880 80B96950 244EFFFF */ addiu $t6, $v0, 0xFFFF ## $t6 = FFFFFFFF -/* 00884 80B96954 A48E016E */ sh $t6, 0x016E($a0) ## 0000016E -.L80B96958: -/* 00888 80B96958 8C990164 */ lw $t9, 0x0164($a0) ## 00000164 -/* 0088C 80B9695C 0320F809 */ jalr $ra, $t9 -/* 00890 80B96960 00000000 */ nop -/* 00894 80B96964 8FBF0014 */ lw $ra, 0x0014($sp) -/* 00898 80B96968 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000 -/* 0089C 80B9696C 03E00008 */ jr $ra -/* 008A0 80B96970 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B960D0.s b/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B960D0.s deleted file mode 100644 index 0e9a458815..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B960D0.s +++ /dev/null @@ -1,3 +0,0 @@ -glabel func_80B960D0 -/* 00000 80B960D0 03E00008 */ jr $ra -/* 00004 80B960D4 AC850164 */ sw $a1, 0x0164($a0) ## 00000164 diff --git a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B960D8.s b/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B960D8.s deleted file mode 100644 index bec7374d64..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B960D8.s +++ /dev/null @@ -1,50 +0,0 @@ -.rdata -glabel D_80B96A20 - .asciz "Warning : move BG 登録失敗(%s %d)(name %d)(arg_data 0x%04x)\n" - .balign 4 - -glabel D_80B96A60 - .asciz "../z_obj_lift.c" - .balign 4 - -.text -glabel func_80B960D8 -/* 00008 80B960D8 27BDFFC8 */ addiu $sp, $sp, 0xFFC8 ## $sp = FFFFFFC8 -/* 0000C 80B960DC AFBF0024 */ sw $ra, 0x0024($sp) -/* 00010 80B960E0 AFB00020 */ sw $s0, 0x0020($sp) -/* 00014 80B960E4 AFA5003C */ sw $a1, 0x003C($sp) -/* 00018 80B960E8 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000 -/* 0001C 80B960EC AFA60040 */ sw $a2, 0x0040($sp) -/* 00020 80B960F0 AFA00030 */ sw $zero, 0x0030($sp) -/* 00024 80B960F4 0C010D20 */ jal DynaPolyActor_Init - -/* 00028 80B960F8 00E02825 */ or $a1, $a3, $zero ## $a1 = 00000000 -/* 0002C 80B960FC 8FA40040 */ lw $a0, 0x0040($sp) -/* 00030 80B96100 0C010620 */ jal CollisionHeader_GetVirtual - -/* 00034 80B96104 27A50030 */ addiu $a1, $sp, 0x0030 ## $a1 = FFFFFFF8 -/* 00038 80B96108 8FA4003C */ lw $a0, 0x003C($sp) -/* 0003C 80B9610C 02003025 */ or $a2, $s0, $zero ## $a2 = 00000000 -/* 00040 80B96110 8FA70030 */ lw $a3, 0x0030($sp) -/* 00044 80B96114 0C00FA9D */ jal DynaPoly_SetBgActor - ## DynaPoly_SetBgActor -/* 00048 80B96118 24850810 */ addiu $a1, $a0, 0x0810 ## $a1 = 00000810 -/* 0004C 80B9611C 24010032 */ addiu $at, $zero, 0x0032 ## $at = 00000032 -/* 00050 80B96120 1441000A */ bne $v0, $at, .L80B9614C -/* 00054 80B96124 AE02014C */ sw $v0, 0x014C($s0) ## 0000014C -/* 00058 80B96128 860E001C */ lh $t6, 0x001C($s0) ## 0000001C -/* 0005C 80B9612C 3C0480B9 */ lui $a0, %hi(D_80B96A20) ## $a0 = 80B90000 -/* 00060 80B96130 3C0580B9 */ lui $a1, %hi(D_80B96A60) ## $a1 = 80B90000 -/* 00064 80B96134 86070000 */ lh $a3, 0x0000($s0) ## 00000000 -/* 00068 80B96138 24A56A60 */ addiu $a1, $a1, %lo(D_80B96A60) ## $a1 = 80B96A60 -/* 0006C 80B9613C 24846A20 */ addiu $a0, $a0, %lo(D_80B96A20) ## $a0 = 80B96A20 -/* 00070 80B96140 240600BC */ addiu $a2, $zero, 0x00BC ## $a2 = 000000BC -/* 00074 80B96144 0C00084C */ jal osSyncPrintf - -/* 00078 80B96148 AFAE0010 */ sw $t6, 0x0010($sp) -.L80B9614C: -/* 0007C 80B9614C 8FBF0024 */ lw $ra, 0x0024($sp) -/* 00080 80B96150 8FB00020 */ lw $s0, 0x0020($sp) -/* 00084 80B96154 27BD0038 */ addiu $sp, $sp, 0x0038 ## $sp = 00000000 -/* 00088 80B96158 03E00008 */ jr $ra -/* 0008C 80B9615C 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96160.s b/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96160.s deleted file mode 100644 index cfce44987f..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96160.s +++ /dev/null @@ -1,176 +0,0 @@ -.late_rodata -glabel D_80B96A94 - .float 0.8 - -.text -glabel func_80B96160 -/* 00090 80B96160 27BDFF30 */ addiu $sp, $sp, 0xFF30 ## $sp = FFFFFF30 -/* 00094 80B96164 F7BC0068 */ sdc1 $f28, 0x0068($sp) -/* 00098 80B96168 3C013F00 */ lui $at, 0x3F00 ## $at = 3F000000 -/* 0009C 80B9616C 4481E000 */ mtc1 $at, $f28 ## $f28 = 0.50 -/* 000A0 80B96170 F7BA0060 */ sdc1 $f26, 0x0060($sp) -/* 000A4 80B96174 3C0140C0 */ lui $at, 0x40C0 ## $at = 40C00000 -/* 000A8 80B96178 4481D000 */ mtc1 $at, $f26 ## $f26 = 6.00 -/* 000AC 80B9617C F7B80058 */ sdc1 $f24, 0x0058($sp) -/* 000B0 80B96180 3C014120 */ lui $at, 0x4120 ## $at = 41200000 -/* 000B4 80B96184 4481C000 */ mtc1 $at, $f24 ## $f24 = 10.00 -/* 000B8 80B96188 F7B60050 */ sdc1 $f22, 0x0050($sp) -/* 000BC 80B9618C 3C014248 */ lui $at, 0x4248 ## $at = 42480000 -/* 000C0 80B96190 AFB7008C */ sw $s7, 0x008C($sp) -/* 000C4 80B96194 AFB60088 */ sw $s6, 0x0088($sp) -/* 000C8 80B96198 AFB00070 */ sw $s0, 0x0070($sp) -/* 000CC 80B9619C 4481B000 */ mtc1 $at, $f22 ## $f22 = 50.00 -/* 000D0 80B961A0 AFBE0090 */ sw $s8, 0x0090($sp) -/* 000D4 80B961A4 AFB50084 */ sw $s5, 0x0084($sp) -/* 000D8 80B961A8 AFB40080 */ sw $s4, 0x0080($sp) -/* 000DC 80B961AC AFB3007C */ sw $s3, 0x007C($sp) -/* 000E0 80B961B0 AFB20078 */ sw $s2, 0x0078($sp) -/* 000E4 80B961B4 F7B40048 */ sdc1 $f20, 0x0048($sp) -/* 000E8 80B961B8 3C0180B9 */ lui $at, %hi(D_80B96A94) ## $at = 80B90000 -/* 000EC 80B961BC 3C1080B9 */ lui $s0, %hi(D_80B969D0) ## $s0 = 80B90000 -/* 000F0 80B961C0 3C160600 */ lui $s6, %hi(gCollapsingPlatformDL) ## $s6 = 06000000 -/* 000F4 80B961C4 3C1780B9 */ lui $s7, %hi(D_80B969F4) ## $s7 = 80B90000 -/* 000F8 80B961C8 00809025 */ or $s2, $a0, $zero ## $s2 = 00000000 -/* 000FC 80B961CC 00A0F025 */ or $s8, $a1, $zero ## $s8 = 00000000 -/* 00100 80B961D0 AFBF0094 */ sw $ra, 0x0094($sp) -/* 00104 80B961D4 AFB10074 */ sw $s1, 0x0074($sp) -/* 00108 80B961D8 26F769F4 */ addiu $s7, $s7, %lo(D_80B969F4) ## $s7 = 80B969F4 -/* 0010C 80B961DC 26D60140 */ addiu $s6, $s6, %lo(gCollapsingPlatformDL) ## $s6 = 06000140 -/* 00110 80B961E0 261069D0 */ addiu $s0, $s0, %lo(D_80B969D0) ## $s0 = 80B969D0 -/* 00114 80B961E4 C4346A94 */ lwc1 $f20, %lo(D_80B96A94)($at) -/* 00118 80B961E8 24930024 */ addiu $s3, $a0, 0x0024 ## $s3 = 00000024 -/* 0011C 80B961EC 27B400C4 */ addiu $s4, $sp, 0x00C4 ## $s4 = FFFFFFF4 -/* 00120 80B961F0 27B500B8 */ addiu $s5, $sp, 0x00B8 ## $s5 = FFFFFFE8 -/* 00124 80B961F4 860E0000 */ lh $t6, 0x0000($s0) ## 80B969D0 -.L80B961F8: -/* 00128 80B961F8 C6460050 */ lwc1 $f6, 0x0050($s2) ## 00000050 -/* 0012C 80B961FC C66A0000 */ lwc1 $f10, 0x0000($s3) ## 00000024 -/* 00130 80B96200 448E2000 */ mtc1 $t6, $f4 ## $f4 = 0.00 -/* 00134 80B96204 860F0002 */ lh $t7, 0x0002($s0) ## 80B969D2 -/* 00138 80B96208 46802020 */ cvt.s.w $f0, $f4 -/* 0013C 80B9620C 448F2000 */ mtc1 $t7, $f4 ## $f4 = 0.00 -/* 00140 80B96210 46060202 */ mul.s $f8, $f0, $f6 -/* 00144 80B96214 468021A0 */ cvt.s.w $f6, $f4 -/* 00148 80B96218 460A4400 */ add.s $f16, $f8, $f10 -/* 0014C 80B9621C E7B000C4 */ swc1 $f16, 0x00C4($sp) -/* 00150 80B96220 C6720004 */ lwc1 $f18, 0x0004($s3) ## 00000028 -/* 00154 80B96224 E7B200C8 */ swc1 $f18, 0x00C8($sp) -/* 00158 80B96228 C6480058 */ lwc1 $f8, 0x0058($s2) ## 00000058 -/* 0015C 80B9622C C6700008 */ lwc1 $f16, 0x0008($s3) ## 0000002C -/* 00160 80B96230 46083282 */ mul.s $f10, $f6, $f8 -/* 00164 80B96234 46105480 */ add.s $f18, $f10, $f16 -/* 00168 80B96238 E7B200CC */ swc1 $f18, 0x00CC($sp) -/* 0016C 80B9623C C6440050 */ lwc1 $f4, 0x0050($s2) ## 00000050 -/* 00170 80B96240 46040182 */ mul.s $f6, $f0, $f4 -/* 00174 80B96244 00000000 */ nop -/* 00178 80B96248 46143202 */ mul.s $f8, $f6, $f20 -/* 0017C 80B9624C 0C03F66B */ jal Rand_ZeroOne - ## Rand.Next() float -/* 00180 80B96250 E7A800B8 */ swc1 $f8, 0x00B8($sp) -/* 00184 80B96254 46180282 */ mul.s $f10, $f0, $f24 -/* 00188 80B96258 86180002 */ lh $t8, 0x0002($s0) ## 80B969D2 -/* 0018C 80B9625C 44989000 */ mtc1 $t8, $f18 ## $f18 = 0.00 -/* 00190 80B96260 461A5400 */ add.s $f16, $f10, $f26 -/* 00194 80B96264 46809120 */ cvt.s.w $f4, $f18 -/* 00198 80B96268 E7B000BC */ swc1 $f16, 0x00BC($sp) -/* 0019C 80B9626C C6460058 */ lwc1 $f6, 0x0058($s2) ## 00000058 -/* 001A0 80B96270 46062202 */ mul.s $f8, $f4, $f6 -/* 001A4 80B96274 00000000 */ nop -/* 001A8 80B96278 46144282 */ mul.s $f10, $f8, $f20 -/* 001AC 80B9627C 0C03F66B */ jal Rand_ZeroOne - ## Rand.Next() float -/* 001B0 80B96280 E7AA00C0 */ swc1 $f10, 0x00C0($sp) -/* 001B4 80B96284 461C003C */ c.lt.s $f0, $f28 -/* 001B8 80B96288 24110020 */ addiu $s1, $zero, 0x0020 ## $s1 = 00000020 -/* 001BC 80B9628C 45000003 */ bc1f .L80B9629C -/* 001C0 80B96290 00000000 */ nop -/* 001C4 80B96294 10000001 */ beq $zero, $zero, .L80B9629C -/* 001C8 80B96298 24110040 */ addiu $s1, $zero, 0x0040 ## $s1 = 00000040 -.L80B9629C: -/* 001CC 80B9629C 0C03F66B */ jal Rand_ZeroOne - ## Rand.Next() float -/* 001D0 80B962A0 00000000 */ nop -/* 001D4 80B962A4 46160402 */ mul.s $f16, $f0, $f22 -/* 001D8 80B962A8 2419FF00 */ addiu $t9, $zero, 0xFF00 ## $t9 = FFFFFF00 -/* 001DC 80B962AC 2408000F */ addiu $t0, $zero, 0x000F ## $t0 = 0000000F -/* 001E0 80B962B0 2409000F */ addiu $t1, $zero, 0x000F ## $t1 = 0000000F -/* 001E4 80B962B4 AFA9001C */ sw $t1, 0x001C($sp) -/* 001E8 80B962B8 AFA80018 */ sw $t0, 0x0018($sp) -/* 001EC 80B962BC AFB90010 */ sw $t9, 0x0010($sp) -/* 001F0 80B962C0 46168480 */ add.s $f18, $f16, $f22 -/* 001F4 80B962C4 AFB10014 */ sw $s1, 0x0014($sp) -/* 001F8 80B962C8 AFA00020 */ sw $zero, 0x0020($sp) -/* 001FC 80B962CC C6440050 */ lwc1 $f4, 0x0050($s2) ## 00000050 -/* 00200 80B962D0 240C0020 */ addiu $t4, $zero, 0x0020 ## $t4 = 00000020 -/* 00204 80B962D4 240D0032 */ addiu $t5, $zero, 0x0032 ## $t5 = 00000032 -/* 00208 80B962D8 46049182 */ mul.s $f6, $f18, $f4 -/* 0020C 80B962DC 240EFFFF */ addiu $t6, $zero, 0xFFFF ## $t6 = FFFFFFFF -/* 00210 80B962E0 240F011D */ addiu $t7, $zero, 0x011D ## $t7 = 0000011D -/* 00214 80B962E4 AFAF0038 */ sw $t7, 0x0038($sp) -/* 00218 80B962E8 AFAE0034 */ sw $t6, 0x0034($sp) -/* 0021C 80B962EC AFAD0030 */ sw $t5, 0x0030($sp) -/* 00220 80B962F0 AFAC002C */ sw $t4, 0x002C($sp) -/* 00224 80B962F4 4600320D */ trunc.w.s $f8, $f6 -/* 00228 80B962F8 AFB6003C */ sw $s6, 0x003C($sp) -/* 0022C 80B962FC AFA00028 */ sw $zero, 0x0028($sp) -/* 00230 80B96300 03C02025 */ or $a0, $s8, $zero ## $a0 = 00000000 -/* 00234 80B96304 440B4000 */ mfc1 $t3, $f8 -/* 00238 80B96308 02802825 */ or $a1, $s4, $zero ## $a1 = FFFFFFF4 -/* 0023C 80B9630C 02A03025 */ or $a2, $s5, $zero ## $a2 = FFFFFFE8 -/* 00240 80B96310 02603825 */ or $a3, $s3, $zero ## $a3 = 00000024 -/* 00244 80B96314 0C00A7A3 */ jal EffectSsKakera_Spawn - -/* 00248 80B96318 AFAB0024 */ sw $t3, 0x0024($sp) -/* 0024C 80B9631C 26100004 */ addiu $s0, $s0, 0x0004 ## $s0 = 80B969D4 -/* 00250 80B96320 5617FFB5 */ bnel $s0, $s7, .L80B961F8 -/* 00254 80B96324 860E0000 */ lh $t6, 0x0000($s0) ## 80B969D4 -/* 00258 80B96328 8642001C */ lh $v0, 0x001C($s2) ## 0000001C -/* 0025C 80B9632C 03C02025 */ or $a0, $s8, $zero ## $a0 = 00000000 -/* 00260 80B96330 02602825 */ or $a1, $s3, $zero ## $a1 = 00000024 -/* 00264 80B96334 00021043 */ sra $v0, $v0, 1 -/* 00268 80B96338 30420001 */ andi $v0, $v0, 0x0001 ## $v0 = 00000000 -/* 0026C 80B9633C 1440000C */ bne $v0, $zero, .L80B96370 -/* 00270 80B96340 24010001 */ addiu $at, $zero, 0x0001 ## $at = 00000001 -/* 00274 80B96344 24180078 */ addiu $t8, $zero, 0x0078 ## $t8 = 00000078 -/* 00278 80B96348 24190064 */ addiu $t9, $zero, 0x0064 ## $t9 = 00000064 -/* 0027C 80B9634C 24080001 */ addiu $t0, $zero, 0x0001 ## $t0 = 00000001 -/* 00280 80B96350 AFA80018 */ sw $t0, 0x0018($sp) -/* 00284 80B96354 AFB90014 */ sw $t9, 0x0014($sp) -/* 00288 80B96358 AFB80010 */ sw $t8, 0x0010($sp) -/* 0028C 80B9635C 3C0642F0 */ lui $a2, 0x42F0 ## $a2 = 42F00000 -/* 00290 80B96360 0C00CD20 */ jal func_80033480 -/* 00294 80B96364 2407000C */ addiu $a3, $zero, 0x000C ## $a3 = 0000000C -/* 00298 80B96368 1000000E */ beq $zero, $zero, .L80B963A4 -/* 0029C 80B9636C 8FBF0094 */ lw $ra, 0x0094($sp) -.L80B96370: -/* 002A0 80B96370 1441000B */ bne $v0, $at, .L80B963A0 -/* 002A4 80B96374 03C02025 */ or $a0, $s8, $zero ## $a0 = 00000000 -/* 002A8 80B96378 2409003C */ addiu $t1, $zero, 0x003C ## $t1 = 0000003C -/* 002AC 80B9637C 240A0064 */ addiu $t2, $zero, 0x0064 ## $t2 = 00000064 -/* 002B0 80B96380 240B0001 */ addiu $t3, $zero, 0x0001 ## $t3 = 00000001 -/* 002B4 80B96384 AFAB0018 */ sw $t3, 0x0018($sp) -/* 002B8 80B96388 AFAA0014 */ sw $t2, 0x0014($sp) -/* 002BC 80B9638C AFA90010 */ sw $t1, 0x0010($sp) -/* 002C0 80B96390 02602825 */ or $a1, $s3, $zero ## $a1 = 00000024 -/* 002C4 80B96394 3C064270 */ lui $a2, 0x4270 ## $a2 = 42700000 -/* 002C8 80B96398 0C00CD20 */ jal func_80033480 -/* 002CC 80B9639C 24070008 */ addiu $a3, $zero, 0x0008 ## $a3 = 00000008 -.L80B963A0: -/* 002D0 80B963A0 8FBF0094 */ lw $ra, 0x0094($sp) -.L80B963A4: -/* 002D4 80B963A4 D7B40048 */ ldc1 $f20, 0x0048($sp) -/* 002D8 80B963A8 D7B60050 */ ldc1 $f22, 0x0050($sp) -/* 002DC 80B963AC D7B80058 */ ldc1 $f24, 0x0058($sp) -/* 002E0 80B963B0 D7BA0060 */ ldc1 $f26, 0x0060($sp) -/* 002E4 80B963B4 D7BC0068 */ ldc1 $f28, 0x0068($sp) -/* 002E8 80B963B8 8FB00070 */ lw $s0, 0x0070($sp) -/* 002EC 80B963BC 8FB10074 */ lw $s1, 0x0074($sp) -/* 002F0 80B963C0 8FB20078 */ lw $s2, 0x0078($sp) -/* 002F4 80B963C4 8FB3007C */ lw $s3, 0x007C($sp) -/* 002F8 80B963C8 8FB40080 */ lw $s4, 0x0080($sp) -/* 002FC 80B963CC 8FB50084 */ lw $s5, 0x0084($sp) -/* 00300 80B963D0 8FB60088 */ lw $s6, 0x0088($sp) -/* 00304 80B963D4 8FB7008C */ lw $s7, 0x008C($sp) -/* 00308 80B963D8 8FBE0090 */ lw $s8, 0x0090($sp) -/* 0030C 80B963DC 03E00008 */ jr $ra -/* 00310 80B963E0 27BD00D0 */ addiu $sp, $sp, 0x00D0 ## $sp = 00000000 diff --git a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B9651C.s b/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B9651C.s deleted file mode 100644 index c2acbdf29d..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B9651C.s +++ /dev/null @@ -1,18 +0,0 @@ -glabel func_80B9651C -/* 0044C 80B9651C 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8 -/* 00450 80B96520 AFBF0014 */ sw $ra, 0x0014($sp) -/* 00454 80B96524 848E001C */ lh $t6, 0x001C($a0) ## 0000001C -/* 00458 80B96528 3C0880B9 */ lui $t0, %hi(D_80B969C0) ## $t0 = 80B90000 -/* 0045C 80B9652C 3C0580B9 */ lui $a1, %hi(func_80B96560) ## $a1 = 80B90000 -/* 00460 80B96530 000E7A03 */ sra $t7, $t6, 8 -/* 00464 80B96534 31F80007 */ andi $t8, $t7, 0x0007 ## $t8 = 00000000 -/* 00468 80B96538 0018C840 */ sll $t9, $t8, 1 -/* 0046C 80B9653C 01194021 */ addu $t0, $t0, $t9 -/* 00470 80B96540 850869C0 */ lh $t0, %lo(D_80B969C0)($t0) -/* 00474 80B96544 24A56560 */ addiu $a1, $a1, %lo(func_80B96560) ## $a1 = 80B96560 -/* 00478 80B96548 0C2E5834 */ jal func_80B960D0 -/* 0047C 80B9654C A488016E */ sh $t0, 0x016E($a0) ## 0000016E -/* 00480 80B96550 8FBF0014 */ lw $ra, 0x0014($sp) -/* 00484 80B96554 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000 -/* 00488 80B96558 03E00008 */ jr $ra -/* 0048C 80B9655C 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96560.s b/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96560.s deleted file mode 100644 index f3ddcb31fa..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96560.s +++ /dev/null @@ -1,63 +0,0 @@ -glabel func_80B96560 -/* 00490 80B96560 27BDFFC8 */ addiu $sp, $sp, 0xFFC8 ## $sp = FFFFFFC8 -/* 00494 80B96564 AFBF0024 */ sw $ra, 0x0024($sp) -/* 00498 80B96568 AFB00020 */ sw $s0, 0x0020($sp) -/* 0049C 80B9656C 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000 -/* 004A0 80B96570 0C010D5B */ jal func_8004356C -/* 004A4 80B96574 AFA5003C */ sw $a1, 0x003C($sp) -/* 004A8 80B96578 10400027 */ beq $v0, $zero, .L80B96618 -/* 004AC 80B9657C 8FA3003C */ lw $v1, 0x003C($sp) -/* 004B0 80B96580 860E016E */ lh $t6, 0x016E($s0) ## 0000016E -/* 004B4 80B96584 5DC0002D */ bgtzl $t6, .L80B9663C -/* 004B8 80B96588 8FBF0024 */ lw $ra, 0x0024($sp) -/* 004BC 80B9658C 860F001C */ lh $t7, 0x001C($s0) ## 0000001C -/* 004C0 80B96590 24010007 */ addiu $at, $zero, 0x0007 ## $at = 00000007 -/* 004C4 80B96594 000FC203 */ sra $t8, $t7, 8 -/* 004C8 80B96598 33190007 */ andi $t9, $t8, 0x0007 ## $t9 = 00000000 -/* 004CC 80B9659C 57210006 */ bnel $t9, $at, .L80B965B8 -/* 004D0 80B965A0 846807A0 */ lh $t0, 0x07A0($v1) ## 000007A0 -/* 004D4 80B965A4 0C2E59F0 */ jal func_80B967C0 -/* 004D8 80B965A8 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 004DC 80B965AC 10000023 */ beq $zero, $zero, .L80B9663C -/* 004E0 80B965B0 8FBF0024 */ lw $ra, 0x0024($sp) -/* 004E4 80B965B4 846807A0 */ lh $t0, 0x07A0($v1) ## 000007A0 -.L80B965B8: -/* 004E8 80B965B8 24050001 */ addiu $a1, $zero, 0x0001 ## $a1 = 00000001 -/* 004EC 80B965BC 00084880 */ sll $t1, $t0, 2 -/* 004F0 80B965C0 00695021 */ addu $t2, $v1, $t1 -/* 004F4 80B965C4 0C024BE2 */ jal Quake_Add -/* 004F8 80B965C8 8D440790 */ lw $a0, 0x0790($t2) ## 00000790 -/* 004FC 80B965CC 00022400 */ sll $a0, $v0, 16 -/* 00500 80B965D0 AFA20030 */ sw $v0, 0x0030($sp) -/* 00504 80B965D4 00042403 */ sra $a0, $a0, 16 -/* 00508 80B965D8 0C024B6B */ jal Quake_SetSpeed -/* 0050C 80B965DC 24052710 */ addiu $a1, $zero, 0x2710 ## $a1 = 00002710 -/* 00510 80B965E0 87A40032 */ lh $a0, 0x0032($sp) -/* 00514 80B965E4 24050002 */ addiu $a1, $zero, 0x0002 ## $a1 = 00000002 -/* 00518 80B965E8 00003025 */ or $a2, $zero, $zero ## $a2 = 00000000 -/* 0051C 80B965EC 00003825 */ or $a3, $zero, $zero ## $a3 = 00000000 -/* 00520 80B965F0 AFA00010 */ sw $zero, 0x0010($sp) -/* 00524 80B965F4 0C024B9C */ jal Quake_SetQuakeValues -/* 00528 80B965F8 AFA4002C */ sw $a0, 0x002C($sp) -/* 0052C 80B965FC 8FA4002C */ lw $a0, 0x002C($sp) -/* 00530 80B96600 0C024B7C */ jal Quake_SetCountdown -/* 00534 80B96604 24050014 */ addiu $a1, $zero, 0x0014 ## $a1 = 00000014 -/* 00538 80B96608 0C2E5993 */ jal func_80B9664C -/* 0053C 80B9660C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00540 80B96610 1000000A */ beq $zero, $zero, .L80B9663C -/* 00544 80B96614 8FBF0024 */ lw $ra, 0x0024($sp) -.L80B96618: -/* 00548 80B96618 860B001C */ lh $t3, 0x001C($s0) ## 0000001C -/* 0054C 80B9661C 3C0F80B9 */ lui $t7, %hi(D_80B969C0) ## $t7 = 80B90000 -/* 00550 80B96620 000B6203 */ sra $t4, $t3, 8 -/* 00554 80B96624 318D0007 */ andi $t5, $t4, 0x0007 ## $t5 = 00000000 -/* 00558 80B96628 000D7040 */ sll $t6, $t5, 1 -/* 0055C 80B9662C 01EE7821 */ addu $t7, $t7, $t6 -/* 00560 80B96630 85EF69C0 */ lh $t7, %lo(D_80B969C0)($t7) -/* 00564 80B96634 A60F016E */ sh $t7, 0x016E($s0) ## 0000016E -/* 00568 80B96638 8FBF0024 */ lw $ra, 0x0024($sp) -.L80B9663C: -/* 0056C 80B9663C 8FB00020 */ lw $s0, 0x0020($sp) -/* 00570 80B96640 27BD0038 */ addiu $sp, $sp, 0x0038 ## $sp = 00000000 -/* 00574 80B96644 03E00008 */ jr $ra -/* 00578 80B96648 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B9664C.s b/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B9664C.s deleted file mode 100644 index c3b4a30d2e..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B9664C.s +++ /dev/null @@ -1,12 +0,0 @@ -glabel func_80B9664C -/* 0057C 80B9664C 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8 -/* 00580 80B96650 AFBF0014 */ sw $ra, 0x0014($sp) -/* 00584 80B96654 240E0014 */ addiu $t6, $zero, 0x0014 ## $t6 = 00000014 -/* 00588 80B96658 3C0580B9 */ lui $a1, %hi(func_80B96678) ## $a1 = 80B90000 -/* 0058C 80B9665C A48E016E */ sh $t6, 0x016E($a0) ## 0000016E -/* 00590 80B96660 0C2E5834 */ jal func_80B960D0 -/* 00594 80B96664 24A56678 */ addiu $a1, $a1, %lo(func_80B96678) ## $a1 = 80B96678 -/* 00598 80B96668 8FBF0014 */ lw $ra, 0x0014($sp) -/* 0059C 80B9666C 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000 -/* 005A0 80B96670 03E00008 */ jr $ra -/* 005A4 80B96674 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96678.s b/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96678.s deleted file mode 100644 index c7d1d0f552..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96678.s +++ /dev/null @@ -1,92 +0,0 @@ -glabel func_80B96678 -/* 005A8 80B96678 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0 -/* 005AC 80B9667C AFBF001C */ sw $ra, 0x001C($sp) -/* 005B0 80B96680 AFB00018 */ sw $s0, 0x0018($sp) -/* 005B4 80B96684 AFA50024 */ sw $a1, 0x0024($sp) -/* 005B8 80B96688 848E016E */ lh $t6, 0x016E($a0) ## 0000016E -/* 005BC 80B9668C 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000 -/* 005C0 80B96690 5DC00006 */ bgtzl $t6, .L80B966AC -/* 005C4 80B96694 860F0168 */ lh $t7, 0x0168($s0) ## 00000168 -/* 005C8 80B96698 0C2E59F0 */ jal func_80B967C0 -/* 005CC 80B9669C 00000000 */ nop -/* 005D0 80B966A0 1000003A */ beq $zero, $zero, .L80B9678C -/* 005D4 80B966A4 860F016E */ lh $t7, 0x016E($s0) ## 0000016E -/* 005D8 80B966A8 860F0168 */ lh $t7, 0x0168($s0) ## 00000168 -.L80B966AC: -/* 005DC 80B966AC 25F82710 */ addiu $t8, $t7, 0x2710 ## $t8 = 00002710 -/* 005E0 80B966B0 A6180168 */ sh $t8, 0x0168($s0) ## 00000168 -/* 005E4 80B966B4 0C01DE1C */ jal Math_SinS - ## sins? -/* 005E8 80B966B8 86040168 */ lh $a0, 0x0168($s0) ## 00000168 -/* 005EC 80B966BC 3C014396 */ lui $at, 0x4396 ## $at = 43960000 -/* 005F0 80B966C0 44812000 */ mtc1 $at, $f4 ## $f4 = 300.00 -/* 005F4 80B966C4 860B0014 */ lh $t3, 0x0014($s0) ## 00000014 -/* 005F8 80B966C8 86040168 */ lh $a0, 0x0168($s0) ## 00000168 -/* 005FC 80B966CC 46040182 */ mul.s $f6, $f0, $f4 -/* 00600 80B966D0 4600320D */ trunc.w.s $f8, $f6 -/* 00604 80B966D4 440A4000 */ mfc1 $t2, $f8 -/* 00608 80B966D8 00000000 */ nop -/* 0060C 80B966DC 014B6021 */ addu $t4, $t2, $t3 -/* 00610 80B966E0 0C01DE0D */ jal Math_CosS - ## coss? -/* 00614 80B966E4 A60C0030 */ sh $t4, 0x0030($s0) ## 00000030 -/* 00618 80B966E8 3C014396 */ lui $at, 0x4396 ## $at = 43960000 -/* 0061C 80B966EC 44815000 */ mtc1 $at, $f10 ## $f10 = 300.00 -/* 00620 80B966F0 86190018 */ lh $t9, 0x0018($s0) ## 00000018 -/* 00624 80B966F4 860B016A */ lh $t3, 0x016A($s0) ## 0000016A -/* 00628 80B966F8 460A0402 */ mul.s $f16, $f0, $f10 -/* 0062C 80B966FC 86090030 */ lh $t1, 0x0030($s0) ## 00000030 -/* 00630 80B96700 256C4650 */ addiu $t4, $t3, 0x4650 ## $t4 = 00004650 -/* 00634 80B96704 A60C016A */ sh $t4, 0x016A($s0) ## 0000016A -/* 00638 80B96708 8604016A */ lh $a0, 0x016A($s0) ## 0000016A -/* 0063C 80B9670C A60900B4 */ sh $t1, 0x00B4($s0) ## 000000B4 -/* 00640 80B96710 4600848D */ trunc.w.s $f18, $f16 -/* 00644 80B96714 44189000 */ mfc1 $t8, $f18 -/* 00648 80B96718 00000000 */ nop -/* 0064C 80B9671C 03194021 */ addu $t0, $t8, $t9 -/* 00650 80B96720 A6080034 */ sh $t0, 0x0034($s0) ## 00000034 -/* 00654 80B96724 860A0034 */ lh $t2, 0x0034($s0) ## 00000034 -/* 00658 80B96728 0C01DE1C */ jal Math_SinS - ## sins? -/* 0065C 80B9672C A60A00B8 */ sh $t2, 0x00B8($s0) ## 000000B8 -/* 00660 80B96730 C604000C */ lwc1 $f4, 0x000C($s0) ## 0000000C -/* 00664 80B96734 860D016C */ lh $t5, 0x016C($s0) ## 0000016C -/* 00668 80B96738 46040180 */ add.s $f6, $f0, $f4 -/* 0066C 80B9673C 25AE4650 */ addiu $t6, $t5, 0x4650 ## $t6 = 00004650 -/* 00670 80B96740 A60E016C */ sh $t6, 0x016C($s0) ## 0000016C -/* 00674 80B96744 8604016C */ lh $a0, 0x016C($s0) ## 0000016C -/* 00678 80B96748 0C01DE1C */ jal Math_SinS - ## sins? -/* 0067C 80B9674C E6060028 */ swc1 $f6, 0x0028($s0) ## 00000028 -/* 00680 80B96750 3C014040 */ lui $at, 0x4040 ## $at = 40400000 -/* 00684 80B96754 44814000 */ mtc1 $at, $f8 ## $f8 = 3.00 -/* 00688 80B96758 C6100008 */ lwc1 $f16, 0x0008($s0) ## 00000008 -/* 0068C 80B9675C 8604016C */ lh $a0, 0x016C($s0) ## 0000016C -/* 00690 80B96760 46080282 */ mul.s $f10, $f0, $f8 -/* 00694 80B96764 46105480 */ add.s $f18, $f10, $f16 -/* 00698 80B96768 0C01DE0D */ jal Math_CosS - ## coss? -/* 0069C 80B9676C E6120024 */ swc1 $f18, 0x0024($s0) ## 00000024 -/* 006A0 80B96770 3C014040 */ lui $at, 0x4040 ## $at = 40400000 -/* 006A4 80B96774 44812000 */ mtc1 $at, $f4 ## $f4 = 3.00 -/* 006A8 80B96778 C6080010 */ lwc1 $f8, 0x0010($s0) ## 00000010 -/* 006AC 80B9677C 46040182 */ mul.s $f6, $f0, $f4 -/* 006B0 80B96780 46083280 */ add.s $f10, $f6, $f8 -/* 006B4 80B96784 E60A002C */ swc1 $f10, 0x002C($s0) ## 0000002C -/* 006B8 80B96788 860F016E */ lh $t7, 0x016E($s0) ## 0000016E -.L80B9678C: -/* 006BC 80B9678C 24010003 */ addiu $at, $zero, 0x0003 ## $at = 00000003 -/* 006C0 80B96790 8FA40024 */ lw $a0, 0x0024($sp) -/* 006C4 80B96794 31F80003 */ andi $t8, $t7, 0x0003 ## $t8 = 00000000 -/* 006C8 80B96798 17010004 */ bne $t8, $at, .L80B967AC -/* 006CC 80B9679C 26050024 */ addiu $a1, $s0, 0x0024 ## $a1 = 00000024 -/* 006D0 80B967A0 24060010 */ addiu $a2, $zero, 0x0010 ## $a2 = 00000010 -/* 006D4 80B967A4 0C01AEB6 */ jal Audio_PlaySoundAtPosition - -/* 006D8 80B967A8 24072838 */ addiu $a3, $zero, 0x2838 ## $a3 = 00002838 -.L80B967AC: -/* 006DC 80B967AC 8FBF001C */ lw $ra, 0x001C($sp) -/* 006E0 80B967B0 8FB00018 */ lw $s0, 0x0018($sp) -/* 006E4 80B967B4 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000 -/* 006E8 80B967B8 03E00008 */ jr $ra -/* 006EC 80B967BC 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B967C0.s b/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B967C0.s deleted file mode 100644 index 6e89461ce9..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B967C0.s +++ /dev/null @@ -1,34 +0,0 @@ -glabel func_80B967C0 -/* 006F0 80B967C0 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0 -/* 006F4 80B967C4 AFBF0014 */ sw $ra, 0x0014($sp) -/* 006F8 80B967C8 3C0580B9 */ lui $a1, %hi(func_80B96840) ## $a1 = 80B90000 -/* 006FC 80B967CC 24A56840 */ addiu $a1, $a1, %lo(func_80B96840) ## $a1 = 80B96840 -/* 00700 80B967D0 0C2E5834 */ jal func_80B960D0 -/* 00704 80B967D4 AFA40020 */ sw $a0, 0x0020($sp) -/* 00708 80B967D8 8FA60020 */ lw $a2, 0x0020($sp) -/* 0070C 80B967DC 24C40024 */ addiu $a0, $a2, 0x0024 ## $a0 = 00000024 -/* 00710 80B967E0 0C01DF90 */ jal Math_Vec3f_Copy - ## Vec3f_Copy -/* 00714 80B967E4 24C50008 */ addiu $a1, $a2, 0x0008 ## $a1 = 00000008 -/* 00718 80B967E8 8FA60020 */ lw $a2, 0x0020($sp) -/* 0071C 80B967EC 27A20018 */ addiu $v0, $sp, 0x0018 ## $v0 = FFFFFFF8 -/* 00720 80B967F0 88CF0014 */ lwl $t7, 0x0014($a2) ## 00000014 -/* 00724 80B967F4 98CF0017 */ lwr $t7, 0x0017($a2) ## 00000017 -/* 00728 80B967F8 AC4F0000 */ sw $t7, 0x0000($v0) ## FFFFFFF8 -/* 0072C 80B967FC 94CF0018 */ lhu $t7, 0x0018($a2) ## 00000018 -/* 00730 80B96800 8C590000 */ lw $t9, 0x0000($v0) ## FFFFFFF8 -/* 00734 80B96804 A44F0004 */ sh $t7, 0x0004($v0) ## FFFFFFFC -/* 00738 80B96808 A8D90030 */ swl $t9, 0x0030($a2) ## 00000030 -/* 0073C 80B9680C B8D90033 */ swr $t9, 0x0033($a2) ## 00000033 -/* 00740 80B96810 94590004 */ lhu $t9, 0x0004($v0) ## FFFFFFFC -/* 00744 80B96814 A4D90034 */ sh $t9, 0x0034($a2) ## 00000034 -/* 00748 80B96818 88490000 */ lwl $t1, 0x0000($v0) ## FFFFFFF8 -/* 0074C 80B9681C 98490003 */ lwr $t1, 0x0003($v0) ## FFFFFFFB -/* 00750 80B96820 A8C900B4 */ swl $t1, 0x00B4($a2) ## 000000B4 -/* 00754 80B96824 B8C900B7 */ swr $t1, 0x00B7($a2) ## 000000B7 -/* 00758 80B96828 94490004 */ lhu $t1, 0x0004($v0) ## FFFFFFFC -/* 0075C 80B9682C A4C900B8 */ sh $t1, 0x00B8($a2) ## 000000B8 -/* 00760 80B96830 8FBF0014 */ lw $ra, 0x0014($sp) -/* 00764 80B96834 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000 -/* 00768 80B96838 03E00008 */ jr $ra -/* 0076C 80B9683C 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96840.s b/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96840.s deleted file mode 100644 index 8fc4b20864..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96840.s +++ /dev/null @@ -1,76 +0,0 @@ -.late_rodata -glabel D_80B96AA4 - .float 0.001 - -.text -glabel func_80B96840 -/* 00770 80B96840 27BDFFC0 */ addiu $sp, $sp, 0xFFC0 ## $sp = FFFFFFC0 -/* 00774 80B96844 AFBF0024 */ sw $ra, 0x0024($sp) -/* 00778 80B96848 AFB00020 */ sw $s0, 0x0020($sp) -/* 0077C 80B9684C 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000 -/* 00780 80B96850 0C00B638 */ jal Actor_MoveForward - -/* 00784 80B96854 AFA50044 */ sw $a1, 0x0044($sp) -/* 00788 80B96858 27A4002C */ addiu $a0, $sp, 0x002C ## $a0 = FFFFFFEC -/* 0078C 80B9685C 0C01DF90 */ jal Math_Vec3f_Copy - ## Vec3f_Copy -/* 00790 80B96860 26050100 */ addiu $a1, $s0, 0x0100 ## $a1 = 00000100 -/* 00794 80B96864 860E001C */ lh $t6, 0x001C($s0) ## 0000001C -/* 00798 80B96868 3C0180B9 */ lui $at, %hi(D_80B96A10) ## $at = 80B90000 -/* 0079C 80B9686C C7A40030 */ lwc1 $f4, 0x0030($sp) -/* 007A0 80B96870 000E7843 */ sra $t7, $t6, 1 -/* 007A4 80B96874 31F80001 */ andi $t8, $t7, 0x0001 ## $t8 = 00000000 -/* 007A8 80B96878 0018C880 */ sll $t9, $t8, 2 -/* 007AC 80B9687C 00390821 */ addu $at, $at, $t9 -/* 007B0 80B96880 C4266A10 */ lwc1 $f6, %lo(D_80B96A10)($at) -/* 007B4 80B96884 8FA40044 */ lw $a0, 0x0044($sp) -/* 007B8 80B96888 27A8002C */ addiu $t0, $sp, 0x002C ## $t0 = FFFFFFEC -/* 007BC 80B9688C 46062200 */ add.s $f8, $f4, $f6 -/* 007C0 80B96890 AFA80010 */ sw $t0, 0x0010($sp) -/* 007C4 80B96894 26050078 */ addiu $a1, $s0, 0x0078 ## $a1 = 00000078 -/* 007C8 80B96898 27A60038 */ addiu $a2, $sp, 0x0038 ## $a2 = FFFFFFF8 -/* 007CC 80B9689C E7A80030 */ swc1 $f8, 0x0030($sp) -/* 007D0 80B968A0 02003825 */ or $a3, $s0, $zero ## $a3 = 00000000 -/* 007D4 80B968A4 0C00F269 */ jal BgCheck_EntityRaycastFloor4 -/* 007D8 80B968A8 248407C0 */ addiu $a0, $a0, 0x07C0 ## $a0 = 000007C0 -/* 007DC 80B968AC 8609001C */ lh $t1, 0x001C($s0) ## 0000001C -/* 007E0 80B968B0 3C0180B9 */ lui $at, %hi(D_80B96A10) ## $at = 80B90000 -/* 007E4 80B968B4 E6000080 */ swc1 $f0, 0x0080($s0) ## 00000080 -/* 007E8 80B968B8 00095043 */ sra $t2, $t1, 1 -/* 007EC 80B968BC 314B0001 */ andi $t3, $t2, 0x0001 ## $t3 = 00000000 -/* 007F0 80B968C0 000B6080 */ sll $t4, $t3, 2 -/* 007F4 80B968C4 002C0821 */ addu $at, $at, $t4 -/* 007F8 80B968C8 C4326A10 */ lwc1 $f18, %lo(D_80B96A10)($at) -/* 007FC 80B968CC 3C0180B9 */ lui $at, %hi(D_80B96AA4) ## $at = 80B90000 -/* 00800 80B968D0 C4246AA4 */ lwc1 $f4, %lo(D_80B96AA4)($at) -/* 00804 80B968D4 C60A0028 */ lwc1 $f10, 0x0028($s0) ## 00000028 -/* 00808 80B968D8 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 0080C 80B968DC 46049181 */ sub.s $f6, $f18, $f4 -/* 00810 80B968E0 460A0401 */ sub.s $f16, $f0, $f10 -/* 00814 80B968E4 4610303E */ c.le.s $f6, $f16 -/* 00818 80B968E8 00000000 */ nop -/* 0081C 80B968EC 45020010 */ bc1fl .L80B96930 -/* 00820 80B968F0 8FBF0024 */ lw $ra, 0x0024($sp) -/* 00824 80B968F4 0C2E5858 */ jal func_80B96160 -/* 00828 80B968F8 8FA50044 */ lw $a1, 0x0044($sp) -/* 0082C 80B968FC 8FA40044 */ lw $a0, 0x0044($sp) -/* 00830 80B96900 26050024 */ addiu $a1, $s0, 0x0024 ## $a1 = 00000024 -/* 00834 80B96904 24060014 */ addiu $a2, $zero, 0x0014 ## $a2 = 00000014 -/* 00838 80B96908 0C01AEB6 */ jal Audio_PlaySoundAtPosition - -/* 0083C 80B9690C 24072839 */ addiu $a3, $zero, 0x2839 ## $a3 = 00002839 -/* 00840 80B96910 8605001C */ lh $a1, 0x001C($s0) ## 0000001C -/* 00844 80B96914 8FA40044 */ lw $a0, 0x0044($sp) -/* 00848 80B96918 00052883 */ sra $a1, $a1, 2 -/* 0084C 80B9691C 0C00B2DD */ jal Flags_SetSwitch - -/* 00850 80B96920 30A5003F */ andi $a1, $a1, 0x003F ## $a1 = 00000000 -/* 00854 80B96924 0C00B55C */ jal Actor_Kill - -/* 00858 80B96928 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 0085C 80B9692C 8FBF0024 */ lw $ra, 0x0024($sp) -.L80B96930: -/* 00860 80B96930 8FB00020 */ lw $s0, 0x0020($sp) -/* 00864 80B96934 27BD0040 */ addiu $sp, $sp, 0x0040 ## $sp = 00000000 -/* 00868 80B96938 03E00008 */ jr $ra -/* 0086C 80B9693C 00000000 */ nop diff --git a/data/overlays/actors/z_obj_lift.data.s b/data/overlays/actors/z_obj_lift.data.s deleted file mode 100644 index 882f07264e..0000000000 --- a/data/overlays/actors/z_obj_lift.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 Obj_Lift_InitVars - .word 0x012C0100, 0x00000010, 0x011D0000, 0x00000170 -.word ObjLift_Init -.word ObjLift_Destroy -.word ObjLift_Update -.word ObjLift_Draw -glabel D_80B969C0 - .word 0x0000000A, 0x0014001E, 0x00280032, 0x003C0000 -glabel D_80B969D0 - .word 0x0078FF88, 0x00780000, 0x00780078, 0x0000FF88, 0x00000000, 0x00000078, 0xFF88FF88, 0xFF880000, 0xFF880078 -glabel D_80B969F4 - .word 0xB86CFDA8, 0xB870C568, 0xB0F407D0, 0xB0F801F4, 0x30FC07D0 -glabel D_80B96A08 - .word 0x3DCCCCCD, 0x3D4CCCCD -glabel D_80B96A10 - .word 0xC1900000, 0xC1100000, 0x00000000, 0x00000000 - diff --git a/data/overlays/actors/z_obj_lift.reloc.s b/data/overlays/actors/z_obj_lift.reloc.s deleted file mode 100644 index b22164f79b..0000000000 --- a/data/overlays/actors/z_obj_lift.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_80B96AB0 - .incbin "baserom/ovl_Obj_Lift", 0x9E0, 0x000000F0 diff --git a/spec b/spec index 0085f042fb..3e7678838e 100644 --- a/spec +++ b/spec @@ -3282,8 +3282,7 @@ endseg beginseg name "ovl_Obj_Lift" include "build/src/overlays/actors/ovl_Obj_Lift/z_obj_lift.o" - include "build/data/overlays/actors/z_obj_lift.data.o" - include "build/data/overlays/actors/z_obj_lift.reloc.o" + include "build/src/overlays/actors/ovl_Obj_Lift/ovl_Obj_Lift_reloc.o" endseg beginseg diff --git a/src/overlays/actors/ovl_Obj_Lift/z_obj_lift.c b/src/overlays/actors/ovl_Obj_Lift/z_obj_lift.c index 2a4450e1dc..6d51c073f0 100644 --- a/src/overlays/actors/ovl_Obj_Lift/z_obj_lift.c +++ b/src/overlays/actors/ovl_Obj_Lift/z_obj_lift.c @@ -6,6 +6,7 @@ #include "z_obj_lift.h" #include "objects/object_d_lift/object_d_lift.h" +#include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h" #define FLAGS 0x00000010 @@ -16,7 +17,14 @@ void ObjLift_Destroy(Actor* thisx, GlobalContext* globalCtx); void ObjLift_Update(Actor* thisx, GlobalContext* globalCtx); void ObjLift_Draw(Actor* thisx, GlobalContext* globalCtx); -/* +void func_80B9651C(ObjLift* this); +void func_80B9664C(ObjLift* this); +void func_80B967C0(ObjLift* this); + +void func_80B96560(ObjLift* this, GlobalContext* globalCtx); +void func_80B96678(ObjLift* this, GlobalContext* globalCtx); +void func_80B96840(ObjLift* this, GlobalContext* globalCtx); + const ActorInit Obj_Lift_InitVars = { ACTOR_OBJ_LIFT, ACTORCAT_BG, @@ -28,29 +36,188 @@ const ActorInit Obj_Lift_InitVars = { (ActorFunc)ObjLift_Update, (ActorFunc)ObjLift_Draw, }; -*/ -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B960D0.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B960D8.s") +static s16 sFallTimerDurations[] = { 0, 10, 20, 30, 40, 50, 60 }; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96160.s") +typedef struct { + /* 0x00 */ s16 x; + /* 0x02 */ s16 z; +} ObjLiftFramgentScale; // size = 0x4 -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Init.s") +static ObjLiftFramgentScale sFragmentScales[] = { + { 120, -120 }, { 120, 0 }, { 120, 120 }, { 0, -120 }, { 0, 0 }, + { 0, 120 }, { -120, -120 }, { -120, 0 }, { -120, 120 }, +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Destroy.s") +static InitChainEntry sInitChain[] = { + ICHAIN_F32_DIV1000(gravity, -600, ICHAIN_CONTINUE), ICHAIN_F32_DIV1000(minVelocityY, -15000, ICHAIN_CONTINUE), + ICHAIN_F32(uncullZoneForward, 2000, ICHAIN_CONTINUE), ICHAIN_F32(uncullZoneScale, 500, ICHAIN_CONTINUE), + ICHAIN_F32(uncullZoneDownward, 2000, ICHAIN_STOP), +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B9651C.s") +static f32 sScales[] = { 0.1f, 0.05f }; +static f32 sMaxFallDistances[] = { -18.0f, -9.0f }; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96560.s") +void ObjLift_SetupAction(ObjLift* this, ObjLiftActionFunc actionFunc) { + this->actionFunc = actionFunc; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B9664C.s") +void ObjLift_InitDynaPoly(ObjLift* this, GlobalContext* globalCtx, CollisionHeader* collision, DynaPolyMoveFlag flags) { + s32 pad; + CollisionHeader* colHeader = NULL; + s32 pad2; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96678.s") + DynaPolyActor_Init(&this->dyna, flags); + CollisionHeader_GetVirtual(collision, &colHeader); + this->dyna.bgId = DynaPoly_SetBgActor(globalCtx, &globalCtx->colCtx.dyna, &this->dyna.actor, colHeader); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B967C0.s") + if (this->dyna.bgId == BG_ACTOR_MAX) { + osSyncPrintf("Warning : move BG 登録失敗(%s %d)(name %d)(arg_data 0x%04x)\n", "../z_obj_lift.c", 188, + this->dyna.actor.id, this->dyna.actor.params); + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96840.s") +void func_80B96160(ObjLift* this, GlobalContext* globalCtx) { + Vec3f pos; + Vec3f velocity; + Vec3f* temp_s3; + s32 pad0; + s32 i; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Update.s") + temp_s3 = &this->dyna.actor.world.pos; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Draw.s") + for (i = 0; i < ARRAY_COUNT(sFragmentScales); i++) { + pos.x = sFragmentScales[i].x * this->dyna.actor.scale.x + temp_s3->x; + pos.y = temp_s3->y; + pos.z = sFragmentScales[i].z * this->dyna.actor.scale.z + temp_s3->z; + velocity.x = sFragmentScales[i].x * this->dyna.actor.scale.x * 0.8f; + velocity.y = Rand_ZeroOne() * 10.0f + 6.0f; + velocity.z = sFragmentScales[i].z * this->dyna.actor.scale.z * 0.8f; + EffectSsKakera_Spawn(globalCtx, &pos, &velocity, temp_s3, -256, (Rand_ZeroOne() < 0.5f) ? 64 : 32, 15, 15, 0, + (Rand_ZeroOne() * 50.0f + 50.0f) * this->dyna.actor.scale.x, 0, 32, 50, KAKERA_COLOR_NONE, + OBJECT_D_LIFT, gCollapsingPlatformDL); + } + + if (((this->dyna.actor.params >> 1) & 1) == 0) { + func_80033480(globalCtx, &this->dyna.actor.world.pos, 120.0f, 12, 120, 100, 1); + } else if (((this->dyna.actor.params >> 1) & 1) == 1) { + func_80033480(globalCtx, &this->dyna.actor.world.pos, 60.0f, 8, 60, 100, 1); + } +} + +void ObjLift_Init(Actor* thisx, GlobalContext* globalCtx) { + ObjLift* this = THIS; + + ObjLift_InitDynaPoly(this, globalCtx, &gCollapsingPlatformCol, DPM_PLAYER); + + if (Flags_GetSwitch(globalCtx, (this->dyna.actor.params >> 2) & 0x3F)) { + Actor_Kill(&this->dyna.actor); + return; + } + + Actor_SetScale(&this->dyna.actor, sScales[(this->dyna.actor.params >> 1) & 1]); + Actor_ProcessInitChain(&this->dyna.actor, sInitChain); + this->unk168.x = Rand_ZeroOne() * 65535.5f; + this->unk168.y = Rand_ZeroOne() * 65535.5f; + this->unk168.z = Rand_ZeroOne() * 65535.5f; + func_80B9651C(this); + osSyncPrintf("(Dungeon Lift)(arg_data 0x%04x)\n", this->dyna.actor.params); +} + +void ObjLift_Destroy(Actor* thisx, GlobalContext* globalCtx) { + ObjLift* this = THIS; + + DynaPoly_DeleteBgActor(globalCtx, &globalCtx->colCtx.dyna, this->dyna.bgId); +} + +void func_80B9651C(ObjLift* this) { + this->timer = sFallTimerDurations[(this->dyna.actor.params >> 8) & 7]; + ObjLift_SetupAction(this, func_80B96560); +} + +void func_80B96560(ObjLift* this, GlobalContext* globalCtx) { + s32 pad; + s32 quakeIndex; + + if (func_8004356C(&this->dyna)) { + if (this->timer <= 0) { + if (((this->dyna.actor.params >> 8) & 7) == 7) { + func_80B967C0(this); + } else { + quakeIndex = Quake_Add(ACTIVE_CAM, 1); + Quake_SetSpeed(quakeIndex, 10000); + Quake_SetQuakeValues(quakeIndex, 2, 0, 0, 0); + Quake_SetCountdown(quakeIndex, 20); + func_80B9664C(this); + } + } + } else { + this->timer = sFallTimerDurations[(this->dyna.actor.params >> 8) & 7]; + } +} + +void func_80B9664C(ObjLift* this) { + this->timer = 20; + ObjLift_SetupAction(this, func_80B96678); +} + +void func_80B96678(ObjLift* this, GlobalContext* globalCtx) { + if (this->timer <= 0) { + func_80B967C0(this); + } else { + this->unk168.x += 10000; + this->dyna.actor.world.rot.x = (s16)(Math_SinS(this->unk168.x) * 300.0f) + this->dyna.actor.home.rot.x; + this->dyna.actor.world.rot.z = (s16)(Math_CosS(this->unk168.x) * 300.0f) + this->dyna.actor.home.rot.z; + this->dyna.actor.shape.rot.x = this->dyna.actor.world.rot.x; + this->dyna.actor.shape.rot.z = this->dyna.actor.world.rot.z; + this->unk168.y += 18000; + this->dyna.actor.world.pos.y = Math_SinS(this->unk168.y) + this->dyna.actor.home.pos.y; + this->unk168.z += 18000; + this->dyna.actor.world.pos.x = Math_SinS(this->unk168.z) * 3.0f + this->dyna.actor.home.pos.x; + this->dyna.actor.world.pos.z = Math_CosS(this->unk168.z) * 3.0f + this->dyna.actor.home.pos.z; + } + + if ((this->timer & 3) == 3) { + Audio_PlaySoundAtPosition(globalCtx, &this->dyna.actor.world.pos, 16, NA_SE_EV_BLOCK_SHAKE); + } +} + +void func_80B967C0(ObjLift* this) { + ObjLift_SetupAction(this, func_80B96840); + Math_Vec3f_Copy(&this->dyna.actor.world.pos, &this->dyna.actor.home.pos); + this->dyna.actor.shape.rot = this->dyna.actor.world.rot = this->dyna.actor.home.rot; +} + +void func_80B96840(ObjLift* this, GlobalContext* globalCtx) { + s32 pad; + s32 bgId; + Vec3f sp2C; + + Actor_MoveForward(&this->dyna.actor); + Math_Vec3f_Copy(&sp2C, &this->dyna.actor.prevPos); + sp2C.y += sMaxFallDistances[(this->dyna.actor.params >> 1) & 1]; + this->dyna.actor.floorHeight = + BgCheck_EntityRaycastFloor4(&globalCtx->colCtx, &this->dyna.actor.floorPoly, &bgId, &this->dyna.actor, &sp2C); + + if ((this->dyna.actor.floorHeight - this->dyna.actor.world.pos.y) >= + (sMaxFallDistances[(this->dyna.actor.params >> 1) & 1] - 0.001f)) { + func_80B96160(this, globalCtx); + Audio_PlaySoundAtPosition(globalCtx, &this->dyna.actor.world.pos, 20, NA_SE_EV_BOX_BREAK); + Flags_SetSwitch(globalCtx, (this->dyna.actor.params >> 2) & 0x3F); + Actor_Kill(&this->dyna.actor); + } +} + +void ObjLift_Update(Actor* thisx, GlobalContext* globalCtx) { + ObjLift* this = THIS; + + if (this->timer > 0) { + this->timer--; + } + + this->actionFunc(this, globalCtx); +} + +void ObjLift_Draw(Actor* thisx, GlobalContext* globalCtx) { + Gfx_DrawDListOpa(globalCtx, gCollapsingPlatformDL); +} diff --git a/src/overlays/actors/ovl_Obj_Lift/z_obj_lift.h b/src/overlays/actors/ovl_Obj_Lift/z_obj_lift.h index 2ef2599f2d..8e5ac17220 100644 --- a/src/overlays/actors/ovl_Obj_Lift/z_obj_lift.h +++ b/src/overlays/actors/ovl_Obj_Lift/z_obj_lift.h @@ -6,9 +6,13 @@ struct ObjLift; +typedef void (*ObjLiftActionFunc)(struct ObjLift*, GlobalContext*); + typedef struct ObjLift { /* 0x0000 */ DynaPolyActor dyna; - /* 0x0164 */ char unk_164[0xC]; + /* 0x0164 */ ObjLiftActionFunc actionFunc; + /* 0x0168 */ Vec3s unk168; + /* 0x016E */ s16 timer; } ObjLift; // size = 0x0170 extern const ActorInit Obj_Lift_InitVars;