ovl_En_Daiku OK and documented (#422)

* ovl_En_Daiku OK, except func_809E3068

* ovl_En_Daiku documented

* `ACTORTYPE_ENEMY`

Co-authored-by: Roman971 <32455037+Roman971@users.noreply.github.com>

* Nonmatching reloc, better #include path, defines for state flags, enum values, `hair` -> `hairDLists`

* asm and format

* review

Co-authored-by: Roman971 <32455037+Roman971@users.noreply.github.com>
Co-authored-by: fig <fig02srl@gmail.com>
This commit is contained in:
Dragorn421 2020-12-03 22:58:05 +01:00 committed by GitHub
parent 26c38834ec
commit b8ecf7cae4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 620 additions and 1373 deletions

View File

@ -1,12 +0,0 @@
glabel EnDaiku_Destroy
/* 003F8 809E2F28 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 003FC 809E2F2C 00803025 */ or $a2, $a0, $zero ## $a2 = 00000000
/* 00400 809E2F30 AFBF0014 */ sw $ra, 0x0014($sp)
/* 00404 809E2F34 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 00408 809E2F38 0C0170EB */ jal Collider_DestroyCylinder
/* 0040C 809E2F3C 24C50194 */ addiu $a1, $a2, 0x0194 ## $a1 = 00000194
/* 00410 809E2F40 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00414 809E2F44 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 00418 809E2F48 03E00008 */ jr $ra
/* 0041C 809E2F4C 00000000 */ nop

View File

@ -1,99 +0,0 @@
.rdata
glabel D_809E4170
.asciz "../z_en_daiku.c"
.balign 4
glabel D_809E4180
.asciz "../z_en_daiku.c"
.balign 4
.text
glabel EnDaiku_Draw
/* 01278 809E3DA8 27BDFFA8 */ addiu $sp, $sp, 0xFFA8 ## $sp = FFFFFFA8
/* 0127C 809E3DAC AFBF0024 */ sw $ra, 0x0024($sp)
/* 01280 809E3DB0 AFA40058 */ sw $a0, 0x0058($sp)
/* 01284 809E3DB4 AFA5005C */ sw $a1, 0x005C($sp)
/* 01288 809E3DB8 8CA50000 */ lw $a1, 0x0000($a1) ## 00000000
/* 0128C 809E3DBC 3C06809E */ lui $a2, %hi(D_809E4170) ## $a2 = 809E0000
/* 01290 809E3DC0 24C64170 */ addiu $a2, $a2, %lo(D_809E4170) ## $a2 = 809E4170
/* 01294 809E3DC4 27A40040 */ addiu $a0, $sp, 0x0040 ## $a0 = FFFFFFE8
/* 01298 809E3DC8 240704CB */ addiu $a3, $zero, 0x04CB ## $a3 = 000004CB
/* 0129C 809E3DCC 0C031AB1 */ jal Graph_OpenDisps
/* 012A0 809E3DD0 AFA50050 */ sw $a1, 0x0050($sp)
/* 012A4 809E3DD4 8FAF005C */ lw $t7, 0x005C($sp)
/* 012A8 809E3DD8 0C024F46 */ jal func_80093D18
/* 012AC 809E3DDC 8DE40000 */ lw $a0, 0x0000($t7) ## 00000000
/* 012B0 809E3DE0 8FA90058 */ lw $t1, 0x0058($sp)
/* 012B4 809E3DE4 8FA80050 */ lw $t0, 0x0050($sp)
/* 012B8 809E3DE8 3C19FB00 */ lui $t9, 0xFB00 ## $t9 = FB000000
/* 012BC 809E3DEC 8522001C */ lh $v0, 0x001C($t1) ## 0000001C
/* 012C0 809E3DF0 24010001 */ addiu $at, $zero, 0x0001 ## $at = 00000001
/* 012C4 809E3DF4 30420003 */ andi $v0, $v0, 0x0003 ## $v0 = 00000000
/* 012C8 809E3DF8 14400009 */ bne $v0, $zero, .L809E3E20
/* 012CC 809E3DFC 00000000 */ nop
/* 012D0 809E3E00 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0
/* 012D4 809E3E04 3C0AAA0A */ lui $t2, 0xAA0A ## $t2 = AA0A0000
/* 012D8 809E3E08 354A46FF */ ori $t2, $t2, 0x46FF ## $t2 = AA0A46FF
/* 012DC 809E3E0C 24580008 */ addiu $t8, $v0, 0x0008 ## $t8 = 00000008
/* 012E0 809E3E10 AD1802C0 */ sw $t8, 0x02C0($t0) ## 000002C0
/* 012E4 809E3E14 AC4A0004 */ sw $t2, 0x0004($v0) ## 00000004
/* 012E8 809E3E18 10000020 */ beq $zero, $zero, .L809E3E9C
/* 012EC 809E3E1C AC590000 */ sw $t9, 0x0000($v0) ## 00000000
.L809E3E20:
/* 012F0 809E3E20 14410009 */ bne $v0, $at, .L809E3E48
/* 012F4 809E3E24 3C0CFB00 */ lui $t4, 0xFB00 ## $t4 = FB000000
/* 012F8 809E3E28 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0
/* 012FC 809E3E2C 3C0DAAC8 */ lui $t5, 0xAAC8 ## $t5 = AAC80000
/* 01300 809E3E30 35ADFFFF */ ori $t5, $t5, 0xFFFF ## $t5 = AAC8FFFF
/* 01304 809E3E34 244B0008 */ addiu $t3, $v0, 0x0008 ## $t3 = 00000008
/* 01308 809E3E38 AD0B02C0 */ sw $t3, 0x02C0($t0) ## 000002C0
/* 0130C 809E3E3C AC4D0004 */ sw $t5, 0x0004($v0) ## 00000004
/* 01310 809E3E40 10000016 */ beq $zero, $zero, .L809E3E9C
/* 01314 809E3E44 AC4C0000 */ sw $t4, 0x0000($v0) ## 00000000
.L809E3E48:
/* 01318 809E3E48 24010002 */ addiu $at, $zero, 0x0002 ## $at = 00000002
/* 0131C 809E3E4C 14410009 */ bne $v0, $at, .L809E3E74
/* 01320 809E3E50 3C0FFB00 */ lui $t7, 0xFB00 ## $t7 = FB000000
/* 01324 809E3E54 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0
/* 01328 809E3E58 3C1800E6 */ lui $t8, 0x00E6 ## $t8 = 00E60000
/* 0132C 809E3E5C 371846FF */ ori $t8, $t8, 0x46FF ## $t8 = 00E646FF
/* 01330 809E3E60 244E0008 */ addiu $t6, $v0, 0x0008 ## $t6 = 00000008
/* 01334 809E3E64 AD0E02C0 */ sw $t6, 0x02C0($t0) ## 000002C0
/* 01338 809E3E68 AC580004 */ sw $t8, 0x0004($v0) ## 00000004
/* 0133C 809E3E6C 1000000B */ beq $zero, $zero, .L809E3E9C
/* 01340 809E3E70 AC4F0000 */ sw $t7, 0x0000($v0) ## 00000000
.L809E3E74:
/* 01344 809E3E74 24010003 */ addiu $at, $zero, 0x0003 ## $at = 00000003
/* 01348 809E3E78 14410008 */ bne $v0, $at, .L809E3E9C
/* 0134C 809E3E7C 3C0AFB00 */ lui $t2, 0xFB00 ## $t2 = FB000000
/* 01350 809E3E80 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0
/* 01354 809E3E84 3C0BC800 */ lui $t3, 0xC800 ## $t3 = C8000000
/* 01358 809E3E88 356B96FF */ ori $t3, $t3, 0x96FF ## $t3 = C80096FF
/* 0135C 809E3E8C 24590008 */ addiu $t9, $v0, 0x0008 ## $t9 = 00000008
/* 01360 809E3E90 AD1902C0 */ sw $t9, 0x02C0($t0) ## 000002C0
/* 01364 809E3E94 AC4B0004 */ sw $t3, 0x0004($v0) ## 00000004
/* 01368 809E3E98 AC4A0000 */ sw $t2, 0x0000($v0) ## 00000000
.L809E3E9C:
/* 0136C 809E3E9C 8D250150 */ lw $a1, 0x0150($t1) ## 00000150
/* 01370 809E3EA0 8D26016C */ lw $a2, 0x016C($t1) ## 0000016C
/* 01374 809E3EA4 9127014E */ lbu $a3, 0x014E($t1) ## 0000014E
/* 01378 809E3EA8 3C0C809E */ lui $t4, %hi(func_809E3EF8) ## $t4 = 809E0000
/* 0137C 809E3EAC 3C0D809E */ lui $t5, %hi(func_809E3F7C) ## $t5 = 809E0000
/* 01380 809E3EB0 25AD3F7C */ addiu $t5, $t5, %lo(func_809E3F7C) ## $t5 = 809E3F7C
/* 01384 809E3EB4 258C3EF8 */ addiu $t4, $t4, %lo(func_809E3EF8) ## $t4 = 809E3EF8
/* 01388 809E3EB8 AFAC0010 */ sw $t4, 0x0010($sp)
/* 0138C 809E3EBC AFAD0014 */ sw $t5, 0x0014($sp)
/* 01390 809E3EC0 AFA90018 */ sw $t1, 0x0018($sp)
/* 01394 809E3EC4 0C0286B2 */ jal SkelAnime_DrawFlexOpa
/* 01398 809E3EC8 8FA4005C */ lw $a0, 0x005C($sp)
/* 0139C 809E3ECC 8FAE005C */ lw $t6, 0x005C($sp)
/* 013A0 809E3ED0 3C06809E */ lui $a2, %hi(D_809E4180) ## $a2 = 809E0000
/* 013A4 809E3ED4 24C64180 */ addiu $a2, $a2, %lo(D_809E4180) ## $a2 = 809E4180
/* 013A8 809E3ED8 27A40040 */ addiu $a0, $sp, 0x0040 ## $a0 = FFFFFFE8
/* 013AC 809E3EDC 240704E7 */ addiu $a3, $zero, 0x04E7 ## $a3 = 000004E7
/* 013B0 809E3EE0 0C031AD5 */ jal Graph_CloseDisps
/* 013B4 809E3EE4 8DC50000 */ lw $a1, 0x0000($t6) ## 00000000
/* 013B8 809E3EE8 8FBF0024 */ lw $ra, 0x0024($sp)
/* 013BC 809E3EEC 27BD0058 */ addiu $sp, $sp, 0x0058 ## $sp = 00000000
/* 013C0 809E3EF0 03E00008 */ jr $ra
/* 013C4 809E3EF4 00000000 */ nop

View File

@ -1,234 +0,0 @@
glabel EnDaiku_Init
/* 000B0 809E2BE0 27BDFFB0 */ addiu $sp, $sp, 0xFFB0 ## $sp = FFFFFFB0
/* 000B4 809E2BE4 AFBF002C */ sw $ra, 0x002C($sp)
/* 000B8 809E2BE8 AFB00028 */ sw $s0, 0x0028($sp)
/* 000BC 809E2BEC AFA50054 */ sw $a1, 0x0054($sp)
/* 000C0 809E2BF0 8482001C */ lh $v0, 0x001C($a0) ## 0000001C
/* 000C4 809E2BF4 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 000C8 809E2BF8 24080001 */ addiu $t0, $zero, 0x0001 ## $t0 = 00000001
/* 000CC 809E2BFC 30420003 */ andi $v0, $v0, 0x0003 ## $v0 = 00000000
/* 000D0 809E2C00 14400009 */ bne $v0, $zero, .L809E2C28
/* 000D4 809E2C04 00001825 */ or $v1, $zero, $zero ## $v1 = 00000000
/* 000D8 809E2C08 3C048016 */ lui $a0, %hi(gSaveContext)
/* 000DC 809E2C0C 2484E660 */ addiu $a0, %lo(gSaveContext)
/* 000E0 809E2C10 948E0EE6 */ lhu $t6, 0x0EE6($a0) ## 8015F546
/* 000E4 809E2C14 31CF0001 */ andi $t7, $t6, 0x0001 ## $t7 = 00000000
/* 000E8 809E2C18 11E00003 */ beq $t7, $zero, .L809E2C28
/* 000EC 809E2C1C 00000000 */ nop
/* 000F0 809E2C20 1000001C */ beq $zero, $zero, .L809E2C94
/* 000F4 809E2C24 24030001 */ addiu $v1, $zero, 0x0001 ## $v1 = 00000001
.L809E2C28:
/* 000F8 809E2C28 3C048016 */ lui $a0, %hi(gSaveContext)
/* 000FC 809E2C2C 24010001 */ addiu $at, $zero, 0x0001 ## $at = 00000001
/* 00100 809E2C30 14410007 */ bne $v0, $at, .L809E2C50
/* 00104 809E2C34 2484E660 */ addiu $a0, %lo(gSaveContext)
/* 00108 809E2C38 94980EE6 */ lhu $t8, 0x0EE6($a0) ## 8015F546
/* 0010C 809E2C3C 33190002 */ andi $t9, $t8, 0x0002 ## $t9 = 00000000
/* 00110 809E2C40 53200004 */ beql $t9, $zero, .L809E2C54
/* 00114 809E2C44 24010002 */ addiu $at, $zero, 0x0002 ## $at = 00000002
/* 00118 809E2C48 10000012 */ beq $zero, $zero, .L809E2C94
/* 0011C 809E2C4C 24030001 */ addiu $v1, $zero, 0x0001 ## $v1 = 00000001
.L809E2C50:
/* 00120 809E2C50 24010002 */ addiu $at, $zero, 0x0002 ## $at = 00000002
.L809E2C54:
/* 00124 809E2C54 54410008 */ bnel $v0, $at, .L809E2C78
/* 00128 809E2C58 24010003 */ addiu $at, $zero, 0x0003 ## $at = 00000003
/* 0012C 809E2C5C 94890EE6 */ lhu $t1, 0x0EE6($a0) ## 8015F546
/* 00130 809E2C60 312A0004 */ andi $t2, $t1, 0x0004 ## $t2 = 00000000
/* 00134 809E2C64 51400004 */ beql $t2, $zero, .L809E2C78
/* 00138 809E2C68 24010003 */ addiu $at, $zero, 0x0003 ## $at = 00000003
/* 0013C 809E2C6C 10000009 */ beq $zero, $zero, .L809E2C94
/* 00140 809E2C70 24030001 */ addiu $v1, $zero, 0x0001 ## $v1 = 00000001
/* 00144 809E2C74 24010003 */ addiu $at, $zero, 0x0003 ## $at = 00000003
.L809E2C78:
/* 00148 809E2C78 54410007 */ bnel $v0, $at, .L809E2C98
/* 0014C 809E2C7C 24010001 */ addiu $at, $zero, 0x0001 ## $at = 00000001
/* 00150 809E2C80 948B0EE6 */ lhu $t3, 0x0EE6($a0) ## 8015F546
/* 00154 809E2C84 316C0008 */ andi $t4, $t3, 0x0008 ## $t4 = 00000000
/* 00158 809E2C88 51800003 */ beql $t4, $zero, .L809E2C98
/* 0015C 809E2C8C 24010001 */ addiu $at, $zero, 0x0001 ## $at = 00000001
/* 00160 809E2C90 24030001 */ addiu $v1, $zero, 0x0001 ## $v1 = 00000001
.L809E2C94:
/* 00164 809E2C94 24010001 */ addiu $at, $zero, 0x0001 ## $at = 00000001
.L809E2C98:
/* 00168 809E2C98 14610008 */ bne $v1, $at, .L809E2CBC
/* 0016C 809E2C9C 260400B4 */ addiu $a0, $s0, 0x00B4 ## $a0 = 000000B4
/* 00170 809E2CA0 8FAD0054 */ lw $t5, 0x0054($sp)
/* 00174 809E2CA4 2401000C */ addiu $at, $zero, 0x000C ## $at = 0000000C
/* 00178 809E2CA8 85AE00A4 */ lh $t6, 0x00A4($t5) ## 000000A4
/* 0017C 809E2CAC 15C10003 */ bne $t6, $at, .L809E2CBC
/* 00180 809E2CB0 00000000 */ nop
/* 00184 809E2CB4 10000008 */ beq $zero, $zero, .L809E2CD8
/* 00188 809E2CB8 00004025 */ or $t0, $zero, $zero ## $t0 = 00000000
.L809E2CBC:
/* 0018C 809E2CBC 14600006 */ bne $v1, $zero, .L809E2CD8
/* 00190 809E2CC0 8FAF0054 */ lw $t7, 0x0054($sp)
/* 00194 809E2CC4 85F800A4 */ lh $t8, 0x00A4($t7) ## 000000A4
/* 00198 809E2CC8 24010039 */ addiu $at, $zero, 0x0039 ## $at = 00000039
/* 0019C 809E2CCC 57010003 */ bnel $t8, $at, .L809E2CDC
/* 001A0 809E2CD0 861900B8 */ lh $t9, 0x00B8($s0) ## 000000B8
/* 001A4 809E2CD4 00004025 */ or $t0, $zero, $zero ## $t0 = 00000000
.L809E2CD8:
/* 001A8 809E2CD8 861900B8 */ lh $t9, 0x00B8($s0) ## 000000B8
.L809E2CDC:
/* 001AC 809E2CDC A60000B8 */ sh $zero, 0x00B8($s0) ## 000000B8
/* 001B0 809E2CE0 3C068003 */ lui $a2, %hi(ActorShadow_DrawFunc_Circle)
/* 001B4 809E2CE4 3329003F */ andi $t1, $t9, 0x003F ## $t1 = 00000000
/* 001B8 809E2CE8 AE090240 */ sw $t1, 0x0240($s0) ## 00000240
/* 001BC 809E2CEC AFA80044 */ sw $t0, 0x0044($sp)
/* 001C0 809E2CF0 24C6B5EC */ addiu $a2, %lo(ActorShadow_DrawFunc_Circle)
/* 001C4 809E2CF4 24050000 */ addiu $a1, $zero, 0x0000 ## $a1 = 00000000
/* 001C8 809E2CF8 0C00AC78 */ jal ActorShape_Init
/* 001CC 809E2CFC 3C074220 */ lui $a3, 0x4220 ## $a3 = 42200000
/* 001D0 809E2D00 2605014C */ addiu $a1, $s0, 0x014C ## $a1 = 0000014C
/* 001D4 809E2D04 3C060600 */ lui $a2, 0x0600 ## $a2 = 06000000
/* 001D8 809E2D08 260A026C */ addiu $t2, $s0, 0x026C ## $t2 = 0000026C
/* 001DC 809E2D0C 260B02D2 */ addiu $t3, $s0, 0x02D2 ## $t3 = 000002D2
/* 001E0 809E2D10 240C0011 */ addiu $t4, $zero, 0x0011 ## $t4 = 00000011
/* 001E4 809E2D14 AFAC0018 */ sw $t4, 0x0018($sp)
/* 001E8 809E2D18 AFAB0014 */ sw $t3, 0x0014($sp)
/* 001EC 809E2D1C AFAA0010 */ sw $t2, 0x0010($sp)
/* 001F0 809E2D20 24C67958 */ addiu $a2, $a2, 0x7958 ## $a2 = 06007958
/* 001F4 809E2D24 AFA50038 */ sw $a1, 0x0038($sp)
/* 001F8 809E2D28 8FA40054 */ lw $a0, 0x0054($sp)
/* 001FC 809E2D2C 0C0291BE */ jal SkelAnime_InitFlex
/* 00200 809E2D30 00003825 */ or $a3, $zero, $zero ## $a3 = 00000000
/* 00204 809E2D34 8FA80044 */ lw $t0, 0x0044($sp)
/* 00208 809E2D38 8FA40054 */ lw $a0, 0x0054($sp)
/* 0020C 809E2D3C 26050194 */ addiu $a1, $s0, 0x0194 ## $a1 = 00000194
/* 00210 809E2D40 15000005 */ bne $t0, $zero, .L809E2D58
/* 00214 809E2D44 00000000 */ nop
/* 00218 809E2D48 0C00B55C */ jal Actor_Kill
/* 0021C 809E2D4C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00220 809E2D50 10000071 */ beq $zero, $zero, .L809E2F18
/* 00224 809E2D54 8FBF002C */ lw $ra, 0x002C($sp)
.L809E2D58:
/* 00228 809E2D58 0C0170D9 */ jal Collider_InitCylinder
/* 0022C 809E2D5C AFA50034 */ sw $a1, 0x0034($sp)
/* 00230 809E2D60 3C07809E */ lui $a3, %hi(D_809E4060) ## $a3 = 809E0000
/* 00234 809E2D64 8FA50034 */ lw $a1, 0x0034($sp)
/* 00238 809E2D68 24E74060 */ addiu $a3, $a3, %lo(D_809E4060) ## $a3 = 809E4060
/* 0023C 809E2D6C 8FA40054 */ lw $a0, 0x0054($sp)
/* 00240 809E2D70 0C01712B */ jal Collider_SetCylinder
/* 00244 809E2D74 02003025 */ or $a2, $s0, $zero ## $a2 = 00000000
/* 00248 809E2D78 3C05809E */ lui $a1, %hi(D_809E4098) ## $a1 = 809E0000
/* 0024C 809E2D7C 3C06809E */ lui $a2, %hi(D_809E408C) ## $a2 = 809E0000
/* 00250 809E2D80 24C6408C */ addiu $a2, $a2, %lo(D_809E408C) ## $a2 = 809E408C
/* 00254 809E2D84 24A54098 */ addiu $a1, $a1, %lo(D_809E4098) ## $a1 = 809E4098
/* 00258 809E2D88 0C0187BF */ jal func_80061EFC
/* 0025C 809E2D8C 26040098 */ addiu $a0, $s0, 0x0098 ## $a0 = 00000098
/* 00260 809E2D90 3C03809E */ lui $v1, %hi(D_809E40B8) ## $v1 = 809E0000
/* 00264 809E2D94 246340B8 */ addiu $v1, $v1, %lo(D_809E40B8) ## $v1 = 809E40B8
/* 00268 809E2D98 0C028800 */ jal SkelAnime_GetFrameCount
/* 0026C 809E2D9C 8C640000 */ lw $a0, 0x0000($v1) ## 809E40B8
/* 00270 809E2DA0 44822000 */ mtc1 $v0, $f4 ## $f4 = 0.00
/* 00274 809E2DA4 3C03809E */ lui $v1, %hi(D_809E40B8) ## $v1 = 809E0000
/* 00278 809E2DA8 246340B8 */ addiu $v1, $v1, %lo(D_809E40B8) ## $v1 = 809E40B8
/* 0027C 809E2DAC 468021A0 */ cvt.s.w $f6, $f4
/* 00280 809E2DB0 906D0008 */ lbu $t5, 0x0008($v1) ## 809E40C0
/* 00284 809E2DB4 C468000C */ lwc1 $f8, 0x000C($v1) ## 809E40C4
/* 00288 809E2DB8 8C650000 */ lw $a1, 0x0000($v1) ## 809E40B8
/* 0028C 809E2DBC 8FA40038 */ lw $a0, 0x0038($sp)
/* 00290 809E2DC0 3C063F80 */ lui $a2, 0x3F80 ## $a2 = 3F800000
/* 00294 809E2DC4 E7A60010 */ swc1 $f6, 0x0010($sp)
/* 00298 809E2DC8 24070000 */ addiu $a3, $zero, 0x0000 ## $a3 = 00000000
/* 0029C 809E2DCC AFAD0014 */ sw $t5, 0x0014($sp)
/* 002A0 809E2DD0 0C029468 */ jal SkelAnime_ChangeAnim
/* 002A4 809E2DD4 E7A80018 */ swc1 $f8, 0x0018($sp)
/* 002A8 809E2DD8 44800000 */ mtc1 $zero, $f0 ## $f0 = 0.00
/* 002AC 809E2DDC 240E0004 */ addiu $t6, $zero, 0x0004 ## $t6 = 00000004
/* 002B0 809E2DE0 AFAE0014 */ sw $t6, 0x0014($sp)
/* 002B4 809E2DE4 44060000 */ mfc1 $a2, $f0
/* 002B8 809E2DE8 44070000 */ mfc1 $a3, $f0
/* 002BC 809E2DEC 8FA40054 */ lw $a0, 0x0054($sp)
/* 002C0 809E2DF0 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000
/* 002C4 809E2DF4 0C00B92D */ jal func_8002E4B4
/* 002C8 809E2DF8 E7A00010 */ swc1 $f0, 0x0010($sp)
/* 002CC 809E2DFC 8A090030 */ lwl $t1, 0x0030($s0) ## 00000030
/* 002D0 809E2E00 9A090033 */ lwr $t1, 0x0033($s0) ## 00000033
/* 002D4 809E2E04 8E0B0024 */ lw $t3, 0x0024($s0) ## 00000024
/* 002D8 809E2E08 3C0140A0 */ lui $at, 0x40A0 ## $at = 40A00000
/* 002DC 809E2E0C AA090338 */ swl $t1, 0x0338($s0) ## 00000338
/* 002E0 809E2E10 BA09033B */ swr $t1, 0x033B($s0) ## 0000033B
/* 002E4 809E2E14 AE0B0340 */ sw $t3, 0x0340($s0) ## 00000340
/* 002E8 809E2E18 44815000 */ mtc1 $at, $f10 ## $f10 = 5.00
/* 002EC 809E2E1C 96090034 */ lhu $t1, 0x0034($s0) ## 00000034
/* 002F0 809E2E20 8E0B002C */ lw $t3, 0x002C($s0) ## 0000002C
/* 002F4 809E2E24 8E0A0028 */ lw $t2, 0x0028($s0) ## 00000028
/* 002F8 809E2E28 240F0006 */ addiu $t7, $zero, 0x0006 ## $t7 = 00000006
/* 002FC 809E2E2C 2418FFFF */ addiu $t8, $zero, 0xFFFF ## $t8 = FFFFFFFF
/* 00300 809E2E30 A20F001F */ sb $t7, 0x001F($s0) ## 0000001F
/* 00304 809E2E34 AE1801F4 */ sw $t8, 0x01F4($s0) ## 000001F4
/* 00308 809E2E38 E60A01F0 */ swc1 $f10, 0x01F0($s0) ## 000001F0
/* 0030C 809E2E3C A609033C */ sh $t1, 0x033C($s0) ## 0000033C
/* 00310 809E2E40 AE0B0348 */ sw $t3, 0x0348($s0) ## 00000348
/* 00314 809E2E44 AE0A0344 */ sw $t2, 0x0344($s0) ## 00000344
/* 00318 809E2E48 8FAC0054 */ lw $t4, 0x0054($sp)
/* 0031C 809E2E4C 2401000C */ addiu $at, $zero, 0x000C ## $at = 0000000C
/* 00320 809E2E50 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00324 809E2E54 858D00A4 */ lh $t5, 0x00A4($t4) ## 000000A4
/* 00328 809E2E58 24050001 */ addiu $a1, $zero, 0x0001 ## $a1 = 00000001
/* 0032C 809E2E5C 55A1000B */ bnel $t5, $at, .L809E2E8C
/* 00330 809E2E60 8602001C */ lh $v0, 0x001C($s0) ## 0000001C
/* 00334 809E2E64 0C278ACC */ jal func_809E2B30
/* 00338 809E2E68 260601F4 */ addiu $a2, $s0, 0x01F4 ## $a2 = 000001F4
/* 0033C 809E2E6C 8E0E023C */ lw $t6, 0x023C($s0) ## 0000023C
/* 00340 809E2E70 3C18809E */ lui $t8, %hi(func_809E336C) ## $t8 = 809E0000
/* 00344 809E2E74 2718336C */ addiu $t8, $t8, %lo(func_809E336C) ## $t8 = 809E336C
/* 00348 809E2E78 35CF0006 */ ori $t7, $t6, 0x0006 ## $t7 = 00000006
/* 0034C 809E2E7C AE0F023C */ sw $t7, 0x023C($s0) ## 0000023C
/* 00350 809E2E80 10000024 */ beq $zero, $zero, .L809E2F14
/* 00354 809E2E84 AE180190 */ sw $t8, 0x0190($s0) ## 00000190
/* 00358 809E2E88 8602001C */ lh $v0, 0x001C($s0) ## 0000001C
.L809E2E8C:
/* 0035C 809E2E8C 24010001 */ addiu $at, $zero, 0x0001 ## $at = 00000001
/* 00360 809E2E90 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00364 809E2E94 30420003 */ andi $v0, $v0, 0x0003 ## $v0 = 00000000
/* 00368 809E2E98 10410004 */ beq $v0, $at, .L809E2EAC
/* 0036C 809E2E9C 24050004 */ addiu $a1, $zero, 0x0004 ## $a1 = 00000004
/* 00370 809E2EA0 24010003 */ addiu $at, $zero, 0x0003 ## $at = 00000003
/* 00374 809E2EA4 14410007 */ bne $v0, $at, .L809E2EC4
/* 00378 809E2EA8 260601F4 */ addiu $a2, $s0, 0x01F4 ## $a2 = 000001F4
.L809E2EAC:
/* 0037C 809E2EAC 0C278ACC */ jal func_809E2B30
/* 00380 809E2EB0 260601F4 */ addiu $a2, $s0, 0x01F4 ## $a2 = 000001F4
/* 00384 809E2EB4 8E19023C */ lw $t9, 0x023C($s0) ## 0000023C
/* 00388 809E2EB8 37290002 */ ori $t1, $t9, 0x0002 ## $t1 = 00000002
/* 0038C 809E2EBC 10000007 */ beq $zero, $zero, .L809E2EDC
/* 00390 809E2EC0 AE09023C */ sw $t1, 0x023C($s0) ## 0000023C
.L809E2EC4:
/* 00394 809E2EC4 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00398 809E2EC8 0C278ACC */ jal func_809E2B30
/* 0039C 809E2ECC 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
/* 003A0 809E2ED0 8E0A023C */ lw $t2, 0x023C($s0) ## 0000023C
/* 003A4 809E2ED4 354B0006 */ ori $t3, $t2, 0x0006 ## $t3 = 00000006
/* 003A8 809E2ED8 AE0B023C */ sw $t3, 0x023C($s0) ## 0000023C
.L809E2EDC:
/* 003AC 809E2EDC 0C03F66B */ jal Math_Rand_ZeroOne
## Rand.Next() float
/* 003B0 809E2EE0 00000000 */ nop
/* 003B4 809E2EE4 C610015C */ lwc1 $f16, 0x015C($s0) ## 0000015C
/* 003B8 809E2EE8 3C0E809E */ lui $t6, %hi(func_809E3338) ## $t6 = 809E0000
/* 003BC 809E2EEC 25CE3338 */ addiu $t6, $t6, %lo(func_809E3338) ## $t6 = 809E3338
/* 003C0 809E2EF0 46100482 */ mul.s $f18, $f0, $f16
/* 003C4 809E2EF4 AE0E0190 */ sw $t6, 0x0190($s0) ## 00000190
/* 003C8 809E2EF8 4600910D */ trunc.w.s $f4, $f18
/* 003CC 809E2EFC 440D2000 */ mfc1 $t5, $f4
/* 003D0 809E2F00 00000000 */ nop
/* 003D4 809E2F04 448D3000 */ mtc1 $t5, $f6 ## $f6 = 0.00
/* 003D8 809E2F08 00000000 */ nop
/* 003DC 809E2F0C 46803220 */ cvt.s.w $f8, $f6
/* 003E0 809E2F10 E6080164 */ swc1 $f8, 0x0164($s0) ## 00000164
.L809E2F14:
/* 003E4 809E2F14 8FBF002C */ lw $ra, 0x002C($sp)
.L809E2F18:
/* 003E8 809E2F18 8FB00028 */ lw $s0, 0x0028($sp)
/* 003EC 809E2F1C 27BD0050 */ addiu $sp, $sp, 0x0050 ## $sp = 00000000
/* 003F0 809E2F20 03E00008 */ jr $ra
/* 003F4 809E2F24 00000000 */ nop

View File

@ -1,77 +0,0 @@
glabel EnDaiku_Update
/* 01164 809E3C94 27BDFFD0 */ addiu $sp, $sp, 0xFFD0 ## $sp = FFFFFFD0
/* 01168 809E3C98 AFBF001C */ sw $ra, 0x001C($sp)
/* 0116C 809E3C9C AFB00018 */ sw $s0, 0x0018($sp)
/* 01170 809E3CA0 AFA50034 */ sw $a1, 0x0034($sp)
/* 01174 809E3CA4 8CAF1C44 */ lw $t7, 0x1C44($a1) ## 00001C44
/* 01178 809E3CA8 24010003 */ addiu $at, $zero, 0x0003 ## $at = 00000003
/* 0117C 809E3CAC 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 01180 809E3CB0 AFAF0024 */ sw $t7, 0x0024($sp)
/* 01184 809E3CB4 8C9801F4 */ lw $t8, 0x01F4($a0) ## 000001F4
/* 01188 809E3CB8 5701000E */ bnel $t8, $at, .L809E3CF4
/* 0118C 809E3CBC 26060194 */ addiu $a2, $s0, 0x0194 ## $a2 = 00000194
/* 01190 809E3CC0 C4840164 */ lwc1 $f4, 0x0164($a0) ## 00000164
/* 01194 809E3CC4 24010006 */ addiu $at, $zero, 0x0006 ## $at = 00000006
/* 01198 809E3CC8 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 0119C 809E3CCC 4600218D */ trunc.w.s $f6, $f4
/* 011A0 809E3CD0 44023000 */ mfc1 $v0, $f6
/* 011A4 809E3CD4 00000000 */ nop
/* 011A8 809E3CD8 10410003 */ beq $v0, $at, .L809E3CE8
/* 011AC 809E3CDC 2401000F */ addiu $at, $zero, 0x000F ## $at = 0000000F
/* 011B0 809E3CE0 54410004 */ bnel $v0, $at, .L809E3CF4
/* 011B4 809E3CE4 26060194 */ addiu $a2, $s0, 0x0194 ## $a2 = 00000194
.L809E3CE8:
/* 011B8 809E3CE8 0C00BE0A */ jal Audio_PlayActorSound2
/* 011BC 809E3CEC 240538B8 */ addiu $a1, $zero, 0x38B8 ## $a1 = 000038B8
/* 011C0 809E3CF0 26060194 */ addiu $a2, $s0, 0x0194 ## $a2 = 00000194
.L809E3CF4:
/* 011C4 809E3CF4 00C02825 */ or $a1, $a2, $zero ## $a1 = 00000194
/* 011C8 809E3CF8 AFA60020 */ sw $a2, 0x0020($sp)
/* 011CC 809E3CFC 0C0189B7 */ jal Collider_CylinderUpdate
/* 011D0 809E3D00 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 011D4 809E3D04 8FA40034 */ lw $a0, 0x0034($sp)
/* 011D8 809E3D08 3C010001 */ lui $at, 0x0001 ## $at = 00010000
/* 011DC 809E3D0C 34211E60 */ ori $at, $at, 0x1E60 ## $at = 00011E60
/* 011E0 809E3D10 8FA60020 */ lw $a2, 0x0020($sp)
/* 011E4 809E3D14 0C017713 */ jal CollisionCheck_SetOC
## CollisionCheck_setOT
/* 011E8 809E3D18 00812821 */ addu $a1, $a0, $at
/* 011EC 809E3D1C 8E190190 */ lw $t9, 0x0190($s0) ## 00000190
/* 011F0 809E3D20 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 011F4 809E3D24 8FA50034 */ lw $a1, 0x0034($sp)
/* 011F8 809E3D28 0320F809 */ jalr $ra, $t9
/* 011FC 809E3D2C 00000000 */ nop
/* 01200 809E3D30 8E02023C */ lw $v0, 0x023C($s0) ## 0000023C
/* 01204 809E3D34 8FA30024 */ lw $v1, 0x0024($sp)
/* 01208 809E3D38 30480002 */ andi $t0, $v0, 0x0002 ## $t0 = 00000000
/* 0120C 809E3D3C 51000016 */ beql $t0, $zero, .L809E3D98
/* 01210 809E3D40 8FBF001C */ lw $ra, 0x001C($sp)
/* 01214 809E3D44 C4680038 */ lwc1 $f8, 0x0038($v1) ## 00000038
/* 01218 809E3D48 30490004 */ andi $t1, $v0, 0x0004 ## $t1 = 00000000
/* 0121C 809E3D4C 24070004 */ addiu $a3, $zero, 0x0004 ## $a3 = 00000004
/* 01220 809E3D50 E608025C */ swc1 $f8, 0x025C($s0) ## 0000025C
/* 01224 809E3D54 C46A003C */ lwc1 $f10, 0x003C($v1) ## 0000003C
/* 01228 809E3D58 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 0122C 809E3D5C 26050244 */ addiu $a1, $s0, 0x0244 ## $a1 = 00000244
/* 01230 809E3D60 E60A0260 */ swc1 $f10, 0x0260($s0) ## 00000260
/* 01234 809E3D64 C4700040 */ lwc1 $f16, 0x0040($v1) ## 00000040
/* 01238 809E3D68 00003025 */ or $a2, $zero, $zero ## $a2 = 00000000
/* 0123C 809E3D6C 11200007 */ beq $t1, $zero, .L809E3D8C
/* 01240 809E3D70 E6100264 */ swc1 $f16, 0x0264($s0) ## 00000264
/* 01244 809E3D74 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 01248 809E3D78 26050244 */ addiu $a1, $s0, 0x0244 ## $a1 = 00000244
/* 0124C 809E3D7C 0C00D285 */ jal func_80034A14
/* 01250 809E3D80 00003025 */ or $a2, $zero, $zero ## $a2 = 00000000
/* 01254 809E3D84 10000004 */ beq $zero, $zero, .L809E3D98
/* 01258 809E3D88 8FBF001C */ lw $ra, 0x001C($sp)
.L809E3D8C:
/* 0125C 809E3D8C 0C00D285 */ jal func_80034A14
/* 01260 809E3D90 24070002 */ addiu $a3, $zero, 0x0002 ## $a3 = 00000002
/* 01264 809E3D94 8FBF001C */ lw $ra, 0x001C($sp)
.L809E3D98:
/* 01268 809E3D98 8FB00018 */ lw $s0, 0x0018($sp)
/* 0126C 809E3D9C 27BD0030 */ addiu $sp, $sp, 0x0030 ## $sp = 00000000
/* 01270 809E3DA0 03E00008 */ jr $ra
/* 01274 809E3DA4 00000000 */ nop

View File

@ -1,4 +1,4 @@
glabel func_809E3068
glabel EnDaiku_UpdateText
/* 00538 809E3068 27BDFFC8 */ addiu $sp, $sp, 0xFFC8 ## $sp = FFFFFFC8
/* 0053C 809E306C AFBF001C */ sw $ra, 0x001C($sp)
/* 00540 809E3070 AFB00018 */ sw $s0, 0x0018($sp)
@ -7,7 +7,7 @@ glabel func_809E3068
/* 0054C 809E307C 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00550 809E3080 55C10006 */ bnel $t6, $at, .L809E309C
/* 00554 809E3084 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00558 809E3088 0C278BD4 */ jal func_809E2F50
/* 00558 809E3088 0C278BD4 */ jal EnDaiku_UpdateTalking
/* 0055C 809E308C 00000000 */ nop
/* 00560 809E3090 100000A4 */ beq $zero, $zero, .L809E3324
/* 00564 809E3094 AE0201E4 */ sw $v0, 0x01E4($s0) ## 000001E4

View File

@ -1,50 +0,0 @@
glabel func_809E2B30
/* 00000 809E2B30 27BDFFC8 */ addiu $sp, $sp, 0xFFC8 ## $sp = FFFFFFC8
/* 00004 809E2B34 AFBF0024 */ sw $ra, 0x0024($sp)
/* 00008 809E2B38 AFA40038 */ sw $a0, 0x0038($sp)
/* 0000C 809E2B3C AFA60040 */ sw $a2, 0x0040($sp)
/* 00010 809E2B40 8CC20000 */ lw $v0, 0x0000($a2) ## 00000000
/* 00014 809E2B44 3C18809E */ lui $t8, %hi(D_809E40B8) ## $t8 = 809E0000
/* 00018 809E2B48 271840B8 */ addiu $t8, $t8, %lo(D_809E40B8) ## $t8 = 809E40B8
/* 0001C 809E2B4C 04400003 */ bltz $v0, .L809E2B5C
/* 00020 809E2B50 00057900 */ sll $t7, $a1, 4
/* 00024 809E2B54 14A20004 */ bne $a1, $v0, .L809E2B68
/* 00028 809E2B58 0005C900 */ sll $t9, $a1, 4
.L809E2B5C:
/* 0002C 809E2B5C 44800000 */ mtc1 $zero, $f0 ## $f0 = 0.00
/* 00030 809E2B60 10000005 */ beq $zero, $zero, .L809E2B78
/* 00034 809E2B64 01F81821 */ addu $v1, $t7, $t8
.L809E2B68:
/* 00038 809E2B68 3C08809E */ lui $t0, %hi(D_809E40B8) ## $t0 = 809E0000
/* 0003C 809E2B6C 250840B8 */ addiu $t0, $t0, %lo(D_809E40B8) ## $t0 = 809E40B8
/* 00040 809E2B70 03281821 */ addu $v1, $t9, $t0
/* 00044 809E2B74 C460000C */ lwc1 $f0, 0x000C($v1) ## 0000000C
.L809E2B78:
/* 00048 809E2B78 8C640000 */ lw $a0, 0x0000($v1) ## 00000000
/* 0004C 809E2B7C AFA3002C */ sw $v1, 0x002C($sp)
/* 00050 809E2B80 AFA5003C */ sw $a1, 0x003C($sp)
/* 00054 809E2B84 0C028800 */ jal SkelAnime_GetFrameCount
/* 00058 809E2B88 E7A00034 */ swc1 $f0, 0x0034($sp)
/* 0005C 809E2B8C 44822000 */ mtc1 $v0, $f4 ## $f4 = 0.00
/* 00060 809E2B90 8FA3002C */ lw $v1, 0x002C($sp)
/* 00064 809E2B94 C7A00034 */ lwc1 $f0, 0x0034($sp)
/* 00068 809E2B98 468021A0 */ cvt.s.w $f6, $f4
/* 0006C 809E2B9C 8FA40038 */ lw $a0, 0x0038($sp)
/* 00070 809E2BA0 90690008 */ lbu $t1, 0x0008($v1) ## 00000008
/* 00074 809E2BA4 3C063F80 */ lui $a2, 0x3F80 ## $a2 = 3F800000
/* 00078 809E2BA8 24070000 */ addiu $a3, $zero, 0x0000 ## $a3 = 00000000
/* 0007C 809E2BAC 8C650000 */ lw $a1, 0x0000($v1) ## 00000000
/* 00080 809E2BB0 E7A60010 */ swc1 $f6, 0x0010($sp)
/* 00084 809E2BB4 E7A00018 */ swc1 $f0, 0x0018($sp)
/* 00088 809E2BB8 2484014C */ addiu $a0, $a0, 0x014C ## $a0 = 0000014C
/* 0008C 809E2BBC 0C029468 */ jal SkelAnime_ChangeAnim
/* 00090 809E2BC0 AFA90014 */ sw $t1, 0x0014($sp)
/* 00094 809E2BC4 8FAA003C */ lw $t2, 0x003C($sp)
/* 00098 809E2BC8 8FAB0040 */ lw $t3, 0x0040($sp)
/* 0009C 809E2BCC AD6A0000 */ sw $t2, 0x0000($t3) ## 00000000
/* 000A0 809E2BD0 8FBF0024 */ lw $ra, 0x0024($sp)
/* 000A4 809E2BD4 27BD0038 */ addiu $sp, $sp, 0x0038 ## $sp = 00000000
/* 000A8 809E2BD8 03E00008 */ jr $ra
/* 000AC 809E2BDC 00000000 */ nop

View File

@ -1,77 +0,0 @@
glabel func_809E2F50
/* 00420 809E2F50 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0
/* 00424 809E2F54 AFBF0014 */ sw $ra, 0x0014($sp)
/* 00428 809E2F58 AFA40020 */ sw $a0, 0x0020($sp)
/* 0042C 809E2F5C 24030002 */ addiu $v1, $zero, 0x0002 ## $v1 = 00000002
/* 00430 809E2F60 AFA3001C */ sw $v1, 0x001C($sp)
/* 00434 809E2F64 24A420D8 */ addiu $a0, $a1, 0x20D8 ## $a0 = 000020D8
/* 00438 809E2F68 0C042F6F */ jal func_8010BDBC
/* 0043C 809E2F6C AFA50024 */ sw $a1, 0x0024($sp)
/* 00440 809E2F70 24010006 */ addiu $at, $zero, 0x0006 ## $at = 00000006
/* 00444 809E2F74 8FA3001C */ lw $v1, 0x001C($sp)
/* 00448 809E2F78 14410036 */ bne $v0, $at, .L809E3054
/* 0044C 809E2F7C 8FA60024 */ lw $a2, 0x0024($sp)
/* 00450 809E2F80 84C200A4 */ lh $v0, 0x00A4($a2) ## 000000A4
/* 00454 809E2F84 2401000C */ addiu $at, $zero, 0x000C ## $at = 0000000C
/* 00458 809E2F88 00C02025 */ or $a0, $a2, $zero ## $a0 = 00000000
/* 0045C 809E2F8C 54410016 */ bnel $v0, $at, .L809E2FE8
/* 00460 809E2F90 24010039 */ addiu $at, $zero, 0x0039 ## $at = 00000039
/* 00464 809E2F94 AFA3001C */ sw $v1, 0x001C($sp)
/* 00468 809E2F98 0C041AF2 */ jal func_80106BC8
/* 0046C 809E2F9C AFA60024 */ sw $a2, 0x0024($sp)
/* 00470 809E2FA0 8FA3001C */ lw $v1, 0x001C($sp)
/* 00474 809E2FA4 8FA60024 */ lw $a2, 0x0024($sp)
/* 00478 809E2FA8 1040002A */ beq $v0, $zero, .L809E3054
/* 0047C 809E2FAC 8FA70020 */ lw $a3, 0x0020($sp)
/* 00480 809E2FB0 94EE010E */ lhu $t6, 0x010E($a3) ## 0000010E
/* 00484 809E2FB4 24016007 */ addiu $at, $zero, 0x6007 ## $at = 00006007
/* 00488 809E2FB8 3C0F809E */ lui $t7, %hi(func_809E349C) ## $t7 = 809E0000
/* 0048C 809E2FBC 15C10006 */ bne $t6, $at, .L809E2FD8
/* 00490 809E2FC0 25EF349C */ addiu $t7, $t7, %lo(func_809E349C) ## $t7 = 809E349C
/* 00494 809E2FC4 00C02025 */ or $a0, $a2, $zero ## $a0 = 00000000
/* 00498 809E2FC8 0C00B2DD */ jal Flags_SetSwitch
/* 0049C 809E2FCC 8CE50240 */ lw $a1, 0x0240($a3) ## 00000240
/* 004A0 809E2FD0 10000020 */ beq $zero, $zero, .L809E3054
/* 004A4 809E2FD4 00001825 */ or $v1, $zero, $zero ## $v1 = 00000000
.L809E2FD8:
/* 004A8 809E2FD8 ACEF0190 */ sw $t7, 0x0190($a3) ## 00000190
/* 004AC 809E2FDC 1000001D */ beq $zero, $zero, .L809E3054
/* 004B0 809E2FE0 24030003 */ addiu $v1, $zero, 0x0003 ## $v1 = 00000003
/* 004B4 809E2FE4 24010039 */ addiu $at, $zero, 0x0039 ## $at = 00000039
.L809E2FE8:
/* 004B8 809E2FE8 1441001A */ bne $v0, $at, .L809E3054
/* 004BC 809E2FEC 00C02025 */ or $a0, $a2, $zero ## $a0 = 00000000
/* 004C0 809E2FF0 0C041AF2 */ jal func_80106BC8
/* 004C4 809E2FF4 AFA3001C */ sw $v1, 0x001C($sp)
/* 004C8 809E2FF8 8FA3001C */ lw $v1, 0x001C($sp)
/* 004CC 809E2FFC 10400015 */ beq $v0, $zero, .L809E3054
/* 004D0 809E3000 8FA70020 */ lw $a3, 0x0020($sp)
/* 004D4 809E3004 94E2010E */ lhu $v0, 0x010E($a3) ## 0000010E
/* 004D8 809E3008 24016061 */ addiu $at, $zero, 0x6061 ## $at = 00006061
/* 004DC 809E300C 00001825 */ or $v1, $zero, $zero ## $v1 = 00000000
/* 004E0 809E3010 10410005 */ beq $v0, $at, .L809E3028
/* 004E4 809E3014 24016064 */ addiu $at, $zero, 0x6064 ## $at = 00006064
/* 004E8 809E3018 10410009 */ beq $v0, $at, .L809E3040
/* 004EC 809E301C 00000000 */ nop
/* 004F0 809E3020 1000000C */ beq $zero, $zero, .L809E3054
/* 004F4 809E3024 00000000 */ nop
.L809E3028:
/* 004F8 809E3028 3C028016 */ lui $v0, %hi(gSaveContext)
/* 004FC 809E302C 2442E660 */ addiu $v0, %lo(gSaveContext)
/* 00500 809E3030 94580F26 */ lhu $t8, 0x0F26($v0) ## 8015F586
/* 00504 809E3034 37190040 */ ori $t9, $t8, 0x0040 ## $t9 = 00000040
/* 00508 809E3038 10000006 */ beq $zero, $zero, .L809E3054
/* 0050C 809E303C A4590F26 */ sh $t9, 0x0F26($v0) ## 8015F586
.L809E3040:
/* 00510 809E3040 3C028016 */ lui $v0, %hi(gSaveContext)
/* 00514 809E3044 2442E660 */ addiu $v0, %lo(gSaveContext)
/* 00518 809E3048 94480F26 */ lhu $t0, 0x0F26($v0) ## 8015F586
/* 0051C 809E304C 35090100 */ ori $t1, $t0, 0x0100 ## $t1 = 00000100
/* 00520 809E3050 A4490F26 */ sh $t1, 0x0F26($v0) ## 8015F586
.L809E3054:
/* 00524 809E3054 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00528 809E3058 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000
/* 0052C 809E305C 00601025 */ or $v0, $v1, $zero ## $v0 = 00000000
/* 00530 809E3060 03E00008 */ jr $ra
/* 00534 809E3064 00000000 */ nop

View File

@ -1,15 +0,0 @@
glabel func_809E3338
/* 00808 809E3338 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 0080C 809E333C AFBF0014 */ sw $ra, 0x0014($sp)
/* 00810 809E3340 AFA40018 */ sw $a0, 0x0018($sp)
/* 00814 809E3344 AFA5001C */ sw $a1, 0x001C($sp)
/* 00818 809E3348 0C02927F */ jal SkelAnime_FrameUpdateMatrix
/* 0081C 809E334C 2484014C */ addiu $a0, $a0, 0x014C ## $a0 = 0000014C
/* 00820 809E3350 8FA40018 */ lw $a0, 0x0018($sp)
/* 00824 809E3354 0C278C1A */ jal func_809E3068
/* 00828 809E3358 8FA5001C */ lw $a1, 0x001C($sp)
/* 0082C 809E335C 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00830 809E3360 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 00834 809E3364 03E00008 */ jr $ra
/* 00838 809E3368 00000000 */ nop

View File

@ -1,58 +0,0 @@
glabel func_809E336C
/* 0083C 809E336C 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0
/* 00840 809E3370 AFBF001C */ sw $ra, 0x001C($sp)
/* 00844 809E3374 AFB00018 */ sw $s0, 0x0018($sp)
/* 00848 809E3378 AFA50024 */ sw $a1, 0x0024($sp)
/* 0084C 809E337C 8C8E023C */ lw $t6, 0x023C($a0) ## 0000023C
/* 00850 809E3380 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00854 809E3384 31CF0008 */ andi $t7, $t6, 0x0008 ## $t7 = 00000000
/* 00858 809E3388 15E00003 */ bne $t7, $zero, .L809E3398
/* 0085C 809E338C 00000000 */ nop
/* 00860 809E3390 0C278C1A */ jal func_809E3068
/* 00864 809E3394 00000000 */ nop
.L809E3398:
/* 00868 809E3398 0C02927F */ jal SkelAnime_FrameUpdateMatrix
/* 0086C 809E339C 2604014C */ addiu $a0, $s0, 0x014C ## $a0 = 0000014C
/* 00870 809E33A0 8FA40024 */ lw $a0, 0x0024($sp)
/* 00874 809E33A4 24050197 */ addiu $a1, $zero, 0x0197 ## $a1 = 00000197
/* 00878 809E33A8 24060005 */ addiu $a2, $zero, 0x0005 ## $a2 = 00000005
/* 0087C 809E33AC 0C00CB0F */ jal Actor_Find
/* 00880 809E33B0 24841C24 */ addiu $a0, $a0, 0x1C24 ## $a0 = 00001C24
/* 00884 809E33B4 1440000E */ bne $v0, $zero, .L809E33F0
/* 00888 809E33B8 2401FFF7 */ addiu $at, $zero, 0xFFF7 ## $at = FFFFFFF7
/* 0088C 809E33BC 8E18023C */ lw $t8, 0x023C($s0) ## 0000023C
/* 00890 809E33C0 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00894 809E33C4 24050002 */ addiu $a1, $zero, 0x0002 ## $a1 = 00000002
/* 00898 809E33C8 37190010 */ ori $t9, $t8, 0x0010 ## $t9 = 00000010
/* 0089C 809E33CC AE19023C */ sw $t9, 0x023C($s0) ## 0000023C
/* 008A0 809E33D0 03214824 */ and $t1, $t9, $at
/* 008A4 809E33D4 AE09023C */ sw $t1, 0x023C($s0) ## 0000023C
/* 008A8 809E33D8 0C278ACC */ jal func_809E2B30
/* 008AC 809E33DC 260601F4 */ addiu $a2, $s0, 0x01F4 ## $a2 = 000001F4
/* 008B0 809E33E0 3C0A809E */ lui $t2, %hi(func_809E3438) ## $t2 = 809E0000
/* 008B4 809E33E4 254A3438 */ addiu $t2, $t2, %lo(func_809E3438) ## $t2 = 809E3438
/* 008B8 809E33E8 1000000E */ beq $zero, $zero, .L809E3424
/* 008BC 809E33EC AE0A0190 */ sw $t2, 0x0190($s0) ## 00000190
.L809E33F0:
/* 008C0 809E33F0 8E03023C */ lw $v1, 0x023C($s0) ## 0000023C
/* 008C4 809E33F4 306B0008 */ andi $t3, $v1, 0x0008 ## $t3 = 00000000
/* 008C8 809E33F8 5560000B */ bnel $t3, $zero, .L809E3428
/* 008CC 809E33FC 8FBF001C */ lw $ra, 0x001C($sp)
/* 008D0 809E3400 844C0318 */ lh $t4, 0x0318($v0) ## 00000318
/* 008D4 809E3404 346D0008 */ ori $t5, $v1, 0x0008 ## $t5 = 00000008
/* 008D8 809E3408 55800007 */ bnel $t4, $zero, .L809E3428
/* 008DC 809E340C 8FBF001C */ lw $ra, 0x001C($sp)
/* 008E0 809E3410 8E0E0004 */ lw $t6, 0x0004($s0) ## 00000004
/* 008E4 809E3414 2401FFF6 */ addiu $at, $zero, 0xFFF6 ## $at = FFFFFFF6
/* 008E8 809E3418 AE0D023C */ sw $t5, 0x023C($s0) ## 0000023C
/* 008EC 809E341C 01C17824 */ and $t7, $t6, $at
/* 008F0 809E3420 AE0F0004 */ sw $t7, 0x0004($s0) ## 00000004
.L809E3424:
/* 008F4 809E3424 8FBF001C */ lw $ra, 0x001C($sp)
.L809E3428:
/* 008F8 809E3428 8FB00018 */ lw $s0, 0x0018($sp)
/* 008FC 809E342C 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000
/* 00900 809E3430 03E00008 */ jr $ra
/* 00904 809E3434 00000000 */ nop

View File

@ -1,29 +0,0 @@
glabel func_809E3438
/* 00908 809E3438 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 0090C 809E343C AFBF0014 */ sw $ra, 0x0014($sp)
/* 00910 809E3440 00803025 */ or $a2, $a0, $zero ## $a2 = 00000000
/* 00914 809E3444 AFA5001C */ sw $a1, 0x001C($sp)
/* 00918 809E3448 AFA60018 */ sw $a2, 0x0018($sp)
/* 0091C 809E344C 0C02927F */ jal SkelAnime_FrameUpdateMatrix
/* 00920 809E3450 2484014C */ addiu $a0, $a0, 0x014C ## $a0 = 0000014C
/* 00924 809E3454 8FA60018 */ lw $a2, 0x0018($sp)
/* 00928 809E3458 8FA4001C */ lw $a0, 0x001C($sp)
/* 0092C 809E345C 84C5001C */ lh $a1, 0x001C($a2) ## 0000001C
/* 00930 809E3460 00052A03 */ sra $a1, $a1, 8
/* 00934 809E3464 0C00B2D0 */ jal Flags_GetSwitch
/* 00938 809E3468 30A5003F */ andi $a1, $a1, 0x003F ## $a1 = 00000000
/* 0093C 809E346C 10400007 */ beq $v0, $zero, .L809E348C
/* 00940 809E3470 8FA60018 */ lw $a2, 0x0018($sp)
/* 00944 809E3474 8CCE0004 */ lw $t6, 0x0004($a2) ## 00000004
/* 00948 809E3478 00C02025 */ or $a0, $a2, $zero ## $a0 = 00000000
/* 0094C 809E347C 35CF0009 */ ori $t7, $t6, 0x0009 ## $t7 = 00000009
/* 00950 809E3480 ACCF0004 */ sw $t7, 0x0004($a2) ## 00000004
/* 00954 809E3484 0C278C1A */ jal func_809E3068
/* 00958 809E3488 8FA5001C */ lw $a1, 0x001C($sp)
.L809E348C:
/* 0095C 809E348C 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00960 809E3490 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 00964 809E3494 03E00008 */ jr $ra
/* 00968 809E3498 00000000 */ nop

View File

@ -1,139 +0,0 @@
.late_rodata
glabel D_809E41B0
.word 0x4622F983
.text
glabel func_809E349C
/* 0096C 809E349C 27BDFFA8 */ addiu $sp, $sp, 0xFFA8 ## $sp = FFFFFFA8
/* 00970 809E34A0 AFB00038 */ sw $s0, 0x0038($sp)
/* 00974 809E34A4 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00978 809E34A8 AFBF0054 */ sw $ra, 0x0054($sp)
/* 0097C 809E34AC AFB20040 */ sw $s2, 0x0040($sp)
/* 00980 809E34B0 00A09025 */ or $s2, $a1, $zero ## $s2 = 00000000
/* 00984 809E34B4 AFB60050 */ sw $s6, 0x0050($sp)
/* 00988 809E34B8 AFB5004C */ sw $s5, 0x004C($sp)
/* 0098C 809E34BC AFB40048 */ sw $s4, 0x0048($sp)
/* 00990 809E34C0 AFB30044 */ sw $s3, 0x0044($sp)
/* 00994 809E34C4 AFB1003C */ sw $s1, 0x003C($sp)
/* 00998 809E34C8 F7BA0030 */ sdc1 $f26, 0x0030($sp)
/* 0099C 809E34CC F7B80028 */ sdc1 $f24, 0x0028($sp)
/* 009A0 809E34D0 F7B60020 */ sdc1 $f22, 0x0020($sp)
/* 009A4 809E34D4 F7B40018 */ sdc1 $f20, 0x0018($sp)
/* 009A8 809E34D8 0C03D719 */ jal func_800F5C64
/* 009AC 809E34DC 24040051 */ addiu $a0, $zero, 0x0051 ## $a0 = 00000051
/* 009B0 809E34E0 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 009B4 809E34E4 24050003 */ addiu $a1, $zero, 0x0003 ## $a1 = 00000003
/* 009B8 809E34E8 0C278ACC */ jal func_809E2B30
/* 009BC 809E34EC 260601F4 */ addiu $a2, $s0, 0x01F4 ## $a2 = 000001F4
/* 009C0 809E34F0 8E0E023C */ lw $t6, 0x023C($s0) ## 0000023C
/* 009C4 809E34F4 2401FFF9 */ addiu $at, $zero, 0xFFF9 ## $at = FFFFFFF9
/* 009C8 809E34F8 8619001C */ lh $t9, 0x001C($s0) ## 0000001C
/* 009CC 809E34FC 3C028016 */ lui $v0, %hi(gSaveContext)
/* 009D0 809E3500 01C17824 */ and $t7, $t6, $at
/* 009D4 809E3504 2442E660 */ addiu $v0, %lo(gSaveContext)
/* 009D8 809E3508 AE0F023C */ sw $t7, 0x023C($s0) ## 0000023C
/* 009DC 809E350C 94580EE6 */ lhu $t8, 0x0EE6($v0) ## 8015F546
/* 009E0 809E3510 24090001 */ addiu $t1, $zero, 0x0001 ## $t1 = 00000001
/* 009E4 809E3514 33280003 */ andi $t0, $t9, 0x0003 ## $t0 = 00000000
/* 009E8 809E3518 01095004 */ sllv $t2, $t1, $t0
/* 009EC 809E351C 030A5825 */ or $t3, $t8, $t2 ## $t3 = 00000000
/* 009F0 809E3520 A44B0EE6 */ sh $t3, 0x0EE6($v0) ## 8015F546
/* 009F4 809E3524 860C001C */ lh $t4, 0x001C($s0) ## 0000001C
/* 009F8 809E3528 3C01BF80 */ lui $at, 0xBF80 ## $at = BF800000
/* 009FC 809E352C 44812000 */ mtc1 $at, $f4 ## $f4 = -1.00
/* 00A00 809E3530 318D0003 */ andi $t5, $t4, 0x0003 ## $t5 = 00000000
/* 00A04 809E3534 000D7100 */ sll $t6, $t5, 4
/* 00A08 809E3538 3C0F809E */ lui $t7, %hi(D_809E4114) ## $t7 = 809E0000
/* 00A0C 809E353C 01EE7821 */ addu $t7, $t7, $t6
/* 00A10 809E3540 E604006C */ swc1 $f4, 0x006C($s0) ## 0000006C
/* 00A14 809E3544 8DEF4114 */ lw $t7, %lo(D_809E4114)($t7)
/* 00A18 809E3548 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00A1C 809E354C 02402825 */ or $a1, $s2, $zero ## $a1 = 00000000
/* 00A20 809E3550 0C278DC4 */ jal func_809E3710
/* 00A24 809E3554 AE0F0200 */ sw $t7, 0x0200($s0) ## 00000200
/* 00A28 809E3558 8609001C */ lh $t1, 0x001C($s0) ## 0000001C
/* 00A2C 809E355C 3C190001 */ lui $t9, 0x0001 ## $t9 = 00010000
/* 00A30 809E3560 0332C821 */ addu $t9, $t9, $s2
/* 00A34 809E3564 8F391E08 */ lw $t9, 0x1E08($t9) ## 00011E08
/* 00A38 809E3568 3C014120 */ lui $at, 0x4120 ## $at = 41200000
/* 00A3C 809E356C 00094103 */ sra $t0, $t1, 4
/* 00A40 809E3570 3118000F */ andi $t8, $t0, 0x000F ## $t8 = 00000000
/* 00A44 809E3574 4481D000 */ mtc1 $at, $f26 ## $f26 = 10.00
/* 00A48 809E3578 001850C0 */ sll $t2, $t8, 3
/* 00A4C 809E357C 3C01809E */ lui $at, %hi(D_809E41B0) ## $at = 809E0000
/* 00A50 809E3580 3C128016 */ lui $s2, %hi(gSegments)
/* 00A54 809E3584 3C1300FF */ lui $s3, 0x00FF ## $s3 = 00FF0000
/* 00A58 809E3588 00008825 */ or $s1, $zero, $zero ## $s1 = 00000000
/* 00A5C 809E358C 3673FFFF */ ori $s3, $s3, 0xFFFF ## $s3 = 00FFFFFF
/* 00A60 809E3590 26526FA8 */ addiu $s2, %lo(gSegments)
/* 00A64 809E3594 C43841B0 */ lwc1 $f24, %lo(D_809E41B0)($at)
/* 00A68 809E3598 24150006 */ addiu $s5, $zero, 0x0006 ## $s5 = 00000006
/* 00A6C 809E359C 3C148000 */ lui $s4, 0x8000 ## $s4 = 80000000
/* 00A70 809E35A0 032AB021 */ addu $s6, $t9, $t2
/* 00A74 809E35A4 8E1901EC */ lw $t9, 0x01EC($s0) ## 000001EC
.L809E35A8:
/* 00A78 809E35A8 8EC30004 */ lw $v1, 0x0004($s6) ## 00000004
/* 00A7C 809E35AC C60A0024 */ lwc1 $f10, 0x0024($s0) ## 00000024
/* 00A80 809E35B0 03350019 */ multu $t9, $s5
/* 00A84 809E35B4 00035900 */ sll $t3, $v1, 4
/* 00A88 809E35B8 000B6702 */ srl $t4, $t3, 28
/* 00A8C 809E35BC 000C6880 */ sll $t5, $t4, 2
/* 00A90 809E35C0 024D7021 */ addu $t6, $s2, $t5
/* 00A94 809E35C4 8DCF0000 */ lw $t7, 0x0000($t6) ## 00000000
/* 00A98 809E35C8 00734824 */ and $t1, $v1, $s3
/* 00A9C 809E35CC C604002C */ lwc1 $f4, 0x002C($s0) ## 0000002C
/* 00AA0 809E35D0 01E94021 */ addu $t0, $t7, $t1
/* 00AA4 809E35D4 0114C021 */ addu $t8, $t0, $s4
/* 00AA8 809E35D8 00005012 */ mflo $t2
/* 00AAC 809E35DC 030A1021 */ addu $v0, $t8, $t2
/* 00AB0 809E35E0 844B0000 */ lh $t3, 0x0000($v0) ## 00000000
/* 00AB4 809E35E4 844C0004 */ lh $t4, 0x0004($v0) ## 00000004
/* 00AB8 809E35E8 448B3000 */ mtc1 $t3, $f6 ## $f6 = 0.00
/* 00ABC 809E35EC 448C8000 */ mtc1 $t4, $f16 ## $f16 = 0.00
/* 00AC0 809E35F0 46803220 */ cvt.s.w $f8, $f6
/* 00AC4 809E35F4 468084A0 */ cvt.s.w $f18, $f16
/* 00AC8 809E35F8 460A4501 */ sub.s $f20, $f8, $f10
/* 00ACC 809E35FC 46049581 */ sub.s $f22, $f18, $f4
/* 00AD0 809E3600 4600A306 */ mov.s $f12, $f20
/* 00AD4 809E3604 0C03F494 */ jal Math_atan2f
/* 00AD8 809E3608 4600B386 */ mov.s $f14, $f22
/* 00ADC 809E360C 46180182 */ mul.s $f6, $f0, $f24
/* 00AE0 809E3610 00000000 */ nop
/* 00AE4 809E3614 4614A282 */ mul.s $f10, $f20, $f20
/* 00AE8 809E3618 00000000 */ nop
/* 00AEC 809E361C 4616B402 */ mul.s $f16, $f22, $f22
/* 00AF0 809E3620 4600320D */ trunc.w.s $f8, $f6
/* 00AF4 809E3624 46105000 */ add.s $f0, $f10, $f16
/* 00AF8 809E3628 440E4000 */ mfc1 $t6, $f8
/* 00AFC 809E362C 46000004 */ sqrt.s $f0, $f0
/* 00B00 809E3630 A60E0208 */ sh $t6, 0x0208($s0) ## 00000208
/* 00B04 809E3634 4600D03C */ c.lt.s $f26, $f0
/* 00B08 809E3638 00000000 */ nop
/* 00B0C 809E363C 45000003 */ bc1f .L809E364C
/* 00B10 809E3640 00000000 */ nop
/* 00B14 809E3644 10000004 */ beq $zero, $zero, .L809E3658
/* 00B18 809E3648 24110001 */ addiu $s1, $zero, 0x0001 ## $s1 = 00000001
.L809E364C:
/* 00B1C 809E364C 8E0F01EC */ lw $t7, 0x01EC($s0) ## 000001EC
/* 00B20 809E3650 25E90001 */ addiu $t1, $t7, 0x0001 ## $t1 = 00000001
/* 00B24 809E3654 AE0901EC */ sw $t1, 0x01EC($s0) ## 000001EC
.L809E3658:
/* 00B28 809E3658 5220FFD3 */ beql $s1, $zero, .L809E35A8
/* 00B2C 809E365C 8E1901EC */ lw $t9, 0x01EC($s0) ## 000001EC
/* 00B30 809E3660 3C08809E */ lui $t0, %hi(func_809E36A4) ## $t0 = 809E0000
/* 00B34 809E3664 250836A4 */ addiu $t0, $t0, %lo(func_809E36A4) ## $t0 = 809E36A4
/* 00B38 809E3668 AE080190 */ sw $t0, 0x0190($s0) ## 00000190
/* 00B3C 809E366C 8FBF0054 */ lw $ra, 0x0054($sp)
/* 00B40 809E3670 8FB60050 */ lw $s6, 0x0050($sp)
/* 00B44 809E3674 8FB5004C */ lw $s5, 0x004C($sp)
/* 00B48 809E3678 8FB40048 */ lw $s4, 0x0048($sp)
/* 00B4C 809E367C 8FB30044 */ lw $s3, 0x0044($sp)
/* 00B50 809E3680 8FB20040 */ lw $s2, 0x0040($sp)
/* 00B54 809E3684 8FB1003C */ lw $s1, 0x003C($sp)
/* 00B58 809E3688 8FB00038 */ lw $s0, 0x0038($sp)
/* 00B5C 809E368C D7BA0030 */ ldc1 $f26, 0x0030($sp)
/* 00B60 809E3690 D7B80028 */ ldc1 $f24, 0x0028($sp)
/* 00B64 809E3694 D7B60020 */ ldc1 $f22, 0x0020($sp)
/* 00B68 809E3698 D7B40018 */ ldc1 $f20, 0x0018($sp)
/* 00B6C 809E369C 03E00008 */ jr $ra
/* 00B70 809E36A0 27BD0058 */ addiu $sp, $sp, 0x0058 ## $sp = 00000000

View File

@ -1,31 +0,0 @@
glabel func_809E36A4
/* 00B74 809E36A4 27BDFFD0 */ addiu $sp, $sp, 0xFFD0 ## $sp = FFFFFFD0
/* 00B78 809E36A8 AFB00020 */ sw $s0, 0x0020($sp)
/* 00B7C 809E36AC 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00B80 809E36B0 AFBF0024 */ sw $ra, 0x0024($sp)
/* 00B84 809E36B4 AFA50034 */ sw $a1, 0x0034($sp)
/* 00B88 809E36B8 86050208 */ lh $a1, 0x0208($s0) ## 00000208
/* 00B8C 809E36BC AFA00010 */ sw $zero, 0x0010($sp)
/* 00B90 809E36C0 248400B6 */ addiu $a0, $a0, 0x00B6 ## $a0 = 000000B6
/* 00B94 809E36C4 24060001 */ addiu $a2, $zero, 0x0001 ## $a2 = 00000001
/* 00B98 809E36C8 0C01E1A7 */ jal Math_SmoothScaleMaxMinS
/* 00B9C 809E36CC 24071388 */ addiu $a3, $zero, 0x1388 ## $a3 = 00001388
/* 00BA0 809E36D0 A7A2002E */ sh $v0, 0x002E($sp)
/* 00BA4 809E36D4 0C02927F */ jal SkelAnime_FrameUpdateMatrix
/* 00BA8 809E36D8 2604014C */ addiu $a0, $s0, 0x014C ## $a0 = 0000014C
/* 00BAC 809E36DC 87AE002E */ lh $t6, 0x002E($sp)
/* 00BB0 809E36E0 3C02809E */ lui $v0, %hi(func_809E3A8C) ## $v0 = 809E0000
/* 00BB4 809E36E4 24423A8C */ addiu $v0, $v0, %lo(func_809E3A8C) ## $v0 = 809E3A8C
/* 00BB8 809E36E8 15C00004 */ bne $t6, $zero, .L809E36FC
/* 00BBC 809E36EC 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00BC0 809E36F0 AE020190 */ sw $v0, 0x0190($s0) ## 00000190
/* 00BC4 809E36F4 0040F809 */ jalr $ra, $v0
/* 00BC8 809E36F8 8FA50034 */ lw $a1, 0x0034($sp)
.L809E36FC:
/* 00BCC 809E36FC 8FBF0024 */ lw $ra, 0x0024($sp)
/* 00BD0 809E3700 8FB00020 */ lw $s0, 0x0020($sp)
/* 00BD4 809E3704 27BD0030 */ addiu $sp, $sp, 0x0030 ## $sp = 00000000
/* 00BD8 809E3708 03E00008 */ jr $ra
/* 00BDC 809E370C 00000000 */ nop

View File

@ -1,105 +0,0 @@
.late_rodata
glabel D_809E41B4
.float 9.58738019108e-05
.text
glabel func_809E3710
/* 00BE0 809E3710 27BDFFB8 */ addiu $sp, $sp, 0xFFB8 ## $sp = FFFFFFB8
/* 00BE4 809E3714 AFBF001C */ sw $ra, 0x001C($sp)
/* 00BE8 809E3718 AFB10018 */ sw $s1, 0x0018($sp)
/* 00BEC 809E371C AFB00014 */ sw $s0, 0x0014($sp)
/* 00BF0 809E3720 848F001C */ lh $t7, 0x001C($a0) ## 0000001C
/* 00BF4 809E3724 3C03809E */ lui $v1, %hi(D_809E4108) ## $v1 = 809E0000
/* 00BF8 809E3728 24634108 */ addiu $v1, $v1, %lo(D_809E4108) ## $v1 = 809E4108
/* 00BFC 809E372C 31F80003 */ andi $t8, $t7, 0x0003 ## $t8 = 00000000
/* 00C00 809E3730 240E0001 */ addiu $t6, $zero, 0x0001 ## $t6 = 00000001
/* 00C04 809E3734 0018C900 */ sll $t9, $t8, 4
/* 00C08 809E3738 AC8E01FC */ sw $t6, 0x01FC($a0) ## 000001FC
/* 00C0C 809E373C 00791021 */ addu $v0, $v1, $t9
/* 00C10 809E3740 8C48000C */ lw $t0, 0x000C($v0) ## 0000000C
/* 00C14 809E3744 3C01809E */ lui $at, %hi(D_809E41B4) ## $at = 809E0000
/* 00C18 809E3748 00A08825 */ or $s1, $a1, $zero ## $s1 = 00000000
/* 00C1C 809E374C AC880200 */ sw $t0, 0x0200($a0) ## 00000200
/* 00C20 809E3750 C4440000 */ lwc1 $f4, 0x0000($v0) ## 00000000
/* 00C24 809E3754 C43241B4 */ lwc1 $f18, %lo(D_809E41B4)($at)
/* 00C28 809E3758 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00C2C 809E375C E7A40038 */ swc1 $f4, 0x0038($sp)
/* 00C30 809E3760 8489001C */ lh $t1, 0x001C($a0) ## 0000001C
/* 00C34 809E3764 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
/* 00C38 809E3768 312A0003 */ andi $t2, $t1, 0x0003 ## $t2 = 00000000
/* 00C3C 809E376C 000A5900 */ sll $t3, $t2, 4
/* 00C40 809E3770 006B6021 */ addu $t4, $v1, $t3
/* 00C44 809E3774 C5860004 */ lwc1 $f6, 0x0004($t4) ## 00000004
/* 00C48 809E3778 E7A6003C */ swc1 $f6, 0x003C($sp)
/* 00C4C 809E377C 848D001C */ lh $t5, 0x001C($a0) ## 0000001C
/* 00C50 809E3780 31AE0003 */ andi $t6, $t5, 0x0003 ## $t6 = 00000000
/* 00C54 809E3784 000E7900 */ sll $t7, $t6, 4
/* 00C58 809E3788 006FC021 */ addu $t8, $v1, $t7
/* 00C5C 809E378C C7080008 */ lwc1 $f8, 0x0008($t8) ## 00000008
/* 00C60 809E3790 E7A80040 */ swc1 $f8, 0x0040($sp)
/* 00C64 809E3794 84990032 */ lh $t9, 0x0032($a0) ## 00000032
/* 00C68 809E3798 44995000 */ mtc1 $t9, $f10 ## $f10 = 0.00
/* 00C6C 809E379C 00000000 */ nop
/* 00C70 809E37A0 46805420 */ cvt.s.w $f16, $f10
/* 00C74 809E37A4 46128302 */ mul.s $f12, $f16, $f18
/* 00C78 809E37A8 0C034348 */ jal Matrix_RotateY
/* 00C7C 809E37AC 00000000 */ nop
/* 00C80 809E37B0 27A40038 */ addiu $a0, $sp, 0x0038 ## $a0 = FFFFFFF0
/* 00C84 809E37B4 0C0346BD */ jal Matrix_MultVec3f
/* 00C88 809E37B8 27A5002C */ addiu $a1, $sp, 0x002C ## $a1 = FFFFFFE4
/* 00C8C 809E37BC C6040024 */ lwc1 $f4, 0x0024($s0) ## 00000024
/* 00C90 809E37C0 C7A6002C */ lwc1 $f6, 0x002C($sp)
/* 00C94 809E37C4 C6080028 */ lwc1 $f8, 0x0028($s0) ## 00000028
/* 00C98 809E37C8 C610002C */ lwc1 $f16, 0x002C($s0) ## 0000002C
/* 00C9C 809E37CC 46062000 */ add.s $f0, $f4, $f6
/* 00CA0 809E37D0 3C014270 */ lui $at, 0x4270 ## $at = 42700000
/* 00CA4 809E37D4 44813000 */ mtc1 $at, $f6 ## $f6 = 60.00
/* 00CA8 809E37D8 C6040028 */ lwc1 $f4, 0x0028($s0) ## 00000028
/* 00CAC 809E37DC E6000224 */ swc1 $f0, 0x0224($s0) ## 00000224
/* 00CB0 809E37E0 E600020C */ swc1 $f0, 0x020C($s0) ## 0000020C
/* 00CB4 809E37E4 C7AA0030 */ lwc1 $f10, 0x0030($sp)
/* 00CB8 809E37E8 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 00CBC 809E37EC 460A4000 */ add.s $f0, $f8, $f10
/* 00CC0 809E37F0 E6000228 */ swc1 $f0, 0x0228($s0) ## 00000228
/* 00CC4 809E37F4 E6000210 */ swc1 $f0, 0x0210($s0) ## 00000210
/* 00CC8 809E37F8 C7B20034 */ lwc1 $f18, 0x0034($sp)
/* 00CCC 809E37FC 46128000 */ add.s $f0, $f16, $f18
/* 00CD0 809E3800 E600022C */ swc1 $f0, 0x022C($s0) ## 0000022C
/* 00CD4 809E3804 E6000214 */ swc1 $f0, 0x0214($s0) ## 00000214
/* 00CD8 809E3808 C6000024 */ lwc1 $f0, 0x0024($s0) ## 00000024
/* 00CDC 809E380C E6000230 */ swc1 $f0, 0x0230($s0) ## 00000230
/* 00CE0 809E3810 E6000218 */ swc1 $f0, 0x0218($s0) ## 00000218
/* 00CE4 809E3814 46062000 */ add.s $f0, $f4, $f6
/* 00CE8 809E3818 E6000234 */ swc1 $f0, 0x0234($s0) ## 00000234
/* 00CEC 809E381C E600021C */ swc1 $f0, 0x021C($s0) ## 0000021C
/* 00CF0 809E3820 C600002C */ lwc1 $f0, 0x002C($s0) ## 0000002C
/* 00CF4 809E3824 E6000238 */ swc1 $f0, 0x0238($s0) ## 00000238
/* 00CF8 809E3828 0C03008C */ jal Gameplay_CreateSubCamera
/* 00CFC 809E382C E6000220 */ swc1 $f0, 0x0220($s0) ## 00000220
/* 00D00 809E3830 AE020204 */ sw $v0, 0x0204($s0) ## 00000204
/* 00D04 809E3834 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 00D08 809E3838 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
/* 00D0C 809E383C 0C0300C5 */ jal Gameplay_ChangeCameraStatus
/* 00D10 809E3840 24060001 */ addiu $a2, $zero, 0x0001 ## $a2 = 00000001
/* 00D14 809E3844 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 00D18 809E3848 86050206 */ lh $a1, 0x0206($s0) ## 00000206
/* 00D1C 809E384C 0C0300C5 */ jal Gameplay_ChangeCameraStatus
/* 00D20 809E3850 24060007 */ addiu $a2, $zero, 0x0007 ## $a2 = 00000007
/* 00D24 809E3854 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 00D28 809E3858 86050206 */ lh $a1, 0x0206($s0) ## 00000206
/* 00D2C 809E385C 26060230 */ addiu $a2, $s0, 0x0230 ## $a2 = 00000230
/* 00D30 809E3860 0C030136 */ jal func_800C04D8
/* 00D34 809E3864 26070224 */ addiu $a3, $s0, 0x0224 ## $a3 = 00000224
/* 00D38 809E3868 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 00D3C 809E386C 86050206 */ lh $a1, 0x0206($s0) ## 00000206
/* 00D40 809E3870 0C0301C1 */ jal func_800C0704
/* 00D44 809E3874 8E2602DC */ lw $a2, 0x02DC($s1) ## 000002DC
/* 00D48 809E3878 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 00D4C 809E387C 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000
/* 00D50 809E3880 0C00B7D5 */ jal func_8002DF54
/* 00D54 809E3884 24060001 */ addiu $a2, $zero, 0x0001 ## $a2 = 00000001
/* 00D58 809E3888 8FBF001C */ lw $ra, 0x001C($sp)
/* 00D5C 809E388C 8FB00014 */ lw $s0, 0x0014($sp)
/* 00D60 809E3890 8FB10018 */ lw $s1, 0x0018($sp)
/* 00D64 809E3894 03E00008 */ jr $ra
/* 00D68 809E3898 27BD0048 */ addiu $sp, $sp, 0x0048 ## $sp = 00000000

View File

@ -1,50 +0,0 @@
glabel func_809E389C
/* 00D6C 809E389C 27BDFFD0 */ addiu $sp, $sp, 0xFFD0 ## $sp = FFFFFFD0
/* 00D70 809E38A0 AFBF0024 */ sw $ra, 0x0024($sp)
/* 00D74 809E38A4 AFB00020 */ sw $s0, 0x0020($sp)
/* 00D78 809E38A8 AFA50034 */ sw $a1, 0x0034($sp)
/* 00D7C 809E38AC 3C014270 */ lui $at, 0x4270 ## $at = 42700000
/* 00D80 809E38B0 44813000 */ mtc1 $at, $f6 ## $f6 = 60.00
/* 00D84 809E38B4 C4840028 */ lwc1 $f4, 0x0028($a0) ## 00000028
/* 00D88 809E38B8 C4800024 */ lwc1 $f0, 0x0024($a0) ## 00000024
/* 00D8C 809E38BC C48A002C */ lwc1 $f10, 0x002C($a0) ## 0000002C
/* 00D90 809E38C0 46062200 */ add.s $f8, $f4, $f6
/* 00D94 809E38C4 44808000 */ mtc1 $zero, $f16 ## $f16 = 0.00
/* 00D98 809E38C8 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00D9C 809E38CC 24840230 */ addiu $a0, $a0, 0x0230 ## $a0 = 00000230
/* 00DA0 809E38D0 E488FFEC */ swc1 $f8, -0x0014($a0) ## 0000021C
/* 00DA4 809E38D4 E480FFE8 */ swc1 $f0, -0x0018($a0) ## 00000218
/* 00DA8 809E38D8 44050000 */ mfc1 $a1, $f0
/* 00DAC 809E38DC E48AFFF0 */ swc1 $f10, -0x0010($a0) ## 00000220
/* 00DB0 809E38E0 AFA40028 */ sw $a0, 0x0028($sp)
/* 00DB4 809E38E4 3C063F80 */ lui $a2, 0x3F80 ## $a2 = 3F800000
/* 00DB8 809E38E8 3C07447A */ lui $a3, 0x447A ## $a3 = 447A0000
/* 00DBC 809E38EC 0C01E0C4 */ jal Math_SmoothScaleMaxMinF
/* 00DC0 809E38F0 E7B00010 */ swc1 $f16, 0x0010($sp)
/* 00DC4 809E38F4 44809000 */ mtc1 $zero, $f18 ## $f18 = 0.00
/* 00DC8 809E38F8 8E05021C */ lw $a1, 0x021C($s0) ## 0000021C
/* 00DCC 809E38FC 26040234 */ addiu $a0, $s0, 0x0234 ## $a0 = 00000234
/* 00DD0 809E3900 3C063F80 */ lui $a2, 0x3F80 ## $a2 = 3F800000
/* 00DD4 809E3904 3C07447A */ lui $a3, 0x447A ## $a3 = 447A0000
/* 00DD8 809E3908 0C01E0C4 */ jal Math_SmoothScaleMaxMinF
/* 00DDC 809E390C E7B20010 */ swc1 $f18, 0x0010($sp)
/* 00DE0 809E3910 44802000 */ mtc1 $zero, $f4 ## $f4 = 0.00
/* 00DE4 809E3914 8E050220 */ lw $a1, 0x0220($s0) ## 00000220
/* 00DE8 809E3918 26040238 */ addiu $a0, $s0, 0x0238 ## $a0 = 00000238
/* 00DEC 809E391C 3C063F80 */ lui $a2, 0x3F80 ## $a2 = 3F800000
/* 00DF0 809E3920 3C07447A */ lui $a3, 0x447A ## $a3 = 447A0000
/* 00DF4 809E3924 0C01E0C4 */ jal Math_SmoothScaleMaxMinF
/* 00DF8 809E3928 E7A40010 */ swc1 $f4, 0x0010($sp)
/* 00DFC 809E392C 8FA40034 */ lw $a0, 0x0034($sp)
/* 00E00 809E3930 86050206 */ lh $a1, 0x0206($s0) ## 00000206
/* 00E04 809E3934 8FA60028 */ lw $a2, 0x0028($sp)
/* 00E08 809E3938 0C030136 */ jal func_800C04D8
/* 00E0C 809E393C 26070224 */ addiu $a3, $s0, 0x0224 ## $a3 = 00000224
/* 00E10 809E3940 8FBF0024 */ lw $ra, 0x0024($sp)
/* 00E14 809E3944 8FB00020 */ lw $s0, 0x0020($sp)
/* 00E18 809E3948 27BD0030 */ addiu $sp, $sp, 0x0030 ## $sp = 00000000
/* 00E1C 809E394C 03E00008 */ jr $ra
/* 00E20 809E3950 00000000 */ nop

View File

@ -1,91 +0,0 @@
.late_rodata
glabel D_809E41B8
.float 9.58738019108e-05
glabel D_809E41BC
.word 0x4622F983
.text
glabel func_809E3954
/* 00E24 809E3954 27BDFFB0 */ addiu $sp, $sp, 0xFFB0 ## $sp = FFFFFFB0
/* 00E28 809E3958 AFB0002C */ sw $s0, 0x002C($sp)
/* 00E2C 809E395C 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00E30 809E3960 AFB10030 */ sw $s1, 0x0030($sp)
/* 00E34 809E3964 00A08825 */ or $s1, $a1, $zero ## $s1 = 00000000
/* 00E38 809E3968 AFBF0034 */ sw $ra, 0x0034($sp)
/* 00E3C 809E396C 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 00E40 809E3970 0C0300E1 */ jal Gameplay_ClearCamera
/* 00E44 809E3974 86050206 */ lh $a1, 0x0206($s0) ## 00000206
/* 00E48 809E3978 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 00E4C 809E397C 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
/* 00E50 809E3980 0C0300C5 */ jal Gameplay_ChangeCameraStatus
/* 00E54 809E3984 24060007 */ addiu $a2, $zero, 0x0007 ## $a2 = 00000007
/* 00E58 809E3988 AE0001FC */ sw $zero, 0x01FC($s0) ## 000001FC
/* 00E5C 809E398C 3C0E8016 */ lui $t6, %hi(gSaveContext+0xee6)
/* 00E60 809E3990 95CEF546 */ lhu $t6, %lo(gSaveContext+0xee6)($t6)
/* 00E64 809E3994 2401000F */ addiu $at, $zero, 0x000F ## $at = 0000000F
/* 00E68 809E3998 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 00E6C 809E399C 31CF000F */ andi $t7, $t6, 0x000F ## $t7 = 00000000
/* 00E70 809E39A0 15E10033 */ bne $t7, $at, .L809E3A70
/* 00E74 809E39A4 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000
/* 00E78 809E39A8 8618033A */ lh $t8, 0x033A($s0) ## 0000033A
/* 00E7C 809E39AC 3C01809E */ lui $at, %hi(D_809E41B8) ## $at = 809E0000
/* 00E80 809E39B0 C42841B8 */ lwc1 $f8, %lo(D_809E41B8)($at)
/* 00E84 809E39B4 44982000 */ mtc1 $t8, $f4 ## $f4 = 0.00
/* 00E88 809E39B8 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
/* 00E8C 809E39BC 468021A0 */ cvt.s.w $f6, $f4
/* 00E90 809E39C0 46083302 */ mul.s $f12, $f6, $f8
/* 00E94 809E39C4 0C034348 */ jal Matrix_RotateY
/* 00E98 809E39C8 00000000 */ nop
/* 00E9C 809E39CC 3C04809E */ lui $a0, %hi(D_809E4148) ## $a0 = 809E0000
/* 00EA0 809E39D0 24844148 */ addiu $a0, $a0, %lo(D_809E4148) ## $a0 = 809E4148
/* 00EA4 809E39D4 0C0346BD */ jal Matrix_MultVec3f
/* 00EA8 809E39D8 27A50040 */ addiu $a1, $sp, 0x0040 ## $a1 = FFFFFFF0
/* 00EAC 809E39DC C7AC0040 */ lwc1 $f12, 0x0040($sp)
/* 00EB0 809E39E0 C7AE0048 */ lwc1 $f14, 0x0048($sp)
/* 00EB4 809E39E4 46006307 */ neg.s $f12, $f12
/* 00EB8 809E39E8 0C03F494 */ jal Math_atan2f
/* 00EBC 809E39EC 46007387 */ neg.s $f14, $f14
/* 00EC0 809E39F0 C6040344 */ lwc1 $f4, 0x0344($s0) ## 00000344
/* 00EC4 809E39F4 C7A60044 */ lwc1 $f6, 0x0044($sp)
/* 00EC8 809E39F8 3C01809E */ lui $at, %hi(D_809E41BC) ## $at = 809E0000
/* 00ECC 809E39FC C60A0340 */ lwc1 $f10, 0x0340($s0) ## 00000340
/* 00ED0 809E3A00 46062200 */ add.s $f8, $f4, $f6
/* 00ED4 809E3A04 C42441BC */ lwc1 $f4, %lo(D_809E41BC)($at)
/* 00ED8 809E3A08 C7B00040 */ lwc1 $f16, 0x0040($sp)
/* 00EDC 809E3A0C 24090002 */ addiu $t1, $zero, 0x0002 ## $t1 = 00000002
/* 00EE0 809E3A10 46040182 */ mul.s $f6, $f0, $f4
/* 00EE4 809E3A14 46105480 */ add.s $f18, $f10, $f16
/* 00EE8 809E3A18 E7A80010 */ swc1 $f8, 0x0010($sp)
/* 00EEC 809E3A1C C60A0348 */ lwc1 $f10, 0x0348($s0) ## 00000348
/* 00EF0 809E3A20 C7B00048 */ lwc1 $f16, 0x0048($sp)
/* 00EF4 809E3A24 44079000 */ mfc1 $a3, $f18
/* 00EF8 809E3A28 AFA90024 */ sw $t1, 0x0024($sp)
/* 00EFC 809E3A2C 4600320D */ trunc.w.s $f8, $f6
/* 00F00 809E3A30 AFA00020 */ sw $zero, 0x0020($sp)
/* 00F04 809E3A34 AFA00018 */ sw $zero, 0x0018($sp)
/* 00F08 809E3A38 46105480 */ add.s $f18, $f10, $f16
/* 00F0C 809E3A3C 44084000 */ mfc1 $t0, $f8
/* 00F10 809E3A40 26241C24 */ addiu $a0, $s1, 0x1C24 ## $a0 = 00001C24
/* 00F14 809E3A44 02202825 */ or $a1, $s1, $zero ## $a1 = 00000000
/* 00F18 809E3A48 E7B20014 */ swc1 $f18, 0x0014($sp)
/* 00F1C 809E3A4C 240601D0 */ addiu $a2, $zero, 0x01D0 ## $a2 = 000001D0
/* 00F20 809E3A50 0C00C7D4 */ jal Actor_Spawn
## ActorSpawn
/* 00F24 809E3A54 AFA8001C */ sw $t0, 0x001C($sp)
/* 00F28 809E3A58 54400008 */ bnel $v0, $zero, .L809E3A7C
/* 00F2C 809E3A5C 8FBF0034 */ lw $ra, 0x0034($sp)
/* 00F30 809E3A60 0C00B55C */ jal Actor_Kill
/* 00F34 809E3A64 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00F38 809E3A68 10000004 */ beq $zero, $zero, .L809E3A7C
/* 00F3C 809E3A6C 8FBF0034 */ lw $ra, 0x0034($sp)
.L809E3A70:
/* 00F40 809E3A70 0C00B7D5 */ jal func_8002DF54
/* 00F44 809E3A74 24060007 */ addiu $a2, $zero, 0x0007 ## $a2 = 00000007
/* 00F48 809E3A78 8FBF0034 */ lw $ra, 0x0034($sp)
.L809E3A7C:
/* 00F4C 809E3A7C 8FB0002C */ lw $s0, 0x002C($sp)
/* 00F50 809E3A80 8FB10030 */ lw $s1, 0x0030($sp)
/* 00F54 809E3A84 03E00008 */ jr $ra
/* 00F58 809E3A88 27BD0050 */ addiu $sp, $sp, 0x0050 ## $sp = 00000000

View File

@ -1,147 +0,0 @@
.late_rodata
glabel D_809E41C0
.word 0x4622F983
glabel D_809E41C4
.word 0x41A70A3D, 0x00000000, 0x00000000
.text
glabel func_809E3A8C
/* 00F5C 809E3A8C 27BDFFB8 */ addiu $sp, $sp, 0xFFB8 ## $sp = FFFFFFB8
/* 00F60 809E3A90 AFBF0024 */ sw $ra, 0x0024($sp)
/* 00F64 809E3A94 AFB00020 */ sw $s0, 0x0020($sp)
/* 00F68 809E3A98 AFA5004C */ sw $a1, 0x004C($sp)
/* 00F6C 809E3A9C 8498001C */ lh $t8, 0x001C($a0) ## 0000001C
/* 00F70 809E3AA0 3C0F0001 */ lui $t7, 0x0001 ## $t7 = 00010000
/* 00F74 809E3AA4 01E57821 */ addu $t7, $t7, $a1
/* 00F78 809E3AA8 8DEF1E08 */ lw $t7, 0x1E08($t7) ## 00011E08
/* 00F7C 809E3AAC 0018C903 */ sra $t9, $t8, 4
/* 00F80 809E3AB0 3328000F */ andi $t0, $t9, 0x000F ## $t0 = 00000000
/* 00F84 809E3AB4 000848C0 */ sll $t1, $t0, 3
/* 00F88 809E3AB8 01E93021 */ addu $a2, $t7, $t1
/* 00F8C 809E3ABC 8CC30004 */ lw $v1, 0x0004($a2) ## 00000004
/* 00F90 809E3AC0 8C9901EC */ lw $t9, 0x01EC($a0) ## 000001EC
/* 00F94 809E3AC4 3C0D8016 */ lui $t5, %hi(gSegments)
/* 00F98 809E3AC8 00035100 */ sll $t2, $v1, 4
/* 00F9C 809E3ACC 000A5F02 */ srl $t3, $t2, 28
/* 00FA0 809E3AD0 000B6080 */ sll $t4, $t3, 2
/* 00FA4 809E3AD4 01AC6821 */ addu $t5, $t5, $t4
/* 00FA8 809E3AD8 8DAD6FA8 */ lw $t5, %lo(gSegments)($t5)
/* 00FAC 809E3ADC 3C0100FF */ lui $at, 0x00FF ## $at = 00FF0000
/* 00FB0 809E3AE0 3421FFFF */ ori $at, $at, 0xFFFF ## $at = 00FFFFFF
/* 00FB4 809E3AE4 00194080 */ sll $t0, $t9, 2
/* 00FB8 809E3AE8 00617024 */ and $t6, $v1, $at
/* 00FBC 809E3AEC 01194023 */ subu $t0, $t0, $t9
/* 00FC0 809E3AF0 00084040 */ sll $t0, $t0, 1
/* 00FC4 809E3AF4 01AEC021 */ addu $t8, $t5, $t6
/* 00FC8 809E3AF8 03081021 */ addu $v0, $t8, $t0
/* 00FCC 809E3AFC 3C018000 */ lui $at, 0x8000 ## $at = 80000000
/* 00FD0 809E3B00 00411021 */ addu $v0, $v0, $at
/* 00FD4 809E3B04 844F0000 */ lh $t7, 0x0000($v0) ## 00000000
/* 00FD8 809E3B08 84490004 */ lh $t1, 0x0004($v0) ## 00000004
/* 00FDC 809E3B0C C4880024 */ lwc1 $f8, 0x0024($a0) ## 00000024
/* 00FE0 809E3B10 448F2000 */ mtc1 $t7, $f4 ## $f4 = 0.00
/* 00FE4 809E3B14 44895000 */ mtc1 $t1, $f10 ## $f10 = 0.00
/* 00FE8 809E3B18 C492002C */ lwc1 $f18, 0x002C($a0) ## 0000002C
/* 00FEC 809E3B1C 468021A0 */ cvt.s.w $f6, $f4
/* 00FF0 809E3B20 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00FF4 809E3B24 AFA60040 */ sw $a2, 0x0040($sp)
/* 00FF8 809E3B28 46805420 */ cvt.s.w $f16, $f10
/* 00FFC 809E3B2C 46083301 */ sub.s $f12, $f6, $f8
/* 01000 809E3B30 46128381 */ sub.s $f14, $f16, $f18
/* 01004 809E3B34 E7AC0038 */ swc1 $f12, 0x0038($sp)
/* 01008 809E3B38 0C03F494 */ jal Math_atan2f
/* 0100C 809E3B3C E7AE0034 */ swc1 $f14, 0x0034($sp)
/* 01010 809E3B40 3C01809E */ lui $at, %hi(D_809E41C0) ## $at = 809E0000
/* 01014 809E3B44 C42441C0 */ lwc1 $f4, %lo(D_809E41C0)($at)
/* 01018 809E3B48 C7AC0038 */ lwc1 $f12, 0x0038($sp)
/* 0101C 809E3B4C C7AE0034 */ lwc1 $f14, 0x0034($sp)
/* 01020 809E3B50 46040182 */ mul.s $f6, $f0, $f4
/* 01024 809E3B54 3C01809E */ lui $at, %hi(D_809E41C4) ## $at = 809E0000
/* 01028 809E3B58 C43241C4 */ lwc1 $f18, %lo(D_809E41C4)($at)
/* 0102C 809E3B5C 460C6282 */ mul.s $f10, $f12, $f12
/* 01030 809E3B60 8FA60040 */ lw $a2, 0x0040($sp)
/* 01034 809E3B64 260400B6 */ addiu $a0, $s0, 0x00B6 ## $a0 = 000000B6
/* 01038 809E3B68 460E7402 */ mul.s $f16, $f14, $f14
/* 0103C 809E3B6C 24070FA0 */ addiu $a3, $zero, 0x0FA0 ## $a3 = 00000FA0
/* 01040 809E3B70 4600320D */ trunc.w.s $f8, $f6
/* 01044 809E3B74 46105000 */ add.s $f0, $f10, $f16
/* 01048 809E3B78 44054000 */ mfc1 $a1, $f8
/* 0104C 809E3B7C 46000084 */ sqrt.s $f2, $f0
/* 01050 809E3B80 00052C00 */ sll $a1, $a1, 16
/* 01054 809E3B84 00052C03 */ sra $a1, $a1, 16
/* 01058 809E3B88 4612103E */ c.le.s $f2, $f18
/* 0105C 809E3B8C 00000000 */ nop
/* 01060 809E3B90 45020013 */ bc1fl .L809E3BE0
/* 01064 809E3B94 24060001 */ addiu $a2, $zero, 0x0001 ## $a2 = 00000001
/* 01068 809E3B98 8E0B01EC */ lw $t3, 0x01EC($s0) ## 000001EC
/* 0106C 809E3B9C 256C0001 */ addiu $t4, $t3, 0x0001 ## $t4 = 00000001
/* 01070 809E3BA0 AE0C01EC */ sw $t4, 0x01EC($s0) ## 000001EC
/* 01074 809E3BA4 90CE0000 */ lbu $t6, 0x0000($a2) ## 00000001
/* 01078 809E3BA8 018E082A */ slt $at, $t4, $t6
/* 0107C 809E3BAC 5420000C */ bnel $at, $zero, .L809E3BE0
/* 01080 809E3BB0 24060001 */ addiu $a2, $zero, 0x0001 ## $a2 = 00000001
/* 01084 809E3BB4 8E1901FC */ lw $t9, 0x01FC($s0) ## 000001FC
/* 01088 809E3BB8 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 0108C 809E3BBC 13200003 */ beq $t9, $zero, .L809E3BCC
/* 01090 809E3BC0 00000000 */ nop
/* 01094 809E3BC4 0C278E55 */ jal func_809E3954
/* 01098 809E3BC8 8FA5004C */ lw $a1, 0x004C($sp)
.L809E3BCC:
/* 0109C 809E3BCC 0C00B55C */ jal Actor_Kill
/* 010A0 809E3BD0 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 010A4 809E3BD4 1000002B */ beq $zero, $zero, .L809E3C84
/* 010A8 809E3BD8 8FBF0024 */ lw $ra, 0x0024($sp)
/* 010AC 809E3BDC 24060001 */ addiu $a2, $zero, 0x0001 ## $a2 = 00000001
.L809E3BE0:
/* 010B0 809E3BE0 AFA00010 */ sw $zero, 0x0010($sp)
/* 010B4 809E3BE4 0C01E1A7 */ jal Math_SmoothScaleMaxMinS
/* 010B8 809E3BE8 E7A2002C */ swc1 $f2, 0x002C($sp)
/* 010BC 809E3BEC C7A2002C */ lwc1 $f2, 0x002C($sp)
/* 010C0 809E3BF0 861800B6 */ lh $t8, 0x00B6($s0) ## 000000B6
/* 010C4 809E3BF4 44802000 */ mtc1 $zero, $f4 ## $f4 = 0.00
/* 010C8 809E3BF8 8E0501F0 */ lw $a1, 0x01F0($s0) ## 000001F0
/* 010CC 809E3BFC 3C063F19 */ lui $a2, 0x3F19 ## $a2 = 3F190000
/* 010D0 809E3C00 44071000 */ mfc1 $a3, $f2
/* 010D4 809E3C04 A6180032 */ sh $t8, 0x0032($s0) ## 00000032
/* 010D8 809E3C08 34C6999A */ ori $a2, $a2, 0x999A ## $a2 = 3F19999A
/* 010DC 809E3C0C 26040068 */ addiu $a0, $s0, 0x0068 ## $a0 = 00000068
/* 010E0 809E3C10 0C01E0C4 */ jal Math_SmoothScaleMaxMinF
/* 010E4 809E3C14 E7A40010 */ swc1 $f4, 0x0010($sp)
/* 010E8 809E3C18 0C00B638 */ jal Actor_MoveForward
/* 010EC 809E3C1C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 010F0 809E3C20 44800000 */ mtc1 $zero, $f0 ## $f0 = 0.00
/* 010F4 809E3C24 24080004 */ addiu $t0, $zero, 0x0004 ## $t0 = 00000004
/* 010F8 809E3C28 AFA80014 */ sw $t0, 0x0014($sp)
/* 010FC 809E3C2C 44060000 */ mfc1 $a2, $f0
/* 01100 809E3C30 44070000 */ mfc1 $a3, $f0
/* 01104 809E3C34 8FA4004C */ lw $a0, 0x004C($sp)
/* 01108 809E3C38 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000
/* 0110C 809E3C3C 0C00B92D */ jal func_8002E4B4
/* 01110 809E3C40 E7A00010 */ swc1 $f0, 0x0010($sp)
/* 01114 809E3C44 8E0F01FC */ lw $t7, 0x01FC($s0) ## 000001FC
/* 01118 809E3C48 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 0111C 809E3C4C 11E0000A */ beq $t7, $zero, .L809E3C78
/* 01120 809E3C50 00000000 */ nop
/* 01124 809E3C54 0C278E27 */ jal func_809E389C
/* 01128 809E3C58 8FA5004C */ lw $a1, 0x004C($sp)
/* 0112C 809E3C5C 8E020200 */ lw $v0, 0x0200($s0) ## 00000200
/* 01130 809E3C60 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 01134 809E3C64 2449FFFF */ addiu $t1, $v0, 0xFFFF ## $t1 = FFFFFFFF
/* 01138 809E3C68 1C400003 */ bgtz $v0, .L809E3C78
/* 0113C 809E3C6C AE090200 */ sw $t1, 0x0200($s0) ## 00000200
/* 01140 809E3C70 0C278E55 */ jal func_809E3954
/* 01144 809E3C74 8FA5004C */ lw $a1, 0x004C($sp)
.L809E3C78:
/* 01148 809E3C78 0C02927F */ jal SkelAnime_FrameUpdateMatrix
/* 0114C 809E3C7C 2604014C */ addiu $a0, $s0, 0x014C ## $a0 = 0000014C
/* 01150 809E3C80 8FBF0024 */ lw $ra, 0x0024($sp)
.L809E3C84:
/* 01154 809E3C84 8FB00020 */ lw $s0, 0x0020($sp)
/* 01158 809E3C88 27BD0048 */ addiu $sp, $sp, 0x0048 ## $sp = 00000000
/* 0115C 809E3C8C 03E00008 */ jr $ra
/* 01160 809E3C90 00000000 */ nop

View File

@ -1,36 +0,0 @@
glabel func_809E3EF8
/* 013C8 809E3EF8 24010008 */ addiu $at, $zero, 0x0008 ## $at = 00000008
/* 013CC 809E3EFC AFA40000 */ sw $a0, 0x0000($sp)
/* 013D0 809E3F00 AFA60008 */ sw $a2, 0x0008($sp)
/* 013D4 809E3F04 10A10006 */ beq $a1, $at, .L809E3F20
/* 013D8 809E3F08 AFA7000C */ sw $a3, 0x000C($sp)
/* 013DC 809E3F0C 2401000F */ addiu $at, $zero, 0x000F ## $at = 0000000F
/* 013E0 809E3F10 10A1000F */ beq $a1, $at, .L809E3F50
/* 013E4 809E3F14 8FA20014 */ lw $v0, 0x0014($sp)
/* 013E8 809E3F18 03E00008 */ jr $ra
/* 013EC 809E3F1C 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000
.L809E3F20:
/* 013F0 809E3F20 8FA20014 */ lw $v0, 0x0014($sp)
/* 013F4 809E3F24 8FA30010 */ lw $v1, 0x0010($sp)
/* 013F8 809E3F28 844F0254 */ lh $t7, 0x0254($v0) ## 00000254
/* 013FC 809E3F2C 846E0000 */ lh $t6, 0x0000($v1) ## 00000000
/* 01400 809E3F30 84790002 */ lh $t9, 0x0002($v1) ## 00000002
/* 01404 809E3F34 01CFC021 */ addu $t8, $t6, $t7
/* 01408 809E3F38 A4780000 */ sh $t8, 0x0000($v1) ## 00000000
/* 0140C 809E3F3C 84480252 */ lh $t0, 0x0252($v0) ## 00000252
/* 01410 809E3F40 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000
/* 01414 809E3F44 03284823 */ subu $t1, $t9, $t0
/* 01418 809E3F48 03E00008 */ jr $ra
/* 0141C 809E3F4C A4690002 */ sh $t1, 0x0002($v1) ## 00000002
.L809E3F50:
/* 01420 809E3F50 8FA30010 */ lw $v1, 0x0010($sp)
/* 01424 809E3F54 844B024E */ lh $t3, 0x024E($v0) ## 0000024E
/* 01428 809E3F58 846A0000 */ lh $t2, 0x0000($v1) ## 00000000
/* 0142C 809E3F5C 846D0004 */ lh $t5, 0x0004($v1) ## 00000004
/* 01430 809E3F60 014B6021 */ addu $t4, $t2, $t3
/* 01434 809E3F64 A46C0000 */ sh $t4, 0x0000($v1) ## 00000000
/* 01438 809E3F68 844E024C */ lh $t6, 0x024C($v0) ## 0000024C
/* 0143C 809E3F6C 01AE7821 */ addu $t7, $t5, $t6
/* 01440 809E3F70 A46F0004 */ sh $t7, 0x0004($v1) ## 00000004
/* 01444 809E3F74 03E00008 */ jr $ra
/* 01448 809E3F78 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000

View File

@ -1,61 +0,0 @@
.rdata
glabel D_809E4190
.asciz "../z_en_daiku.c"
.balign 4
glabel D_809E41A0
.asciz "../z_en_daiku.c"
.balign 4
.text
glabel func_809E3F7C
/* 0144C 809E3F7C 27BDFFC8 */ addiu $sp, $sp, 0xFFC8 ## $sp = FFFFFFC8
/* 01450 809E3F80 AFBF0014 */ sw $ra, 0x0014($sp)
/* 01454 809E3F84 AFA40038 */ sw $a0, 0x0038($sp)
/* 01458 809E3F88 AFA5003C */ sw $a1, 0x003C($sp)
/* 0145C 809E3F8C AFA60040 */ sw $a2, 0x0040($sp)
/* 01460 809E3F90 AFA70044 */ sw $a3, 0x0044($sp)
/* 01464 809E3F94 8C850000 */ lw $a1, 0x0000($a0) ## 00000000
/* 01468 809E3F98 3C06809E */ lui $a2, %hi(D_809E4190) ## $a2 = 809E0000
/* 0146C 809E3F9C 24C64190 */ addiu $a2, $a2, %lo(D_809E4190) ## $a2 = 809E4190
/* 01470 809E3FA0 27A40020 */ addiu $a0, $sp, 0x0020 ## $a0 = FFFFFFE8
/* 01474 809E3FA4 2407052B */ addiu $a3, $zero, 0x052B ## $a3 = 0000052B
/* 01478 809E3FA8 0C031AB1 */ jal Graph_OpenDisps
/* 0147C 809E3FAC AFA50030 */ sw $a1, 0x0030($sp)
/* 01480 809E3FB0 8FAF003C */ lw $t7, 0x003C($sp)
/* 01484 809E3FB4 2401000F */ addiu $at, $zero, 0x000F ## $at = 0000000F
/* 01488 809E3FB8 3C04809E */ lui $a0, %hi(D_809E4164) ## $a0 = 809E0000
/* 0148C 809E3FBC 15E10012 */ bne $t7, $at, .L809E4008
/* 01490 809E3FC0 8FA50048 */ lw $a1, 0x0048($sp)
/* 01494 809E3FC4 24844164 */ addiu $a0, $a0, %lo(D_809E4164) ## $a0 = 809E4164
/* 01498 809E3FC8 0C0346BD */ jal Matrix_MultVec3f
/* 0149C 809E3FCC 24A50038 */ addiu $a1, $a1, 0x0038 ## $a1 = 00000038
/* 014A0 809E3FD0 8FA40030 */ lw $a0, 0x0030($sp)
/* 014A4 809E3FD4 3C19DE00 */ lui $t9, 0xDE00 ## $t9 = DE000000
/* 014A8 809E3FD8 3C0C809E */ lui $t4, %hi(D_809E4154) ## $t4 = 809E0000
/* 014AC 809E3FDC 8C8302C0 */ lw $v1, 0x02C0($a0) ## 000002C0
/* 014B0 809E3FE0 24780008 */ addiu $t8, $v1, 0x0008 ## $t8 = 00000008
/* 014B4 809E3FE4 AC9802C0 */ sw $t8, 0x02C0($a0) ## 000002C0
/* 014B8 809E3FE8 AC790000 */ sw $t9, 0x0000($v1) ## 00000000
/* 014BC 809E3FEC 8FA80048 */ lw $t0, 0x0048($sp)
/* 014C0 809E3FF0 8509001C */ lh $t1, 0x001C($t0) ## 0000001C
/* 014C4 809E3FF4 312A0003 */ andi $t2, $t1, 0x0003 ## $t2 = 00000000
/* 014C8 809E3FF8 000A5880 */ sll $t3, $t2, 2
/* 014CC 809E3FFC 018B6021 */ addu $t4, $t4, $t3
/* 014D0 809E4000 8D8C4154 */ lw $t4, %lo(D_809E4154)($t4)
/* 014D4 809E4004 AC6C0004 */ sw $t4, 0x0004($v1) ## 00000004
.L809E4008:
/* 014D8 809E4008 8FAD0038 */ lw $t5, 0x0038($sp)
/* 014DC 809E400C 3C06809E */ lui $a2, %hi(D_809E41A0) ## $a2 = 809E0000
/* 014E0 809E4010 24C641A0 */ addiu $a2, $a2, %lo(D_809E41A0) ## $a2 = 809E41A0
/* 014E4 809E4014 27A40020 */ addiu $a0, $sp, 0x0020 ## $a0 = FFFFFFE8
/* 014E8 809E4018 24070532 */ addiu $a3, $zero, 0x0532 ## $a3 = 00000532
/* 014EC 809E401C 0C031AD5 */ jal Graph_CloseDisps
/* 014F0 809E4020 8DA50000 */ lw $a1, 0x0000($t5) ## 00000000
/* 014F4 809E4024 8FBF0014 */ lw $ra, 0x0014($sp)
/* 014F8 809E4028 27BD0038 */ addiu $sp, $sp, 0x0038 ## $sp = 00000000
/* 014FC 809E402C 03E00008 */ jr $ra
/* 01500 809E4030 00000000 */ nop
/* 01504 809E4034 00000000 */ nop
/* 01508 809E4038 00000000 */ nop
/* 0150C 809E403C 00000000 */ nop

View File

@ -1,36 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purpose registers
.section .data
.balign 16
glabel En_Daiku_InitVars
.word 0x01330400, 0x00000019, 0x01220000, 0x0000034C
.word EnDaiku_Init
.word EnDaiku_Destroy
.word EnDaiku_Update
.word EnDaiku_Draw
glabel D_809E4060
.word 0x0A000039, 0x20010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0x00120042, 0x00000000, 0x00000000
glabel D_809E408C
.word 0x00000000, 0x00000000, 0xFF000000
glabel D_809E4098
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_809E40B8
.word 0x06001AB0, 0x3F800000, 0x00000000, 0x00000000, 0x06007DE0, 0x3F800000, 0x00000000, 0x00000000, 0x0600885C, 0x3F800000, 0x00000000, 0x00000000, 0x06000C44, 0x3F800000, 0x00000000, 0x00000000, 0x06008164, 0x3F800000, 0x00000000, 0x00000000
glabel D_809E4108
.word 0x00000000, 0x43020000, 0x435C0000
glabel D_809E4114
.word 0x00000064, 0xC1A00000, 0x41B00000, 0x438C0000, 0x0000006E, 0x42480000, 0x43340000, 0x43AF0000, 0x00000064, 0xC2200000, 0x42700000, 0x42700000, 0x00000078
glabel D_809E4148
.word 0x00000000, 0x00000000, 0x42F00000
glabel D_809E4154
.word 0x06005BD0, 0x06005AC0, 0x06005990, 0x06005880
glabel D_809E4164
.word 0x442F0000, 0x44898000, 0x00000000

5
spec
View File

@ -2089,8 +2089,11 @@ endseg
beginseg
name "ovl_En_Daiku"
include "build/src/overlays/actors/ovl_En_Daiku/z_en_daiku.o"
include "build/data/overlays/actors/z_en_daiku.data.o"
#ifdef NON_MATCHING
include "build/src/overlays/actors/ovl_En_Daiku/ovl_En_Daiku_reloc.o"
#else
include "build/data/overlays/actors/z_en_daiku.reloc.o"
#endif
endseg
beginseg

View File

@ -1,17 +1,64 @@
#include "z_en_daiku.h"
#include "overlays/actors/ovl_En_GeldB/z_en_geldb.h"
#define FLAGS 0x00000019
#define THIS ((EnDaiku*)thisx)
typedef struct {
AnimationHeader* anim;
f32 unk_4;
u8 mode;
f32 transitionRate;
} EnDaikuAnimation;
typedef enum {
/* 0 */ ENDAIKU_ANIM_SHOUT,
/* 1 */ ENDAIKU_ANIM_STAND,
/* 2 */ ENDAIKU_ANIM_CELEBRATE,
/* 3 */ ENDAIKU_ANIM_RUN,
/* 4 */ ENDAIKU_ANIM_SIT
} EnDaikuAnimationIdx;
typedef struct {
Vec3f eyePosDeltaLocal;
s32 maxFramesActive;
} EnDaikuEscapeSubCamParam;
// state flags
// probably related to animating torso and head to look towards the player
#define ENDAIKU_STATEFLAG_1 (1 << 1)
// same
#define ENDAIKU_STATEFLAG_2 (1 << 2)
// the gerudo guard appeared (after talking to the carpenter)
#define ENDAIKU_STATEFLAG_GERUDOFIGHTING (1 << 3)
// the gerudo guard was defeated
#define ENDAIKU_STATEFLAG_GERUDODEFEATED (1 << 4)
typedef enum {
/* 0 */ ENDAIKU_STATE_CAN_TALK,
/* 2 */ ENDAIKU_STATE_TALKING = 2,
/* 3 */ ENDAIKU_STATE_NO_TALK
} EnDaikuTalkState;
void EnDaiku_Init(Actor* thisx, GlobalContext* globalCtx);
void EnDaiku_Destroy(Actor* thisx, GlobalContext* globalCtx);
void EnDaiku_Update(Actor* thisx, GlobalContext* globalCtx);
void EnDaiku_Draw(Actor* thisx, GlobalContext* globalCtx);
extern UNK_TYPE D_06007958;
void EnDaiku_TentIdle(EnDaiku* this, GlobalContext* globalCtx);
void EnDaiku_Jailed(EnDaiku* this, GlobalContext* globalCtx);
void EnDaiku_WaitFreedom(EnDaiku* this, GlobalContext* globalCtx);
void EnDaiku_InitEscape(EnDaiku* this, GlobalContext* globalCtx);
void EnDaiku_EscapeRotate(EnDaiku* this, GlobalContext* globalCtx);
void EnDaiku_InitSubCamera(EnDaiku* this, GlobalContext* globalCtx);
void EnDaiku_EscapeRun(EnDaiku* this, GlobalContext* globalCtx);
s32 EnDaiku_OverrideLimbDraw(GlobalContext* globalCtx, s32 limb, Gfx** dList, Vec3f* pos, Vec3s* rot, void* thisx);
void EnDaiku_PostLimbDraw(GlobalContext* globalCtx, s32 limb, Gfx** dList, Vec3s* rot, void* thisx);
extern FlexSkeletonHeader D_06007958;
/*
const ActorInit En_Daiku_InitVars = {
ACTOR_EN_DAIKU,
ACTORTYPE_NPC,
@ -23,39 +70,552 @@ const ActorInit En_Daiku_InitVars = {
(ActorFunc)EnDaiku_Update,
(ActorFunc)EnDaiku_Draw,
};
*/
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Daiku/func_809E2B30.s")
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Daiku/EnDaiku_Init.s")
static ColliderCylinderInit sCylinderInit = {
{ COLTYPE_UNK10, 0x00, 0x00, 0x39, 0x20, COLSHAPE_CYLINDER },
{ 0x00, { 0x00000000, 0x00, 0x00 }, { 0x00000000, 0x00, 0x00 }, 0x00, 0x00, 0x01 },
{ 18, 66, 0, { 0, 0, 0 } },
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Daiku/EnDaiku_Destroy.s")
static CollisionCheckInfoInit2 sColChkInfoInit2 = { 0, 0, 0, 0, 0xFF };
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Daiku/func_809E2F50.s")
static DamageTable sDamageTable = { 0 };
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Daiku/func_809E3068.s")
static EnDaikuAnimation sAnimations[] = {
{ 0x06001AB0, 1.0f, 0, 0 }, { 0x06007DE0, 1.0f, 0, 0 }, { 0x0600885C, 1.0f, 0, 0 },
{ 0x06000C44, 1.0f, 0, 0 }, { 0x06008164, 1.0f, 0, 0 },
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Daiku/func_809E3338.s")
static EnDaikuEscapeSubCamParam sEscapeSubCamParams[] = {
{ { 0, 130, 220 }, 100 },
{ { -20, 22, 280 }, 110 },
{ { 50, 180, 350 }, 100 },
{ { -40, 60, 60 }, 120 },
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Daiku/func_809E336C.s")
void EnDaiku_ChangeAnim(EnDaiku* this, s32 animIndex, s32* currentAnimIndex) {
f32 transitionRate;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Daiku/func_809E3438.s")
if (*currentAnimIndex < 0 || *currentAnimIndex == animIndex) {
transitionRate = 0.0f;
} else {
transitionRate = sAnimations[animIndex].transitionRate;
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Daiku/func_809E349C.s")
SkelAnime_ChangeAnim(&this->skelAnime, sAnimations[animIndex].anim, 1.0f, 0.0f,
SkelAnime_GetFrameCount(sAnimations[animIndex].anim), sAnimations[animIndex].mode,
transitionRate);
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Daiku/func_809E36A4.s")
*currentAnimIndex = animIndex;
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Daiku/func_809E3710.s")
void EnDaiku_Init(Actor* thisx, GlobalContext* globalCtx) {
EnDaiku* this = THIS;
s32 pad;
s32 noKill = true;
s32 isFree = false;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Daiku/func_809E389C.s")
if ((this->actor.params & 3) == 0 && (gSaveContext.eventChkInf[9] & 1)) {
isFree = true;
} else if ((this->actor.params & 3) == 1 && (gSaveContext.eventChkInf[9] & 2)) {
isFree = true;
} else if ((this->actor.params & 3) == 2 && (gSaveContext.eventChkInf[9] & 4)) {
isFree = true;
} else if ((this->actor.params & 3) == 3 && (gSaveContext.eventChkInf[9] & 8)) {
isFree = true;
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Daiku/func_809E3954.s")
if (isFree == true && globalCtx->sceneNum == SCENE_GERUDOWAY) {
noKill = false;
} else if (isFree == false && globalCtx->sceneNum == SCENE_TENT) {
noKill = false;
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Daiku/func_809E3A8C.s")
this->startFightSwitchFlag = this->actor.shape.rot.z & 0x3F;
this->actor.shape.rot.z = 0;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Daiku/EnDaiku_Update.s")
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawFunc_Circle, 40.0f);
SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06007958, NULL, this->limbDrawTable, this->transitionDrawTable,
17);
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Daiku/EnDaiku_Draw.s")
if (!noKill) {
Actor_Kill(&this->actor);
return;
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Daiku/func_809E3EF8.s")
Collider_InitCylinder(globalCtx, &this->collider);
Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit);
func_80061EFC(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit2);
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Daiku/func_809E3F7C.s")
SkelAnime_ChangeAnim(&this->skelAnime, sAnimations[0].anim, 1.0f, 0.0f,
SkelAnime_GetFrameCount(sAnimations[0].anim), sAnimations[0].mode,
sAnimations[0].transitionRate);
func_8002E4B4(globalCtx, &this->actor, 0.0f, 0.0f, 0.0f, 4);
this->actor.unk_1F = 6;
this->currentAnimIndex = -1;
this->runSpeed = 5.0f;
this->initRot = this->actor.posRot.rot;
this->initPos = this->actor.posRot.pos;
if (globalCtx->sceneNum == SCENE_GERUDOWAY) {
EnDaiku_ChangeAnim(this, ENDAIKU_ANIM_STAND, &this->currentAnimIndex);
this->stateFlags |= ENDAIKU_STATEFLAG_1 | ENDAIKU_STATEFLAG_2;
this->actionFunc = EnDaiku_Jailed;
} else {
if ((this->actor.params & 3) == 1 || (this->actor.params & 3) == 3) {
EnDaiku_ChangeAnim(this, ENDAIKU_ANIM_SIT, &this->currentAnimIndex);
this->stateFlags |= ENDAIKU_STATEFLAG_1;
} else {
EnDaiku_ChangeAnim(this, ENDAIKU_ANIM_SHOUT, &this->currentAnimIndex);
this->stateFlags |= ENDAIKU_STATEFLAG_1 | ENDAIKU_STATEFLAG_2;
}
this->skelAnime.animCurrentFrame = (s32)(Math_Rand_ZeroOne() * this->skelAnime.animFrameCount);
this->actionFunc = EnDaiku_TentIdle;
}
}
void EnDaiku_Destroy(Actor* thisx, GlobalContext* globalCtx) {
EnDaiku* this = THIS;
Collider_DestroyCylinder(globalCtx, &this->collider);
}
s32 EnDaiku_UpdateTalking(EnDaiku* this, GlobalContext* globalCtx) {
s32 newTalkState = ENDAIKU_STATE_TALKING;
if (func_8010BDBC(&globalCtx->msgCtx) == 6) {
if (globalCtx->sceneNum == SCENE_GERUDOWAY) {
if (func_80106BC8(globalCtx) != 0) {
if (this->actor.textId == 0x6007) {
Flags_SetSwitch(globalCtx, this->startFightSwitchFlag);
newTalkState = ENDAIKU_STATE_CAN_TALK;
} else {
this->actionFunc = EnDaiku_InitEscape;
newTalkState = ENDAIKU_STATE_NO_TALK;
}
}
} else if (globalCtx->sceneNum == SCENE_TENT) {
if (func_80106BC8(globalCtx) != 0) {
switch (this->actor.textId) {
case 0x6061:
gSaveContext.infTable[23] |= 0x40;
break;
case 0x6064:
gSaveContext.infTable[23] |= 0x100;
break;
}
newTalkState = ENDAIKU_STATE_CAN_TALK;
}
}
}
return newTalkState;
}
#ifdef NON_MATCHING
// regalloc
void EnDaiku_UpdateText(EnDaiku* this, GlobalContext* globalCtx) {
s32 wannabeV0;
s32 wannabeV1;
s16 sp2E;
s16 sp2C;
if (this->talkState == ENDAIKU_STATE_TALKING) {
this->talkState = EnDaiku_UpdateTalking(this, globalCtx);
} else if (func_8002F194(&this->actor, globalCtx)) {
this->talkState = ENDAIKU_STATE_TALKING;
} else {
func_8002F374(globalCtx, &this->actor, &sp2E, &sp2C);
if (sp2E >= 0 && sp2E <= 320 && sp2C >= 0 && sp2C <= 240 && this->talkState == ENDAIKU_STATE_CAN_TALK &&
func_8002F2CC(&this->actor, globalCtx, 100.0f) == 1) {
if (globalCtx->sceneNum == SCENE_GERUDOWAY) {
if (this->stateFlags & ENDAIKU_STATEFLAG_GERUDODEFEATED) {
// wannabeV0 uses v1 and wannabeV1 uses v0, the opposite is wanted
wannabeV0 = gSaveContext.eventChkInf[9];
// moving the wannabeV1 initialization to its declaration fixes regalloc but breaks earlier codegen
wannabeV1 = 0;
if (wannabeV0 & 1) {
wannabeV1++;
}
if (wannabeV0 & 2) {
wannabeV1++;
}
if (wannabeV0 & 4) {
wannabeV1++;
}
if (wannabeV0 & 8) {
wannabeV1++;
}
switch (wannabeV1) {
case 0:
this->actor.textId = 0x605B;
break;
case 1:
this->actor.textId = 0x605C;
break;
case 2:
this->actor.textId = 0x605D;
break;
case 3:
this->actor.textId = 0x605E;
break;
}
} else if (!(this->stateFlags &
(ENDAIKU_STATEFLAG_GERUDOFIGHTING | ENDAIKU_STATEFLAG_GERUDODEFEATED))) {
this->actor.textId = 0x6007;
}
} else if (globalCtx->sceneNum == SCENE_TENT) {
switch (this->actor.params & 3) {
case 0:
if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT)) {
this->actor.textId = 0x6060;
} else {
this->actor.textId = 0x605F;
}
break;
case 1:
if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT)) {
this->actor.textId = 0x6063;
} else {
if (!(gSaveContext.infTable[23] & 0x40)) {
this->actor.textId = 0x6061;
} else {
this->actor.textId = 0x6062;
}
}
break;
case 2:
if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT)) {
this->actor.textId = 0x6066;
} else {
if (!(gSaveContext.infTable[23] & 0x100)) {
this->actor.textId = 0x6064;
} else {
this->actor.textId = 0x6065;
}
}
break;
case 3:
if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT)) {
this->actor.textId = 0x6068;
} else {
this->actor.textId = 0x6067;
}
break;
}
}
}
}
}
#else
void EnDaiku_UpdateText(EnDaiku* this, GlobalContext* globalCtx);
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Daiku/EnDaiku_UpdateText.s")
#endif
/**
* The carpenter is idling in the tent.
*/
void EnDaiku_TentIdle(EnDaiku* this, GlobalContext* globalCtx) {
SkelAnime_FrameUpdateMatrix(&this->skelAnime);
EnDaiku_UpdateText(this, globalCtx);
}
/**
* The carpenter is jailed in a Gerudo fortress cell, talking to him starts a fight against a gerudo guard
*/
void EnDaiku_Jailed(EnDaiku* this, GlobalContext* globalCtx) {
EnGeldB* gerudo;
s32 temp_t9;
s32 temp_v1;
if (!(this->stateFlags & ENDAIKU_STATEFLAG_GERUDOFIGHTING)) {
EnDaiku_UpdateText(this, globalCtx);
}
SkelAnime_FrameUpdateMatrix(&this->skelAnime);
gerudo = (EnGeldB*)Actor_Find(&globalCtx->actorCtx, ACTOR_EN_GELDB, ACTORTYPE_ENEMY);
if (gerudo == NULL) {
this->stateFlags |= ENDAIKU_STATEFLAG_GERUDODEFEATED;
this->stateFlags &= ~ENDAIKU_STATEFLAG_GERUDOFIGHTING;
EnDaiku_ChangeAnim(this, ENDAIKU_ANIM_CELEBRATE, &this->currentAnimIndex);
this->actionFunc = EnDaiku_WaitFreedom;
} else if (!(this->stateFlags & ENDAIKU_STATEFLAG_GERUDOFIGHTING) && gerudo->unk_318 == 0) {
this->stateFlags |= ENDAIKU_STATEFLAG_GERUDOFIGHTING;
this->actor.flags &= ~9;
}
}
/**
* The player defeated the gerudo guard and the carpenter is waiting for the cell door to be opened, and for the player
* to then talk to him
*/
void EnDaiku_WaitFreedom(EnDaiku* this, GlobalContext* globalCtx) {
SkelAnime_FrameUpdateMatrix(&this->skelAnime);
if (Flags_GetSwitch(globalCtx, this->actor.params >> 8 & 0x3F)) {
this->actor.flags |= 9;
EnDaiku_UpdateText(this, globalCtx);
}
}
/**
* The carpenter is free, initializes his running away animation
*/
void EnDaiku_InitEscape(EnDaiku* this, GlobalContext* globalCtx) {
Path* path;
f32 dxz;
f32 dx;
f32 dz;
Vec3s* pointPos;
s32 exitLoop;
func_800F5C64(0x51);
EnDaiku_ChangeAnim(this, ENDAIKU_ANIM_RUN, &this->currentAnimIndex);
this->stateFlags &= ~(ENDAIKU_STATEFLAG_1 | ENDAIKU_STATEFLAG_2);
gSaveContext.eventChkInf[9] |= 1 << (this->actor.params & 3);
this->actor.gravity = -1.0f;
this->escapeSubCamTimer = sEscapeSubCamParams[this->actor.params & 3].maxFramesActive;
EnDaiku_InitSubCamera(this, globalCtx);
exitLoop = false;
path = &globalCtx->setupPathList[this->actor.params >> 4 & 0xF];
while (!exitLoop) {
pointPos = (Vec3s*)SEGMENTED_TO_VIRTUAL(path->points) + this->waypoint;
dx = pointPos->x - this->actor.posRot.pos.x;
dz = pointPos->z - this->actor.posRot.pos.z;
this->rotYtowardsPath = Math_atan2f(dx, dz) * (0x8000 / M_PI);
dxz = sqrtf(SQ(dx) + SQ(dz));
if (dxz > 10.0f) {
exitLoop = true;
} else {
this->waypoint++;
}
}
this->actionFunc = EnDaiku_EscapeRotate;
}
/**
* The carpenter is rotating towards where he is going next
*/
void EnDaiku_EscapeRotate(EnDaiku* this, GlobalContext* globalCtx) {
s16 diff;
diff = Math_SmoothScaleMaxMinS(&this->actor.shape.rot.y, this->rotYtowardsPath, 1, 0x1388, 0);
SkelAnime_FrameUpdateMatrix(&this->skelAnime);
if (diff == 0) {
this->actionFunc = EnDaiku_EscapeRun;
this->actionFunc(this, globalCtx);
}
}
void EnDaiku_InitSubCamera(EnDaiku* this, GlobalContext* globalCtx) {
s32 pad;
Vec3f eyePosDeltaLocal;
Vec3f eyePosDeltaWorld;
this->subCamActive = true;
this->escapeSubCamTimer = sEscapeSubCamParams[this->actor.params & 3].maxFramesActive;
eyePosDeltaLocal.x = sEscapeSubCamParams[this->actor.params & 3].eyePosDeltaLocal.x;
eyePosDeltaLocal.y = sEscapeSubCamParams[this->actor.params & 3].eyePosDeltaLocal.y;
eyePosDeltaLocal.z = sEscapeSubCamParams[this->actor.params & 3].eyePosDeltaLocal.z;
Matrix_RotateY(this->actor.posRot.rot.y * (M_PI / 0x8000), MTXMODE_NEW);
Matrix_MultVec3f(&eyePosDeltaLocal, &eyePosDeltaWorld);
this->subCamEyeInit.x = this->subCamEye.x = this->actor.posRot.pos.x + eyePosDeltaWorld.x;
this->subCamEyeInit.y = this->subCamEye.y = this->actor.posRot.pos.y + eyePosDeltaWorld.y;
if (1) {}
this->subCamEyeInit.z = this->subCamEye.z = this->actor.posRot.pos.z + eyePosDeltaWorld.z;
if (1) {}
this->subCamAtTarget.x = this->subCamAt.x = this->actor.posRot.pos.x;
this->subCamAtTarget.y = this->subCamAt.y = this->actor.posRot.pos.y + 60.0f;
if (1) {}
this->subCamAtTarget.z = this->subCamAt.z = this->actor.posRot.pos.z;
this->subCamId = Gameplay_CreateSubCamera(globalCtx);
Gameplay_ChangeCameraStatus(globalCtx, 0, 1);
Gameplay_ChangeCameraStatus(globalCtx, this->subCamId, 7);
func_800C04D8(globalCtx, this->subCamId, &this->subCamAt, &this->subCamEye);
func_800C0704(globalCtx, this->subCamId, globalCtx->mainCamera.fov);
func_8002DF54(globalCtx, &this->actor, 1);
}
void EnDaiku_UpdateSubCamera(EnDaiku* this, GlobalContext* globalCtx) {
s32 pad;
this->subCamAtTarget.x = this->actor.posRot.pos.x;
this->subCamAtTarget.y = this->actor.posRot.pos.y + 60.0f;
this->subCamAtTarget.z = this->actor.posRot.pos.z;
Math_SmoothScaleMaxMinF(&this->subCamAt.x, this->subCamAtTarget.x, 1.0f, 1000.0f, 0.0f);
Math_SmoothScaleMaxMinF(&this->subCamAt.y, this->subCamAtTarget.y, 1.0f, 1000.0f, 0.0f);
Math_SmoothScaleMaxMinF(&this->subCamAt.z, this->subCamAtTarget.z, 1.0f, 1000.0f, 0.0f);
func_800C04D8(globalCtx, this->subCamId, &this->subCamAt, &this->subCamEye);
}
void EnDaiku_EscapeSuccess(EnDaiku* this, GlobalContext* globalCtx) {
static Vec3f D_809E4148 = { 0.0f, 0.0f, 120.0f };
Actor* gerudoGuard;
Vec3f vec;
Gameplay_ClearCamera(globalCtx, this->subCamId);
Gameplay_ChangeCameraStatus(globalCtx, 0, 7);
this->subCamActive = false;
if ((gSaveContext.eventChkInf[9] & 0xF) == 0xF) {
Matrix_RotateY(this->initRot.y * (M_PI / 0x8000), MTXMODE_NEW);
Matrix_MultVec3f(&D_809E4148, &vec);
gerudoGuard =
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_GE3, this->initPos.x + vec.x, this->initPos.y + vec.y,
this->initPos.z + vec.z, 0, Math_atan2f(-vec.x, -vec.z) * (0x8000 / M_PI), 0, 2);
if (gerudoGuard == NULL) {
Actor_Kill(&this->actor);
}
} else {
func_8002DF54(globalCtx, &this->actor, 7);
}
}
/**
* The carpenter is running away
*/
void EnDaiku_EscapeRun(EnDaiku* this, GlobalContext* globalCtx) {
s32 pad1;
Path* path;
s16 ry;
f32 dx;
f32 dz;
s32 pad2;
f32 dxz;
Vec3s* pointPos;
path = &globalCtx->setupPathList[this->actor.params >> 4 & 0xF];
pointPos = (Vec3s*)SEGMENTED_TO_VIRTUAL(path->points) + this->waypoint;
dx = pointPos->x - this->actor.posRot.pos.x;
dz = pointPos->z - this->actor.posRot.pos.z;
ry = Math_atan2f(dx, dz) * (0x8000 / M_PI);
dxz = sqrtf(SQ(dx) + SQ(dz));
if (dxz <= 20.88f) {
this->waypoint++;
if (this->waypoint >= path->count) {
if (this->subCamActive) {
EnDaiku_EscapeSuccess(this, globalCtx);
}
Actor_Kill(&this->actor);
return;
}
}
Math_SmoothScaleMaxMinS(&this->actor.shape.rot.y, ry, 1, 0xFA0, 0);
this->actor.posRot.rot.y = this->actor.shape.rot.y;
Math_SmoothScaleMaxMinF(&this->actor.speedXZ, this->runSpeed, 0.6f, dxz, 0.0f);
Actor_MoveForward(&this->actor);
func_8002E4B4(globalCtx, &this->actor, 0.0f, 0.0f, 0.0f, 4);
if (this->subCamActive) {
EnDaiku_UpdateSubCamera(this, globalCtx);
if (this->escapeSubCamTimer-- <= 0) {
EnDaiku_EscapeSuccess(this, globalCtx);
}
}
SkelAnime_FrameUpdateMatrix(&this->skelAnime);
}
void EnDaiku_Update(Actor* thisx, GlobalContext* globalCtx) {
EnDaiku* this = THIS;
s32 curFrame;
Player* player = PLAYER;
if (this->currentAnimIndex == ENDAIKU_ANIM_RUN) {
curFrame = this->skelAnime.animCurrentFrame;
if (curFrame == 6 || curFrame == 15) {
Audio_PlayActorSound2(&this->actor, NA_SE_EN_MORIBLIN_WALK);
}
}
Collider_CylinderUpdate(&this->actor, &this->collider);
CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->collider.base);
this->actionFunc(this, globalCtx);
if (this->stateFlags & ENDAIKU_STATEFLAG_1) {
this->unk_244.unk_18.x = player->actor.posRot2.pos.x;
this->unk_244.unk_18.y = player->actor.posRot2.pos.y;
this->unk_244.unk_18.z = player->actor.posRot2.pos.z;
if (this->stateFlags & ENDAIKU_STATEFLAG_2) {
func_80034A14(&this->actor, &this->unk_244, 0, 4);
} else {
func_80034A14(&this->actor, &this->unk_244, 0, 2);
}
}
}
void EnDaiku_Draw(Actor* thisx, GlobalContext* globalCtx) {
EnDaiku* this = THIS;
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_en_daiku.c", 1227);
func_80093D18(globalCtx->state.gfxCtx);
if ((thisx->params & 3) == 0) {
gDPSetEnvColor(POLY_OPA_DISP++, 170, 10, 70, 255);
} else if ((thisx->params & 3) == 1) {
gDPSetEnvColor(POLY_OPA_DISP++, 170, 200, 255, 255);
} else if ((thisx->params & 3) == 2) {
gDPSetEnvColor(POLY_OPA_DISP++, 0, 230, 70, 255);
} else if ((thisx->params & 3) == 3) {
gDPSetEnvColor(POLY_OPA_DISP++, 200, 0, 150, 255);
}
SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount,
EnDaiku_OverrideLimbDraw, EnDaiku_PostLimbDraw, this);
CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_en_daiku.c", 1255);
}
s32 EnDaiku_OverrideLimbDraw(GlobalContext* globalCtx, s32 limb, Gfx** dList, Vec3f* pos, Vec3s* rot, void* thisx) {
EnDaiku* this = THIS;
switch (limb) {
case 8: // torso
rot->x += this->unk_244.unk_0E.y;
rot->y -= this->unk_244.unk_0E.x;
break;
case 15: // head
rot->x += this->unk_244.unk_08.y;
rot->z += this->unk_244.unk_08.x;
break;
}
return 0;
}
void EnDaiku_PostLimbDraw(GlobalContext* globalCtx, s32 limb, Gfx** dList, Vec3s* rot, void* thisx) {
static Gfx* hairDLists[] = { 0x06005BD0, 0x06005AC0, 0x06005990, 0x06005880 };
static Vec3f targetPosHeadLocal = { 700, 1100, 0 };
EnDaiku* this = THIS;
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_en_daiku.c", 1323);
if (limb == 15) { // head
Matrix_MultVec3f(&targetPosHeadLocal, &this->actor.posRot2.pos);
gSPDisplayList(POLY_OPA_DISP++, hairDLists[this->actor.params & 3]);
}
CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_en_daiku.c", 1330);
}

View File

@ -6,9 +6,35 @@
struct EnDaiku;
typedef void (*EnDaikuActionFunc)(struct EnDaiku*, GlobalContext*);
typedef struct EnDaiku {
/* 0x0000 */ Actor actor;
/* 0x014C */ char unk_14C[0x200];
/* 0x014C */ SkelAnime skelAnime;
/* 0x0190 */ EnDaikuActionFunc actionFunc;
/* 0x0194 */ ColliderCylinder collider;
/* 0x01E0 */ char unk_1E0[4];
/* 0x01E4 */ s32 talkState;
/* 0x01E8 */ char unk_1E8[4];
/* 0x01EC */ s32 waypoint;
/* 0x01F0 */ f32 runSpeed;
/* 0x01F4 */ s32 currentAnimIndex;
/* 0x01F8 */ char unk_1F8[4];
/* 0x01FC */ s32 subCamActive;
/* 0x0200 */ s32 escapeSubCamTimer;
/* 0x0204 */ s32 subCamId;
/* 0x0208 */ s16 rotYtowardsPath;
/* 0x020C */ Vec3f subCamEyeInit;
/* 0x0218 */ Vec3f subCamAtTarget;
/* 0x0224 */ Vec3f subCamEye;
/* 0x0230 */ Vec3f subCamAt;
/* 0x023C */ s32 stateFlags;
/* 0x0240 */ s32 startFightSwitchFlag;
/* 0x0244 */ struct_80034A14_arg1 unk_244; // probably related to animating torso and head towards the player
/* 0x026C */ Vec3s limbDrawTable[17];
/* 0x02D2 */ Vec3s transitionDrawTable[17];
/* 0x0338 */ Vec3s initRot;
/* 0x0340 */ Vec3f initPos;
} EnDaiku; // size = 0x034C
extern const ActorInit En_Daiku_InitVars;

View File

@ -8,7 +8,9 @@ struct EnGeldB;
typedef struct EnGeldB {
/* 0x0000 */ Actor actor;
/* 0x014C */ char unk_14C[0x398];
/* 0x014C */ char unk_14C[0x1CC];
/* 0x0318 */ s16 unk_318;
/* 0x031A */ char unk_31A[0x1CA];
} EnGeldB; // size = 0x04E4
extern const ActorInit En_Geldb_InitVars;

View File

@ -923,6 +923,9 @@ D_06008688 = 0x06008688;
D_06000B70 = 0x06000B70;
D_06001F10 = 0x06001F10;
// z_en_daiku
D_06007958 = 0x06007958;
// z_en_dog
D_06007290 = 0x06007290;
D_06001368 = 0x06001368;