1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-05-11 03:23:46 +00:00

EnTp, 1 nonmatching, and object_tp (#782)

* Data imported, 8 easy functions matched

* Init only remaining nonmatching, data in

* some renaming & fiddling with Init, still nonmatching

* fix colours

* Init still not matching

* Decompile object_tp

* renames

* Rename func_80B20DE0

* Horrible new idea

* Known equivalent, docs next

* Another attempt

* Finished naming in object_tp

* Named functions, more enums

* DrawBridge -> Drawbridge

* skulltulla -> Skulltula

* Name almost all struct variables

* Named most of the temps

* delete asm

* spec

* Missed data file, whoops

* Review

* More review changes
This commit is contained in:
EllipticEllipsis 2021-04-21 19:26:24 +01:00 committed by GitHub
parent e73681ce74
commit 7cc67f70c1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 798 additions and 2005 deletions

View file

@ -1,11 +0,0 @@
glabel EnTp_Destroy
/* 0027C 80B2105C 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 00280 80B21060 00803025 */ or $a2, $a0, $zero ## $a2 = 00000000
/* 00284 80B21064 AFBF0014 */ sw $ra, 0x0014($sp)
/* 00288 80B21068 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 0028C 80B2106C 0C016F32 */ jal Collider_DestroyJntSph
/* 00290 80B21070 24C50174 */ addiu $a1, $a2, 0x0174 ## $a1 = 00000174
/* 00294 80B21074 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00298 80B21078 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 0029C 80B2107C 03E00008 */ jr $ra
/* 002A0 80B21080 00000000 */ nop

View file

@ -1,201 +0,0 @@
.rdata
glabel D_80B22B40
.asciz "../z_en_tp.c"
.balign 4
glabel D_80B22B50
.asciz "../z_en_tp.c"
.balign 4
glabel D_80B22B60
.asciz "../z_en_tp.c"
.balign 4
glabel D_80B22B70
.asciz "../z_en_tp.c"
.balign 4
.text
glabel EnTp_Draw
/* 019CC 80B227AC 27BDFFA0 */ addiu $sp, $sp, 0xFFA0 ## $sp = FFFFFFA0
/* 019D0 80B227B0 AFBF0014 */ sw $ra, 0x0014($sp)
/* 019D4 80B227B4 AFA40060 */ sw $a0, 0x0060($sp)
/* 019D8 80B227B8 AFA50064 */ sw $a1, 0x0064($sp)
/* 019DC 80B227BC 8CA50000 */ lw $a1, 0x0000($a1) ## 00000000
/* 019E0 80B227C0 3C0680B2 */ lui $a2, %hi(D_80B22B40) ## $a2 = 80B20000
/* 019E4 80B227C4 24C62B40 */ addiu $a2, $a2, %lo(D_80B22B40) ## $a2 = 80B22B40
/* 019E8 80B227C8 27A40044 */ addiu $a0, $sp, 0x0044 ## $a0 = FFFFFFE4
/* 019EC 80B227CC 240705AB */ addiu $a3, $zero, 0x05AB ## $a3 = 000005AB
/* 019F0 80B227D0 0C031AB1 */ jal Graph_OpenDisps
/* 019F4 80B227D4 AFA50054 */ sw $a1, 0x0054($sp)
/* 019F8 80B227D8 8FAF0060 */ lw $t7, 0x0060($sp)
/* 019FC 80B227DC 24010002 */ addiu $at, $zero, 0x0002 ## $at = 00000002
/* 01A00 80B227E0 8FA80054 */ lw $t0, 0x0054($sp)
/* 01A04 80B227E4 8DF80150 */ lw $t8, 0x0150($t7) ## 00000150
/* 01A08 80B227E8 5301008A */ beql $t8, $at, .L80B22A14
/* 01A0C 80B227EC 8FAC0064 */ lw $t4, 0x0064($sp)
/* 01A10 80B227F0 85E2001C */ lh $v0, 0x001C($t7) ## 0000001C
/* 01A14 80B227F4 2401000C */ addiu $at, $zero, 0x000C ## $at = 0000000C
/* 01A18 80B227F8 8FB90064 */ lw $t9, 0x0064($sp)
/* 01A1C 80B227FC 04420004 */ bltzl $v0, .L80B22810
/* 01A20 80B22800 8F240000 */ lw $a0, 0x0000($t9) ## 00000000
/* 01A24 80B22804 14410025 */ bne $v0, $at, .L80B2289C
/* 01A28 80B22808 8FB80064 */ lw $t8, 0x0064($sp)
/* 01A2C 80B2280C 8F240000 */ lw $a0, 0x0000($t9) ## 00000000
.L80B22810:
/* 01A30 80B22810 0C024F46 */ jal func_80093D18
/* 01A34 80B22814 AFA80054 */ sw $t0, 0x0054($sp)
/* 01A38 80B22818 8FA80054 */ lw $t0, 0x0054($sp)
/* 01A3C 80B2281C 3C0ADA38 */ lui $t2, 0xDA38 ## $t2 = DA380000
/* 01A40 80B22820 354A0003 */ ori $t2, $t2, 0x0003 ## $t2 = DA380003
/* 01A44 80B22824 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0
/* 01A48 80B22828 3C0580B2 */ lui $a1, %hi(D_80B22B50) ## $a1 = 80B20000
/* 01A4C 80B2282C 24A52B50 */ addiu $a1, $a1, %lo(D_80B22B50) ## $a1 = 80B22B50
/* 01A50 80B22830 24490008 */ addiu $t1, $v0, 0x0008 ## $t1 = 00000008
/* 01A54 80B22834 AD0902C0 */ sw $t1, 0x02C0($t0) ## 000002C0
/* 01A58 80B22838 AC4A0000 */ sw $t2, 0x0000($v0) ## 00000000
/* 01A5C 80B2283C 8FAB0064 */ lw $t3, 0x0064($sp)
/* 01A60 80B22840 240605B3 */ addiu $a2, $zero, 0x05B3 ## $a2 = 000005B3
/* 01A64 80B22844 8D640000 */ lw $a0, 0x0000($t3) ## 00000000
/* 01A68 80B22848 AFA80054 */ sw $t0, 0x0054($sp)
/* 01A6C 80B2284C 0C0346A2 */ jal Matrix_NewMtx
/* 01A70 80B22850 AFA20040 */ sw $v0, 0x0040($sp)
/* 01A74 80B22854 8FA30040 */ lw $v1, 0x0040($sp)
/* 01A78 80B22858 8FA80054 */ lw $t0, 0x0054($sp)
/* 01A7C 80B2285C 44806000 */ mtc1 $zero, $f12 ## $f12 = 0.00
/* 01A80 80B22860 AC620004 */ sw $v0, 0x0004($v1) ## 00000004
/* 01A84 80B22864 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0
/* 01A88 80B22868 3C0E0600 */ lui $t6, %hi(D_060008D0) ## $t6 = 06000000
/* 01A8C 80B2286C 25CE08D0 */ addiu $t6, $t6, %lo(D_060008D0) ## $t6 = 060008D0
/* 01A90 80B22870 244C0008 */ addiu $t4, $v0, 0x0008 ## $t4 = 00000008
/* 01A94 80B22874 3C0DDE00 */ lui $t5, 0xDE00 ## $t5 = DE000000
/* 01A98 80B22878 AD0C02C0 */ sw $t4, 0x02C0($t0) ## 000002C0
/* 01A9C 80B2287C 3C064100 */ lui $a2, 0x4100 ## $a2 = 41000000
/* 01AA0 80B22880 24070001 */ addiu $a3, $zero, 0x0001 ## $a3 = 00000001
/* 01AA4 80B22884 46006386 */ mov.s $f14, $f12
/* 01AA8 80B22888 AC4E0004 */ sw $t6, 0x0004($v0) ## 00000004
/* 01AAC 80B2288C 0C034261 */ jal Matrix_Translate
/* 01AB0 80B22890 AC4D0000 */ sw $t5, 0x0000($v0) ## 00000000
/* 01AB4 80B22894 1000005F */ beq $zero, $zero, .L80B22A14
/* 01AB8 80B22898 8FAC0064 */ lw $t4, 0x0064($sp)
.L80B2289C:
/* 01ABC 80B2289C 8F040000 */ lw $a0, 0x0000($t8) ## 00000000
/* 01AC0 80B228A0 0C024F61 */ jal func_80093D84
/* 01AC4 80B228A4 AFA80054 */ sw $t0, 0x0054($sp)
/* 01AC8 80B228A8 8FA40064 */ lw $a0, 0x0064($sp)
/* 01ACC 80B228AC 3C010001 */ lui $at, 0x0001 ## $at = 00010000
/* 01AD0 80B228B0 34211DA0 */ ori $at, $at, 0x1DA0 ## $at = 00011DA0
/* 01AD4 80B228B4 0C0347F5 */ jal func_800D1FD4
/* 01AD8 80B228B8 00812021 */ addu $a0, $a0, $at
/* 01ADC 80B228BC 8FA80054 */ lw $t0, 0x0054($sp)
/* 01AE0 80B228C0 3C19FA00 */ lui $t9, 0xFA00 ## $t9 = FA000000
/* 01AE4 80B228C4 3C05E700 */ lui $a1, 0xE700 ## $a1 = E7000000
/* 01AE8 80B228C8 8D0202D0 */ lw $v0, 0x02D0($t0) ## 000002D0
/* 01AEC 80B228CC 3C040600 */ lui $a0, %hi(D_06000C68) ## $a0 = 06000000
/* 01AF0 80B228D0 24840C68 */ addiu $a0, $a0, %lo(D_06000C68) ## $a0 = 06000C68
/* 01AF4 80B228D4 244F0008 */ addiu $t7, $v0, 0x0008 ## $t7 = 00000008
/* 01AF8 80B228D8 AD0F02D0 */ sw $t7, 0x02D0($t0) ## 000002D0
/* 01AFC 80B228DC AC590000 */ sw $t9, 0x0000($v0) ## 00000000
/* 01B00 80B228E0 8FA90060 */ lw $t1, 0x0060($sp)
/* 01B04 80B228E4 3C0100FF */ lui $at, 0x00FF ## $at = 00FF0000
/* 01B08 80B228E8 3421FFFF */ ori $at, $at, 0xFFFF ## $at = 00FFFFFF
/* 01B0C 80B228EC 852B0160 */ lh $t3, 0x0160($t1) ## 00000160
/* 01B10 80B228F0 852E015E */ lh $t6, 0x015E($t1) ## 0000015E
/* 01B14 80B228F4 240605C8 */ addiu $a2, $zero, 0x05C8 ## $a2 = 000005C8
/* 01B18 80B228F8 000B6600 */ sll $t4, $t3, 24
/* 01B1C 80B228FC 358DFF00 */ ori $t5, $t4, 0xFF00 ## $t5 = 0000FF00
/* 01B20 80B22900 31D800FF */ andi $t8, $t6, 0x00FF ## $t8 = 00000000
/* 01B24 80B22904 01B87825 */ or $t7, $t5, $t8 ## $t7 = 0000FF00
/* 01B28 80B22908 AC4F0004 */ sw $t7, 0x0004($v0) ## 00000004
/* 01B2C 80B2290C 8D0202D0 */ lw $v0, 0x02D0($t0) ## 000002D0
/* 01B30 80B22910 3C0C5566 */ lui $t4, 0x5566 ## $t4 = 55660000
/* 01B34 80B22914 3C0BFC30 */ lui $t3, 0xFC30 ## $t3 = FC300000
/* 01B38 80B22918 24590008 */ addiu $t9, $v0, 0x0008 ## $t9 = 00000008
/* 01B3C 80B2291C AD1902D0 */ sw $t9, 0x02D0($t0) ## 000002D0
/* 01B40 80B22920 AC450000 */ sw $a1, 0x0000($v0) ## 00000000
/* 01B44 80B22924 AC400004 */ sw $zero, 0x0004($v0) ## 00000004
/* 01B48 80B22928 8D0202D0 */ lw $v0, 0x02D0($t0) ## 000002D0
/* 01B4C 80B2292C 356BB261 */ ori $t3, $t3, 0xB261 ## $t3 = FC30B261
/* 01B50 80B22930 358CDB6D */ ori $t4, $t4, 0xDB6D ## $t4 = 5566DB6D
/* 01B54 80B22934 244A0008 */ addiu $t2, $v0, 0x0008 ## $t2 = 00000008
/* 01B58 80B22938 AD0A02D0 */ sw $t2, 0x02D0($t0) ## 000002D0
/* 01B5C 80B2293C AC4B0000 */ sw $t3, 0x0000($v0) ## 00000000
/* 01B60 80B22940 AC4C0004 */ sw $t4, 0x0004($v0) ## 00000004
/* 01B64 80B22944 8D0202D0 */ lw $v0, 0x02D0($t0) ## 000002D0
/* 01B68 80B22948 0004C100 */ sll $t8, $a0, 4
/* 01B6C 80B2294C 00187F02 */ srl $t7, $t8, 28
/* 01B70 80B22950 24490008 */ addiu $t1, $v0, 0x0008 ## $t1 = 00000008
/* 01B74 80B22954 AD0902D0 */ sw $t1, 0x02D0($t0) ## 000002D0
/* 01B78 80B22958 AC450000 */ sw $a1, 0x0000($v0) ## 00000000
/* 01B7C 80B2295C AC400004 */ sw $zero, 0x0004($v0) ## 00000004
/* 01B80 80B22960 8D0202D0 */ lw $v0, 0x02D0($t0) ## 000002D0
/* 01B84 80B22964 3C0DDB06 */ lui $t5, 0xDB06 ## $t5 = DB060000
/* 01B88 80B22968 35AD0020 */ ori $t5, $t5, 0x0020 ## $t5 = DB060020
/* 01B8C 80B2296C 244E0008 */ addiu $t6, $v0, 0x0008 ## $t6 = 00000008
/* 01B90 80B22970 000FC880 */ sll $t9, $t7, 2
/* 01B94 80B22974 3C0A8016 */ lui $t2, %hi(gSegments)
/* 01B98 80B22978 AD0E02D0 */ sw $t6, 0x02D0($t0) ## 000002D0
/* 01B9C 80B2297C 01595021 */ addu $t2, $t2, $t9
/* 01BA0 80B22980 AC4D0000 */ sw $t5, 0x0000($v0) ## 00000000
/* 01BA4 80B22984 8D4A6FA8 */ lw $t2, %lo(gSegments)($t2)
/* 01BA8 80B22988 00815824 */ and $t3, $a0, $at
/* 01BAC 80B2298C 3C018000 */ lui $at, 0x8000 ## $at = 80000000
/* 01BB0 80B22990 014B6021 */ addu $t4, $t2, $t3
/* 01BB4 80B22994 01814821 */ addu $t1, $t4, $at
/* 01BB8 80B22998 AC490004 */ sw $t1, 0x0004($v0) ## 00000004
/* 01BBC 80B2299C 8D0202D0 */ lw $v0, 0x02D0($t0) ## 000002D0
/* 01BC0 80B229A0 3C18DA38 */ lui $t8, 0xDA38 ## $t8 = DA380000
/* 01BC4 80B229A4 37180003 */ ori $t8, $t8, 0x0003 ## $t8 = DA380003
/* 01BC8 80B229A8 244E0008 */ addiu $t6, $v0, 0x0008 ## $t6 = 00000008
/* 01BCC 80B229AC AD0E02D0 */ sw $t6, 0x02D0($t0) ## 000002D0
/* 01BD0 80B229B0 AC450000 */ sw $a1, 0x0000($v0) ## 00000000
/* 01BD4 80B229B4 AC400004 */ sw $zero, 0x0004($v0) ## 00000004
/* 01BD8 80B229B8 8D0202D0 */ lw $v0, 0x02D0($t0) ## 000002D0
/* 01BDC 80B229BC 3C0580B2 */ lui $a1, %hi(D_80B22B60) ## $a1 = 80B20000
/* 01BE0 80B229C0 24A52B60 */ addiu $a1, $a1, %lo(D_80B22B60) ## $a1 = 80B22B60
/* 01BE4 80B229C4 244D0008 */ addiu $t5, $v0, 0x0008 ## $t5 = 00000008
/* 01BE8 80B229C8 AD0D02D0 */ sw $t5, 0x02D0($t0) ## 000002D0
/* 01BEC 80B229CC AC580000 */ sw $t8, 0x0000($v0) ## 00000000
/* 01BF0 80B229D0 8FAF0064 */ lw $t7, 0x0064($sp)
/* 01BF4 80B229D4 8DE40000 */ lw $a0, 0x0000($t7) ## 0000FF00
/* 01BF8 80B229D8 AFA80054 */ sw $t0, 0x0054($sp)
/* 01BFC 80B229DC 0C0346A2 */ jal Matrix_NewMtx
/* 01C00 80B229E0 AFA20020 */ sw $v0, 0x0020($sp)
/* 01C04 80B229E4 8FA30020 */ lw $v1, 0x0020($sp)
/* 01C08 80B229E8 8FA80054 */ lw $t0, 0x0054($sp)
/* 01C0C 80B229EC 3C0B0600 */ lui $t3, %hi(D_06000000) ## $t3 = 06000000
/* 01C10 80B229F0 AC620004 */ sw $v0, 0x0004($v1) ## 00000004
/* 01C14 80B229F4 8D0202D0 */ lw $v0, 0x02D0($t0) ## 000002D0
/* 01C18 80B229F8 256B0000 */ addiu $t3, $t3, %lo(D_06000000) ## $t3 = 06000000
/* 01C1C 80B229FC 3C0ADE00 */ lui $t2, 0xDE00 ## $t2 = DE000000
/* 01C20 80B22A00 24590008 */ addiu $t9, $v0, 0x0008 ## $t9 = 00000008
/* 01C24 80B22A04 AD1902D0 */ sw $t9, 0x02D0($t0) ## 000002D0
/* 01C28 80B22A08 AC4B0004 */ sw $t3, 0x0004($v0) ## 00000004
/* 01C2C 80B22A0C AC4A0000 */ sw $t2, 0x0000($v0) ## 00000000
/* 01C30 80B22A10 8FAC0064 */ lw $t4, 0x0064($sp)
.L80B22A14:
/* 01C34 80B22A14 3C0680B2 */ lui $a2, %hi(D_80B22B70) ## $a2 = 80B20000
/* 01C38 80B22A18 24C62B70 */ addiu $a2, $a2, %lo(D_80B22B70) ## $a2 = 80B22B70
/* 01C3C 80B22A1C 27A40044 */ addiu $a0, $sp, 0x0044 ## $a0 = FFFFFFE4
/* 01C40 80B22A20 240705D7 */ addiu $a3, $zero, 0x05D7 ## $a3 = 000005D7
/* 01C44 80B22A24 0C031AD5 */ jal Graph_CloseDisps
/* 01C48 80B22A28 8D850000 */ lw $a1, 0x0000($t4) ## 00000000
/* 01C4C 80B22A2C 8FA30060 */ lw $v1, 0x0060($sp)
/* 01C50 80B22A30 2401000B */ addiu $at, $zero, 0x000B ## $at = 0000000B
/* 01C54 80B22A34 00002025 */ or $a0, $zero, $zero ## $a0 = 00000000
/* 01C58 80B22A38 8462001C */ lh $v0, 0x001C($v1) ## 0000001C
/* 01C5C 80B22A3C 18400003 */ blez $v0, .L80B22A4C
/* 01C60 80B22A40 00000000 */ nop
/* 01C64 80B22A44 54410004 */ bnel $v0, $at, .L80B22A58
/* 01C68 80B22A48 8FBF0014 */ lw $ra, 0x0014($sp)
.L80B22A4C:
/* 01C6C 80B22A4C 0C018A29 */ jal Collider_UpdateSpheres
/* 01C70 80B22A50 24650174 */ addiu $a1, $v1, 0x0174 ## $a1 = 00000174
/* 01C74 80B22A54 8FBF0014 */ lw $ra, 0x0014($sp)
.L80B22A58:
/* 01C78 80B22A58 27BD0060 */ addiu $sp, $sp, 0x0060 ## $sp = 00000000
/* 01C7C 80B22A5C 03E00008 */ jr $ra
/* 01C80 80B22A60 00000000 */ nop
/* 01C84 80B22A64 00000000 */ nop
/* 01C88 80B22A68 00000000 */ nop
/* 01C8C 80B22A6C 00000000 */ nop

View file

@ -9,7 +9,7 @@ glabel EnTp_Init
/* 00010 80B20DF0 00A0B025 */ or $s6, $a1, $zero ## $s6 = 00000000
/* 00014 80B20DF4 AFBF006C */ sw $ra, 0x006C($sp)
/* 00018 80B20DF8 AFB30054 */ sw $s3, 0x0054($sp)
/* 0001C 80B20DFC 3C0580B2 */ lui $a1, %hi(D_80B22AE4) ## $a1 = 80B20000
/* 0001C 80B20DFC 3C0580B2 */ lui $a1, %hi(sInitChain) ## $a1 = 80B20000
/* 00020 80B20E00 00809825 */ or $s3, $a0, $zero ## $s3 = 00000000
/* 00024 80B20E04 AFBE0068 */ sw $s8, 0x0068($sp)
/* 00028 80B20E08 AFB70064 */ sw $s7, 0x0064($sp)
@ -23,10 +23,10 @@ glabel EnTp_Init
/* 00048 80B20E28 F7B40030 */ sdc1 $f20, 0x0030($sp)
/* 0004C 80B20E2C 0C01E037 */ jal Actor_ProcessInitChain
/* 00050 80B20E30 24A52AE4 */ addiu $a1, $a1, %lo(D_80B22AE4) ## $a1 = 80B22AE4
/* 00054 80B20E34 3C0F80B2 */ lui $t7, %hi(D_80B22AC4) ## $t7 = 80B20000
/* 00050 80B20E30 24A52AE4 */ addiu $a1, $a1, %lo(sInitChain) ## $a1 = 80B22AE4
/* 00054 80B20E34 3C0F80B2 */ lui $t7, %hi(sDamageTable) ## $t7 = 80B20000
/* 00058 80B20E38 240E0003 */ addiu $t6, $zero, 0x0003 ## $t6 = 00000003
/* 0005C 80B20E3C 25EF2AC4 */ addiu $t7, $t7, %lo(D_80B22AC4) ## $t7 = 80B22AC4
/* 0005C 80B20E3C 25EF2AC4 */ addiu $t7, $t7, %lo(sDamageTable) ## $t7 = 80B22AC4
/* 00060 80B20E40 3C068003 */ lui $a2, %hi(ActorShadow_DrawCircle)
/* 00064 80B20E44 3C073E0F */ lui $a3, 0x3E0F ## $a3 = 3E0F0000
/* 00068 80B20E48 A26E001F */ sb $t6, 0x001F($s3) ## 0000001F
@ -47,10 +47,10 @@ glabel EnTp_Init
/* 000A0 80B20E80 02002825 */ or $a1, $s0, $zero ## $a1 = 00000174
/* 000A4 80B20E84 0C016EFE */ jal Collider_InitJntSph
/* 000A8 80B20E88 02C02025 */ or $a0, $s6, $zero ## $a0 = 00000000
/* 000AC 80B20E8C 3C0780B2 */ lui $a3, %hi(D_80B22AB4) ## $a3 = 80B20000
/* 000AC 80B20E8C 3C0780B2 */ lui $a3, %hi(sJntSphInit) ## $a3 = 80B20000
/* 000B0 80B20E90 26680194 */ addiu $t0, $s3, 0x0194 ## $t0 = 00000194
/* 000B4 80B20E94 AFA80010 */ sw $t0, 0x0010($sp)
/* 000B8 80B20E98 24E72AB4 */ addiu $a3, $a3, %lo(D_80B22AB4) ## $a3 = 80B22AB4
/* 000B8 80B20E98 24E72AB4 */ addiu $a3, $a3, %lo(sJntSphInit) ## $a3 = 80B22AB4
/* 000BC 80B20E9C 02C02025 */ or $a0, $s6, $zero ## $a0 = 00000000
/* 000C0 80B20EA0 02002825 */ or $a1, $s0, $zero ## $a1 = 00000174
/* 000C4 80B20EA4 0C017014 */ jal Collider_SetJntSph
@ -70,7 +70,7 @@ glabel EnTp_Init
/* 000FC 80B20EDC 8E620190 */ lw $v0, 0x0190($s3) ## 00000190
/* 00100 80B20EE0 02602025 */ or $a0, $s3, $zero ## $a0 = 00000000
/* 00104 80B20EE4 844E0036 */ lh $t6, 0x0036($v0) ## 00000036
/* 00108 80B20EE8 0C2C86E4 */ jal func_80B21B90
/* 00108 80B20EE8 0C2C86E4 */ jal EnTp_Head_SetupWait
/* 0010C 80B20EEC A44E002E */ sh $t6, 0x002E($v0) ## 0000002E
/* 00110 80B20EF0 8E780024 */ lw $t8, 0x0024($s3) ## 00000024
/* 00114 80B20EF4 8E790004 */ lw $t9, 0x0004($s3) ## 00000004
@ -149,12 +149,12 @@ glabel EnTp_Init
.L80B21000:
/* 00220 80B21000 14600005 */ bne $v1, $zero, .L80B21018
/* 00224 80B21004 00000000 */ nop
/* 00228 80B21008 0C2C8421 */ jal func_80B21084
/* 00228 80B21008 0C2C8421 */ jal EnTp_Tail_SetupFollowHead
/* 0022C 80B2100C 02602025 */ or $a0, $s3, $zero ## $a0 = 00000000
/* 00230 80B21010 10000004 */ beq $zero, $zero, .L80B21024
/* 00234 80B21014 8FBF006C */ lw $ra, 0x006C($sp)
.L80B21018:
/* 00238 80B21018 0C2C85FF */ jal func_80B217FC
/* 00238 80B21018 0C2C85FF */ jal EnTp_Fragment_SetupFade
/* 0023C 80B2101C 02602025 */ or $a0, $s3, $zero ## $a0 = 00000000
/* 00240 80B21020 8FBF006C */ lw $ra, 0x006C($sp)
.L80B21024:

View file

@ -1,244 +0,0 @@
glabel EnTp_Update
/* 01660 80B22440 27BDFF90 */ addiu $sp, $sp, 0xFF90 ## $sp = FFFFFF90
/* 01664 80B22444 3C0F80B2 */ lui $t7, %hi(D_80B22B14) ## $t7 = 80B20000
/* 01668 80B22448 AFBF0024 */ sw $ra, 0x0024($sp)
/* 0166C 80B2244C AFB00020 */ sw $s0, 0x0020($sp)
/* 01670 80B22450 AFA50074 */ sw $a1, 0x0074($sp)
/* 01674 80B22454 25EF2B14 */ addiu $t7, $t7, %lo(D_80B22B14) ## $t7 = 80B22B14
/* 01678 80B22458 8DF90000 */ lw $t9, 0x0000($t7) ## 80B22B14
/* 0167C 80B2245C 27AE005C */ addiu $t6, $sp, 0x005C ## $t6 = FFFFFFEC
/* 01680 80B22460 8DF80004 */ lw $t8, 0x0004($t7) ## 80B22B18
/* 01684 80B22464 ADD90000 */ sw $t9, 0x0000($t6) ## FFFFFFEC
/* 01688 80B22468 8DF90008 */ lw $t9, 0x0008($t7) ## 80B22B1C
/* 0168C 80B2246C 3C0980B2 */ lui $t1, %hi(D_80B22B20) ## $t1 = 80B20000
/* 01690 80B22470 25292B20 */ addiu $t1, $t1, %lo(D_80B22B20) ## $t1 = 80B22B20
/* 01694 80B22474 ADD80004 */ sw $t8, 0x0004($t6) ## FFFFFFF0
/* 01698 80B22478 ADD90008 */ sw $t9, 0x0008($t6) ## FFFFFFF4
/* 0169C 80B2247C 8D2B0000 */ lw $t3, 0x0000($t1) ## 80B22B20
/* 016A0 80B22480 27A80050 */ addiu $t0, $sp, 0x0050 ## $t0 = FFFFFFE0
/* 016A4 80B22484 8D2A0004 */ lw $t2, 0x0004($t1) ## 80B22B24
/* 016A8 80B22488 AD0B0000 */ sw $t3, 0x0000($t0) ## FFFFFFE0
/* 016AC 80B2248C 8D2B0008 */ lw $t3, 0x0008($t1) ## 80B22B28
/* 016B0 80B22490 AD0A0004 */ sw $t2, 0x0004($t0) ## FFFFFFE4
/* 016B4 80B22494 3C0C80B2 */ lui $t4, %hi(D_80B22B2C) ## $t4 = 80B20000
/* 016B8 80B22498 AD0B0008 */ sw $t3, 0x0008($t0) ## FFFFFFE8
/* 016BC 80B2249C 3C0D80B2 */ lui $t5, %hi(D_80B22B30) ## $t5 = 80B20000
/* 016C0 80B224A0 8D8C2B2C */ lw $t4, %lo(D_80B22B2C)($t4)
/* 016C4 80B224A4 8DAD2B30 */ lw $t5, %lo(D_80B22B30)($t5)
/* 016C8 80B224A8 8FAE0074 */ lw $t6, 0x0074($sp)
/* 016CC 80B224AC AFAC0040 */ sw $t4, 0x0040($sp)
/* 016D0 80B224B0 AFAD003C */ sw $t5, 0x003C($sp)
/* 016D4 80B224B4 8DC21C44 */ lw $v0, 0x1C44($t6) ## 00001C30
/* 016D8 80B224B8 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 016DC 80B224BC 8C4F067C */ lw $t7, 0x067C($v0) ## 0000067C
/* 016E0 80B224C0 000FC140 */ sll $t8, $t7, 5
/* 016E4 80B224C4 07030003 */ bgezl $t8, .L80B224D4
/* 016E8 80B224C8 921900AF */ lbu $t9, 0x00AF($s0) ## 000000AF
/* 016EC 80B224CC A0800158 */ sb $zero, 0x0158($a0) ## 00000158
/* 016F0 80B224D0 921900AF */ lbu $t9, 0x00AF($s0) ## 000000AF
.L80B224D4:
/* 016F4 80B224D4 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 016F8 80B224D8 53200004 */ beql $t9, $zero, .L80B224EC
/* 016FC 80B224DC 8E190154 */ lw $t9, 0x0154($s0) ## 00000154
/* 01700 80B224E0 0C2C887A */ jal func_80B221E8
/* 01704 80B224E4 8FA50074 */ lw $a1, 0x0074($sp)
/* 01708 80B224E8 8E190154 */ lw $t9, 0x0154($s0) ## 00000154
.L80B224EC:
/* 0170C 80B224EC 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 01710 80B224F0 8FA50074 */ lw $a1, 0x0074($sp)
/* 01714 80B224F4 0320F809 */ jalr $ra, $t9
/* 01718 80B224F8 00000000 */ nop
/* 0171C 80B224FC 8608001C */ lh $t0, 0x001C($s0) ## 0000001C
/* 01720 80B22500 05030046 */ bgezl $t0, .L80B2261C
/* 01724 80B22504 860C001C */ lh $t4, 0x001C($s0) ## 0000001C
/* 01728 80B22508 0C00B638 */ jal Actor_MoveForward
/* 0172C 80B2250C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 01730 80B22510 8E09014C */ lw $t1, 0x014C($s0) ## 0000014C
/* 01734 80B22514 24010009 */ addiu $at, $zero, 0x0009 ## $at = 00000009
/* 01738 80B22518 8FA40074 */ lw $a0, 0x0074($sp)
/* 0173C 80B2251C 11210009 */ beq $t1, $at, .L80B22544
/* 01740 80B22520 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000
/* 01744 80B22524 3C014120 */ lui $at, 0x4120 ## $at = 41200000
/* 01748 80B22528 44812000 */ mtc1 $at, $f4 ## $f4 = 10.00
/* 0174C 80B2252C 240A0005 */ addiu $t2, $zero, 0x0005 ## $t2 = 00000005
/* 01750 80B22530 AFAA0014 */ sw $t2, 0x0014($sp)
/* 01754 80B22534 24060000 */ addiu $a2, $zero, 0x0000 ## $a2 = 00000000
/* 01758 80B22538 3C074170 */ lui $a3, 0x4170 ## $a3 = 41700000
/* 0175C 80B2253C 0C00B92D */ jal Actor_UpdateBgCheckInfo
/* 01760 80B22540 E7A40010 */ swc1 $f4, 0x0010($sp)
.L80B22544:
/* 01764 80B22544 44803000 */ mtc1 $zero, $f6 ## $f6 = 0.00
/* 01768 80B22548 C6080068 */ lwc1 $f8, 0x0068($s0) ## 00000068
/* 0176C 80B2254C 3C078013 */ lui $a3, %hi(D_801333E0)
/* 01770 80B22550 3C0A8013 */ lui $t2, %hi(D_801333E8)
/* 01774 80B22554 46083032 */ c.eq.s $f6, $f8
/* 01778 80B22558 24E733E0 */ addiu $a3, %lo(D_801333E0)
/* 0177C 80B2255C 254A33E8 */ addiu $t2, %lo(D_801333E8)
/* 01780 80B22560 260500E4 */ addiu $a1, $s0, 0x00E4 ## $a1 = 000000E4
/* 01784 80B22564 45010019 */ bc1t .L80B225CC
/* 01788 80B22568 24060004 */ addiu $a2, $zero, 0x0004 ## $a2 = 00000004
/* 0178C 80B2256C 960B0088 */ lhu $t3, 0x0088($s0) ## 00000088
/* 01790 80B22570 316C0008 */ andi $t4, $t3, 0x0008 ## $t4 = 00000000
/* 01794 80B22574 51800016 */ beql $t4, $zero, .L80B225D0
/* 01798 80B22578 861900B8 */ lh $t9, 0x00B8($s0) ## 000000B8
/* 0179C 80B2257C 86040032 */ lh $a0, 0x0032($s0) ## 00000032
/* 017A0 80B22580 860D007E */ lh $t5, 0x007E($s0) ## 0000007E
/* 017A4 80B22584 01A41023 */ subu $v0, $t5, $a0
/* 017A8 80B22588 00021400 */ sll $v0, $v0, 16
/* 017AC 80B2258C 00021403 */ sra $v0, $v0, 16
/* 017B0 80B22590 04400003 */ bltz $v0, .L80B225A0
/* 017B4 80B22594 00021823 */ subu $v1, $zero, $v0
/* 017B8 80B22598 10000001 */ beq $zero, $zero, .L80B225A0
/* 017BC 80B2259C 00401825 */ or $v1, $v0, $zero ## $v1 = 00000000
.L80B225A0:
/* 017C0 80B225A0 28614001 */ slti $at, $v1, 0x4001
/* 017C4 80B225A4 5420000A */ bnel $at, $zero, .L80B225D0
/* 017C8 80B225A8 861900B8 */ lh $t9, 0x00B8($s0) ## 000000B8
/* 017CC 80B225AC 04400004 */ bltz $v0, .L80B225C0
/* 017D0 80B225B0 248F01F4 */ addiu $t7, $a0, 0x01F4 ## $t7 = 000001F4
/* 017D4 80B225B4 248EFE0C */ addiu $t6, $a0, 0xFE0C ## $t6 = FFFFFE0C
/* 017D8 80B225B8 10000002 */ beq $zero, $zero, .L80B225C4
/* 017DC 80B225BC A60E0032 */ sh $t6, 0x0032($s0) ## 00000032
.L80B225C0:
/* 017E0 80B225C0 A60F0032 */ sh $t7, 0x0032($s0) ## 00000032
.L80B225C4:
/* 017E4 80B225C4 86180032 */ lh $t8, 0x0032($s0) ## 00000032
/* 017E8 80B225C8 A61800B6 */ sh $t8, 0x00B6($s0) ## 000000B6
.L80B225CC:
/* 017EC 80B225CC 861900B8 */ lh $t9, 0x00B8($s0) ## 000000B8
.L80B225D0:
/* 017F0 80B225D0 24043865 */ addiu $a0, $zero, 0x3865 ## $a0 = 00003865
/* 017F4 80B225D4 27280800 */ addiu $t0, $t9, 0x0800 ## $t0 = 00000800
/* 017F8 80B225D8 A60800B8 */ sh $t0, 0x00B8($s0) ## 000000B8
/* 017FC 80B225DC 860900B8 */ lh $t1, 0x00B8($s0) ## 000000B8
/* 01800 80B225E0 55200005 */ bnel $t1, $zero, .L80B225F8
/* 01804 80B225E4 8E0B014C */ lw $t3, 0x014C($s0) ## 0000014C
/* 01808 80B225E8 AFA70010 */ sw $a3, 0x0010($sp)
/* 0180C 80B225EC 0C03DCE3 */ jal Audio_PlaySoundGeneral
/* 01810 80B225F0 AFAA0014 */ sw $t2, 0x0014($sp)
/* 01814 80B225F4 8E0B014C */ lw $t3, 0x014C($s0) ## 0000014C
.L80B225F8:
/* 01818 80B225F8 8FA40074 */ lw $a0, 0x0074($sp)
/* 0181C 80B225FC 26060174 */ addiu $a2, $s0, 0x0174 ## $a2 = 00000174
/* 01820 80B22600 29610002 */ slti $at, $t3, 0x0002
/* 01824 80B22604 14200004 */ bne $at, $zero, .L80B22618
/* 01828 80B22608 3C010001 */ lui $at, 0x0001 ## $at = 00010000
/* 0182C 80B2260C 34211E60 */ ori $at, $at, 0x1E60 ## $at = 00011E60
/* 01830 80B22610 0C0175E7 */ jal CollisionCheck_SetAT
## CollisionCheck_setAT
/* 01834 80B22614 00812821 */ addu $a1, $a0, $at
.L80B22618:
/* 01838 80B22618 860C001C */ lh $t4, 0x001C($s0) ## 0000001C
.L80B2261C:
/* 0183C 80B2261C 2401000B */ addiu $at, $zero, 0x000B ## $at = 0000000B
/* 01840 80B22620 26060174 */ addiu $a2, $s0, 0x0174 ## $a2 = 00000174
/* 01844 80B22624 51810008 */ beql $t4, $at, .L80B22648
/* 01848 80B22628 8E080024 */ lw $t0, 0x0024($s0) ## 00000024
/* 0184C 80B2262C 860D0162 */ lh $t5, 0x0162($s0) ## 00000162
/* 01850 80B22630 25AEFFFF */ addiu $t6, $t5, 0xFFFF ## $t6 = FFFFFFFF
/* 01854 80B22634 A60E0162 */ sh $t6, 0x0162($s0) ## 00000162
/* 01858 80B22638 860F0162 */ lh $t7, 0x0162($s0) ## 00000162
/* 0185C 80B2263C 31F80007 */ andi $t8, $t7, 0x0007 ## $t8 = 00000000
/* 01860 80B22640 A6180162 */ sh $t8, 0x0162($s0) ## 00000162
/* 01864 80B22644 8E080024 */ lw $t0, 0x0024($s0) ## 00000024
.L80B22648:
/* 01868 80B22648 92090158 */ lbu $t1, 0x0158($s0) ## 00000158
/* 0186C 80B2264C 8E190028 */ lw $t9, 0x0028($s0) ## 00000028
/* 01870 80B22650 AE080038 */ sw $t0, 0x0038($s0) ## 00000038
/* 01874 80B22654 8E08002C */ lw $t0, 0x002C($s0) ## 0000002C
/* 01878 80B22658 2401000E */ addiu $at, $zero, 0x000E ## $at = 0000000E
/* 0187C 80B2265C AE19003C */ sw $t9, 0x003C($s0) ## 0000003C
/* 01880 80B22660 15210006 */ bne $t1, $at, .L80B2267C
/* 01884 80B22664 AE080040 */ sw $t0, 0x0040($s0) ## 00000040
/* 01888 80B22668 8FA40074 */ lw $a0, 0x0074($sp)
/* 0188C 80B2266C 3C010001 */ lui $at, 0x0001 ## $at = 00010000
/* 01890 80B22670 34211E60 */ ori $at, $at, 0x1E60 ## $at = 00011E60
/* 01894 80B22674 0C0175E7 */ jal CollisionCheck_SetAT
## CollisionCheck_setAT
/* 01898 80B22678 00812821 */ addu $a1, $a0, $at
.L80B2267C:
/* 0189C 80B2267C 860A0162 */ lh $t2, 0x0162($s0) ## 00000162
/* 018A0 80B22680 314B0007 */ andi $t3, $t2, 0x0007 ## $t3 = 00000000
/* 018A4 80B22684 55600039 */ bnel $t3, $zero, .L80B2276C
/* 018A8 80B22688 8E0F014C */ lw $t7, 0x014C($s0) ## 0000014C
/* 018AC 80B2268C 860C0160 */ lh $t4, 0x0160($s0) ## 00000160
/* 018B0 80B22690 3C013E80 */ lui $at, 0x3E80 ## $at = 3E800000
/* 018B4 80B22694 44810000 */ mtc1 $at, $f0 ## $f0 = 0.25
/* 018B8 80B22698 A3AC0040 */ sb $t4, 0x0040($sp)
/* 018BC 80B2269C C60A005C */ lwc1 $f10, 0x005C($s0) ## 0000005C
/* 018C0 80B226A0 46005407 */ neg.s $f16, $f10
/* 018C4 80B226A4 46008482 */ mul.s $f18, $f16, $f0
/* 018C8 80B226A8 E7B20050 */ swc1 $f18, 0x0050($sp)
/* 018CC 80B226AC C6040060 */ lwc1 $f4, 0x0060($s0) ## 00000060
/* 018D0 80B226B0 46002187 */ neg.s $f6, $f4
/* 018D4 80B226B4 46003202 */ mul.s $f8, $f6, $f0
/* 018D8 80B226B8 E7A80054 */ swc1 $f8, 0x0054($sp)
/* 018DC 80B226BC C60A0064 */ lwc1 $f10, 0x0064($s0) ## 00000064
/* 018E0 80B226C0 46005407 */ neg.s $f16, $f10
/* 018E4 80B226C4 46008482 */ mul.s $f18, $f16, $f0
/* 018E8 80B226C8 0C03F66B */ jal Rand_ZeroOne
## Rand.Next() float
/* 018EC 80B226CC E7B20058 */ swc1 $f18, 0x0058($sp)
/* 018F0 80B226D0 3C013F00 */ lui $at, 0x3F00 ## $at = 3F000000
/* 018F4 80B226D4 44812000 */ mtc1 $at, $f4 ## $f4 = 0.50
/* 018F8 80B226D8 3C0141C8 */ lui $at, 0x41C8 ## $at = 41C80000
/* 018FC 80B226DC 44814000 */ mtc1 $at, $f8 ## $f8 = 25.00
/* 01900 80B226E0 46040181 */ sub.s $f6, $f0, $f4
/* 01904 80B226E4 C6100024 */ lwc1 $f16, 0x0024($s0) ## 00000024
/* 01908 80B226E8 46083282 */ mul.s $f10, $f6, $f8
/* 0190C 80B226EC 46105480 */ add.s $f18, $f10, $f16
/* 01910 80B226F0 0C03F66B */ jal Rand_ZeroOne
## Rand.Next() float
/* 01914 80B226F4 E7B20044 */ swc1 $f18, 0x0044($sp)
/* 01918 80B226F8 3C013F00 */ lui $at, 0x3F00 ## $at = 3F000000
/* 0191C 80B226FC 44812000 */ mtc1 $at, $f4 ## $f4 = 0.50
/* 01920 80B22700 3C0141A0 */ lui $at, 0x41A0 ## $at = 41A00000
/* 01924 80B22704 44814000 */ mtc1 $at, $f8 ## $f8 = 20.00
/* 01928 80B22708 46040181 */ sub.s $f6, $f0, $f4
/* 0192C 80B2270C C6100028 */ lwc1 $f16, 0x0028($s0) ## 00000028
/* 01930 80B22710 46083282 */ mul.s $f10, $f6, $f8
/* 01934 80B22714 46105480 */ add.s $f18, $f10, $f16
/* 01938 80B22718 0C03F66B */ jal Rand_ZeroOne
## Rand.Next() float
/* 0193C 80B2271C E7B20048 */ swc1 $f18, 0x0048($sp)
/* 01940 80B22720 3C013F00 */ lui $at, 0x3F00 ## $at = 3F000000
/* 01944 80B22724 44812000 */ mtc1 $at, $f4 ## $f4 = 0.50
/* 01948 80B22728 3C0141C8 */ lui $at, 0x41C8 ## $at = 41C80000
/* 0194C 80B2272C 44814000 */ mtc1 $at, $f8 ## $f8 = 25.00
/* 01950 80B22730 46040181 */ sub.s $f6, $f0, $f4
/* 01954 80B22734 C610002C */ lwc1 $f16, 0x002C($s0) ## 0000002C
/* 01958 80B22738 27AD0040 */ addiu $t5, $sp, 0x0040 ## $t5 = FFFFFFD0
/* 0195C 80B2273C 27AE003C */ addiu $t6, $sp, 0x003C ## $t6 = FFFFFFCC
/* 01960 80B22740 46083282 */ mul.s $f10, $f6, $f8
/* 01964 80B22744 AFAE0014 */ sw $t6, 0x0014($sp)
/* 01968 80B22748 AFAD0010 */ sw $t5, 0x0010($sp)
/* 0196C 80B2274C 8FA40074 */ lw $a0, 0x0074($sp)
/* 01970 80B22750 27A50044 */ addiu $a1, $sp, 0x0044 ## $a1 = FFFFFFD4
/* 01974 80B22754 27A6005C */ addiu $a2, $sp, 0x005C ## $a2 = FFFFFFEC
/* 01978 80B22758 27A70050 */ addiu $a3, $sp, 0x0050 ## $a3 = FFFFFFE0
/* 0197C 80B2275C 46105480 */ add.s $f18, $f10, $f16
/* 01980 80B22760 0C00A2DD */ jal EffectSsKiraKira_SpawnSmall
/* 01984 80B22764 E7B2004C */ swc1 $f18, 0x004C($sp)
/* 01988 80B22768 8E0F014C */ lw $t7, 0x014C($s0) ## 0000014C
.L80B2276C:
/* 0198C 80B2276C 29E10002 */ slti $at, $t7, 0x0002
/* 01990 80B22770 5420000A */ bnel $at, $zero, .L80B2279C
/* 01994 80B22774 8FBF0024 */ lw $ra, 0x0024($sp)
/* 01998 80B22778 921800AF */ lbu $t8, 0x00AF($s0) ## 000000AF
/* 0199C 80B2277C 3C010001 */ lui $at, 0x0001 ## $at = 00010000
/* 019A0 80B22780 34211E60 */ ori $at, $at, 0x1E60 ## $at = 00011E60
/* 019A4 80B22784 13000004 */ beq $t8, $zero, .L80B22798
/* 019A8 80B22788 8FA40074 */ lw $a0, 0x0074($sp)
/* 019AC 80B2278C 00812821 */ addu $a1, $a0, $at
/* 019B0 80B22790 0C01767D */ jal CollisionCheck_SetAC
## CollisionCheck_setAC
/* 019B4 80B22794 26060174 */ addiu $a2, $s0, 0x0174 ## $a2 = 00000174
.L80B22798:
/* 019B8 80B22798 8FBF0024 */ lw $ra, 0x0024($sp)
.L80B2279C:
/* 019BC 80B2279C 8FB00020 */ lw $s0, 0x0020($sp)
/* 019C0 80B227A0 27BD0070 */ addiu $sp, $sp, 0x0070 ## $sp = 00000000
/* 019C4 80B227A4 03E00008 */ jr $ra
/* 019C8 80B227A8 00000000 */ nop

View file

@ -1,3 +0,0 @@
glabel func_80B20DE0
/* 00000 80B20DE0 03E00008 */ jr $ra
/* 00004 80B20DE4 AC850154 */ sw $a1, 0x0154($a0) ## 00000154

View file

@ -1,12 +0,0 @@
glabel func_80B21084
/* 002A4 80B21084 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 002A8 80B21088 AFBF0014 */ sw $ra, 0x0014($sp)
/* 002AC 80B2108C 240E0002 */ addiu $t6, $zero, 0x0002 ## $t6 = 00000002
/* 002B0 80B21090 3C0580B2 */ lui $a1, %hi(func_80B210B0) ## $a1 = 80B20000
/* 002B4 80B21094 AC8E014C */ sw $t6, 0x014C($a0) ## 0000014C
/* 002B8 80B21098 0C2C8378 */ jal func_80B20DE0
/* 002BC 80B2109C 24A510B0 */ addiu $a1, $a1, %lo(func_80B210B0) ## $a1 = 80B210B0
/* 002C0 80B210A0 8FBF0014 */ lw $ra, 0x0014($sp)
/* 002C4 80B210A4 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 002C8 80B210A8 03E00008 */ jr $ra
/* 002CC 80B210AC 00000000 */ nop

View file

@ -1,131 +0,0 @@
glabel func_80B210B0
/* 002D0 80B210B0 27BDFFC8 */ addiu $sp, $sp, 0xFFC8 ## $sp = FFFFFFC8
/* 002D4 80B210B4 AFBF0024 */ sw $ra, 0x0024($sp)
/* 002D8 80B210B8 AFB00020 */ sw $s0, 0x0020($sp)
/* 002DC 80B210BC AFA5003C */ sw $a1, 0x003C($sp)
/* 002E0 80B210C0 848E001C */ lh $t6, 0x001C($a0) ## 0000001C
/* 002E4 80B210C4 2401000B */ addiu $at, $zero, 0x000B ## $at = 0000000B
/* 002E8 80B210C8 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 002EC 80B210CC 55C1000B */ bnel $t6, $at, .L80B210FC
/* 002F0 80B210D0 8E190150 */ lw $t9, 0x0150($s0) ## 00000150
/* 002F4 80B210D4 8C980118 */ lw $t8, 0x0118($a0) ## 00000118
/* 002F8 80B210D8 240F0001 */ addiu $t7, $zero, 0x0001 ## $t7 = 00000001
/* 002FC 80B210DC AC8F014C */ sw $t7, 0x014C($a0) ## 0000014C
/* 00300 80B210E0 57000066 */ bnel $t8, $zero, .L80B2127C
/* 00304 80B210E4 8FBF0024 */ lw $ra, 0x0024($sp)
/* 00308 80B210E8 0C2C8515 */ jal func_80B21454
/* 0030C 80B210EC 00000000 */ nop
/* 00310 80B210F0 10000062 */ beq $zero, $zero, .L80B2127C
/* 00314 80B210F4 8FBF0024 */ lw $ra, 0x0024($sp)
/* 00318 80B210F8 8E190150 */ lw $t9, 0x0150($s0) ## 00000150
.L80B210FC:
/* 0031C 80B210FC 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000
/* 00320 80B21100 53200005 */ beql $t9, $zero, .L80B21118
/* 00324 80B21104 8E0201D4 */ lw $v0, 0x01D4($s0) ## 000001D4
/* 00328 80B21108 8E080004 */ lw $t0, 0x0004($s0) ## 00000004
/* 0032C 80B2110C 35090001 */ ori $t1, $t0, 0x0001 ## $t1 = 00000001
/* 00330 80B21110 AE090004 */ sw $t1, 0x0004($s0) ## 00000004
/* 00334 80B21114 8E0201D4 */ lw $v0, 0x01D4($s0) ## 000001D4
.L80B21118:
/* 00338 80B21118 8C4A0150 */ lw $t2, 0x0150($v0) ## 00000150
/* 0033C 80B2111C 51400020 */ beql $t2, $zero, .L80B211A0
/* 00340 80B21120 8E090118 */ lw $t1, 0x0118($s0) ## 00000118
/* 00344 80B21124 44800000 */ mtc1 $zero, $f0 ## $f0 = 0.00
/* 00348 80B21128 C60A0028 */ lwc1 $f10, 0x0028($s0) ## 00000028
/* 0034C 80B2112C 4600010D */ trunc.w.s $f4, $f0
/* 00350 80B21130 E6000168 */ swc1 $f0, 0x0168($s0) ## 00000168
/* 00354 80B21134 E6000060 */ swc1 $f0, 0x0060($s0) ## 00000060
/* 00358 80B21138 44032000 */ mfc1 $v1, $f4
/* 0035C 80B2113C 00000000 */ nop
/* 00360 80B21140 00036400 */ sll $t4, $v1, 16
/* 00364 80B21144 000C6C03 */ sra $t5, $t4, 16
/* 00368 80B21148 448D3000 */ mtc1 $t5, $f6 ## $f6 = 0.00
/* 0036C 80B2114C A6030160 */ sh $v1, 0x0160($s0) ## 00000160
/* 00370 80B21150 46803220 */ cvt.s.w $f8, $f6
/* 00374 80B21154 E6080068 */ swc1 $f8, 0x0068($s0) ## 00000068
/* 00378 80B21158 C450000C */ lwc1 $f16, 0x000C($v0) ## 0000000C
/* 0037C 80B2115C 4610503C */ c.lt.s $f10, $f16
/* 00380 80B21160 00000000 */ nop
/* 00384 80B21164 45020006 */ bc1fl .L80B21180
/* 00388 80B21168 8E180118 */ lw $t8, 0x0118($s0) ## 00000118
/* 0038C 80B2116C 8E0E0004 */ lw $t6, 0x0004($s0) ## 00000004
/* 00390 80B21170 2401FFFE */ addiu $at, $zero, 0xFFFE ## $at = FFFFFFFE
/* 00394 80B21174 01C17824 */ and $t7, $t6, $at
/* 00398 80B21178 AE0F0004 */ sw $t7, 0x0004($s0) ## 00000004
/* 0039C 80B2117C 8E180118 */ lw $t8, 0x0118($s0) ## 00000118
.L80B21180:
/* 003A0 80B21180 8F080100 */ lw $t0, 0x0100($t8) ## 00000100
/* 003A4 80B21184 AE080024 */ sw $t0, 0x0024($s0) ## 00000024
/* 003A8 80B21188 8F190104 */ lw $t9, 0x0104($t8) ## 00000104
/* 003AC 80B2118C AE190028 */ sw $t9, 0x0028($s0) ## 00000028
/* 003B0 80B21190 8F080108 */ lw $t0, 0x0108($t8) ## 00000108
/* 003B4 80B21194 10000038 */ beq $zero, $zero, .L80B21278
/* 003B8 80B21198 AE08002C */ sw $t0, 0x002C($s0) ## 0000002C
/* 003BC 80B2119C 8E090118 */ lw $t1, 0x0118($s0) ## 00000118
.L80B211A0:
/* 003C0 80B211A0 44811000 */ mtc1 $at, $f2 ## $f2 = NaN
/* 003C4 80B211A4 3C014080 */ lui $at, 0x4080 ## $at = 40800000
/* 003C8 80B211A8 44812000 */ mtc1 $at, $f4 ## $f4 = 4.00
/* 003CC 80B211AC C5320028 */ lwc1 $f18, 0x0028($t1) ## 00000029
/* 003D0 80B211B0 44800000 */ mtc1 $zero, $f0 ## $f0 = 0.00
/* 003D4 80B211B4 44061000 */ mfc1 $a2, $f2
/* 003D8 80B211B8 46049181 */ sub.s $f6, $f18, $f4
/* 003DC 80B211BC 44071000 */ mfc1 $a3, $f2
/* 003E0 80B211C0 26040028 */ addiu $a0, $s0, 0x0028 ## $a0 = 00000028
/* 003E4 80B211C4 E7A00010 */ swc1 $f0, 0x0010($sp)
/* 003E8 80B211C8 44053000 */ mfc1 $a1, $f6
/* 003EC 80B211CC 0C01E0C4 */ jal Math_SmoothStepToF
/* 003F0 80B211D0 00000000 */ nop
/* 003F4 80B211D4 8E0201D4 */ lw $v0, 0x01D4($s0) ## 000001D4
/* 003F8 80B211D8 844A00B6 */ lh $t2, 0x00B6($v0) ## 000000B6
/* 003FC 80B211DC 254B4000 */ addiu $t3, $t2, 0x4000 ## $t3 = 00004000
/* 00400 80B211E0 A7AB0036 */ sh $t3, 0x0036($sp)
/* 00404 80B211E4 860D015A */ lh $t5, 0x015A($s0) ## 0000015A
/* 00408 80B211E8 844C015C */ lh $t4, 0x015C($v0) ## 0000015C
/* 0040C 80B211EC 018D2021 */ addu $a0, $t4, $t5
/* 00410 80B211F0 00800821 */ addu $at, $a0, $zero
/* 00414 80B211F4 00042140 */ sll $a0, $a0, 5
/* 00418 80B211F8 00812023 */ subu $a0, $a0, $at
/* 0041C 80B211FC 00042080 */ sll $a0, $a0, 2
/* 00420 80B21200 00812021 */ addu $a0, $a0, $at
/* 00424 80B21204 00042100 */ sll $a0, $a0, 4
/* 00428 80B21208 00042400 */ sll $a0, $a0, 16
/* 0042C 80B2120C 00042403 */ sra $a0, $a0, 16
/* 00430 80B21210 0C01DE1C */ jal Math_SinS
## sins?
/* 00434 80B21214 A7A40034 */ sh $a0, 0x0034($sp)
/* 00438 80B21218 E7A0002C */ swc1 $f0, 0x002C($sp)
/* 0043C 80B2121C 0C01DE1C */ jal Math_SinS
## sins?
/* 00440 80B21220 87A40036 */ lh $a0, 0x0036($sp)
/* 00444 80B21224 C608016C */ lwc1 $f8, 0x016C($s0) ## 0000016C
/* 00448 80B21228 C7B0002C */ lwc1 $f16, 0x002C($sp)
/* 0044C 80B2122C C6040008 */ lwc1 $f4, 0x0008($s0) ## 00000008
/* 00450 80B21230 46080282 */ mul.s $f10, $f0, $f8
/* 00454 80B21234 00000000 */ nop
/* 00458 80B21238 46105482 */ mul.s $f18, $f10, $f16
/* 0045C 80B2123C 46049180 */ add.s $f6, $f18, $f4
/* 00460 80B21240 E6060024 */ swc1 $f6, 0x0024($s0) ## 00000024
/* 00464 80B21244 0C01DE1C */ jal Math_SinS
## sins?
/* 00468 80B21248 87A40034 */ lh $a0, 0x0034($sp)
/* 0046C 80B2124C E7A0002C */ swc1 $f0, 0x002C($sp)
/* 00470 80B21250 0C01DE0D */ jal Math_CosS
## coss?
/* 00474 80B21254 87A40036 */ lh $a0, 0x0036($sp)
/* 00478 80B21258 C608016C */ lwc1 $f8, 0x016C($s0) ## 0000016C
/* 0047C 80B2125C C7B0002C */ lwc1 $f16, 0x002C($sp)
/* 00480 80B21260 C6040010 */ lwc1 $f4, 0x0010($s0) ## 00000010
/* 00484 80B21264 46080282 */ mul.s $f10, $f0, $f8
/* 00488 80B21268 00000000 */ nop
/* 0048C 80B2126C 46105482 */ mul.s $f18, $f10, $f16
/* 00490 80B21270 46049180 */ add.s $f6, $f18, $f4
/* 00494 80B21274 E606002C */ swc1 $f6, 0x002C($s0) ## 0000002C
.L80B21278:
/* 00498 80B21278 8FBF0024 */ lw $ra, 0x0024($sp)
.L80B2127C:
/* 0049C 80B2127C 8FB00020 */ lw $s0, 0x0020($sp)
/* 004A0 80B21280 27BD0038 */ addiu $sp, $sp, 0x0038 ## $sp = 00000000
/* 004A4 80B21284 03E00008 */ jr $ra
/* 004A8 80B21288 00000000 */ nop

View file

@ -1,14 +0,0 @@
glabel func_80B2128C
/* 004AC 80B2128C 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 004B0 80B21290 AFBF0014 */ sw $ra, 0x0014($sp)
/* 004B4 80B21294 240E0007 */ addiu $t6, $zero, 0x0007 ## $t6 = 00000007
/* 004B8 80B21298 240F00C8 */ addiu $t7, $zero, 0x00C8 ## $t7 = 000000C8
/* 004BC 80B2129C 3C0580B2 */ lui $a1, %hi(func_80B212C0) ## $a1 = 80B20000
/* 004C0 80B212A0 AC8E014C */ sw $t6, 0x014C($a0) ## 0000014C
/* 004C4 80B212A4 A48F015A */ sh $t7, 0x015A($a0) ## 0000015A
/* 004C8 80B212A8 0C2C8378 */ jal func_80B20DE0
/* 004CC 80B212AC 24A512C0 */ addiu $a1, $a1, %lo(func_80B212C0) ## $a1 = 80B212C0
/* 004D0 80B212B0 8FBF0014 */ lw $ra, 0x0014($sp)
/* 004D4 80B212B4 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 004D8 80B212B8 03E00008 */ jr $ra
/* 004DC 80B212BC 00000000 */ nop

View file

@ -1,118 +0,0 @@
.late_rodata
glabel D_80B22B84
.float 0.2
.text
glabel func_80B212C0
/* 004E0 80B212C0 27BDFFD0 */ addiu $sp, $sp, 0xFFD0 ## $sp = FFFFFFD0
/* 004E4 80B212C4 AFBF0024 */ sw $ra, 0x0024($sp)
/* 004E8 80B212C8 AFB00020 */ sw $s0, 0x0020($sp)
/* 004EC 80B212CC AFA50034 */ sw $a1, 0x0034($sp)
/* 004F0 80B212D0 8CA21C44 */ lw $v0, 0x1C44($a1) ## 00001C44
/* 004F4 80B212D4 3C0141F0 */ lui $at, 0x41F0 ## $at = 41F00000
/* 004F8 80B212D8 44813000 */ mtc1 $at, $f6 ## $f6 = 30.00
/* 004FC 80B212DC C4440028 */ lwc1 $f4, 0x0028($v0) ## 00000028
/* 00500 80B212E0 44805000 */ mtc1 $zero, $f10 ## $f10 = 0.00
/* 00504 80B212E4 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00508 80B212E8 46062200 */ add.s $f8, $f4, $f6
/* 0050C 80B212EC 24840028 */ addiu $a0, $a0, 0x0028 ## $a0 = 00000028
/* 00510 80B212F0 3C063F80 */ lui $a2, 0x3F80 ## $a2 = 3F800000
/* 00514 80B212F4 3C073F00 */ lui $a3, 0x3F00 ## $a3 = 3F000000
/* 00518 80B212F8 44054000 */ mfc1 $a1, $f8
/* 0051C 80B212FC AFA2002C */ sw $v0, 0x002C($sp)
/* 00520 80B21300 0C01E0C4 */ jal Math_SmoothStepToF
/* 00524 80B21304 E7AA0010 */ swc1 $f10, 0x0010($sp)
/* 00528 80B21308 3C078013 */ lui $a3, %hi(D_801333E0)
/* 0052C 80B2130C 3C0F8013 */ lui $t7, %hi(D_801333E8)
/* 00530 80B21310 24E733E0 */ addiu $a3, %lo(D_801333E0)
/* 00534 80B21314 25EF33E8 */ addiu $t7, %lo(D_801333E8)
/* 00538 80B21318 AFAF0014 */ sw $t7, 0x0014($sp)
/* 0053C 80B2131C AFA70010 */ sw $a3, 0x0010($sp)
/* 00540 80B21320 24043064 */ addiu $a0, $zero, 0x3064 ## $a0 = 00003064
/* 00544 80B21324 260500E4 */ addiu $a1, $s0, 0x00E4 ## $a1 = 000000E4
/* 00548 80B21328 0C03DCE3 */ jal Audio_PlaySoundGeneral
/* 0054C 80B2132C 24060004 */ addiu $a2, $zero, 0x0004 ## $a2 = 00000004
/* 00550 80B21330 92020184 */ lbu $v0, 0x0184($s0) ## 00000184
/* 00554 80B21334 30580002 */ andi $t8, $v0, 0x0002 ## $t8 = 00000000
/* 00558 80B21338 13000008 */ beq $t8, $zero, .L80B2135C
/* 0055C 80B2133C 3059FFFD */ andi $t9, $v0, 0xFFFD ## $t9 = 00000000
/* 00560 80B21340 A2190184 */ sb $t9, 0x0184($s0) ## 00000184
/* 00564 80B21344 8FA8002C */ lw $t0, 0x002C($sp)
/* 00568 80B21348 8E090178 */ lw $t1, 0x0178($s0) ## 00000178
/* 0056C 80B2134C 240A0001 */ addiu $t2, $zero, 0x0001 ## $t2 = 00000001
/* 00570 80B21350 55090003 */ bnel $t0, $t1, .L80B21360
/* 00574 80B21354 86020160 */ lh $v0, 0x0160($s0) ## 00000160
/* 00578 80B21358 A60A015A */ sh $t2, 0x015A($s0) ## 0000015A
.L80B2135C:
/* 0057C 80B2135C 86020160 */ lh $v0, 0x0160($s0) ## 00000160
.L80B21360:
/* 00580 80B21360 284100FF */ slti $at, $v0, 0x00FF
/* 00584 80B21364 10200002 */ beq $at, $zero, .L80B21370
/* 00588 80B21368 244B000F */ addiu $t3, $v0, 0x000F ## $t3 = 0000000F
/* 0058C 80B2136C A60B0160 */ sh $t3, 0x0160($s0) ## 00000160
.L80B21370:
/* 00590 80B21370 0C0329DD */ jal Math_CosF
/* 00594 80B21374 C60C0168 */ lwc1 $f12, 0x0168($s0) ## 00000168
/* 00598 80B21378 44808000 */ mtc1 $zero, $f16 ## $f16 = 0.00
/* 0059C 80B2137C 00000000 */ nop
/* 005A0 80B21380 46100032 */ c.eq.s $f0, $f16
/* 005A4 80B21384 00000000 */ nop
/* 005A8 80B21388 45000005 */ bc1f .L80B213A0
/* 005AC 80B2138C 00000000 */ nop
/* 005B0 80B21390 0C03F66B */ jal Rand_ZeroOne
## Rand.Next() float
/* 005B4 80B21394 00000000 */ nop
/* 005B8 80B21398 46000480 */ add.s $f18, $f0, $f0
/* 005BC 80B2139C E6120170 */ swc1 $f18, 0x0170($s0) ## 00000170
.L80B213A0:
/* 005C0 80B213A0 0C0329DD */ jal Math_CosF
/* 005C4 80B213A4 C60C0168 */ lwc1 $f12, 0x0168($s0) ## 00000168
/* 005C8 80B213A8 3C0180B2 */ lui $at, %hi(D_80B22B84) ## $at = 80B20000
/* 005CC 80B213AC C4222B84 */ lwc1 $f2, %lo(D_80B22B84)($at)
/* 005D0 80B213B0 3C014000 */ lui $at, 0x4000 ## $at = 40000000
/* 005D4 80B213B4 44812000 */ mtc1 $at, $f4 ## $f4 = 2.00
/* 005D8 80B213B8 C6060170 */ lwc1 $f6, 0x0170($s0) ## 00000170
/* 005DC 80B213BC C6100028 */ lwc1 $f16, 0x0028($s0) ## 00000028
/* 005E0 80B213C0 3C063DCC */ lui $a2, 0x3DCC ## $a2 = 3DCC0000
/* 005E4 80B213C4 46062200 */ add.s $f8, $f4, $f6
/* 005E8 80B213C8 C6040168 */ lwc1 $f4, 0x0168($s0) ## 00000168
/* 005EC 80B213CC 44071000 */ mfc1 $a3, $f2
/* 005F0 80B213D0 34C6CCCD */ ori $a2, $a2, 0xCCCD ## $a2 = 3DCCCCCD
/* 005F4 80B213D4 46080282 */ mul.s $f10, $f0, $f8
/* 005F8 80B213D8 46022180 */ add.s $f6, $f4, $f2
/* 005FC 80B213DC 44804000 */ mtc1 $zero, $f8 ## $f8 = 0.00
/* 00600 80B213E0 26040068 */ addiu $a0, $s0, 0x0068 ## $a0 = 00000068
/* 00604 80B213E4 3C054020 */ lui $a1, 0x4020 ## $a1 = 40200000
/* 00608 80B213E8 E6060168 */ swc1 $f6, 0x0168($s0) ## 00000168
/* 0060C 80B213EC 460A8480 */ add.s $f18, $f16, $f10
/* 00610 80B213F0 E6120028 */ swc1 $f18, 0x0028($s0) ## 00000028
/* 00614 80B213F4 0C01E0C4 */ jal Math_SmoothStepToF
/* 00618 80B213F8 E7A80010 */ swc1 $f8, 0x0010($sp)
/* 0061C 80B213FC 860C015A */ lh $t4, 0x015A($s0) ## 0000015A
/* 00620 80B21400 26040032 */ addiu $a0, $s0, 0x0032 ## $a0 = 00000032
/* 00624 80B21404 24060001 */ addiu $a2, $zero, 0x0001 ## $a2 = 00000001
/* 00628 80B21408 258DFFFF */ addiu $t5, $t4, 0xFFFF ## $t5 = FFFFFFFF
/* 0062C 80B2140C A60D015A */ sh $t5, 0x015A($s0) ## 0000015A
/* 00630 80B21410 860E015A */ lh $t6, 0x015A($s0) ## 0000015A
/* 00634 80B21414 240702EE */ addiu $a3, $zero, 0x02EE ## $a3 = 000002EE
/* 00638 80B21418 11C00007 */ beq $t6, $zero, .L80B21438
/* 0063C 80B2141C 00000000 */ nop
/* 00640 80B21420 8605008A */ lh $a1, 0x008A($s0) ## 0000008A
/* 00644 80B21424 0C01E1A7 */ jal Math_SmoothStepToS
/* 00648 80B21428 AFA00010 */ sw $zero, 0x0010($sp)
/* 0064C 80B2142C 860F0032 */ lh $t7, 0x0032($s0) ## 00000032
/* 00650 80B21430 10000003 */ beq $zero, $zero, .L80B21440
/* 00654 80B21434 A60F00B6 */ sh $t7, 0x00B6($s0) ## 000000B6
.L80B21438:
/* 00658 80B21438 0C2C87BA */ jal func_80B21EE8
/* 0065C 80B2143C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
.L80B21440:
/* 00660 80B21440 8FBF0024 */ lw $ra, 0x0024($sp)
/* 00664 80B21444 8FB00020 */ lw $s0, 0x0020($sp)
/* 00668 80B21448 27BD0030 */ addiu $sp, $sp, 0x0030 ## $sp = 00000000
/* 0066C 80B2144C 03E00008 */ jr $ra
/* 00670 80B21450 00000000 */ nop

View file

@ -1,35 +0,0 @@
glabel func_80B21454
/* 00674 80B21454 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 00678 80B21458 AFBF0014 */ sw $ra, 0x0014($sp)
/* 0067C 80B2145C 848F001C */ lh $t7, 0x001C($a0) ## 0000001C
/* 00680 80B21460 240E0002 */ addiu $t6, $zero, 0x0002 ## $t6 = 00000002
/* 00684 80B21464 A48E015A */ sh $t6, 0x015A($a0) ## 0000015A
/* 00688 80B21468 05E1000F */ bgez $t7, .L80B214A8
/* 0068C 80B2146C 2418000D */ addiu $t8, $zero, 0x000D ## $t8 = 0000000D
/* 00690 80B21470 8C82011C */ lw $v0, 0x011C($a0) ## 0000011C
/* 00694 80B21474 2403000B */ addiu $v1, $zero, 0x000B ## $v1 = 0000000B
/* 00698 80B21478 24053866 */ addiu $a1, $zero, 0x3866 ## $a1 = 00003866
/* 0069C 80B2147C 50400007 */ beql $v0, $zero, .L80B2149C
/* 006A0 80B21480 A498015A */ sh $t8, 0x015A($a0) ## 0000015A
/* 006A4 80B21484 A443001C */ sh $v1, 0x001C($v0) ## 0000001C
.L80B21488:
/* 006A8 80B21488 A04000AF */ sb $zero, 0x00AF($v0) ## 000000AF
/* 006AC 80B2148C 8C42011C */ lw $v0, 0x011C($v0) ## 0000011C
/* 006B0 80B21490 5440FFFD */ bnel $v0, $zero, .L80B21488
/* 006B4 80B21494 A443001C */ sh $v1, 0x001C($v0) ## 0000001C
/* 006B8 80B21498 A498015A */ sh $t8, 0x015A($a0) ## 0000015A
.L80B2149C:
/* 006BC 80B2149C 0C00BE0A */ jal Audio_PlayActorSound2
/* 006C0 80B214A0 AFA40018 */ sw $a0, 0x0018($sp)
/* 006C4 80B214A4 8FA40018 */ lw $a0, 0x0018($sp)
.L80B214A8:
/* 006C8 80B214A8 24190001 */ addiu $t9, $zero, 0x0001 ## $t9 = 00000001
/* 006CC 80B214AC 3C0580B2 */ lui $a1, %hi(func_80B214CC) ## $a1 = 80B20000
/* 006D0 80B214B0 AC99014C */ sw $t9, 0x014C($a0) ## 0000014C
/* 006D4 80B214B4 0C2C8378 */ jal func_80B20DE0
/* 006D8 80B214B8 24A514CC */ addiu $a1, $a1, %lo(func_80B214CC) ## $a1 = 80B214CC
/* 006DC 80B214BC 8FBF0014 */ lw $ra, 0x0014($sp)
/* 006E0 80B214C0 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 006E4 80B214C4 03E00008 */ jr $ra
/* 006E8 80B214C8 00000000 */ nop

View file

@ -1,221 +0,0 @@
glabel func_80B214CC
/* 006EC 80B214CC 27BDFF70 */ addiu $sp, $sp, 0xFF70 ## $sp = FFFFFF70
/* 006F0 80B214D0 3C0E80B2 */ lui $t6, %hi(D_80B22AE8) ## $t6 = 80B20000
/* 006F4 80B214D4 AFBF0064 */ sw $ra, 0x0064($sp)
/* 006F8 80B214D8 AFB40060 */ sw $s4, 0x0060($sp)
/* 006FC 80B214DC AFB3005C */ sw $s3, 0x005C($sp)
/* 00700 80B214E0 AFB20058 */ sw $s2, 0x0058($sp)
/* 00704 80B214E4 AFB10054 */ sw $s1, 0x0054($sp)
/* 00708 80B214E8 AFB00050 */ sw $s0, 0x0050($sp)
/* 0070C 80B214EC F7B40048 */ sdc1 $f20, 0x0048($sp)
/* 00710 80B214F0 25CE2AE8 */ addiu $t6, $t6, %lo(D_80B22AE8) ## $t6 = 80B22AE8
/* 00714 80B214F4 8DD80000 */ lw $t8, 0x0000($t6) ## 80B22AE8
/* 00718 80B214F8 27B00078 */ addiu $s0, $sp, 0x0078 ## $s0 = FFFFFFE8
/* 0071C 80B214FC 3C1980B2 */ lui $t9, %hi(D_80B22AF4) ## $t9 = 80B20000
/* 00720 80B21500 AE180000 */ sw $t8, 0x0000($s0) ## FFFFFFE8
/* 00724 80B21504 8DCF0004 */ lw $t7, 0x0004($t6) ## 80B22AEC
/* 00728 80B21508 27392AF4 */ addiu $t9, $t9, %lo(D_80B22AF4) ## $t9 = 80B22AF4
/* 0072C 80B2150C 27B1006C */ addiu $s1, $sp, 0x006C ## $s1 = FFFFFFDC
/* 00730 80B21510 AE0F0004 */ sw $t7, 0x0004($s0) ## FFFFFFEC
/* 00734 80B21514 8DD80008 */ lw $t8, 0x0008($t6) ## 80B22AF0
/* 00738 80B21518 00809025 */ or $s2, $a0, $zero ## $s2 = 00000000
/* 0073C 80B2151C 00A0A025 */ or $s4, $a1, $zero ## $s4 = 00000000
/* 00740 80B21520 AE180008 */ sw $t8, 0x0008($s0) ## FFFFFFF0
/* 00744 80B21524 8F290000 */ lw $t1, 0x0000($t9) ## 80B22AF4
/* 00748 80B21528 AE290000 */ sw $t1, 0x0000($s1) ## FFFFFFDC
/* 0074C 80B2152C 8F280004 */ lw $t0, 0x0004($t9) ## 80B22AF8
/* 00750 80B21530 AE280004 */ sw $t0, 0x0004($s1) ## FFFFFFE0
/* 00754 80B21534 8F290008 */ lw $t1, 0x0008($t9) ## 80B22AFC
/* 00758 80B21538 AE290008 */ sw $t1, 0x0008($s1) ## FFFFFFE4
/* 0075C 80B2153C 848A015A */ lh $t2, 0x015A($a0) ## 0000015A
/* 00760 80B21540 254BFFFF */ addiu $t3, $t2, 0xFFFF ## $t3 = FFFFFFFF
/* 00764 80B21544 A48B015A */ sh $t3, 0x015A($a0) ## 0000015A
/* 00768 80B21548 848C015A */ lh $t4, 0x015A($a0) ## 0000015A
/* 0076C 80B2154C 5D8000A3 */ bgtzl $t4, .L80B217DC
/* 00770 80B21550 8FBF0064 */ lw $ra, 0x0064($sp)
/* 00774 80B21554 848D001C */ lh $t5, 0x001C($a0) ## 0000001C
/* 00778 80B21558 2401000C */ addiu $at, $zero, 0x000C ## $at = 0000000C
/* 0077C 80B2155C 26931C24 */ addiu $s3, $s4, 0x1C24 ## $s3 = 00001C24
/* 00780 80B21560 55A10071 */ bnel $t5, $at, .L80B21728
/* 00784 80B21564 3C013F00 */ lui $at, 0x3F00 ## $at = 3F000000
/* 00788 80B21568 0C03F66B */ jal Rand_ZeroOne
## Rand.Next() float
/* 0078C 80B2156C 00000000 */ nop
/* 00790 80B21570 3C013F00 */ lui $at, 0x3F00 ## $at = 3F000000
/* 00794 80B21574 4481A000 */ mtc1 $at, $f20 ## $f20 = 0.50
/* 00798 80B21578 3C014170 */ lui $at, 0x4170 ## $at = 41700000
/* 0079C 80B2157C 44813000 */ mtc1 $at, $f6 ## $f6 = 15.00
/* 007A0 80B21580 46140101 */ sub.s $f4, $f0, $f20
/* 007A4 80B21584 C64A0024 */ lwc1 $f10, 0x0024($s2) ## 00000024
/* 007A8 80B21588 46062202 */ mul.s $f8, $f4, $f6
/* 007AC 80B2158C 460A4400 */ add.s $f16, $f8, $f10
/* 007B0 80B21590 0C03F66B */ jal Rand_ZeroOne
## Rand.Next() float
/* 007B4 80B21594 E7B0006C */ swc1 $f16, 0x006C($sp)
/* 007B8 80B21598 46140481 */ sub.s $f18, $f0, $f20
/* 007BC 80B2159C 3C014170 */ lui $at, 0x4170 ## $at = 41700000
/* 007C0 80B215A0 44812000 */ mtc1 $at, $f4 ## $f4 = 15.00
/* 007C4 80B215A4 C648002C */ lwc1 $f8, 0x002C($s2) ## 0000002C
/* 007C8 80B215A8 46049182 */ mul.s $f6, $f18, $f4
/* 007CC 80B215AC 46083280 */ add.s $f10, $f6, $f8
/* 007D0 80B215B0 0C03F66B */ jal Rand_ZeroOne
## Rand.Next() float
/* 007D4 80B215B4 E7AA0074 */ swc1 $f10, 0x0074($sp)
/* 007D8 80B215B8 46140401 */ sub.s $f16, $f0, $f20
/* 007DC 80B215BC 3C0140A0 */ lui $at, 0x40A0 ## $at = 40A00000
/* 007E0 80B215C0 44819000 */ mtc1 $at, $f18 ## $f18 = 5.00
/* 007E4 80B215C4 C6460028 */ lwc1 $f6, 0x0028($s2) ## 00000028
/* 007E8 80B215C8 240E0064 */ addiu $t6, $zero, 0x0064 ## $t6 = 00000064
/* 007EC 80B215CC 46128102 */ mul.s $f4, $f16, $f18
/* 007F0 80B215D0 240F00FF */ addiu $t7, $zero, 0x00FF ## $t7 = 000000FF
/* 007F4 80B215D4 241800FF */ addiu $t8, $zero, 0x00FF ## $t8 = 000000FF
/* 007F8 80B215D8 241900FF */ addiu $t9, $zero, 0x00FF ## $t9 = 000000FF
/* 007FC 80B215DC 240800FF */ addiu $t0, $zero, 0x00FF ## $t0 = 000000FF
/* 00800 80B215E0 240900FF */ addiu $t1, $zero, 0x00FF ## $t1 = 000000FF
/* 00804 80B215E4 240A0001 */ addiu $t2, $zero, 0x0001 ## $t2 = 00000001
/* 00808 80B215E8 46062200 */ add.s $f8, $f4, $f6
/* 0080C 80B215EC 240B0009 */ addiu $t3, $zero, 0x0009 ## $t3 = 00000009
/* 00810 80B215F0 240C0001 */ addiu $t4, $zero, 0x0001 ## $t4 = 00000001
/* 00814 80B215F4 AFAC003C */ sw $t4, 0x003C($sp)
/* 00818 80B215F8 E7A80070 */ swc1 $f8, 0x0070($sp)
/* 0081C 80B215FC AFAB0038 */ sw $t3, 0x0038($sp)
/* 00820 80B21600 AFAA0034 */ sw $t2, 0x0034($sp)
/* 00824 80B21604 AFA90030 */ sw $t1, 0x0030($sp)
/* 00828 80B21608 AFA80024 */ sw $t0, 0x0024($sp)
/* 0082C 80B2160C AFB90020 */ sw $t9, 0x0020($sp)
/* 00830 80B21610 AFB8001C */ sw $t8, 0x001C($sp)
/* 00834 80B21614 AFAF0018 */ sw $t7, 0x0018($sp)
/* 00838 80B21618 AFAE0010 */ sw $t6, 0x0010($sp)
/* 0083C 80B2161C AFA0002C */ sw $zero, 0x002C($sp)
/* 00840 80B21620 AFA00028 */ sw $zero, 0x0028($sp)
/* 00844 80B21624 AFA00014 */ sw $zero, 0x0014($sp)
/* 00848 80B21628 02802025 */ or $a0, $s4, $zero ## $a0 = 00000000
/* 0084C 80B2162C 02202825 */ or $a1, $s1, $zero ## $a1 = FFFFFFDC
/* 00850 80B21630 02003025 */ or $a2, $s0, $zero ## $a2 = FFFFFFE8
/* 00854 80B21634 0C00A9AE */ jal EffectSsDeadDb_Spawn
/* 00858 80B21638 02003825 */ or $a3, $s0, $zero ## $a3 = FFFFFFE8
/* 0085C 80B2163C 0C03F66B */ jal Rand_ZeroOne
## Rand.Next() float
/* 00860 80B21640 00000000 */ nop
/* 00864 80B21644 46140281 */ sub.s $f10, $f0, $f20
/* 00868 80B21648 3C014170 */ lui $at, 0x4170 ## $at = 41700000
/* 0086C 80B2164C 44818000 */ mtc1 $at, $f16 ## $f16 = 15.00
/* 00870 80B21650 C6440024 */ lwc1 $f4, 0x0024($s2) ## 00000024
/* 00874 80B21654 46105482 */ mul.s $f18, $f10, $f16
/* 00878 80B21658 46049180 */ add.s $f6, $f18, $f4
/* 0087C 80B2165C 0C03F66B */ jal Rand_ZeroOne
## Rand.Next() float
/* 00880 80B21660 E7A6006C */ swc1 $f6, 0x006C($sp)
/* 00884 80B21664 46140201 */ sub.s $f8, $f0, $f20
/* 00888 80B21668 3C014170 */ lui $at, 0x4170 ## $at = 41700000
/* 0088C 80B2166C 44815000 */ mtc1 $at, $f10 ## $f10 = 15.00
/* 00890 80B21670 C652002C */ lwc1 $f18, 0x002C($s2) ## 0000002C
/* 00894 80B21674 460A4402 */ mul.s $f16, $f8, $f10
/* 00898 80B21678 46128100 */ add.s $f4, $f16, $f18
/* 0089C 80B2167C 0C03F66B */ jal Rand_ZeroOne
## Rand.Next() float
/* 008A0 80B21680 E7A40074 */ swc1 $f4, 0x0074($sp)
/* 008A4 80B21684 46140181 */ sub.s $f6, $f0, $f20
/* 008A8 80B21688 3C0140A0 */ lui $at, 0x40A0 ## $at = 40A00000
/* 008AC 80B2168C 44814000 */ mtc1 $at, $f8 ## $f8 = 5.00
/* 008B0 80B21690 C6500028 */ lwc1 $f16, 0x0028($s2) ## 00000028
/* 008B4 80B21694 240D0064 */ addiu $t5, $zero, 0x0064 ## $t5 = 00000064
/* 008B8 80B21698 46083282 */ mul.s $f10, $f6, $f8
/* 008BC 80B2169C 240E00FF */ addiu $t6, $zero, 0x00FF ## $t6 = 000000FF
/* 008C0 80B216A0 240F00FF */ addiu $t7, $zero, 0x00FF ## $t7 = 000000FF
/* 008C4 80B216A4 241800FF */ addiu $t8, $zero, 0x00FF ## $t8 = 000000FF
/* 008C8 80B216A8 241900FF */ addiu $t9, $zero, 0x00FF ## $t9 = 000000FF
/* 008CC 80B216AC 240800FF */ addiu $t0, $zero, 0x00FF ## $t0 = 000000FF
/* 008D0 80B216B0 24090001 */ addiu $t1, $zero, 0x0001 ## $t1 = 00000001
/* 008D4 80B216B4 46105480 */ add.s $f18, $f10, $f16
/* 008D8 80B216B8 240A0009 */ addiu $t2, $zero, 0x0009 ## $t2 = 00000009
/* 008DC 80B216BC 240B0001 */ addiu $t3, $zero, 0x0001 ## $t3 = 00000001
/* 008E0 80B216C0 AFAB003C */ sw $t3, 0x003C($sp)
/* 008E4 80B216C4 E7B20070 */ swc1 $f18, 0x0070($sp)
/* 008E8 80B216C8 AFAA0038 */ sw $t2, 0x0038($sp)
/* 008EC 80B216CC AFA90034 */ sw $t1, 0x0034($sp)
/* 008F0 80B216D0 AFA80030 */ sw $t0, 0x0030($sp)
/* 008F4 80B216D4 AFB90024 */ sw $t9, 0x0024($sp)
/* 008F8 80B216D8 AFB80020 */ sw $t8, 0x0020($sp)
/* 008FC 80B216DC AFAF001C */ sw $t7, 0x001C($sp)
/* 00900 80B216E0 AFAE0018 */ sw $t6, 0x0018($sp)
/* 00904 80B216E4 AFAD0010 */ sw $t5, 0x0010($sp)
/* 00908 80B216E8 AFA0002C */ sw $zero, 0x002C($sp)
/* 0090C 80B216EC AFA00028 */ sw $zero, 0x0028($sp)
/* 00910 80B216F0 AFA00014 */ sw $zero, 0x0014($sp)
/* 00914 80B216F4 02802025 */ or $a0, $s4, $zero ## $a0 = 00000000
/* 00918 80B216F8 02202825 */ or $a1, $s1, $zero ## $a1 = FFFFFFDC
/* 0091C 80B216FC 02003025 */ or $a2, $s0, $zero ## $a2 = FFFFFFE8
/* 00920 80B21700 0C00A9AE */ jal EffectSsDeadDb_Spawn
/* 00924 80B21704 02003825 */ or $a3, $s0, $zero ## $a3 = FFFFFFE8
/* 00928 80B21708 02802025 */ or $a0, $s4, $zero ## $a0 = 00000000
/* 0092C 80B2170C 02402825 */ or $a1, $s2, $zero ## $a1 = 00000000
/* 00930 80B21710 26460024 */ addiu $a2, $s2, 0x0024 ## $a2 = 00000024
/* 00934 80B21714 0C007E50 */ jal Item_DropCollectibleRandom
/* 00938 80B21718 24070050 */ addiu $a3, $zero, 0x0050 ## $a3 = 00000050
/* 0093C 80B2171C 10000022 */ beq $zero, $zero, .L80B217A8
/* 00940 80B21720 8E42011C */ lw $v0, 0x011C($s2) ## 0000011C
/* 00944 80B21724 3C013F00 */ lui $at, 0x3F00 ## $at = 3F000000
.L80B21728:
/* 00948 80B21728 4481A000 */ mtc1 $at, $f20 ## $f20 = 0.50
/* 0094C 80B2172C 00008825 */ or $s1, $zero, $zero ## $s1 = 00000000
/* 00950 80B21730 C6440028 */ lwc1 $f4, 0x0028($s2) ## 00000028
.L80B21734:
/* 00954 80B21734 8E470024 */ lw $a3, 0x0024($s2) ## 00000024
/* 00958 80B21738 240C000A */ addiu $t4, $zero, 0x000A ## $t4 = 0000000A
/* 0095C 80B2173C E7A40010 */ swc1 $f4, 0x0010($sp)
/* 00960 80B21740 C646002C */ lwc1 $f6, 0x002C($s2) ## 0000002C
/* 00964 80B21744 AFAC0024 */ sw $t4, 0x0024($sp)
/* 00968 80B21748 AFA00020 */ sw $zero, 0x0020($sp)
/* 0096C 80B2174C AFA0001C */ sw $zero, 0x001C($sp)
/* 00970 80B21750 AFA00018 */ sw $zero, 0x0018($sp)
/* 00974 80B21754 02602025 */ or $a0, $s3, $zero ## $a0 = 00001C24
/* 00978 80B21758 02802825 */ or $a1, $s4, $zero ## $a1 = 00000000
/* 0097C 80B2175C 24060035 */ addiu $a2, $zero, 0x0035 ## $a2 = 00000035
/* 00980 80B21760 0C00C7D4 */ jal Actor_Spawn
## ActorSpawn
/* 00984 80B21764 E7A60014 */ swc1 $f6, 0x0014($sp)
/* 00988 80B21768 10400009 */ beq $v0, $zero, .L80B21790
/* 0098C 80B2176C 00408025 */ or $s0, $v0, $zero ## $s0 = 00000000
/* 00990 80B21770 C6480058 */ lwc1 $f8, 0x0058($s2) ## 00000058
/* 00994 80B21774 00402025 */ or $a0, $v0, $zero ## $a0 = 00000000
/* 00998 80B21778 46144282 */ mul.s $f10, $f8, $f20
/* 0099C 80B2177C 44055000 */ mfc1 $a1, $f10
/* 009A0 80B21780 0C00B58B */ jal Actor_SetScale
/* 009A4 80B21784 00000000 */ nop
/* 009A8 80B21788 864D0160 */ lh $t5, 0x0160($s2) ## 00000160
/* 009AC 80B2178C A60D0160 */ sh $t5, 0x0160($s0) ## 00000160
.L80B21790:
/* 009B0 80B21790 26310001 */ addiu $s1, $s1, 0x0001 ## $s1 = 00000001
/* 009B4 80B21794 00118C00 */ sll $s1, $s1, 16
/* 009B8 80B21798 00118C03 */ sra $s1, $s1, 16
/* 009BC 80B2179C 5A20FFE5 */ blezl $s1, .L80B21734
/* 009C0 80B217A0 C6440028 */ lwc1 $f4, 0x0028($s2) ## 00000028
/* 009C4 80B217A4 8E42011C */ lw $v0, 0x011C($s2) ## 0000011C
.L80B217A8:
/* 009C8 80B217A8 24190002 */ addiu $t9, $zero, 0x0002 ## $t9 = 00000002
/* 009CC 80B217AC 02402025 */ or $a0, $s2, $zero ## $a0 = 00000000
/* 009D0 80B217B0 10400007 */ beq $v0, $zero, .L80B217D0
/* 009D4 80B217B4 00000000 */ nop
/* 009D8 80B217B8 AC400118 */ sw $zero, 0x0118($v0) ## 00000118
/* 009DC 80B217BC 8E4F011C */ lw $t7, 0x011C($s2) ## 0000011C
/* 009E0 80B217C0 240E000B */ addiu $t6, $zero, 0x000B ## $t6 = 0000000B
/* 009E4 80B217C4 A5EE001C */ sh $t6, 0x001C($t7) ## 0000001C
/* 009E8 80B217C8 8E58011C */ lw $t8, 0x011C($s2) ## 0000011C
/* 009EC 80B217CC A30000AF */ sb $zero, 0x00AF($t8) ## 000000AF
.L80B217D0:
/* 009F0 80B217D0 0C00B55C */ jal Actor_Kill
/* 009F4 80B217D4 AE590150 */ sw $t9, 0x0150($s2) ## 00000150
/* 009F8 80B217D8 8FBF0064 */ lw $ra, 0x0064($sp)
.L80B217DC:
/* 009FC 80B217DC D7B40048 */ ldc1 $f20, 0x0048($sp)
/* 00A00 80B217E0 8FB00050 */ lw $s0, 0x0050($sp)
/* 00A04 80B217E4 8FB10054 */ lw $s1, 0x0054($sp)
/* 00A08 80B217E8 8FB20058 */ lw $s2, 0x0058($sp)
/* 00A0C 80B217EC 8FB3005C */ lw $s3, 0x005C($sp)
/* 00A10 80B217F0 8FB40060 */ lw $s4, 0x0060($sp)
/* 00A14 80B217F4 03E00008 */ jr $ra
/* 00A18 80B217F8 27BD0090 */ addiu $sp, $sp, 0x0090 ## $sp = 00000000

View file

@ -1,72 +0,0 @@
glabel func_80B217FC
/* 00A1C 80B217FC 27BDFFD8 */ addiu $sp, $sp, 0xFFD8 ## $sp = FFFFFFD8
/* 00A20 80B21800 AFBF0024 */ sw $ra, 0x0024($sp)
/* 00A24 80B21804 AFB00020 */ sw $s0, 0x0020($sp)
/* 00A28 80B21808 F7B40018 */ sdc1 $f20, 0x0018($sp)
/* 00A2C 80B2180C 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00A30 80B21810 0C03F66B */ jal Rand_ZeroOne
## Rand.Next() float
/* 00A34 80B21814 AC80014C */ sw $zero, 0x014C($a0) ## 0000014C
/* 00A38 80B21818 3C013F00 */ lui $at, 0x3F00 ## $at = 3F000000
/* 00A3C 80B2181C 4481A000 */ mtc1 $at, $f20 ## $f20 = 0.50
/* 00A40 80B21820 3C0140A0 */ lui $at, 0x40A0 ## $at = 40A00000
/* 00A44 80B21824 44813000 */ mtc1 $at, $f6 ## $f6 = 5.00
/* 00A48 80B21828 46140101 */ sub.s $f4, $f0, $f20
/* 00A4C 80B2182C C60A0024 */ lwc1 $f10, 0x0024($s0) ## 00000024
/* 00A50 80B21830 46062202 */ mul.s $f8, $f4, $f6
/* 00A54 80B21834 46085400 */ add.s $f16, $f10, $f8
/* 00A58 80B21838 0C03F66B */ jal Rand_ZeroOne
## Rand.Next() float
/* 00A5C 80B2183C E6100024 */ swc1 $f16, 0x0024($s0) ## 00000024
/* 00A60 80B21840 46140481 */ sub.s $f18, $f0, $f20
/* 00A64 80B21844 3C0140A0 */ lui $at, 0x40A0 ## $at = 40A00000
/* 00A68 80B21848 44812000 */ mtc1 $at, $f4 ## $f4 = 5.00
/* 00A6C 80B2184C C60A0028 */ lwc1 $f10, 0x0028($s0) ## 00000028
/* 00A70 80B21850 46049182 */ mul.s $f6, $f18, $f4
/* 00A74 80B21854 46065200 */ add.s $f8, $f10, $f6
/* 00A78 80B21858 0C03F66B */ jal Rand_ZeroOne
## Rand.Next() float
/* 00A7C 80B2185C E6080028 */ swc1 $f8, 0x0028($s0) ## 00000028
/* 00A80 80B21860 46140401 */ sub.s $f16, $f0, $f20
/* 00A84 80B21864 3C0140A0 */ lui $at, 0x40A0 ## $at = 40A00000
/* 00A88 80B21868 44819000 */ mtc1 $at, $f18 ## $f18 = 5.00
/* 00A8C 80B2186C C60A002C */ lwc1 $f10, 0x002C($s0) ## 0000002C
/* 00A90 80B21870 46128102 */ mul.s $f4, $f16, $f18
/* 00A94 80B21874 46045180 */ add.s $f6, $f10, $f4
/* 00A98 80B21878 0C03F66B */ jal Rand_ZeroOne
## Rand.Next() float
/* 00A9C 80B2187C E606002C */ swc1 $f6, 0x002C($s0) ## 0000002C
/* 00AA0 80B21880 46140201 */ sub.s $f8, $f0, $f20
/* 00AA4 80B21884 3C013FC0 */ lui $at, 0x3FC0 ## $at = 3FC00000
/* 00AA8 80B21888 44818000 */ mtc1 $at, $f16 ## $f16 = 1.50
/* 00AAC 80B2188C 00000000 */ nop
/* 00AB0 80B21890 46104482 */ mul.s $f18, $f8, $f16
/* 00AB4 80B21894 0C03F66B */ jal Rand_ZeroOne
## Rand.Next() float
/* 00AB8 80B21898 E612005C */ swc1 $f18, 0x005C($s0) ## 0000005C
/* 00ABC 80B2189C 46140281 */ sub.s $f10, $f0, $f20
/* 00AC0 80B218A0 3C013FC0 */ lui $at, 0x3FC0 ## $at = 3FC00000
/* 00AC4 80B218A4 44812000 */ mtc1 $at, $f4 ## $f4 = 1.50
/* 00AC8 80B218A8 00000000 */ nop
/* 00ACC 80B218AC 46045182 */ mul.s $f6, $f10, $f4
/* 00AD0 80B218B0 0C03F66B */ jal Rand_ZeroOne
## Rand.Next() float
/* 00AD4 80B218B4 E6060060 */ swc1 $f6, 0x0060($s0) ## 00000060
/* 00AD8 80B218B8 46140201 */ sub.s $f8, $f0, $f20
/* 00ADC 80B218BC 3C013FC0 */ lui $at, 0x3FC0 ## $at = 3FC00000
/* 00AE0 80B218C0 44818000 */ mtc1 $at, $f16 ## $f16 = 1.50
/* 00AE4 80B218C4 8E0E0004 */ lw $t6, 0x0004($s0) ## 00000004
/* 00AE8 80B218C8 2401FFFE */ addiu $at, $zero, 0xFFFE ## $at = FFFFFFFE
/* 00AEC 80B218CC 46104482 */ mul.s $f18, $f8, $f16
/* 00AF0 80B218D0 3C0580B2 */ lui $a1, %hi(func_80B21900) ## $a1 = 80B20000
/* 00AF4 80B218D4 01C17824 */ and $t7, $t6, $at
/* 00AF8 80B218D8 AE0F0004 */ sw $t7, 0x0004($s0) ## 00000004
/* 00AFC 80B218DC 24A51900 */ addiu $a1, $a1, %lo(func_80B21900) ## $a1 = 80B21900
/* 00B00 80B218E0 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00B04 80B218E4 0C2C8378 */ jal func_80B20DE0
/* 00B08 80B218E8 E6120064 */ swc1 $f18, 0x0064($s0) ## 00000064
/* 00B0C 80B218EC 8FBF0024 */ lw $ra, 0x0024($sp)
/* 00B10 80B218F0 D7B40018 */ ldc1 $f20, 0x0018($sp)
/* 00B14 80B218F4 8FB00020 */ lw $s0, 0x0020($sp)
/* 00B18 80B218F8 03E00008 */ jr $ra
/* 00B1C 80B218FC 27BD0028 */ addiu $sp, $sp, 0x0028 ## $sp = 00000000

View file

@ -1,22 +0,0 @@
glabel func_80B21900
/* 00B20 80B21900 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 00B24 80B21904 AFBF0014 */ sw $ra, 0x0014($sp)
/* 00B28 80B21908 AFA5001C */ sw $a1, 0x001C($sp)
/* 00B2C 80B2190C 0C00B5FB */ jal func_8002D7EC
/* 00B30 80B21910 AFA40018 */ sw $a0, 0x0018($sp)
/* 00B34 80B21914 8FA40018 */ lw $a0, 0x0018($sp)
/* 00B38 80B21918 848E015E */ lh $t6, 0x015E($a0) ## 0000015E
/* 00B3C 80B2191C 25CFFFEC */ addiu $t7, $t6, 0xFFEC ## $t7 = FFFFFFEC
/* 00B40 80B21920 A48F015E */ sh $t7, 0x015E($a0) ## 0000015E
/* 00B44 80B21924 8498015E */ lh $t8, 0x015E($a0) ## 0000015E
/* 00B48 80B21928 2B010014 */ slti $at, $t8, 0x0014
/* 00B4C 80B2192C 50200004 */ beql $at, $zero, .L80B21940
/* 00B50 80B21930 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00B54 80B21934 0C00B55C */ jal Actor_Kill
/* 00B58 80B21938 A480015E */ sh $zero, 0x015E($a0) ## 0000015E
/* 00B5C 80B2193C 8FBF0014 */ lw $ra, 0x0014($sp)
.L80B21940:
/* 00B60 80B21940 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 00B64 80B21944 03E00008 */ jr $ra
/* 00B68 80B21948 00000000 */ nop

View file

@ -1,25 +0,0 @@
glabel func_80B2194C
/* 00B6C 80B2194C 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 00B70 80B21950 AFBF0014 */ sw $ra, 0x0014($sp)
/* 00B74 80B21954 0C03F66B */ jal Rand_ZeroOne
## Rand.Next() float
/* 00B78 80B21958 AFA40018 */ sw $a0, 0x0018($sp)
/* 00B7C 80B2195C 3C014170 */ lui $at, 0x4170 ## $at = 41700000
/* 00B80 80B21960 44812000 */ mtc1 $at, $f4 ## $f4 = 15.00
/* 00B84 80B21964 3C014220 */ lui $at, 0x4220 ## $at = 42200000
/* 00B88 80B21968 44814000 */ mtc1 $at, $f8 ## $f8 = 40.00
/* 00B8C 80B2196C 46040182 */ mul.s $f6, $f0, $f4
/* 00B90 80B21970 8FA40018 */ lw $a0, 0x0018($sp)
/* 00B94 80B21974 24180008 */ addiu $t8, $zero, 0x0008 ## $t8 = 00000008
/* 00B98 80B21978 3C0580B2 */ lui $a1, %hi(func_80B219A8) ## $a1 = 80B20000
/* 00B9C 80B2197C 24A519A8 */ addiu $a1, $a1, %lo(func_80B219A8) ## $a1 = 80B219A8
/* 00BA0 80B21980 AC98014C */ sw $t8, 0x014C($a0) ## 0000014C
/* 00BA4 80B21984 46083280 */ add.s $f10, $f6, $f8
/* 00BA8 80B21988 4600540D */ trunc.w.s $f16, $f10
/* 00BAC 80B2198C 440F8000 */ mfc1 $t7, $f16
/* 00BB0 80B21990 0C2C8378 */ jal func_80B20DE0
/* 00BB4 80B21994 A48F015A */ sh $t7, 0x015A($a0) ## 0000015A
/* 00BB8 80B21998 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00BBC 80B2199C 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 00BC0 80B219A0 03E00008 */ jr $ra
/* 00BC4 80B219A4 00000000 */ nop

View file

@ -1,140 +0,0 @@
.late_rodata
glabel D_80B22B88
.float 0.2
.text
glabel func_80B219A8
/* 00BC8 80B219A8 27BDFFD0 */ addiu $sp, $sp, 0xFFD0 ## $sp = FFFFFFD0
/* 00BCC 80B219AC AFBF0024 */ sw $ra, 0x0024($sp)
/* 00BD0 80B219B0 AFB00020 */ sw $s0, 0x0020($sp)
/* 00BD4 80B219B4 AFA50034 */ sw $a1, 0x0034($sp)
/* 00BD8 80B219B8 8CAF1C44 */ lw $t7, 0x1C44($a1) ## 00001C44
/* 00BDC 80B219BC 44802000 */ mtc1 $zero, $f4 ## $f4 = 0.00
/* 00BE0 80B219C0 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00BE4 80B219C4 3C063DCC */ lui $a2, 0x3DCC ## $a2 = 3DCC0000
/* 00BE8 80B219C8 3C073E4C */ lui $a3, 0x3E4C ## $a3 = 3E4C0000
/* 00BEC 80B219CC 34E7CCCD */ ori $a3, $a3, 0xCCCD ## $a3 = 3E4CCCCD
/* 00BF0 80B219D0 34C6CCCD */ ori $a2, $a2, 0xCCCD ## $a2 = 3DCCCCCD
/* 00BF4 80B219D4 24840068 */ addiu $a0, $a0, 0x0068 ## $a0 = 00000068
/* 00BF8 80B219D8 3C054020 */ lui $a1, 0x4020 ## $a1 = 40200000
/* 00BFC 80B219DC AFAF0028 */ sw $t7, 0x0028($sp)
/* 00C00 80B219E0 0C01E0C4 */ jal Math_SmoothStepToF
/* 00C04 80B219E4 E7A40010 */ swc1 $f4, 0x0010($sp)
/* 00C08 80B219E8 8FB80028 */ lw $t8, 0x0028($sp)
/* 00C0C 80B219EC 3C0142AA */ lui $at, 0x42AA ## $at = 42AA0000
/* 00C10 80B219F0 44814000 */ mtc1 $at, $f8 ## $f8 = 85.00
/* 00C14 80B219F4 C7060028 */ lwc1 $f6, 0x0028($t8) ## 00000028
/* 00C18 80B219F8 3C013E80 */ lui $at, 0x3E80 ## $at = 3E800000
/* 00C1C 80B219FC C6040068 */ lwc1 $f4, 0x0068($s0) ## 00000068
/* 00C20 80B21A00 46083280 */ add.s $f10, $f6, $f8
/* 00C24 80B21A04 44813000 */ mtc1 $at, $f6 ## $f6 = 0.25
/* 00C28 80B21A08 C610016C */ lwc1 $f16, 0x016C($s0) ## 0000016C
/* 00C2C 80B21A0C 26040028 */ addiu $a0, $s0, 0x0028 ## $a0 = 00000028
/* 00C30 80B21A10 46062202 */ mul.s $f8, $f4, $f6
/* 00C34 80B21A14 46105480 */ add.s $f18, $f10, $f16
/* 00C38 80B21A18 44805000 */ mtc1 $zero, $f10 ## $f10 = 0.00
/* 00C3C 80B21A1C 3C063F80 */ lui $a2, 0x3F80 ## $a2 = 3F800000
/* 00C40 80B21A20 44059000 */ mfc1 $a1, $f18
/* 00C44 80B21A24 E7AA0010 */ swc1 $f10, 0x0010($sp)
/* 00C48 80B21A28 44074000 */ mfc1 $a3, $f8
/* 00C4C 80B21A2C 0C01E0C4 */ jal Math_SmoothStepToF
/* 00C50 80B21A30 00000000 */ nop
/* 00C54 80B21A34 3C078013 */ lui $a3, %hi(D_801333E0)
/* 00C58 80B21A38 3C198013 */ lui $t9, %hi(D_801333E8)
/* 00C5C 80B21A3C 24E733E0 */ addiu $a3, %lo(D_801333E0)
/* 00C60 80B21A40 273933E8 */ addiu $t9, %lo(D_801333E8)
/* 00C64 80B21A44 AFB90014 */ sw $t9, 0x0014($sp)
/* 00C68 80B21A48 AFA70010 */ sw $a3, 0x0010($sp)
/* 00C6C 80B21A4C 24043064 */ addiu $a0, $zero, 0x3064 ## $a0 = 00003064
/* 00C70 80B21A50 260500E4 */ addiu $a1, $s0, 0x00E4 ## $a1 = 000000E4
/* 00C74 80B21A54 0C03DCE3 */ jal Audio_PlaySoundGeneral
/* 00C78 80B21A58 24060004 */ addiu $a2, $zero, 0x0004 ## $a2 = 00000004
/* 00C7C 80B21A5C 92020184 */ lbu $v0, 0x0184($s0) ## 00000184
/* 00C80 80B21A60 30480002 */ andi $t0, $v0, 0x0002 ## $t0 = 00000000
/* 00C84 80B21A64 11000008 */ beq $t0, $zero, .L80B21A88
/* 00C88 80B21A68 3049FFFD */ andi $t1, $v0, 0xFFFD ## $t1 = 00000000
/* 00C8C 80B21A6C A2090184 */ sb $t1, 0x0184($s0) ## 00000184
/* 00C90 80B21A70 8FAA0028 */ lw $t2, 0x0028($sp)
/* 00C94 80B21A74 8E0B0178 */ lw $t3, 0x0178($s0) ## 00000178
/* 00C98 80B21A78 240C0001 */ addiu $t4, $zero, 0x0001 ## $t4 = 00000001
/* 00C9C 80B21A7C 554B0003 */ bnel $t2, $t3, .L80B21A8C
/* 00CA0 80B21A80 86020160 */ lh $v0, 0x0160($s0) ## 00000160
/* 00CA4 80B21A84 A60C015C */ sh $t4, 0x015C($s0) ## 0000015C
.L80B21A88:
/* 00CA8 80B21A88 86020160 */ lh $v0, 0x0160($s0) ## 00000160
.L80B21A8C:
/* 00CAC 80B21A8C 10400002 */ beq $v0, $zero, .L80B21A98
/* 00CB0 80B21A90 244DFFF1 */ addiu $t5, $v0, 0xFFF1 ## $t5 = FFFFFFF1
/* 00CB4 80B21A94 A60D0160 */ sh $t5, 0x0160($s0) ## 00000160
.L80B21A98:
/* 00CB8 80B21A98 0C0329DD */ jal Math_CosF
/* 00CBC 80B21A9C C60C0168 */ lwc1 $f12, 0x0168($s0) ## 00000168
/* 00CC0 80B21AA0 44808000 */ mtc1 $zero, $f16 ## $f16 = 0.00
/* 00CC4 80B21AA4 00000000 */ nop
/* 00CC8 80B21AA8 46100032 */ c.eq.s $f0, $f16
/* 00CCC 80B21AAC 00000000 */ nop
/* 00CD0 80B21AB0 45000008 */ bc1f .L80B21AD4
/* 00CD4 80B21AB4 00000000 */ nop
/* 00CD8 80B21AB8 0C03F66B */ jal Rand_ZeroOne
## Rand.Next() float
/* 00CDC 80B21ABC 00000000 */ nop
/* 00CE0 80B21AC0 3C014080 */ lui $at, 0x4080 ## $at = 40800000
/* 00CE4 80B21AC4 44819000 */ mtc1 $at, $f18 ## $f18 = 4.00
/* 00CE8 80B21AC8 00000000 */ nop
/* 00CEC 80B21ACC 46120102 */ mul.s $f4, $f0, $f18
/* 00CF0 80B21AD0 E6040170 */ swc1 $f4, 0x0170($s0) ## 00000170
.L80B21AD4:
/* 00CF4 80B21AD4 0C0329DD */ jal Math_CosF
/* 00CF8 80B21AD8 C60C0168 */ lwc1 $f12, 0x0168($s0) ## 00000168
/* 00CFC 80B21ADC 3C013E80 */ lui $at, 0x3E80 ## $at = 3E800000
/* 00D00 80B21AE0 44814000 */ mtc1 $at, $f8 ## $f8 = 0.25
/* 00D04 80B21AE4 C6060068 */ lwc1 $f6, 0x0068($s0) ## 00000068
/* 00D08 80B21AE8 C6100170 */ lwc1 $f16, 0x0170($s0) ## 00000170
/* 00D0C 80B21AEC 860E0032 */ lh $t6, 0x0032($s0) ## 00000032
/* 00D10 80B21AF0 46083282 */ mul.s $f10, $f6, $f8
/* 00D14 80B21AF4 C6060028 */ lwc1 $f6, 0x0028($s0) ## 00000028
/* 00D18 80B21AF8 860F0164 */ lh $t7, 0x0164($s0) ## 00000164
/* 00D1C 80B21AFC 3C0180B2 */ lui $at, %hi(D_80B22B88) ## $at = 80B20000
/* 00D20 80B21B00 8602015A */ lh $v0, 0x015A($s0) ## 0000015A
/* 00D24 80B21B04 01CFC021 */ addu $t8, $t6, $t7
/* 00D28 80B21B08 A6180032 */ sh $t8, 0x0032($s0) ## 00000032
/* 00D2C 80B21B0C 46105480 */ add.s $f18, $f10, $f16
/* 00D30 80B21B10 C60A0168 */ lwc1 $f10, 0x0168($s0) ## 00000168
/* 00D34 80B21B14 26040024 */ addiu $a0, $s0, 0x0024 ## $a0 = 00000024
/* 00D38 80B21B18 2459FFFF */ addiu $t9, $v0, 0xFFFF ## $t9 = FFFFFFFF
/* 00D3C 80B21B1C 46120102 */ mul.s $f4, $f0, $f18
/* 00D40 80B21B20 46043200 */ add.s $f8, $f6, $f4
/* 00D44 80B21B24 E6080028 */ swc1 $f8, 0x0028($s0) ## 00000028
/* 00D48 80B21B28 C4302B88 */ lwc1 $f16, %lo(D_80B22B88)($at)
/* 00D4C 80B21B2C 46105480 */ add.s $f18, $f10, $f16
/* 00D50 80B21B30 10400002 */ beq $v0, $zero, .L80B21B3C
/* 00D54 80B21B34 E6120168 */ swc1 $f18, 0x0168($s0) ## 00000168
/* 00D58 80B21B38 A619015A */ sh $t9, 0x015A($s0) ## 0000015A
.L80B21B3C:
/* 00D5C 80B21B3C 0C01E01A */ jal Math_Vec3f_Yaw
/* 00D60 80B21B40 26050008 */ addiu $a1, $s0, 0x0008 ## $a1 = 00000008
/* 00D64 80B21B44 00022C00 */ sll $a1, $v0, 16
/* 00D68 80B21B48 00052C03 */ sra $a1, $a1, 16
/* 00D6C 80B21B4C 26040032 */ addiu $a0, $s0, 0x0032 ## $a0 = 00000032
/* 00D70 80B21B50 24060001 */ addiu $a2, $zero, 0x0001 ## $a2 = 00000001
/* 00D74 80B21B54 240702EE */ addiu $a3, $zero, 0x02EE ## $a3 = 000002EE
/* 00D78 80B21B58 0C01E1A7 */ jal Math_SmoothStepToS
/* 00D7C 80B21B5C AFA00010 */ sw $zero, 0x0010($sp)
/* 00D80 80B21B60 8608015A */ lh $t0, 0x015A($s0) ## 0000015A
/* 00D84 80B21B64 55000004 */ bnel $t0, $zero, .L80B21B78
/* 00D88 80B21B68 86090032 */ lh $t1, 0x0032($s0) ## 00000032
/* 00D8C 80B21B6C 0C2C84A3 */ jal func_80B2128C
/* 00D90 80B21B70 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00D94 80B21B74 86090032 */ lh $t1, 0x0032($s0) ## 00000032
.L80B21B78:
/* 00D98 80B21B78 A60900B6 */ sh $t1, 0x00B6($s0) ## 000000B6
/* 00D9C 80B21B7C 8FBF0024 */ lw $ra, 0x0024($sp)
/* 00DA0 80B21B80 8FB00020 */ lw $s0, 0x0020($sp)
/* 00DA4 80B21B84 27BD0030 */ addiu $sp, $sp, 0x0030 ## $sp = 00000000
/* 00DA8 80B21B88 03E00008 */ jr $ra
/* 00DAC 80B21B8C 00000000 */ nop

View file

@ -1,20 +0,0 @@
glabel func_80B21B90
/* 00DB0 80B21B90 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 00DB4 80B21B94 AFBF0014 */ sw $ra, 0x0014($sp)
/* 00DB8 80B21B98 44802000 */ mtc1 $zero, $f4 ## $f4 = 0.00
/* 00DBC 80B21B9C 240E0004 */ addiu $t6, $zero, 0x0004 ## $t6 = 00000004
/* 00DC0 80B21BA0 240FC000 */ addiu $t7, $zero, 0xC000 ## $t7 = FFFFC000
/* 00DC4 80B21BA4 2418003C */ addiu $t8, $zero, 0x003C ## $t8 = 0000003C
/* 00DC8 80B21BA8 3C0580B2 */ lui $a1, %hi(func_80B21BDC) ## $a1 = 80B20000
/* 00DCC 80B21BAC AC8E014C */ sw $t6, 0x014C($a0) ## 0000014C
/* 00DD0 80B21BB0 AC800150 */ sw $zero, 0x0150($a0) ## 00000150
/* 00DD4 80B21BB4 A48F00B4 */ sh $t7, 0x00B4($a0) ## 000000B4
/* 00DD8 80B21BB8 A498015A */ sh $t8, 0x015A($a0) ## 0000015A
/* 00DDC 80B21BBC A480015C */ sh $zero, 0x015C($a0) ## 0000015C
/* 00DE0 80B21BC0 24A51BDC */ addiu $a1, $a1, %lo(func_80B21BDC) ## $a1 = 80B21BDC
/* 00DE4 80B21BC4 0C2C8378 */ jal func_80B20DE0
/* 00DE8 80B21BC8 E4840068 */ swc1 $f4, 0x0068($a0) ## 00000068
/* 00DEC 80B21BCC 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00DF0 80B21BD0 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 00DF4 80B21BD4 03E00008 */ jr $ra
/* 00DF8 80B21BD8 00000000 */ nop

View file

@ -1,228 +0,0 @@
.late_rodata
glabel D_80B22B8C
.float 0.3
glabel D_80B22B90
.float 0.3
.text
glabel func_80B21BDC
/* 00DFC 80B21BDC 27BDFFC8 */ addiu $sp, $sp, 0xFFC8 ## $sp = FFFFFFC8
/* 00E00 80B21BE0 AFBF002C */ sw $ra, 0x002C($sp)
/* 00E04 80B21BE4 AFB00028 */ sw $s0, 0x0028($sp)
/* 00E08 80B21BE8 F7B40020 */ sdc1 $f20, 0x0020($sp)
/* 00E0C 80B21BEC 8CAE1C44 */ lw $t6, 0x1C44($a1) ## 00001C44
/* 00E10 80B21BF0 3C014348 */ lui $at, 0x4348 ## $at = 43480000
/* 00E14 80B21BF4 44813000 */ mtc1 $at, $f6 ## $f6 = 200.00
/* 00E18 80B21BF8 AFAE0034 */ sw $t6, 0x0034($sp)
/* 00E1C 80B21BFC C4840090 */ lwc1 $f4, 0x0090($a0) ## 00000090
/* 00E20 80B21C00 848F015C */ lh $t7, 0x015C($a0) ## 0000015C
/* 00E24 80B21C04 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00E28 80B21C08 4606203C */ c.lt.s $f4, $f6
/* 00E2C 80B21C0C 25F8FFFF */ addiu $t8, $t7, 0xFFFF ## $t8 = FFFFFFFF
/* 00E30 80B21C10 A498015C */ sh $t8, 0x015C($a0) ## 0000015C
/* 00E34 80B21C14 2405C000 */ addiu $a1, $zero, 0xC000 ## $a1 = FFFFC000
/* 00E38 80B21C18 4500005D */ bc1f .L80B21D90
/* 00E3C 80B21C1C 24060001 */ addiu $a2, $zero, 0x0001 ## $a2 = 00000001
/* 00E40 80B21C20 90820184 */ lbu $v0, 0x0184($a0) ## 00000184
/* 00E44 80B21C24 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
/* 00E48 80B21C28 240D0001 */ addiu $t5, $zero, 0x0001 ## $t5 = 00000001
/* 00E4C 80B21C2C 30590002 */ andi $t9, $v0, 0x0002 ## $t9 = 00000000
/* 00E50 80B21C30 13200007 */ beq $t9, $zero, .L80B21C50
/* 00E54 80B21C34 3048FFFD */ andi $t0, $v0, 0xFFFD ## $t0 = 00000000
/* 00E58 80B21C38 A0880184 */ sb $t0, 0x0184($a0) ## 00000184
/* 00E5C 80B21C3C 8FA90034 */ lw $t1, 0x0034($sp)
/* 00E60 80B21C40 8C8A0178 */ lw $t2, 0x0178($a0) ## 00000178
/* 00E64 80B21C44 552A0003 */ bnel $t1, $t2, .L80B21C54
/* 00E68 80B21C48 8602015A */ lh $v0, 0x015A($s0) ## 0000015A
/* 00E6C 80B21C4C A480015A */ sh $zero, 0x015A($a0) ## 0000015A
.L80B21C50:
/* 00E70 80B21C50 8602015A */ lh $v0, 0x015A($s0) ## 0000015A
.L80B21C54:
/* 00E74 80B21C54 24060001 */ addiu $a2, $zero, 0x0001 ## $a2 = 00000001
/* 00E78 80B21C58 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00E7C 80B21C5C 10400047 */ beq $v0, $zero, .L80B21D7C
/* 00E80 80B21C60 244BFFFF */ addiu $t3, $v0, 0xFFFF ## $t3 = FFFFFFFF
/* 00E84 80B21C64 A60B015A */ sh $t3, 0x015A($s0) ## 0000015A
/* 00E88 80B21C68 AFA00010 */ sw $zero, 0x0010($sp)
/* 00E8C 80B21C6C 260400B4 */ addiu $a0, $s0, 0x00B4 ## $a0 = 000000B4
/* 00E90 80B21C70 0C01E1A7 */ jal Math_SmoothStepToS
/* 00E94 80B21C74 240701F4 */ addiu $a3, $zero, 0x01F4 ## $a3 = 000001F4
/* 00E98 80B21C78 8605008A */ lh $a1, 0x008A($s0) ## 0000008A
/* 00E9C 80B21C7C AFA00010 */ sw $zero, 0x0010($sp)
/* 00EA0 80B21C80 26040032 */ addiu $a0, $s0, 0x0032 ## $a0 = 00000032
/* 00EA4 80B21C84 24060001 */ addiu $a2, $zero, 0x0001 ## $a2 = 00000001
/* 00EA8 80B21C88 0C01E1A7 */ jal Math_SmoothStepToS
/* 00EAC 80B21C8C 240705DC */ addiu $a3, $zero, 0x05DC ## $a3 = 000005DC
/* 00EB0 80B21C90 8FA50034 */ lw $a1, 0x0034($sp)
/* 00EB4 80B21C94 26040008 */ addiu $a0, $s0, 0x0008 ## $a0 = 00000008
/* 00EB8 80B21C98 0C01E01A */ jal Math_Vec3f_Yaw
/* 00EBC 80B21C9C 24A50024 */ addiu $a1, $a1, 0x0024 ## $a1 = 00000024
/* 00EC0 80B21CA0 3C0180B2 */ lui $at, %hi(D_80B22B8C) ## $at = 80B20000
/* 00EC4 80B21CA4 C4202B8C */ lwc1 $f0, %lo(D_80B22B8C)($at)
/* 00EC8 80B21CA8 244C4000 */ addiu $t4, $v0, 0x4000 ## $t4 = 00004000
/* 00ECC 80B21CAC A7AC0032 */ sh $t4, 0x0032($sp)
/* 00ED0 80B21CB0 3C0141F0 */ lui $at, 0x41F0 ## $at = 41F00000
/* 00ED4 80B21CB4 44815000 */ mtc1 $at, $f10 ## $f10 = 30.00
/* 00ED8 80B21CB8 C608000C */ lwc1 $f8, 0x000C($s0) ## 0000000C
/* 00EDC 80B21CBC 44060000 */ mfc1 $a2, $f0
/* 00EE0 80B21CC0 26040028 */ addiu $a0, $s0, 0x0028 ## $a0 = 00000028
/* 00EE4 80B21CC4 460A4400 */ add.s $f16, $f8, $f10
/* 00EE8 80B21CC8 3C073F80 */ lui $a3, 0x3F80 ## $a3 = 3F800000
/* 00EEC 80B21CCC E7A00010 */ swc1 $f0, 0x0010($sp)
/* 00EF0 80B21CD0 44058000 */ mfc1 $a1, $f16
/* 00EF4 80B21CD4 0C01E0C4 */ jal Math_SmoothStepToF
/* 00EF8 80B21CD8 00000000 */ nop
/* 00EFC 80B21CDC 8604015C */ lh $a0, 0x015C($s0) ## 0000015C
/* 00F00 80B21CE0 00800821 */ addu $at, $a0, $zero
/* 00F04 80B21CE4 00042140 */ sll $a0, $a0, 5
/* 00F08 80B21CE8 00812023 */ subu $a0, $a0, $at
/* 00F0C 80B21CEC 00042080 */ sll $a0, $a0, 2
/* 00F10 80B21CF0 00812021 */ addu $a0, $a0, $at
/* 00F14 80B21CF4 00042100 */ sll $a0, $a0, 4
/* 00F18 80B21CF8 00042400 */ sll $a0, $a0, 16
/* 00F1C 80B21CFC 0C01DE1C */ jal Math_SinS
## sins?
/* 00F20 80B21D00 00042403 */ sra $a0, $a0, 16
/* 00F24 80B21D04 46000506 */ mov.s $f20, $f0
/* 00F28 80B21D08 0C01DE1C */ jal Math_SinS
## sins?
/* 00F2C 80B21D0C 87A40032 */ lh $a0, 0x0032($sp)
/* 00F30 80B21D10 C612016C */ lwc1 $f18, 0x016C($s0) ## 0000016C
/* 00F34 80B21D14 8604015C */ lh $a0, 0x015C($s0) ## 0000015C
/* 00F38 80B21D18 C6080008 */ lwc1 $f8, 0x0008($s0) ## 00000008
/* 00F3C 80B21D1C 46120102 */ mul.s $f4, $f0, $f18
/* 00F40 80B21D20 00800821 */ addu $at, $a0, $zero
/* 00F44 80B21D24 00042140 */ sll $a0, $a0, 5
/* 00F48 80B21D28 00812023 */ subu $a0, $a0, $at
/* 00F4C 80B21D2C 00042080 */ sll $a0, $a0, 2
/* 00F50 80B21D30 00812021 */ addu $a0, $a0, $at
/* 00F54 80B21D34 00042100 */ sll $a0, $a0, 4
/* 00F58 80B21D38 46142182 */ mul.s $f6, $f4, $f20
/* 00F5C 80B21D3C 00042400 */ sll $a0, $a0, 16
/* 00F60 80B21D40 00042403 */ sra $a0, $a0, 16
/* 00F64 80B21D44 46083280 */ add.s $f10, $f6, $f8
/* 00F68 80B21D48 0C01DE1C */ jal Math_SinS
## sins?
/* 00F6C 80B21D4C E60A0024 */ swc1 $f10, 0x0024($s0) ## 00000024
/* 00F70 80B21D50 46000506 */ mov.s $f20, $f0
/* 00F74 80B21D54 0C01DE0D */ jal Math_CosS
## coss?
/* 00F78 80B21D58 87A40032 */ lh $a0, 0x0032($sp)
/* 00F7C 80B21D5C C610016C */ lwc1 $f16, 0x016C($s0) ## 0000016C
/* 00F80 80B21D60 C6060010 */ lwc1 $f6, 0x0010($s0) ## 00000010
/* 00F84 80B21D64 46100482 */ mul.s $f18, $f0, $f16
/* 00F88 80B21D68 00000000 */ nop
/* 00F8C 80B21D6C 46149102 */ mul.s $f4, $f18, $f20
/* 00F90 80B21D70 46062200 */ add.s $f8, $f4, $f6
/* 00F94 80B21D74 10000047 */ beq $zero, $zero, .L80B21E94
/* 00F98 80B21D78 E608002C */ swc1 $f8, 0x002C($s0) ## 0000002C
.L80B21D7C:
/* 00F9C 80B21D7C A60000B4 */ sh $zero, 0x00B4($s0) ## 000000B4
/* 00FA0 80B21D80 0C2C8653 */ jal func_80B2194C
/* 00FA4 80B21D84 AE0D0150 */ sw $t5, 0x0150($s0) ## 00000150
/* 00FA8 80B21D88 10000043 */ beq $zero, $zero, .L80B21E98
/* 00FAC 80B21D8C C608000C */ lwc1 $f8, 0x000C($s0) ## 0000000C
.L80B21D90:
/* 00FB0 80B21D90 260400B4 */ addiu $a0, $s0, 0x00B4 ## $a0 = 000000B4
/* 00FB4 80B21D94 240701F4 */ addiu $a3, $zero, 0x01F4 ## $a3 = 000001F4
/* 00FB8 80B21D98 0C01E1A7 */ jal Math_SmoothStepToS
/* 00FBC 80B21D9C AFA00010 */ sw $zero, 0x0010($sp)
/* 00FC0 80B21DA0 3C0180B2 */ lui $at, %hi(D_80B22B90) ## $at = 80B20000
/* 00FC4 80B21DA4 C4202B90 */ lwc1 $f0, %lo(D_80B22B90)($at)
/* 00FC8 80B21DA8 8E05000C */ lw $a1, 0x000C($s0) ## 0000000C
/* 00FCC 80B21DAC 26040028 */ addiu $a0, $s0, 0x0028 ## $a0 = 00000028
/* 00FD0 80B21DB0 44060000 */ mfc1 $a2, $f0
/* 00FD4 80B21DB4 3C073FC0 */ lui $a3, 0x3FC0 ## $a3 = 3FC00000
/* 00FD8 80B21DB8 0C01E0C4 */ jal Math_SmoothStepToF
/* 00FDC 80B21DBC E7A00010 */ swc1 $f0, 0x0010($sp)
/* 00FE0 80B21DC0 44805000 */ mtc1 $zero, $f10 ## $f10 = 0.00
/* 00FE4 80B21DC4 8FA50034 */ lw $a1, 0x0034($sp)
/* 00FE8 80B21DC8 240E003C */ addiu $t6, $zero, 0x003C ## $t6 = 0000003C
/* 00FEC 80B21DCC 460A0032 */ c.eq.s $f0, $f10
/* 00FF0 80B21DD0 24A50024 */ addiu $a1, $a1, 0x0024 ## $a1 = 00000024
/* 00FF4 80B21DD4 45000003 */ bc1f .L80B21DE4
/* 00FF8 80B21DD8 00000000 */ nop
/* 00FFC 80B21DDC 1000002D */ beq $zero, $zero, .L80B21E94
/* 01000 80B21DE0 A60E015A */ sh $t6, 0x015A($s0) ## 0000015A
.L80B21DE4:
/* 01004 80B21DE4 0C01E01A */ jal Math_Vec3f_Yaw
/* 01008 80B21DE8 26040008 */ addiu $a0, $s0, 0x0008 ## $a0 = 00000008
/* 0100C 80B21DEC A7A20032 */ sh $v0, 0x0032($sp)
/* 01010 80B21DF0 8604015C */ lh $a0, 0x015C($s0) ## 0000015C
/* 01014 80B21DF4 00800821 */ addu $at, $a0, $zero
/* 01018 80B21DF8 00042140 */ sll $a0, $a0, 5
/* 0101C 80B21DFC 00812023 */ subu $a0, $a0, $at
/* 01020 80B21E00 00042080 */ sll $a0, $a0, 2
/* 01024 80B21E04 00812021 */ addu $a0, $a0, $at
/* 01028 80B21E08 00042100 */ sll $a0, $a0, 4
/* 0102C 80B21E0C 00042400 */ sll $a0, $a0, 16
/* 01030 80B21E10 0C01DE1C */ jal Math_SinS
## sins?
/* 01034 80B21E14 00042403 */ sra $a0, $a0, 16
/* 01038 80B21E18 46000506 */ mov.s $f20, $f0
/* 0103C 80B21E1C 0C01DE1C */ jal Math_SinS
## sins?
/* 01040 80B21E20 87A40032 */ lh $a0, 0x0032($sp)
/* 01044 80B21E24 3C0140C0 */ lui $at, 0x40C0 ## $at = 40C00000
/* 01048 80B21E28 44818000 */ mtc1 $at, $f16 ## $f16 = 6.00
/* 0104C 80B21E2C 8604015C */ lh $a0, 0x015C($s0) ## 0000015C
/* 01050 80B21E30 C6060008 */ lwc1 $f6, 0x0008($s0) ## 00000008
/* 01054 80B21E34 46100482 */ mul.s $f18, $f0, $f16
/* 01058 80B21E38 00800821 */ addu $at, $a0, $zero
/* 0105C 80B21E3C 00042140 */ sll $a0, $a0, 5
/* 01060 80B21E40 00812023 */ subu $a0, $a0, $at
/* 01064 80B21E44 00042080 */ sll $a0, $a0, 2
/* 01068 80B21E48 00812021 */ addu $a0, $a0, $at
/* 0106C 80B21E4C 00042100 */ sll $a0, $a0, 4
/* 01070 80B21E50 46149102 */ mul.s $f4, $f18, $f20
/* 01074 80B21E54 00042400 */ sll $a0, $a0, 16
/* 01078 80B21E58 00042403 */ sra $a0, $a0, 16
/* 0107C 80B21E5C 46062200 */ add.s $f8, $f4, $f6
/* 01080 80B21E60 0C01DE1C */ jal Math_SinS
## sins?
/* 01084 80B21E64 E6080024 */ swc1 $f8, 0x0024($s0) ## 00000024
/* 01088 80B21E68 46000506 */ mov.s $f20, $f0
/* 0108C 80B21E6C 0C01DE0D */ jal Math_CosS
## coss?
/* 01090 80B21E70 87A40032 */ lh $a0, 0x0032($sp)
/* 01094 80B21E74 3C0140C0 */ lui $at, 0x40C0 ## $at = 40C00000
/* 01098 80B21E78 44815000 */ mtc1 $at, $f10 ## $f10 = 6.00
/* 0109C 80B21E7C C6040010 */ lwc1 $f4, 0x0010($s0) ## 00000010
/* 010A0 80B21E80 460A0402 */ mul.s $f16, $f0, $f10
/* 010A4 80B21E84 00000000 */ nop
/* 010A8 80B21E88 46148482 */ mul.s $f18, $f16, $f20
/* 010AC 80B21E8C 46049180 */ add.s $f6, $f18, $f4
/* 010B0 80B21E90 E606002C */ swc1 $f6, 0x002C($s0) ## 0000002C
.L80B21E94:
/* 010B4 80B21E94 C608000C */ lwc1 $f8, 0x000C($s0) ## 0000000C
.L80B21E98:
/* 010B8 80B21E98 C60A0028 */ lwc1 $f10, 0x0028($s0) ## 00000028
/* 010BC 80B21E9C 860F0032 */ lh $t7, 0x0032($s0) ## 00000032
/* 010C0 80B21EA0 3C078013 */ lui $a3, %hi(D_801333E0)
/* 010C4 80B21EA4 460A4032 */ c.eq.s $f8, $f10
/* 010C8 80B21EA8 24E733E0 */ addiu $a3, %lo(D_801333E0)
/* 010CC 80B21EAC 24043064 */ addiu $a0, $zero, 0x3064 ## $a0 = 00003064
/* 010D0 80B21EB0 260500E4 */ addiu $a1, $s0, 0x00E4 ## $a1 = 000000E4
/* 010D4 80B21EB4 45010007 */ bc1t .L80B21ED4
/* 010D8 80B21EB8 A60F00B6 */ sh $t7, 0x00B6($s0) ## 000000B6
/* 010DC 80B21EBC 3C188013 */ lui $t8, %hi(D_801333E8)
/* 010E0 80B21EC0 271833E8 */ addiu $t8, %lo(D_801333E8)
/* 010E4 80B21EC4 AFB80014 */ sw $t8, 0x0014($sp)
/* 010E8 80B21EC8 24060004 */ addiu $a2, $zero, 0x0004 ## $a2 = 00000004
/* 010EC 80B21ECC 0C03DCE3 */ jal Audio_PlaySoundGeneral
/* 010F0 80B21ED0 AFA70010 */ sw $a3, 0x0010($sp)
.L80B21ED4:
/* 010F4 80B21ED4 8FBF002C */ lw $ra, 0x002C($sp)
/* 010F8 80B21ED8 D7B40020 */ ldc1 $f20, 0x0020($sp)
/* 010FC 80B21EDC 8FB00028 */ lw $s0, 0x0028($sp)
/* 01100 80B21EE0 03E00008 */ jr $ra
/* 01104 80B21EE4 27BD0038 */ addiu $sp, $sp, 0x0038 ## $sp = 00000000

View file

@ -1,13 +0,0 @@
glabel func_80B21EE8
/* 01108 80B21EE8 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 0110C 80B21EEC AFBF0014 */ sw $ra, 0x0014($sp)
/* 01110 80B21EF0 240E0009 */ addiu $t6, $zero, 0x0009 ## $t6 = 00000009
/* 01114 80B21EF4 3C0580B2 */ lui $a1, %hi(func_80B21F18) ## $a1 = 80B20000
/* 01118 80B21EF8 AC8E014C */ sw $t6, 0x014C($a0) ## 0000014C
/* 0111C 80B21EFC A480015A */ sh $zero, 0x015A($a0) ## 0000015A
/* 01120 80B21F00 0C2C8378 */ jal func_80B20DE0
/* 01124 80B21F04 24A51F18 */ addiu $a1, $a1, %lo(func_80B21F18) ## $a1 = 80B21F18
/* 01128 80B21F08 8FBF0014 */ lw $ra, 0x0014($sp)
/* 0112C 80B21F0C 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 01130 80B21F10 03E00008 */ jr $ra
/* 01134 80B21F14 00000000 */ nop

View file

@ -1,201 +0,0 @@
glabel func_80B21F18
/* 01138 80B21F18 27BDFFA0 */ addiu $sp, $sp, 0xFFA0 ## $sp = FFFFFFA0
/* 0113C 80B21F1C AFBF0034 */ sw $ra, 0x0034($sp)
/* 01140 80B21F20 AFB00030 */ sw $s0, 0x0030($sp)
/* 01144 80B21F24 AFA50064 */ sw $a1, 0x0064($sp)
/* 01148 80B21F28 AFA00044 */ sw $zero, 0x0044($sp)
/* 0114C 80B21F2C 848E015C */ lh $t6, 0x015C($a0) ## 0000015C
/* 01150 80B21F30 8482015A */ lh $v0, 0x015A($a0) ## 0000015A
/* 01154 80B21F34 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 01158 80B21F38 25CFFFFF */ addiu $t7, $t6, 0xFFFF ## $t7 = FFFFFFFF
/* 0115C 80B21F3C 14400009 */ bne $v0, $zero, .L80B21F64
/* 01160 80B21F40 A48F015C */ sh $t7, 0x015C($a0) ## 0000015C
/* 01164 80B21F44 C486000C */ lwc1 $f6, 0x000C($a0) ## 0000000C
/* 01168 80B21F48 C4880028 */ lwc1 $f8, 0x0028($a0) ## 00000028
/* 0116C 80B21F4C 3C014270 */ lui $at, 0x4270 ## $at = 42700000
/* 01170 80B21F50 44812000 */ mtc1 $at, $f4 ## $f4 = 60.00
/* 01174 80B21F54 46083281 */ sub.s $f10, $f6, $f8
/* 01178 80B21F58 460A203C */ c.lt.s $f4, $f10
/* 0117C 80B21F5C 00000000 */ nop
/* 01180 80B21F60 4500003D */ bc1f .L80B22058
.L80B21F64:
/* 01184 80B21F64 2458FFFF */ addiu $t8, $v0, 0xFFFF ## $t8 = FFFFFFFF
/* 01188 80B21F68 A618015A */ sh $t8, 0x015A($s0) ## 0000015A
/* 0118C 80B21F6C 8602015A */ lh $v0, 0x015A($s0) ## 0000015A
/* 01190 80B21F70 5440000E */ bnel $v0, $zero, .L80B21FAC
/* 01194 80B21F74 860800B4 */ lh $t0, 0x00B4($s0) ## 000000B4
/* 01198 80B21F78 0C2C86E4 */ jal func_80B21B90
/* 0119C 80B21F7C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 011A0 80B21F80 8E02011C */ lw $v0, 0x011C($s0) ## 0000011C
/* 011A4 80B21F84 50400094 */ beql $v0, $zero, .L80B221D8
/* 011A8 80B21F88 8FBF0034 */ lw $ra, 0x0034($sp)
/* 011AC 80B21F8C 8459015A */ lh $t9, 0x015A($v0) ## 0000015A
.L80B21F90:
/* 011B0 80B21F90 A459015C */ sh $t9, 0x015C($v0) ## 0000015C
/* 011B4 80B21F94 8C42011C */ lw $v0, 0x011C($v0) ## 0000011C
/* 011B8 80B21F98 5440FFFD */ bnel $v0, $zero, .L80B21F90
/* 011BC 80B21F9C 8459015A */ lh $t9, 0x015A($v0) ## 0000015A
/* 011C0 80B21FA0 1000008D */ beq $zero, $zero, .L80B221D8
/* 011C4 80B21FA4 8FBF0034 */ lw $ra, 0x0034($sp)
/* 011C8 80B21FA8 860800B4 */ lh $t0, 0x00B4($s0) ## 000000B4
.L80B21FAC:
/* 011CC 80B21FAC 2404C000 */ addiu $a0, $zero, 0xC000 ## $a0 = FFFFC000
/* 011D0 80B21FB0 24090050 */ addiu $t1, $zero, 0x0050 ## $t1 = 00000050
/* 011D4 80B21FB4 50880021 */ beql $a0, $t0, .L80B2203C
/* 011D8 80B21FB8 860E015A */ lh $t6, 0x015A($s0) ## 0000015A
/* 011DC 80B21FBC 44800000 */ mtc1 $zero, $f0 ## $f0 = 0.00
/* 011E0 80B21FC0 A609015A */ sh $t1, 0x015A($s0) ## 0000015A
/* 011E4 80B21FC4 26030008 */ addiu $v1, $s0, 0x0008 ## $v1 = 00000008
/* 011E8 80B21FC8 E6000060 */ swc1 $f0, 0x0060($s0) ## 00000060
/* 011EC 80B21FCC E6000068 */ swc1 $f0, 0x0068($s0) ## 00000068
/* 011F0 80B21FD0 8C6B0000 */ lw $t3, 0x0000($v1) ## 00000008
/* 011F4 80B21FD4 8E02011C */ lw $v0, 0x011C($s0) ## 0000011C
/* 011F8 80B21FD8 3C0142A0 */ lui $at, 0x42A0 ## $at = 42A00000
/* 011FC 80B21FDC AE0B0024 */ sw $t3, 0x0024($s0) ## 00000024
/* 01200 80B21FE0 8C6A0004 */ lw $t2, 0x0004($v1) ## 0000000C
/* 01204 80B21FE4 AE0A0028 */ sw $t2, 0x0028($s0) ## 00000028
/* 01208 80B21FE8 8C6B0008 */ lw $t3, 0x0008($v1) ## 00000010
/* 0120C 80B21FEC A60400B4 */ sh $a0, 0x00B4($s0) ## 000000B4
/* 01210 80B21FF0 10400011 */ beq $v0, $zero, .L80B22038
/* 01214 80B21FF4 AE0B002C */ sw $t3, 0x002C($s0) ## 0000002C
/* 01218 80B21FF8 44811000 */ mtc1 $at, $f2 ## $f2 = 80.00
/* 0121C 80B21FFC 00000000 */ nop
/* 01220 80B22000 E4400060 */ swc1 $f0, 0x0060($v0) ## 00000060
.L80B22004:
/* 01224 80B22004 E4400068 */ swc1 $f0, 0x0068($v0) ## 00000068
/* 01228 80B22008 8C6D0000 */ lw $t5, 0x0000($v1) ## 00000008
/* 0122C 80B2200C AC4D0024 */ sw $t5, 0x0024($v0) ## 00000024
/* 01230 80B22010 8C6C0004 */ lw $t4, 0x0004($v1) ## 0000000C
/* 01234 80B22014 AC4C0028 */ sw $t4, 0x0028($v0) ## 00000028
/* 01238 80B22018 8C6D0008 */ lw $t5, 0x0008($v1) ## 00000010
/* 0123C 80B2201C AC4D002C */ sw $t5, 0x002C($v0) ## 0000002C
/* 01240 80B22020 C610000C */ lwc1 $f16, 0x000C($s0) ## 0000000C
/* 01244 80B22024 46028481 */ sub.s $f18, $f16, $f2
/* 01248 80B22028 E4520028 */ swc1 $f18, 0x0028($v0) ## 00000028
/* 0124C 80B2202C 8C42011C */ lw $v0, 0x011C($v0) ## 0000011C
/* 01250 80B22030 5440FFF4 */ bnel $v0, $zero, .L80B22004
/* 01254 80B22034 E4400060 */ swc1 $f0, 0x0060($v0) ## 00000060
.L80B22038:
/* 01258 80B22038 860E015A */ lh $t6, 0x015A($s0) ## 0000015A
.L80B2203C:
/* 0125C 80B2203C C606000C */ lwc1 $f6, 0x000C($s0) ## 0000000C
/* 01260 80B22040 448E4000 */ mtc1 $t6, $f8 ## $f8 = 0.00
/* 01264 80B22044 00000000 */ nop
/* 01268 80B22048 46804120 */ cvt.s.w $f4, $f8
/* 0126C 80B2204C 46043281 */ sub.s $f10, $f6, $f4
/* 01270 80B22050 10000060 */ beq $zero, $zero, .L80B221D4
/* 01274 80B22054 E60A0028 */ swc1 $f10, 0x0028($s0) ## 00000028
.L80B22058:
/* 01278 80B22058 860200B4 */ lh $v0, 0x00B4($s0) ## 000000B4
/* 0127C 80B2205C 24014000 */ addiu $at, $zero, 0x4000 ## $at = 00004000
/* 01280 80B22060 10410002 */ beq $v0, $at, .L80B2206C
/* 01284 80B22064 244FFC00 */ addiu $t7, $v0, 0xFC00 ## $t7 = FFFFFC00
/* 01288 80B22068 A60F00B4 */ sh $t7, 0x00B4($s0) ## 000000B4
.L80B2206C:
/* 0128C 80B2206C 86020160 */ lh $v0, 0x0160($s0) ## 00000160
/* 01290 80B22070 10400002 */ beq $v0, $zero, .L80B2207C
/* 01294 80B22074 2458FFF1 */ addiu $t8, $v0, 0xFFF1 ## $t8 = FFFFFFF1
/* 01298 80B22078 A6180160 */ sh $t8, 0x0160($s0) ## 00000160
.L80B2207C:
/* 0129C 80B2207C 0C01DE0D */ jal Math_CosS
## coss?
/* 012A0 80B22080 860400B4 */ lh $a0, 0x00B4($s0) ## 000000B4
/* 012A4 80B22084 46000400 */ add.s $f16, $f0, $f0
/* 012A8 80B22088 860400B4 */ lh $a0, 0x00B4($s0) ## 000000B4
/* 012AC 80B2208C 0C01DE1C */ jal Math_SinS
## sins?
/* 012B0 80B22090 E6100068 */ swc1 $f16, 0x0068($s0) ## 00000068
/* 012B4 80B22094 C6020028 */ lwc1 $f2, 0x0028($s0) ## 00000028
/* 012B8 80B22098 C6060080 */ lwc1 $f6, 0x0080($s0) ## 00000080
/* 012BC 80B2209C 3C01C000 */ lui $at, 0xC000 ## $at = C0000000
/* 012C0 80B220A0 44819000 */ mtc1 $at, $f18 ## $f18 = -2.00
/* 012C4 80B220A4 46061101 */ sub.s $f4, $f2, $f6
/* 012C8 80B220A8 3C0141A0 */ lui $at, 0x41A0 ## $at = 41A00000
/* 012CC 80B220AC 44815000 */ mtc1 $at, $f10 ## $f10 = 20.00
/* 012D0 80B220B0 46120202 */ mul.s $f8, $f0, $f18
/* 012D4 80B220B4 3C078013 */ lui $a3, %hi(D_801333E0)
/* 012D8 80B220B8 460A203C */ c.lt.s $f4, $f10
/* 012DC 80B220BC 24190001 */ addiu $t9, $zero, 0x0001 ## $t9 = 00000001
/* 012E0 80B220C0 24E733E0 */ addiu $a3, %lo(D_801333E0)
/* 012E4 80B220C4 24043064 */ addiu $a0, $zero, 0x3064 ## $a0 = 00003064
/* 012E8 80B220C8 45000002 */ bc1f .L80B220D4
/* 012EC 80B220CC E6080060 */ swc1 $f8, 0x0060($s0) ## 00000060
/* 012F0 80B220D0 AFB90044 */ sw $t9, 0x0044($sp)
.L80B220D4:
/* 012F4 80B220D4 C610000C */ lwc1 $f16, 0x000C($s0) ## 0000000C
/* 012F8 80B220D8 3C088013 */ lui $t0, %hi(D_801333E8)
/* 012FC 80B220DC 250833E8 */ addiu $t0, %lo(D_801333E8)
/* 01300 80B220E0 46028032 */ c.eq.s $f16, $f2
/* 01304 80B220E4 260500E4 */ addiu $a1, $s0, 0x00E4 ## $a1 = 000000E4
/* 01308 80B220E8 24060004 */ addiu $a2, $zero, 0x0004 ## $a2 = 00000004
/* 0130C 80B220EC 45030005 */ bc1tl .L80B22104
/* 01310 80B220F0 8FA90044 */ lw $t1, 0x0044($sp)
/* 01314 80B220F4 AFA70010 */ sw $a3, 0x0010($sp)
/* 01318 80B220F8 0C03DCE3 */ jal Audio_PlaySoundGeneral
/* 0131C 80B220FC AFA80014 */ sw $t0, 0x0014($sp)
/* 01320 80B22100 8FA90044 */ lw $t1, 0x0044($sp)
.L80B22104:
/* 01324 80B22104 8FAA0064 */ lw $t2, 0x0064($sp)
/* 01328 80B22108 3C0B0001 */ lui $t3, 0x0001 ## $t3 = 00010000
/* 0132C 80B2210C 11200031 */ beq $t1, $zero, .L80B221D4
/* 01330 80B22110 016A5821 */ addu $t3, $t3, $t2
/* 01334 80B22114 8D6B1DE4 */ lw $t3, 0x1DE4($t3) ## 00011DE4
/* 01338 80B22118 316C0001 */ andi $t4, $t3, 0x0001 ## $t4 = 00000000
/* 0133C 80B2211C 5180002E */ beql $t4, $zero, .L80B221D8
/* 01340 80B22120 8FBF0034 */ lw $ra, 0x0034($sp)
/* 01344 80B22124 8E0F0024 */ lw $t7, 0x0024($s0) ## 00000024
/* 01348 80B22128 27AD0048 */ addiu $t5, $sp, 0x0048 ## $t5 = FFFFFFE8
/* 0134C 80B2212C 3C0140A0 */ lui $at, 0x40A0 ## $at = 40A00000
/* 01350 80B22130 ADAF0000 */ sw $t7, 0x0000($t5) ## FFFFFFE8
/* 01354 80B22134 8E0E0028 */ lw $t6, 0x0028($s0) ## 00000028
/* 01358 80B22138 44816000 */ mtc1 $at, $f12 ## $f12 = 5.00
/* 0135C 80B2213C ADAE0004 */ sw $t6, 0x0004($t5) ## FFFFFFEC
/* 01360 80B22140 8E0F002C */ lw $t7, 0x002C($s0) ## 0000002C
/* 01364 80B22144 ADAF0008 */ sw $t7, 0x0008($t5) ## FFFFFFF0
/* 01368 80B22148 C6120080 */ lwc1 $f18, 0x0080($s0) ## 00000080
/* 0136C 80B2214C 0C00CFC8 */ jal Rand_CenteredFloat
/* 01370 80B22150 E7B2004C */ swc1 $f18, 0x004C($sp)
/* 01374 80B22154 0C03F66B */ jal Rand_ZeroOne
## Rand.Next() float
/* 01378 80B22158 E7A00054 */ swc1 $f0, 0x0054($sp)
/* 0137C 80B2215C 3C014060 */ lui $at, 0x4060 ## $at = 40600000
/* 01380 80B22160 44814000 */ mtc1 $at, $f8 ## $f8 = 3.50
/* 01384 80B22164 3C013FC0 */ lui $at, 0x3FC0 ## $at = 3FC00000
/* 01388 80B22168 44812000 */ mtc1 $at, $f4 ## $f4 = 1.50
/* 0138C 80B2216C 46080182 */ mul.s $f6, $f0, $f8
/* 01390 80B22170 3C0140A0 */ lui $at, 0x40A0 ## $at = 40A00000
/* 01394 80B22174 44816000 */ mtc1 $at, $f12 ## $f12 = 5.00
/* 01398 80B22178 46043280 */ add.s $f10, $f6, $f4
/* 0139C 80B2217C 0C00CFC8 */ jal Rand_CenteredFloat
/* 013A0 80B22180 E7AA0058 */ swc1 $f10, 0x0058($sp)
/* 013A4 80B22184 E7A0005C */ swc1 $f0, 0x005C($sp)
/* 013A8 80B22188 24040064 */ addiu $a0, $zero, 0x0064 ## $a0 = 00000064
/* 013AC 80B2218C 0C01DF64 */ jal Rand_S16Offset
/* 013B0 80B22190 24050032 */ addiu $a1, $zero, 0x0032 ## $a1 = 00000032
/* 013B4 80B22194 3C1880B2 */ lui $t8, %hi(D_80B22B0C) ## $t8 = 80B20000
/* 013B8 80B22198 3C1980B2 */ lui $t9, %hi(D_80B22B10) ## $t9 = 80B20000
/* 013BC 80B2219C 27392B10 */ addiu $t9, $t9, %lo(D_80B22B10) ## $t9 = 80B22B10
/* 013C0 80B221A0 27182B0C */ addiu $t8, $t8, %lo(D_80B22B0C) ## $t8 = 80B22B0C
/* 013C4 80B221A4 3C0780B2 */ lui $a3, %hi(D_80B22B00) ## $a3 = 80B20000
/* 013C8 80B221A8 24080014 */ addiu $t0, $zero, 0x0014 ## $t0 = 00000014
/* 013CC 80B221AC AFA8001C */ sw $t0, 0x001C($sp)
/* 013D0 80B221B0 24E72B00 */ addiu $a3, $a3, %lo(D_80B22B00) ## $a3 = 80B22B00
/* 013D4 80B221B4 AFB80010 */ sw $t8, 0x0010($sp)
/* 013D8 80B221B8 AFB90014 */ sw $t9, 0x0014($sp)
/* 013DC 80B221BC 8FA40064 */ lw $a0, 0x0064($sp)
/* 013E0 80B221C0 27A50048 */ addiu $a1, $sp, 0x0048 ## $a1 = FFFFFFE8
/* 013E4 80B221C4 27A60054 */ addiu $a2, $sp, 0x0054 ## $a2 = FFFFFFF4
/* 013E8 80B221C8 AFA20018 */ sw $v0, 0x0018($sp)
/* 013EC 80B221CC 0C00A5A5 */ jal EffectSsDtBubble_SpawnCustomColor
/* 013F0 80B221D0 AFA00020 */ sw $zero, 0x0020($sp)
.L80B221D4:
/* 013F4 80B221D4 8FBF0034 */ lw $ra, 0x0034($sp)
.L80B221D8:
/* 013F8 80B221D8 8FB00030 */ lw $s0, 0x0030($sp)
/* 013FC 80B221DC 27BD0060 */ addiu $sp, $sp, 0x0060 ## $sp = 00000000
/* 01400 80B221E0 03E00008 */ jr $ra
/* 01404 80B221E4 00000000 */ nop

View file

@ -1,172 +0,0 @@
glabel func_80B221E8
/* 01408 80B221E8 27BDFFC8 */ addiu $sp, $sp, 0xFFC8 ## $sp = FFFFFFC8
/* 0140C 80B221EC AFBF0034 */ sw $ra, 0x0034($sp)
/* 01410 80B221F0 AFB50030 */ sw $s5, 0x0030($sp)
/* 01414 80B221F4 AFB4002C */ sw $s4, 0x002C($sp)
/* 01418 80B221F8 AFB30028 */ sw $s3, 0x0028($sp)
/* 0141C 80B221FC AFB20024 */ sw $s2, 0x0024($sp)
/* 01420 80B22200 AFB10020 */ sw $s1, 0x0020($sp)
/* 01424 80B22204 AFB0001C */ sw $s0, 0x001C($sp)
/* 01428 80B22208 AFA5003C */ sw $a1, 0x003C($sp)
/* 0142C 80B2220C 90820185 */ lbu $v0, 0x0185($a0) ## 00000185
/* 01430 80B22210 00808825 */ or $s1, $a0, $zero ## $s1 = 00000000
/* 01434 80B22214 304E0002 */ andi $t6, $v0, 0x0002 ## $t6 = 00000000
/* 01438 80B22218 51C00081 */ beql $t6, $zero, .L80B22420
/* 0143C 80B2221C 8FBF0034 */ lw $ra, 0x0034($sp)
/* 01440 80B22220 8C8F014C */ lw $t7, 0x014C($a0) ## 0000014C
/* 01444 80B22224 2415FFFD */ addiu $s5, $zero, 0xFFFD ## $s5 = FFFFFFFD
/* 01448 80B22228 3059FFFD */ andi $t9, $v0, 0xFFFD ## $t9 = 00000000
/* 0144C 80B2222C 29E10002 */ slti $at, $t7, 0x0002
/* 01450 80B22230 1420007A */ bne $at, $zero, .L80B2241C
/* 01454 80B22234 26250174 */ addiu $a1, $s1, 0x0174 ## $a1 = 00000174
/* 01458 80B22238 8498001C */ lh $t8, 0x001C($a0) ## 0000001C
/* 0145C 80B2223C 00009025 */ or $s2, $zero, $zero ## $s2 = 00000000
/* 01460 80B22240 0000A025 */ or $s4, $zero, $zero ## $s4 = 00000000
/* 01464 80B22244 07010002 */ bgez $t8, .L80B22250
/* 01468 80B22248 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 0146C 80B2224C 24120001 */ addiu $s2, $zero, 0x0001 ## $s2 = 00000001
.L80B22250:
/* 01470 80B22250 A2390185 */ sb $t9, 0x0185($s1) ## 00000185
/* 01474 80B22254 0C00D5CF */ jal func_8003573C
/* 01478 80B22258 24060001 */ addiu $a2, $zero, 0x0001 ## $a2 = 00000001
/* 0147C 80B2225C 922200B1 */ lbu $v0, 0x00B1($s1) ## 000000B1
/* 01480 80B22260 24010001 */ addiu $at, $zero, 0x0001 ## $at = 00000001
/* 01484 80B22264 1040006D */ beq $v0, $zero, .L80B2241C
/* 01488 80B22268 A2220158 */ sb $v0, 0x0158($s1) ## 00000158
/* 0148C 80B2226C 14410002 */ bne $v0, $at, .L80B22278
/* 01490 80B22270 00000000 */ nop
/* 01494 80B22274 24140001 */ addiu $s4, $zero, 0x0001 ## $s4 = 00000001
.L80B22278:
/* 01498 80B22278 56400004 */ bnel $s2, $zero, .L80B2228C
/* 0149C 80B2227C 922800AF */ lbu $t0, 0x00AF($s1) ## 000000AF
/* 014A0 80B22280 0C00D58A */ jal Actor_ApplyDamage
/* 014A4 80B22284 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 014A8 80B22288 922800AF */ lbu $t0, 0x00AF($s1) ## 000000AF
.L80B2228C:
/* 014AC 80B2228C 15000010 */ bne $t0, $zero, .L80B222D0
/* 014B0 80B22290 00000000 */ nop
/* 014B4 80B22294 8E290004 */ lw $t1, 0x0004($s1) ## 00000004
/* 014B8 80B22298 8E3001D4 */ lw $s0, 0x01D4($s1) ## 000001D4
/* 014BC 80B2229C 2401FFFE */ addiu $at, $zero, 0xFFFE ## $at = FFFFFFFE
/* 014C0 80B222A0 01215024 */ and $t2, $t1, $at
/* 014C4 80B222A4 AE2A0004 */ sw $t2, 0x0004($s1) ## 00000004
/* 014C8 80B222A8 860B001C */ lh $t3, 0x001C($s0) ## 0000001C
/* 014CC 80B222AC 0563005C */ bgezl $t3, .L80B22420
/* 014D0 80B222B0 8FBF0034 */ lw $ra, 0x0034($sp)
/* 014D4 80B222B4 0C2C8515 */ jal func_80B21454
/* 014D8 80B222B8 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 014DC 80B222BC 922C00B1 */ lbu $t4, 0x00B1($s1) ## 000000B1
/* 014E0 80B222C0 240D000C */ addiu $t5, $zero, 0x000C ## $t5 = 0000000C
/* 014E4 80B222C4 A60D001C */ sh $t5, 0x001C($s0) ## 0000001C
/* 014E8 80B222C8 10000054 */ beq $zero, $zero, .L80B2241C
/* 014EC 80B222CC A20C0158 */ sb $t4, 0x0158($s0) ## 00000158
.L80B222D0:
/* 014F0 80B222D0 12800016 */ beq $s4, $zero, .L80B2232C
/* 014F4 80B222D4 24130050 */ addiu $s3, $zero, 0x0050 ## $s3 = 00000050
/* 014F8 80B222D8 A6330110 */ sh $s3, 0x0110($s1) ## 00000110
/* 014FC 80B222DC 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 01500 80B222E0 0C00BE0A */ jal Audio_PlayActorSound2
/* 01504 80B222E4 2405389E */ addiu $a1, $zero, 0x389E ## $a1 = 0000389E
/* 01508 80B222E8 1240000A */ beq $s2, $zero, .L80B22314
/* 0150C 80B222EC 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 01510 80B222F0 240E0050 */ addiu $t6, $zero, 0x0050 ## $t6 = 00000050
/* 01514 80B222F4 AFAE0010 */ sw $t6, 0x0010($sp)
/* 01518 80B222F8 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 0151C 80B222FC 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
/* 01520 80B22300 240600FF */ addiu $a2, $zero, 0x00FF ## $a2 = 000000FF
/* 01524 80B22304 0C00D09B */ jal Actor_SetColorFilter
/* 01528 80B22308 00003825 */ or $a3, $zero, $zero ## $a3 = 00000000
/* 0152C 80B2230C 10000008 */ beq $zero, $zero, .L80B22330
/* 01530 80B22310 8E300118 */ lw $s0, 0x0118($s1) ## 00000118
.L80B22314:
/* 01534 80B22314 240F0050 */ addiu $t7, $zero, 0x0050 ## $t7 = 00000050
/* 01538 80B22318 AFAF0010 */ sw $t7, 0x0010($sp)
/* 0153C 80B2231C 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
/* 01540 80B22320 240600FF */ addiu $a2, $zero, 0x00FF ## $a2 = 000000FF
/* 01544 80B22324 0C00D09B */ jal Actor_SetColorFilter
/* 01548 80B22328 24072000 */ addiu $a3, $zero, 0x2000 ## $a3 = 00002000
.L80B2232C:
/* 0154C 80B2232C 8E300118 */ lw $s0, 0x0118($s1) ## 00000118
.L80B22330:
/* 01550 80B22330 24130050 */ addiu $s3, $zero, 0x0050 ## $s3 = 00000050
/* 01554 80B22334 5200001E */ beql $s0, $zero, .L80B223B0
/* 01558 80B22338 8E30011C */ lw $s0, 0x011C($s1) ## 0000011C
/* 0155C 80B2233C 92180185 */ lbu $t8, 0x0185($s0) ## 00000185
.L80B22340:
/* 01560 80B22340 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 01564 80B22344 2405389E */ addiu $a1, $zero, 0x389E ## $a1 = 0000389E
/* 01568 80B22348 0315C824 */ and $t9, $t8, $s5
/* 0156C 80B2234C 12800014 */ beq $s4, $zero, .L80B223A0
/* 01570 80B22350 A2190185 */ sb $t9, 0x0185($s0) ## 00000185
/* 01574 80B22354 0C00BE0A */ jal Audio_PlayActorSound2
/* 01578 80B22358 A6130110 */ sh $s3, 0x0110($s0) ## 00000110
/* 0157C 80B2235C 1240000A */ beq $s2, $zero, .L80B22388
/* 01580 80B22360 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 01584 80B22364 24080050 */ addiu $t0, $zero, 0x0050 ## $t0 = 00000050
/* 01588 80B22368 AFA80010 */ sw $t0, 0x0010($sp)
/* 0158C 80B2236C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 01590 80B22370 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
/* 01594 80B22374 240600FF */ addiu $a2, $zero, 0x00FF ## $a2 = 000000FF
/* 01598 80B22378 0C00D09B */ jal Actor_SetColorFilter
/* 0159C 80B2237C 00003825 */ or $a3, $zero, $zero ## $a3 = 00000000
/* 015A0 80B22380 10000008 */ beq $zero, $zero, .L80B223A4
/* 015A4 80B22384 8E100118 */ lw $s0, 0x0118($s0) ## 00000118
.L80B22388:
/* 015A8 80B22388 24090050 */ addiu $t1, $zero, 0x0050 ## $t1 = 00000050
/* 015AC 80B2238C AFA90010 */ sw $t1, 0x0010($sp)
/* 015B0 80B22390 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
/* 015B4 80B22394 240600FF */ addiu $a2, $zero, 0x00FF ## $a2 = 000000FF
/* 015B8 80B22398 0C00D09B */ jal Actor_SetColorFilter
/* 015BC 80B2239C 24072000 */ addiu $a3, $zero, 0x2000 ## $a3 = 00002000
.L80B223A0:
/* 015C0 80B223A0 8E100118 */ lw $s0, 0x0118($s0) ## 00000118
.L80B223A4:
/* 015C4 80B223A4 5600FFE6 */ bnel $s0, $zero, .L80B22340
/* 015C8 80B223A8 92180185 */ lbu $t8, 0x0185($s0) ## 00000185
/* 015CC 80B223AC 8E30011C */ lw $s0, 0x011C($s1) ## 0000011C
.L80B223B0:
/* 015D0 80B223B0 5200001B */ beql $s0, $zero, .L80B22420
/* 015D4 80B223B4 8FBF0034 */ lw $ra, 0x0034($sp)
/* 015D8 80B223B8 920A0185 */ lbu $t2, 0x0185($s0) ## 00000185
.L80B223BC:
/* 015DC 80B223BC 01555824 */ and $t3, $t2, $s5
/* 015E0 80B223C0 12800013 */ beq $s4, $zero, .L80B22410
/* 015E4 80B223C4 A20B0185 */ sb $t3, 0x0185($s0) ## 00000185
/* 015E8 80B223C8 1240000A */ beq $s2, $zero, .L80B223F4
/* 015EC 80B223CC A6130110 */ sh $s3, 0x0110($s0) ## 00000110
/* 015F0 80B223D0 240C0050 */ addiu $t4, $zero, 0x0050 ## $t4 = 00000050
/* 015F4 80B223D4 AFAC0010 */ sw $t4, 0x0010($sp)
/* 015F8 80B223D8 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 015FC 80B223DC 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
/* 01600 80B223E0 240600FF */ addiu $a2, $zero, 0x00FF ## $a2 = 000000FF
/* 01604 80B223E4 0C00D09B */ jal Actor_SetColorFilter
/* 01608 80B223E8 00003825 */ or $a3, $zero, $zero ## $a3 = 00000000
/* 0160C 80B223EC 10000009 */ beq $zero, $zero, .L80B22414
/* 01610 80B223F0 8E10011C */ lw $s0, 0x011C($s0) ## 0000011C
.L80B223F4:
/* 01614 80B223F4 240D0050 */ addiu $t5, $zero, 0x0050 ## $t5 = 00000050
/* 01618 80B223F8 AFAD0010 */ sw $t5, 0x0010($sp)
/* 0161C 80B223FC 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 01620 80B22400 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
/* 01624 80B22404 240600FF */ addiu $a2, $zero, 0x00FF ## $a2 = 000000FF
/* 01628 80B22408 0C00D09B */ jal Actor_SetColorFilter
/* 0162C 80B2240C 24072000 */ addiu $a3, $zero, 0x2000 ## $a3 = 00002000
.L80B22410:
/* 01630 80B22410 8E10011C */ lw $s0, 0x011C($s0) ## 0000011C
.L80B22414:
/* 01634 80B22414 5600FFE9 */ bnel $s0, $zero, .L80B223BC
/* 01638 80B22418 920A0185 */ lbu $t2, 0x0185($s0) ## 00000185
.L80B2241C:
/* 0163C 80B2241C 8FBF0034 */ lw $ra, 0x0034($sp)
.L80B22420:
/* 01640 80B22420 8FB0001C */ lw $s0, 0x001C($sp)
/* 01644 80B22424 8FB10020 */ lw $s1, 0x0020($sp)
/* 01648 80B22428 8FB20024 */ lw $s2, 0x0024($sp)
/* 0164C 80B2242C 8FB30028 */ lw $s3, 0x0028($sp)
/* 01650 80B22430 8FB4002C */ lw $s4, 0x002C($sp)
/* 01654 80B22434 8FB50030 */ lw $s5, 0x0030($sp)
/* 01658 80B22438 03E00008 */ jr $ra
/* 0165C 80B2243C 27BD0038 */ addiu $sp, $sp, 0x0038 ## $sp = 00000000

View file

@ -0,0 +1,17 @@
<Root>
<File Name="object_tp" Segment="6">
<!-- Tailpasaran displaylists -->
<DList Name="gTailpasaranTailSegmentDL" Offset="0x0000"/>
<DList Name="gTailpasaranHeadClawDL" Offset="0x0690"/>
<DList Name="gTailpasaranHeadMouthpartsDL" Offset="0x0840"/>
<DList Name="gTailpasaranHeadDL" Offset="0x08D0"/>
<!-- Tailpasaran textures -->
<Texture Name="gTailpasaranHeadRearTex" OutName="tailpasaran_head_rear" Format="rgb5a1" Width="8" Height="16" Offset="0x08E8"/>
<Texture Name="gTailpasaranHeadClawBaseTex" OutName="tailpasaran_head_claw_base" Format="rgb5a1" Width="8" Height="8" Offset="0x09E8"/>
<Texture Name="gTailpasaranHeadClawTex" OutName="tailpasaran_head_claw" Format="rgb5a1" Width="16" Height="16" Offset="0x0A68"/>
<Texture Name="gTailpasaranTailSegmentTex" OutName="tailpasaran_tail_segment" Format="ia8" Width="64" Height="64" Offset="0x0C68"/>
<Texture Name="gTailpasaranHeadMouthpartsTex" OutName="tailpasaran_head_mouthparts" Format="rgb5a1" Width="8" Height="8" Offset="0x1C68"/>
</File>
</Root>

View file

@ -1,45 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purpose registers
.section .data
.balign 16
glabel En_Tp_InitVars
.word 0x00350500, 0x00000000, 0x00220000, 0x000001D8
.word EnTp_Init
.word EnTp_Destroy
.word EnTp_Update
.word EnTp_Draw
glabel D_80B22A90
.word 0x00000000, 0xFFCFFFFF, 0x03080000, 0xFFCFFFFF, 0x01000000, 0x01010000, 0x00000000, 0x00000000, 0x00040064
glabel D_80B22AB4
.word 0x01110900, 0x10000000, 0x00000001
.word D_80B22A90
glabel D_80B22AC4
.word 0x10F20000, 0xF100E200, 0xE1E2E400, 0x00000000, 0x00000000, 0x0000E1E4, 0xE2E2E8E4, 0x0000E400
glabel D_80B22AE4
.word 0x304C000A
glabel D_80B22AE8
.word 0x00000000, 0x3F000000, 0x00000000
glabel D_80B22AF4
.word 0x00000000, 0x00000000, 0x00000000
glabel D_80B22B00
.word 0x00000000, 0xBF000000, 0x00000000
glabel D_80B22B0C
.word 0xFFFFFFFF
glabel D_80B22B10
.word 0x96969600
glabel D_80B22B14
.word 0x00000000, 0x00000000, 0x00000000
glabel D_80B22B20
.word 0x00000000, 0xBF19999A, 0x00000000
glabel D_80B22B2C
.word 0x0000FFFF
glabel D_80B22B30
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000

8
spec
View file

@ -2994,8 +2994,11 @@ endseg
beginseg
name "ovl_En_Tp"
include "build/src/overlays/actors/ovl_En_Tp/z_en_tp.o"
include "build/data/overlays/actors/z_en_tp.data.o"
#ifdef NON_MATCHING
include "build/src/overlays/actors/ovl_En_Tp/ovl_En_Tp_reloc.o"
#else
include "build/data/overlays/actors/z_en_tp.reloc.o"
#endif
endseg
beginseg
@ -3632,7 +3635,8 @@ endseg
beginseg
name "object_tp"
romalign 0x1000
include "build/baserom/object_tp.o"
include "build/assets/objects/object_tp/object_tp.o"
number 6
endseg
beginseg

View file

@ -22,8 +22,8 @@ void BgSpot00Hanebasi_Destroy(Actor* thisx, GlobalContext* globalCtx);
void BgSpot00Hanebasi_Update(Actor* thisx, GlobalContext* globalCtx);
void BgSpot00Hanebasi_Draw(Actor* thisx, GlobalContext* globalCtx);
void BgSpot00Hanebasi_DrawBridgeWait(BgSpot00Hanebasi* this, GlobalContext* globalCtx);
void BgSpot00Hanebasi_DrawBridgeRiseAndFall(BgSpot00Hanebasi* this, GlobalContext* globalCtx);
void BgSpot00Hanebasi_DrawbridgeWait(BgSpot00Hanebasi* this, GlobalContext* globalCtx);
void BgSpot00Hanebasi_DrawbridgeRiseAndFall(BgSpot00Hanebasi* this, GlobalContext* globalCtx);
void BgSpot00Hanebasi_SetTorchLightInfo(BgSpot00Hanebasi* this, GlobalContext* globalCtx);
extern Gfx D_060000C0[]; // bridge chains
@ -107,7 +107,7 @@ void BgSpot00Hanebasi_Init(Actor* thisx, GlobalContext* globalCtx) {
Actor_Kill(&this->dyna.actor);
}
this->actionFunc = BgSpot00Hanebasi_DrawBridgeWait;
this->actionFunc = BgSpot00Hanebasi_DrawbridgeWait;
this->destAngle = 40;
} else if (this->dyna.actor.params == DT_CHAIN_1) {
if (Actor_SpawnAsChild(&globalCtx->actorCtx, &this->dyna.actor, globalCtx, ACTOR_BG_SPOT00_HANEBASI,
@ -141,7 +141,7 @@ void BgSpot00Hanebasi_Destroy(Actor* thisx, GlobalContext* globalCtx) {
}
}
void BgSpot00Hanebasi_DrawBridgeWait(BgSpot00Hanebasi* this, GlobalContext* globalCtx) {
void BgSpot00Hanebasi_DrawbridgeWait(BgSpot00Hanebasi* this, GlobalContext* globalCtx) {
BgSpot00Hanebasi* child = (BgSpot00Hanebasi*)this->dyna.actor.child;
if ((gSaveContext.sceneSetupIndex >= 4) || (!(CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD))) ||
@ -149,7 +149,7 @@ void BgSpot00Hanebasi_DrawBridgeWait(BgSpot00Hanebasi* this, GlobalContext* glob
(gSaveContext.eventChkInf[8] & 1)) {
if (this->dyna.actor.shape.rot.x != 0) {
if (Flags_GetEnv(globalCtx, 0) || ((gSaveContext.sceneSetupIndex < 4) && (gSaveContext.nightFlag == 0))) {
this->actionFunc = BgSpot00Hanebasi_DrawBridgeRiseAndFall;
this->actionFunc = BgSpot00Hanebasi_DrawbridgeRiseAndFall;
this->destAngle = 0;
child->destAngle = 0;
return;
@ -160,7 +160,7 @@ void BgSpot00Hanebasi_DrawBridgeWait(BgSpot00Hanebasi* this, GlobalContext* glob
if ((this->dyna.actor.shape.rot.x == 0) && (gSaveContext.sceneSetupIndex < 4) && (LINK_IS_CHILD) &&
(gSaveContext.nightFlag != 0)) {
this->actionFunc = BgSpot00Hanebasi_DrawBridgeRiseAndFall;
this->actionFunc = BgSpot00Hanebasi_DrawbridgeRiseAndFall;
this->destAngle = -0x4000;
child->destAngle = -0xFE0;
}
@ -170,13 +170,13 @@ void BgSpot00Hanebasi_DrawBridgeWait(BgSpot00Hanebasi* this, GlobalContext* glob
void BgSpot00Hanebasi_DoNothing(BgSpot00Hanebasi* this, GlobalContext* globalCtx) {
}
void BgSpot00Hanebasi_DrawBridgeRiseAndFall(BgSpot00Hanebasi* this, GlobalContext* globalCtx) {
void BgSpot00Hanebasi_DrawbridgeRiseAndFall(BgSpot00Hanebasi* this, GlobalContext* globalCtx) {
BgSpot00Hanebasi* child;
Actor* childsChild;
s16 angle = 80;
if (Math_ScaledStepToS(&this->dyna.actor.shape.rot.x, this->destAngle, 80)) {
this->actionFunc = BgSpot00Hanebasi_DrawBridgeWait;
this->actionFunc = BgSpot00Hanebasi_DrawbridgeWait;
}
if (this->dyna.actor.shape.rot.x >= -0x27D8) {
@ -188,13 +188,13 @@ void BgSpot00Hanebasi_DrawBridgeRiseAndFall(BgSpot00Hanebasi* this, GlobalContex
}
if (this->destAngle < 0) {
if (this->actionFunc == BgSpot00Hanebasi_DrawBridgeWait) {
if (this->actionFunc == BgSpot00Hanebasi_DrawbridgeWait) {
Audio_PlayActorSound2(&this->dyna.actor, NA_SE_EV_BRIDGE_CLOSE_STOP);
} else {
func_8002F974(&this->dyna.actor, NA_SE_EV_BRIDGE_CLOSE - SFX_FLAG);
}
} else {
if (this->actionFunc == BgSpot00Hanebasi_DrawBridgeWait) {
if (this->actionFunc == BgSpot00Hanebasi_DrawbridgeWait) {
Audio_PlayActorSound2(&this->dyna.actor, NA_SE_EV_BRIDGE_OPEN_STOP);
} else {
func_8002F974(&this->dyna.actor, NA_SE_EV_BRIDGE_OPEN - SFX_FLAG);

View file

@ -145,7 +145,7 @@ void EnSt_SetupAction(EnSt* this, EnStActionFunc actionFunc) {
}
/**
* Spawns `dustCnt` dust particles in a random pattern around the skulltulla
* Spawns `dustCnt` dust particles in a random pattern around the Skulltula
*/
void EnSt_SpawnDust(EnSt* this, GlobalContext* globalCtx, s32 dustCnt) {
Color_RGBA8 primColor = { 170, 130, 90, 255 };
@ -213,8 +213,8 @@ s32 EnSt_CreateBlureEffect(GlobalContext* globalCtx) {
}
/**
* Checks for the position of the ceiling above the skulltulla.
* If no ceiling is found it is set to 1000 units above the skulltulla
* Checks for the position of the ceiling above the Skulltula.
* If no ceiling is found it is set to 1000 units above the Skulltula
*/
s32 EnSt_CheckCeilingPos(EnSt* this, GlobalContext* globalCtx) {
CollisionPoly* poly;
@ -284,7 +284,7 @@ void EnSt_SetDropAnimAndVel(EnSt* this) {
}
/**
* Initalizes the skulltulla's 6 cylinders, and sphere collider.
* Initalizes the Skulltula's 6 cylinders, and sphere collider.
*/
void EnSt_InitColliders(EnSt* this, GlobalContext* globalCtx) {
ColliderCylinderInit* cylinders[6] = {
@ -492,11 +492,11 @@ s32 EnSt_CheckHitBackside(EnSt* this, GlobalContext* globalCtx) {
}
/**
* Checks if the skulltulla's colliders have been hit, returns true if the hit has dealt damage to the skulltulla
* Checks if the Skulltula's colliders have been hit, returns true if the hit has dealt damage to the Skulltula
*/
s32 EnSt_CheckColliders(EnSt* this, GlobalContext* globalCtx) {
if (EnSt_CheckHitFrontside(this)) {
// player has hit the front shield area of the skulltulla
// player has hit the front shield area of the Skulltula
return false;
}
@ -505,12 +505,12 @@ s32 EnSt_CheckColliders(EnSt* this, GlobalContext* globalCtx) {
}
if (EnSt_CheckHitBackside(this, globalCtx)) {
// player has hit the backside of the skulltulla
// player has hit the backside of the Skulltula
return true;
}
if (this->stunTimer == 0 && this->takeDamageSpinTimer == 0) {
// check if the skulltulla has hit link.
// check if the Skulltula has hit link.
EnSt_CheckHitLink(this, globalCtx);
}
return false;
@ -575,7 +575,7 @@ s32 EnSt_DecrStunTimer(EnSt* this) {
}
/**
* Updates the yaw of the skulltulla, used for the shaking animation right before
* Updates the yaw of the Skulltula, used for the shaking animation right before
* turning, and the actual turning to face away from the player, and then back to
* face the player
*/
@ -601,7 +601,7 @@ void EnSt_UpdateYaw(EnSt* this, GlobalContext* globalCtx) {
if (this->swayTimer == 0 && this->deathTimer == 0 && this->finishDeathTimer == 0) {
// not swaying or dying
if (this->takeDamageSpinTimer != 0 || this->gaveDamageSpinTimer != 0) {
// skulltulla is doing a spinning animation
// Skulltula is doing a spinning animation
this->actor.shape.rot.y += 0x2000;
return;
}
@ -659,17 +659,17 @@ void EnSt_UpdateYaw(EnSt* this, GlobalContext* globalCtx) {
}
/**
* Checks to see if the skulltulla is done bouncing on the ground,
* spawns dust particles as the skulltulla hits the ground
* Checks to see if the Skulltula is done bouncing on the ground,
* spawns dust particles as the Skulltula hits the ground
*/
s32 EnSt_IsDoneBouncing(EnSt* this, GlobalContext* globalCtx) {
if (this->actor.velocity.y > 0.0f || this->groundBounces == 0) {
// the skulltulla is moving upwards or the groundBounces is 0
// the Skulltula is moving upwards or the groundBounces is 0
return false;
}
if (!(this->actor.bgCheckFlags & 1)) {
// the skulltulla is not on the ground.
// the Skulltula is not on the ground.
return false;
}
@ -681,7 +681,7 @@ s32 EnSt_IsDoneBouncing(EnSt* this, GlobalContext* globalCtx) {
if (this->groundBounces != 0) {
return false;
} else {
// make sure the skulltulla stays on the ground.
// make sure the Skulltula stays on the ground.
this->actor.velocity.y = 0.0f;
}
return true;
@ -704,19 +704,19 @@ s32 EnSt_IsCloseToPlayer(EnSt* this, GlobalContext* globalCtx) {
// skull is spinning from damage.
return false;
} else if (this->actor.xzDistToPlayer > 160.0f) {
// player is more than 160 xz units from the skulltulla
// player is more than 160 xz units from the Skulltula
return false;
}
yDist = this->actor.world.pos.y - player->actor.world.pos.y;
if (yDist < 0.0f || yDist > 400.0f) {
// player is above the skulltulla or more than 400 units below
// the skulltulla
// player is above the Skulltula or more than 400 units below
// the Skulltula
return false;
}
if (player->actor.world.pos.y < this->actor.floorHeight) {
// player is below the Skulltulla's ground position
// player is below the Skulltula's ground position
return false;
}
return true;
@ -743,7 +743,7 @@ s32 EnSt_IsCloseToGround(EnSt* this) {
}
/**
* Does the animation of the skulltulla swaying back and forth after the skulltulla
* Does the animation of the Skulltula swaying back and forth after the Skulltula
* has been hit in the front by a sword
*/
void EnSt_Sway(EnSt* this) {
@ -835,7 +835,7 @@ void EnSt_WaitOnCeiling(EnSt* this, GlobalContext* globalCtx) {
}
/**
* Skulltulla is waiting on the ground for the player to move away, or for
* Skulltula is waiting on the ground for the player to move away, or for
* a collider to have contact
*/
void EnSt_WaitOnGround(EnSt* this, GlobalContext* globalCtx) {
@ -887,12 +887,12 @@ void EnSt_LandOnGround(EnSt* this, GlobalContext* globalCtx) {
this->sfxTimer++;
if (this->sfxTimer == 14) {
// play the sound effect of the skulltulla hitting the ground.
// play the sound effect of the Skulltula hitting the ground.
Audio_PlayActorSound2(&this->actor, NA_SE_EN_STALTU_DOWN_SET);
}
if ((this->actor.floorHeight + this->floorHeightOffset) < this->actor.world.pos.y) {
// the skulltulla has hit the ground.
// the Skulltula has hit the ground.
this->sfxTimer = 0;
EnSt_SetupAction(this, EnSt_WaitOnGround);
} else {
@ -913,7 +913,7 @@ void EnSt_MoveToGround(EnSt* this, GlobalContext* globalCtx) {
EnSt_SetReturnToCeilingAnimation(this);
EnSt_SetupAction(this, EnSt_ReturnToCeiling);
} else if (EnSt_IsCloseToGround(this)) {
// The skulltulla has become close to the ground.
// The Skulltula has become close to the ground.
EnSt_SpawnBlastEffect(this, globalCtx);
EnSt_SetLandAnimation(this);
EnSt_SetupAction(this, EnSt_LandOnGround);
@ -935,7 +935,7 @@ void EnSt_ReturnToCeiling(EnSt* this, GlobalContext* globalCtx) {
EnSt_SetDropAnimAndVel(this);
EnSt_SetupAction(this, EnSt_MoveToGround);
} else if (EnSt_IsCloseToInitalPos(this)) {
// the skulltulla is close to the initial postion.
// the Skulltula is close to the initial postion.
EnSt_SetWaitingAnimation(this);
EnSt_SetupAction(this, EnSt_WaitOnCeiling);
} else {
@ -945,7 +945,7 @@ void EnSt_ReturnToCeiling(EnSt* this, GlobalContext* globalCtx) {
}
/**
* The skulltulla has been killed, bounce around
* The Skulltula has been killed, bounce around
*/
void EnSt_BounceAround(EnSt* this, GlobalContext* globalCtx) {
this->actor.colorFilterTimer = this->deathTimer;
@ -1037,14 +1037,14 @@ void EnSt_Update(Actor* thisx, GlobalContext* globalCtx) {
Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 0.0f, 0.0f, 0.0f, 4);
if ((this->stunTimer == 0) && (this->swayTimer == 0)) {
// run the current action if the skulltulla isn't stunned
// run the current action if the Skulltula isn't stunned
// or swaying.
this->actionFunc(this, globalCtx);
} else if (this->stunTimer != 0) {
// decrement the stun timer.
EnSt_DecrStunTimer(this);
} else {
// sway the skulltulla.
// sway the Skulltula.
EnSt_Sway(this);
}

View file

@ -5,6 +5,7 @@
*/
#include "z_en_tp.h"
#include "objects/object_tp/object_tp.h"
#define FLAGS 0x00000000
@ -15,11 +16,31 @@ void EnTp_Destroy(Actor* thisx, GlobalContext* globalCtx);
void EnTp_Update(Actor* thisx, GlobalContext* globalCtx);
void EnTp_Draw(Actor* thisx, GlobalContext* globalCtx);
extern UNK_TYPE D_06000000;
extern UNK_TYPE D_060008D0;
extern UNK_TYPE D_06000C68;
void EnTp_Tail_SetupFollowHead(EnTp* this);
void EnTp_Tail_FollowHead(EnTp* this, GlobalContext* globalCtx);
void EnTp_Head_SetupApproachPlayer(EnTp* this);
void EnTp_Head_ApproachPlayer(EnTp* this, GlobalContext* globalCtx);
void EnTp_SetupDie(EnTp* this);
void EnTp_Die(EnTp* this, GlobalContext* globalCtx);
void EnTp_Fragment_SetupFade(EnTp* this);
void EnTp_Fragment_Fade(EnTp* this, GlobalContext* globalCtx);
void EnTp_Head_SetupTakeOff(EnTp* this);
void EnTp_Head_TakeOff(EnTp* this, GlobalContext* globalCtx);
void EnTp_Head_SetupWait(EnTp* this);
void EnTp_Head_Wait(EnTp* this, GlobalContext* globalCtx);
void EnTp_Head_SetupBurrowReturnHome(EnTp* this);
void EnTp_Head_BurrowReturnHome(EnTp* this, GlobalContext* globalCtx);
typedef enum {
/* 0 */ TAILPASARAN_ACTION_FRAGMENT_FADE,
/* 1 */ TAILPASARAN_ACTION_DIE,
/* 2 */ TAILPASARAN_ACTION_TAIL_FOLLOWHEAD,
/* 4 */ TAILPASARAN_ACTION_HEAD_WAIT = 4,
/* 7 */ TAILPASARAN_ACTION_HEAD_APPROACHPLAYER = 7,
/* 8 */ TAILPASARAN_ACTION_HEAD_TAKEOFF,
/* 9 */ TAILPASARAN_ACTION_HEAD_BURROWRETURNHOME
} TailpasaranAction;
/*
const ActorInit En_Tp_InitVars = {
ACTOR_EN_TP,
ACTORCAT_ENEMY,
@ -32,7 +53,7 @@ const ActorInit En_Tp_InitVars = {
(ActorFunc)EnTp_Draw,
};
static ColliderJntSphElementInit D_80B22A90[1] = {
static ColliderJntSphElementInit sJntSphElementsInit[1] = {
{
{
ELEMTYPE_UNK0,
@ -46,7 +67,7 @@ static ColliderJntSphElementInit D_80B22A90[1] = {
},
};
static ColliderJntSphInit D_80B22AB4 = {
static ColliderJntSphInit sJntSphInit = {
{
COLTYPE_HIT1,
AT_ON | AT_TYPE_ENEMY,
@ -56,45 +77,699 @@ static ColliderJntSphInit D_80B22AB4 = {
COLSHAPE_JNTSPH,
},
1,
D_80B22A90,
sJntSphElementsInit,
};
*/
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Tp/func_80B20DE0.s")
typedef enum {
/* 00 */ TAILPASARAN_DMGEFF_NONE,
/* 01 */ TAILPASARAN_DMGEFF_DEKUNUT,
/* 14 */ TAILPASARAN_DMGEFF_SHOCKING = 14, // Kills the Tailpasaran but shocks Player
/* 15 */ TAILPASARAN_DMGEFF_INSULATING // Kills the Tailpasaran and does not shock Player
} TailpasaranDamageEffect;
static DamageTable sDamageTable = {
/* Deku nut */ DMG_ENTRY(0, TAILPASARAN_DMGEFF_DEKUNUT),
/* Deku stick */ DMG_ENTRY(2, TAILPASARAN_DMGEFF_INSULATING),
/* Slingshot */ DMG_ENTRY(0, TAILPASARAN_DMGEFF_NONE),
/* Explosive */ DMG_ENTRY(0, TAILPASARAN_DMGEFF_NONE),
/* Boomerang */ DMG_ENTRY(1, TAILPASARAN_DMGEFF_INSULATING),
/* Normal arrow */ DMG_ENTRY(0, TAILPASARAN_DMGEFF_NONE),
/* Hammer swing */ DMG_ENTRY(2, TAILPASARAN_DMGEFF_SHOCKING),
/* Hookshot */ DMG_ENTRY(0, TAILPASARAN_DMGEFF_NONE),
/* Kokiri sword */ DMG_ENTRY(1, TAILPASARAN_DMGEFF_SHOCKING),
/* Master sword */ DMG_ENTRY(2, TAILPASARAN_DMGEFF_SHOCKING),
/* Giant's Knife */ DMG_ENTRY(4, TAILPASARAN_DMGEFF_SHOCKING),
/* Fire arrow */ DMG_ENTRY(0, TAILPASARAN_DMGEFF_NONE),
/* Ice arrow */ DMG_ENTRY(0, TAILPASARAN_DMGEFF_NONE),
/* Light arrow */ DMG_ENTRY(0, TAILPASARAN_DMGEFF_NONE),
/* Unk arrow 1 */ DMG_ENTRY(0, TAILPASARAN_DMGEFF_NONE),
/* Unk arrow 2 */ DMG_ENTRY(0, TAILPASARAN_DMGEFF_NONE),
/* Unk arrow 3 */ DMG_ENTRY(0, TAILPASARAN_DMGEFF_NONE),
/* Fire magic */ DMG_ENTRY(0, TAILPASARAN_DMGEFF_NONE),
/* Ice magic */ DMG_ENTRY(0, TAILPASARAN_DMGEFF_NONE),
/* Light magic */ DMG_ENTRY(0, TAILPASARAN_DMGEFF_NONE),
/* Shield */ DMG_ENTRY(0, TAILPASARAN_DMGEFF_NONE),
/* Mirror Ray */ DMG_ENTRY(0, TAILPASARAN_DMGEFF_NONE),
/* Kokiri spin */ DMG_ENTRY(1, TAILPASARAN_DMGEFF_SHOCKING),
/* Giant spin */ DMG_ENTRY(4, TAILPASARAN_DMGEFF_SHOCKING),
/* Master spin */ DMG_ENTRY(2, TAILPASARAN_DMGEFF_SHOCKING),
/* Kokiri jump */ DMG_ENTRY(2, TAILPASARAN_DMGEFF_SHOCKING),
/* Giant jump */ DMG_ENTRY(8, TAILPASARAN_DMGEFF_SHOCKING),
/* Master jump */ DMG_ENTRY(4, TAILPASARAN_DMGEFF_SHOCKING),
/* Unknown 1 */ DMG_ENTRY(0, TAILPASARAN_DMGEFF_NONE),
/* Unblockable */ DMG_ENTRY(0, TAILPASARAN_DMGEFF_NONE),
/* Hammer jump */ DMG_ENTRY(4, TAILPASARAN_DMGEFF_SHOCKING),
/* Unknown 2 */ DMG_ENTRY(0, TAILPASARAN_DMGEFF_NONE),
};
static InitChainEntry sInitChain[] = {
ICHAIN_F32(targetArrowOffset, 10, ICHAIN_STOP),
};
void EnTp_SetupAction(EnTp* this, EnTpActionFunc actionFunc) {
this->actionFunc = actionFunc;
}
#ifdef NON_MATCHING
// Regalloc, some stack, and compiler refuses to put zero in $s4 with temp_s4; all seems to be related
void EnTp_Init(Actor* thisx, GlobalContext* globalCtx2) {
GlobalContext* globalCtx = globalCtx2;
EnTp* this = THIS;
EnTp* now;
EnTp* next;
s32 i;
s64 temp_s4;
Actor_ProcessInitChain(&this->actor, sInitChain);
this->actor.targetMode = 3;
this->actor.colChkInfo.damageTable = &sDamageTable;
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 0.14f);
this->unk_150 = 0;
this->actor.colChkInfo.health = 1;
now = this;
this->alpha = 255;
Collider_InitJntSph(globalCtx, &this->collider);
Collider_SetJntSph(globalCtx, &this->collider, &this->actor, &sJntSphInit, this->colliderItems);
if (this->actor.params <= TAILPASARAN_HEAD) {
this->actor.naviEnemyId = 6;
this->timer = 0;
this->collider.base.acFlags |= AC_HARD;
this->collider.elements->dim.modelSphere.radius = this->collider.elements->dim.worldSphere.radius = 8;
EnTp_Head_SetupWait(this);
this->actor.focus.pos = this->actor.world.pos;
this->actor.flags |= 0x15;
Actor_SetScale(&this->actor, 1.5f);
for (i = 0; i <= 6; i++) {
temp_s4 = 0;
next = (EnTp*)Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_TP, this->actor.world.pos.x,
this->actor.world.pos.y, this->actor.world.pos.z, 0, 0, 0, temp_s4);
if (next != NULL) {
now->actor.child = &next->actor;
next->actor.parent = &now->actor;
next->kiraSpawnTimer = i + 1;
next->head = this;
Actor_SetScale(&next->actor, 0.3f);
if (i == 2) {
next->actor.flags |= 0x15;
next->unk_150 = 1; // Why?
}
next->timer = next->unk_15C = i * -5;
next->horizontalVariation = 6.0f - (i * 0.75f);
now = next;
}
}
} else if (this->actor.params == TAILPASARAN_TAIL) {
EnTp_Tail_SetupFollowHead(this);
} else {
EnTp_Fragment_SetupFade(this);
}
}
#else
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Tp/EnTp_Init.s")
#endif
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Tp/EnTp_Destroy.s")
void EnTp_Destroy(Actor* thisx, GlobalContext* globalCtx) {
EnTp* this = THIS;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Tp/func_80B21084.s")
Collider_DestroyJntSph(globalCtx, &this->collider);
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Tp/func_80B210B0.s")
void EnTp_Tail_SetupFollowHead(EnTp* this) {
this->actionIndex = TAILPASARAN_ACTION_TAIL_FOLLOWHEAD;
EnTp_SetupAction(this, EnTp_Tail_FollowHead);
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Tp/func_80B2128C.s")
void EnTp_Tail_FollowHead(EnTp* this, GlobalContext* globalCtx) {
s16 angle;
s16 phase;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Tp/func_80B212C0.s")
if (this->actor.params == TAILPASARAN_TAIL_DYING) {
this->actionIndex = TAILPASARAN_ACTION_DIE;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Tp/func_80B21454.s")
if (this->actor.parent == NULL) {
EnTp_SetupDie(this);
}
} else {
if (this->unk_150 != 0) {
this->actor.flags |= 1;
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Tp/func_80B214CC.s")
if (this->head->unk_150 != 0) {
this->actor.speedXZ = this->red = this->actor.velocity.y = this->heightPhase = 0.0f;
if (this->actor.world.pos.y < this->head->actor.home.pos.y) {
this->actor.flags &= ~1;
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Tp/func_80B217FC.s")
this->actor.world.pos = this->actor.parent->prevPos;
} else {
Math_SmoothStepToF(&this->actor.world.pos.y, this->actor.parent->world.pos.y - 4.0f, 1.0f, 1.0f, 0.0f);
angle = this->head->actor.shape.rot.y + 0x4000;
phase = 2000 * (this->head->unk_15C + this->timer);
this->actor.world.pos.x =
this->actor.home.pos.x + Math_SinS(phase) * (Math_SinS(angle) * this->horizontalVariation);
this->actor.world.pos.z =
this->actor.home.pos.z + Math_SinS(phase) * (Math_CosS(angle) * this->horizontalVariation);
}
}
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Tp/func_80B21900.s")
void EnTp_Head_SetupApproachPlayer(EnTp* this) {
this->actionIndex = TAILPASARAN_ACTION_HEAD_APPROACHPLAYER;
this->timer = 200;
EnTp_SetupAction(this, EnTp_Head_ApproachPlayer);
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Tp/func_80B2194C.s")
void EnTp_Head_ApproachPlayer(EnTp* this, GlobalContext* globalCtx) {
Player* player = PLAYER;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Tp/func_80B219A8.s")
Math_SmoothStepToF(&this->actor.world.pos.y, player->actor.world.pos.y + 30.0f, 1.0f, 0.5f, 0.0f);
Audio_PlaySoundGeneral(NA_SE_EN_TAIL_FLY - SFX_FLAG, &this->actor.projectedPos, 4, &D_801333E0, &D_801333E0,
&D_801333E8);
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Tp/func_80B21B90.s")
if (this->collider.base.atFlags & AT_HIT) {
this->collider.base.atFlags &= ~AT_HIT;
if (&player->actor == this->collider.base.at) {
this->timer = 1;
}
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Tp/func_80B21BDC.s")
if (this->red < 255) {
this->red += 15;
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Tp/func_80B21EE8.s")
if (Math_CosF(this->heightPhase) == 0.0f) {
this->extraHeightVariation = 2.0f * Rand_ZeroOne();
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Tp/func_80B21F18.s")
this->actor.world.pos.y += Math_CosF(this->heightPhase) * (2.0f + this->extraHeightVariation);
this->heightPhase += 0.2f;
Math_SmoothStepToF(&this->actor.speedXZ, 2.5f, 0.1f, 0.2f, 0.0f);
this->timer--;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Tp/func_80B221E8.s")
if (this->timer != 0) {
Math_SmoothStepToS(&this->actor.world.rot.y, this->actor.yawTowardsPlayer, 1, 750, 0);
this->actor.shape.rot.y = this->actor.world.rot.y;
} else {
EnTp_Head_SetupBurrowReturnHome(this);
}
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Tp/EnTp_Update.s")
void EnTp_SetupDie(EnTp* this) {
Actor* now;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Tp/EnTp_Draw.s")
this->timer = 2;
if (this->actor.params <= TAILPASARAN_HEAD) {
for (now = this->actor.child; now != NULL; now = now->child) {
now->params = TAILPASARAN_TAIL_DYING;
now->colChkInfo.health = 0;
}
this->timer = 13;
Audio_PlayActorSound2(&this->actor, NA_SE_EN_TAIL_DEAD);
}
this->actionIndex = TAILPASARAN_ACTION_DIE;
EnTp_SetupAction(this, EnTp_Die);
}
/**
* Spawns effects and smaller tail segment-like fragments
*/
void EnTp_Die(EnTp* this, GlobalContext* globalCtx) {
EnTp* now;
s16 i;
s32 pad;
Vec3f effectVelAccel = { 0.0f, 0.5f, 0.0f };
Vec3f effectPos = { 0.0f, 0.0f, 0.0f };
this->timer--;
if (this->timer <= 0) {
if (this->actor.params == TAILPASARAN_HEAD_DYING) {
effectPos.x = ((Rand_ZeroOne() - 0.5f) * 15.0f) + this->actor.world.pos.x;
effectPos.z = ((Rand_ZeroOne() - 0.5f) * 15.0f) + this->actor.world.pos.z;
effectPos.y = ((Rand_ZeroOne() - 0.5f) * 5.0f) + this->actor.world.pos.y;
EffectSsDeadDb_Spawn(globalCtx, &effectPos, &effectVelAccel, &effectVelAccel, 100, 0, 255, 255, 255, 255, 0,
0, 255, 1, 9, 1);
effectPos.x = ((Rand_ZeroOne() - 0.5f) * 15.0f) + this->actor.world.pos.x;
effectPos.z = ((Rand_ZeroOne() - 0.5f) * 15.0f) + this->actor.world.pos.z;
effectPos.y = ((Rand_ZeroOne() - 0.5f) * 5.0f) + this->actor.world.pos.y;
EffectSsDeadDb_Spawn(globalCtx, &effectPos, &effectVelAccel, &effectVelAccel, 100, 0, 255, 255, 255, 255, 0,
0, 255, 1, 9, 1);
Item_DropCollectibleRandom(globalCtx, &this->actor, &this->actor.world.pos, 0x50);
} else {
for (i = 0; i < 1; i++) {
now =
(EnTp*)Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_TP, this->actor.world.pos.x,
this->actor.world.pos.y, this->actor.world.pos.z, 0, 0, 0, TAILPASARAN_FRAGMENT);
if (now != NULL) {
Actor_SetScale(&now->actor, this->actor.scale.z * 0.5f);
now->red = this->red;
}
}
}
if (this->actor.child != NULL) {
this->actor.child->parent = NULL;
this->actor.child->params = TAILPASARAN_TAIL_DYING;
this->actor.child->colChkInfo.health = 0;
}
this->unk_150 = 2;
Actor_Kill(&this->actor);
}
}
void EnTp_Fragment_SetupFade(EnTp* this) {
this->actionIndex = TAILPASARAN_ACTION_FRAGMENT_FADE;
this->actor.world.pos.x += ((Rand_ZeroOne() - 0.5f) * 5.0f);
this->actor.world.pos.y += ((Rand_ZeroOne() - 0.5f) * 5.0f);
this->actor.world.pos.z += ((Rand_ZeroOne() - 0.5f) * 5.0f);
this->actor.velocity.x = (Rand_ZeroOne() - 0.5f) * 1.5f;
this->actor.velocity.y = (Rand_ZeroOne() - 0.5f) * 1.5f;
this->actor.velocity.z = (Rand_ZeroOne() - 0.5f) * 1.5f;
this->actor.flags &= ~1;
EnTp_SetupAction(this, EnTp_Fragment_Fade);
}
void EnTp_Fragment_Fade(EnTp* this, GlobalContext* globalCtx) {
func_8002D7EC(&this->actor);
this->alpha -= 20;
if (this->alpha < 20) {
this->alpha = 0;
Actor_Kill(&this->actor);
}
}
void EnTp_Head_SetupTakeOff(EnTp* this) {
this->timer = (Rand_ZeroOne() * 15.0f) + 40.0f;
this->actionIndex = TAILPASARAN_ACTION_HEAD_TAKEOFF;
EnTp_SetupAction(this, EnTp_Head_TakeOff);
}
/**
* Flies up and loops around until it makes for Player
*/
void EnTp_Head_TakeOff(EnTp* this, GlobalContext* globalCtx) {
s32 pad;
Player* player = PLAYER;
Math_SmoothStepToF(&this->actor.speedXZ, 2.5f, 0.1f, 0.2f, 0.0f);
Math_SmoothStepToF(&this->actor.world.pos.y, player->actor.world.pos.y + 85.0f + this->horizontalVariation, 1.0f,
this->actor.speedXZ * 0.25f, 0.0f);
Audio_PlaySoundGeneral(NA_SE_EN_TAIL_FLY - SFX_FLAG, &this->actor.projectedPos, 4, &D_801333E0, &D_801333E0,
&D_801333E8);
if (this->collider.base.atFlags & AT_HIT) {
this->collider.base.atFlags &= ~AT_HIT;
if (&player->actor == this->collider.base.at) {
this->unk_15C = 1;
}
}
if (this->red != 0) {
this->red -= 15;
}
if (Math_CosF(this->heightPhase) == 0.0f) {
this->extraHeightVariation = Rand_ZeroOne() * 4.0f;
}
this->actor.world.pos.y +=
Math_CosF(this->heightPhase) * ((this->actor.speedXZ * 0.25f) + this->extraHeightVariation);
this->actor.world.rot.y += this->unk_164;
this->heightPhase += 0.2f;
if (this->timer != 0) {
this->timer--;
}
Math_SmoothStepToS(&this->actor.world.rot.y, Math_Vec3f_Yaw(&this->actor.world.pos, &this->actor.home.pos), 1, 750,
0);
if (this->timer == 0) {
EnTp_Head_SetupApproachPlayer(this);
}
this->actor.shape.rot.y = this->actor.world.rot.y;
}
void EnTp_Head_SetupWait(EnTp* this) {
this->actionIndex = TAILPASARAN_ACTION_HEAD_WAIT;
this->unk_150 = 0;
this->actor.shape.rot.x = -0x4000;
this->timer = 60;
this->unk_15C = 0;
this->actor.speedXZ = 0.0f;
EnTp_SetupAction(this, EnTp_Head_Wait);
}
/**
* Awaken and rise from the ground when Player is closer than 200
*/
void EnTp_Head_Wait(EnTp* this, GlobalContext* globalCtx) {
Player* player = PLAYER;
s16 yaw;
this->unk_15C--;
if (this->actor.xzDistToPlayer < 200.0f) {
if (this->collider.base.atFlags & AT_HIT) {
this->collider.base.atFlags &= ~AT_HIT;
if (&player->actor == this->collider.base.at) {
this->timer = 0;
}
}
if (this->timer != 0) {
this->timer--;
Math_SmoothStepToS(&this->actor.shape.rot.x, 0, 1, 500, 0);
Math_SmoothStepToS(&this->actor.world.rot.y, this->actor.yawTowardsPlayer, 1, 1500, 0);
yaw = Math_Vec3f_Yaw(&this->actor.home.pos, &player->actor.world.pos) + 0x4000;
Math_SmoothStepToF(&this->actor.world.pos.y, this->actor.home.pos.y + 30.0f, 0.3f, 1.0f, 0.3f);
this->actor.world.pos.x = this->actor.home.pos.x +
(Math_SinS(2000 * this->unk_15C) * (Math_SinS(yaw) * this->horizontalVariation));
this->actor.world.pos.z = this->actor.home.pos.z +
(Math_SinS(2000 * this->unk_15C) * (Math_CosS(yaw) * this->horizontalVariation));
} else {
this->actor.shape.rot.x = 0;
this->unk_150 = 1;
EnTp_Head_SetupTakeOff(this);
}
} else {
Math_SmoothStepToS(&this->actor.shape.rot.x, -0x4000, 1, 500, 0);
if (Math_SmoothStepToF(&this->actor.world.pos.y, this->actor.home.pos.y, 0.3f, 1.5f, 0.3f) == 0.0f) {
this->timer = 60;
} else {
yaw = Math_Vec3f_Yaw(&this->actor.home.pos, &player->actor.world.pos);
this->actor.world.pos.x =
this->actor.home.pos.x + (Math_SinS(2000 * this->unk_15C) * (Math_SinS(yaw) * 6.0f));
this->actor.world.pos.z =
this->actor.home.pos.z + (Math_SinS(2000 * this->unk_15C) * (Math_CosS(yaw) * 6.0f));
}
}
this->actor.shape.rot.y = this->actor.world.rot.y;
if (this->actor.world.pos.y != this->actor.home.pos.y) {
Audio_PlaySoundGeneral(NA_SE_EN_TAIL_FLY - SFX_FLAG, &this->actor.projectedPos, 4, &D_801333E0, &D_801333E0,
&D_801333E8);
}
}
void EnTp_Head_SetupBurrowReturnHome(EnTp* this) {
this->actionIndex = TAILPASARAN_ACTION_HEAD_BURROWRETURNHOME;
this->timer = 0;
EnTp_SetupAction(this, EnTp_Head_BurrowReturnHome);
}
void EnTp_Head_BurrowReturnHome(EnTp* this, GlobalContext* globalCtx) {
static Vec3f bubbleAccel = { 0.0f, -0.5f, 0.0f };
static Color_RGBA8 bubblePrimColor = { 255, 255, 255, 255 };
static Color_RGBA8 bubbleEnvColor = { 150, 150, 150, 0 };
Vec3f bubbleVelocity;
Vec3f bubblePos;
s32 closeToFloor;
EnTp* now;
s16 temp_v0; // Required to match, usage can maybe be improved
closeToFloor = false;
temp_v0 = this->timer;
this->unk_15C--;
if ((temp_v0 != 0) || ((this->actor.home.pos.y - this->actor.world.pos.y) > 60.0f)) {
this->timer = temp_v0 - 1;
temp_v0 = this->timer;
if (temp_v0 == 0) {
EnTp_Head_SetupWait(this);
for (now = (EnTp*)this->actor.child; now != NULL; now = (EnTp*)now->actor.child) {
now->unk_15C = now->timer;
}
} else {
if (this->actor.shape.rot.x != -0x4000) {
this->timer = 80;
this->actor.velocity.y = 0.0f;
this->actor.speedXZ = 0.0f;
this->actor.world.pos = this->actor.home.pos;
this->actor.shape.rot.x = -0x4000;
for (now = (EnTp*)this->actor.child; now != NULL; now = (EnTp*)now->actor.child) {
now->actor.velocity.y = 0.0f;
now->actor.speedXZ = 0.0f;
now->actor.world.pos = this->actor.home.pos;
now->actor.world.pos.y = this->actor.home.pos.y - 80.0f;
}
}
this->actor.world.pos.y = this->actor.home.pos.y - this->timer;
}
} else {
if (this->actor.shape.rot.x != 0x4000) {
this->actor.shape.rot.x -= 0x400;
}
if (this->red != 0) {
this->red -= 15;
}
this->actor.speedXZ = 2.0f * Math_CosS(this->actor.shape.rot.x);
this->actor.velocity.y = Math_SinS(this->actor.shape.rot.x) * -2.0f;
if ((this->actor.world.pos.y - this->actor.floorHeight) < 20.0f) {
closeToFloor = true;
}
if (this->actor.world.pos.y != this->actor.home.pos.y) {
Audio_PlaySoundGeneral(NA_SE_EN_TAIL_FLY - SFX_FLAG, &this->actor.projectedPos, 4, &D_801333E0, &D_801333E0,
&D_801333E8);
}
if (closeToFloor && ((globalCtx->gameplayFrames & 1) != 0)) {
bubblePos = this->actor.world.pos;
bubblePos.y = this->actor.floorHeight;
bubbleVelocity.x = Rand_CenteredFloat(5.0f);
bubbleVelocity.y = (Rand_ZeroOne() * 3.5f) + 1.5f;
bubbleVelocity.z = Rand_CenteredFloat(5.0f);
EffectSsDtBubble_SpawnCustomColor(globalCtx, &bubblePos, &bubbleVelocity, &bubbleAccel, &bubblePrimColor,
&bubbleEnvColor, Rand_S16Offset(100, 50), 20, 0);
}
}
}
void EnTp_UpdateDamage(EnTp* this, GlobalContext* globalCtx) {
s32 phi_s2;
s32 phi_s4;
EnTp* head; // Can eliminate this and just use now, but they're used differently
EnTp* now;
if ((this->collider.base.acFlags & AC_HIT) && (this->actionIndex >= TAILPASARAN_ACTION_TAIL_FOLLOWHEAD)) {
phi_s4 = phi_s2 = 0;
if (this->actor.params <= TAILPASARAN_HEAD) {
phi_s2 = 1;
}
this->collider.base.acFlags &= ~AC_HIT;
func_8003573C(&this->actor, &this->collider, 1);
this->damageEffect = this->actor.colChkInfo.damageEffect;
if (this->actor.colChkInfo.damageEffect != TAILPASARAN_DMGEFF_NONE) {
if (this->actor.colChkInfo.damageEffect == TAILPASARAN_DMGEFF_DEKUNUT) {
phi_s4 = 1;
}
// Head is invincible
if (phi_s2 == 0) {
Actor_ApplyDamage(&this->actor);
}
if (this->actor.colChkInfo.health == 0) {
this->actor.flags &= ~1;
head = this->head;
if (head->actor.params <= TAILPASARAN_HEAD) {
EnTp_SetupDie(head);
head->damageEffect = this->actor.colChkInfo.damageEffect;
head->actor.params = TAILPASARAN_HEAD_DYING;
}
} else {
if (phi_s4 != 0) {
this->actor.freezeTimer = 80;
Audio_PlayActorSound2(&this->actor, NA_SE_EN_GOMA_JR_FREEZE);
if (phi_s2 != 0) {
Actor_SetColorFilter(&this->actor, 0, 0xFF, 0, 0x50);
} else {
Actor_SetColorFilter(&this->actor, 0, 0xFF, 0x2000, 0x50);
}
}
for (now = (EnTp*)this->actor.parent; now != NULL; now = (EnTp*)now->actor.parent) {
now->collider.base.acFlags &= ~AC_HIT;
if (phi_s4 != 0) {
now->actor.freezeTimer = 80;
Audio_PlayActorSound2(&this->actor, NA_SE_EN_GOMA_JR_FREEZE);
if (phi_s2 != 0) {
Actor_SetColorFilter(&now->actor, 0, 0xFF, 0, 0x50);
} else {
Actor_SetColorFilter(&now->actor, 0, 0xFF, 0x2000, 0x50);
}
}
}
for (now = (EnTp*)this->actor.child; now != NULL; now = (EnTp*)now->actor.child) {
now->collider.base.acFlags &= ~AC_HIT;
if (phi_s4 != 0) {
now->actor.freezeTimer = 80;
if (phi_s2 != 0) {
Actor_SetColorFilter(&now->actor, 0, 0xFF, 0, 0x50);
} else {
Actor_SetColorFilter(&now->actor, 0, 0xFF, 0x2000, 0x50);
}
}
}
}
}
}
}
void EnTp_Update(Actor* thisx, GlobalContext* globalCtx) {
s32 pad;
EnTp* this = THIS;
Vec3f kiraVelocity = { 0.0f, 0.0f, 0.0f };
Vec3f kiraAccel = { 0.0f, -0.6f, 0.0f };
Vec3f kiraPos;
Color_RGBA8 kiraPrimColor = { 0, 0, 255, 255 };
Color_RGBA8 kiraEnvColor = { 0, 0, 0, 0 };
Player* player = PLAYER;
s16 yawToWall;
if (player->stateFlags1 & 0x4000000) { // Shielding
this->damageEffect = TAILPASARAN_DMGEFF_NONE;
}
if (this->actor.colChkInfo.health != 0) {
EnTp_UpdateDamage(this, globalCtx);
}
this->actionFunc(this, globalCtx);
if (this->actor.params <= TAILPASARAN_HEAD) {
Actor_MoveForward(&this->actor);
if (this->actionIndex != TAILPASARAN_ACTION_HEAD_BURROWRETURNHOME) {
Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 0.0f, 15.0f, 10.0f, 5);
}
// Turn away from wall
if ((this->actor.speedXZ != 0.0f) && (this->actor.bgCheckFlags & 8)) {
yawToWall = this->actor.wallYaw - this->actor.world.rot.y;
if (ABS(yawToWall) > 0x4000) {
if (yawToWall >= 0) {
this->actor.world.rot.y -= 500;
} else {
this->actor.world.rot.y += 500;
}
this->actor.shape.rot.y = this->actor.world.rot.y;
}
}
this->actor.shape.rot.z += 0x800;
if (this->actor.shape.rot.z == 0) {
Audio_PlaySoundGeneral(NA_SE_EN_TAIL_CRY, &this->actor.projectedPos, 4, &D_801333E0, &D_801333E0,
&D_801333E8);
}
if (this->actionIndex >= TAILPASARAN_ACTION_TAIL_FOLLOWHEAD) {
CollisionCheck_SetAT(globalCtx, &globalCtx->colChkCtx, &this->collider.base);
}
}
if (this->actor.params != TAILPASARAN_TAIL_DYING) {
this->kiraSpawnTimer--;
this->kiraSpawnTimer &= 7;
}
this->actor.focus.pos = this->actor.world.pos;
if (this->damageEffect == TAILPASARAN_DMGEFF_SHOCKING) {
CollisionCheck_SetAT(globalCtx, &globalCtx->colChkCtx, &this->collider.base);
}
if ((this->kiraSpawnTimer & 7) == 0) {
kiraPrimColor.r = this->red;
kiraAccel.x = -this->actor.velocity.x * 0.25f;
kiraAccel.y = -this->actor.velocity.y * 0.25f;
kiraAccel.z = -this->actor.velocity.z * 0.25f;
kiraPos.x = ((Rand_ZeroOne() - 0.5f) * 25.0f) + this->actor.world.pos.x;
kiraPos.y = ((Rand_ZeroOne() - 0.5f) * 20.0f) + this->actor.world.pos.y;
kiraPos.z = ((Rand_ZeroOne() - 0.5f) * 25.0f) + this->actor.world.pos.z;
EffectSsKiraKira_SpawnSmall(globalCtx, &kiraPos, &kiraVelocity, &kiraAccel, &kiraPrimColor, &kiraEnvColor);
}
if ((this->actionIndex >= TAILPASARAN_ACTION_TAIL_FOLLOWHEAD) && (this->actor.colChkInfo.health != 0)) {
CollisionCheck_SetAC(globalCtx, &globalCtx->colChkCtx, &this->collider.base);
}
}
void EnTp_Draw(Actor* thisx, GlobalContext* globalCtx) {
s32 pad;
EnTp* this = THIS;
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_en_tp.c", 1451);
if (this->unk_150 != 2) {
if ((thisx->params <= TAILPASARAN_HEAD) || (thisx->params == TAILPASARAN_HEAD_DYING)) {
func_80093D18(globalCtx->state.gfxCtx);
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_en_tp.c", 1459),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, gTailpasaranHeadDL);
Matrix_Translate(0.0f, 0.0f, 8.0f, MTXMODE_APPLY);
} else {
func_80093D84(globalCtx->state.gfxCtx);
func_800D1FD4(&globalCtx->mf_11DA0);
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, this->red, 0, 255, this->alpha);
gDPPipeSync(POLY_XLU_DISP++);
gDPSetCombineLERP(POLY_XLU_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, PRIMITIVE, ENVIRONMENT,
TEXEL0, ENVIRONMENT, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, PRIMITIVE, ENVIRONMENT,
TEXEL0, ENVIRONMENT);
gDPPipeSync(POLY_XLU_DISP++);
gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(gTailpasaranTailSegmentTex));
gDPPipeSync(POLY_XLU_DISP++);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_en_tp.c", 1480),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, gTailpasaranTailSegmentDL);
}
}
CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_en_tp.c", 1495);
if ((thisx->params <= TAILPASARAN_TAIL) || (thisx->params == TAILPASARAN_TAIL_DYING)) {
Collider_UpdateSpheres(0, &this->collider);
}
}

View file

@ -6,11 +6,36 @@
struct EnTp;
typedef void (*EnTpActionFunc)(struct EnTp*, GlobalContext*);
typedef struct EnTp {
/* 0x0000 */ Actor actor;
/* 0x014C */ char unk_14C[0x8C];
/* 0x014C */ s32 actionIndex;
/* 0x0150 */ s32 unk_150; // Some kind of state indicator
/* 0x0154 */ EnTpActionFunc actionFunc;
/* 0x0158 */ u8 damageEffect; // Used to propagate the effect to the other segments' actors
/* 0x015A */ s16 timer;
/* 0x015C */ s16 unk_15C; // Multipurpose, used to change the horizontal position of tail segments
/* 0x015E */ s16 alpha; // The dying types fade away
/* 0x0160 */ s16 red;
/* 0x0162 */ s16 kiraSpawnTimer;
/* 0x0164 */ s16 unk_164; // Used once, never set to nonzero
/* 0x0168 */ f32 heightPhase;
/* 0x016C */ f32 horizontalVariation;
/* 0x0170 */ f32 extraHeightVariation;
/* 0x0174 */ ColliderJntSph collider;
/* 0x0194 */ ColliderJntSphElement colliderItems[1];
/* 0x01D4 */ struct EnTp* head;
} EnTp; // size = 0x01D8
typedef enum {
/* -1 */ TAILPASARAN_HEAD = -1, // Used when scenes spawn them: code only cares about < 0
/* 0 */ TAILPASARAN_TAIL,
/* 10 */ TAILPASARAN_FRAGMENT = 10,
/* 11 */ TAILPASARAN_TAIL_DYING,
/* 12 */ TAILPASARAN_HEAD_DYING
} EnTpType;
extern const ActorInit En_Tp_InitVars;
#endif