mirror of
https://github.com/zeldaret/oot.git
synced 2024-12-27 07:07:09 +00:00
ovl_En_Door (#402)
* Decompiled, two non-matchings remaining * Fix merge * Cleanups * Some documentation, remove unused asm * Remove unused data.s, review suggestions * Ran formatter, further review suggestions * Make some data static * Match EnDoor_Init * Remove asm for EnDoor_Init * Changes from review Co-authored-by: petrie911 <69443847+petrie911@users.noreply.github.com> * More variables static, remove unnecessary s8 cast * PR Suggestions * review Co-authored-by: petrie911 <69443847+petrie911@users.noreply.github.com> Co-authored-by: fig <fig02srl@gmail.com>
This commit is contained in:
parent
cbb0c6da06
commit
579b87dceb
23 changed files with 388 additions and 802 deletions
|
@ -386,7 +386,7 @@ glabel DoorShutter_Draw
|
|||
.L80998000:
|
||||
/* 01D60 80998000 00403025 */ or $a2, $v0, $zero ## $a2 = 00000002
|
||||
.L80998004:
|
||||
/* 01D64 80998004 0C00CFD5 */ jal func_80033F54
|
||||
/* 01D64 80998004 0C00CFD5 */ jal Actor_DrawDoorLock
|
||||
/* 01D68 80998008 8225016E */ lb $a1, 0x016E($s1) ## 0000016E
|
||||
.L8099800C:
|
||||
/* 01D6C 8099800C 8FAE0084 */ lw $t6, 0x0084($sp)
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
glabel EnDoor_Destroy
|
||||
/* 00218 809FC3E8 948F001C */ lhu $t7, 0x001C($a0) ## 0000001C
|
||||
/* 0021C 809FC3EC 3C0E0001 */ lui $t6, 0x0001 ## $t6 = 00010000
|
||||
/* 00220 809FC3F0 01C57021 */ addu $t6, $t6, $a1
|
||||
/* 00224 809FC3F4 8DCE1D38 */ lw $t6, 0x1D38($t6) ## 00011D38
|
||||
/* 00228 809FC3F8 000FC283 */ sra $t8, $t7, 10
|
||||
/* 0022C 809FC3FC 0018C900 */ sll $t9, $t8, 4
|
||||
/* 00230 809FC400 01D91021 */ addu $v0, $t6, $t9
|
||||
/* 00234 809FC404 84430004 */ lh $v1, 0x0004($v0) ## 00000004
|
||||
/* 00238 809FC408 04610002 */ bgez $v1, .L809FC414
|
||||
/* 0023C 809FC40C 00034023 */ subu $t0, $zero, $v1
|
||||
/* 00240 809FC410 A4480004 */ sh $t0, 0x0004($v0) ## 00000004
|
||||
.L809FC414:
|
||||
/* 00244 809FC414 03E00008 */ jr $ra
|
||||
/* 00248 809FC418 00000000 */ nop
|
|
@ -1,86 +0,0 @@
|
|||
.rdata
|
||||
glabel D_809FCF10
|
||||
.asciz "../z_en_door.c"
|
||||
.balign 4
|
||||
|
||||
glabel D_809FCF20
|
||||
.asciz "../z_en_door.c"
|
||||
.balign 4
|
||||
|
||||
.text
|
||||
glabel EnDoor_Draw
|
||||
/* 00B9C 809FCD6C 27BDFFB0 */ addiu $sp, $sp, 0xFFB0 ## $sp = FFFFFFB0
|
||||
/* 00BA0 809FCD70 AFBF0024 */ sw $ra, 0x0024($sp)
|
||||
/* 00BA4 809FCD74 AFB00020 */ sw $s0, 0x0020($sp)
|
||||
/* 00BA8 809FCD78 AFA50054 */ sw $a1, 0x0054($sp)
|
||||
/* 00BAC 809FCD7C 808F001E */ lb $t7, 0x001E($a0) ## 0000001E
|
||||
/* 00BB0 809FCD80 808E0193 */ lb $t6, 0x0193($a0) ## 00000193
|
||||
/* 00BB4 809FCD84 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
|
||||
/* 00BB8 809FCD88 27A40038 */ addiu $a0, $sp, 0x0038 ## $a0 = FFFFFFE8
|
||||
/* 00BBC 809FCD8C 15CF0034 */ bne $t6, $t7, .L809FCE60
|
||||
/* 00BC0 809FCD90 3C0680A0 */ lui $a2, %hi(D_809FCF10) ## $a2 = 80A00000
|
||||
/* 00BC4 809FCD94 8CA50000 */ lw $a1, 0x0000($a1) ## 00000000
|
||||
/* 00BC8 809FCD98 24C6CF10 */ addiu $a2, $a2, %lo(D_809FCF10) ## $a2 = 809FCF10
|
||||
/* 00BCC 809FCD9C 2407038E */ addiu $a3, $zero, 0x038E ## $a3 = 0000038E
|
||||
/* 00BD0 809FCDA0 0C031AB1 */ jal Graph_OpenDisps
|
||||
/* 00BD4 809FCDA4 AFA50048 */ sw $a1, 0x0048($sp)
|
||||
/* 00BD8 809FCDA8 8FB90054 */ lw $t9, 0x0054($sp)
|
||||
/* 00BDC 809FCDAC 0C024F46 */ jal func_80093D18
|
||||
/* 00BE0 809FCDB0 8F240000 */ lw $a0, 0x0000($t9) ## 00000000
|
||||
/* 00BE4 809FCDB4 8E050150 */ lw $a1, 0x0150($s0) ## 00000150
|
||||
/* 00BE8 809FCDB8 8E06016C */ lw $a2, 0x016C($s0) ## 0000016C
|
||||
/* 00BEC 809FCDBC 3C0780A0 */ lui $a3, %hi(func_809FCC3C) ## $a3 = 80A00000
|
||||
/* 00BF0 809FCDC0 24E7CC3C */ addiu $a3, $a3, %lo(func_809FCC3C) ## $a3 = 809FCC3C
|
||||
/* 00BF4 809FCDC4 AFB00014 */ sw $s0, 0x0014($sp)
|
||||
/* 00BF8 809FCDC8 AFA00010 */ sw $zero, 0x0010($sp)
|
||||
/* 00BFC 809FCDCC 0C028572 */ jal SkelAnime_DrawOpa
|
||||
|
||||
/* 00C00 809FCDD0 8FA40054 */ lw $a0, 0x0054($sp)
|
||||
/* 00C04 809FCDD4 86020032 */ lh $v0, 0x0032($s0) ## 00000032
|
||||
/* 00C08 809FCDD8 8FA80048 */ lw $t0, 0x0048($sp)
|
||||
/* 00C0C 809FCDDC 00003025 */ or $a2, $zero, $zero ## $a2 = 00000000
|
||||
/* 00C10 809FCDE0 50400014 */ beql $v0, $zero, .L809FCE34
|
||||
/* 00C14 809FCDE4 86050196 */ lh $a1, 0x0196($s0) ## 00000196
|
||||
/* 00C18 809FCDE8 1840000A */ blez $v0, .L809FCE14
|
||||
/* 00C1C 809FCDEC 3C0DDE00 */ lui $t5, 0xDE00 ## $t5 = DE000000
|
||||
/* 00C20 809FCDF0 8D0302C0 */ lw $v1, 0x02C0($t0) ## 000002C0
|
||||
/* 00C24 809FCDF4 3C0B0401 */ lui $t3, 0x0401 ## $t3 = 04010000
|
||||
/* 00C28 809FCDF8 256BEE00 */ addiu $t3, $t3, 0xEE00 ## $t3 = 0400EE00
|
||||
/* 00C2C 809FCDFC 24690008 */ addiu $t1, $v1, 0x0008 ## $t1 = 00000008
|
||||
/* 00C30 809FCE00 AD0902C0 */ sw $t1, 0x02C0($t0) ## 000002C0
|
||||
/* 00C34 809FCE04 3C0ADE00 */ lui $t2, 0xDE00 ## $t2 = DE000000
|
||||
/* 00C38 809FCE08 AC6A0000 */ sw $t2, 0x0000($v1) ## 00000000
|
||||
/* 00C3C 809FCE0C 10000008 */ beq $zero, $zero, .L809FCE30
|
||||
/* 00C40 809FCE10 AC6B0004 */ sw $t3, 0x0004($v1) ## 00000004
|
||||
.L809FCE14:
|
||||
/* 00C44 809FCE14 8D0302C0 */ lw $v1, 0x02C0($t0) ## 000002C0
|
||||
/* 00C48 809FCE18 3C0E0401 */ lui $t6, 0x0401 ## $t6 = 04010000
|
||||
/* 00C4C 809FCE1C 25CEECB8 */ addiu $t6, $t6, 0xECB8 ## $t6 = 0400ECB8
|
||||
/* 00C50 809FCE20 246C0008 */ addiu $t4, $v1, 0x0008 ## $t4 = 00000008
|
||||
/* 00C54 809FCE24 AD0C02C0 */ sw $t4, 0x02C0($t0) ## 000002C0
|
||||
/* 00C58 809FCE28 AC6E0004 */ sw $t6, 0x0004($v1) ## 00000004
|
||||
/* 00C5C 809FCE2C AC6D0000 */ sw $t5, 0x0000($v1) ## 00000000
|
||||
.L809FCE30:
|
||||
/* 00C60 809FCE30 86050196 */ lh $a1, 0x0196($s0) ## 00000196
|
||||
.L809FCE34:
|
||||
/* 00C64 809FCE34 50A00004 */ beql $a1, $zero, .L809FCE48
|
||||
/* 00C68 809FCE38 8FAF0054 */ lw $t7, 0x0054($sp)
|
||||
/* 00C6C 809FCE3C 0C00CFD5 */ jal func_80033F54
|
||||
/* 00C70 809FCE40 8FA40054 */ lw $a0, 0x0054($sp)
|
||||
/* 00C74 809FCE44 8FAF0054 */ lw $t7, 0x0054($sp)
|
||||
.L809FCE48:
|
||||
/* 00C78 809FCE48 3C0680A0 */ lui $a2, %hi(D_809FCF20) ## $a2 = 80A00000
|
||||
/* 00C7C 809FCE4C 24C6CF20 */ addiu $a2, $a2, %lo(D_809FCF20) ## $a2 = 809FCF20
|
||||
/* 00C80 809FCE50 27A40038 */ addiu $a0, $sp, 0x0038 ## $a0 = FFFFFFE8
|
||||
/* 00C84 809FCE54 240703AD */ addiu $a3, $zero, 0x03AD ## $a3 = 000003AD
|
||||
/* 00C88 809FCE58 0C031AD5 */ jal Graph_CloseDisps
|
||||
/* 00C8C 809FCE5C 8DE50000 */ lw $a1, 0x0000($t7) ## 00000000
|
||||
.L809FCE60:
|
||||
/* 00C90 809FCE60 8FBF0024 */ lw $ra, 0x0024($sp)
|
||||
/* 00C94 809FCE64 8FB00020 */ lw $s0, 0x0020($sp)
|
||||
/* 00C98 809FCE68 27BD0050 */ addiu $sp, $sp, 0x0050 ## $sp = 00000000
|
||||
/* 00C9C 809FCE6C 03E00008 */ jr $ra
|
||||
/* 00CA0 809FCE70 00000000 */ nop
|
||||
/* 00CA4 809FCE74 00000000 */ nop
|
||||
/* 00CA8 809FCE78 00000000 */ nop
|
||||
/* 00CAC 809FCE7C 00000000 */ nop
|
|
@ -1,4 +1,4 @@
|
|||
glabel func_809FC5D0
|
||||
glabel EnDoor_Idle
|
||||
/* 00400 809FC5D0 27BDFFC0 */ addiu $sp, $sp, 0xFFC0 ## $sp = FFFFFFC0
|
||||
/* 00404 809FC5D4 AFBF0014 */ sw $ra, 0x0014($sp)
|
||||
/* 00408 809FC5D8 AFA50044 */ sw $a1, 0x0044($sp)
|
||||
|
@ -13,10 +13,10 @@ glabel func_809FC5D0
|
|||
/* 0042C 809FC5FC 0C00B6F4 */ jal func_8002DBD0
|
||||
/* 00430 809FC600 AFA8003C */ sw $t0, 0x003C($sp)
|
||||
/* 00434 809FC604 8FA70040 */ lw $a3, 0x0040($sp)
|
||||
/* 00438 809FC608 3C0A80A0 */ lui $t2, %hi(func_809FC9DC) ## $t2 = 80A00000
|
||||
/* 00438 809FC608 3C0A80A0 */ lui $t2, %hi(EnDoor_Open) ## $t2 = 80A00000
|
||||
/* 0043C 809FC60C 8FA8003C */ lw $t0, 0x003C($sp)
|
||||
/* 00440 809FC610 90E90191 */ lbu $t1, 0x0191($a3) ## 00000191
|
||||
/* 00444 809FC614 254AC9DC */ addiu $t2, $t2, %lo(func_809FC9DC) ## $t2 = 809FC9DC
|
||||
/* 00444 809FC614 254AC9DC */ addiu $t2, $t2, %lo(EnDoor_Open) ## $t2 = 809FC9DC
|
||||
/* 00448 809FC618 3C0580A0 */ lui $a1, %hi(D_809FCECC) ## $a1 = 80A00000
|
||||
/* 0044C 809FC61C 1120002A */ beq $t1, $zero, .L809FC6C8
|
||||
/* 00450 809FC620 8FA40044 */ lw $a0, 0x0044($sp)
|
||||
|
@ -172,8 +172,8 @@ glabel func_809FC5D0
|
|||
/* 00670 809FC840 3C014370 */ lui $at, 0x4370 ## $at = 43700000
|
||||
/* 00674 809FC844 44812000 */ mtc1 $at, $f4 ## $f4 = 240.00
|
||||
/* 00678 809FC848 C4E80090 */ lwc1 $f8, 0x0090($a3) ## 00000090
|
||||
/* 0067C 809FC84C 3C0A80A0 */ lui $t2, %hi(func_809FC928) ## $t2 = 80A00000
|
||||
/* 00680 809FC850 254AC928 */ addiu $t2, $t2, %lo(func_809FC928) ## $t2 = 809FC928
|
||||
/* 0067C 809FC84C 3C0A80A0 */ lui $t2, %hi(EnDoor_AjarOpen) ## $t2 = 80A00000
|
||||
/* 00680 809FC850 254AC928 */ addiu $t2, $t2, %lo(EnDoor_AjarOpen) ## $t2 = 809FC928
|
||||
/* 00684 809FC854 4608203C */ c.lt.s $f4, $f8
|
||||
/* 00688 809FC858 00000000 */ nop
|
||||
/* 0068C 809FC85C 45020003 */ bc1fl .L809FC86C
|
|
@ -1,153 +0,0 @@
|
|||
glabel EnDoor_Init
|
||||
/* 00000 809FC1D0 27BDFFA0 */ addiu $sp, $sp, 0xFFA0 ## $sp = FFFFFFA0
|
||||
/* 00004 809FC1D4 AFB10038 */ sw $s1, 0x0038($sp)
|
||||
/* 00008 809FC1D8 00A08825 */ or $s1, $a1, $zero ## $s1 = 00000000
|
||||
/* 0000C 809FC1DC 3C0880A0 */ lui $t0, %hi(D_809FCEA0) ## $t0 = 80A00000
|
||||
/* 00010 809FC1E0 AFBF003C */ sw $ra, 0x003C($sp)
|
||||
/* 00014 809FC1E4 AFB00034 */ sw $s0, 0x0034($sp)
|
||||
/* 00018 809FC1E8 2508CEA0 */ addiu $t0, $t0, %lo(D_809FCEA0) ## $t0 = 809FCEA0
|
||||
/* 0001C 809FC1EC 3C0580A0 */ lui $a1, %hi(D_809FCEC4) ## $a1 = 80A00000
|
||||
/* 00020 809FC1F0 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
|
||||
/* 00024 809FC1F4 24A5CEC4 */ addiu $a1, $a1, %lo(D_809FCEC4) ## $a1 = 809FCEC4
|
||||
/* 00028 809FC1F8 0C01E037 */ jal Actor_ProcessInitChain
|
||||
|
||||
/* 0002C 809FC1FC AFA80054 */ sw $t0, 0x0054($sp)
|
||||
/* 00030 809FC200 3C060401 */ lui $a2, 0x0401 ## $a2 = 04010000
|
||||
/* 00034 809FC204 3C070401 */ lui $a3, 0x0401 ## $a3 = 04010000
|
||||
/* 00038 809FC208 260E0198 */ addiu $t6, $s0, 0x0198 ## $t6 = 00000198
|
||||
/* 0003C 809FC20C 260F01B6 */ addiu $t7, $s0, 0x01B6 ## $t7 = 000001B6
|
||||
/* 00040 809FC210 24180005 */ addiu $t8, $zero, 0x0005 ## $t8 = 00000005
|
||||
/* 00044 809FC214 AFB80018 */ sw $t8, 0x0018($sp)
|
||||
/* 00048 809FC218 AFAF0014 */ sw $t7, 0x0014($sp)
|
||||
/* 0004C 809FC21C AFAE0010 */ sw $t6, 0x0010($sp)
|
||||
/* 00050 809FC220 24E7E758 */ addiu $a3, $a3, 0xE758 ## $a3 = 0400E758
|
||||
/* 00054 809FC224 24C6FF78 */ addiu $a2, $a2, 0xFF78 ## $a2 = 0400FF78
|
||||
/* 00058 809FC228 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
|
||||
/* 0005C 809FC22C 0C02915F */ jal SkelAnime_Init
|
||||
|
||||
/* 00060 809FC230 2605014C */ addiu $a1, $s0, 0x014C ## $a1 = 0000014C
|
||||
/* 00064 809FC234 8FA80054 */ lw $t0, 0x0054($sp)
|
||||
/* 00068 809FC238 00001825 */ or $v1, $zero, $zero ## $v1 = 00000000
|
||||
/* 0006C 809FC23C 862400A4 */ lh $a0, 0x00A4($s1) ## 000000A4
|
||||
/* 00070 809FC240 24020004 */ addiu $v0, $zero, 0x0004 ## $v0 = 00000004
|
||||
.L809FC244:
|
||||
/* 00074 809FC244 85190000 */ lh $t9, 0x0000($t0) ## 00000000
|
||||
/* 00078 809FC248 53240005 */ beql $t9, $a0, .L809FC260
|
||||
/* 0007C 809FC24C 28610004 */ slti $at, $v1, 0x0004
|
||||
/* 00080 809FC250 24630001 */ addiu $v1, $v1, 0x0001 ## $v1 = 00000001
|
||||
/* 00084 809FC254 1462FFFB */ bne $v1, $v0, .L809FC244
|
||||
/* 00088 809FC258 25080006 */ addiu $t0, $t0, 0x0006 ## $t0 = 00000006
|
||||
/* 0008C 809FC25C 28610004 */ slti $at, $v1, 0x0004
|
||||
.L809FC260:
|
||||
/* 00090 809FC260 14200009 */ bne $at, $zero, .L809FC288
|
||||
/* 00094 809FC264 24050002 */ addiu $a1, $zero, 0x0002 ## $a1 = 00000002
|
||||
/* 00098 809FC268 3C010001 */ lui $at, 0x0001 ## $at = 00010000
|
||||
/* 0009C 809FC26C 342117A4 */ ori $at, $at, 0x17A4 ## $at = 000117A4
|
||||
/* 000A0 809FC270 02212021 */ addu $a0, $s1, $at
|
||||
/* 000A4 809FC274 0C02604B */ jal Object_GetIndex
|
||||
## ObjectIndex
|
||||
/* 000A8 809FC278 AFA80054 */ sw $t0, 0x0054($sp)
|
||||
/* 000AC 809FC27C 04400002 */ bltz $v0, .L809FC288
|
||||
/* 000B0 809FC280 8FA80054 */ lw $t0, 0x0054($sp)
|
||||
/* 000B4 809FC284 25080006 */ addiu $t0, $t0, 0x0006 ## $t0 = 00000006
|
||||
.L809FC288:
|
||||
/* 000B8 809FC288 91090002 */ lbu $t1, 0x0002($t0) ## 00000008
|
||||
/* 000BC 809FC28C 3C010001 */ lui $at, 0x0001 ## $at = 00010000
|
||||
/* 000C0 809FC290 342117A4 */ ori $at, $at, 0x17A4 ## $at = 000117A4
|
||||
/* 000C4 809FC294 A2090194 */ sb $t1, 0x0194($s0) ## 00000194
|
||||
/* 000C8 809FC298 85050004 */ lh $a1, 0x0004($t0) ## 0000000A
|
||||
/* 000CC 809FC29C AFA80054 */ sw $t0, 0x0054($sp)
|
||||
/* 000D0 809FC2A0 0C02604B */ jal Object_GetIndex
|
||||
## ObjectIndex
|
||||
/* 000D4 809FC2A4 02212021 */ addu $a0, $s1, $at
|
||||
/* 000D8 809FC2A8 04410005 */ bgez $v0, .L809FC2C0
|
||||
/* 000DC 809FC2AC 8FA80054 */ lw $t0, 0x0054($sp)
|
||||
/* 000E0 809FC2B0 0C00B55C */ jal Actor_Kill
|
||||
|
||||
/* 000E4 809FC2B4 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
|
||||
/* 000E8 809FC2B8 10000047 */ beq $zero, $zero, .L809FC3D8
|
||||
/* 000EC 809FC2BC 8FBF003C */ lw $ra, 0x003C($sp)
|
||||
.L809FC2C0:
|
||||
/* 000F0 809FC2C0 A2020193 */ sb $v0, 0x0193($s0) ## 00000193
|
||||
/* 000F4 809FC2C4 820B0193 */ lb $t3, 0x0193($s0) ## 00000193
|
||||
/* 000F8 809FC2C8 820C001E */ lb $t4, 0x001E($s0) ## 0000001E
|
||||
/* 000FC 809FC2CC 910A0002 */ lbu $t2, 0x0002($t0) ## 00000002
|
||||
/* 00100 809FC2D0 3C0D80A0 */ lui $t5, %hi(func_809FC41C) ## $t5 = 80A00000
|
||||
/* 00104 809FC2D4 156C0006 */ bne $t3, $t4, .L809FC2F0
|
||||
/* 00108 809FC2D8 A20A0194 */ sb $t2, 0x0194($s0) ## 00000194
|
||||
/* 0010C 809FC2DC 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
|
||||
/* 00110 809FC2E0 0C27F107 */ jal func_809FC41C
|
||||
/* 00114 809FC2E4 02202825 */ or $a1, $s1, $zero ## $a1 = 00000000
|
||||
/* 00118 809FC2E8 10000004 */ beq $zero, $zero, .L809FC2FC
|
||||
/* 0011C 809FC2EC 860E001C */ lh $t6, 0x001C($s0) ## 0000001C
|
||||
.L809FC2F0:
|
||||
/* 00120 809FC2F0 25ADC41C */ addiu $t5, $t5, %lo(func_809FC41C) ## $t5 = FFFFC41C
|
||||
/* 00124 809FC2F4 AE0D01D4 */ sw $t5, 0x01D4($s0) ## 000001D4
|
||||
/* 00128 809FC2F8 860E001C */ lh $t6, 0x001C($s0) ## 0000001C
|
||||
.L809FC2FC:
|
||||
/* 0012C 809FC2FC 31CF0040 */ andi $t7, $t6, 0x0040 ## $t7 = 00000000
|
||||
/* 00130 809FC300 51E00032 */ beql $t7, $zero, .L809FC3CC
|
||||
/* 00134 809FC304 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
|
||||
/* 00138 809FC308 0C01DE0D */ jal Math_Coss
|
||||
## coss?
|
||||
/* 0013C 809FC30C 860400B6 */ lh $a0, 0x00B6($s0) ## 000000B6
|
||||
/* 00140 809FC310 3C0141F0 */ lui $at, 0x41F0 ## $at = 41F00000
|
||||
/* 00144 809FC314 44812000 */ mtc1 $at, $f4 ## $f4 = 30.00
|
||||
/* 00148 809FC318 00000000 */ nop
|
||||
/* 0014C 809FC31C 46040182 */ mul.s $f6, $f0, $f4
|
||||
/* 00150 809FC320 E7A60048 */ swc1 $f6, 0x0048($sp)
|
||||
/* 00154 809FC324 0C01DE1C */ jal Math_Sins
|
||||
## sins?
|
||||
/* 00158 809FC328 860400B6 */ lh $a0, 0x00B6($s0) ## 000000B6
|
||||
/* 0015C 809FC32C 3C0141F0 */ lui $at, 0x41F0 ## $at = 41F00000
|
||||
/* 00160 809FC330 44814000 */ mtc1 $at, $f8 ## $f8 = 30.00
|
||||
/* 00164 809FC334 C7B00048 */ lwc1 $f16, 0x0048($sp)
|
||||
/* 00168 809FC338 34018000 */ ori $at, $zero, 0x8000 ## $at = 00008000
|
||||
/* 0016C 809FC33C 46080082 */ mul.s $f2, $f0, $f8
|
||||
/* 00170 809FC340 26241C24 */ addiu $a0, $s1, 0x1C24 ## $a0 = 00001C24
|
||||
/* 00174 809FC344 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000
|
||||
/* 00178 809FC348 02203025 */ or $a2, $s1, $zero ## $a2 = 00000000
|
||||
/* 0017C 809FC34C 24070009 */ addiu $a3, $zero, 0x0009 ## $a3 = 00000009
|
||||
/* 00180 809FC350 E7A20044 */ swc1 $f2, 0x0044($sp)
|
||||
/* 00184 809FC354 C60A0024 */ lwc1 $f10, 0x0024($s0) ## 00000024
|
||||
/* 00188 809FC358 46105480 */ add.s $f18, $f10, $f16
|
||||
/* 0018C 809FC35C E7B20010 */ swc1 $f18, 0x0010($sp)
|
||||
/* 00190 809FC360 C6040028 */ lwc1 $f4, 0x0028($s0) ## 00000028
|
||||
/* 00194 809FC364 E7A40014 */ swc1 $f4, 0x0014($sp)
|
||||
/* 00198 809FC368 C606002C */ lwc1 $f6, 0x002C($s0) ## 0000002C
|
||||
/* 0019C 809FC36C AFA0001C */ sw $zero, 0x001C($sp)
|
||||
/* 001A0 809FC370 46023201 */ sub.s $f8, $f6, $f2
|
||||
/* 001A4 809FC374 E7A80018 */ swc1 $f8, 0x0018($sp)
|
||||
/* 001A8 809FC378 861800B6 */ lh $t8, 0x00B6($s0) ## 000000B6
|
||||
/* 001AC 809FC37C AFA00024 */ sw $zero, 0x0024($sp)
|
||||
/* 001B0 809FC380 0301C821 */ addu $t9, $t8, $at
|
||||
/* 001B4 809FC384 AFB90020 */ sw $t9, 0x0020($sp)
|
||||
/* 001B8 809FC388 8609001C */ lh $t1, 0x001C($s0) ## 0000001C
|
||||
/* 001BC 809FC38C 2401FFBF */ addiu $at, $zero, 0xFFBF ## $at = FFFFFFBF
|
||||
/* 001C0 809FC390 01215024 */ and $t2, $t1, $at
|
||||
/* 001C4 809FC394 0C00C916 */ jal Actor_SpawnAsChild
|
||||
|
||||
/* 001C8 809FC398 AFAA0028 */ sw $t2, 0x0028($sp)
|
||||
/* 001CC 809FC39C 10400002 */ beq $v0, $zero, .L809FC3A8
|
||||
/* 001D0 809FC3A0 240B0001 */ addiu $t3, $zero, 0x0001 ## $t3 = 00000001
|
||||
/* 001D4 809FC3A4 A04B0192 */ sb $t3, 0x0192($v0) ## 00000192
|
||||
.L809FC3A8:
|
||||
/* 001D8 809FC3A8 C60A0024 */ lwc1 $f10, 0x0024($s0) ## 00000024
|
||||
/* 001DC 809FC3AC C7B00048 */ lwc1 $f16, 0x0048($sp)
|
||||
/* 001E0 809FC3B0 C604002C */ lwc1 $f4, 0x002C($s0) ## 0000002C
|
||||
/* 001E4 809FC3B4 46105481 */ sub.s $f18, $f10, $f16
|
||||
/* 001E8 809FC3B8 E6120024 */ swc1 $f18, 0x0024($s0) ## 00000024
|
||||
/* 001EC 809FC3BC C7A60044 */ lwc1 $f6, 0x0044($sp)
|
||||
/* 001F0 809FC3C0 46062200 */ add.s $f8, $f4, $f6
|
||||
/* 001F4 809FC3C4 E608002C */ swc1 $f8, 0x002C($s0) ## 0000002C
|
||||
/* 001F8 809FC3C8 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
|
||||
.L809FC3CC:
|
||||
/* 001FC 809FC3CC 0C00B56E */ jal Actor_SetHeight
|
||||
|
||||
/* 00200 809FC3D0 3C05428C */ lui $a1, 0x428C ## $a1 = 428C0000
|
||||
/* 00204 809FC3D4 8FBF003C */ lw $ra, 0x003C($sp)
|
||||
.L809FC3D8:
|
||||
/* 00208 809FC3D8 8FB00034 */ lw $s0, 0x0034($sp)
|
||||
/* 0020C 809FC3DC 8FB10038 */ lw $s1, 0x0038($sp)
|
||||
/* 00210 809FC3E0 03E00008 */ jr $ra
|
||||
/* 00214 809FC3E4 27BD0060 */ addiu $sp, $sp, 0x0060 ## $sp = 00000000
|
|
@ -1,10 +0,0 @@
|
|||
glabel EnDoor_Update
|
||||
/* 00A48 809FCC18 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
|
||||
/* 00A4C 809FCC1C AFBF0014 */ sw $ra, 0x0014($sp)
|
||||
/* 00A50 809FCC20 8C9901D4 */ lw $t9, 0x01D4($a0) ## 000001D4
|
||||
/* 00A54 809FCC24 0320F809 */ jalr $ra, $t9
|
||||
/* 00A58 809FCC28 00000000 */ nop
|
||||
/* 00A5C 809FCC2C 8FBF0014 */ lw $ra, 0x0014($sp)
|
||||
/* 00A60 809FCC30 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
|
||||
/* 00A64 809FCC34 03E00008 */ jr $ra
|
||||
/* 00A68 809FCC38 00000000 */ nop
|
|
@ -1,120 +0,0 @@
|
|||
glabel func_809FC41C
|
||||
/* 0024C 809FC41C 3C010001 */ lui $at, 0x0001 ## $at = 00010000
|
||||
/* 00250 809FC420 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0
|
||||
/* 00254 809FC424 00803025 */ or $a2, $a0, $zero ## $a2 = 00000000
|
||||
/* 00258 809FC428 342117A4 */ ori $at, $at, 0x17A4 ## $at = 000117A4
|
||||
/* 0025C 809FC42C AFBF0014 */ sw $ra, 0x0014($sp)
|
||||
/* 00260 809FC430 00A03825 */ or $a3, $a1, $zero ## $a3 = 00000000
|
||||
/* 00264 809FC434 00A12021 */ addu $a0, $a1, $at
|
||||
/* 00268 809FC438 80C50193 */ lb $a1, 0x0193($a2) ## 00000193
|
||||
/* 0026C 809FC43C AFA70024 */ sw $a3, 0x0024($sp)
|
||||
/* 00270 809FC440 0C026062 */ jal Object_IsLoaded
|
||||
|
||||
/* 00274 809FC444 AFA60020 */ sw $a2, 0x0020($sp)
|
||||
/* 00278 809FC448 8FA60020 */ lw $a2, 0x0020($sp)
|
||||
/* 0027C 809FC44C 1040005C */ beq $v0, $zero, .L809FC5C0
|
||||
/* 00280 809FC450 8FA70024 */ lw $a3, 0x0024($sp)
|
||||
/* 00284 809FC454 84C3001C */ lh $v1, 0x001C($a2) ## 0000001C
|
||||
/* 00288 809FC458 8CCE0004 */ lw $t6, 0x0004($a2) ## 00000004
|
||||
/* 0028C 809FC45C 2401FFEF */ addiu $at, $zero, 0xFFEF ## $at = FFFFFFEF
|
||||
/* 00290 809FC460 80D80193 */ lb $t8, 0x0193($a2) ## 00000193
|
||||
/* 00294 809FC464 3C1980A0 */ lui $t9, %hi(func_809FC5D0) ## $t9 = 80A00000
|
||||
/* 00298 809FC468 000319C3 */ sra $v1, $v1, 7
|
||||
/* 0029C 809FC46C 01C17824 */ and $t7, $t6, $at
|
||||
/* 002A0 809FC470 30630007 */ andi $v1, $v1, 0x0007 ## $v1 = 00000000
|
||||
/* 002A4 809FC474 2739C5D0 */ addiu $t9, $t9, %lo(func_809FC5D0) ## $t9 = 809FC5D0
|
||||
/* 002A8 809FC478 24010006 */ addiu $at, $zero, 0x0006 ## $at = 00000006
|
||||
/* 002AC 809FC47C ACCF0004 */ sw $t7, 0x0004($a2) ## 00000004
|
||||
/* 002B0 809FC480 ACD901D4 */ sw $t9, 0x01D4($a2) ## 000001D4
|
||||
/* 002B4 809FC484 1461000D */ bne $v1, $at, .L809FC4BC
|
||||
/* 002B8 809FC488 A0D8001E */ sb $t8, 0x001E($a2) ## 0000001E
|
||||
/* 002BC 809FC48C 3C028016 */ lui $v0, %hi(gSaveContext+0xc)
|
||||
/* 002C0 809FC490 9442E66C */ lhu $v0, %lo(gSaveContext+0xc)($v0)
|
||||
/* 002C4 809FC494 3401C001 */ ori $at, $zero, 0xC001 ## $at = 0000C001
|
||||
/* 002C8 809FC498 24030005 */ addiu $v1, $zero, 0x0005 ## $v1 = 00000005
|
||||
/* 002CC 809FC49C 0041082A */ slt $at, $v0, $at
|
||||
/* 002D0 809FC4A0 14200006 */ bne $at, $zero, .L809FC4BC
|
||||
/* 002D4 809FC4A4 3401E000 */ ori $at, $zero, 0xE000 ## $at = 0000E000
|
||||
/* 002D8 809FC4A8 0041082A */ slt $at, $v0, $at
|
||||
/* 002DC 809FC4AC 10200003 */ beq $at, $zero, .L809FC4BC
|
||||
/* 002E0 809FC4B0 00000000 */ nop
|
||||
/* 002E4 809FC4B4 10000001 */ beq $zero, $zero, .L809FC4BC
|
||||
/* 002E8 809FC4B8 24030003 */ addiu $v1, $zero, 0x0003 ## $v1 = 00000003
|
||||
.L809FC4BC:
|
||||
/* 002EC 809FC4BC 24010001 */ addiu $at, $zero, 0x0001 ## $at = 00000001
|
||||
/* 002F0 809FC4C0 1461000D */ bne $v1, $at, .L809FC4F8
|
||||
/* 002F4 809FC4C4 A4C00032 */ sh $zero, 0x0032($a2) ## 00000032
|
||||
/* 002F8 809FC4C8 84C5001C */ lh $a1, 0x001C($a2) ## 0000001C
|
||||
/* 002FC 809FC4CC AFA60020 */ sw $a2, 0x0020($sp)
|
||||
/* 00300 809FC4D0 AFA3001C */ sw $v1, 0x001C($sp)
|
||||
/* 00304 809FC4D4 00E02025 */ or $a0, $a3, $zero ## $a0 = 00000000
|
||||
/* 00308 809FC4D8 0C00B2D0 */ jal Flags_GetSwitch
|
||||
|
||||
/* 0030C 809FC4DC 30A5003F */ andi $a1, $a1, 0x003F ## $a1 = 00000000
|
||||
/* 00310 809FC4E0 8FA3001C */ lw $v1, 0x001C($sp)
|
||||
/* 00314 809FC4E4 14400031 */ bne $v0, $zero, .L809FC5AC
|
||||
/* 00318 809FC4E8 8FA60020 */ lw $a2, 0x0020($sp)
|
||||
/* 0031C 809FC4EC 2408000A */ addiu $t0, $zero, 0x000A ## $t0 = 0000000A
|
||||
/* 00320 809FC4F0 1000002E */ beq $zero, $zero, .L809FC5AC
|
||||
/* 00324 809FC4F4 A4C80196 */ sh $t0, 0x0196($a2) ## 00000196
|
||||
.L809FC4F8:
|
||||
/* 00328 809FC4F8 24010004 */ addiu $at, $zero, 0x0004 ## $at = 00000004
|
||||
/* 0032C 809FC4FC 14610012 */ bne $v1, $at, .L809FC548
|
||||
/* 00330 809FC500 00C02025 */ or $a0, $a2, $zero ## $a0 = 00000000
|
||||
/* 00334 809FC504 8CE51C44 */ lw $a1, 0x1C44($a3) ## 00001C44
|
||||
/* 00338 809FC508 AFA60020 */ sw $a2, 0x0020($sp)
|
||||
/* 0033C 809FC50C 0C00B6E3 */ jal func_8002DB8C
|
||||
/* 00340 809FC510 AFA3001C */ sw $v1, 0x001C($sp)
|
||||
/* 00344 809FC514 3C0142F0 */ lui $at, 0x42F0 ## $at = 42F00000
|
||||
/* 00348 809FC518 44812000 */ mtc1 $at, $f4 ## $f4 = 120.00
|
||||
/* 0034C 809FC51C 3C0980A0 */ lui $t1, %hi(func_809FC8F4) ## $t1 = 80A00000
|
||||
/* 00350 809FC520 8FA3001C */ lw $v1, 0x001C($sp)
|
||||
/* 00354 809FC524 4600203C */ c.lt.s $f4, $f0
|
||||
/* 00358 809FC528 8FA60020 */ lw $a2, 0x0020($sp)
|
||||
/* 0035C 809FC52C 2529C8F4 */ addiu $t1, $t1, %lo(func_809FC8F4) ## $t1 = 809FC8F4
|
||||
/* 00360 809FC530 240AE800 */ addiu $t2, $zero, 0xE800 ## $t2 = FFFFE800
|
||||
/* 00364 809FC534 4502001E */ bc1fl .L809FC5B0
|
||||
/* 00368 809FC538 84CA001C */ lh $t2, 0x001C($a2) ## 0000001C
|
||||
/* 0036C 809FC53C ACC901D4 */ sw $t1, 0x01D4($a2) ## 000001D4
|
||||
/* 00370 809FC540 1000001A */ beq $zero, $zero, .L809FC5AC
|
||||
/* 00374 809FC544 A4CA0032 */ sh $t2, 0x0032($a2) ## 00000032
|
||||
.L809FC548:
|
||||
/* 00378 809FC548 24010005 */ addiu $at, $zero, 0x0005 ## $at = 00000005
|
||||
/* 0037C 809FC54C 54610018 */ bnel $v1, $at, .L809FC5B0
|
||||
/* 00380 809FC550 84CA001C */ lh $t2, 0x001C($a2) ## 0000001C
|
||||
/* 00384 809FC554 84CB001C */ lh $t3, 0x001C($a2) ## 0000001C
|
||||
/* 00388 809FC558 24010229 */ addiu $at, $zero, 0x0229 ## $at = 00000229
|
||||
/* 0038C 809FC55C 3C0F8016 */ lui $t7, %hi(gSaveContext+0xed6)
|
||||
/* 00390 809FC560 316C003F */ andi $t4, $t3, 0x003F ## $t4 = 00000000
|
||||
/* 00394 809FC564 258D0200 */ addiu $t5, $t4, 0x0200 ## $t5 = 00000200
|
||||
/* 00398 809FC568 31AEFFFF */ andi $t6, $t5, 0xFFFF ## $t6 = 00000200
|
||||
/* 0039C 809FC56C 15C10007 */ bne $t6, $at, .L809FC58C
|
||||
/* 003A0 809FC570 A4CD010E */ sh $t5, 0x010E($a2) ## 0000010E
|
||||
/* 003A4 809FC574 95EFF536 */ lhu $t7, %lo(gSaveContext+0xed6)($t7)
|
||||
/* 003A8 809FC578 31F80010 */ andi $t8, $t7, 0x0010 ## $t8 = 00000000
|
||||
/* 003AC 809FC57C 57000004 */ bnel $t8, $zero, .L809FC590
|
||||
/* 003B0 809FC580 8CC80004 */ lw $t0, 0x0004($a2) ## 00000004
|
||||
/* 003B4 809FC584 10000009 */ beq $zero, $zero, .L809FC5AC
|
||||
/* 003B8 809FC588 24030003 */ addiu $v1, $zero, 0x0003 ## $v1 = 00000003
|
||||
.L809FC58C:
|
||||
/* 003BC 809FC58C 8CC80004 */ lw $t0, 0x0004($a2) ## 00000004
|
||||
.L809FC590:
|
||||
/* 003C0 809FC590 3C010800 */ lui $at, 0x0800 ## $at = 08000000
|
||||
/* 003C4 809FC594 3C1980A0 */ lui $t9, %hi(func_809FC878) ## $t9 = 80A00000
|
||||
/* 003C8 809FC598 34210009 */ ori $at, $at, 0x0009 ## $at = 08000009
|
||||
/* 003CC 809FC59C 2739C878 */ addiu $t9, $t9, %lo(func_809FC878) ## $t9 = 809FC878
|
||||
/* 003D0 809FC5A0 01014825 */ or $t1, $t0, $at ## $t1 = 08000009
|
||||
/* 003D4 809FC5A4 ACD901D4 */ sw $t9, 0x01D4($a2) ## 000001D4
|
||||
/* 003D8 809FC5A8 ACC90004 */ sw $t1, 0x0004($a2) ## 00000004
|
||||
.L809FC5AC:
|
||||
/* 003DC 809FC5AC 84CA001C */ lh $t2, 0x001C($a2) ## 0000001C
|
||||
.L809FC5B0:
|
||||
/* 003E0 809FC5B0 000361C0 */ sll $t4, $v1, 7
|
||||
/* 003E4 809FC5B4 314BFC7F */ andi $t3, $t2, 0xFC7F ## $t3 = 0000E800
|
||||
/* 003E8 809FC5B8 016C6825 */ or $t5, $t3, $t4 ## $t5 = 0000E800
|
||||
/* 003EC 809FC5BC A4CD001C */ sh $t5, 0x001C($a2) ## 0000001C
|
||||
.L809FC5C0:
|
||||
/* 003F0 809FC5C0 8FBF0014 */ lw $ra, 0x0014($sp)
|
||||
/* 003F4 809FC5C4 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000
|
||||
/* 003F8 809FC5C8 03E00008 */ jr $ra
|
||||
/* 003FC 809FC5CC 00000000 */ nop
|
|
@ -1,21 +0,0 @@
|
|||
glabel func_809FC878
|
||||
/* 006A8 809FC878 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
|
||||
/* 006AC 809FC87C AFBF0014 */ sw $ra, 0x0014($sp)
|
||||
/* 006B0 809FC880 AFA5001C */ sw $a1, 0x001C($sp)
|
||||
/* 006B4 809FC884 0C00BC65 */ jal func_8002F194
|
||||
/* 006B8 809FC888 AFA40018 */ sw $a0, 0x0018($sp)
|
||||
/* 006BC 809FC88C 10400005 */ beq $v0, $zero, .L809FC8A4
|
||||
/* 006C0 809FC890 8FA40018 */ lw $a0, 0x0018($sp)
|
||||
/* 006C4 809FC894 3C0E80A0 */ lui $t6, %hi(func_809FC8C0) ## $t6 = 80A00000
|
||||
/* 006C8 809FC898 25CEC8C0 */ addiu $t6, $t6, %lo(func_809FC8C0) ## $t6 = 809FC8C0
|
||||
/* 006CC 809FC89C 10000004 */ beq $zero, $zero, .L809FC8B0
|
||||
/* 006D0 809FC8A0 AC8E01D4 */ sw $t6, 0x01D4($a0) ## 000001D4
|
||||
.L809FC8A4:
|
||||
/* 006D4 809FC8A4 8FA5001C */ lw $a1, 0x001C($sp)
|
||||
/* 006D8 809FC8A8 0C00BCB3 */ jal func_8002F2CC
|
||||
/* 006DC 809FC8AC 3C064220 */ lui $a2, 0x4220 ## $a2 = 42200000
|
||||
.L809FC8B0:
|
||||
/* 006E0 809FC8B0 8FBF0014 */ lw $ra, 0x0014($sp)
|
||||
/* 006E4 809FC8B4 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
|
||||
/* 006E8 809FC8B8 03E00008 */ jr $ra
|
||||
/* 006EC 809FC8BC 00000000 */ nop
|
|
@ -1,15 +0,0 @@
|
|||
glabel func_809FC8C0
|
||||
/* 006F0 809FC8C0 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
|
||||
/* 006F4 809FC8C4 AFBF0014 */ sw $ra, 0x0014($sp)
|
||||
/* 006F8 809FC8C8 0C00BCCD */ jal func_8002F334
|
||||
/* 006FC 809FC8CC AFA40018 */ sw $a0, 0x0018($sp)
|
||||
/* 00700 809FC8D0 10400004 */ beq $v0, $zero, .L809FC8E4
|
||||
/* 00704 809FC8D4 8FAF0018 */ lw $t7, 0x0018($sp)
|
||||
/* 00708 809FC8D8 3C0E80A0 */ lui $t6, %hi(func_809FC878) ## $t6 = 80A00000
|
||||
/* 0070C 809FC8DC 25CEC878 */ addiu $t6, $t6, %lo(func_809FC878) ## $t6 = 809FC878
|
||||
/* 00710 809FC8E0 ADEE01D4 */ sw $t6, 0x01D4($t7) ## 000001D4
|
||||
.L809FC8E4:
|
||||
/* 00714 809FC8E4 8FBF0014 */ lw $ra, 0x0014($sp)
|
||||
/* 00718 809FC8E8 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
|
||||
/* 0071C 809FC8EC 03E00008 */ jr $ra
|
||||
/* 00720 809FC8F0 00000000 */ nop
|
|
@ -1,15 +0,0 @@
|
|||
glabel func_809FC8F4
|
||||
/* 00724 809FC8F4 AFA50004 */ sw $a1, 0x0004($sp)
|
||||
/* 00728 809FC8F8 3C0142F0 */ lui $at, 0x42F0 ## $at = 42F00000
|
||||
/* 0072C 809FC8FC 44813000 */ mtc1 $at, $f6 ## $f6 = 120.00
|
||||
/* 00730 809FC900 C4840090 */ lwc1 $f4, 0x0090($a0) ## 00000090
|
||||
/* 00734 809FC904 3C0E80A0 */ lui $t6, %hi(func_809FC998) ## $t6 = 80A00000
|
||||
/* 00738 809FC908 25CEC998 */ addiu $t6, $t6, %lo(func_809FC998) ## $t6 = 809FC998
|
||||
/* 0073C 809FC90C 4606203C */ c.lt.s $f4, $f6
|
||||
/* 00740 809FC910 00000000 */ nop
|
||||
/* 00744 809FC914 45000002 */ bc1f .L809FC920
|
||||
/* 00748 809FC918 00000000 */ nop
|
||||
/* 0074C 809FC91C AC8E01D4 */ sw $t6, 0x01D4($a0) ## 000001D4
|
||||
.L809FC920:
|
||||
/* 00750 809FC920 03E00008 */ jr $ra
|
||||
/* 00754 809FC924 00000000 */ nop
|
|
@ -1,32 +0,0 @@
|
|||
glabel func_809FC928
|
||||
/* 00758 809FC928 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
|
||||
/* 0075C 809FC92C AFBF0014 */ sw $ra, 0x0014($sp)
|
||||
/* 00760 809FC930 AFA5001C */ sw $a1, 0x001C($sp)
|
||||
/* 00764 809FC934 3C0142F0 */ lui $at, 0x42F0 ## $at = 42F00000
|
||||
/* 00768 809FC938 44813000 */ mtc1 $at, $f6 ## $f6 = 120.00
|
||||
/* 0076C 809FC93C C4840090 */ lwc1 $f4, 0x0090($a0) ## 00000090
|
||||
/* 00770 809FC940 3C0E80A0 */ lui $t6, %hi(func_809FC998) ## $t6 = 80A00000
|
||||
/* 00774 809FC944 00803825 */ or $a3, $a0, $zero ## $a3 = 00000000
|
||||
/* 00778 809FC948 4606203C */ c.lt.s $f4, $f6
|
||||
/* 0077C 809FC94C 25CEC998 */ addiu $t6, $t6, %lo(func_809FC998) ## $t6 = 809FC998
|
||||
/* 00780 809FC950 2405E800 */ addiu $a1, $zero, 0xE800 ## $a1 = FFFFE800
|
||||
/* 00784 809FC954 24060100 */ addiu $a2, $zero, 0x0100 ## $a2 = 00000100
|
||||
/* 00788 809FC958 45020004 */ bc1fl .L809FC96C
|
||||
/* 0078C 809FC95C 24E40032 */ addiu $a0, $a3, 0x0032 ## $a0 = 00000032
|
||||
/* 00790 809FC960 10000009 */ beq $zero, $zero, .L809FC988
|
||||
/* 00794 809FC964 AC8E01D4 */ sw $t6, 0x01D4($a0) ## 00000206
|
||||
/* 00798 809FC968 24E40032 */ addiu $a0, $a3, 0x0032 ## $a0 = 00000032
|
||||
.L809FC96C:
|
||||
/* 0079C 809FC96C 0C01DE2B */ jal Math_ApproxUpdateScaledS
|
||||
|
||||
/* 007A0 809FC970 AFA70018 */ sw $a3, 0x0018($sp)
|
||||
/* 007A4 809FC974 10400004 */ beq $v0, $zero, .L809FC988
|
||||
/* 007A8 809FC978 8FA70018 */ lw $a3, 0x0018($sp)
|
||||
/* 007AC 809FC97C 3C0F80A0 */ lui $t7, %hi(func_809FC8F4) ## $t7 = 80A00000
|
||||
/* 007B0 809FC980 25EFC8F4 */ addiu $t7, $t7, %lo(func_809FC8F4) ## $t7 = 809FC8F4
|
||||
/* 007B4 809FC984 ACEF01D4 */ sw $t7, 0x01D4($a3) ## 000001D4
|
||||
.L809FC988:
|
||||
/* 007B8 809FC988 8FBF0014 */ lw $ra, 0x0014($sp)
|
||||
/* 007BC 809FC98C 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
|
||||
/* 007C0 809FC990 03E00008 */ jr $ra
|
||||
/* 007C4 809FC994 00000000 */ nop
|
|
@ -1,20 +0,0 @@
|
|||
glabel func_809FC998
|
||||
/* 007C8 809FC998 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
|
||||
/* 007CC 809FC99C AFBF0014 */ sw $ra, 0x0014($sp)
|
||||
/* 007D0 809FC9A0 AFA40018 */ sw $a0, 0x0018($sp)
|
||||
/* 007D4 809FC9A4 AFA5001C */ sw $a1, 0x001C($sp)
|
||||
/* 007D8 809FC9A8 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
|
||||
/* 007DC 809FC9AC 24840032 */ addiu $a0, $a0, 0x0032 ## $a0 = 00000032
|
||||
/* 007E0 809FC9B0 0C01DE2B */ jal Math_ApproxUpdateScaledS
|
||||
|
||||
/* 007E4 809FC9B4 24060700 */ addiu $a2, $zero, 0x0700 ## $a2 = 00000700
|
||||
/* 007E8 809FC9B8 10400004 */ beq $v0, $zero, .L809FC9CC
|
||||
/* 007EC 809FC9BC 8FAF0018 */ lw $t7, 0x0018($sp)
|
||||
/* 007F0 809FC9C0 3C0E80A0 */ lui $t6, %hi(func_809FC5D0) ## $t6 = 80A00000
|
||||
/* 007F4 809FC9C4 25CEC5D0 */ addiu $t6, $t6, %lo(func_809FC5D0) ## $t6 = 809FC5D0
|
||||
/* 007F8 809FC9C8 ADEE01D4 */ sw $t6, 0x01D4($t7) ## 000001D4
|
||||
.L809FC9CC:
|
||||
/* 007FC 809FC9CC 8FBF0014 */ lw $ra, 0x0014($sp)
|
||||
/* 00800 809FC9D0 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
|
||||
/* 00804 809FC9D4 03E00008 */ jr $ra
|
||||
/* 00808 809FC9D8 00000000 */ nop
|
|
@ -1,166 +0,0 @@
|
|||
.late_rodata
|
||||
glabel D_809FCF30
|
||||
.float 0.15
|
||||
|
||||
.text
|
||||
glabel func_809FC9DC
|
||||
/* 0080C 809FC9DC 27BDFFA8 */ addiu $sp, $sp, 0xFFA8 ## $sp = FFFFFFA8
|
||||
/* 00810 809FC9E0 AFBF0054 */ sw $ra, 0x0054($sp)
|
||||
/* 00814 809FC9E4 AFB40050 */ sw $s4, 0x0050($sp)
|
||||
/* 00818 809FC9E8 AFB3004C */ sw $s3, 0x004C($sp)
|
||||
/* 0081C 809FC9EC AFB20048 */ sw $s2, 0x0048($sp)
|
||||
/* 00820 809FC9F0 AFB10044 */ sw $s1, 0x0044($sp)
|
||||
/* 00824 809FC9F4 AFB00040 */ sw $s0, 0x0040($sp)
|
||||
/* 00828 809FC9F8 F7BA0038 */ sdc1 $f26, 0x0038($sp)
|
||||
/* 0082C 809FC9FC F7B80030 */ sdc1 $f24, 0x0030($sp)
|
||||
/* 00830 809FCA00 F7B60028 */ sdc1 $f22, 0x0028($sp)
|
||||
/* 00834 809FCA04 F7B40020 */ sdc1 $f20, 0x0020($sp)
|
||||
/* 00838 809FCA08 84830196 */ lh $v1, 0x0196($a0) ## 00000196
|
||||
/* 0083C 809FCA0C 00A09825 */ or $s3, $a1, $zero ## $s3 = 00000000
|
||||
/* 00840 809FCA10 0080A025 */ or $s4, $a0, $zero ## $s4 = 00000000
|
||||
/* 00844 809FCA14 14600003 */ bne $v1, $zero, .L809FCA24
|
||||
/* 00848 809FCA18 246EFFFF */ addiu $t6, $v1, 0xFFFF ## $t6 = FFFFFFFF
|
||||
/* 0084C 809FCA1C 10000003 */ beq $zero, $zero, .L809FCA2C
|
||||
/* 00850 809FCA20 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000
|
||||
.L809FCA24:
|
||||
/* 00854 809FCA24 A68E0196 */ sh $t6, 0x0196($s4) ## 00000196
|
||||
/* 00858 809FCA28 86820196 */ lh $v0, 0x0196($s4) ## 00000196
|
||||
.L809FCA2C:
|
||||
/* 0085C 809FCA2C 1440006E */ bne $v0, $zero, .L809FCBE8
|
||||
/* 00860 809FCA30 2690014C */ addiu $s0, $s4, 0x014C ## $s0 = 0000014C
|
||||
/* 00864 809FCA34 0C02927F */ jal SkelAnime_FrameUpdateMatrix
|
||||
|
||||
/* 00868 809FCA38 02002025 */ or $a0, $s0, $zero ## $a0 = 0000014C
|
||||
/* 0086C 809FCA3C 10400005 */ beq $v0, $zero, .L809FCA54
|
||||
/* 00870 809FCA40 3C0F80A0 */ lui $t7, %hi(func_809FC5D0) ## $t7 = 80A00000
|
||||
/* 00874 809FCA44 25EFC5D0 */ addiu $t7, $t7, %lo(func_809FC5D0) ## $t7 = 809FC5D0
|
||||
/* 00878 809FCA48 AE8F01D4 */ sw $t7, 0x01D4($s4) ## 000001D4
|
||||
/* 0087C 809FCA4C 10000066 */ beq $zero, $zero, .L809FCBE8
|
||||
/* 00880 809FCA50 A2800191 */ sb $zero, 0x0191($s4) ## 00000191
|
||||
.L809FCA54:
|
||||
/* 00884 809FCA54 92980190 */ lbu $t8, 0x0190($s4) ## 00000190
|
||||
/* 00888 809FCA58 3C1980A0 */ lui $t9, %hi(D_809FCEDC) ## $t9 = 80A00000
|
||||
/* 0088C 809FCA5C 02002025 */ or $a0, $s0, $zero ## $a0 = 0000014C
|
||||
/* 00890 809FCA60 0338C821 */ addu $t9, $t9, $t8
|
||||
/* 00894 809FCA64 9339CEDC */ lbu $t9, %lo(D_809FCEDC)($t9)
|
||||
/* 00898 809FCA68 3C014F80 */ lui $at, 0x4F80 ## $at = 4F800000
|
||||
/* 0089C 809FCA6C 44992000 */ mtc1 $t9, $f4 ## $f4 = -0.00
|
||||
/* 008A0 809FCA70 07210004 */ bgez $t9, .L809FCA84
|
||||
/* 008A4 809FCA74 46802120 */ cvt.s.w $f4, $f4
|
||||
/* 008A8 809FCA78 44813000 */ mtc1 $at, $f6 ## $f6 = 4294967296.00
|
||||
/* 008AC 809FCA7C 00000000 */ nop
|
||||
/* 008B0 809FCA80 46062100 */ add.s $f4, $f4, $f6
|
||||
.L809FCA84:
|
||||
/* 008B4 809FCA84 44052000 */ mfc1 $a1, $f4
|
||||
/* 008B8 809FCA88 0C0295B2 */ jal func_800A56C8
|
||||
/* 008BC 809FCA8C 00000000 */ nop
|
||||
/* 008C0 809FCA90 10400037 */ beq $v0, $zero, .L809FCB70
|
||||
/* 008C4 809FCA94 02802025 */ or $a0, $s4, $zero ## $a0 = 00000000
|
||||
/* 008C8 809FCA98 866200A4 */ lh $v0, 0x00A4($s3) ## 000000A4
|
||||
/* 008CC 809FCA9C 24010007 */ addiu $at, $zero, 0x0007 ## $at = 00000007
|
||||
/* 008D0 809FCAA0 10410005 */ beq $v0, $at, .L809FCAB8
|
||||
/* 008D4 809FCAA4 24010008 */ addiu $at, $zero, 0x0008 ## $at = 00000008
|
||||
/* 008D8 809FCAA8 10410003 */ beq $v0, $at, .L809FCAB8
|
||||
/* 008DC 809FCAAC 24010004 */ addiu $at, $zero, 0x0004 ## $at = 00000004
|
||||
/* 008E0 809FCAB0 54410004 */ bnel $v0, $at, .L809FCAC4
|
||||
/* 008E4 809FCAB4 24025802 */ addiu $v0, $zero, 0x5802 ## $v0 = 00005802
|
||||
.L809FCAB8:
|
||||
/* 008E8 809FCAB8 10000002 */ beq $zero, $zero, .L809FCAC4
|
||||
/* 008EC 809FCABC 240228DB */ addiu $v0, $zero, 0x28DB ## $v0 = 000028DB
|
||||
/* 008F0 809FCAC0 24025802 */ addiu $v0, $zero, 0x5802 ## $v0 = 00005802
|
||||
.L809FCAC4:
|
||||
/* 008F4 809FCAC4 0C00BE0A */ jal Audio_PlayActorSound2
|
||||
|
||||
/* 008F8 809FCAC8 3045FFFF */ andi $a1, $v0, 0xFFFF ## $a1 = 00005802
|
||||
/* 008FC 809FCACC 3C013FC0 */ lui $at, 0x3FC0 ## $at = 3FC00000
|
||||
/* 00900 809FCAD0 44815000 */ mtc1 $at, $f10 ## $f10 = 1.50
|
||||
/* 00904 809FCAD4 C6880168 */ lwc1 $f8, 0x0168($s4) ## 00000168
|
||||
/* 00908 809FCAD8 460A403C */ c.lt.s $f8, $f10
|
||||
/* 0090C 809FCADC 00000000 */ nop
|
||||
/* 00910 809FCAE0 45020042 */ bc1fl .L809FCBEC
|
||||
/* 00914 809FCAE4 8FBF0054 */ lw $ra, 0x0054($sp)
|
||||
/* 00918 809FCAE8 0C03F66B */ jal Math_Rand_ZeroOne
|
||||
## Rand.Next() float
|
||||
/* 0091C 809FCAEC 00000000 */ nop
|
||||
/* 00920 809FCAF0 3C0141F0 */ lui $at, 0x41F0 ## $at = 41F00000
|
||||
/* 00924 809FCAF4 44818000 */ mtc1 $at, $f16 ## $f16 = 30.00
|
||||
/* 00928 809FCAF8 3C0180A0 */ lui $at, %hi(D_809FCF30) ## $at = 80A00000
|
||||
/* 0092C 809FCAFC 00008025 */ or $s0, $zero, $zero ## $s0 = 00000000
|
||||
/* 00930 809FCB00 46100482 */ mul.s $f18, $f0, $f16
|
||||
/* 00934 809FCB04 4600910D */ trunc.w.s $f4, $f18
|
||||
/* 00938 809FCB08 44022000 */ mfc1 $v0, $f4
|
||||
/* 0093C 809FCB0C 00000000 */ nop
|
||||
/* 00940 809FCB10 24510032 */ addiu $s1, $v0, 0x0032 ## $s1 = 00000032
|
||||
/* 00944 809FCB14 5A200035 */ blezl $s1, .L809FCBEC
|
||||
/* 00948 809FCB18 8FBF0054 */ lw $ra, 0x0054($sp)
|
||||
/* 0094C 809FCB1C C43ACF30 */ lwc1 $f26, %lo(D_809FCF30)($at)
|
||||
/* 00950 809FCB20 3C014248 */ lui $at, 0x4248 ## $at = 42480000
|
||||
/* 00954 809FCB24 4481C000 */ mtc1 $at, $f24 ## $f24 = 50.00
|
||||
/* 00958 809FCB28 3C0142C8 */ lui $at, 0x42C8 ## $at = 42C80000
|
||||
/* 0095C 809FCB2C 4481B000 */ mtc1 $at, $f22 ## $f22 = 100.00
|
||||
/* 00960 809FCB30 3C014270 */ lui $at, 0x4270 ## $at = 42700000
|
||||
/* 00964 809FCB34 4481A000 */ mtc1 $at, $f20 ## $f20 = 60.00
|
||||
/* 00968 809FCB38 26920024 */ addiu $s2, $s4, 0x0024 ## $s2 = 00000024
|
||||
/* 0096C 809FCB3C 4406A000 */ mfc1 $a2, $f20
|
||||
.L809FCB40:
|
||||
/* 00970 809FCB40 4407B000 */ mfc1 $a3, $f22
|
||||
/* 00974 809FCB44 02602025 */ or $a0, $s3, $zero ## $a0 = 00000000
|
||||
/* 00978 809FCB48 02402825 */ or $a1, $s2, $zero ## $a1 = 00000024
|
||||
/* 0097C 809FCB4C E7B80010 */ swc1 $f24, 0x0010($sp)
|
||||
/* 00980 809FCB50 0C00A4F9 */ jal EffectSsBubble_Spawn
|
||||
/* 00984 809FCB54 E7BA0014 */ swc1 $f26, 0x0014($sp)
|
||||
/* 00988 809FCB58 26100001 */ addiu $s0, $s0, 0x0001 ## $s0 = 00000001
|
||||
/* 0098C 809FCB5C 0211082A */ slt $at, $s0, $s1
|
||||
/* 00990 809FCB60 5420FFF7 */ bnel $at, $zero, .L809FCB40
|
||||
/* 00994 809FCB64 4406A000 */ mfc1 $a2, $f20
|
||||
/* 00998 809FCB68 10000020 */ beq $zero, $zero, .L809FCBEC
|
||||
/* 0099C 809FCB6C 8FBF0054 */ lw $ra, 0x0054($sp)
|
||||
.L809FCB70:
|
||||
/* 009A0 809FCB70 92890190 */ lbu $t1, 0x0190($s4) ## 00000190
|
||||
/* 009A4 809FCB74 3C0A80A0 */ lui $t2, %hi(D_809FCEE0) ## $t2 = 80A00000
|
||||
/* 009A8 809FCB78 02002025 */ or $a0, $s0, $zero ## $a0 = 00000001
|
||||
/* 009AC 809FCB7C 01495021 */ addu $t2, $t2, $t1
|
||||
/* 009B0 809FCB80 914ACEE0 */ lbu $t2, %lo(D_809FCEE0)($t2)
|
||||
/* 009B4 809FCB84 3C014F80 */ lui $at, 0x4F80 ## $at = 4F800000
|
||||
/* 009B8 809FCB88 448A3000 */ mtc1 $t2, $f6 ## $f6 = -0.00
|
||||
/* 009BC 809FCB8C 05410004 */ bgez $t2, .L809FCBA0
|
||||
/* 009C0 809FCB90 468031A0 */ cvt.s.w $f6, $f6
|
||||
/* 009C4 809FCB94 44814000 */ mtc1 $at, $f8 ## $f8 = 4294967296.00
|
||||
/* 009C8 809FCB98 00000000 */ nop
|
||||
/* 009CC 809FCB9C 46083180 */ add.s $f6, $f6, $f8
|
||||
.L809FCBA0:
|
||||
/* 009D0 809FCBA0 44053000 */ mfc1 $a1, $f6
|
||||
/* 009D4 809FCBA4 0C0295B2 */ jal func_800A56C8
|
||||
/* 009D8 809FCBA8 00000000 */ nop
|
||||
/* 009DC 809FCBAC 1040000E */ beq $v0, $zero, .L809FCBE8
|
||||
/* 009E0 809FCBB0 02802025 */ or $a0, $s4, $zero ## $a0 = 00000000
|
||||
/* 009E4 809FCBB4 866200A4 */ lh $v0, 0x00A4($s3) ## 000000A4
|
||||
/* 009E8 809FCBB8 24010007 */ addiu $at, $zero, 0x0007 ## $at = 00000007
|
||||
/* 009EC 809FCBBC 10410005 */ beq $v0, $at, .L809FCBD4
|
||||
/* 009F0 809FCBC0 24010008 */ addiu $at, $zero, 0x0008 ## $at = 00000008
|
||||
/* 009F4 809FCBC4 10410003 */ beq $v0, $at, .L809FCBD4
|
||||
/* 009F8 809FCBC8 24010004 */ addiu $at, $zero, 0x0004 ## $at = 00000004
|
||||
/* 009FC 809FCBCC 54410004 */ bnel $v0, $at, .L809FCBE0
|
||||
/* 00A00 809FCBD0 24022801 */ addiu $v0, $zero, 0x2801 ## $v0 = 00002801
|
||||
.L809FCBD4:
|
||||
/* 00A04 809FCBD4 10000002 */ beq $zero, $zero, .L809FCBE0
|
||||
/* 00A08 809FCBD8 240228DC */ addiu $v0, $zero, 0x28DC ## $v0 = 000028DC
|
||||
/* 00A0C 809FCBDC 24022801 */ addiu $v0, $zero, 0x2801 ## $v0 = 00002801
|
||||
.L809FCBE0:
|
||||
/* 00A10 809FCBE0 0C00BE0A */ jal Audio_PlayActorSound2
|
||||
|
||||
/* 00A14 809FCBE4 3045FFFF */ andi $a1, $v0, 0xFFFF ## $a1 = 00002801
|
||||
.L809FCBE8:
|
||||
/* 00A18 809FCBE8 8FBF0054 */ lw $ra, 0x0054($sp)
|
||||
.L809FCBEC:
|
||||
/* 00A1C 809FCBEC D7B40020 */ ldc1 $f20, 0x0020($sp)
|
||||
/* 00A20 809FCBF0 D7B60028 */ ldc1 $f22, 0x0028($sp)
|
||||
/* 00A24 809FCBF4 D7B80030 */ ldc1 $f24, 0x0030($sp)
|
||||
/* 00A28 809FCBF8 D7BA0038 */ ldc1 $f26, 0x0038($sp)
|
||||
/* 00A2C 809FCBFC 8FB00040 */ lw $s0, 0x0040($sp)
|
||||
/* 00A30 809FCC00 8FB10044 */ lw $s1, 0x0044($sp)
|
||||
/* 00A34 809FCC04 8FB20048 */ lw $s2, 0x0048($sp)
|
||||
/* 00A38 809FCC08 8FB3004C */ lw $s3, 0x004C($sp)
|
||||
/* 00A3C 809FCC0C 8FB40050 */ lw $s4, 0x0050($sp)
|
||||
/* 00A40 809FCC10 03E00008 */ jr $ra
|
||||
/* 00A44 809FCC14 27BD0058 */ addiu $sp, $sp, 0x0058 ## $sp = 00000000
|
|
@ -1,84 +0,0 @@
|
|||
glabel func_809FCC3C
|
||||
/* 00A6C 809FCC3C 27BDFFD8 */ addiu $sp, $sp, 0xFFD8 ## $sp = FFFFFFD8
|
||||
/* 00A70 809FCC40 AFA70034 */ sw $a3, 0x0034($sp)
|
||||
/* 00A74 809FCC44 24010004 */ addiu $at, $zero, 0x0004 ## $at = 00000004
|
||||
/* 00A78 809FCC48 00803825 */ or $a3, $a0, $zero ## $a3 = 00000000
|
||||
/* 00A7C 809FCC4C AFBF0014 */ sw $ra, 0x0014($sp)
|
||||
/* 00A80 809FCC50 AFA40028 */ sw $a0, 0x0028($sp)
|
||||
/* 00A84 809FCC54 14A10040 */ bne $a1, $at, .L809FCD58
|
||||
/* 00A88 809FCC58 AFA60030 */ sw $a2, 0x0030($sp)
|
||||
/* 00A8C 809FCC5C 8FA3003C */ lw $v1, 0x003C($sp)
|
||||
/* 00A90 809FCC60 8FA80038 */ lw $t0, 0x0038($sp)
|
||||
/* 00A94 809FCC64 3C010001 */ lui $at, 0x0001 ## $at = 00010000
|
||||
/* 00A98 809FCC68 806E0194 */ lb $t6, 0x0194($v1) ## 00000194
|
||||
/* 00A9C 809FCC6C 846D0032 */ lh $t5, 0x0032($v1) ## 00000032
|
||||
/* 00AA0 809FCC70 850C0004 */ lh $t4, 0x0004($t0) ## 00000004
|
||||
/* 00AA4 809FCC74 9469001C */ lhu $t1, 0x001C($v1) ## 0000001C
|
||||
/* 00AA8 809FCC78 3C1880A0 */ lui $t8, %hi(D_809FCEE4) ## $t8 = 80A00000
|
||||
/* 00AAC 809FCC7C 00811021 */ addu $v0, $a0, $at
|
||||
/* 00AB0 809FCC80 000E78C0 */ sll $t7, $t6, 3
|
||||
/* 00AB4 809FCC84 8C591D38 */ lw $t9, 0x1D38($v0) ## 00001D38
|
||||
/* 00AB8 809FCC88 2718CEE4 */ addiu $t8, $t8, %lo(D_809FCEE4) ## $t8 = 809FCEE4
|
||||
/* 00ABC 809FCC8C 018D7021 */ addu $t6, $t4, $t5
|
||||
/* 00AC0 809FCC90 01F83021 */ addu $a2, $t7, $t8
|
||||
/* 00AC4 809FCC94 A50E0004 */ sh $t6, 0x0004($t0) ## 00000004
|
||||
/* 00AC8 809FCC98 804F1CD0 */ lb $t7, 0x1CD0($v0) ## 00001CD0
|
||||
/* 00ACC 809FCC9C 00095283 */ sra $t2, $t1, 10
|
||||
/* 00AD0 809FCCA0 000A5900 */ sll $t3, $t2, 4
|
||||
/* 00AD4 809FCCA4 05E10005 */ bgez $t7, .L809FCCBC
|
||||
/* 00AD8 809FCCA8 032B2021 */ addu $a0, $t9, $t3
|
||||
/* 00ADC 809FCCAC 80850000 */ lb $a1, 0x0000($a0) ## 00000000
|
||||
/* 00AE0 809FCCB0 80980002 */ lb $t8, 0x0002($a0) ## 00000002
|
||||
/* 00AE4 809FCCB4 8FAB0030 */ lw $t3, 0x0030($sp)
|
||||
/* 00AE8 809FCCB8 14B8001E */ bne $a1, $t8, .L809FCD34
|
||||
.L809FCCBC:
|
||||
/* 00AEC 809FCCBC 24E400E0 */ addiu $a0, $a3, 0x00E0 ## $a0 = 000000E0
|
||||
/* 00AF0 809FCCC0 24650024 */ addiu $a1, $v1, 0x0024 ## $a1 = 00000024
|
||||
/* 00AF4 809FCCC4 0C01E01A */ jal Math_Vec3f_Yaw
|
||||
|
||||
/* 00AF8 809FCCC8 AFA6001C */ sw $a2, 0x001C($sp)
|
||||
/* 00AFC 809FCCCC 8FA3003C */ lw $v1, 0x003C($sp)
|
||||
/* 00B00 809FCCD0 8FA80038 */ lw $t0, 0x0038($sp)
|
||||
/* 00B04 809FCCD4 8FA50030 */ lw $a1, 0x0030($sp)
|
||||
/* 00B08 809FCCD8 8C6A016C */ lw $t2, 0x016C($v1) ## 0000016C
|
||||
/* 00B0C 809FCCDC 846900B6 */ lh $t1, 0x00B6($v1) ## 000000B6
|
||||
/* 00B10 809FCCE0 850C0004 */ lh $t4, 0x0004($t0) ## 00000004
|
||||
/* 00B14 809FCCE4 85590016 */ lh $t9, 0x0016($t2) ## 00000016
|
||||
/* 00B18 809FCCE8 8FA6001C */ lw $a2, 0x001C($sp)
|
||||
/* 00B1C 809FCCEC 01395821 */ addu $t3, $t1, $t9
|
||||
/* 00B20 809FCCF0 016C6821 */ addu $t5, $t3, $t4
|
||||
/* 00B24 809FCCF4 01A22023 */ subu $a0, $t5, $v0
|
||||
/* 00B28 809FCCF8 00042400 */ sll $a0, $a0, 16
|
||||
/* 00B2C 809FCCFC 00042403 */ sra $a0, $a0, 16
|
||||
/* 00B30 809FCD00 04800003 */ bltz $a0, .L809FCD10
|
||||
/* 00B34 809FCD04 00041023 */ subu $v0, $zero, $a0
|
||||
/* 00B38 809FCD08 10000001 */ beq $zero, $zero, .L809FCD10
|
||||
/* 00B3C 809FCD0C 00801025 */ or $v0, $a0, $zero ## $v0 = 00000000
|
||||
.L809FCD10:
|
||||
/* 00B40 809FCD10 28414000 */ slti $at, $v0, 0x4000
|
||||
/* 00B44 809FCD14 50200005 */ beql $at, $zero, .L809FCD2C
|
||||
/* 00B48 809FCD18 8CCF0004 */ lw $t7, 0x0004($a2) ## 00000004
|
||||
/* 00B4C 809FCD1C 8CCE0000 */ lw $t6, 0x0000($a2) ## 00000000
|
||||
/* 00B50 809FCD20 1000000D */ beq $zero, $zero, .L809FCD58
|
||||
/* 00B54 809FCD24 ACAE0000 */ sw $t6, 0x0000($a1) ## 00000000
|
||||
/* 00B58 809FCD28 8CCF0004 */ lw $t7, 0x0004($a2) ## 00000004
|
||||
.L809FCD2C:
|
||||
/* 00B5C 809FCD2C 1000000A */ beq $zero, $zero, .L809FCD58
|
||||
/* 00B60 809FCD30 ACAF0000 */ sw $t7, 0x0000($a1) ## 00000000
|
||||
.L809FCD34:
|
||||
/* 00B64 809FCD34 80780003 */ lb $t8, 0x0003($v1) ## 00000003
|
||||
/* 00B68 809FCD38 90620192 */ lbu $v0, 0x0192($v1) ## 00000192
|
||||
/* 00B6C 809FCD3C 53050003 */ beql $t8, $a1, .L809FCD4C
|
||||
/* 00B70 809FCD40 00025080 */ sll $t2, $v0, 2
|
||||
/* 00B74 809FCD44 38420001 */ xori $v0, $v0, 0x0001 ## $v0 = 00000001
|
||||
/* 00B78 809FCD48 00025080 */ sll $t2, $v0, 2
|
||||
.L809FCD4C:
|
||||
/* 00B7C 809FCD4C 00CA4821 */ addu $t1, $a2, $t2
|
||||
/* 00B80 809FCD50 8D390000 */ lw $t9, 0x0000($t1) ## 00000000
|
||||
/* 00B84 809FCD54 AD790000 */ sw $t9, 0x0000($t3) ## 00000000
|
||||
.L809FCD58:
|
||||
/* 00B88 809FCD58 8FBF0014 */ lw $ra, 0x0014($sp)
|
||||
/* 00B8C 809FCD5C 27BD0028 */ addiu $sp, $sp, 0x0028 ## $sp = 00000000
|
||||
/* 00B90 809FCD60 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000
|
||||
/* 00B94 809FCD64 03E00008 */ jr $ra
|
||||
/* 00B98 809FCD68 00000000 */ nop
|
|
@ -1,30 +0,0 @@
|
|||
.include "macro.inc"
|
||||
|
||||
# assembler directives
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set gp=64 # allow use of 64-bit general purpose registers
|
||||
|
||||
.section .data
|
||||
|
||||
.balign 16
|
||||
|
||||
glabel En_Door_InitVars
|
||||
.word 0x00090A00, 0x00000010, 0x00010000, 0x000001D8
|
||||
.word EnDoor_Init
|
||||
.word EnDoor_Destroy
|
||||
.word EnDoor_Update
|
||||
.word EnDoor_Draw
|
||||
glabel D_809FCEA0
|
||||
.word 0x00040100, 0x002C0005, 0x02000059, 0x00070300, 0x01870008, 0x03000187, 0xFFFF0000, 0x0001FFFF, 0x04000002
|
||||
glabel D_809FCEC4
|
||||
.word 0x801F0000, 0x30F40FA0
|
||||
glabel D_809FCECC
|
||||
.word 0x0400E758, 0x0400E5B4, 0x04010038, 0x0400E6A0
|
||||
glabel D_809FCEDC
|
||||
.word 0x19191919
|
||||
glabel D_809FCEE0
|
||||
.word 0x3C463C46
|
||||
glabel D_809FCEE4
|
||||
.word 0x0400ECB8, 0x0400EE00, 0x0600F998, 0x0600F938, 0x06004958, 0x06004A10, 0x060013B8, 0x06001420, 0x050047A0, 0x05004978, 0x00000000
|
||||
|
|
@ -491,7 +491,7 @@ void func_80033E1C(GlobalContext* globalCtx, s16 arg1, s16 arg2, s16 arg3);
|
|||
void func_80033E88(Actor* actor, GlobalContext* globalCtx, s16 arg2, s16 arg3);
|
||||
f32 Math_Rand_ZeroFloat(f32 f);
|
||||
f32 Math_Rand_CenteredFloat(f32 f);
|
||||
void func_80033F54(GlobalContext* globalCtx, s32 arg1, s32 arg2);
|
||||
void Actor_DrawDoorLock(GlobalContext* globalCtx, s32 arg1, s32 arg2);
|
||||
void func_8003424C(GlobalContext* globalCtx, Vec3f* arg1);
|
||||
void func_8003426C(Actor* actor, s16 arg1, s16 arg2, s16 arg3, s16 arg4);
|
||||
Hilite* func_800342EC(Vec3f* object, GlobalContext* globalCtx);
|
||||
|
@ -1359,7 +1359,7 @@ void func_800A431C(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimation
|
|||
void func_800A43B8(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* segment, f32 transitionFrame,
|
||||
LinkAnimationHeader* linkAnimSeg2, f32 frame, f32 transitionRate, Vec3s* arg7);
|
||||
s32 func_800A4530(SkelAnime* skelAnime, f32 arg1);
|
||||
void SkelAnime_Init(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg,
|
||||
s32 SkelAnime_Init(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg,
|
||||
AnimationHeader* animationseg, Vec3s* limbDrawTable, Vec3s* arg5, s32 limbCount);
|
||||
void SkelAnime_InitFlex(GlobalContext* globalCtx, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg,
|
||||
AnimationHeader* animationseg, Vec3s* limbDrawTable, Vec3s* arg5, s32 limbCount);
|
||||
|
|
5
spec
5
spec
|
@ -2184,8 +2184,11 @@ endseg
|
|||
beginseg
|
||||
name "ovl_En_Door"
|
||||
include "build/src/overlays/actors/ovl_En_Door/z_en_door.o"
|
||||
include "build/data/overlays/actors/z_en_door.data.o"
|
||||
#ifdef NON_MATCHING
|
||||
include "build/src/overlays/actors/ovl_En_Door/ovl_En_Door_reloc.o"
|
||||
#else
|
||||
include "build/data/overlays/actors/z_en_door.reloc.o"
|
||||
#endif
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
|
|
|
@ -3499,7 +3499,7 @@ struct_801160DC D_801160DC[] = {
|
|||
{ 0.64000005f, 8500.0f, 8000.0f, 1.75f, 0.1f, 0x050011F0, 0x05001100 },
|
||||
};
|
||||
|
||||
void func_80033F54(GlobalContext* globalCtx, s32 arg1, s32 arg2) {
|
||||
void Actor_DrawDoorLock(GlobalContext* globalCtx, s32 frame, s32 type) {
|
||||
struct_801160DC* entry;
|
||||
s32 i;
|
||||
MtxF spB0;
|
||||
|
@ -3508,7 +3508,7 @@ void func_80033F54(GlobalContext* globalCtx, s32 arg1, s32 arg2) {
|
|||
f32 temp2;
|
||||
f32 temp3;
|
||||
|
||||
entry = &D_801160DC[arg2];
|
||||
entry = &D_801160DC[type];
|
||||
var = entry->unk_10;
|
||||
|
||||
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_actor.c", 8265);
|
||||
|
@ -3516,8 +3516,8 @@ void func_80033F54(GlobalContext* globalCtx, s32 arg1, s32 arg2) {
|
|||
Matrix_Translate(0.0f, entry->unk_08, 500.0f, MTXMODE_APPLY);
|
||||
Matrix_Get(&spB0);
|
||||
|
||||
temp1 = sinf(entry->unk_00 - var) * -(10 - arg1) * 0.1f * entry->unk_04;
|
||||
temp2 = cosf(entry->unk_00 - var) * (10 - arg1) * 0.1f * entry->unk_04;
|
||||
temp1 = sinf(entry->unk_00 - var) * -(10 - frame) * 0.1f * entry->unk_04;
|
||||
temp2 = cosf(entry->unk_00 - var) * (10 - frame) * 0.1f * entry->unk_04;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
Matrix_Put(&spB0);
|
||||
|
@ -3542,7 +3542,7 @@ void func_80033F54(GlobalContext* globalCtx, s32 arg1, s32 arg2) {
|
|||
}
|
||||
|
||||
Matrix_Put(&spB0);
|
||||
Matrix_Scale(arg1 * 0.1f, arg1 * 0.1f, arg1 * 0.1f, MTXMODE_APPLY);
|
||||
Matrix_Scale(frame * 0.1f, frame * 0.1f, frame * 0.1f, MTXMODE_APPLY);
|
||||
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_actor.c", 8314),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
|
|
|
@ -1271,8 +1271,8 @@ s32 func_800A4530(SkelAnime* skelAnime, f32 arg1) {
|
|||
return func_800A4478(skelAnime, arg1, updateRate);
|
||||
}
|
||||
|
||||
void SkelAnime_Init(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg,
|
||||
AnimationHeader* animationSeg, Vec3s* limbDrawTbl, Vec3s* transitionDrawTable, s32 limbCount) {
|
||||
s32 SkelAnime_Init(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg,
|
||||
AnimationHeader* animationSeg, Vec3s* limbDrawTbl, Vec3s* transitionDrawTable, s32 limbCount) {
|
||||
SkeletonHeader* skeletonHeader = SEGMENTED_TO_VIRTUAL(skeletonHeaderSeg);
|
||||
|
||||
skelAnime->limbCount = skeletonHeader->limbCount + 1;
|
||||
|
|
|
@ -159,7 +159,7 @@ void DoorGerudo_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
|||
|
||||
if (this->unk_166 != 0) {
|
||||
Matrix_Scale(0.01f, 0.01f, 0.025f, MTXMODE_APPLY);
|
||||
func_80033F54(globalCtx, this->unk_166, 0);
|
||||
Actor_DrawDoorLock(globalCtx, this->unk_166, 0);
|
||||
}
|
||||
|
||||
CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_door_gerudo.c", 377);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* File: z_en_door.c
|
||||
* Overlay: ovl_En_Door
|
||||
* Description: Door
|
||||
* Description: Doors with handles
|
||||
*/
|
||||
|
||||
#include "z_en_door.h"
|
||||
|
@ -10,12 +10,25 @@
|
|||
|
||||
#define THIS ((EnDoor*)thisx)
|
||||
|
||||
#define DOOR_AJAR_SLAM_RANGE 120.0f
|
||||
#define DOOR_AJAR_OPEN_RANGE (2 * DOOR_AJAR_SLAM_RANGE)
|
||||
|
||||
#define DOOR_CHECK_RANGE 40.0f
|
||||
|
||||
void EnDoor_Init(Actor* thisx, GlobalContext* globalCtx);
|
||||
void EnDoor_Destroy(Actor* thisx, GlobalContext* globalCtx);
|
||||
void EnDoor_Update(Actor* thisx, GlobalContext* globalCtx);
|
||||
void EnDoor_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
|
||||
/*
|
||||
void EnDoor_SetupType(EnDoor* this, GlobalContext* globalCtx);
|
||||
void EnDoor_Idle(EnDoor* this, GlobalContext* globalCtx);
|
||||
void EnDoor_WaitForCheck(EnDoor* this, GlobalContext* globalCtx);
|
||||
void EnDoor_Check(EnDoor* this, GlobalContext* globalCtx);
|
||||
void EnDoor_AjarWait(EnDoor* this, GlobalContext* globalCtx);
|
||||
void EnDoor_AjarOpen(EnDoor* this, GlobalContext* globalCtx);
|
||||
void EnDoor_AjarClose(EnDoor* this, GlobalContext* globalCtx);
|
||||
void EnDoor_Open(EnDoor* this, GlobalContext* globalCtx);
|
||||
|
||||
const ActorInit En_Door_InitVars = {
|
||||
ACTOR_EN_DOOR,
|
||||
ACTORTYPE_DOOR,
|
||||
|
@ -27,29 +40,317 @@ const ActorInit En_Door_InitVars = {
|
|||
(ActorFunc)EnDoor_Update,
|
||||
(ActorFunc)EnDoor_Draw,
|
||||
};
|
||||
*/
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Init.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Destroy.s")
|
||||
/**
|
||||
* Controls which object and display lists to use in a given scene
|
||||
*/
|
||||
static EnDoorInfo sDoorInfo[] = {
|
||||
{ SCENE_HIDAN, 1, OBJECT_HIDAN_OBJECTS },
|
||||
{ SCENE_MIZUSIN, 2, OBJECT_MIZU_OBJECTS },
|
||||
{ SCENE_HAKADAN, 3, OBJECT_HAKA_DOOR },
|
||||
{ SCENE_HAKADANCH, 3, OBJECT_HAKA_DOOR },
|
||||
// KEEP objects should remain last and in this order
|
||||
{ -1, 0, OBJECT_GAMEPLAY_KEEP },
|
||||
{ -1, 4, OBJECT_GAMEPLAY_FIELD_KEEP },
|
||||
};
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC41C.s")
|
||||
static InitChainEntry sInitChain[] = {
|
||||
ICHAIN_U8(unk_1F, 0, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(uncullZoneForward, 4000, ICHAIN_STOP),
|
||||
};
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC5D0.s")
|
||||
AnimationHeader* D_809FCECC[] = { 0x0400E758, 0x0400E5B4, 0x04010038, 0x0400E6A0 };
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC878.s")
|
||||
static u8 sDoorAnimOpenFrames[] = { 25, 25, 25, 25 };
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC8C0.s")
|
||||
static u8 sDoorAnimCloseFrames[] = { 60, 70, 60, 70 };
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC8F4.s")
|
||||
static Gfx* D_809FCEE4[5][2] = {
|
||||
{ 0x0400ECB8, 0x0400EE00 }, { 0x0600F998, 0x0600F938 }, { 0x06004958, 0x06004A10 },
|
||||
{ 0x060013B8, 0x06001420 }, { 0x050047A0, 0x05004978 },
|
||||
};
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC928.s")
|
||||
extern Gfx D_0400ECB8[];
|
||||
extern Gfx D_0400EE00[];
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC998.s")
|
||||
extern AnimationHeader D_0400E758;
|
||||
extern SkeletonHeader D_0400FF78;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC9DC.s")
|
||||
void EnDoor_Init(Actor* thisx, GlobalContext* globalCtx2) {
|
||||
GlobalContext* globalCtx = globalCtx2;
|
||||
EnDoor* this = THIS;
|
||||
EnDoorInfo* objectInfo;
|
||||
s32 i;
|
||||
s32 objBankIndex;
|
||||
f32 xOffset;
|
||||
f32 zOffset;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Update.s")
|
||||
objectInfo = &sDoorInfo[0];
|
||||
Actor_ProcessInitChain(&this->actor, sInitChain);
|
||||
SkelAnime_Init(globalCtx, &this->skelAnime, &D_0400FF78, &D_0400E758, this->limbDrawTable,
|
||||
this->transitionDrawTable, 5);
|
||||
for (i = 0; i < ARRAY_COUNT(sDoorInfo) - 2; i++, objectInfo++) {
|
||||
if (globalCtx->sceneNum == objectInfo->sceneNum) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i >= ARRAY_COUNT(sDoorInfo) - 2 && Object_GetIndex(&globalCtx->objectCtx, OBJECT_GAMEPLAY_FIELD_KEEP) >= 0) {
|
||||
objectInfo++;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/func_809FCC3C.s")
|
||||
this->dListIndex = objectInfo->dListIndex;
|
||||
objBankIndex = Object_GetIndex(&globalCtx->objectCtx, objectInfo->objectId);
|
||||
if (objBankIndex < 0) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Draw.s")
|
||||
this->requiredObjBankIndex = objBankIndex;
|
||||
this->dListIndex = objectInfo->dListIndex;
|
||||
if (this->actor.objBankIndex == this->requiredObjBankIndex) {
|
||||
EnDoor_SetupType(this, globalCtx);
|
||||
} else {
|
||||
this->actionFunc = EnDoor_SetupType;
|
||||
}
|
||||
|
||||
// Double doors
|
||||
if (this->actor.params & 0x40) {
|
||||
EnDoor* other;
|
||||
|
||||
xOffset = Math_Coss(this->actor.shape.rot.y) * 30.0f;
|
||||
zOffset = Math_Sins(this->actor.shape.rot.y) * 30.0f;
|
||||
other = (EnDoor*)Actor_SpawnAsChild(&globalCtx->actorCtx, &this->actor, globalCtx, ACTOR_EN_DOOR,
|
||||
this->actor.posRot.pos.x + xOffset, this->actor.posRot.pos.y,
|
||||
this->actor.posRot.pos.z - zOffset, 0, this->actor.shape.rot.y + 0x8000, 0,
|
||||
this->actor.params & ~0x40);
|
||||
if (other != NULL) {
|
||||
other->unk_192 = 1;
|
||||
}
|
||||
this->actor.posRot.pos.x -= xOffset;
|
||||
this->actor.posRot.pos.z += zOffset;
|
||||
}
|
||||
Actor_SetHeight(&this->actor, 70.0f);
|
||||
}
|
||||
|
||||
void EnDoor_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
||||
TransitionActorEntry* transitionEntry;
|
||||
EnDoor* this = THIS;
|
||||
|
||||
transitionEntry = &globalCtx->transitionActorList[(u16)this->actor.params >> 0xA];
|
||||
if (transitionEntry->id < 0) {
|
||||
transitionEntry->id = -transitionEntry->id;
|
||||
}
|
||||
}
|
||||
|
||||
void EnDoor_SetupType(EnDoor* this, GlobalContext* globalCtx) {
|
||||
s32 doorType;
|
||||
|
||||
if (Object_IsLoaded(&globalCtx->objectCtx, this->requiredObjBankIndex)) {
|
||||
doorType = this->actor.params >> 7 & 7;
|
||||
this->actor.flags &= ~0x10;
|
||||
this->actor.objBankIndex = this->requiredObjBankIndex;
|
||||
this->actionFunc = EnDoor_Idle;
|
||||
if (doorType == DOOR_EVENING) {
|
||||
doorType =
|
||||
(gSaveContext.dayTime > 0xC000 && gSaveContext.dayTime < 0xE000) ? DOOR_SCENEEXIT : DOOR_CHECKABLE;
|
||||
}
|
||||
this->actor.posRot.rot.y = 0x0000;
|
||||
if (doorType == DOOR_LOCKED) {
|
||||
if (!Flags_GetSwitch(globalCtx, this->actor.params & 0x3F)) {
|
||||
this->lockTimer = 10;
|
||||
}
|
||||
} else if (doorType == DOOR_AJAR) {
|
||||
if (func_8002DB8C(&this->actor, &PLAYER->actor) > DOOR_AJAR_SLAM_RANGE) {
|
||||
this->actionFunc = EnDoor_AjarWait;
|
||||
this->actor.posRot.rot.y = -0x1800;
|
||||
}
|
||||
} else if (doorType == DOOR_CHECKABLE) {
|
||||
this->actor.textId = (this->actor.params & 0x3F) + 0x0200;
|
||||
if (this->actor.textId == 0x0229 && !(gSaveContext.eventChkInf[1] & 0x10)) {
|
||||
// Talon's house door. If Talon has not been woken up at Hyrule Castle
|
||||
// this door should be openable at any time of day. Note that there is no
|
||||
// check for time of day as the scene setup for Lon Lon merely initializes
|
||||
// the door with a different text id between day and night setups
|
||||
doorType = DOOR_SCENEEXIT;
|
||||
} else {
|
||||
this->actionFunc = EnDoor_WaitForCheck;
|
||||
this->actor.flags |= 0x8000009;
|
||||
}
|
||||
}
|
||||
// Replace the door type it was loaded with by the new type
|
||||
this->actor.params = (this->actor.params & ~0x380) | (doorType << 7);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
// Regalloc only
|
||||
void EnDoor_Idle(EnDoor* this, GlobalContext* globalCtx) {
|
||||
Player* player = PLAYER;
|
||||
s32 doorType;
|
||||
Vec3f sp2C;
|
||||
s8 numKeys;
|
||||
s16 phi_v0;
|
||||
s16 temp_v0;
|
||||
|
||||
doorType = this->actor.params >> 7 & 7;
|
||||
func_8002DBD0(&this->actor, &sp2C, &player->actor.posRot.pos);
|
||||
if (this->unk_191 != 0) {
|
||||
this->actionFunc = EnDoor_Open;
|
||||
SkelAnime_ChangeAnimPlaybackStop(&this->skelAnime, D_809FCECC[this->unk_190],
|
||||
(player->stateFlags1 & 0x8000000) ? 0.75f : 1.5f);
|
||||
if (this->lockTimer != 0) {
|
||||
gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex]--;
|
||||
Flags_SetSwitch(globalCtx, this->actor.params & 0x3F);
|
||||
Audio_PlayActorSound2(&this->actor, NA_SE_EV_CHAIN_KEY_UNLOCK);
|
||||
}
|
||||
} else if (!Player_InCsMode(globalCtx)) {
|
||||
if (fabsf(sp2C.y) < 20.0f && fabsf(sp2C.x) < 20.0f && fabsf(sp2C.z) < 50.0f) {
|
||||
phi_v0 = player->actor.shape.rot.y - this->actor.shape.rot.y;
|
||||
if (sp2C.z > 0.0f) {
|
||||
phi_v0 = 0x8000 - phi_v0;
|
||||
}
|
||||
if (ABS(phi_v0) < 0x3000) {
|
||||
if (this->lockTimer != 0) {
|
||||
numKeys = gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex];
|
||||
if (numKeys <= 0) {
|
||||
PLAYER->naviTextId = -0x203;
|
||||
return;
|
||||
} else {
|
||||
player->doorTimer = 10;
|
||||
}
|
||||
}
|
||||
player->doorType = (doorType == DOOR_AJAR) ? -1 : 1;
|
||||
player->doorDirection = (sp2C.z >= 0.0f) ? 1.0f : -1.0f;
|
||||
player->doorActor = &this->actor;
|
||||
}
|
||||
} else if (doorType == DOOR_AJAR && this->actor.xzDistFromLink > DOOR_AJAR_OPEN_RANGE) {
|
||||
this->actionFunc = EnDoor_AjarOpen;
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Idle.s")
|
||||
#endif
|
||||
|
||||
void EnDoor_WaitForCheck(EnDoor* this, GlobalContext* globalCtx) {
|
||||
if (func_8002F194(&this->actor, globalCtx)) {
|
||||
this->actionFunc = EnDoor_Check;
|
||||
} else {
|
||||
func_8002F2CC(&this->actor, globalCtx, DOOR_CHECK_RANGE);
|
||||
}
|
||||
}
|
||||
|
||||
void EnDoor_Check(EnDoor* this, GlobalContext* globalCtx) {
|
||||
if (func_8002F334(&this->actor, globalCtx)) {
|
||||
this->actionFunc = EnDoor_WaitForCheck;
|
||||
}
|
||||
}
|
||||
|
||||
void EnDoor_AjarWait(EnDoor* this, GlobalContext* globalCtx) {
|
||||
if (this->actor.xzDistFromLink < DOOR_AJAR_SLAM_RANGE) {
|
||||
this->actionFunc = EnDoor_AjarClose;
|
||||
}
|
||||
}
|
||||
|
||||
void EnDoor_AjarOpen(EnDoor* this, GlobalContext* globalCtx) {
|
||||
if (this->actor.xzDistFromLink < DOOR_AJAR_SLAM_RANGE) {
|
||||
this->actionFunc = EnDoor_AjarClose;
|
||||
} else if (Math_ApproxUpdateScaledS(&this->actor.posRot.rot.y, -0x1800, 0x100)) {
|
||||
this->actionFunc = EnDoor_AjarWait;
|
||||
}
|
||||
}
|
||||
|
||||
void EnDoor_AjarClose(EnDoor* this, GlobalContext* globalCtx) {
|
||||
if (Math_ApproxUpdateScaledS(&this->actor.posRot.rot.y, 0, 0x700)) {
|
||||
this->actionFunc = EnDoor_Idle;
|
||||
}
|
||||
}
|
||||
|
||||
void EnDoor_Open(EnDoor* this, GlobalContext* globalCtx) {
|
||||
s32 i;
|
||||
s32 numEffects;
|
||||
|
||||
if (DECR(this->lockTimer) == 0) {
|
||||
if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) {
|
||||
this->actionFunc = EnDoor_Idle;
|
||||
this->unk_191 = 0;
|
||||
} else if (func_800A56C8(&this->skelAnime, sDoorAnimOpenFrames[this->unk_190])) {
|
||||
Audio_PlayActorSound2(&this->actor,
|
||||
(globalCtx->sceneNum == SCENE_HAKADAN || globalCtx->sceneNum == SCENE_HAKADANCH ||
|
||||
globalCtx->sceneNum == SCENE_HIDAN)
|
||||
? NA_SE_EV_IRON_DOOR_OPEN
|
||||
: NA_SE_OC_DOOR_OPEN);
|
||||
if (this->skelAnime.animPlaybackSpeed < 1.5f) {
|
||||
numEffects = (s32)(Math_Rand_ZeroOne() * 30.0f) + 50;
|
||||
for (i = 0; i < numEffects; i++) {
|
||||
EffectSsBubble_Spawn(globalCtx, &this->actor.posRot.pos, 60.0f, 100.0f, 50.0f, 0.15f);
|
||||
}
|
||||
}
|
||||
} else if (func_800A56C8(&this->skelAnime, sDoorAnimCloseFrames[this->unk_190])) {
|
||||
Audio_PlayActorSound2(&this->actor,
|
||||
(globalCtx->sceneNum == SCENE_HAKADAN || globalCtx->sceneNum == SCENE_HAKADANCH ||
|
||||
globalCtx->sceneNum == SCENE_HIDAN)
|
||||
? NA_SE_EV_IRON_DOOR_CLOSE
|
||||
: NA_SE_EV_DOOR_CLOSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void EnDoor_Update(Actor* thisx, GlobalContext* globalCtx) {
|
||||
EnDoor* this = THIS;
|
||||
this->actionFunc(this, globalCtx);
|
||||
}
|
||||
|
||||
s32 EnDoor_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, void* thisx) {
|
||||
s32 pad;
|
||||
TransitionActorEntry* transitionEntry;
|
||||
Gfx** temp_a2;
|
||||
s32 pad2;
|
||||
s16 phi_v0_2;
|
||||
s32 phi_v0;
|
||||
EnDoor* this = THIS;
|
||||
|
||||
if (limbIndex == 4) {
|
||||
temp_a2 = D_809FCEE4[this->dListIndex];
|
||||
transitionEntry = &globalCtx->transitionActorList[(u16)this->actor.params >> 0xA];
|
||||
rot->z += this->actor.posRot.rot.y;
|
||||
if ((globalCtx->roomCtx.prevRoom.num >= 0) ||
|
||||
(transitionEntry->sides[0].room == transitionEntry->sides[1].room)) {
|
||||
phi_v0_2 = ((this->actor.shape.rot.y + this->skelAnime.limbDrawTbl[3].z) + rot->z) -
|
||||
Math_Vec3f_Yaw(&globalCtx->view.eye, &this->actor.posRot.pos);
|
||||
*dList = (ABS(phi_v0_2) < 0x4000) ? temp_a2[0] : temp_a2[1];
|
||||
} else {
|
||||
phi_v0 = this->unk_192;
|
||||
if (transitionEntry->sides[0].room != this->actor.room) {
|
||||
phi_v0 ^= 1;
|
||||
}
|
||||
*dList = temp_a2[phi_v0];
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void EnDoor_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
||||
EnDoor* this = THIS;
|
||||
|
||||
if (this->actor.objBankIndex == this->requiredObjBankIndex) {
|
||||
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_en_door.c", 910);
|
||||
|
||||
func_80093D18(globalCtx->state.gfxCtx);
|
||||
SkelAnime_DrawOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, EnDoor_OverrideLimbDraw,
|
||||
NULL, &this->actor);
|
||||
if (this->actor.posRot.rot.y != 0) {
|
||||
if (1) {}
|
||||
if (this->actor.posRot.rot.y > 0) {
|
||||
gSPDisplayList(POLY_OPA_DISP++, D_0400EE00);
|
||||
} else {
|
||||
gSPDisplayList(POLY_OPA_DISP++, D_0400ECB8);
|
||||
}
|
||||
}
|
||||
if (this->lockTimer != 0) {
|
||||
Actor_DrawDoorLock(globalCtx, this->lockTimer, 0);
|
||||
}
|
||||
|
||||
CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_en_door.c", 941);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,14 +4,57 @@
|
|||
#include "ultra64.h"
|
||||
#include "global.h"
|
||||
|
||||
/**
|
||||
* Actor Parameters
|
||||
*
|
||||
* | | | |
|
||||
* | Transition Index | Type | Double Door | Switch Flag OR Text Id - 0x0200
|
||||
* |------------------|-------|-------------|---------------------------------
|
||||
* | 0 0 0 0 0 0 | 0 0 0 | 0 | 0 0 0 0 0 0
|
||||
* | 6 | 3 | 1 | 6
|
||||
* |
|
||||
*
|
||||
* Transition Index 1111110000000000 Set by the actor engine when the door is spawned
|
||||
* Type 0000001110000000
|
||||
* Double Door 0000000001000000
|
||||
* Switch Flag 0000000000111111 For use with the `DOOR_LOCKED` type
|
||||
* Text id - 0x0200 0000000000111111 For use with the `DOOR_CHECKABLE` type
|
||||
*
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 sceneNum;
|
||||
/* 0x02 */ u8 dListIndex;
|
||||
/* 0x04 */ s16 objectId;
|
||||
} EnDoorInfo;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ DOOR_ROOMLOAD, // loads rooms
|
||||
/* 0x01 */ DOOR_LOCKED, // small key locked door
|
||||
/* 0x02 */ DOOR_ROOMLOAD2, // loads rooms
|
||||
/* 0x03 */ DOOR_SCENEEXIT, // doesn't load rooms, used for doors paired with scene transition polygons
|
||||
/* 0x04 */ DOOR_AJAR, // open slightly but slams shut if Link gets too close
|
||||
/* 0x05 */ DOOR_CHECKABLE, // doors that display a textbox when interacting
|
||||
/* 0x06 */ DOOR_EVENING, // unlocked between 18:00 and 21:00, Dampé's hut
|
||||
/* 0x07 */ DOOR_ROOMLOAD7 // loads rooms
|
||||
} EnDoorType;
|
||||
|
||||
struct EnDoor;
|
||||
|
||||
typedef void (*EnDoorActionFunc)(struct EnDoor*, GlobalContext*);
|
||||
|
||||
typedef struct EnDoor {
|
||||
/* 0x0000 */ Actor actor;
|
||||
/* 0x014C */ char unk_14C[0x44];
|
||||
/* 0x014C */ SkelAnime skelAnime;
|
||||
/* 0x0190 */ u8 unk_190;
|
||||
/* 0x0191 */ u8 unk_191;
|
||||
/* 0x0192 */ char unk_192[0x46];
|
||||
/* 0x0192 */ u8 unk_192;
|
||||
/* 0x0193 */ s8 requiredObjBankIndex;
|
||||
/* 0x0194 */ s8 dListIndex;
|
||||
/* 0x0196 */ s16 lockTimer;
|
||||
/* 0x0198 */ Vec3s limbDrawTable[5];
|
||||
/* 0x01B6 */ Vec3s transitionDrawTable[5];
|
||||
/* 0x01D4 */ EnDoorActionFunc actionFunc;
|
||||
} EnDoor; // size = 0x01D8
|
||||
|
||||
extern const ActorInit En_Door_InitVars;
|
||||
|
|
|
@ -1042,6 +1042,12 @@ D_04032C90 = 0x04032C90;
|
|||
D_04032490 = 0x04032490;
|
||||
D_04032890 = 0x04032890;
|
||||
|
||||
// z_en_door
|
||||
D_0400FF78 = 0x0400FF78;
|
||||
D_0400ECB8 = 0x0400ECB8;
|
||||
D_0400EE00 = 0x0400EE00;
|
||||
D_0400E758 = 0x0400E758;
|
||||
|
||||
// z_en_bx
|
||||
D_060022F0 = 0x060022F0;
|
||||
|
||||
|
|
Loading…
Reference in a new issue