From 97538a2f14c2b1e390a93a8499128f73543ab3d7 Mon Sep 17 00:00:00 2001 From: Thar0 <17233964+Thar0@users.noreply.github.com> Date: Wed, 18 Mar 2020 14:59:46 +0000 Subject: [PATCH 1/4] ovl_Door_Ana OK --- .../actors/ovl_Door_Ana/DoorAna_Destroy.s | 19 -- .../actors/ovl_Door_Ana/DoorAna_Draw.s | 52 ----- .../actors/ovl_Door_Ana/DoorAna_Init.s | 57 ----- .../actors/ovl_Door_Ana/DoorAna_Update.s | 24 -- .../actors/ovl_Door_Ana/func_80993EF0.s | 5 - .../actors/ovl_Door_Ana/func_80993FEC.s | 90 -------- .../actors/ovl_Door_Ana/func_80994124.s | 119 ---------- .../actors/ovl_Door_Ana/func_809942D8.s | 49 ----- data/overlays/actors/z_door_ana.data.s | 20 -- data/overlays/actors/z_door_ana.reloc.s | 11 - data/overlays/actors/z_door_ana.rodata.s | 28 --- include/functions.h | 4 +- include/z64actor.h | 4 +- spec | 2 - src/overlays/actors/ovl_Door_Ana/z_door_ana.c | 205 ++++++++++++++++-- src/overlays/actors/ovl_Door_Ana/z_door_ana.h | 3 +- tools/ZAP2 | 2 +- 17 files changed, 200 insertions(+), 494 deletions(-) delete mode 100644 asm/non_matchings/overlays/actors/ovl_Door_Ana/DoorAna_Destroy.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Door_Ana/DoorAna_Draw.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Door_Ana/DoorAna_Init.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Door_Ana/DoorAna_Update.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Door_Ana/func_80993EF0.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Door_Ana/func_80993FEC.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Door_Ana/func_80994124.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Door_Ana/func_809942D8.s delete mode 100644 data/overlays/actors/z_door_ana.data.s delete mode 100644 data/overlays/actors/z_door_ana.reloc.s delete mode 100644 data/overlays/actors/z_door_ana.rodata.s diff --git a/asm/non_matchings/overlays/actors/ovl_Door_Ana/DoorAna_Destroy.s b/asm/non_matchings/overlays/actors/ovl_Door_Ana/DoorAna_Destroy.s deleted file mode 100644 index 0d91f670c..000000000 --- a/asm/non_matchings/overlays/actors/ovl_Door_Ana/DoorAna_Destroy.s +++ /dev/null @@ -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 - - diff --git a/asm/non_matchings/overlays/actors/ovl_Door_Ana/DoorAna_Draw.s b/asm/non_matchings/overlays/actors/ovl_Door_Ana/DoorAna_Draw.s deleted file mode 100644 index 50ebb191c..000000000 --- a/asm/non_matchings/overlays/actors/ovl_Door_Ana/DoorAna_Draw.s +++ /dev/null @@ -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 - diff --git a/asm/non_matchings/overlays/actors/ovl_Door_Ana/DoorAna_Init.s b/asm/non_matchings/overlays/actors/ovl_Door_Ana/DoorAna_Init.s deleted file mode 100644 index e84ebf365..000000000 --- a/asm/non_matchings/overlays/actors/ovl_Door_Ana/DoorAna_Init.s +++ /dev/null @@ -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 - - diff --git a/asm/non_matchings/overlays/actors/ovl_Door_Ana/DoorAna_Update.s b/asm/non_matchings/overlays/actors/ovl_Door_Ana/DoorAna_Update.s deleted file mode 100644 index 8f3efc449..000000000 --- a/asm/non_matchings/overlays/actors/ovl_Door_Ana/DoorAna_Update.s +++ /dev/null @@ -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 - - diff --git a/asm/non_matchings/overlays/actors/ovl_Door_Ana/func_80993EF0.s b/asm/non_matchings/overlays/actors/ovl_Door_Ana/func_80993EF0.s deleted file mode 100644 index bf19e8549..000000000 --- a/asm/non_matchings/overlays/actors/ovl_Door_Ana/func_80993EF0.s +++ /dev/null @@ -1,5 +0,0 @@ -glabel func_80993EF0 -/* 00000 80993EF0 03E00008 */ jr $ra -/* 00004 80993EF4 AC850198 */ sw $a1, 0x0198($a0) ## 00000198 - - diff --git a/asm/non_matchings/overlays/actors/ovl_Door_Ana/func_80993FEC.s b/asm/non_matchings/overlays/actors/ovl_Door_Ana/func_80993FEC.s deleted file mode 100644 index e3b9bd45b..000000000 --- a/asm/non_matchings/overlays/actors/ovl_Door_Ana/func_80993FEC.s +++ /dev/null @@ -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 - - diff --git a/asm/non_matchings/overlays/actors/ovl_Door_Ana/func_80994124.s b/asm/non_matchings/overlays/actors/ovl_Door_Ana/func_80994124.s deleted file mode 100644 index 79f7836cb..000000000 --- a/asm/non_matchings/overlays/actors/ovl_Door_Ana/func_80994124.s +++ /dev/null @@ -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 - - diff --git a/asm/non_matchings/overlays/actors/ovl_Door_Ana/func_809942D8.s b/asm/non_matchings/overlays/actors/ovl_Door_Ana/func_809942D8.s deleted file mode 100644 index e10cdfadb..000000000 --- a/asm/non_matchings/overlays/actors/ovl_Door_Ana/func_809942D8.s +++ /dev/null @@ -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 - - diff --git a/data/overlays/actors/z_door_ana.data.s b/data/overlays/actors/z_door_ana.data.s deleted file mode 100644 index e61713ef3..000000000 --- a/data/overlays/actors/z_door_ana.data.s +++ /dev/null @@ -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 - diff --git a/data/overlays/actors/z_door_ana.reloc.s b/data/overlays/actors/z_door_ana.reloc.s deleted file mode 100644 index db0febcfa..000000000 --- a/data/overlays/actors/z_door_ana.reloc.s +++ /dev/null @@ -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 diff --git a/data/overlays/actors/z_door_ana.rodata.s b/data/overlays/actors/z_door_ana.rodata.s deleted file mode 100644 index e43519616..000000000 --- a/data/overlays/actors/z_door_ana.rodata.s +++ /dev/null @@ -1,28 +0,0 @@ -.include "macro.inc" - - # assembler directives - .set noat # allow manual use of $at - .set noreorder # don't insert nops after branches - .set gp=64 # allow use of 64-bit general 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 - - diff --git a/include/functions.h b/include/functions.h index 7f58b5b7b..3562b8969 100644 --- a/include/functions.h +++ b/include/functions.h @@ -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(?); diff --git a/include/z64actor.h b/include/z64actor.h index 3a288d436..a20382856 100644 --- a/include/z64actor.h +++ b/include/z64actor.h @@ -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; diff --git a/spec b/spec index bcb527f47..3e8dd4ee7 100644 --- a/spec +++ b/spec @@ -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 diff --git a/src/overlays/actors/ovl_Door_Ana/z_door_ana.c b/src/overlays/actors/ovl_Door_Ana/z_door_ana.c index c2a0716d7..0febcd158 100644 --- a/src/overlays/actors/ovl_Door_Ana/z_door_ana.c +++ b/src/overlays/actors/ovl_Door_Ana/z_door_ana.c @@ -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); +} \ No newline at end of file diff --git a/src/overlays/actors/ovl_Door_Ana/z_door_ana.h b/src/overlays/actors/ovl_Door_Ana/z_door_ana.h index db3fd5aa2..d80dc2c27 100644 --- a/src/overlays/actors/ovl_Door_Ana/z_door_ana.h +++ b/src/overlays/actors/ovl_Door_Ana/z_door_ana.h @@ -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; diff --git a/tools/ZAP2 b/tools/ZAP2 index 4f9639445..72e492e90 160000 --- a/tools/ZAP2 +++ b/tools/ZAP2 @@ -1 +1 @@ -Subproject commit 4f9639445655f9754214dcb50821b046a316d70e +Subproject commit 72e492e908c1231b4b6269492a513bbdcc75498e From 44520cbba42b8845c525fbd40d07b1bb3f86fd48 Mon Sep 17 00:00:00 2001 From: Thar0 <17233964+Thar0@users.noreply.github.com> Date: Wed, 18 Mar 2020 15:04:26 +0000 Subject: [PATCH 2/4] Remove macros include from z_door_ana.c, already included in header --- src/overlays/actors/ovl_Door_Ana/z_door_ana.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/overlays/actors/ovl_Door_Ana/z_door_ana.c b/src/overlays/actors/ovl_Door_Ana/z_door_ana.c index 0febcd158..fc3c26ca1 100644 --- a/src/overlays/actors/ovl_Door_Ana/z_door_ana.c +++ b/src/overlays/actors/ovl_Door_Ana/z_door_ana.c @@ -5,7 +5,6 @@ */ #include "z_door_ana.h" -#include "macros.h" #define ROOM 0x00 #define FLAGS 0x02000000 From 50a0a5ff7fd41e2db3fe3a8f74773e9c8533e54c Mon Sep 17 00:00:00 2001 From: Thar0 <17233964+Thar0@users.noreply.github.com> Date: Wed, 18 Mar 2020 18:58:55 +0000 Subject: [PATCH 3/4] Cleanups, Named functions --- src/overlays/actors/ovl_Door_Ana/z_door_ana.c | 42 ++++++++++--------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/src/overlays/actors/ovl_Door_Ana/z_door_ana.c b/src/overlays/actors/ovl_Door_Ana/z_door_ana.c index fc3c26ca1..53641c4f1 100644 --- a/src/overlays/actors/ovl_Door_Ana/z_door_ana.c +++ b/src/overlays/actors/ovl_Door_Ana/z_door_ana.c @@ -14,11 +14,11 @@ 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 DoorAna_SetupAction(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); +static void DoorAna_Update_Hidden(DoorAna* this, GlobalContext* globalCtx); +static void DoorAna_Update_Open(DoorAna* this, GlobalContext* globalCtx); +static void DoorAna_Update_Entering(DoorAna* this, GlobalContext* globalCtx); const ActorInit Door_Ana_InitVars = { @@ -60,7 +60,7 @@ static s16 entrances[] = { extern Gfx* D_05001390; // sets current actionFunc to be ran on next update call -static void func_80993EF0(DoorAna* this, ActorFunc func) +static void DoorAna_SetupAction(DoorAna* this, ActorFunc func) { this->actionFunc = func; } @@ -86,12 +86,14 @@ static void DoorAna_Init(DoorAna* this, GlobalContext* globalCtx) this->actor.flags |= 0x10; } Actor_SetScale(&this->actor, 0); - func_80993EF0(this, (ActorFunc)&func_80993FEC); - this->actor.unk_1F = 0; - return; + DoorAna_SetupAction(this, (ActorFunc)&DoorAna_Update_Hidden); + } + else + { + DoorAna_SetupAction(this, (ActorFunc)&DoorAna_Update_Open); } - func_80993EF0(this, (ActorFunc)&func_80994124); this->actor.unk_1F = 0; + } static void DoorAna_Destroy(DoorAna* this, GlobalContext* globalCtx) @@ -104,7 +106,7 @@ static void DoorAna_Destroy(DoorAna* this, GlobalContext* globalCtx) } // update routine for grottos that are currently "hidden"/unopened -static void func_80993FEC(DoorAna* this, GlobalContext* globalCtx) +static void DoorAna_Update_Hidden(DoorAna* this, GlobalContext* globalCtx) { bool openGrotto = false; if ((this->actor.params & 0x200) == 0) @@ -113,7 +115,7 @@ static void func_80993FEC(DoorAna* this, GlobalContext* globalCtx) if (this->actor.waterSurfaceDist < 40000.0f && func_8006C4A4(globalCtx, 5) != 0) { openGrotto = true; - this->actor.flags &= -0x11; + this->actor.flags &= ~0x10; } } else @@ -133,15 +135,15 @@ static void func_80993FEC(DoorAna* this, GlobalContext* globalCtx) // 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); + this->actor.params &= ~0x0300; + DoorAna_SetupAction(this, (ActorFunc)&DoorAna_Update_Open); + Audio_PlaySoundGeneral(NA_SE_SY_CORRECT_CHIME, &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) +static void DoorAna_Update_Open(DoorAna* this, GlobalContext* globalCtx) { Player* player; s32 destinationIdx; @@ -162,7 +164,7 @@ static void func_80994124(DoorAna* this, GlobalContext* globalCtx) destinationIdx = this->actor.initPosRot.rot.z + 1; } globalCtx->nextEntranceIndex = entrances[destinationIdx]; - func_80993EF0(this, (ActorFunc)&func_809942D8); + DoorAna_SetupAction(this, (ActorFunc)&DoorAna_Update_Entering); } else { @@ -183,7 +185,7 @@ static void func_80994124(DoorAna* this, GlobalContext* globalCtx) } // update function for after the player has triggered the grotto -static void func_809942D8(DoorAna* this, GlobalContext* globalCtx) +static void DoorAna_Update_Entering(DoorAna* this, GlobalContext* globalCtx) { Player* player; @@ -208,9 +210,9 @@ static void DoorAna_Draw(DoorAna* this, GlobalContext* globalCtx) Gfx** dList = &D_05001390; // required for stack placement? Gfx* gfxArr[3]; - func_800C6AC4(gfxArr, globalCtx->state.gfxCtx, "../z_door_ana.c", 0x1B8); + func_800C6AC4(gfxArr, globalCtx->state.gfxCtx, "../z_door_ana.c", 440); 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); + gSPMatrix(gfxCtx->polyXlu.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_door_ana.c", 446), 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); + func_800C6B54(gfxArr, globalCtx->state.gfxCtx, "../z_door_ana.c", 449); } \ No newline at end of file From b5d43886547a142abc3bacfee63bcf053bfb0a2a Mon Sep 17 00:00:00 2001 From: Thar0 <17233964+Thar0@users.noreply.github.com> Date: Wed, 18 Mar 2020 19:04:09 +0000 Subject: [PATCH 4/4] Use generated reloc --- spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec b/spec index 3e8dd4ee7..1a3b075a9 100644 --- a/spec +++ b/spec @@ -1880,7 +1880,7 @@ 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.reloc.o" + include "build/src/overlays/actors/ovl_Door_Ana/z_door_ana_reloc.o" endseg beginseg