mirror of https://github.com/zeldaret/oot.git
242 lines
12 KiB
ArmAsm
242 lines
12 KiB
ArmAsm
glabel func_800F2A04
|
|
/* B69BA4 800F2A04 3C0E8017 */ lui $t6, %hi(D_8016BAB0) # $t6, 0x8017
|
|
/* B69BA8 800F2A08 8DCEBAB0 */ lw $t6, %lo(D_8016BAB0)($t6)
|
|
/* B69BAC 800F2A0C 27BDFFE0 */ addiu $sp, $sp, -0x20
|
|
/* B69BB0 800F2A10 AFBF001C */ sw $ra, 0x1c($sp)
|
|
/* B69BB4 800F2A14 31CF0002 */ andi $t7, $t6, 2
|
|
/* B69BB8 800F2A18 11E00003 */ beqz $t7, .L800F2A28
|
|
/* B69BBC 800F2A1C 3C058017 */ lui $a1, %hi(D_8016BAB8) # $a1, 0x8017
|
|
/* B69BC0 800F2A20 10000002 */ b .L800F2A2C
|
|
/* B69BC4 800F2A24 24060008 */ li $a2, 8
|
|
.L800F2A28:
|
|
/* B69BC8 800F2A28 24060001 */ li $a2, 1
|
|
.L800F2A2C:
|
|
/* B69BCC 800F2A2C 8CA5BAB8 */ lw $a1, %lo(D_8016BAB8)($a1)
|
|
/* B69BD0 800F2A30 3C098013 */ lui $t1, %hi(D_80131F18) # $t1, 0x8013
|
|
/* B69BD4 800F2A34 25291F18 */ addiu $t1, %lo(D_80131F18) # addiu $t1, $t1, 0x1f18
|
|
/* B69BD8 800F2A38 30B80800 */ andi $t8, $a1, 0x800
|
|
/* B69BDC 800F2A3C 13000008 */ beqz $t8, .L800F2A60
|
|
/* B69BE0 800F2A40 30AC0400 */ andi $t4, $a1, 0x400
|
|
/* B69BE4 800F2A44 91230000 */ lbu $v1, ($t1)
|
|
/* B69BE8 800F2A48 240B0003 */ li $t3, 3
|
|
/* B69BEC 800F2A4C 18600003 */ blez $v1, .L800F2A5C
|
|
/* B69BF0 800F2A50 2479FFFF */ addiu $t9, $v1, -1
|
|
/* B69BF4 800F2A54 10000002 */ b .L800F2A60
|
|
/* B69BF8 800F2A58 A1390000 */ sb $t9, ($t1)
|
|
.L800F2A5C:
|
|
/* B69BFC 800F2A5C A12B0000 */ sb $t3, ($t1)
|
|
.L800F2A60:
|
|
/* B69C00 800F2A60 3C098013 */ lui $t1, %hi(D_80131F18) # $t1, 0x8013
|
|
/* B69C04 800F2A64 11800008 */ beqz $t4, .L800F2A88
|
|
/* B69C08 800F2A68 25291F18 */ addiu $t1, %lo(D_80131F18) # addiu $t1, $t1, 0x1f18
|
|
/* B69C0C 800F2A6C 91230000 */ lbu $v1, ($t1)
|
|
/* B69C10 800F2A70 28610003 */ slti $at, $v1, 3
|
|
/* B69C14 800F2A74 10200003 */ beqz $at, .L800F2A84
|
|
/* B69C18 800F2A78 246D0001 */ addiu $t5, $v1, 1
|
|
/* B69C1C 800F2A7C 10000002 */ b .L800F2A88
|
|
/* B69C20 800F2A80 A12D0000 */ sb $t5, ($t1)
|
|
.L800F2A84:
|
|
/* B69C24 800F2A84 A1200000 */ sb $zero, ($t1)
|
|
.L800F2A88:
|
|
/* B69C28 800F2A88 30AE0200 */ andi $t6, $a1, 0x200
|
|
/* B69C2C 800F2A8C 11C00036 */ beqz $t6, .L800F2B68
|
|
/* B69C30 800F2A90 00000000 */ nop
|
|
/* B69C34 800F2A94 91230000 */ lbu $v1, ($t1)
|
|
/* B69C38 800F2A98 28610002 */ slti $at, $v1, 2
|
|
/* B69C3C 800F2A9C 1020001A */ beqz $at, .L800F2B08
|
|
/* B69C40 800F2AA0 00602025 */ move $a0, $v1
|
|
/* B69C44 800F2AA4 1460000F */ bnez $v1, .L800F2AE4
|
|
/* B69C48 800F2AA8 3C088013 */ lui $t0, %hi(D_80131F20)
|
|
/* B69C4C 800F2AAC 3C088013 */ lui $t0, %hi(D_80131F20) # $t0, 0x8013
|
|
/* B69C50 800F2AB0 25081F20 */ addiu $t0, %lo(D_80131F20) # addiu $t0, $t0, 0x1f20
|
|
/* B69C54 800F2AB4 00037840 */ sll $t7, $v1, 1
|
|
/* B69C58 800F2AB8 010F1021 */ addu $v0, $t0, $t7
|
|
/* B69C5C 800F2ABC 94440000 */ lhu $a0, ($v0)
|
|
/* B69C60 800F2AC0 3C198013 */ lui $t9, %hi(D_80131E24) # $t9, 0x8013
|
|
/* B69C64 800F2AC4 18800003 */ blez $a0, .L800F2AD4
|
|
/* B69C68 800F2AC8 2498FFFF */ addiu $t8, $a0, -1
|
|
/* B69C6C 800F2ACC 10000026 */ b .L800F2B68
|
|
/* B69C70 800F2AD0 A4580000 */ sh $t8, ($v0)
|
|
.L800F2AD4:
|
|
/* B69C74 800F2AD4 97391E24 */ lhu $t9, %lo(D_80131E24)($t9)
|
|
/* B69C78 800F2AD8 272BFFFF */ addiu $t3, $t9, -1
|
|
/* B69C7C 800F2ADC 10000022 */ b .L800F2B68
|
|
/* B69C80 800F2AE0 A44B0000 */ sh $t3, ($v0)
|
|
.L800F2AE4:
|
|
/* B69C84 800F2AE4 25081F20 */ addiu $t0, %lo(D_80131F20)
|
|
/* B69C88 800F2AE8 00036040 */ sll $t4, $v1, 1
|
|
/* B69C8C 800F2AEC 010C1021 */ addu $v0, $t0, $t4
|
|
/* B69C90 800F2AF0 944D0000 */ lhu $t5, ($v0)
|
|
/* B69C94 800F2AF4 01A67823 */ subu $t7, $t5, $a2
|
|
/* B69C98 800F2AF8 A44F0000 */ sh $t7, ($v0)
|
|
/* B69C9C 800F2AFC 31F801FF */ andi $t8, $t7, 0x1ff
|
|
/* B69CA0 800F2B00 10000019 */ b .L800F2B68
|
|
/* B69CA4 800F2B04 A4580000 */ sh $t8, ($v0)
|
|
.L800F2B08:
|
|
/* B69CA8 800F2B08 24010003 */ li $at, 3
|
|
/* B69CAC 800F2B0C 14810010 */ bne $a0, $at, .L800F2B50
|
|
/* B69CB0 800F2B10 3C088013 */ lui $t0, %hi(D_80131F20) # $t0, 0x8013
|
|
/* B69CB4 800F2B14 25081F20 */ addiu $t0, %lo(D_80131F20) # addiu $t0, $t0, 0x1f20
|
|
/* B69CB8 800F2B18 95190000 */ lhu $t9, ($t0)
|
|
/* B69CBC 800F2B1C 3C0C8013 */ lui $t4, %hi(D_8013331C)
|
|
/* B69CC0 800F2B20 950D0002 */ lhu $t5, 2($t0)
|
|
/* B69CC4 800F2B24 00195880 */ sll $t3, $t9, 2
|
|
/* B69CC8 800F2B28 018B6021 */ addu $t4, $t4, $t3
|
|
/* B69CCC 800F2B2C 8D8C331C */ lw $t4, %lo(D_8013331C)($t4)
|
|
/* B69CD0 800F2B30 000D7080 */ sll $t6, $t5, 2
|
|
/* B69CD4 800F2B34 3C058017 */ lui $a1, %hi(D_8016BAB8) # $a1, 0x8017
|
|
/* B69CD8 800F2B38 018E1021 */ addu $v0, $t4, $t6
|
|
/* B69CDC 800F2B3C 904F0000 */ lbu $t7, ($v0)
|
|
/* B69CE0 800F2B40 01E6C023 */ subu $t8, $t7, $a2
|
|
/* B69CE4 800F2B44 A0580000 */ sb $t8, ($v0)
|
|
/* B69CE8 800F2B48 10000007 */ b .L800F2B68
|
|
/* B69CEC 800F2B4C 8CA5BAB8 */ lw $a1, %lo(D_8016BAB8)($a1)
|
|
.L800F2B50:
|
|
/* B69CF0 800F2B50 3C0A8013 */ lui $t2, %hi(D_80131F1C) # $t2, 0x8013
|
|
/* B69CF4 800F2B54 254A1F1C */ addiu $t2, %lo(D_80131F1C) # addiu $t2, $t2, 0x1f1c
|
|
/* B69CF8 800F2B58 91590000 */ lbu $t9, ($t2)
|
|
/* B69CFC 800F2B5C 272BFFFF */ addiu $t3, $t9, -1
|
|
/* B69D00 800F2B60 316D000F */ andi $t5, $t3, 0xf
|
|
/* B69D04 800F2B64 A14D0000 */ sb $t5, ($t2)
|
|
.L800F2B68:
|
|
/* B69D08 800F2B68 3C088013 */ lui $t0, %hi(D_80131F20) # $t0, 0x8013
|
|
/* B69D0C 800F2B6C 3C0A8013 */ lui $t2, %hi(D_80131F1C) # $t2, 0x8013
|
|
/* B69D10 800F2B70 30AC0100 */ andi $t4, $a1, 0x100
|
|
/* B69D14 800F2B74 254A1F1C */ addiu $t2, %lo(D_80131F1C) # addiu $t2, $t2, 0x1f1c
|
|
/* B69D18 800F2B78 1180002E */ beqz $t4, .L800F2C34
|
|
/* B69D1C 800F2B7C 25081F20 */ addiu $t0, %lo(D_80131F20) # addiu $t0, $t0, 0x1f20
|
|
/* B69D20 800F2B80 91230000 */ lbu $v1, ($t1)
|
|
/* B69D24 800F2B84 28610002 */ slti $at, $v1, 2
|
|
/* B69D28 800F2B88 10200015 */ beqz $at, .L800F2BE0
|
|
/* B69D2C 800F2B8C 00602025 */ move $a0, $v1
|
|
/* B69D30 800F2B90 00037040 */ sll $t6, $v1, 1
|
|
/* B69D34 800F2B94 1460000C */ bnez $v1, .L800F2BC8
|
|
/* B69D38 800F2B98 010E1021 */ addu $v0, $t0, $t6
|
|
/* B69D3C 800F2B9C 3C0F8013 */ lui $t7, %hi(D_80131E24) # $t7, 0x8013
|
|
/* B69D40 800F2BA0 95EF1E24 */ lhu $t7, %lo(D_80131E24)($t7)
|
|
/* B69D44 800F2BA4 94440000 */ lhu $a0, ($v0)
|
|
/* B69D48 800F2BA8 25F8FFFF */ addiu $t8, $t7, -1
|
|
/* B69D4C 800F2BAC 0098082A */ slt $at, $a0, $t8
|
|
/* B69D50 800F2BB0 10200003 */ beqz $at, .L800F2BC0
|
|
/* B69D54 800F2BB4 24990001 */ addiu $t9, $a0, 1
|
|
/* B69D58 800F2BB8 1000001E */ b .L800F2C34
|
|
/* B69D5C 800F2BBC A4590000 */ sh $t9, ($v0)
|
|
.L800F2BC0:
|
|
/* B69D60 800F2BC0 1000001C */ b .L800F2C34
|
|
/* B69D64 800F2BC4 A4400000 */ sh $zero, ($v0)
|
|
.L800F2BC8:
|
|
/* B69D68 800F2BC8 944B0000 */ lhu $t3, ($v0)
|
|
/* B69D6C 800F2BCC 01666021 */ addu $t4, $t3, $a2
|
|
/* B69D70 800F2BD0 A44C0000 */ sh $t4, ($v0)
|
|
/* B69D74 800F2BD4 318E01FF */ andi $t6, $t4, 0x1ff
|
|
/* B69D78 800F2BD8 10000016 */ b .L800F2C34
|
|
/* B69D7C 800F2BDC A44E0000 */ sh $t6, ($v0)
|
|
.L800F2BE0:
|
|
/* B69D80 800F2BE0 24010003 */ li $at, 3
|
|
/* B69D84 800F2BE4 54810010 */ bnel $a0, $at, .L800F2C28
|
|
/* B69D88 800F2BE8 914F0000 */ lbu $t7, ($t2)
|
|
/* B69D8C 800F2BEC 950F0000 */ lhu $t7, ($t0)
|
|
/* B69D90 800F2BF0 3C198013 */ lui $t9, %hi(D_8013331C)
|
|
/* B69D94 800F2BF4 950B0002 */ lhu $t3, 2($t0)
|
|
/* B69D98 800F2BF8 000FC080 */ sll $t8, $t7, 2
|
|
/* B69D9C 800F2BFC 0338C821 */ addu $t9, $t9, $t8
|
|
/* B69DA0 800F2C00 8F39331C */ lw $t9, %lo(D_8013331C)($t9)
|
|
/* B69DA4 800F2C04 000B6880 */ sll $t5, $t3, 2
|
|
/* B69DA8 800F2C08 3C058017 */ lui $a1, %hi(D_8016BAB8) # $a1, 0x8017
|
|
/* B69DAC 800F2C0C 032D1021 */ addu $v0, $t9, $t5
|
|
/* B69DB0 800F2C10 904C0000 */ lbu $t4, ($v0)
|
|
/* B69DB4 800F2C14 01867021 */ addu $t6, $t4, $a2
|
|
/* B69DB8 800F2C18 A04E0000 */ sb $t6, ($v0)
|
|
/* B69DBC 800F2C1C 10000005 */ b .L800F2C34
|
|
/* B69DC0 800F2C20 8CA5BAB8 */ lw $a1, %lo(D_8016BAB8)($a1)
|
|
/* B69DC4 800F2C24 914F0000 */ lbu $t7, ($t2)
|
|
.L800F2C28:
|
|
/* B69DC8 800F2C28 25F80001 */ addiu $t8, $t7, 1
|
|
/* B69DCC 800F2C2C 330B000F */ andi $t3, $t8, 0xf
|
|
/* B69DD0 800F2C30 A14B0000 */ sb $t3, ($t2)
|
|
.L800F2C34:
|
|
/* B69DD4 800F2C34 30B98000 */ andi $t9, $a1, 0x8000
|
|
/* B69DD8 800F2C38 5320001A */ beql $t9, $zero, .L800F2CA4
|
|
/* B69DDC 800F2C3C 30AB4000 */ andi $t3, $a1, 0x4000
|
|
/* B69DE0 800F2C40 950C0000 */ lhu $t4, ($t0)
|
|
/* B69DE4 800F2C44 950D0002 */ lhu $t5, 2($t0)
|
|
/* B69DE8 800F2C48 3C078013 */ lui $a3, %hi(D_801333E0) # $a3, 0x8013
|
|
/* B69DEC 800F2C4C 000C7B00 */ sll $t7, $t4, 0xc
|
|
/* B69DF0 800F2C50 3C188013 */ lui $t8, %hi(D_801333E8) # $t8, 0x8013
|
|
/* B69DF4 800F2C54 01AF2021 */ addu $a0, $t5, $t7
|
|
/* B69DF8 800F2C58 24E733E0 */ addiu $a3, %lo(D_801333E0) # addiu $a3, $a3, 0x33e0
|
|
/* B69DFC 800F2C5C 24840800 */ addiu $a0, $a0, 0x800
|
|
/* B69E00 800F2C60 271833E8 */ addiu $t8, %lo(D_801333E8) # addiu $t8, $t8, 0x33e8
|
|
/* B69E04 800F2C64 3C058013 */ lui $a1, %hi(D_801333D4) # $a1, 0x8013
|
|
/* B69E08 800F2C68 3084FFFF */ andi $a0, $a0, 0xffff
|
|
/* B69E0C 800F2C6C 24A533D4 */ addiu $a1, %lo(D_801333D4) # addiu $a1, $a1, 0x33d4
|
|
/* B69E10 800F2C70 AFB80014 */ sw $t8, 0x14($sp)
|
|
/* B69E14 800F2C74 AFA70010 */ sw $a3, 0x10($sp)
|
|
/* B69E18 800F2C78 0C03DCE3 */ jal Audio_PlaySoundGeneral
|
|
/* B69E1C 800F2C7C 24060004 */ li $a2, 4
|
|
/* B69E20 800F2C80 3C088013 */ lui $t0, %hi(D_80131F20) # $t0, 0x8013
|
|
/* B69E24 800F2C84 3C098013 */ lui $t1, %hi(D_80131F18) # $t1, 0x8013
|
|
/* B69E28 800F2C88 3C0A8013 */ lui $t2, %hi(D_80131F1C) # $t2, 0x8013
|
|
/* B69E2C 800F2C8C 3C058017 */ lui $a1, %hi(D_8016BAB8) # $a1, 0x8017
|
|
/* B69E30 800F2C90 8CA5BAB8 */ lw $a1, %lo(D_8016BAB8)($a1)
|
|
/* B69E34 800F2C94 254A1F1C */ addiu $t2, %lo(D_80131F1C) # addiu $t2, $t2, 0x1f1c
|
|
/* B69E38 800F2C98 25291F18 */ addiu $t1, %lo(D_80131F18) # addiu $t1, $t1, 0x1f18
|
|
/* B69E3C 800F2C9C 25081F20 */ addiu $t0, %lo(D_80131F20) # addiu $t0, $t0, 0x1f20
|
|
/* B69E40 800F2CA0 30AB4000 */ andi $t3, $a1, 0x4000
|
|
.L800F2CA4:
|
|
/* B69E44 800F2CA4 5160000C */ beql $t3, $zero, .L800F2CD8
|
|
/* B69E48 800F2CA8 30B90004 */ andi $t9, $a1, 4
|
|
/* B69E4C 800F2CAC 0C03E1E8 */ jal func_800F87A0
|
|
/* B69E50 800F2CB0 91040001 */ lbu $a0, 1($t0)
|
|
/* B69E54 800F2CB4 3C088013 */ lui $t0, %hi(D_80131F20) # $t0, 0x8013
|
|
/* B69E58 800F2CB8 3C098013 */ lui $t1, %hi(D_80131F18) # $t1, 0x8013
|
|
/* B69E5C 800F2CBC 3C0A8013 */ lui $t2, %hi(D_80131F1C) # $t2, 0x8013
|
|
/* B69E60 800F2CC0 3C058017 */ lui $a1, %hi(D_8016BAB8) # $a1, 0x8017
|
|
/* B69E64 800F2CC4 8CA5BAB8 */ lw $a1, %lo(D_8016BAB8)($a1)
|
|
/* B69E68 800F2CC8 254A1F1C */ addiu $t2, %lo(D_80131F1C) # addiu $t2, $t2, 0x1f1c
|
|
/* B69E6C 800F2CCC 25291F18 */ addiu $t1, %lo(D_80131F18) # addiu $t1, $t1, 0x1f18
|
|
/* B69E70 800F2CD0 25081F20 */ addiu $t0, %lo(D_80131F20) # addiu $t0, $t0, 0x1f20
|
|
/* B69E74 800F2CD4 30B90004 */ andi $t9, $a1, 4
|
|
.L800F2CD8:
|
|
/* B69E78 800F2CD8 53200018 */ beql $t9, $zero, .L800F2D3C
|
|
/* B69E7C 800F2CDC 30AE0008 */ andi $t6, $a1, 8
|
|
/* B69E80 800F2CE0 912C0000 */ lbu $t4, ($t1)
|
|
/* B69E84 800F2CE4 24010002 */ li $at, 2
|
|
/* B69E88 800F2CE8 3C0F8013 */ lui $t7, %hi(D_8013331C)
|
|
/* B69E8C 800F2CEC 55810013 */ bnel $t4, $at, .L800F2D3C
|
|
/* B69E90 800F2CF0 30AE0008 */ andi $t6, $a1, 8
|
|
/* B69E94 800F2CF4 950E0000 */ lhu $t6, ($t0)
|
|
/* B69E98 800F2CF8 95180002 */ lhu $t8, 2($t0)
|
|
/* B69E9C 800F2CFC 914C0000 */ lbu $t4, ($t2)
|
|
/* B69EA0 800F2D00 000E6880 */ sll $t5, $t6, 2
|
|
/* B69EA4 800F2D04 01ED7821 */ addu $t7, $t7, $t5
|
|
/* B69EA8 800F2D08 8DEF331C */ lw $t7, %lo(D_8013331C)($t7)
|
|
/* B69EAC 800F2D0C 00185880 */ sll $t3, $t8, 2
|
|
/* B69EB0 800F2D10 240E000F */ li $t6, 15
|
|
/* B69EB4 800F2D14 01EB1021 */ addu $v0, $t7, $t3
|
|
/* B69EB8 800F2D18 94590002 */ lhu $t9, 2($v0)
|
|
/* B69EBC 800F2D1C 24180001 */ li $t8, 1
|
|
/* B69EC0 800F2D20 01CC6823 */ subu $t5, $t6, $t4
|
|
/* B69EC4 800F2D24 01B87804 */ sllv $t7, $t8, $t5
|
|
/* B69EC8 800F2D28 032F5826 */ xor $t3, $t9, $t7
|
|
/* B69ECC 800F2D2C A44B0002 */ sh $t3, 2($v0)
|
|
/* B69ED0 800F2D30 3C058017 */ lui $a1, %hi(D_8016BAB8) # $a1, 0x8017
|
|
/* B69ED4 800F2D34 8CA5BAB8 */ lw $a1, %lo(D_8016BAB8)($a1)
|
|
/* B69ED8 800F2D38 30AE0008 */ andi $t6, $a1, 8
|
|
.L800F2D3C:
|
|
/* B69EDC 800F2D3C 51C00008 */ beql $t6, $zero, .L800F2D60
|
|
/* B69EE0 800F2D40 8FBF001C */ lw $ra, 0x1c($sp)
|
|
/* B69EE4 800F2D44 91230000 */ lbu $v1, ($t1)
|
|
/* B69EE8 800F2D48 28610002 */ slti $at, $v1, 2
|
|
/* B69EEC 800F2D4C 10200003 */ beqz $at, .L800F2D5C
|
|
/* B69EF0 800F2D50 00036040 */ sll $t4, $v1, 1
|
|
/* B69EF4 800F2D54 010CC021 */ addu $t8, $t0, $t4
|
|
/* B69EF8 800F2D58 A7000000 */ sh $zero, ($t8)
|
|
.L800F2D5C:
|
|
/* B69EFC 800F2D5C 8FBF001C */ lw $ra, 0x1c($sp)
|
|
.L800F2D60:
|
|
/* B69F00 800F2D60 27BD0020 */ addiu $sp, $sp, 0x20
|
|
/* B69F04 800F2D64 03E00008 */ jr $ra
|
|
/* B69F08 800F2D68 00000000 */ nop
|
|
|