1
0
mirror of https://github.com/blawar/ooot.git synced 2024-06-30 16:29:55 +00:00

ovl_Door_Ana OK

This commit is contained in:
Thar0 2020-03-18 14:59:46 +00:00
parent 5fc1f7aec5
commit 97538a2f14
17 changed files with 200 additions and 494 deletions

View File

@ -1,19 +0,0 @@
glabel DoorAna_Destroy
/* 000C4 80993FB4 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 000C8 80993FB8 AFBF0014 */ sw $ra, 0x0014($sp)
/* 000CC 80993FBC 848E001C */ lh $t6, 0x001C($a0) ## 0000001C
/* 000D0 80993FC0 00803025 */ or $a2, $a0, $zero ## $a2 = 00000000
/* 000D4 80993FC4 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 000D8 80993FC8 31CF0200 */ andi $t7, $t6, 0x0200 ## $t7 = 00000000
/* 000DC 80993FCC 51E00004 */ beql $t7, $zero, .L80993FE0
/* 000E0 80993FD0 8FBF0014 */ lw $ra, 0x0014($sp)
/* 000E4 80993FD4 0C0170EB */ jal ActorCollider_FreeCylinder
/* 000E8 80993FD8 24C5014C */ addiu $a1, $a2, 0x014C ## $a1 = 0000014C
/* 000EC 80993FDC 8FBF0014 */ lw $ra, 0x0014($sp)
.L80993FE0:
/* 000F0 80993FE0 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 000F4 80993FE4 03E00008 */ jr $ra
/* 000F8 80993FE8 00000000 */ nop

View File

@ -1,52 +0,0 @@
glabel DoorAna_Draw
/* 004E8 809943D8 27BDFFC0 */ addiu $sp, $sp, 0xFFC0 ## $sp = FFFFFFC0
/* 004EC 809943DC AFBF001C */ sw $ra, 0x001C($sp)
/* 004F0 809943E0 AFB00018 */ sw $s0, 0x0018($sp)
/* 004F4 809943E4 AFA40040 */ sw $a0, 0x0040($sp)
/* 004F8 809943E8 AFA50044 */ sw $a1, 0x0044($sp)
/* 004FC 809943EC 8CA50000 */ lw $a1, 0x0000($a1) ## 00000000
/* 00500 809943F0 3C068099 */ lui $a2, %hi(D_80994510) ## $a2 = 80990000
/* 00504 809943F4 24C64510 */ addiu $a2, $a2, %lo(D_80994510) ## $a2 = 80994510
/* 00508 809943F8 27A4002C */ addiu $a0, $sp, 0x002C ## $a0 = FFFFFFEC
/* 0050C 809943FC 240701B8 */ addiu $a3, $zero, 0x01B8 ## $a3 = 000001B8
/* 00510 80994400 0C031AB1 */ jal func_800C6AC4
/* 00514 80994404 00A08025 */ or $s0, $a1, $zero ## $s0 = 00000000
/* 00518 80994408 8FAF0044 */ lw $t7, 0x0044($sp)
/* 0051C 8099440C 0C024F61 */ jal func_80093D84
/* 00520 80994410 8DE40000 */ lw $a0, 0x0000($t7) ## 00000000
/* 00524 80994414 8E0202D0 */ lw $v0, 0x02D0($s0) ## 000002D0
/* 00528 80994418 3C19DA38 */ lui $t9, 0xDA38 ## $t9 = DA380000
/* 0052C 8099441C 37390003 */ ori $t9, $t9, 0x0003 ## $t9 = DA380003
/* 00530 80994420 24580008 */ addiu $t8, $v0, 0x0008 ## $t8 = 00000008
/* 00534 80994424 AE1802D0 */ sw $t8, 0x02D0($s0) ## 000002D0
/* 00538 80994428 AC590000 */ sw $t9, 0x0000($v0) ## 00000000
/* 0053C 8099442C 8FA80044 */ lw $t0, 0x0044($sp)
/* 00540 80994430 3C058099 */ lui $a1, %hi(D_80994520) ## $a1 = 80990000
/* 00544 80994434 24A54520 */ addiu $a1, $a1, %lo(D_80994520) ## $a1 = 80994520
/* 00548 80994438 8D040000 */ lw $a0, 0x0000($t0) ## 00000000
/* 0054C 8099443C 240601BE */ addiu $a2, $zero, 0x01BE ## $a2 = 000001BE
/* 00550 80994440 0C0346A2 */ jal Matrix_NewMtx
/* 00554 80994444 AFA20028 */ sw $v0, 0x0028($sp)
/* 00558 80994448 8FA30028 */ lw $v1, 0x0028($sp)
/* 0055C 8099444C 3C0B0500 */ lui $t3, 0x0500 ## $t3 = 05000000
/* 00560 80994450 256B1390 */ addiu $t3, $t3, 0x1390 ## $t3 = 05001390
/* 00564 80994454 AC620004 */ sw $v0, 0x0004($v1) ## 00000004
/* 00568 80994458 8E0202D0 */ lw $v0, 0x02D0($s0) ## 000002D0
/* 0056C 8099445C 3C0ADE00 */ lui $t2, 0xDE00 ## $t2 = DE000000
/* 00570 80994460 3C068099 */ lui $a2, %hi(D_80994530) ## $a2 = 80990000
/* 00574 80994464 24490008 */ addiu $t1, $v0, 0x0008 ## $t1 = 00000008
/* 00578 80994468 AE0902D0 */ sw $t1, 0x02D0($s0) ## 000002D0
/* 0057C 8099446C AC4B0004 */ sw $t3, 0x0004($v0) ## 00000004
/* 00580 80994470 AC4A0000 */ sw $t2, 0x0000($v0) ## 00000000
/* 00584 80994474 8FAC0044 */ lw $t4, 0x0044($sp)
/* 00588 80994478 24C64530 */ addiu $a2, $a2, %lo(D_80994530) ## $a2 = 80994530
/* 0058C 8099447C 27A4002C */ addiu $a0, $sp, 0x002C ## $a0 = FFFFFFEC
/* 00590 80994480 240701C1 */ addiu $a3, $zero, 0x01C1 ## $a3 = 000001C1
/* 00594 80994484 0C031AD5 */ jal func_800C6B54
/* 00598 80994488 8D850000 */ lw $a1, 0x0000($t4) ## 00000000
/* 0059C 8099448C 8FBF001C */ lw $ra, 0x001C($sp)
/* 005A0 80994490 8FB00018 */ lw $s0, 0x0018($sp)
/* 005A4 80994494 27BD0040 */ addiu $sp, $sp, 0x0040 ## $sp = 00000000
/* 005A8 80994498 03E00008 */ jr $ra
/* 005AC 8099449C 00000000 */ nop

View File

@ -1,57 +0,0 @@
glabel DoorAna_Init
/* 00008 80993EF8 27BDFFD8 */ addiu $sp, $sp, 0xFFD8 ## $sp = FFFFFFD8
/* 0000C 80993EFC AFBF001C */ sw $ra, 0x001C($sp)
/* 00010 80993F00 AFB00018 */ sw $s0, 0x0018($sp)
/* 00014 80993F04 AFA5002C */ sw $a1, 0x002C($sp)
/* 00018 80993F08 8482001C */ lh $v0, 0x001C($a0) ## 0000001C
/* 0001C 80993F0C A48000B8 */ sh $zero, 0x00B8($a0) ## 000000B8
/* 00020 80993F10 848E00B8 */ lh $t6, 0x00B8($a0) ## 000000B8
/* 00024 80993F14 304F0300 */ andi $t7, $v0, 0x0300 ## $t7 = 00000000
/* 00028 80993F18 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 0002C 80993F1C 11E0001B */ beq $t7, $zero, .L80993F8C
/* 00030 80993F20 A48E00B6 */ sh $t6, 0x00B6($a0) ## 000000B6
/* 00034 80993F24 30580200 */ andi $t8, $v0, 0x0200 ## $t8 = 00000000
/* 00038 80993F28 1300000C */ beq $t8, $zero, .L80993F5C
/* 0003C 80993F2C 8FA4002C */ lw $a0, 0x002C($sp)
/* 00040 80993F30 2605014C */ addiu $a1, $s0, 0x014C ## $a1 = 0000014C
/* 00044 80993F34 0C0170D9 */ jal ActorCollider_AllocCylinder
/* 00048 80993F38 AFA50020 */ sw $a1, 0x0020($sp)
/* 0004C 80993F3C 3C078099 */ lui $a3, %hi(D_809944C0) ## $a3 = 80990000
/* 00050 80993F40 8FA50020 */ lw $a1, 0x0020($sp)
/* 00054 80993F44 24E744C0 */ addiu $a3, $a3, %lo(D_809944C0) ## $a3 = 809944C0
/* 00058 80993F48 8FA4002C */ lw $a0, 0x002C($sp)
/* 0005C 80993F4C 0C01712B */ jal ActorCollider_InitCylinder
/* 00060 80993F50 02003025 */ or $a2, $s0, $zero ## $a2 = 00000000
/* 00064 80993F54 10000005 */ beq $zero, $zero, .L80993F6C
/* 00068 80993F58 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
.L80993F5C:
/* 0006C 80993F5C 8E190004 */ lw $t9, 0x0004($s0) ## 00000004
/* 00070 80993F60 37280010 */ ori $t0, $t9, 0x0010 ## $t0 = 00000010
/* 00074 80993F64 AE080004 */ sw $t0, 0x0004($s0) ## 00000004
/* 00078 80993F68 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
.L80993F6C:
/* 0007C 80993F6C 0C00B58B */ jal Actor_SetScale
/* 00080 80993F70 24050000 */ addiu $a1, $zero, 0x0000 ## $a1 = 00000000
/* 00084 80993F74 3C058099 */ lui $a1, %hi(func_80993FEC) ## $a1 = 80990000
/* 00088 80993F78 24A53FEC */ addiu $a1, $a1, %lo(func_80993FEC) ## $a1 = 80993FEC
/* 0008C 80993F7C 0C264FBC */ jal func_80993EF0
/* 00090 80993F80 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00094 80993F84 10000006 */ beq $zero, $zero, .L80993FA0
/* 00098 80993F88 A200001F */ sb $zero, 0x001F($s0) ## 0000001F
.L80993F8C:
/* 0009C 80993F8C 3C058099 */ lui $a1, %hi(func_80994124) ## $a1 = 80990000
/* 000A0 80993F90 24A54124 */ addiu $a1, $a1, %lo(func_80994124) ## $a1 = 80994124
/* 000A4 80993F94 0C264FBC */ jal func_80993EF0
/* 000A8 80993F98 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 000AC 80993F9C A200001F */ sb $zero, 0x001F($s0) ## 0000001F
.L80993FA0:
/* 000B0 80993FA0 8FBF001C */ lw $ra, 0x001C($sp)
/* 000B4 80993FA4 8FB00018 */ lw $s0, 0x0018($sp)
/* 000B8 80993FA8 27BD0028 */ addiu $sp, $sp, 0x0028 ## $sp = 00000000
/* 000BC 80993FAC 03E00008 */ jr $ra
/* 000C0 80993FB0 00000000 */ nop

View File

@ -1,24 +0,0 @@
glabel DoorAna_Update
/* 00494 80994384 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 00498 80994388 AFBF0014 */ sw $ra, 0x0014($sp)
/* 0049C 8099438C AFA40018 */ sw $a0, 0x0018($sp)
/* 004A0 80994390 AFA5001C */ sw $a1, 0x001C($sp)
/* 004A4 80994394 8C990198 */ lw $t9, 0x0198($a0) ## 00000198
/* 004A8 80994398 0320F809 */ jalr $ra, $t9
/* 004AC 8099439C 00000000 */ nop
/* 004B0 809943A0 8FA5001C */ lw $a1, 0x001C($sp)
/* 004B4 809943A4 84AE07A0 */ lh $t6, 0x07A0($a1) ## 000007A0
/* 004B8 809943A8 000E7880 */ sll $t7, $t6, 2
/* 004BC 809943AC 00AFC021 */ addu $t8, $a1, $t7
/* 004C0 809943B0 0C016A7D */ jal func_8005A9F4
/* 004C4 809943B4 8F040790 */ lw $a0, 0x0790($t8) ## 00000790
/* 004C8 809943B8 8FA90018 */ lw $t1, 0x0018($sp)
/* 004CC 809943BC 34018000 */ ori $at, $zero, 0x8000 ## $at = 00008000
/* 004D0 809943C0 00414021 */ addu $t0, $v0, $at
/* 004D4 809943C4 A52800B6 */ sh $t0, 0x00B6($t1) ## 000000B6
/* 004D8 809943C8 8FBF0014 */ lw $ra, 0x0014($sp)
/* 004DC 809943CC 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 004E0 809943D0 03E00008 */ jr $ra
/* 004E4 809943D4 00000000 */ nop

View File

@ -1,5 +0,0 @@
glabel func_80993EF0
/* 00000 80993EF0 03E00008 */ jr $ra
/* 00004 80993EF4 AC850198 */ sw $a1, 0x0198($a0) ## 00000198

View File

@ -1,90 +0,0 @@
glabel func_80993FEC
/* 000FC 80993FEC 27BDFFD0 */ addiu $sp, $sp, 0xFFD0 ## $sp = FFFFFFD0
/* 00100 80993FF0 AFBF0024 */ sw $ra, 0x0024($sp)
/* 00104 80993FF4 AFB00020 */ sw $s0, 0x0020($sp)
/* 00108 80993FF8 AFA50034 */ sw $a1, 0x0034($sp)
/* 0010C 80993FFC AFA0002C */ sw $zero, 0x002C($sp)
/* 00110 80994000 848E001C */ lh $t6, 0x001C($a0) ## 0000001C
/* 00114 80994004 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00118 80994008 3C018099 */ lui $at, %hi(D_80994540) ## $at = 80990000
/* 0011C 8099400C 31CF0200 */ andi $t7, $t6, 0x0200 ## $t7 = 00000000
/* 00120 80994010 55E00013 */ bnel $t7, $zero, .L80994060
/* 00124 80994014 9209015D */ lbu $t1, 0x015D($s0) ## 0000015D
/* 00128 80994018 C484008C */ lwc1 $f4, 0x008C($a0) ## 0000008C
/* 0012C 8099401C C4264540 */ lwc1 $f6, %lo(D_80994540)($at)
/* 00130 80994020 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 00134 80994024 4606203C */ c.lt.s $f4, $f6
/* 00138 80994028 00000000 */ nop
/* 0013C 8099402C 45020021 */ bc1fl .L809940B4
/* 00140 80994030 8FAD002C */ lw $t5, 0x002C($sp)
/* 00144 80994034 0C01B129 */ jal func_8006C4A4
/* 00148 80994038 24050005 */ addiu $a1, $zero, 0x0005 ## $a1 = 00000005
/* 0014C 8099403C 1040001C */ beq $v0, $zero, .L809940B0
/* 00150 80994040 24180001 */ addiu $t8, $zero, 0x0001 ## $t8 = 00000001
/* 00154 80994044 AFB8002C */ sw $t8, 0x002C($sp)
/* 00158 80994048 8E190004 */ lw $t9, 0x0004($s0) ## 00000004
/* 0015C 8099404C 2401FFEF */ addiu $at, $zero, 0xFFEF ## $at = FFFFFFEF
/* 00160 80994050 03214024 */ and $t0, $t9, $at
/* 00164 80994054 10000016 */ beq $zero, $zero, .L809940B0
/* 00168 80994058 AE080004 */ sw $t0, 0x0004($s0) ## 00000004
/* 0016C 8099405C 9209015D */ lbu $t1, 0x015D($s0) ## 0000015D
.L80994060:
/* 00170 80994060 2606014C */ addiu $a2, $s0, 0x014C ## $a2 = 0000014C
/* 00174 80994064 00C02825 */ or $a1, $a2, $zero ## $a1 = 0000014C
/* 00178 80994068 312A0002 */ andi $t2, $t1, 0x0002 ## $t2 = 00000000
/* 0017C 8099406C 11400008 */ beq $t2, $zero, .L80994090
/* 00180 80994070 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00184 80994074 240B0001 */ addiu $t3, $zero, 0x0001 ## $t3 = 00000001
/* 00188 80994078 AFAB002C */ sw $t3, 0x002C($sp)
/* 0018C 8099407C 8FA40034 */ lw $a0, 0x0034($sp)
/* 00190 80994080 0C0170EB */ jal ActorCollider_FreeCylinder
/* 00194 80994084 2605014C */ addiu $a1, $s0, 0x014C ## $a1 = 0000014C
/* 00198 80994088 1000000A */ beq $zero, $zero, .L809940B4
/* 0019C 8099408C 8FAD002C */ lw $t5, 0x002C($sp)
.L80994090:
/* 001A0 80994090 0C0189B7 */ jal ActorCollider_Cylinder_Update
/* 001A4 80994094 AFA60028 */ sw $a2, 0x0028($sp)
/* 001A8 80994098 8FA40034 */ lw $a0, 0x0034($sp)
/* 001AC 8099409C 3C010001 */ lui $at, 0x0001 ## $at = 00010000
/* 001B0 809940A0 34211E60 */ ori $at, $at, 0x1E60 ## $at = 00011E60
/* 001B4 809940A4 8FA60028 */ lw $a2, 0x0028($sp)
/* 001B8 809940A8 0C01767D */ jal Actor_CollisionCheck_SetAC
## CollisionCheck_setAC
/* 001BC 809940AC 00812821 */ addu $a1, $a0, $at
.L809940B0:
/* 001C0 809940B0 8FAD002C */ lw $t5, 0x002C($sp)
.L809940B4:
/* 001C4 809940B4 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 001C8 809940B8 51A00013 */ beql $t5, $zero, .L80994108
/* 001CC 809940BC 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 001D0 809940C0 860E001C */ lh $t6, 0x001C($s0) ## 0000001C
/* 001D4 809940C4 3C058099 */ lui $a1, %hi(func_80994124) ## $a1 = 80990000
/* 001D8 809940C8 24A54124 */ addiu $a1, $a1, %lo(func_80994124) ## $a1 = 80994124
/* 001DC 809940CC 31CFFCFF */ andi $t7, $t6, 0xFCFF ## $t7 = 00000000
/* 001E0 809940D0 0C264FBC */ jal func_80993EF0
/* 001E4 809940D4 A60F001C */ sh $t7, 0x001C($s0) ## 0000001C
/* 001E8 809940D8 3C078013 */ lui $a3, 0x8013 ## $a3 = 80130000
/* 001EC 809940DC 3C188013 */ lui $t8, 0x8013 ## $t8 = 80130000
/* 001F0 809940E0 24E733E0 */ addiu $a3, $a3, 0x33E0 ## $a3 = 801333E0
/* 001F4 809940E4 271833E8 */ addiu $t8, $t8, 0x33E8 ## $t8 = 801333E8
/* 001F8 809940E8 3C058013 */ lui $a1, 0x8013 ## $a1 = 80130000
/* 001FC 809940EC 24A533D4 */ addiu $a1, $a1, 0x33D4 ## $a1 = 801333D4
/* 00200 809940F0 AFB80014 */ sw $t8, 0x0014($sp)
/* 00204 809940F4 AFA70010 */ sw $a3, 0x0010($sp)
/* 00208 809940F8 24044802 */ addiu $a0, $zero, 0x4802 ## $a0 = 00004802
/* 0020C 809940FC 0C03DCE3 */ jal Audio_PlaySoundGeneral
/* 00210 80994100 24060004 */ addiu $a2, $zero, 0x0004 ## $a2 = 00000004
/* 00214 80994104 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
.L80994108:
/* 00218 80994108 0C00BD7C */ jal func_8002F5F0
/* 0021C 8099410C 8FA50034 */ lw $a1, 0x0034($sp)
/* 00220 80994110 8FBF0024 */ lw $ra, 0x0024($sp)
/* 00224 80994114 8FB00020 */ lw $s0, 0x0020($sp)
/* 00228 80994118 27BD0030 */ addiu $sp, $sp, 0x0030 ## $sp = 00000000
/* 0022C 8099411C 03E00008 */ jr $ra
/* 00230 80994120 00000000 */ nop

View File

@ -1,119 +0,0 @@
glabel func_80994124
/* 00234 80994124 27BDFFD8 */ addiu $sp, $sp, 0xFFD8 ## $sp = FFFFFFD8
/* 00238 80994128 AFBF001C */ sw $ra, 0x001C($sp)
/* 0023C 8099412C AFB00018 */ sw $s0, 0x0018($sp)
/* 00240 80994130 8CA31C44 */ lw $v1, 0x1C44($a1) ## 00001C44
/* 00244 80994134 00A03825 */ or $a3, $a1, $zero ## $a3 = 00000000
/* 00248 80994138 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 0024C 8099413C 3C053C23 */ lui $a1, 0x3C23 ## $a1 = 3C230000
/* 00250 80994140 3C063A83 */ lui $a2, 0x3A83 ## $a2 = 3A830000
/* 00254 80994144 34C6126F */ ori $a2, $a2, 0x126F ## $a2 = 3A83126F
/* 00258 80994148 34A5D70A */ ori $a1, $a1, 0xD70A ## $a1 = 3C23D70A
/* 0025C 8099414C 24840050 */ addiu $a0, $a0, 0x0050 ## $a0 = 00000050
/* 00260 80994150 AFA7002C */ sw $a3, 0x002C($sp)
/* 00264 80994154 0C01DE80 */ jal Math_ApproxF
/* 00268 80994158 AFA30024 */ sw $v1, 0x0024($sp)
/* 0026C 8099415C 8FA30024 */ lw $v1, 0x0024($sp)
/* 00270 80994160 10400055 */ beq $v0, $zero, .L809942B8
/* 00274 80994164 8FA7002C */ lw $a3, 0x002C($sp)
/* 00278 80994168 820E001F */ lb $t6, 0x001F($s0) ## 0000001F
/* 0027C 8099416C 3C0F0001 */ lui $t7, 0x0001 ## $t7 = 00010000
/* 00280 80994170 01E77821 */ addu $t7, $t7, $a3
/* 00284 80994174 11C0002F */ beq $t6, $zero, .L80994234
/* 00288 80994178 00E02025 */ or $a0, $a3, $zero ## $a0 = 00000000
/* 0028C 8099417C 81EF1E15 */ lb $t7, 0x1E15($t7) ## 00011E15
/* 00290 80994180 15E0002C */ bne $t7, $zero, .L80994234
/* 00294 80994184 00000000 */ nop
/* 00298 80994188 8C78067C */ lw $t8, 0x067C($v1) ## 0000067C
/* 0029C 8099418C 0018C800 */ sll $t9, $t8, 0
/* 002A0 80994190 07210028 */ bgez $t9, .L80994234
/* 002A4 80994194 00000000 */ nop
/* 002A8 80994198 8068084F */ lb $t0, 0x084F($v1) ## 0000084F
/* 002AC 8099419C 24050001 */ addiu $a1, $zero, 0x0001 ## $a1 = 00000001
/* 002B0 809941A0 240604FF */ addiu $a2, $zero, 0x04FF ## $a2 = 000004FF
/* 002B4 809941A4 15000023 */ bne $t0, $zero, .L80994234
/* 002B8 809941A8 00000000 */ nop
/* 002BC 809941AC 8602001C */ lh $v0, 0x001C($s0) ## 0000001C
/* 002C0 809941B0 AFA7002C */ sw $a3, 0x002C($sp)
/* 002C4 809941B4 00E02025 */ or $a0, $a3, $zero ## $a0 = 00000000
/* 002C8 809941B8 00021303 */ sra $v0, $v0, 12
/* 002CC 809941BC 30420007 */ andi $v0, $v0, 0x0007 ## $v0 = 00000000
/* 002D0 809941C0 2442FFFF */ addiu $v0, $v0, 0xFFFF ## $v0 = FFFFFFFF
/* 002D4 809941C4 0C0302BD */ jal func_800C0AF4
/* 002D8 809941C8 AFA20020 */ sw $v0, 0x0020($sp)
/* 002DC 809941CC C6040028 */ lwc1 $f4, 0x0028($s0) ## 00000028
/* 002E0 809941D0 3C038016 */ lui $v1, 0x8016 ## $v1 = 80160000
/* 002E4 809941D4 2463E660 */ addiu $v1, $v1, 0xE660 ## $v1 = 8015E660
/* 002E8 809941D8 E4641388 */ swc1 $f4, 0x1388($v1) ## 8015F9E8
/* 002EC 809941DC 86090016 */ lh $t1, 0x0016($s0) ## 00000016
/* 002F0 809941E0 8FA20020 */ lw $v0, 0x0020($sp)
/* 002F4 809941E4 8FA7002C */ lw $a3, 0x002C($sp)
/* 002F8 809941E8 A4691390 */ sh $t1, 0x1390($v1) ## 8015F9F0
/* 002FC 809941EC 860B001C */ lh $t3, 0x001C($s0) ## 0000001C
/* 00300 809941F0 3C0D8099 */ lui $t5, %hi(D_809944EC) ## $t5 = 80990000
/* 00304 809941F4 04410003 */ bgez $v0, .L80994204
/* 00308 809941F8 A06B1397 */ sb $t3, 0x1397($v1) ## 8015F9F7
/* 0030C 809941FC 86020018 */ lh $v0, 0x0018($s0) ## 00000018
/* 00310 80994200 24420001 */ addiu $v0, $v0, 0x0001 ## $v0 = 00000001
.L80994204:
/* 00314 80994204 00026040 */ sll $t4, $v0, 1
/* 00318 80994208 01AC6821 */ addu $t5, $t5, $t4
/* 0031C 8099420C 85AD44EC */ lh $t5, %lo(D_809944EC)($t5)
/* 00320 80994210 3C010001 */ lui $at, 0x0001 ## $at = 00010000
/* 00324 80994214 00270821 */ addu $at, $at, $a3
/* 00328 80994218 3C058099 */ lui $a1, %hi(func_809942D8) ## $a1 = 80990000
/* 0032C 8099421C 24A542D8 */ addiu $a1, $a1, %lo(func_809942D8) ## $a1 = 809942D8
/* 00330 80994220 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00334 80994224 0C264FBC */ jal func_80993EF0
/* 00338 80994228 A42D1E1A */ sh $t5, 0x1E1A($at) ## 00011E1A
/* 0033C 8099422C 10000023 */ beq $zero, $zero, .L809942BC
/* 00340 80994230 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
.L80994234:
/* 00344 80994234 0C023A62 */ jal func_8008E988
/* 00348 80994238 AFA30024 */ sw $v1, 0x0024($sp)
/* 0034C 8099423C 1440001D */ bne $v0, $zero, .L809942B4
/* 00350 80994240 8FA30024 */ lw $v1, 0x0024($sp)
/* 00354 80994244 8C62067C */ lw $v0, 0x067C($v1) ## 0000067C
/* 00358 80994248 3C010880 */ lui $at, 0x0880 ## $at = 08800000
/* 0035C 8099424C 00417024 */ and $t6, $v0, $at
/* 00360 80994250 15C00018 */ bne $t6, $zero, .L809942B4
/* 00364 80994254 3C014170 */ lui $at, 0x4170 ## $at = 41700000
/* 00368 80994258 44811000 */ mtc1 $at, $f2 ## $f2 = 15.00
/* 0036C 8099425C C6060090 */ lwc1 $f6, 0x0090($s0) ## 00000090
/* 00370 80994260 3C01C248 */ lui $at, 0xC248 ## $at = C2480000
/* 00374 80994264 4602303E */ c.le.s $f6, $f2
/* 00378 80994268 00000000 */ nop
/* 0037C 8099426C 45020012 */ bc1fl .L809942B8
/* 00380 80994270 A200001F */ sb $zero, 0x001F($s0) ## 0000001F
/* 00384 80994274 C6000094 */ lwc1 $f0, 0x0094($s0) ## 00000094
/* 00388 80994278 44814000 */ mtc1 $at, $f8 ## $f8 = -50.00
/* 0038C 8099427C 00000000 */ nop
/* 00390 80994280 4600403E */ c.le.s $f8, $f0
/* 00394 80994284 00000000 */ nop
/* 00398 80994288 4502000B */ bc1fl .L809942B8
/* 0039C 8099428C A200001F */ sb $zero, 0x001F($s0) ## 0000001F
/* 003A0 80994290 4602003E */ c.le.s $f0, $f2
/* 003A4 80994294 3C018000 */ lui $at, 0x8000 ## $at = 80000000
/* 003A8 80994298 00417825 */ or $t7, $v0, $at ## $t7 = 80000000
/* 003AC 8099429C 24180001 */ addiu $t8, $zero, 0x0001 ## $t8 = 00000001
/* 003B0 809942A0 45020005 */ bc1fl .L809942B8
/* 003B4 809942A4 A200001F */ sb $zero, 0x001F($s0) ## 0000001F
/* 003B8 809942A8 AC6F067C */ sw $t7, 0x067C($v1) ## 0000067C
/* 003BC 809942AC 10000002 */ beq $zero, $zero, .L809942B8
/* 003C0 809942B0 A218001F */ sb $t8, 0x001F($s0) ## 0000001F
.L809942B4:
/* 003C4 809942B4 A200001F */ sb $zero, 0x001F($s0) ## 0000001F
.L809942B8:
/* 003C8 809942B8 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
.L809942BC:
/* 003CC 809942BC 0C00B58B */ jal Actor_SetScale
/* 003D0 809942C0 8E050050 */ lw $a1, 0x0050($s0) ## 00000050
/* 003D4 809942C4 8FBF001C */ lw $ra, 0x001C($sp)
/* 003D8 809942C8 8FB00018 */ lw $s0, 0x0018($sp)
/* 003DC 809942CC 27BD0028 */ addiu $sp, $sp, 0x0028 ## $sp = 00000000
/* 003E0 809942D0 03E00008 */ jr $ra
/* 003E4 809942D4 00000000 */ nop

View File

@ -1,49 +0,0 @@
glabel func_809942D8
/* 003E8 809942D8 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0
/* 003EC 809942DC AFBF0014 */ sw $ra, 0x0014($sp)
/* 003F0 809942E0 C4860094 */ lwc1 $f6, 0x0094($a0) ## 00000094
/* 003F4 809942E4 44802000 */ mtc1 $zero, $f4 ## $f4 = 0.00
/* 003F8 809942E8 00803025 */ or $a2, $a0, $zero ## $a2 = 00000000
/* 003FC 809942EC 3C014170 */ lui $at, 0x4170 ## $at = 41700000
/* 00400 809942F0 4604303E */ c.le.s $f6, $f4
/* 00404 809942F4 00000000 */ nop
/* 00408 809942F8 4502001F */ bc1fl .L80994378
/* 0040C 809942FC 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00410 80994300 44814000 */ mtc1 $at, $f8 ## $f8 = 15.00
/* 00414 80994304 C48A0090 */ lwc1 $f10, 0x0090($a0) ## 00000090
/* 00418 80994308 460A403C */ c.lt.s $f8, $f10
/* 0041C 8099430C 00000000 */ nop
/* 00420 80994310 45020019 */ bc1fl .L80994378
/* 00424 80994314 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00428 80994318 8CAE1C44 */ lw $t6, 0x1C44($a1) ## 00001C44
/* 0042C 8099431C AFAE001C */ sw $t6, 0x001C($sp)
/* 00430 80994320 8484008A */ lh $a0, 0x008A($a0) ## 0000008A
/* 00434 80994324 0C01DE1C */ jal Math_Sins
## sins?
/* 00438 80994328 AFA60020 */ sw $a2, 0x0020($sp)
/* 0043C 8099432C 3C014170 */ lui $at, 0x4170 ## $at = 41700000
/* 00440 80994330 44818000 */ mtc1 $at, $f16 ## $f16 = 15.00
/* 00444 80994334 8FA60020 */ lw $a2, 0x0020($sp)
/* 00448 80994338 8FAF001C */ lw $t7, 0x001C($sp)
/* 0044C 8099433C 46100482 */ mul.s $f18, $f0, $f16
/* 00450 80994340 C4C40024 */ lwc1 $f4, 0x0024($a2) ## 00000024
/* 00454 80994344 46049180 */ add.s $f6, $f18, $f4
/* 00458 80994348 E5E60024 */ swc1 $f6, 0x0024($t7) ## 00000024
/* 0045C 8099434C 0C01DE0D */ jal Math_Coss
## coss?
/* 00460 80994350 84C4008A */ lh $a0, 0x008A($a2) ## 0000008A
/* 00464 80994354 3C014170 */ lui $at, 0x4170 ## $at = 41700000
/* 00468 80994358 44814000 */ mtc1 $at, $f8 ## $f8 = 15.00
/* 0046C 8099435C 8FA60020 */ lw $a2, 0x0020($sp)
/* 00470 80994360 8FB8001C */ lw $t8, 0x001C($sp)
/* 00474 80994364 46080282 */ mul.s $f10, $f0, $f8
/* 00478 80994368 C4D0002C */ lwc1 $f16, 0x002C($a2) ## 0000002C
/* 0047C 8099436C 46105480 */ add.s $f18, $f10, $f16
/* 00480 80994370 E712002C */ swc1 $f18, 0x002C($t8) ## 0000002C
/* 00484 80994374 8FBF0014 */ lw $ra, 0x0014($sp)
.L80994378:
/* 00488 80994378 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000
/* 0048C 8099437C 03E00008 */ jr $ra
/* 00490 80994380 00000000 */ nop

View File

@ -1,20 +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 purposee registers
.section .data
glabel Door_Ana_InitVars
.word 0x009B0700, 0x02000000, 0x00020000, 0x0000019C
.word DoorAna_Init
.word DoorAna_Destroy
.word DoorAna_Update
.word DoorAna_Draw
glabel D_809944C0
.word 0x0A000900, 0x00010000, 0x02000000, 0x00000000, 0x00000000, 0x00000048, 0x00000000, 0x00010000, 0x0032000A, 0x00000000, 0x00000000
glabel D_809944EC
.word 0x036D003F, 0x0598059C, 0x05A005A4, 0x05A805AC, 0x05B005B4, 0x05B805BC, 0x05C005C4, 0x05FC0000, 0x00000000

View File

@ -1,11 +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 purposee registers
.section .rodata
glabel D_80994550
.incbin "baserom/ovl_Door_Ana", 0x660, 0x00000090

View File

@ -1,28 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purposee registers
.section .rodata
glabel D_80994510
.asciz "../z_door_ana.c"
.balign 4
glabel D_80994520
.asciz "../z_door_ana.c"
.balign 4
glabel D_80994530
.asciz "../z_door_ana.c"
.balign 4
glabel D_80994540
.word 0x471C4000, 0x00000000, 0x00000000, 0x00000000

View File

@ -637,6 +637,7 @@ f32 func_800437F0(f32, f32);
// ? func_8005A7A8(?);
// ? func_8005A8C4(?);
s16 func_8005A970(u32 gl790);
s16 func_8005A9F4(Camera* camera);
// ? func_8005AA90(?);
// ? func_8005AC48(?);
// ? func_8005AC60(?);
@ -788,6 +789,7 @@ void Audio_PlaySoundAtPosition(GlobalContext* globalCtx, Vec3f* pos2, s32 radius
// ? func_8006C3A0(?);
// ? func_8006C3D0(?);
void func_8006C438(GlobalContext* globalCtx, s16 arg1);
s32 func_8006C4A4(GlobalContext*, s32);
// ? func_8006C510(?);
// ? func_8006C5A8(?);
// ? func_8006CBAC(?);
@ -1375,7 +1377,7 @@ void func_800C0704(GlobalContext*, s16, f32);
void func_800C0C88(GlobalContext *globalCtx);
// ? func_800C0A44(?);
// ? func_800C0A88(?);
// ? func_800C0AF4(?);
void func_800C0AF4(GlobalContext*, s8, s16);
void func_800C0B60(GlobalContext* globalCtx);
void func_800C0BB4(GlobalContext* globalCtx);
// ? func_800C0CB8(?);

View File

@ -394,7 +394,9 @@ typedef struct
/* 0x0846 */ u8 unk_846;
/* 0x0847 */ char unk_847[0x004];
/* 0x084B */ s8 unk_84B[UNK_SIZE];
/* 0x084C */ char unk_84C[0x054];
/* 0x084C */ char unk_84C[0x003];
/* 0x084F */ s8 unk_84F;
/* 0x0850 */ char unk_850[0x050];
/* 0x08A0 */ u8 unk_8A0;
/* 0x08A1 */ u8 unk_8A1;
/* 0x08A2 */ u16 unk_8A2;

2
spec
View File

@ -1880,8 +1880,6 @@ endseg
beginseg
name "ovl_Door_Ana"
include "build/src/overlays/actors/ovl_Door_Ana/z_door_ana.o"
include "build/data/overlays/actors/z_door_ana.data.o"
include "build/data/overlays/actors/z_door_ana.rodata.o"
include "build/data/overlays/actors/z_door_ana.reloc.o"
endseg

View File

@ -1,14 +1,26 @@
/*
* File: z_door_ana.c
* Overlay: ovl_Door_Ana
* Description: Grottos Entrances/Exits
*/
#include "z_door_ana.h"
#include "macros.h"
#define ROOM 0x00
#define FLAGS 0x02000000
void DoorAna_Init(DoorAna* this, GlobalContext* globalCtx);
void DoorAna_Destroy(DoorAna* this, GlobalContext* globalCtx);
void DoorAna_Update(DoorAna* this, GlobalContext* globalCtx);
void DoorAna_Draw(DoorAna* this, GlobalContext* globalCtx);
static void DoorAna_Init(DoorAna* this, GlobalContext* globalCtx);
static void DoorAna_Destroy(DoorAna* this, GlobalContext* globalCtx);
static void DoorAna_Update(DoorAna* this, GlobalContext* globalCtx);
static void DoorAna_Draw(DoorAna* this, GlobalContext* globalCtx);
static void func_80993EF0(DoorAna* this, ActorFunc func);
static void func_80993FEC(DoorAna* this, GlobalContext* globalCtx);
static void func_80994124(DoorAna* this, GlobalContext* globalCtx);
static void func_809942D8(DoorAna* this, GlobalContext* globalCtx);
/*
const ActorInit Door_Ana_InitVars =
{
ACTOR_DOOR_ANA,
@ -22,19 +34,184 @@ const ActorInit Door_Ana_InitVars =
(ActorFunc)DoorAna_Update,
(ActorFunc)DoorAna_Draw,
};
*/
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Door_Ana/func_80993EF0.s")
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Door_Ana/DoorAna_Init.s")
// initial collision data
static ColliderCylinderInit colliderInit =
{
0x0A, 0x00, 0x09, 0x00,
0x00, 0x01, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00,
0x00000000, 0x00, 0x00,
0x00, 0x00, 0x00000048,
0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x00, 0x00,
0x0032, 0x000A, 0x0000,
0x0000, 0x0000, 0x0000
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Door_Ana/DoorAna_Destroy.s")
// array of entrance table entries to grotto destinations
static s16 entrances[] = {
0x036D, 0x003F, 0x0598, 0x059C,
0x05A0, 0x05A4, 0x05A8, 0x05AC,
0x05B0, 0x05B4, 0x05B8, 0x05BC,
0x05C0, 0x05C4, 0x05FC
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Door_Ana/func_80993FEC.s")
// display list
extern Gfx* D_05001390;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Door_Ana/func_80994124.s")
// sets current actionFunc to be ran on next update call
static void func_80993EF0(DoorAna* this, ActorFunc func)
{
this->actionFunc = func;
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Door_Ana/func_809942D8.s")
static void DoorAna_Init(DoorAna* this, GlobalContext* globalCtx)
{
ColliderCylinderMain* collider;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Door_Ana/DoorAna_Update.s")
this->actor.shape.rot.z = 0;
this->actor.shape.rot.y = this->actor.shape.rot.z;
// init block for grottos that are initially "hidden" (require explosives/hammer/song of storms to open)
if ((this->actor.params & 0x300) != 0)
{
// only allocate collider for grottos that need bombing/hammering open
if ((this->actor.params & 0x200) != 0)
{
collider = &this->collider;
ActorCollider_AllocCylinder(globalCtx, collider);
ActorCollider_InitCylinder(globalCtx, collider, &this->actor, &colliderInit);
}
else
{
this->actor.flags |= 0x10;
}
Actor_SetScale(&this->actor, 0);
func_80993EF0(this, (ActorFunc)&func_80993FEC);
this->actor.unk_1F = 0;
return;
}
func_80993EF0(this, (ActorFunc)&func_80994124);
this->actor.unk_1F = 0;
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Door_Ana/DoorAna_Draw.s")
static void DoorAna_Destroy(DoorAna* this, GlobalContext* globalCtx)
{
// free collider if it has one
if ((this->actor.params & 0x200) != 0)
{
ActorCollider_FreeCylinder(globalCtx, &this->collider);
}
}
// update routine for grottos that are currently "hidden"/unopened
static void func_80993FEC(DoorAna* this, GlobalContext* globalCtx)
{
bool openGrotto = false;
if ((this->actor.params & 0x200) == 0)
{
// opening with song of storms
if (this->actor.waterSurfaceDist < 40000.0f && func_8006C4A4(globalCtx, 5) != 0)
{
openGrotto = true;
this->actor.flags &= -0x11;
}
}
else
{
// bombing/hammering open a grotto
if ((this->collider.base.collideFlags & 2) != 0)
{
openGrotto = true;
ActorCollider_FreeCylinder(globalCtx, &this->collider);
}
else
{
ActorCollider_Cylinder_Update(&this->actor, &this->collider);
Actor_CollisionCheck_SetAC(globalCtx, &globalCtx->sub_11E60, &this->collider);
}
}
// open the grotto
if (openGrotto)
{
this->actor.params &= 0xFCFF;
func_80993EF0(this, (ActorFunc)&func_80994124);
Audio_PlaySoundGeneral(0x4802, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
}
func_8002F5F0(&this->actor, globalCtx);
}
// update routine for grottos that are open
static void func_80994124(DoorAna* this, GlobalContext* globalCtx)
{
Player* player;
s32 destinationIdx;
player = PLAYER;
if (Math_ApproxF(&this->actor.scale.x, 0.01f, 0.001f) != 0)
{
if ((this->actor.unk_1F != 0) && (globalCtx->sceneLoadFlag == 0) &&
(player->stateFlags1 & 0x80000000) && (player->unk_84F == 0))
{
destinationIdx = ((this->actor.params >> 0xC) & 7) - 1;
func_800C0AF4(globalCtx, 1, 0x4FF);
gSaveContext.respawn[RESPAWN_MODE_RETURN].pos.y = this->actor.posRot.pos.y;
gSaveContext.respawn[RESPAWN_MODE_RETURN].yaw = this->actor.initPosRot.rot.y;
gSaveContext.respawn[RESPAWN_MODE_RETURN].data = this->actor.params & 0xFFFF;
if (destinationIdx < 0)
{
destinationIdx = this->actor.initPosRot.rot.z + 1;
}
globalCtx->nextEntranceIndex = entrances[destinationIdx];
func_80993EF0(this, (ActorFunc)&func_809942D8);
}
else
{
if (func_8008E988(globalCtx) == 0 && !(player->stateFlags1 & 0x8800000) &&
this->actor.xzDistanceFromLink <= 15.0f && -50.0f <= this->actor.yDistanceFromLink &&
this->actor.yDistanceFromLink <= 15.0f)
{
player->stateFlags1 |= 0x80000000;
this->actor.unk_1F = 1;
}
else
{
this->actor.unk_1F = 0;
}
}
}
Actor_SetScale(&this->actor, this->actor.scale.x);
}
// update function for after the player has triggered the grotto
static void func_809942D8(DoorAna* this, GlobalContext* globalCtx)
{
Player* player;
if (this->actor.yDistanceFromLink <= 0.0f && 15.0f < this->actor.xzDistanceFromLink)
{
player = PLAYER;
player->actor.posRot.pos.x = Math_Sins(this->actor.rotTowardsLinkY) * 15.0f + this->actor.posRot.pos.x;
player->actor.posRot.pos.z = Math_Coss(this->actor.rotTowardsLinkY) * 15.0f + this->actor.posRot.pos.z;
}
}
static void DoorAna_Update(DoorAna* this, GlobalContext* globalCtx)
{
this->actionFunc(this, globalCtx);
// changes the grottos facing angle based on camera angle
this->actor.shape.rot.y = func_8005A9F4(globalCtx->cameraCtx.activeCameraPtrs[globalCtx->cameraCtx.unk_5C0]) + 0x8000;
}
static void DoorAna_Draw(DoorAna* this, GlobalContext* globalCtx)
{
GraphicsContext* gfxCtx = globalCtx->state.gfxCtx;
Gfx** dList = &D_05001390; // required for stack placement?
Gfx* gfxArr[3];
func_800C6AC4(gfxArr, globalCtx->state.gfxCtx, "../z_door_ana.c", 0x1B8);
func_80093D84(globalCtx->state.gfxCtx);
gSPMatrix(gfxCtx->polyXlu.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_door_ana.c", 0x1BE), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(gfxCtx->polyXlu.p++, dList);
func_800C6B54(gfxArr, globalCtx->state.gfxCtx, "../z_door_ana.c", 0x1C1);
}

View File

@ -7,7 +7,8 @@
typedef struct
{
/* 0x0000 */ Actor actor;
/* 0x014C */ char unk_14C[0x50];
/* 0x014C */ ColliderCylinderMain collider;
/* 0x0198 */ ActorFunc actionFunc;
} DoorAna; // size = 0x019C
extern const ActorInit Door_Ana_InitVars;

@ -1 +1 @@
Subproject commit 4f9639445655f9754214dcb50821b046a316d70e
Subproject commit 72e492e908c1231b4b6269492a513bbdcc75498e