1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2024-12-27 07:07:09 +00:00

Obj_Mure2 (one non-matching) (#550)

* objmure2 about halfway

* all decompiled, one non-matching

* some documentation

* mure2 done, one nonmatching

* Update spec

* Update z_obj_mure2.c

* Update z_obj_mure2.c

* Add files via upload

* fix formatting

* Fix fake match

* Changed data formatting

* More formatting changes

* fixed name of var

Co-authored-by: Zelllll <elijah@DESKTOP-NMP1I89.localdomain>
This commit is contained in:
Zelllll 2020-12-29 19:14:04 -06:00 committed by GitHub
parent 8f3dc3db94
commit dd38520a9e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
19 changed files with 207 additions and 598 deletions

View file

@ -1,27 +0,0 @@
glabel ObjMure2_Init
/* 00688 80B9A5C8 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 0068C 80B9A5CC AFA5001C */ sw $a1, 0x001C($sp)
/* 00690 80B9A5D0 AFBF0014 */ sw $ra, 0x0014($sp)
/* 00694 80B9A5D4 3C0580BA */ lui $a1, %hi(D_80B9A86C) ## $a1 = 80BA0000
/* 00698 80B9A5D8 24A5A86C */ addiu $a1, $a1, %lo(D_80B9A86C) ## $a1 = 80B9A86C
/* 0069C 80B9A5DC 0C01E037 */ jal Actor_ProcessInitChain
/* 006A0 80B9A5E0 AFA40018 */ sw $a0, 0x0018($sp)
/* 006A4 80B9A5E4 8FAE001C */ lw $t6, 0x001C($sp)
/* 006A8 80B9A5E8 8FA40018 */ lw $a0, 0x0018($sp)
/* 006AC 80B9A5EC 3C014496 */ lui $at, 0x4496 ## $at = 44960000
/* 006B0 80B9A5F0 91CF1D6C */ lbu $t7, 0x1D6C($t6) ## 00001D6C
/* 006B4 80B9A5F4 11E00006 */ beq $t7, $zero, .L80B9A610
/* 006B8 80B9A5F8 00000000 */ nop
/* 006BC 80B9A5FC C48400F4 */ lwc1 $f4, 0x00F4($a0) ## 000000F4
/* 006C0 80B9A600 44813000 */ mtc1 $at, $f6 ## $f6 = 1200.00
/* 006C4 80B9A604 00000000 */ nop
/* 006C8 80B9A608 46062200 */ add.s $f8, $f4, $f6
/* 006CC 80B9A60C E48800F4 */ swc1 $f8, 0x00F4($a0) ## 000000F4
.L80B9A610:
/* 006D0 80B9A610 0C2E698A */ jal func_80B9A628
/* 006D4 80B9A614 00000000 */ nop
/* 006D8 80B9A618 8FBF0014 */ lw $ra, 0x0014($sp)
/* 006DC 80B9A61C 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 006E0 80B9A620 03E00008 */ jr $ra
/* 006E4 80B9A624 00000000 */ nop

View file

@ -1,4 +1,4 @@
glabel func_80B99F40
glabel ObjMure2_SetPosShrubCircle
/* 00000 80B99F40 27BDFFC0 */ addiu $sp, $sp, 0xFFC0 ## $sp = FFFFFFC0
/* 00004 80B99F44 AFB50034 */ sw $s5, 0x0034($sp)
/* 00008 80B99F48 AFB40030 */ sw $s4, 0x0030($sp)

View file

@ -1,26 +0,0 @@
glabel ObjMure2_Update
/* 00844 80B9A784 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 00848 80B9A788 AFBF0014 */ sw $ra, 0x0014($sp)
/* 0084C 80B9A78C 90AE1D6C */ lbu $t6, 0x1D6C($a1) ## 00001D6C
/* 00850 80B9A790 3C014080 */ lui $at, 0x4080 ## $at = 40800000
/* 00854 80B9A794 55C00006 */ bnel $t6, $zero, .L80B9A7B0
/* 00858 80B9A798 44813000 */ mtc1 $at, $f6 ## $f6 = 4.00
/* 0085C 80B9A79C 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000
/* 00860 80B9A7A0 44812000 */ mtc1 $at, $f4 ## $f4 = 1.00
/* 00864 80B9A7A4 10000004 */ beq $zero, $zero, .L80B9A7B8
/* 00868 80B9A7A8 E4840184 */ swc1 $f4, 0x0184($a0) ## 00000184
/* 0086C 80B9A7AC 44813000 */ mtc1 $at, $f6 ## $f6 = 1.00
.L80B9A7B0:
/* 00870 80B9A7B0 00000000 */ nop
/* 00874 80B9A7B4 E4860184 */ swc1 $f6, 0x0184($a0) ## 00000184
.L80B9A7B8:
/* 00878 80B9A7B8 8C99014C */ lw $t9, 0x014C($a0) ## 0000014C
/* 0087C 80B9A7BC 0320F809 */ jalr $ra, $t9
/* 00880 80B9A7C0 00000000 */ nop
/* 00884 80B9A7C4 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00888 80B9A7C8 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 0088C 80B9A7CC 03E00008 */ jr $ra
/* 00890 80B9A7D0 00000000 */ nop
/* 00894 80B9A7D4 00000000 */ nop
/* 00898 80B9A7D8 00000000 */ nop
/* 0089C 80B9A7DC 00000000 */ nop

View file

@ -1,70 +0,0 @@
glabel func_80B9A058
/* 00118 80B9A058 27BDFFD0 */ addiu $sp, $sp, 0xFFD0 ## $sp = FFFFFFD0
/* 0011C 80B9A05C AFBF002C */ sw $ra, 0x002C($sp)
/* 00120 80B9A060 AFB50028 */ sw $s5, 0x0028($sp)
/* 00124 80B9A064 AFB40024 */ sw $s4, 0x0024($sp)
/* 00128 80B9A068 AFB30020 */ sw $s3, 0x0020($sp)
/* 0012C 80B9A06C AFB2001C */ sw $s2, 0x001C($sp)
/* 00130 80B9A070 AFB10018 */ sw $s1, 0x0018($sp)
/* 00134 80B9A074 AFB00014 */ sw $s0, 0x0014($sp)
/* 00138 80B9A078 84AE001C */ lh $t6, 0x001C($a1) ## 0000001C
/* 0013C 80B9A07C 3C1580BA */ lui $s5, %hi(D_80B9A818) ## $s5 = 80BA0000
/* 00140 80B9A080 26B5A818 */ addiu $s5, $s5, %lo(D_80B9A818) ## $s5 = 80B9A818
/* 00144 80B9A084 31CF0003 */ andi $t7, $t6, 0x0003 ## $t7 = 00000000
/* 00148 80B9A088 000FC040 */ sll $t8, $t7, 1
/* 0014C 80B9A08C 02B8C821 */ addu $t9, $s5, $t8
/* 00150 80B9A090 87280000 */ lh $t0, 0x0000($t9) ## 00000000
/* 00154 80B9A094 00A0A025 */ or $s4, $a1, $zero ## $s4 = 00000000
/* 00158 80B9A098 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 0015C 80B9A09C 19000025 */ blez $t0, .L80B9A134
/* 00160 80B9A0A0 00009025 */ or $s2, $zero, $zero ## $s2 = 00000000
/* 00164 80B9A0A4 3C1180BA */ lui $s1, %hi(D_80B9A828) ## $s1 = 80BA0000
/* 00168 80B9A0A8 2631A828 */ addiu $s1, $s1, %lo(D_80B9A828) ## $s1 = 80B9A828
/* 0016C 80B9A0AC 24B30024 */ addiu $s3, $a1, 0x0024 ## $s3 = 00000024
/* 00170 80B9A0B0 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
.L80B9A0B4:
/* 00174 80B9A0B4 0C01DF90 */ jal Math_Vec3f_Copy
## Vec3f_Copy
/* 00178 80B9A0B8 02602825 */ or $a1, $s3, $zero ## $a1 = 00000024
/* 0017C 80B9A0BC 0C01DE0D */ jal Math_CosS
## coss?
/* 00180 80B9A0C0 86240002 */ lh $a0, 0x0002($s1) ## 80B9A82A
/* 00184 80B9A0C4 86290000 */ lh $t1, 0x0000($s1) ## 80B9A828
/* 00188 80B9A0C8 C6040000 */ lwc1 $f4, 0x0000($s0) ## 00000000
/* 0018C 80B9A0CC 44893000 */ mtc1 $t1, $f6 ## $f6 = 0.00
/* 00190 80B9A0D0 00000000 */ nop
/* 00194 80B9A0D4 46803220 */ cvt.s.w $f8, $f6
/* 00198 80B9A0D8 46004282 */ mul.s $f10, $f8, $f0
/* 0019C 80B9A0DC 460A2400 */ add.s $f16, $f4, $f10
/* 001A0 80B9A0E0 E6100000 */ swc1 $f16, 0x0000($s0) ## 00000000
/* 001A4 80B9A0E4 0C01DE1C */ jal Math_SinS
## sins?
/* 001A8 80B9A0E8 86240002 */ lh $a0, 0x0002($s1) ## 80B9A82A
/* 001AC 80B9A0EC 862A0000 */ lh $t2, 0x0000($s1) ## 80B9A828
/* 001B0 80B9A0F0 C6120008 */ lwc1 $f18, 0x0008($s0) ## 00000008
/* 001B4 80B9A0F4 26520001 */ addiu $s2, $s2, 0x0001 ## $s2 = 00000001
/* 001B8 80B9A0F8 448A3000 */ mtc1 $t2, $f6 ## $f6 = 0.00
/* 001BC 80B9A0FC 2610000C */ addiu $s0, $s0, 0x000C ## $s0 = 0000000C
/* 001C0 80B9A100 26310004 */ addiu $s1, $s1, 0x0004 ## $s1 = 80B9A82C
/* 001C4 80B9A104 46803220 */ cvt.s.w $f8, $f6
/* 001C8 80B9A108 46004102 */ mul.s $f4, $f8, $f0
/* 001CC 80B9A10C 46049281 */ sub.s $f10, $f18, $f4
/* 001D0 80B9A110 E60AFFFC */ swc1 $f10, -0x0004($s0) ## 00000008
/* 001D4 80B9A114 868B001C */ lh $t3, 0x001C($s4) ## 0000001C
/* 001D8 80B9A118 316C0003 */ andi $t4, $t3, 0x0003 ## $t4 = 00000000
/* 001DC 80B9A11C 000C6840 */ sll $t5, $t4, 1
/* 001E0 80B9A120 02AD7021 */ addu $t6, $s5, $t5
/* 001E4 80B9A124 85CF0000 */ lh $t7, 0x0000($t6) ## 00000000
/* 001E8 80B9A128 024F082A */ slt $at, $s2, $t7
/* 001EC 80B9A12C 5420FFE1 */ bnel $at, $zero, .L80B9A0B4
/* 001F0 80B9A130 02002025 */ or $a0, $s0, $zero ## $a0 = 0000000C
.L80B9A134:
/* 001F4 80B9A134 8FBF002C */ lw $ra, 0x002C($sp)
/* 001F8 80B9A138 8FB00014 */ lw $s0, 0x0014($sp)
/* 001FC 80B9A13C 8FB10018 */ lw $s1, 0x0018($sp)
/* 00200 80B9A140 8FB2001C */ lw $s2, 0x001C($sp)
/* 00204 80B9A144 8FB30020 */ lw $s3, 0x0020($sp)
/* 00208 80B9A148 8FB40024 */ lw $s4, 0x0024($sp)
/* 0020C 80B9A14C 8FB50028 */ lw $s5, 0x0028($sp)
/* 00210 80B9A150 03E00008 */ jr $ra
/* 00214 80B9A154 27BD0030 */ addiu $sp, $sp, 0x0030 ## $sp = 00000000

View file

@ -1,72 +0,0 @@
glabel func_80B9A158
/* 00218 80B9A158 27BDFFC0 */ addiu $sp, $sp, 0xFFC0 ## $sp = FFFFFFC0
/* 0021C 80B9A15C AFBF003C */ sw $ra, 0x003C($sp)
/* 00220 80B9A160 AFB60038 */ sw $s6, 0x0038($sp)
/* 00224 80B9A164 AFB50034 */ sw $s5, 0x0034($sp)
/* 00228 80B9A168 AFB40030 */ sw $s4, 0x0030($sp)
/* 0022C 80B9A16C AFB3002C */ sw $s3, 0x002C($sp)
/* 00230 80B9A170 AFB20028 */ sw $s2, 0x0028($sp)
/* 00234 80B9A174 AFB10024 */ sw $s1, 0x0024($sp)
/* 00238 80B9A178 AFB00020 */ sw $s0, 0x0020($sp)
/* 0023C 80B9A17C F7B40018 */ sdc1 $f20, 0x0018($sp)
/* 00240 80B9A180 84AE001C */ lh $t6, 0x001C($a1) ## 0000001C
/* 00244 80B9A184 3C1680BA */ lui $s6, %hi(D_80B9A818) ## $s6 = 80BA0000
/* 00248 80B9A188 26D6A818 */ addiu $s6, $s6, %lo(D_80B9A818) ## $s6 = 80B9A818
/* 0024C 80B9A18C 31CF0003 */ andi $t7, $t6, 0x0003 ## $t7 = 00000000
/* 00250 80B9A190 000FC040 */ sll $t8, $t7, 1
/* 00254 80B9A194 02D8C821 */ addu $t9, $s6, $t8
/* 00258 80B9A198 87280000 */ lh $t0, 0x0000($t9) ## 00000000
/* 0025C 80B9A19C 00A0A825 */ or $s5, $a1, $zero ## $s5 = 00000000
/* 00260 80B9A1A0 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00264 80B9A1A4 19000023 */ blez $t0, .L80B9A234
/* 00268 80B9A1A8 00009825 */ or $s3, $zero, $zero ## $s3 = 00000000
/* 0026C 80B9A1AC 3C0142A0 */ lui $at, 0x42A0 ## $at = 42A00000
/* 00270 80B9A1B0 4481A000 */ mtc1 $at, $f20 ## $f20 = 80.00
/* 00274 80B9A1B4 24B40024 */ addiu $s4, $a1, 0x0024 ## $s4 = 00000024
/* 00278 80B9A1B8 00008825 */ or $s1, $zero, $zero ## $s1 = 00000000
/* 0027C 80B9A1BC 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
.L80B9A1C0:
/* 00280 80B9A1C0 0C01DF90 */ jal Math_Vec3f_Copy
## Vec3f_Copy
/* 00284 80B9A1C4 02802825 */ or $a1, $s4, $zero ## $a1 = 00000024
/* 00288 80B9A1C8 00119400 */ sll $s2, $s1, 16
/* 0028C 80B9A1CC 00129403 */ sra $s2, $s2, 16
/* 00290 80B9A1D0 00122400 */ sll $a0, $s2, 16
/* 00294 80B9A1D4 0C01DE1C */ jal Math_SinS
## sins?
/* 00298 80B9A1D8 00042403 */ sra $a0, $a0, 16
/* 0029C 80B9A1DC 4600A182 */ mul.s $f6, $f20, $f0
/* 002A0 80B9A1E0 C6040000 */ lwc1 $f4, 0x0000($s0) ## 00000000
/* 002A4 80B9A1E4 00122400 */ sll $a0, $s2, 16
/* 002A8 80B9A1E8 00042403 */ sra $a0, $a0, 16
/* 002AC 80B9A1EC 46062200 */ add.s $f8, $f4, $f6
/* 002B0 80B9A1F0 0C01DE0D */ jal Math_CosS
## coss?
/* 002B4 80B9A1F4 E6080000 */ swc1 $f8, 0x0000($s0) ## 00000000
/* 002B8 80B9A1F8 4600A402 */ mul.s $f16, $f20, $f0
/* 002BC 80B9A1FC C60A0008 */ lwc1 $f10, 0x0008($s0) ## 00000008
/* 002C0 80B9A200 26730001 */ addiu $s3, $s3, 0x0001 ## $s3 = 00000001
/* 002C4 80B9A204 2610000C */ addiu $s0, $s0, 0x000C ## $s0 = 0000000C
/* 002C8 80B9A208 26312000 */ addiu $s1, $s1, 0x2000 ## $s1 = 00002000
/* 002CC 80B9A20C 46105480 */ add.s $f18, $f10, $f16
/* 002D0 80B9A210 E612FFFC */ swc1 $f18, -0x0004($s0) ## 00000008
/* 002D4 80B9A214 86A9001C */ lh $t1, 0x001C($s5) ## 0000001C
/* 002D8 80B9A218 312A0003 */ andi $t2, $t1, 0x0003 ## $t2 = 00000000
/* 002DC 80B9A21C 000A5840 */ sll $t3, $t2, 1
/* 002E0 80B9A220 02CB6021 */ addu $t4, $s6, $t3
/* 002E4 80B9A224 858D0000 */ lh $t5, 0x0000($t4) ## 00000000
/* 002E8 80B9A228 026D082A */ slt $at, $s3, $t5
/* 002EC 80B9A22C 5420FFE4 */ bnel $at, $zero, .L80B9A1C0
/* 002F0 80B9A230 02002025 */ or $a0, $s0, $zero ## $a0 = 0000000C
.L80B9A234:
/* 002F4 80B9A234 8FBF003C */ lw $ra, 0x003C($sp)
/* 002F8 80B9A238 D7B40018 */ ldc1 $f20, 0x0018($sp)
/* 002FC 80B9A23C 8FB00020 */ lw $s0, 0x0020($sp)
/* 00300 80B9A240 8FB10024 */ lw $s1, 0x0024($sp)
/* 00304 80B9A244 8FB20028 */ lw $s2, 0x0028($sp)
/* 00308 80B9A248 8FB3002C */ lw $s3, 0x002C($sp)
/* 0030C 80B9A24C 8FB40030 */ lw $s4, 0x0030($sp)
/* 00310 80B9A250 8FB50034 */ lw $s5, 0x0034($sp)
/* 00314 80B9A254 8FB60038 */ lw $s6, 0x0038($sp)
/* 00318 80B9A258 03E00008 */ jr $ra
/* 0031C 80B9A25C 27BD0040 */ addiu $sp, $sp, 0x0040 ## $sp = 00000000

View file

@ -1,22 +0,0 @@
glabel func_80B9A260
/* 00320 80B9A260 84A3001C */ lh $v1, 0x001C($a1) ## 0000001C
/* 00324 80B9A264 3C1880BA */ lui $t8, %hi(D_80B9A858) ## $t8 = 80BA0000
/* 00328 80B9A268 00031203 */ sra $v0, $v1, 8
/* 0032C 80B9A26C 3042000F */ andi $v0, $v0, 0x000F ## $v0 = 00000000
/* 00330 80B9A270 00021400 */ sll $v0, $v0, 16
/* 00334 80B9A274 00021403 */ sra $v0, $v0, 16
/* 00338 80B9A278 2841000D */ slti $at, $v0, 0x000D
/* 0033C 80B9A27C 14200002 */ bne $at, $zero, .L80B9A288
/* 00340 80B9A280 306E0003 */ andi $t6, $v1, 0x0003 ## $t6 = 00000000
/* 00344 80B9A284 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000
.L80B9A288:
/* 00348 80B9A288 000E7840 */ sll $t7, $t6, 1
/* 0034C 80B9A28C 030FC021 */ addu $t8, $t8, $t7
/* 00350 80B9A290 8718A858 */ lh $t8, %lo(D_80B9A858)($t8)
/* 00354 80B9A294 00024A00 */ sll $t1, $v0, 8
/* 00358 80B9A298 3319F0FF */ andi $t9, $t8, 0xF0FF ## $t9 = 00000000
/* 0035C 80B9A29C A4990000 */ sh $t9, 0x0000($a0) ## 00000000
/* 00360 80B9A2A0 84880000 */ lh $t0, 0x0000($a0) ## 00000000
/* 00364 80B9A2A4 01095025 */ or $t2, $t0, $t1 ## $t2 = 00000000
/* 00368 80B9A2A8 03E00008 */ jr $ra
/* 0036C 80B9A2AC A48A0000 */ sh $t2, 0x0000($a0) ## 00000000

View file

@ -1,116 +0,0 @@
.rdata
glabel D_80B9A880
.asciz "Warning : (%s %d)(arg_data 0x%04x)\n"
.balign 4
glabel D_80B9A8B4
.asciz "../z_obj_mure2.c"
.balign 4
.text
glabel func_80B9A2B0
/* 00370 80B9A2B0 27BDFEF8 */ addiu $sp, $sp, 0xFEF8 ## $sp = FFFFFEF8
/* 00374 80B9A2B4 AFBF0054 */ sw $ra, 0x0054($sp)
/* 00378 80B9A2B8 AFBE0050 */ sw $s8, 0x0050($sp)
/* 0037C 80B9A2BC AFB7004C */ sw $s7, 0x004C($sp)
/* 00380 80B9A2C0 AFB60048 */ sw $s6, 0x0048($sp)
/* 00384 80B9A2C4 AFB50044 */ sw $s5, 0x0044($sp)
/* 00388 80B9A2C8 AFB40040 */ sw $s4, 0x0040($sp)
/* 0038C 80B9A2CC AFB3003C */ sw $s3, 0x003C($sp)
/* 00390 80B9A2D0 AFB20038 */ sw $s2, 0x0038($sp)
/* 00394 80B9A2D4 AFB10034 */ sw $s1, 0x0034($sp)
/* 00398 80B9A2D8 AFB00030 */ sw $s0, 0x0030($sp)
/* 0039C 80B9A2DC 8492001C */ lh $s2, 0x001C($a0) ## 0000001C
/* 003A0 80B9A2E0 3C1980BA */ lui $t9, %hi(D_80B9A860) ## $t9 = 80BA0000
/* 003A4 80B9A2E4 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 003A8 80B9A2E8 32520003 */ andi $s2, $s2, 0x0003 ## $s2 = 00000000
/* 003AC 80B9A2EC 00127080 */ sll $t6, $s2, 2
/* 003B0 80B9A2F0 032EC821 */ addu $t9, $t9, $t6
/* 003B4 80B9A2F4 8F39A860 */ lw $t9, %lo(D_80B9A860)($t9)
/* 003B8 80B9A2F8 00A0A025 */ or $s4, $a1, $zero ## $s4 = 00000000
/* 003BC 80B9A2FC 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000
/* 003C0 80B9A300 0320F809 */ jalr $ra, $t9
/* 003C4 80B9A304 27A40070 */ addiu $a0, $sp, 0x0070 ## $a0 = FFFFFF68
/* 003C8 80B9A308 27A4006E */ addiu $a0, $sp, 0x006E ## $a0 = FFFFFF66
/* 003CC 80B9A30C 0C2E6898 */ jal func_80B9A260
/* 003D0 80B9A310 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000
/* 003D4 80B9A314 3C0880BA */ lui $t0, %hi(D_80B9A818) ## $t0 = 80BA0000
/* 003D8 80B9A318 2508A818 */ addiu $t0, $t0, %lo(D_80B9A818) ## $t0 = 80B9A818
/* 003DC 80B9A31C 00127840 */ sll $t7, $s2, 1
/* 003E0 80B9A320 01E89821 */ addu $s3, $t7, $t0
/* 003E4 80B9A324 86690000 */ lh $t1, 0x0000($s3) ## 00000000
/* 003E8 80B9A328 AFAF0068 */ sw $t7, 0x0068($sp)
/* 003EC 80B9A32C 02009025 */ or $s2, $s0, $zero ## $s2 = 00000000
/* 003F0 80B9A330 19200035 */ blez $t1, .L80B9A408
/* 003F4 80B9A334 00008825 */ or $s1, $zero, $zero ## $s1 = 00000000
/* 003F8 80B9A338 3C1780BA */ lui $s7, %hi(D_80B9A820) ## $s7 = 80BA0000
/* 003FC 80B9A33C 3C1680BA */ lui $s6, %hi(D_80B9A8B4) ## $s6 = 80BA0000
/* 00400 80B9A340 3C1580BA */ lui $s5, %hi(D_80B9A880) ## $s5 = 80BA0000
/* 00404 80B9A344 26B5A880 */ addiu $s5, $s5, %lo(D_80B9A880) ## $s5 = 80B9A880
/* 00408 80B9A348 26D6A8B4 */ addiu $s6, $s6, %lo(D_80B9A8B4) ## $s6 = 80B9A8B4
/* 0040C 80B9A34C 26F7A820 */ addiu $s7, $s7, %lo(D_80B9A820) ## $s7 = 80B9A820
/* 00410 80B9A350 241E000C */ addiu $s8, $zero, 0x000C ## $s8 = 0000000C
.L80B9A354:
/* 00414 80B9A354 8E4A0150 */ lw $t2, 0x0150($s2) ## 00000150
/* 00418 80B9A358 02A02025 */ or $a0, $s5, $zero ## $a0 = 80B9A880
/* 0041C 80B9A35C 02C02825 */ or $a1, $s6, $zero ## $a1 = 80B9A8B4
/* 00420 80B9A360 11400005 */ beq $t2, $zero, .L80B9A378
/* 00424 80B9A364 2406010D */ addiu $a2, $zero, 0x010D ## $a2 = 0000010D
/* 00428 80B9A368 0C00084C */ jal osSyncPrintf
/* 0042C 80B9A36C 8607001C */ lh $a3, 0x001C($s0) ## 0000001C
/* 00430 80B9A370 10000021 */ beq $zero, $zero, .L80B9A3F8
/* 00434 80B9A374 86620000 */ lh $v0, 0x0000($s3) ## 00000000
.L80B9A378:
/* 00438 80B9A378 960B0180 */ lhu $t3, 0x0180($s0) ## 00000180
/* 0043C 80B9A37C 022B6007 */ srav $t4, $t3, $s1
/* 00440 80B9A380 318D0001 */ andi $t5, $t4, 0x0001 ## $t5 = 00000000
/* 00444 80B9A384 55A0001C */ bnel $t5, $zero, .L80B9A3F8
/* 00448 80B9A388 86620000 */ lh $v0, 0x0000($s3) ## 00000000
/* 0044C 80B9A38C 023E0019 */ multu $s1, $s8
/* 00450 80B9A390 8FAE0068 */ lw $t6, 0x0068($sp)
/* 00454 80B9A394 27B80070 */ addiu $t8, $sp, 0x0070 ## $t8 = FFFFFF68
/* 00458 80B9A398 87AA006E */ lh $t2, 0x006E($sp)
/* 0045C 80B9A39C 02EEC821 */ addu $t9, $s7, $t6
/* 00460 80B9A3A0 87260000 */ lh $a2, 0x0000($t9) ## 00000000
/* 00464 80B9A3A4 26841C24 */ addiu $a0, $s4, 0x1C24 ## $a0 = 00001C24
/* 00468 80B9A3A8 02802825 */ or $a1, $s4, $zero ## $a1 = 00000000
/* 0046C 80B9A3AC 00007812 */ mflo $t7
/* 00470 80B9A3B0 01F81021 */ addu $v0, $t7, $t8
/* 00474 80B9A3B4 C4440004 */ lwc1 $f4, 0x0004($v0) ## 00000004
/* 00478 80B9A3B8 8C470000 */ lw $a3, 0x0000($v0) ## 00000000
/* 0047C 80B9A3BC E7A40010 */ swc1 $f4, 0x0010($sp)
/* 00480 80B9A3C0 C4460008 */ lwc1 $f6, 0x0008($v0) ## 00000008
/* 00484 80B9A3C4 E7A60014 */ swc1 $f6, 0x0014($sp)
/* 00488 80B9A3C8 86080030 */ lh $t0, 0x0030($s0) ## 00000030
/* 0048C 80B9A3CC AFA0001C */ sw $zero, 0x001C($sp)
/* 00490 80B9A3D0 AFA80018 */ sw $t0, 0x0018($sp)
/* 00494 80B9A3D4 86090034 */ lh $t1, 0x0034($s0) ## 00000034
/* 00498 80B9A3D8 AFAA0024 */ sw $t2, 0x0024($sp)
/* 0049C 80B9A3DC 0C00C7D4 */ jal Actor_Spawn
## ActorSpawn
/* 004A0 80B9A3E0 AFA90020 */ sw $t1, 0x0020($sp)
/* 004A4 80B9A3E4 10400003 */ beq $v0, $zero, .L80B9A3F4
/* 004A8 80B9A3E8 AE420150 */ sw $v0, 0x0150($s2) ## 00000150
/* 004AC 80B9A3EC 820B0003 */ lb $t3, 0x0003($s0) ## 00000003
/* 004B0 80B9A3F0 A04B0003 */ sb $t3, 0x0003($v0) ## 00000003
.L80B9A3F4:
/* 004B4 80B9A3F4 86620000 */ lh $v0, 0x0000($s3) ## 00000000
.L80B9A3F8:
/* 004B8 80B9A3F8 26310001 */ addiu $s1, $s1, 0x0001 ## $s1 = 00000001
/* 004BC 80B9A3FC 0222082A */ slt $at, $s1, $v0
/* 004C0 80B9A400 1420FFD4 */ bne $at, $zero, .L80B9A354
/* 004C4 80B9A404 26520004 */ addiu $s2, $s2, 0x0004 ## $s2 = 00000004
.L80B9A408:
/* 004C8 80B9A408 8FBF0054 */ lw $ra, 0x0054($sp)
/* 004CC 80B9A40C 8FB00030 */ lw $s0, 0x0030($sp)
/* 004D0 80B9A410 8FB10034 */ lw $s1, 0x0034($sp)
/* 004D4 80B9A414 8FB20038 */ lw $s2, 0x0038($sp)
/* 004D8 80B9A418 8FB3003C */ lw $s3, 0x003C($sp)
/* 004DC 80B9A41C 8FB40040 */ lw $s4, 0x0040($sp)
/* 004E0 80B9A420 8FB50044 */ lw $s5, 0x0044($sp)
/* 004E4 80B9A424 8FB60048 */ lw $s6, 0x0048($sp)
/* 004E8 80B9A428 8FB7004C */ lw $s7, 0x004C($sp)
/* 004EC 80B9A42C 8FBE0050 */ lw $s8, 0x0050($sp)
/* 004F0 80B9A430 03E00008 */ jr $ra
/* 004F4 80B9A434 27BD0108 */ addiu $sp, $sp, 0x0108 ## $sp = 00000000

View file

@ -1,72 +0,0 @@
glabel func_80B9A438
/* 004F8 80B9A438 27BDFFD8 */ addiu $sp, $sp, 0xFFD8 ## $sp = FFFFFFD8
/* 004FC 80B9A43C AFBF0024 */ sw $ra, 0x0024($sp)
/* 00500 80B9A440 AFB30020 */ sw $s3, 0x0020($sp)
/* 00504 80B9A444 AFB2001C */ sw $s2, 0x001C($sp)
/* 00508 80B9A448 AFB10018 */ sw $s1, 0x0018($sp)
/* 0050C 80B9A44C AFB00014 */ sw $s0, 0x0014($sp)
/* 00510 80B9A450 848E001C */ lh $t6, 0x001C($a0) ## 0000001C
/* 00514 80B9A454 3C0280BA */ lui $v0, %hi(D_80B9A818) ## $v0 = 80BA0000
/* 00518 80B9A458 00808825 */ or $s1, $a0, $zero ## $s1 = 00000000
/* 0051C 80B9A45C 31CF0003 */ andi $t7, $t6, 0x0003 ## $t7 = 00000000
/* 00520 80B9A460 000FC040 */ sll $t8, $t7, 1
/* 00524 80B9A464 00581021 */ addu $v0, $v0, $t8
/* 00528 80B9A468 8442A818 */ lh $v0, %lo(D_80B9A818)($v0)
/* 0052C 80B9A46C 00A09825 */ or $s3, $a1, $zero ## $s3 = 00000000
/* 00530 80B9A470 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00534 80B9A474 18400028 */ blez $v0, .L80B9A518
/* 00538 80B9A478 00009025 */ or $s2, $zero, $zero ## $s2 = 00000000
.L80B9A47C:
/* 0053C 80B9A47C 96390180 */ lhu $t9, 0x0180($s1) ## 00000180
/* 00540 80B9A480 02594007 */ srav $t0, $t9, $s2
/* 00544 80B9A484 31090001 */ andi $t1, $t0, 0x0001 ## $t1 = 00000000
/* 00548 80B9A488 55200019 */ bnel $t1, $zero, .L80B9A4F0
/* 0054C 80B9A48C AE000150 */ sw $zero, 0x0150($s0) ## 00000150
/* 00550 80B9A490 8E040150 */ lw $a0, 0x0150($s0) ## 00000150
/* 00554 80B9A494 5080001D */ beql $a0, $zero, .L80B9A50C
/* 00558 80B9A498 26520001 */ addiu $s2, $s2, 0x0001 ## $s2 = 00000001
/* 0055C 80B9A49C 0C00BD04 */ jal Actor_HasParent
/* 00560 80B9A4A0 02602825 */ or $a1, $s3, $zero ## $a1 = 00000000
/* 00564 80B9A4A4 10400007 */ beq $v0, $zero, .L80B9A4C4
/* 00568 80B9A4A8 00000000 */ nop
/* 0056C 80B9A4AC 962A0180 */ lhu $t2, 0x0180($s1) ## 00000180
/* 00570 80B9A4B0 240B0001 */ addiu $t3, $zero, 0x0001 ## $t3 = 00000001
/* 00574 80B9A4B4 024B6004 */ sllv $t4, $t3, $s2
/* 00578 80B9A4B8 014C6825 */ or $t5, $t2, $t4 ## $t5 = 00000000
/* 0057C 80B9A4BC 10000003 */ beq $zero, $zero, .L80B9A4CC
/* 00580 80B9A4C0 A62D0180 */ sh $t5, 0x0180($s1) ## 00000180
.L80B9A4C4:
/* 00584 80B9A4C4 0C00B55C */ jal Actor_Kill
/* 00588 80B9A4C8 8E040150 */ lw $a0, 0x0150($s0) ## 00000150
.L80B9A4CC:
/* 0058C 80B9A4CC AE000150 */ sw $zero, 0x0150($s0) ## 00000150
/* 00590 80B9A4D0 862E001C */ lh $t6, 0x001C($s1) ## 0000001C
/* 00594 80B9A4D4 3C0280BA */ lui $v0, %hi(D_80B9A818) ## $v0 = 80BA0000
/* 00598 80B9A4D8 31CF0003 */ andi $t7, $t6, 0x0003 ## $t7 = 00000000
/* 0059C 80B9A4DC 000FC040 */ sll $t8, $t7, 1
/* 005A0 80B9A4E0 00581021 */ addu $v0, $v0, $t8
/* 005A4 80B9A4E4 10000008 */ beq $zero, $zero, .L80B9A508
/* 005A8 80B9A4E8 8442A818 */ lh $v0, %lo(D_80B9A818)($v0)
/* 005AC 80B9A4EC AE000150 */ sw $zero, 0x0150($s0) ## 00000150
.L80B9A4F0:
/* 005B0 80B9A4F0 8639001C */ lh $t9, 0x001C($s1) ## 0000001C
/* 005B4 80B9A4F4 3C0280BA */ lui $v0, %hi(D_80B9A818) ## $v0 = 80BA0000
/* 005B8 80B9A4F8 33280003 */ andi $t0, $t9, 0x0003 ## $t0 = 00000000
/* 005BC 80B9A4FC 00084840 */ sll $t1, $t0, 1
/* 005C0 80B9A500 00491021 */ addu $v0, $v0, $t1
/* 005C4 80B9A504 8442A818 */ lh $v0, %lo(D_80B9A818)($v0)
.L80B9A508:
/* 005C8 80B9A508 26520001 */ addiu $s2, $s2, 0x0001 ## $s2 = 00000002
.L80B9A50C:
/* 005CC 80B9A50C 0242082A */ slt $at, $s2, $v0
/* 005D0 80B9A510 1420FFDA */ bne $at, $zero, .L80B9A47C
/* 005D4 80B9A514 26100004 */ addiu $s0, $s0, 0x0004 ## $s0 = 00000004
.L80B9A518:
/* 005D8 80B9A518 8FBF0024 */ lw $ra, 0x0024($sp)
/* 005DC 80B9A51C 8FB00014 */ lw $s0, 0x0014($sp)
/* 005E0 80B9A520 8FB10018 */ lw $s1, 0x0018($sp)
/* 005E4 80B9A524 8FB2001C */ lw $s2, 0x001C($sp)
/* 005E8 80B9A528 8FB30020 */ lw $s3, 0x0020($sp)
/* 005EC 80B9A52C 03E00008 */ jr $ra
/* 005F0 80B9A530 27BD0028 */ addiu $sp, $sp, 0x0028 ## $sp = 00000000

View file

@ -1,42 +0,0 @@
glabel func_80B9A534
/* 005F4 80B9A534 848E001C */ lh $t6, 0x001C($a0) ## 0000001C
/* 005F8 80B9A538 3C0380BA */ lui $v1, %hi(D_80B9A818) ## $v1 = 80BA0000
/* 005FC 80B9A53C 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000
/* 00600 80B9A540 31CF0003 */ andi $t7, $t6, 0x0003 ## $t7 = 00000000
/* 00604 80B9A544 000FC040 */ sll $t8, $t7, 1
/* 00608 80B9A548 00781821 */ addu $v1, $v1, $t8
/* 0060C 80B9A54C 8463A818 */ lh $v1, %lo(D_80B9A818)($v1)
/* 00610 80B9A550 00802825 */ or $a1, $a0, $zero ## $a1 = 00000000
/* 00614 80B9A554 1860001A */ blez $v1, .L80B9A5C0
/* 00618 80B9A558 00000000 */ nop
.L80B9A55C:
/* 0061C 80B9A55C 8CA60150 */ lw $a2, 0x0150($a1) ## 00000150
/* 00620 80B9A560 50C00014 */ beql $a2, $zero, .L80B9A5B4
/* 00624 80B9A564 24420001 */ addiu $v0, $v0, 0x0001 ## $v0 = 00000001
/* 00628 80B9A568 94870180 */ lhu $a3, 0x0180($a0) ## 00000180
/* 0062C 80B9A56C 0047C807 */ srav $t9, $a3, $v0
/* 00630 80B9A570 33280001 */ andi $t0, $t9, 0x0001 ## $t0 = 00000000
/* 00634 80B9A574 5500000F */ bnel $t0, $zero, .L80B9A5B4
/* 00638 80B9A578 24420001 */ addiu $v0, $v0, 0x0001 ## $v0 = 00000002
/* 0063C 80B9A57C 8CC90130 */ lw $t1, 0x0130($a2) ## 00000130
/* 00640 80B9A580 240A0001 */ addiu $t2, $zero, 0x0001 ## $t2 = 00000001
/* 00644 80B9A584 004A5804 */ sllv $t3, $t2, $v0
/* 00648 80B9A588 15200009 */ bne $t1, $zero, .L80B9A5B0
/* 0064C 80B9A58C 00EB6025 */ or $t4, $a3, $t3 ## $t4 = 00000000
/* 00650 80B9A590 A48C0180 */ sh $t4, 0x0180($a0) ## 00000180
/* 00654 80B9A594 ACA00150 */ sw $zero, 0x0150($a1) ## 00000150
/* 00658 80B9A598 848D001C */ lh $t5, 0x001C($a0) ## 0000001C
/* 0065C 80B9A59C 3C0380BA */ lui $v1, %hi(D_80B9A818) ## $v1 = 80BA0000
/* 00660 80B9A5A0 31AE0003 */ andi $t6, $t5, 0x0003 ## $t6 = 00000000
/* 00664 80B9A5A4 000E7840 */ sll $t7, $t6, 1
/* 00668 80B9A5A8 006F1821 */ addu $v1, $v1, $t7
/* 0066C 80B9A5AC 8463A818 */ lh $v1, %lo(D_80B9A818)($v1)
.L80B9A5B0:
/* 00670 80B9A5B0 24420001 */ addiu $v0, $v0, 0x0001 ## $v0 = 00000003
.L80B9A5B4:
/* 00674 80B9A5B4 0043082A */ slt $at, $v0, $v1
/* 00678 80B9A5B8 1420FFE8 */ bne $at, $zero, .L80B9A55C
/* 0067C 80B9A5BC 24A50004 */ addiu $a1, $a1, 0x0004 ## $a1 = 00000004
.L80B9A5C0:
/* 00680 80B9A5C0 03E00008 */ jr $ra
/* 00684 80B9A5C4 00000000 */ nop

View file

@ -1,5 +0,0 @@
glabel func_80B9A628
/* 006E8 80B9A628 3C0E80BA */ lui $t6, %hi(func_80B9A638) ## $t6 = 80BA0000
/* 006EC 80B9A62C 25CEA638 */ addiu $t6, $t6, %lo(func_80B9A638) ## $t6 = 80B9A638
/* 006F0 80B9A630 03E00008 */ jr $ra
/* 006F4 80B9A634 AC8E014C */ sw $t6, 0x014C($a0) ## 0000014C

View file

@ -1,9 +0,0 @@
glabel func_80B9A638
/* 006F8 80B9A638 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 006FC 80B9A63C AFBF0014 */ sw $ra, 0x0014($sp)
/* 00700 80B9A640 0C2E6996 */ jal func_80B9A658
/* 00704 80B9A644 AFA5001C */ sw $a1, 0x001C($sp)
/* 00708 80B9A648 8FBF0014 */ lw $ra, 0x0014($sp)
/* 0070C 80B9A64C 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 00710 80B9A650 03E00008 */ jr $ra
/* 00714 80B9A654 00000000 */ nop

View file

@ -1,5 +0,0 @@
glabel func_80B9A658
/* 00718 80B9A658 3C0E80BA */ lui $t6, %hi(func_80B9A668) ## $t6 = 80BA0000
/* 0071C 80B9A65C 25CEA668 */ addiu $t6, $t6, %lo(func_80B9A668) ## $t6 = 80B9A668
/* 00720 80B9A660 03E00008 */ jr $ra
/* 00724 80B9A664 AC8E014C */ sw $t6, 0x014C($a0) ## 0000014C

View file

@ -1,34 +0,0 @@
glabel func_80B9A668
/* 00728 80B9A668 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 0072C 80B9A66C AFBF0014 */ sw $ra, 0x0014($sp)
/* 00730 80B9A670 AFA5001C */ sw $a1, 0x001C($sp)
/* 00734 80B9A674 C48E00EC */ lwc1 $f14, 0x00EC($a0) ## 000000EC
/* 00738 80B9A678 C48C00E4 */ lwc1 $f12, 0x00E4($a0) ## 000000E4
/* 0073C 80B9A67C 0C032D57 */ jal Math3D_Dist1DSq
/* 00740 80B9A680 AFA40018 */ sw $a0, 0x0018($sp)
/* 00744 80B9A684 8FA40018 */ lw $a0, 0x0018($sp)
/* 00748 80B9A688 3C0180BA */ lui $at, %hi(D_80B9A800) ## $at = 80BA0000
/* 0074C 80B9A68C 848E001C */ lh $t6, 0x001C($a0) ## 0000001C
/* 00750 80B9A690 C4860184 */ lwc1 $f6, 0x0184($a0) ## 00000184
/* 00754 80B9A694 31CF0003 */ andi $t7, $t6, 0x0003 ## $t7 = 00000000
/* 00758 80B9A698 000FC080 */ sll $t8, $t7, 2
/* 0075C 80B9A69C 00380821 */ addu $at, $at, $t8
/* 00760 80B9A6A0 C424A800 */ lwc1 $f4, %lo(D_80B9A800)($at)
/* 00764 80B9A6A4 46062202 */ mul.s $f8, $f4, $f6
/* 00768 80B9A6A8 4608003C */ c.lt.s $f0, $f8
/* 0076C 80B9A6AC 00000000 */ nop
/* 00770 80B9A6B0 4502000A */ bc1fl .L80B9A6DC
/* 00774 80B9A6B4 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00778 80B9A6B8 8C990004 */ lw $t9, 0x0004($a0) ## 00000004
/* 0077C 80B9A6BC 37280010 */ ori $t0, $t9, 0x0010 ## $t0 = 00000010
/* 00780 80B9A6C0 AC880004 */ sw $t0, 0x0004($a0) ## 00000004
/* 00784 80B9A6C4 AFA40018 */ sw $a0, 0x0018($sp)
/* 00788 80B9A6C8 0C2E68AC */ jal func_80B9A2B0
/* 0078C 80B9A6CC 8FA5001C */ lw $a1, 0x001C($sp)
/* 00790 80B9A6D0 0C2E69BA */ jal func_80B9A6E8
/* 00794 80B9A6D4 8FA40018 */ lw $a0, 0x0018($sp)
/* 00798 80B9A6D8 8FBF0014 */ lw $ra, 0x0014($sp)
.L80B9A6DC:
/* 0079C 80B9A6DC 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 007A0 80B9A6E0 03E00008 */ jr $ra
/* 007A4 80B9A6E4 00000000 */ nop

View file

@ -1,5 +0,0 @@
glabel func_80B9A6E8
/* 007A8 80B9A6E8 3C0E80BA */ lui $t6, %hi(func_80B9A6F8) ## $t6 = 80BA0000
/* 007AC 80B9A6EC 25CEA6F8 */ addiu $t6, $t6, %lo(func_80B9A6F8) ## $t6 = 80B9A6F8
/* 007B0 80B9A6F0 03E00008 */ jr $ra
/* 007B4 80B9A6F4 AC8E014C */ sw $t6, 0x014C($a0) ## 0000014C

View file

@ -1,37 +0,0 @@
glabel func_80B9A6F8
/* 007B8 80B9A6F8 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0
/* 007BC 80B9A6FC AFBF001C */ sw $ra, 0x001C($sp)
/* 007C0 80B9A700 AFB00018 */ sw $s0, 0x0018($sp)
/* 007C4 80B9A704 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 007C8 80B9A708 0C2E694D */ jal func_80B9A534
/* 007CC 80B9A70C AFA50024 */ sw $a1, 0x0024($sp)
/* 007D0 80B9A710 C60C00E4 */ lwc1 $f12, 0x00E4($s0) ## 000000E4
/* 007D4 80B9A714 0C032D57 */ jal Math3D_Dist1DSq
/* 007D8 80B9A718 C60E00EC */ lwc1 $f14, 0x00EC($s0) ## 000000EC
/* 007DC 80B9A71C 860E001C */ lh $t6, 0x001C($s0) ## 0000001C
/* 007E0 80B9A720 3C0180BA */ lui $at, %hi(D_80B9A80C) ## $at = 80BA0000
/* 007E4 80B9A724 C6060184 */ lwc1 $f6, 0x0184($s0) ## 00000184
/* 007E8 80B9A728 31CF0003 */ andi $t7, $t6, 0x0003 ## $t7 = 00000000
/* 007EC 80B9A72C 000FC080 */ sll $t8, $t7, 2
/* 007F0 80B9A730 00380821 */ addu $at, $at, $t8
/* 007F4 80B9A734 C424A80C */ lwc1 $f4, %lo(D_80B9A80C)($at)
/* 007F8 80B9A738 46062202 */ mul.s $f8, $f4, $f6
/* 007FC 80B9A73C 4600403E */ c.le.s $f8, $f0
/* 00800 80B9A740 00000000 */ nop
/* 00804 80B9A744 4502000B */ bc1fl .L80B9A774
/* 00808 80B9A748 8FBF001C */ lw $ra, 0x001C($sp)
/* 0080C 80B9A74C 8E190004 */ lw $t9, 0x0004($s0) ## 00000004
/* 00810 80B9A750 2401FFEF */ addiu $at, $zero, 0xFFEF ## $at = FFFFFFEF
/* 00814 80B9A754 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00818 80B9A758 03214024 */ and $t0, $t9, $at
/* 0081C 80B9A75C AE080004 */ sw $t0, 0x0004($s0) ## 00000004
/* 00820 80B9A760 0C2E690E */ jal func_80B9A438
/* 00824 80B9A764 8FA50024 */ lw $a1, 0x0024($sp)
/* 00828 80B9A768 0C2E6996 */ jal func_80B9A658
/* 0082C 80B9A76C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00830 80B9A770 8FBF001C */ lw $ra, 0x001C($sp)
.L80B9A774:
/* 00834 80B9A774 8FB00018 */ lw $s0, 0x0018($sp)
/* 00838 80B9A778 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000
/* 0083C 80B9A77C 03E00008 */ jr $ra
/* 00840 80B9A780 00000000 */ nop

View file

@ -1,36 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purpose registers
.section .data
.balign 16
glabel Obj_Mure2_InitVars
.word 0x01510600, 0x00000000, 0x00010000, 0x00000188
.word ObjMure2_Init
.word Actor_Noop
.word ObjMure2_Update
.word 0x00000000
glabel D_80B9A800
.word 0x4A1C4000, 0x4A1C4000, 0x4A1C4000
glabel D_80B9A80C
.word 0x4A316E44, 0x4A316E44, 0x4A316E44
glabel D_80B9A818
.word 0x0009000C, 0x00080000
glabel D_80B9A820
.word 0x01250125, 0x014E0000
glabel D_80B9A828
.word 0x00280666, 0x00282CCC, 0x00285999, 0x00288666, 0x0014C000, 0x00501333, 0x00504000, 0x00506CCC, 0x00509333, 0x0050ACCC, 0x0050C666, 0x003CE000
glabel D_80B9A858
.word 0x00000000, 0x00000000
glabel D_80B9A860
.word func_80B99F40
.word func_80B9A058
.word func_80B9A158
glabel D_80B9A86C
.word 0xB0F40064, 0xB0F80834, 0x30FC0064, 0x00000000, 0x00000000

5
spec
View file

@ -3439,8 +3439,11 @@ endseg
beginseg
name "ovl_Obj_Mure2"
include "build/src/overlays/actors/ovl_Obj_Mure2/z_obj_mure2.o"
include "build/data/overlays/actors/z_obj_mure2.data.o"
#ifdef NON_MATCHING
include "build/src/overlays/actors/ovl_Obj_Mure2/ovl_Obj_Mure2_reloc.o"
#else
include "build/data/overlays/actors/z_obj_mure2.reloc.o"
#endif
endseg
beginseg

View file

@ -10,10 +10,26 @@
#define THIS ((ObjMure2*)thisx)
typedef void (*ObjMure2SetPosFunc)(Vec3f* vec, ObjMure2* this);
typedef struct {
s16 radius;
s16 angle;
} Mure2sScatteredShrubInfo;
void ObjMure2_Init(Actor* thisx, GlobalContext* globalCtx);
void ObjMure2_Update(Actor* thisx, GlobalContext* globalCtx);
/*
void ObjMure2_SetPosShrubCircle(Vec3f* vec, ObjMure2* this);
void ObjMure2_SetPosShrubScattered(Vec3f* vec, ObjMure2* this);
void ObjMure2_SetPosRockCircle(Vec3f* vec, ObjMure2* this);
void ObjMure2_Wait(ObjMure2* this, GlobalContext* globalCtx);
void func_80B9A668(ObjMure2* this, GlobalContext* globalCtx);
void func_80B9A6F8(ObjMure2* this, GlobalContext* globalCtx);
void ObjMure2_SetupWait(ObjMure2* this);
void func_80B9A658(ObjMure2* this);
void func_80B9A6E8(ObjMure2* this);
const ActorInit Obj_Mure2_InitVars = {
ACTOR_OBJ_MURE2,
ACTORTYPE_PROP,
@ -25,33 +41,196 @@ const ActorInit Obj_Mure2_InitVars = {
(ActorFunc)ObjMure2_Update,
NULL,
};
*/
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Mure2/func_80B99F40.s")
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Mure2/func_80B9A058.s")
static f32 sDistSquared1[] = { SQ(1600.0f), SQ(1600.0f), SQ(1600.0f) };
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Mure2/func_80B9A158.s")
static f32 sDistSquared2[] = { SQ(1705.0f), SQ(1705.0f), SQ(1705.0f) };
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Mure2/func_80B9A260.s")
/*static*/ s16 D_80B9A818[] = { 9, 12, 8 };
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Mure2/func_80B9A2B0.s")
static s16 sActorSpawnIDs[] = { ACTOR_EN_KUSA, ACTOR_EN_KUSA, ACTOR_EN_ISHI };
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Mure2/func_80B9A438.s")
#ifdef NON_MATCHING
// Very close to matching, just regalloc and a stack diff
void ObjMure2_SetPosShrubCircle(Vec3f* vec, ObjMure2* this) {
Vec3f* vecPtr = vec;
s32 i;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Mure2/func_80B9A534.s")
Math_Vec3f_Copy(vecPtr, &this->actor.posRot.pos);
for (i = 1, vecPtr++; i < D_80B9A818[this->actor.params & 3]; vecPtr++, i++) {
Math_Vec3f_Copy(vecPtr, &this->actor.posRot.pos);
vecPtr->x += (80.0f * Math_SinS((i - 1) * 0x2000));
vecPtr->z += (80.0f * Math_CosS((i - 1) * 0x2000));
}
}
#else
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Mure2/ObjMure2_SetPosShrubCircle.s")
#endif
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Mure2/ObjMure2_Init.s")
static Mure2sScatteredShrubInfo sScatteredShrubInfo[] = {
{ 40, 0x0666 }, { 40, 0x2CCC }, { 40, 0x5999 }, { 40, 0x8666 }, { 20, 0xC000 }, { 80, 0x1333 },
{ 80, 0x4000 }, { 80, 0x6CCC }, { 80, 0x9333 }, { 80, 0xACCC }, { 80, 0xC666 }, { 60, 0xE000 },
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Mure2/func_80B9A628.s")
void ObjMure2_SetPosShrubScattered(Vec3f* vec, ObjMure2* this) {
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Mure2/func_80B9A638.s")
Vec3f* vecPtr;
s32 i;
Vec3f* actorPos = &this->actor.posRot.pos; // Required to match
ObjMure2* this2 = this; // Required to match
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Mure2/func_80B9A658.s")
for (vecPtr = vec, i = 0; i < D_80B9A818[this2->actor.params & 3]; vecPtr++, i++) {
Math_Vec3f_Copy(vecPtr, actorPos);
if (1) {}
vecPtr->x += (sScatteredShrubInfo[i].radius * Math_CosS(sScatteredShrubInfo[i].angle));
vecPtr->z -= (sScatteredShrubInfo[i].radius * Math_SinS(sScatteredShrubInfo[i].angle));
}
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Mure2/func_80B9A668.s")
void ObjMure2_SetPosRockCircle(Vec3f* vec, ObjMure2* this) {
Vec3f* vecPtr = vec;
s32 i;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Mure2/func_80B9A6E8.s")
for (i = 0; i < D_80B9A818[this->actor.params & 3]; vecPtr++, i++) {
Math_Vec3f_Copy(vecPtr, &this->actor.posRot.pos);
vecPtr->x += (80.0f * Math_SinS(i * 0x2000));
vecPtr->z += (80.0f * Math_CosS(i * 0x2000));
}
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Mure2/func_80B9A6F8.s")
void ObjMure2_SetActorSpawnParams(s16* params, ObjMure2* this) {
static s16 actorSpawnParams[] = { 0, 0, 0 };
s16 dropTable = (this->actor.params >> 8) & 0xF;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Mure2/ObjMure2_Update.s")
if (dropTable >= 13) {
dropTable = 0;
}
*params = actorSpawnParams[this->actor.params & 3] & 0xF0FF;
*params |= (dropTable << 8);
}
void ObjMure2_SpawnActors(ObjMure2* this, GlobalContext* globalCtx) {
static ObjMure2SetPosFunc setPosFunc[] = {
ObjMure2_SetPosShrubCircle,
ObjMure2_SetPosShrubScattered,
ObjMure2_SetPosRockCircle,
};
s32 actorNum = this->actor.params & 3;
s32 i;
Vec3f spawnPos[12];
s16 params;
setPosFunc[actorNum](&spawnPos, this);
ObjMure2_SetActorSpawnParams(&params, this);
for (i = 0; i < D_80B9A818[actorNum]; i++) {
if (this->actorSpawnPtrList[i] != NULL) {
// Translation: Warning : I already have a child (%s %d)(arg_data 0x%04x)
osSyncPrintf("Warning : 既に子供がいる(%s %d)(arg_data 0x%04x)\n", "../z_obj_mure2.c", 269,
this->actor.params);
continue;
}
if (((this->currentActorNum >> i) & 1) == 0) {
this->actorSpawnPtrList[i] =
Actor_Spawn(&globalCtx->actorCtx, globalCtx, sActorSpawnIDs[actorNum], spawnPos[i].x, spawnPos[i].y,
spawnPos[i].z, this->actor.posRot.rot.x, 0, this->actor.posRot.rot.z, params);
if (this->actorSpawnPtrList[i] != NULL) {
this->actorSpawnPtrList[i]->room = this->actor.room;
}
}
}
}
void ObjMure2_CleanupAndDie(ObjMure2* this, GlobalContext* globalCtx) {
s32 i;
for (i = 0; i < D_80B9A818[this->actor.params & 3]; i++) {
if (((this->currentActorNum >> i) & 1) == 0) {
if (this->actorSpawnPtrList[i] != NULL) {
if (Actor_HasParent(this->actorSpawnPtrList[i], globalCtx)) {
this->currentActorNum |= (1 << i);
} else {
Actor_Kill(this->actorSpawnPtrList[i]);
}
this->actorSpawnPtrList[i] = NULL;
}
} else {
this->actorSpawnPtrList[i] = NULL;
}
}
}
void func_80B9A534(ObjMure2* this) {
s32 i;
for (i = 0; i < D_80B9A818[this->actor.params & 3]; i++) {
if (this->actorSpawnPtrList[i] != NULL && (((this->currentActorNum >> i) & 1) == 0) &&
(this->actorSpawnPtrList[i]->update == NULL)) {
this->currentActorNum |= (1 << i);
this->actorSpawnPtrList[i] = NULL;
}
}
}
static InitChainEntry sInitChain[] = {
ICHAIN_F32(uncullZoneForward, 100, ICHAIN_CONTINUE),
ICHAIN_F32(uncullZoneScale, 2100, ICHAIN_CONTINUE),
ICHAIN_F32(uncullZoneDownward, 100, ICHAIN_STOP),
};
void ObjMure2_Init(Actor* thisx, GlobalContext* globalCtx) {
ObjMure2* this = THIS;
Actor_ProcessInitChain(&this->actor, sInitChain);
if (globalCtx->csCtx.state != 0) {
this->actor.uncullZoneForward += 1200.0f;
}
ObjMure2_SetupWait(this);
}
void ObjMure2_SetupWait(ObjMure2* this) {
this->actionFunc = ObjMure2_Wait;
}
void ObjMure2_Wait(ObjMure2* this, GlobalContext* globalCtx) {
func_80B9A658(this);
}
void func_80B9A658(ObjMure2* this) {
this->actionFunc = func_80B9A668;
}
void func_80B9A668(ObjMure2* this, GlobalContext* globalCtx) {
if (Math3D_Dist1DSq(this->actor.projectedPos.x, this->actor.projectedPos.z) <
(sDistSquared1[this->actor.params & 3] * this->unk_184)) {
this->actor.flags |= 0x10;
ObjMure2_SpawnActors(this, globalCtx);
func_80B9A6E8(this);
}
}
void func_80B9A6E8(ObjMure2* this) {
this->actionFunc = func_80B9A6F8;
}
void func_80B9A6F8(ObjMure2* this, GlobalContext* globalCtx) {
func_80B9A534(this);
if ((sDistSquared2[this->actor.params & 3] * this->unk_184) <=
Math3D_Dist1DSq(this->actor.projectedPos.x, this->actor.projectedPos.z)) {
this->actor.flags &= ~0x10;
ObjMure2_CleanupAndDie(this, globalCtx);
func_80B9A658(this);
}
}
void ObjMure2_Update(Actor* thisx, GlobalContext* globalCtx) {
ObjMure2* this = THIS;
if (globalCtx->csCtx.state == 0) {
this->unk_184 = 1.0f;
} else {
this->unk_184 = 4.0f;
}
this->actionFunc(this, globalCtx);
}

View file

@ -6,9 +6,14 @@
struct ObjMure2;
typedef void (*ObjMure2ActionFunc)(struct ObjMure2*, GlobalContext*);
typedef struct ObjMure2 {
/* 0x0000 */ Actor actor;
/* 0x014C */ char unk_14C[0x3C];
/* 0x014C */ ObjMure2ActionFunc actionFunc;
/* 0x0150 */ Actor* actorSpawnPtrList[12]; // pointers to all of the actors spawned by the parent
/* 0x0180 */ u16 currentActorNum; // used to keep track of of the index to actorSpawnPtrList
/* 0x0184 */ f32 unk_184; // some sort of distance
} ObjMure2; // size = 0x0188
extern const ActorInit Obj_Mure2_InitVars;