summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStardust Sauce <35093523+StardustSauce@users.noreply.github.com>2021-08-11 10:35:17 -0400
committerGitHub <noreply@github.com>2021-08-11 10:35:17 -0400
commit70ec8c42fc33616efbca70403f2e3f09885d5532 (patch)
treed4baa3875265a1deecc8feb8c3abac296418fdd3
parentd17f9f14c564ed7ad53254f132bc3daf030da7dd (diff)
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 <fig02srl@gmail.com>
-rw-r--r--asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Destroy.s14
-rw-r--r--asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Draw.s13
-rw-r--r--asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Init.s91
-rw-r--r--asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Update.s15
-rw-r--r--asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B960D0.s3
-rw-r--r--asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B960D8.s50
-rw-r--r--asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96160.s176
-rw-r--r--asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B9651C.s18
-rw-r--r--asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96560.s63
-rw-r--r--asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B9664C.s12
-rw-r--r--asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96678.s92
-rw-r--r--asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B967C0.s34
-rw-r--r--asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96840.s76
-rw-r--r--data/overlays/actors/z_obj_lift.data.s28
-rw-r--r--data/overlays/actors/z_obj_lift.reloc.s13
-rw-r--r--spec3
-rw-r--r--src/overlays/actors/ovl_Obj_Lift/z_obj_lift.c211
-rw-r--r--src/overlays/actors/ovl_Obj_Lift/z_obj_lift.h6
18 files changed, 195 insertions, 723 deletions
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 54dde34ad..000000000
--- 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 421453383..000000000
--- 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 53ec6cc65..000000000
--- 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 28553b5f5..000000000
--- 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 0e9a45881..000000000
--- 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 bec7374d6..000000000
--- 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 cfce44987..000000000
--- 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 c2acbdf29..000000000
--- 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 f3ddcb31f..000000000
--- 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 c3b4a30d2..000000000
--- 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 c7d1d0f55..000000000
--- 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 6e89461ce..000000000
--- 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 8fc4b2086..000000000
--- 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 882f07264..000000000
--- 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 b22164f79..000000000
--- 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 0085f042f..3e7678838 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 2a4450e1d..6d51c073f 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")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96160.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Init.s")
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Lift/ObjLift_Destroy.s")
+static s16 sFallTimerDurations[] = { 0, 10, 20, 30, 40, 50, 60 };
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B9651C.s")
+typedef struct {
+ /* 0x00 */ s16 x;
+ /* 0x02 */ s16 z;
+} ObjLiftFramgentScale; // size = 0x4
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96560.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B9664C.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96678.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B967C0.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Lift/func_80B96840.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_Update.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/ObjLift_Draw.s")
+static f32 sScales[] = { 0.1f, 0.05f };
+static f32 sMaxFallDistances[] = { -18.0f, -9.0f };
+
+void ObjLift_SetupAction(ObjLift* this, ObjLiftActionFunc actionFunc) {
+ this->actionFunc = actionFunc;
+}
+
+void ObjLift_InitDynaPoly(ObjLift* this, GlobalContext* globalCtx, CollisionHeader* collision, DynaPolyMoveFlag flags) {
+ s32 pad;
+ CollisionHeader* colHeader = NULL;
+ s32 pad2;
+
+ DynaPolyActor_Init(&this->dyna, flags);
+ CollisionHeader_GetVirtual(collision, &colHeader);
+ this->dyna.bgId = DynaPoly_SetBgActor(globalCtx, &globalCtx->colCtx.dyna, &this->dyna.actor, colHeader);
+
+ 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);
+ }
+}
+
+void func_80B96160(ObjLift* this, GlobalContext* globalCtx) {
+ Vec3f pos;
+ Vec3f velocity;
+ Vec3f* temp_s3;
+ s32 pad0;
+ s32 i;
+
+ temp_s3 = &this->dyna.actor.world.pos;
+
+ 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 2ef2599f2..8e5ac1722 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;