1
0
mirror of https://github.com/zeldaret/oot.git synced 2024-09-21 04:24:43 +00:00

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>
This commit is contained in:
Stardust Sauce 2021-08-11 10:35:17 -04:00 committed by GitHub
parent d17f9f14c5
commit 70ec8c42fc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 188 additions and 716 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1,3 +0,0 @@
glabel func_80B960D0
/* 00000 80B960D0 03E00008 */ jr $ra
/* 00004 80B960D4 AC850164 */ sw $a1, 0x0164($a0) ## 00000164

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

3
spec
View File

@ -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

View File

@ -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);
}

View File

@ -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;