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

Bg_Mori_Kaitenkabe (#410)

* Darkmeiro decompilation

Bg_Gnd_Darkmeiro decompiled, matched, and documented.

* give this a shot

* fix conflict

* one more try

* spinny wall

* cleanup

* wait for mori tex

* merge and better (?) names
This commit is contained in:
petrie911 2020-10-03 21:18:41 -05:00 committed by GitHub
parent e270cd96bf
commit 686b44d8f8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 164 additions and 510 deletions

View File

@ -1,14 +0,0 @@
glabel BgMoriKaitenkabe_Destroy
/* 0014C 808A4F0C 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 00150 808A4F10 AFA40018 */ sw $a0, 0x0018($sp)
/* 00154 808A4F14 8FAE0018 */ lw $t6, 0x0018($sp)
/* 00158 808A4F18 AFBF0014 */ sw $ra, 0x0014($sp)
/* 0015C 808A4F1C 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 00160 808A4F20 24A50810 */ addiu $a1, $a1, 0x0810 ## $a1 = 00000810
/* 00164 808A4F24 0C00FB56 */ jal DynaPolyInfo_Free
## DynaPolyInfo_delReserve
/* 00168 808A4F28 8DC6014C */ lw $a2, 0x014C($t6) ## 0000014C
/* 0016C 808A4F2C 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00170 808A4F30 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 00174 808A4F34 03E00008 */ jr $ra
/* 00178 808A4F38 00000000 */ nop

View File

@ -1,80 +0,0 @@
.rdata
glabel D_808A53E0
.asciz "殿(arg_data : 0x%04x) \n"
.balign 4
glabel D_808A5420
.asciz " (%s %d)\n"
.balign 4
glabel D_808A5440
.asciz "../z_bg_mori_kaitenkabe.c"
.balign 4
.text
glabel BgMoriKaitenkabe_Init
/* 00070 808A4E30 27BDFFD0 */ addiu $sp, $sp, 0xFFD0 ## $sp = FFFFFFD0
/* 00074 808A4E34 AFB00018 */ sw $s0, 0x0018($sp)
/* 00078 808A4E38 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 0007C 808A4E3C AFBF001C */ sw $ra, 0x001C($sp)
/* 00080 808A4E40 AFA50034 */ sw $a1, 0x0034($sp)
/* 00084 808A4E44 AFA00024 */ sw $zero, 0x0024($sp)
/* 00088 808A4E48 3C04808A */ lui $a0, %hi(D_808A53E0) ## $a0 = 808A0000
/* 0008C 808A4E4C 248453E0 */ addiu $a0, $a0, %lo(D_808A53E0) ## $a0 = 808A53E0
/* 00090 808A4E50 0C00084C */ jal osSyncPrintf
/* 00094 808A4E54 8605001C */ lh $a1, 0x001C($s0) ## 0000001C
/* 00098 808A4E58 3C05808A */ lui $a1, %hi(D_808A53D0) ## $a1 = 808A0000
/* 0009C 808A4E5C 24A553D0 */ addiu $a1, $a1, %lo(D_808A53D0) ## $a1 = 808A53D0
/* 000A0 808A4E60 0C01E037 */ jal Actor_ProcessInitChain
/* 000A4 808A4E64 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 000A8 808A4E68 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 000AC 808A4E6C 0C010D20 */ jal DynaPolyInfo_SetActorMove
/* 000B0 808A4E70 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
/* 000B4 808A4E74 3C040600 */ lui $a0, 0x0600 ## $a0 = 06000000
/* 000B8 808A4E78 248463B8 */ addiu $a0, $a0, 0x63B8 ## $a0 = 060063B8
/* 000BC 808A4E7C 0C010620 */ jal DynaPolyInfo_Alloc
/* 000C0 808A4E80 27A50024 */ addiu $a1, $sp, 0x0024 ## $a1 = FFFFFFF4
/* 000C4 808A4E84 8FA40034 */ lw $a0, 0x0034($sp)
/* 000C8 808A4E88 02003025 */ or $a2, $s0, $zero ## $a2 = 00000000
/* 000CC 808A4E8C 8FA70024 */ lw $a3, 0x0024($sp)
/* 000D0 808A4E90 0C00FA9D */ jal DynaPolyInfo_RegisterActor
## DynaPolyInfo_setActor
/* 000D4 808A4E94 24850810 */ addiu $a1, $a0, 0x0810 ## $a1 = 00000810
/* 000D8 808A4E98 AE02014C */ sw $v0, 0x014C($s0) ## 0000014C
/* 000DC 808A4E9C 8FA40034 */ lw $a0, 0x0034($sp)
/* 000E0 808A4EA0 3C010001 */ lui $at, 0x0001 ## $at = 00010000
/* 000E4 808A4EA4 342117A4 */ ori $at, $at, 0x17A4 ## $at = 000117A4
/* 000E8 808A4EA8 24050073 */ addiu $a1, $zero, 0x0073 ## $a1 = 00000073
/* 000EC 808A4EAC 0C02604B */ jal Object_GetIndex
## ObjectIndex
/* 000F0 808A4EB0 00812021 */ addu $a0, $a0, $at
/* 000F4 808A4EB4 A2020184 */ sb $v0, 0x0184($s0) ## 00000184
/* 000F8 808A4EB8 820E0184 */ lb $t6, 0x0184($s0) ## 00000184
/* 000FC 808A4EBC 3C0F808A */ lui $t7, %hi(func_808A4F3C) ## $t7 = 808A0000
/* 00100 808A4EC0 25EF4F3C */ addiu $t7, $t7, %lo(func_808A4F3C) ## $t7 = 808A4F3C
/* 00104 808A4EC4 05C3000C */ bgezl $t6, .L808A4EF8
/* 00108 808A4EC8 AE0F0164 */ sw $t7, 0x0164($s0) ## 00000164
/* 0010C 808A4ECC 0C00B55C */ jal Actor_Kill
/* 00110 808A4ED0 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00114 808A4ED4 3C04808A */ lui $a0, %hi(D_808A5420) ## $a0 = 808A0000
/* 00118 808A4ED8 3C05808A */ lui $a1, %hi(D_808A5440) ## $a1 = 808A0000
/* 0011C 808A4EDC 24A55440 */ addiu $a1, $a1, %lo(D_808A5440) ## $a1 = 808A5440
/* 00120 808A4EE0 24845420 */ addiu $a0, $a0, %lo(D_808A5420) ## $a0 = 808A5420
/* 00124 808A4EE4 0C00084C */ jal osSyncPrintf
/* 00128 808A4EE8 240600B0 */ addiu $a2, $zero, 0x00B0 ## $a2 = 000000B0
/* 0012C 808A4EEC 10000003 */ beq $zero, $zero, .L808A4EFC
/* 00130 808A4EF0 8FBF001C */ lw $ra, 0x001C($sp)
/* 00134 808A4EF4 AE0F0164 */ sw $t7, 0x0164($s0) ## 00000164
.L808A4EF8:
/* 00138 808A4EF8 8FBF001C */ lw $ra, 0x001C($sp)
.L808A4EFC:
/* 0013C 808A4EFC 8FB00018 */ lw $s0, 0x0018($sp)
/* 00140 808A4F00 27BD0030 */ addiu $sp, $sp, 0x0030 ## $sp = 00000000
/* 00144 808A4F04 03E00008 */ jr $ra
/* 00148 808A4F08 00000000 */ nop

View File

@ -1,10 +0,0 @@
glabel BgMoriKaitenkabe_Update
/* 004C8 808A5288 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 004CC 808A528C AFBF0014 */ sw $ra, 0x0014($sp)
/* 004D0 808A5290 8C990164 */ lw $t9, 0x0164($a0) ## 00000164
/* 004D4 808A5294 0320F809 */ jalr $ra, $t9
/* 004D8 808A5298 00000000 */ nop
/* 004DC 808A529C 8FBF0014 */ lw $ra, 0x0014($sp)
/* 004E0 808A52A0 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 004E4 808A52A4 03E00008 */ jr $ra
/* 004E8 808A52A8 00000000 */ nop

View File

@ -1,29 +0,0 @@
glabel func_808A4DC0
/* 00000 808A4DC0 C4A40004 */ lwc1 $f4, 0x0004($a1) ## 00000004
/* 00004 808A4DC4 C4C60008 */ lwc1 $f6, 0x0008($a2) ## 00000008
/* 00008 808A4DC8 C4AA0008 */ lwc1 $f10, 0x0008($a1) ## 00000008
/* 0000C 808A4DCC C4D00004 */ lwc1 $f16, 0x0004($a2) ## 00000004
/* 00010 808A4DD0 46062202 */ mul.s $f8, $f4, $f6
/* 00014 808A4DD4 00000000 */ nop
/* 00018 808A4DD8 46105482 */ mul.s $f18, $f10, $f16
/* 0001C 808A4DDC 46124101 */ sub.s $f4, $f8, $f18
/* 00020 808A4DE0 E4840000 */ swc1 $f4, 0x0000($a0) ## 00000000
/* 00024 808A4DE4 C4CA0000 */ lwc1 $f10, 0x0000($a2) ## 00000000
/* 00028 808A4DE8 C4A60008 */ lwc1 $f6, 0x0008($a1) ## 00000008
/* 0002C 808A4DEC C4A80000 */ lwc1 $f8, 0x0000($a1) ## 00000000
/* 00030 808A4DF0 C4D20008 */ lwc1 $f18, 0x0008($a2) ## 00000008
/* 00034 808A4DF4 460A3402 */ mul.s $f16, $f6, $f10
/* 00038 808A4DF8 00000000 */ nop
/* 0003C 808A4DFC 46124102 */ mul.s $f4, $f8, $f18
/* 00040 808A4E00 46048181 */ sub.s $f6, $f16, $f4
/* 00044 808A4E04 E4860004 */ swc1 $f6, 0x0004($a0) ## 00000004
/* 00048 808A4E08 C4C80004 */ lwc1 $f8, 0x0004($a2) ## 00000004
/* 0004C 808A4E0C C4AA0000 */ lwc1 $f10, 0x0000($a1) ## 00000000
/* 00050 808A4E10 C4C40000 */ lwc1 $f4, 0x0000($a2) ## 00000000
/* 00054 808A4E14 C4B00004 */ lwc1 $f16, 0x0004($a1) ## 00000004
/* 00058 808A4E18 46085482 */ mul.s $f18, $f10, $f8
/* 0005C 808A4E1C 00000000 */ nop
/* 00060 808A4E20 46048182 */ mul.s $f6, $f16, $f4
/* 00064 808A4E24 46069281 */ sub.s $f10, $f18, $f6
/* 00068 808A4E28 03E00008 */ jr $ra
/* 0006C 808A4E2C E48A0008 */ swc1 $f10, 0x0008($a0) ## 00000008

View File

@ -1,24 +0,0 @@
glabel func_808A4F3C
/* 0017C 808A4F3C 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 00180 808A4F40 AFA40018 */ sw $a0, 0x0018($sp)
/* 00184 808A4F44 3C010001 */ lui $at, 0x0001 ## $at = 00010000
/* 00188 808A4F48 8FAE0018 */ lw $t6, 0x0018($sp)
/* 0018C 808A4F4C 342117A4 */ ori $at, $at, 0x17A4 ## $at = 000117A4
/* 00190 808A4F50 AFBF0014 */ sw $ra, 0x0014($sp)
/* 00194 808A4F54 00A12021 */ addu $a0, $a1, $at
/* 00198 808A4F58 0C026062 */ jal Object_IsLoaded
/* 0019C 808A4F5C 81C50184 */ lb $a1, 0x0184($t6) ## 00000184
/* 001A0 808A4F60 50400008 */ beql $v0, $zero, .L808A4F84
/* 001A4 808A4F64 8FBF0014 */ lw $ra, 0x0014($sp)
/* 001A8 808A4F68 0C2293E4 */ jal func_808A4F90
/* 001AC 808A4F6C 8FA40018 */ lw $a0, 0x0018($sp)
/* 001B0 808A4F70 8FB80018 */ lw $t8, 0x0018($sp)
/* 001B4 808A4F74 3C0F808A */ lui $t7, %hi(func_808A52AC) ## $t7 = 808A0000
/* 001B8 808A4F78 25EF52AC */ addiu $t7, $t7, %lo(func_808A52AC) ## $t7 = 808A52AC
/* 001BC 808A4F7C AF0F0134 */ sw $t7, 0x0134($t8) ## 00000134
/* 001C0 808A4F80 8FBF0014 */ lw $ra, 0x0014($sp)
.L808A4F84:
/* 001C4 808A4F84 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 001C8 808A4F88 03E00008 */ jr $ra
/* 001CC 808A4F8C 00000000 */ nop

View File

@ -1,6 +0,0 @@
glabel func_808A4F90
/* 001D0 808A4F90 3C0E808A */ lui $t6, %hi(func_808A4FA4) ## $t6 = 808A0000
/* 001D4 808A4F94 25CE4FA4 */ addiu $t6, $t6, %lo(func_808A4FA4) ## $t6 = 808A4FA4
/* 001D8 808A4F98 AC8E0164 */ sw $t6, 0x0164($a0) ## 00000164
/* 001DC 808A4F9C 03E00008 */ jr $ra
/* 001E0 808A4FA0 AC800168 */ sw $zero, 0x0168($a0) ## 00000168

View File

@ -1,104 +0,0 @@
.late_rodata
glabel D_808A54B0
.float 0.001
glabel D_808A54B4
.float 0.001
.text
glabel func_808A4FA4
/* 001E4 808A4FA4 27BDFFB8 */ addiu $sp, $sp, 0xFFB8 ## $sp = FFFFFFB8
/* 001E8 808A4FA8 AFBF001C */ sw $ra, 0x001C($sp)
/* 001EC 808A4FAC AFB10018 */ sw $s1, 0x0018($sp)
/* 001F0 808A4FB0 AFB00014 */ sw $s0, 0x0014($sp)
/* 001F4 808A4FB4 3C01808A */ lui $at, %hi(D_808A54B0) ## $at = 808A0000
/* 001F8 808A4FB8 C42454B0 */ lwc1 $f4, %lo(D_808A54B0)($at)
/* 001FC 808A4FBC C4860150 */ lwc1 $f6, 0x0150($a0) ## 00000150
/* 00200 808A4FC0 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00204 808A4FC4 8CB11C44 */ lw $s1, 0x1C44($a1) ## 00001C44
/* 00208 808A4FC8 4606203C */ c.lt.s $f4, $f6
/* 0020C 808A4FCC 00000000 */ nop
/* 00210 808A4FD0 45020039 */ bc1fl .L808A50B8
/* 00214 808A4FD4 AE000168 */ sw $zero, 0x0168($s0) ## 00000168
/* 00218 808A4FD8 8C8E0168 */ lw $t6, 0x0168($a0) ## 00000168
/* 0021C 808A4FDC 25CF0001 */ addiu $t7, $t6, 0x0001 ## $t7 = 00000001
/* 00220 808A4FE0 29E1001D */ slti $at, $t7, 0x001D
/* 00224 808A4FE4 14200034 */ bne $at, $zero, .L808A50B8
/* 00228 808A4FE8 AC8F0168 */ sw $t7, 0x0168($a0) ## 00000168
/* 0022C 808A4FEC 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 00230 808A4FF0 0C023A62 */ jal Player_InCsMode
/* 00234 808A4FF4 AFA5004C */ sw $a1, 0x004C($sp)
/* 00238 808A4FF8 54400030 */ bnel $v0, $zero, .L808A50BC
/* 0023C 808A4FFC C6000150 */ lwc1 $f0, 0x0150($s0) ## 00000150
/* 00240 808A5000 0C229441 */ jal func_808A5104
/* 00244 808A5004 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00248 808A5008 8FA4004C */ lw $a0, 0x004C($sp)
/* 0024C 808A500C 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000
/* 00250 808A5010 0C00B7D5 */ jal func_8002DF54
/* 00254 808A5014 24060008 */ addiu $a2, $zero, 0x0008 ## $a2 = 00000008
/* 00258 808A5018 26040178 */ addiu $a0, $s0, 0x0178 ## $a0 = 00000178
/* 0025C 808A501C 0C01DF90 */ jal Math_Vec3f_Copy
## Vec3f_Copy
/* 00260 808A5020 26250024 */ addiu $a1, $s1, 0x0024 ## $a1 = 00000024
/* 00264 808A5024 0C01DE1C */ jal Math_Sins
## sins?
/* 00268 808A5028 86040158 */ lh $a0, 0x0158($s0) ## 00000158
/* 0026C 808A502C 44804000 */ mtc1 $zero, $f8 ## $f8 = 0.00
/* 00270 808A5030 E7A0003C */ swc1 $f0, 0x003C($sp)
/* 00274 808A5034 E7A80040 */ swc1 $f8, 0x0040($sp)
/* 00278 808A5038 0C01DE0D */ jal Math_Coss
## coss?
/* 0027C 808A503C 86040158 */ lh $a0, 0x0158($s0) ## 00000158
/* 00280 808A5040 E7A00044 */ swc1 $f0, 0x0044($sp)
/* 00284 808A5044 C6300024 */ lwc1 $f16, 0x0024($s1) ## 00000024
/* 00288 808A5048 C60A0024 */ lwc1 $f10, 0x0024($s0) ## 00000024
/* 0028C 808A504C 44802000 */ mtc1 $zero, $f4 ## $f4 = 0.00
/* 00290 808A5050 27A40024 */ addiu $a0, $sp, 0x0024 ## $a0 = FFFFFFDC
/* 00294 808A5054 46105481 */ sub.s $f18, $f10, $f16
/* 00298 808A5058 E7A40034 */ swc1 $f4, 0x0034($sp)
/* 0029C 808A505C 27A5003C */ addiu $a1, $sp, 0x003C ## $a1 = FFFFFFF4
/* 002A0 808A5060 27A60030 */ addiu $a2, $sp, 0x0030 ## $a2 = FFFFFFE8
/* 002A4 808A5064 E7B20030 */ swc1 $f18, 0x0030($sp)
/* 002A8 808A5068 C628002C */ lwc1 $f8, 0x002C($s1) ## 0000002C
/* 002AC 808A506C C606002C */ lwc1 $f6, 0x002C($s0) ## 0000002C
/* 002B0 808A5070 46083281 */ sub.s $f10, $f6, $f8
/* 002B4 808A5074 0C229370 */ jal func_808A4DC0
/* 002B8 808A5078 E7AA0038 */ swc1 $f10, 0x0038($sp)
/* 002BC 808A507C 44808000 */ mtc1 $zero, $f16 ## $f16 = 0.00
/* 002C0 808A5080 C7B20028 */ lwc1 $f18, 0x0028($sp)
/* 002C4 808A5084 3C01BF80 */ lui $at, 0xBF80 ## $at = BF800000
/* 002C8 808A5088 4612803C */ c.lt.s $f16, $f18
/* 002CC 808A508C 00000000 */ nop
/* 002D0 808A5090 45020006 */ bc1fl .L808A50AC
/* 002D4 808A5094 44813000 */ mtc1 $at, $f6 ## $f6 = -1.00
/* 002D8 808A5098 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000
/* 002DC 808A509C 44812000 */ mtc1 $at, $f4 ## $f4 = 1.00
/* 002E0 808A50A0 10000005 */ beq $zero, $zero, .L808A50B8
/* 002E4 808A50A4 E604016C */ swc1 $f4, 0x016C($s0) ## 0000016C
/* 002E8 808A50A8 44813000 */ mtc1 $at, $f6 ## $f6 = 1.00
.L808A50AC:
/* 002EC 808A50AC 10000002 */ beq $zero, $zero, .L808A50B8
/* 002F0 808A50B0 E606016C */ swc1 $f6, 0x016C($s0) ## 0000016C
/* 002F4 808A50B4 AE000168 */ sw $zero, 0x0168($s0) ## 00000168
.L808A50B8:
/* 002F8 808A50B8 C6000150 */ lwc1 $f0, 0x0150($s0) ## 00000150
.L808A50BC:
/* 002FC 808A50BC 3C01808A */ lui $at, %hi(D_808A54B4) ## $at = 808A0000
/* 00300 808A50C0 C42854B4 */ lwc1 $f8, %lo(D_808A54B4)($at)
/* 00304 808A50C4 46000005 */ abs.s $f0, $f0
/* 00308 808A50C8 4600403C */ c.lt.s $f8, $f0
/* 0030C 808A50CC 00000000 */ nop
/* 00310 808A50D0 45020008 */ bc1fl .L808A50F4
/* 00314 808A50D4 8FBF001C */ lw $ra, 0x001C($sp)
/* 00318 808A50D8 44805000 */ mtc1 $zero, $f10 ## $f10 = 0.00
/* 0031C 808A50DC 2401FFEF */ addiu $at, $zero, 0xFFEF ## $at = FFFFFFEF
/* 00320 808A50E0 E60A0150 */ swc1 $f10, 0x0150($s0) ## 00000150
/* 00324 808A50E4 8E390680 */ lw $t9, 0x0680($s1) ## 00000680
/* 00328 808A50E8 03214024 */ and $t0, $t9, $at
/* 0032C 808A50EC AE280680 */ sw $t0, 0x0680($s1) ## 00000680
/* 00330 808A50F0 8FBF001C */ lw $ra, 0x001C($sp)
.L808A50F4:
/* 00334 808A50F4 8FB00014 */ lw $s0, 0x0014($sp)
/* 00338 808A50F8 8FB10018 */ lw $s1, 0x0018($sp)
/* 0033C 808A50FC 03E00008 */ jr $ra
/* 00340 808A5100 27BD0048 */ addiu $sp, $sp, 0x0048 ## $sp = 00000000

View File

@ -1,8 +0,0 @@
glabel func_808A5104
/* 00344 808A5104 44800000 */ mtc1 $zero, $f0 ## $f0 = 0.00
/* 00348 808A5108 3C0E808A */ lui $t6, %hi(func_808A5120) ## $t6 = 808A0000
/* 0034C 808A510C 25CE5120 */ addiu $t6, $t6, %lo(func_808A5120) ## $t6 = 808A5120
/* 00350 808A5110 AC8E0164 */ sw $t6, 0x0164($a0) ## 00000164
/* 00354 808A5114 E4800170 */ swc1 $f0, 0x0170($a0) ## 00000170
/* 00358 808A5118 03E00008 */ jr $ra
/* 0035C 808A511C E4800174 */ swc1 $f0, 0x0174($a0) ## 00000174

View File

@ -1,106 +0,0 @@
.late_rodata
glabel D_808A54B8
.word 0x43360B61
glabel D_808A54BC
.float 0.001
.text
glabel func_808A5120
/* 00360 808A5120 27BDFFD8 */ addiu $sp, $sp, 0xFFD8 ## $sp = FFFFFFD8
/* 00364 808A5124 AFBF001C */ sw $ra, 0x001C($sp)
/* 00368 808A5128 AFB00018 */ sw $s0, 0x0018($sp)
/* 0036C 808A512C AFA5002C */ sw $a1, 0x002C($sp)
/* 00370 808A5130 8CAF1C44 */ lw $t7, 0x1C44($a1) ## 00001C44
/* 00374 808A5134 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00378 808A5138 3C053F19 */ lui $a1, 0x3F19 ## $a1 = 3F190000
/* 0037C 808A513C 3C063CA3 */ lui $a2, 0x3CA3 ## $a2 = 3CA30000
/* 00380 808A5140 34C6D70A */ ori $a2, $a2, 0xD70A ## $a2 = 3CA3D70A
/* 00384 808A5144 34A5999A */ ori $a1, $a1, 0x999A ## $a1 = 3F19999A
/* 00388 808A5148 24840170 */ addiu $a0, $a0, 0x0170 ## $a0 = 00000170
/* 0038C 808A514C 0C01DE80 */ jal Math_ApproxF
/* 00390 808A5150 AFAF0024 */ sw $t7, 0x0024($sp)
/* 00394 808A5154 3C014234 */ lui $at, 0x4234 ## $at = 42340000
/* 00398 808A5158 44813000 */ mtc1 $at, $f6 ## $f6 = 45.00
/* 0039C 808A515C C604016C */ lwc1 $f4, 0x016C($s0) ## 0000016C
/* 003A0 808A5160 26040174 */ addiu $a0, $s0, 0x0174 ## $a0 = 00000174
/* 003A4 808A5164 8E060170 */ lw $a2, 0x0170($s0) ## 00000170
/* 003A8 808A5168 46062202 */ mul.s $f8, $f4, $f6
/* 003AC 808A516C 44054000 */ mfc1 $a1, $f8
/* 003B0 808A5170 0C01DE80 */ jal Math_ApproxF
/* 003B4 808A5174 00000000 */ nop
/* 003B8 808A5178 1040001B */ beq $v0, $zero, .L808A51E8
/* 003BC 808A517C 3C01808A */ lui $at, %hi(D_808A54B8) ## $at = 808A0000
/* 003C0 808A5180 0C2293E4 */ jal func_808A4F90
/* 003C4 808A5184 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 003C8 808A5188 8FA4002C */ lw $a0, 0x002C($sp)
/* 003CC 808A518C 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000
/* 003D0 808A5190 0C00B7D5 */ jal func_8002DF54
/* 003D4 808A5194 24060007 */ addiu $a2, $zero, 0x0007 ## $a2 = 00000007
/* 003D8 808A5198 44805000 */ mtc1 $zero, $f10 ## $f10 = 0.00
/* 003DC 808A519C C610016C */ lwc1 $f16, 0x016C($s0) ## 0000016C
/* 003E0 808A51A0 4610503C */ c.lt.s $f10, $f16
/* 003E4 808A51A4 00000000 */ nop
/* 003E8 808A51A8 45020006 */ bc1fl .L808A51C4
/* 003EC 808A51AC 86080016 */ lh $t0, 0x0016($s0) ## 00000016
/* 003F0 808A51B0 86180016 */ lh $t8, 0x0016($s0) ## 00000016
/* 003F4 808A51B4 27192000 */ addiu $t9, $t8, 0x2000 ## $t9 = 00002000
/* 003F8 808A51B8 10000004 */ beq $zero, $zero, .L808A51CC
/* 003FC 808A51BC A6190016 */ sh $t9, 0x0016($s0) ## 00000016
/* 00400 808A51C0 86080016 */ lh $t0, 0x0016($s0) ## 00000016
.L808A51C4:
/* 00404 808A51C4 2509E000 */ addiu $t1, $t0, 0xE000 ## $t1 = FFFFE000
/* 00408 808A51C8 A6090016 */ sh $t1, 0x0016($s0) ## 00000016
.L808A51CC:
/* 0040C 808A51CC 86020016 */ lh $v0, 0x0016($s0) ## 00000016
/* 00410 808A51D0 24042893 */ addiu $a0, $zero, 0x2893 ## $a0 = 00002893
/* 00414 808A51D4 A60200B6 */ sh $v0, 0x00B6($s0) ## 000000B6
/* 00418 808A51D8 0C01E233 */ jal func_800788CC
/* 0041C 808A51DC A6020032 */ sh $v0, 0x0032($s0) ## 00000032
/* 00420 808A51E0 10000012 */ beq $zero, $zero, .L808A522C
/* 00424 808A51E4 C6000150 */ lwc1 $f0, 0x0150($s0) ## 00000150
.L808A51E8:
/* 00428 808A51E8 C6120174 */ lwc1 $f18, 0x0174($s0) ## 00000174
/* 0042C 808A51EC C42454B8 */ lwc1 $f4, %lo(D_808A54B8)($at)
/* 00430 808A51F0 860B0016 */ lh $t3, 0x0016($s0) ## 00000016
/* 00434 808A51F4 24042083 */ addiu $a0, $zero, 0x2083 ## $a0 = 00002083
/* 00438 808A51F8 46049182 */ mul.s $f6, $f18, $f4
/* 0043C 808A51FC 4600320D */ trunc.w.s $f8, $f6
/* 00440 808A5200 44034000 */ mfc1 $v1, $f8
/* 00444 808A5204 00000000 */ nop
/* 00448 808A5208 00031C00 */ sll $v1, $v1, 16
/* 0044C 808A520C 00031C03 */ sra $v1, $v1, 16
/* 00450 808A5210 01631021 */ addu $v0, $t3, $v1
/* 00454 808A5214 00021400 */ sll $v0, $v0, 16
/* 00458 808A5218 00021403 */ sra $v0, $v0, 16
/* 0045C 808A521C A60200B6 */ sh $v0, 0x00B6($s0) ## 000000B6
/* 00460 808A5220 0C01E233 */ jal func_800788CC
/* 00464 808A5224 A6020032 */ sh $v0, 0x0032($s0) ## 00000032
/* 00468 808A5228 C6000150 */ lwc1 $f0, 0x0150($s0) ## 00000150
.L808A522C:
/* 0046C 808A522C 3C01808A */ lui $at, %hi(D_808A54BC) ## $at = 808A0000
/* 00470 808A5230 C42A54BC */ lwc1 $f10, %lo(D_808A54BC)($at)
/* 00474 808A5234 46000005 */ abs.s $f0, $f0
/* 00478 808A5238 4600503C */ c.lt.s $f10, $f0
/* 0047C 808A523C 00000000 */ nop
/* 00480 808A5240 45020009 */ bc1fl .L808A5268
/* 00484 808A5244 8FA20024 */ lw $v0, 0x0024($sp)
/* 00488 808A5248 44808000 */ mtc1 $zero, $f16 ## $f16 = 0.00
/* 0048C 808A524C 8FA20024 */ lw $v0, 0x0024($sp)
/* 00490 808A5250 2401FFEF */ addiu $at, $zero, 0xFFEF ## $at = FFFFFFEF
/* 00494 808A5254 E6100150 */ swc1 $f16, 0x0150($s0) ## 00000150
/* 00498 808A5258 8C4C0680 */ lw $t4, 0x0680($v0) ## 00000680
/* 0049C 808A525C 01816824 */ and $t5, $t4, $at
/* 004A0 808A5260 AC4D0680 */ sw $t5, 0x0680($v0) ## 00000680
/* 004A4 808A5264 8FA20024 */ lw $v0, 0x0024($sp)
.L808A5268:
/* 004A8 808A5268 26050178 */ addiu $a1, $s0, 0x0178 ## $a1 = 00000178
/* 004AC 808A526C 0C01DF90 */ jal Math_Vec3f_Copy
## Vec3f_Copy
/* 004B0 808A5270 24440024 */ addiu $a0, $v0, 0x0024 ## $a0 = 00000024
/* 004B4 808A5274 8FBF001C */ lw $ra, 0x001C($sp)
/* 004B8 808A5278 8FB00018 */ lw $s0, 0x0018($sp)
/* 004BC 808A527C 27BD0028 */ addiu $sp, $sp, 0x0028 ## $sp = 00000000
/* 004C0 808A5280 03E00008 */ jr $ra
/* 004C4 808A5284 00000000 */ nop

View File

@ -1,80 +0,0 @@
.rdata
glabel D_808A545C
.asciz "../z_bg_mori_kaitenkabe.c"
.balign 4
glabel D_808A5478
.asciz "../z_bg_mori_kaitenkabe.c"
.balign 4
glabel D_808A5494
.asciz "../z_bg_mori_kaitenkabe.c"
.balign 4
.text
glabel func_808A52AC
/* 004EC 808A52AC 27BDFFB0 */ addiu $sp, $sp, 0xFFB0 ## $sp = FFFFFFB0
/* 004F0 808A52B0 AFB10018 */ sw $s1, 0x0018($sp)
/* 004F4 808A52B4 00A08825 */ or $s1, $a1, $zero ## $s1 = 00000000
/* 004F8 808A52B8 AFBF001C */ sw $ra, 0x001C($sp)
/* 004FC 808A52BC AFB00014 */ sw $s0, 0x0014($sp)
/* 00500 808A52C0 AFA40050 */ sw $a0, 0x0050($sp)
/* 00504 808A52C4 8CA50000 */ lw $a1, 0x0000($a1) ## 00000000
/* 00508 808A52C8 3C06808A */ lui $a2, %hi(D_808A545C) ## $a2 = 808A0000
/* 0050C 808A52CC 24C6545C */ addiu $a2, $a2, %lo(D_808A545C) ## $a2 = 808A545C
/* 00510 808A52D0 27A40034 */ addiu $a0, $sp, 0x0034 ## $a0 = FFFFFFE4
/* 00514 808A52D4 2407015B */ addiu $a3, $zero, 0x015B ## $a3 = 0000015B
/* 00518 808A52D8 0C031AB1 */ jal Graph_OpenDisps
/* 0051C 808A52DC 00A08025 */ or $s0, $a1, $zero ## $s0 = 00000000
/* 00520 808A52E0 0C024F46 */ jal func_80093D18
/* 00524 808A52E4 8E240000 */ lw $a0, 0x0000($s1) ## 00000000
/* 00528 808A52E8 8E0202C0 */ lw $v0, 0x02C0($s0) ## 000002C0
/* 0052C 808A52EC 3C0FDB06 */ lui $t7, 0xDB06 ## $t7 = DB060000
/* 00530 808A52F0 35EF0020 */ ori $t7, $t7, 0x0020 ## $t7 = DB060020
/* 00534 808A52F4 244E0008 */ addiu $t6, $v0, 0x0008 ## $t6 = 00000008
/* 00538 808A52F8 AE0E02C0 */ sw $t6, 0x02C0($s0) ## 000002C0
/* 0053C 808A52FC AC4F0000 */ sw $t7, 0x0000($v0) ## 00000000
/* 00540 808A5300 8FB80050 */ lw $t8, 0x0050($sp)
/* 00544 808A5304 3C0A0001 */ lui $t2, 0x0001 ## $t2 = 00010000
/* 00548 808A5308 3C0CDA38 */ lui $t4, 0xDA38 ## $t4 = DA380000
/* 0054C 808A530C 83190184 */ lb $t9, 0x0184($t8) ## 00000184
/* 00550 808A5310 358C0003 */ ori $t4, $t4, 0x0003 ## $t4 = DA380003
/* 00554 808A5314 3C05808A */ lui $a1, %hi(D_808A5478) ## $a1 = 808A0000
/* 00558 808A5318 00194100 */ sll $t0, $t9, 4
/* 0055C 808A531C 01194021 */ addu $t0, $t0, $t9
/* 00560 808A5320 00084080 */ sll $t0, $t0, 2
/* 00564 808A5324 02284821 */ addu $t1, $s1, $t0
/* 00568 808A5328 01495021 */ addu $t2, $t2, $t1
/* 0056C 808A532C 8D4A17B4 */ lw $t2, 0x17B4($t2) ## 000117B4
/* 00570 808A5330 24A55478 */ addiu $a1, $a1, %lo(D_808A5478) ## $a1 = 808A5478
/* 00574 808A5334 24060160 */ addiu $a2, $zero, 0x0160 ## $a2 = 00000160
/* 00578 808A5338 AC4A0004 */ sw $t2, 0x0004($v0) ## 00000004
/* 0057C 808A533C 8E0202C0 */ lw $v0, 0x02C0($s0) ## 000002C0
/* 00580 808A5340 244B0008 */ addiu $t3, $v0, 0x0008 ## $t3 = 00000008
/* 00584 808A5344 AE0B02C0 */ sw $t3, 0x02C0($s0) ## 000002C0
/* 00588 808A5348 AC4C0000 */ sw $t4, 0x0000($v0) ## 00000000
/* 0058C 808A534C 8E240000 */ lw $a0, 0x0000($s1) ## 00000000
/* 00590 808A5350 0C0346A2 */ jal Matrix_NewMtx
/* 00594 808A5354 AFA2002C */ sw $v0, 0x002C($sp)
/* 00598 808A5358 8FA3002C */ lw $v1, 0x002C($sp)
/* 0059C 808A535C 3C0F0600 */ lui $t7, 0x0600 ## $t7 = 06000000
/* 005A0 808A5360 25EF56B0 */ addiu $t7, $t7, 0x56B0 ## $t7 = 060056B0
/* 005A4 808A5364 AC620004 */ sw $v0, 0x0004($v1) ## 00000004
/* 005A8 808A5368 8E0202C0 */ lw $v0, 0x02C0($s0) ## 000002C0
/* 005AC 808A536C 3C0EDE00 */ lui $t6, 0xDE00 ## $t6 = DE000000
/* 005B0 808A5370 3C06808A */ lui $a2, %hi(D_808A5494) ## $a2 = 808A0000
/* 005B4 808A5374 244D0008 */ addiu $t5, $v0, 0x0008 ## $t5 = 00000008
/* 005B8 808A5378 AE0D02C0 */ sw $t5, 0x02C0($s0) ## 000002C0
/* 005BC 808A537C AC4F0004 */ sw $t7, 0x0004($v0) ## 00000004
/* 005C0 808A5380 AC4E0000 */ sw $t6, 0x0000($v0) ## 00000000
/* 005C4 808A5384 8E250000 */ lw $a1, 0x0000($s1) ## 00000000
/* 005C8 808A5388 24C65494 */ addiu $a2, $a2, %lo(D_808A5494) ## $a2 = 808A5494
/* 005CC 808A538C 27A40034 */ addiu $a0, $sp, 0x0034 ## $a0 = FFFFFFE4
/* 005D0 808A5390 0C031AD5 */ jal Graph_CloseDisps
/* 005D4 808A5394 24070164 */ addiu $a3, $zero, 0x0164 ## $a3 = 00000164
/* 005D8 808A5398 8FBF001C */ lw $ra, 0x001C($sp)
/* 005DC 808A539C 8FB00014 */ lw $s0, 0x0014($sp)
/* 005E0 808A53A0 8FB10018 */ lw $s1, 0x0018($sp)
/* 005E4 808A53A4 03E00008 */ jr $ra
/* 005E8 808A53A8 27BD0050 */ addiu $sp, $sp, 0x0050 ## $sp = 00000000
/* 005EC 808A53AC 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 purpose registers
.section .data
.balign 16
glabel Bg_Mori_Kaitenkabe_InitVars
.word 0x00880100, 0x00000000, 0x00720000, 0x00000188
.word BgMoriKaitenkabe_Init
.word BgMoriKaitenkabe_Destroy
.word BgMoriKaitenkabe_Update
.word 0x00000000
glabel D_808A53D0
.word 0xB0F403E8, 0xB0F803E8, 0xB0FC03E8, 0x485003E8

View File

@ -1,13 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purpose registers
.section .rodata
.balign 16
glabel D_808A54C0
.incbin "baserom/ovl_Bg_Mori_Kaitenkabe", 0x700, 0x000000B0

3
spec
View File

@ -1132,8 +1132,7 @@ endseg
beginseg
name "ovl_Bg_Mori_Kaitenkabe"
include "build/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/z_bg_mori_kaitenkabe.o"
include "build/data/overlays/actors/z_bg_mori_kaitenkabe.data.o"
include "build/data/overlays/actors/z_bg_mori_kaitenkabe.reloc.o"
include "build/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/ovl_Bg_Mori_Kaitenkabe_reloc.o"
endseg
beginseg

View File

@ -1,3 +1,9 @@
/*
* File: z_bg_mori_kaitenkabe.c
* Overlay: ovl_Bg_Mori_Kaitenkabe
* Description: Rotating wall in Forest Temple basement
*/
#include "z_bg_mori_kaitenkabe.h"
#define FLAGS 0x00000000
@ -7,8 +13,17 @@
void BgMoriKaitenkabe_Init(Actor* thisx, GlobalContext* globalCtx);
void BgMoriKaitenkabe_Destroy(Actor* thisx, GlobalContext* globalCtx);
void BgMoriKaitenkabe_Update(Actor* thisx, GlobalContext* globalCtx);
void BgMoriKaitenkabe_Draw(Actor* thisx, GlobalContext* globalCtx);
void BgMoriKaitenkabe_WaitForMoriTex(BgMoriKaitenkabe* this, GlobalContext* globalCtx);
void BgMoriKaitenkabe_SetupWait(BgMoriKaitenkabe* this);
void BgMoriKaitenkabe_Wait(BgMoriKaitenkabe* this, GlobalContext* globalCtx);
void BgMoriKaitenkabe_SetupRotate(BgMoriKaitenkabe* this);
void BgMoriKaitenkabe_Rotate(BgMoriKaitenkabe* this, GlobalContext* globalCtx);
extern ColHeader D_060063B8;
extern Gfx D_060056B0[];
/*
const ActorInit Bg_Mori_Kaitenkabe_InitVars = {
ACTOR_BG_MORI_KAITENKABE,
ACTORTYPE_BG,
@ -20,23 +35,145 @@ const ActorInit Bg_Mori_Kaitenkabe_InitVars = {
(ActorFunc)BgMoriKaitenkabe_Update,
NULL,
};
*/
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A4DC0.s")
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/BgMoriKaitenkabe_Init.s")
static InitChainEntry sInitChain[] = {
ICHAIN_F32(uncullZoneForward, 1000, ICHAIN_CONTINUE),
ICHAIN_F32(uncullZoneScale, 1000, ICHAIN_CONTINUE),
ICHAIN_F32(uncullZoneDownward, 1000, ICHAIN_CONTINUE),
ICHAIN_VEC3F_DIV1000(scale, 1000, ICHAIN_STOP),
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/BgMoriKaitenkabe_Destroy.s")
void BgMoriKaitenkabe_CrossProduct(Vec3f* dest, Vec3f* v1, Vec3f* v2) {
dest->x = (v1->y * v2->z) - (v1->z * v2->y);
dest->y = (v1->z * v2->x) - (v1->x * v2->z);
dest->z = (v1->x * v2->y) - (v1->y * v2->x);
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A4F3C.s")
void BgMoriKaitenkabe_Init(Actor* thisx, GlobalContext* globalCtx) {
s32 pad;
BgMoriKaitenkabe* this = THIS;
ColHeader* colHeader = NULL;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A4F90.s")
// Forest Temple object 【Rotating Wall (arg_data: 0x% 04x)】 appears
osSyncPrintf("◯◯◯森の神殿オブジェクト【回転壁(arg_data : 0x%04x)】出現 \n", this->dyna.actor.params);
Actor_ProcessInitChain(&this->dyna.actor, sInitChain);
DynaPolyInfo_SetActorMove(&this->dyna, 0);
DynaPolyInfo_Alloc(&D_060063B8, &colHeader);
this->dyna.dynaPolyId =
DynaPolyInfo_RegisterActor(globalCtx, &globalCtx->colCtx.dyna, &this->dyna.actor, colHeader);
this->moriTexObjIndex = Object_GetIndex(&globalCtx->objectCtx, OBJECT_MORI_TEX);
if (this->moriTexObjIndex < 0) {
Actor_Kill(&this->dyna.actor);
// 【Rotating wall】 Bank danger!
osSyncPrintf("【回転壁】 バンク危険!(%s %d)\n", "../z_bg_mori_kaitenkabe.c", 176);
} else {
this->actionFunc = BgMoriKaitenkabe_WaitForMoriTex;
}
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A4FA4.s")
void BgMoriKaitenkabe_Destroy(Actor* thisx, GlobalContext* globalCtx) {
s32 pad;
BgMoriKaitenkabe* this = THIS;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A5104.s")
DynaPolyInfo_Free(globalCtx, &globalCtx->colCtx.dyna, this->dyna.dynaPolyId);
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A5120.s")
void BgMoriKaitenkabe_WaitForMoriTex(BgMoriKaitenkabe* this, GlobalContext* globalCtx) {
if (Object_IsLoaded(&globalCtx->objectCtx, this->moriTexObjIndex)) {
BgMoriKaitenkabe_SetupWait(this);
this->dyna.actor.draw = BgMoriKaitenkabe_Draw;
}
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/BgMoriKaitenkabe_Update.s")
void BgMoriKaitenkabe_SetupWait(BgMoriKaitenkabe* this) {
this->actionFunc = BgMoriKaitenkabe_Wait;
this->timer = 0;
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A52AC.s")
void BgMoriKaitenkabe_Wait(BgMoriKaitenkabe* this, GlobalContext* globalCtx) {
Vec3f push;
Vec3f leverArm;
Vec3f torque;
Player* player = PLAYER;
if (this->dyna.unk_150 > 0.001f) {
this->timer++;
if ((this->timer > 28) && !Player_InCsMode(globalCtx)) {
BgMoriKaitenkabe_SetupRotate(this);
func_8002DF54(globalCtx, &this->dyna.actor, 8);
Math_Vec3f_Copy(&this->lockedPlayerPos, &player->actor.posRot.pos);
push.x = Math_Sins(this->dyna.unk_158);
push.y = 0.0f;
push.z = Math_Coss(this->dyna.unk_158);
leverArm.x = this->dyna.actor.posRot.pos.x - player->actor.posRot.pos.x;
leverArm.y = 0.0f;
leverArm.z = this->dyna.actor.posRot.pos.z - player->actor.posRot.pos.z;
BgMoriKaitenkabe_CrossProduct(&torque, &push, &leverArm);
this->rotDirection = (torque.y > 0.0f) ? 1.0f : -1.0f;
}
} else {
this->timer = 0;
}
if (fabsf(this->dyna.unk_150) > 0.001f) {
this->dyna.unk_150 = 0.0f;
player->stateFlags2 &= ~0x10;
}
}
void BgMoriKaitenkabe_SetupRotate(BgMoriKaitenkabe* this) {
this->actionFunc = BgMoriKaitenkabe_Rotate;
this->rotSpeed = 0.0f;
this->rotYdeg = 0.0f;
}
void BgMoriKaitenkabe_Rotate(BgMoriKaitenkabe* this, GlobalContext* globalCtx) {
Player* player = PLAYER;
Actor* thisx = &this->dyna.actor;
s16 rotY;
Math_ApproxF(&this->rotSpeed, 0.6f, 0.02f);
if (Math_ApproxF(&this->rotYdeg, this->rotDirection * 45.0f, this->rotSpeed)) {
BgMoriKaitenkabe_SetupWait(this);
func_8002DF54(globalCtx, thisx, 7);
if (this->rotDirection > 0.0f) {
thisx->initPosRot.rot.y += 0x2000;
} else {
thisx->initPosRot.rot.y -= 0x2000;
}
thisx->posRot.rot.y = thisx->shape.rot.y = thisx->initPosRot.rot.y;
func_800788CC(NA_SE_EV_STONEDOOR_STOP);
} else {
rotY = this->rotYdeg * (0x10000 / 360.0f);
thisx->posRot.rot.y = thisx->shape.rot.y = thisx->initPosRot.rot.y + rotY;
func_800788CC(NA_SE_EV_WALL_SLIDE - SFX_FLAG);
}
if (fabsf(this->dyna.unk_150) > 0.001f) {
this->dyna.unk_150 = 0.0f;
player->stateFlags2 &= ~0x10;
}
Math_Vec3f_Copy(&player->actor.posRot.pos, &this->lockedPlayerPos);
}
void BgMoriKaitenkabe_Update(Actor* thisx, GlobalContext* globalCtx) {
s32 pad;
BgMoriKaitenkabe* this = THIS;
this->actionFunc(this, globalCtx);
}
void BgMoriKaitenkabe_Draw(Actor* thisx, GlobalContext* globalCtx) {
s32 pad;
BgMoriKaitenkabe* this = THIS;
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_bg_mori_kaitenkabe.c", 347);
func_80093D18(globalCtx->state.gfxCtx);
gSPSegment(oGfxCtx->polyOpa.p++, 0x08, globalCtx->objectCtx.status[this->moriTexObjIndex].segment);
gSPMatrix(oGfxCtx->polyOpa.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_bg_mori_kaitenkabe.c", 352),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(oGfxCtx->polyOpa.p++, D_060056B0);
CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_bg_mori_kaitenkabe.c", 356);
}

View File

@ -6,9 +6,17 @@
struct BgMoriKaitenkabe;
typedef void (*BgMoriKaitenkabeActionFunc)(struct BgMoriKaitenkabe*, GlobalContext*);
typedef struct BgMoriKaitenkabe {
/* 0x0000 */ Actor actor;
/* 0x014C */ char unk_14C[0x3C];
/* 0x0000 */ DynaPolyActor dyna;
/* 0x0164 */ BgMoriKaitenkabeActionFunc actionFunc;
/* 0x0168 */ s32 timer;
/* 0x016C */ f32 rotDirection;
/* 0x0170 */ f32 rotSpeed;
/* 0x0174 */ f32 rotYdeg;
/* 0x0178 */ Vec3f lockedPlayerPos;
/* 0x0184 */ s8 moriTexObjIndex;
} BgMoriKaitenkabe; // size = 0x0188
extern const ActorInit Bg_Mori_Kaitenkabe_InitVars;

View File

@ -1209,6 +1209,10 @@ D_0600C080 = 0x0600C080;
D_060088B0 = 0x060088B0;
D_0600BEC0 = 0x0600BEC0;
// z_bg_mori_kaitenkabe
D_060056B0 = 0x060056B0;
D_060063B8 = 0x060063B8;
// z_en_st
D_06005298 = 0x06005298;
D_06000304 = 0x06000304;