mirror of https://github.com/zeldaret/oot.git
				
				
				
			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:
		
							parent
							
								
									d17f9f14c5
								
							
						
					
					
						commit
						70ec8c42fc
					
				| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +0,0 @@
 | 
			
		|||
glabel func_80B960D0
 | 
			
		||||
/* 00000 80B960D0 03E00008 */  jr      $ra                        
 | 
			
		||||
/* 00004 80B960D4 AC850164 */  sw      $a1, 0x0164($a0)           ## 00000164
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -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
								
								
								
								
							
							
						
						
									
										3
									
								
								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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue