mirror of https://github.com/zeldaret/oot.git
197 lines
9.9 KiB
ArmAsm
197 lines
9.9 KiB
ArmAsm
glabel func_8009638C
|
|
/* B0D52C 8009638C 27BDFFE0 */ addiu $sp, $sp, -0x20
|
|
/* B0D530 80096390 00057900 */ sll $t7, $a1, 4
|
|
/* B0D534 80096394 000FC702 */ srl $t8, $t7, 0x1c
|
|
/* B0D538 80096398 0018C880 */ sll $t9, $t8, 2
|
|
/* B0D53C 8009639C 3C098016 */ lui $t1, %hi(gSegments)
|
|
/* B0D540 800963A0 01394821 */ addu $t1, $t1, $t9
|
|
/* B0D544 800963A4 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
|
|
/* B0D548 800963A8 8D296FA8 */ lw $t1, %lo(gSegments)($t1)
|
|
/* B0D54C 800963AC AFBF0014 */ sw $ra, 0x14($sp)
|
|
/* B0D550 800963B0 AFA40020 */ sw $a0, 0x20($sp)
|
|
/* B0D554 800963B4 AFA60028 */ sw $a2, 0x28($sp)
|
|
/* B0D558 800963B8 AFA7002C */ sw $a3, 0x2c($sp)
|
|
/* B0D55C 800963BC 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
|
|
/* B0D560 800963C0 8C820000 */ lw $v0, ($a0)
|
|
/* B0D564 800963C4 00A15024 */ and $t2, $a1, $at
|
|
/* B0D568 800963C8 3C018000 */ lui $at, 0x8000
|
|
/* B0D56C 800963CC 012A2021 */ addu $a0, $t1, $t2
|
|
/* B0D570 800963D0 00812021 */ addu $a0, $a0, $at
|
|
/* B0D574 800963D4 AFA50024 */ sw $a1, 0x24($sp)
|
|
/* B0D578 800963D8 0C02588E */ jal func_80096238
|
|
/* B0D57C 800963DC AFA2001C */ sw $v0, 0x1c($sp)
|
|
/* B0D580 800963E0 8FA2001C */ lw $v0, 0x1c($sp)
|
|
/* B0D584 800963E4 3C0BDE01 */ lui $t3, 0xde01
|
|
/* B0D588 800963E8 3C014080 */ li $at, 0x40800000 # 0.000000
|
|
/* B0D58C 800963EC 24430008 */ addiu $v1, $v0, 8
|
|
/* B0D590 800963F0 246C0028 */ addiu $t4, $v1, 0x28
|
|
/* B0D594 800963F4 AC4C0004 */ sw $t4, 4($v0)
|
|
/* B0D598 800963F8 AC4B0000 */ sw $t3, ($v0)
|
|
/* B0D59C 800963FC 93A80037 */ lbu $t0, 0x37($sp)
|
|
/* B0D5A0 80096400 A4600000 */ sh $zero, ($v1)
|
|
/* B0D5A4 80096404 97A6002E */ lhu $a2, 0x2e($sp)
|
|
/* B0D5A8 80096408 44810000 */ mtc1 $at, $f0
|
|
/* B0D5AC 8009640C 3409FFF4 */ li $t1, 65524
|
|
/* B0D5B0 80096410 00063080 */ sll $a2, $a2, 2
|
|
/* B0D5B4 80096414 A4660002 */ sh $a2, 2($v1)
|
|
/* B0D5B8 80096418 C7A40044 */ lwc1 $f4, 0x44($sp)
|
|
/* B0D5BC 8009641C A4600008 */ sh $zero, 8($v1)
|
|
/* B0D5C0 80096420 00602825 */ move $a1, $v1
|
|
/* B0D5C4 80096424 46002182 */ mul.s $f6, $f4, $f0
|
|
/* B0D5C8 80096428 24010002 */ li $at, 2
|
|
/* B0D5CC 8009642C 24630028 */ addiu $v1, $v1, 0x28
|
|
/* B0D5D0 80096430 24620008 */ addiu $v0, $v1, 8
|
|
/* B0D5D4 80096434 3C0BFD10 */ lui $t3, 0xfd10
|
|
/* B0D5D8 80096438 3C0DE800 */ lui $t5, 0xe800
|
|
/* B0D5DC 8009643C 3C040700 */ lui $a0, 0x700
|
|
/* B0D5E0 80096440 4600320D */ trunc.w.s $f8, $f6
|
|
/* B0D5E4 80096444 3C0FE600 */ lui $t7, 0xe600
|
|
/* B0D5E8 80096448 440E4000 */ mfc1 $t6, $f8
|
|
/* B0D5EC 8009644C 00000000 */ nop
|
|
/* B0D5F0 80096450 A46EFFDC */ sh $t6, -0x24($v1)
|
|
/* B0D5F4 80096454 97A70032 */ lhu $a3, 0x32($sp)
|
|
/* B0D5F8 80096458 3C0EE700 */ lui $t6, 0xe700
|
|
/* B0D5FC 8009645C 00073880 */ sll $a3, $a3, 2
|
|
/* B0D600 80096460 A467FFE2 */ sh $a3, -0x1e($v1)
|
|
/* B0D604 80096464 C7AA0048 */ lwc1 $f10, 0x48($sp)
|
|
/* B0D608 80096468 46005402 */ mul.s $f16, $f10, $f0
|
|
/* B0D60C 8009646C 4600848D */ trunc.w.s $f18, $f16
|
|
/* B0D610 80096470 44189000 */ mfc1 $t8, $f18
|
|
/* B0D614 80096474 00000000 */ nop
|
|
/* B0D618 80096478 A478FFE4 */ sh $t8, -0x1c($v1)
|
|
/* B0D61C 8009647C 8FB90024 */ lw $t9, 0x24($sp)
|
|
/* B0D620 80096480 A469FFEC */ sh $t1, -0x14($v1)
|
|
/* B0D624 80096484 A068FFEE */ sb $t0, -0x12($v1)
|
|
/* B0D628 80096488 AC79FFE8 */ sw $t9, -0x18($v1)
|
|
/* B0D62C 8009648C 93AA003B */ lbu $t2, 0x3b($sp)
|
|
/* B0D630 80096490 A460FFF0 */ sh $zero, -0x10($v1)
|
|
/* B0D634 80096494 A460FFF2 */ sh $zero, -0xe($v1)
|
|
/* B0D638 80096498 15010022 */ bne $t0, $at, .L80096524
|
|
/* B0D63C 8009649C A06AFFEF */ sb $t2, -0x11($v1)
|
|
/* B0D640 800964A0 AC6B0000 */ sw $t3, ($v1)
|
|
/* B0D644 800964A4 8FAC0028 */ lw $t4, 0x28($sp)
|
|
/* B0D648 800964A8 3C0EF500 */ lui $t6, (0xF5000100 >> 16) # lui $t6, 0xf500
|
|
/* B0D64C 800964AC 35CE0100 */ ori $t6, (0xF5000100 & 0xFFFF) # ori $t6, $t6, 0x100
|
|
/* B0D650 800964B0 AC6C0004 */ sw $t4, 4($v1)
|
|
/* B0D654 800964B4 00401825 */ move $v1, $v0
|
|
/* B0D658 800964B8 AC6D0000 */ sw $t5, ($v1)
|
|
/* B0D65C 800964BC AC600004 */ sw $zero, 4($v1)
|
|
/* B0D660 800964C0 24420008 */ addiu $v0, $v0, 8
|
|
/* B0D664 800964C4 00401825 */ move $v1, $v0
|
|
/* B0D668 800964C8 AC6E0000 */ sw $t6, ($v1)
|
|
/* B0D66C 800964CC AC640004 */ sw $a0, 4($v1)
|
|
/* B0D670 800964D0 24420008 */ addiu $v0, $v0, 8
|
|
/* B0D674 800964D4 00401825 */ move $v1, $v0
|
|
/* B0D678 800964D8 AC6F0000 */ sw $t7, ($v1)
|
|
/* B0D67C 800964DC AC600004 */ sw $zero, 4($v1)
|
|
/* B0D680 800964E0 24420008 */ addiu $v0, $v0, 8
|
|
/* B0D684 800964E4 00401825 */ move $v1, $v0
|
|
/* B0D688 800964E8 3C18F000 */ lui $t8, 0xf000
|
|
/* B0D68C 800964EC AC780000 */ sw $t8, ($v1)
|
|
/* B0D690 800964F0 97B90042 */ lhu $t9, 0x42($sp)
|
|
/* B0D694 800964F4 24420008 */ addiu $v0, $v0, 8
|
|
/* B0D698 800964F8 3C0DE700 */ lui $t5, 0xe700
|
|
/* B0D69C 800964FC 2729FFFF */ addiu $t1, $t9, -1
|
|
/* B0D6A0 80096500 312A03FF */ andi $t2, $t1, 0x3ff
|
|
/* B0D6A4 80096504 000A5B80 */ sll $t3, $t2, 0xe
|
|
/* B0D6A8 80096508 01646025 */ or $t4, $t3, $a0
|
|
/* B0D6AC 8009650C AC6C0004 */ sw $t4, 4($v1)
|
|
/* B0D6B0 80096510 00401825 */ move $v1, $v0
|
|
/* B0D6B4 80096514 AC6D0000 */ sw $t5, ($v1)
|
|
/* B0D6B8 80096518 AC600004 */ sw $zero, 4($v1)
|
|
/* B0D6BC 8009651C 10000005 */ b .L80096534
|
|
/* B0D6C0 80096520 24420008 */ addiu $v0, $v0, 8
|
|
.L80096524:
|
|
/* B0D6C4 80096524 24A30028 */ addiu $v1, $a1, 0x28
|
|
/* B0D6C8 80096528 24620008 */ addiu $v0, $v1, 8
|
|
/* B0D6CC 8009652C AC6E0000 */ sw $t6, ($v1)
|
|
/* B0D6D0 80096530 AC600004 */ sw $zero, 4($v1)
|
|
.L80096534:
|
|
/* B0D6D4 80096534 15000020 */ bnez $t0, .L800965B8
|
|
/* B0D6D8 80096538 3C0F8016 */ lui $t7, %hi(gGameInfo) # $t7, 0x8016
|
|
/* B0D6DC 8009653C 8DEFFA90 */ lw $t7, %lo(gGameInfo)($t7)
|
|
/* B0D6E0 80096540 00A02025 */ move $a0, $a1
|
|
/* B0D6E4 80096544 85F80108 */ lh $t8, 0x108($t7)
|
|
/* B0D6E8 80096548 5700001C */ bnezl $t8, .L800965BC
|
|
/* B0D6EC 8009654C 94AE0008 */ lhu $t6, 8($a1)
|
|
/* B0D6F0 80096550 A4A60006 */ sh $a2, 6($a1)
|
|
/* B0D6F4 80096554 A4A7000E */ sh $a3, 0xe($a1)
|
|
/* B0D6F8 80096558 AFA50018 */ sw $a1, 0x18($sp)
|
|
/* B0D6FC 8009655C 0C0412C0 */ jal func_80104B00
|
|
/* B0D700 80096560 AFA2001C */ sw $v0, 0x1c($sp)
|
|
/* B0D704 80096564 97B9003E */ lhu $t9, 0x3e($sp)
|
|
/* B0D708 80096568 3C010020 */ lui $at, 0x20
|
|
/* B0D70C 8009656C 8FA2001C */ lw $v0, 0x1c($sp)
|
|
/* B0D710 80096570 03214825 */ or $t1, $t9, $at
|
|
/* B0D714 80096574 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
|
|
/* B0D718 80096578 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
|
|
/* B0D71C 8009657C 01215024 */ and $t2, $t1, $at
|
|
/* B0D720 80096580 00401825 */ move $v1, $v0
|
|
/* B0D724 80096584 8FA50018 */ lw $a1, 0x18($sp)
|
|
/* B0D728 80096588 3C01EF00 */ lui $at, 0xef00
|
|
/* B0D72C 8009658C 01415825 */ or $t3, $t2, $at
|
|
/* B0D730 80096590 240C0001 */ li $t4, 1
|
|
/* B0D734 80096594 AC6C0004 */ sw $t4, 4($v1)
|
|
/* B0D738 80096598 AC6B0000 */ sw $t3, ($v1)
|
|
/* B0D73C 8009659C 24420008 */ addiu $v0, $v0, 8
|
|
/* B0D740 800965A0 00401825 */ move $v1, $v0
|
|
/* B0D744 800965A4 3C0D0A00 */ lui $t5, 0xa00
|
|
/* B0D748 800965A8 AC6D0000 */ sw $t5, ($v1)
|
|
/* B0D74C 800965AC 24420008 */ addiu $v0, $v0, 8
|
|
/* B0D750 800965B0 10000028 */ b .L80096654
|
|
/* B0D754 800965B4 AC650004 */ sw $a1, 4($v1)
|
|
.L800965B8:
|
|
/* B0D758 800965B8 94AE0008 */ lhu $t6, 8($a1)
|
|
.L800965BC:
|
|
/* B0D75C 800965BC 24030400 */ li $v1, 1024
|
|
/* B0D760 800965C0 A4A60006 */ sh $a2, 6($a1)
|
|
/* B0D764 800965C4 A4A7000E */ sh $a3, 0xe($a1)
|
|
/* B0D768 800965C8 A4A3001C */ sh $v1, 0x1c($a1)
|
|
/* B0D76C 800965CC A4A3001E */ sh $v1, 0x1e($a1)
|
|
/* B0D770 800965D0 ACAE0020 */ sw $t6, 0x20($a1)
|
|
/* B0D774 800965D4 97B9003E */ lhu $t9, 0x3e($sp)
|
|
/* B0D778 800965D8 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
|
|
/* B0D77C 800965DC 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
|
|
/* B0D780 800965E0 37290CF0 */ ori $t1, $t9, 0xcf0
|
|
/* B0D784 800965E4 01215024 */ and $t2, $t1, $at
|
|
/* B0D788 800965E8 00401825 */ move $v1, $v0
|
|
/* B0D78C 800965EC 3C01EF00 */ lui $at, 0xef00
|
|
/* B0D790 800965F0 3C0C00A0 */ lui $t4, (0x00A03009 >> 16) # lui $t4, 0xa0
|
|
/* B0D794 800965F4 358C3009 */ ori $t4, (0x00A03009 & 0xFFFF) # ori $t4, $t4, 0x3009
|
|
/* B0D798 800965F8 01415825 */ or $t3, $t2, $at
|
|
/* B0D79C 800965FC AC6B0000 */ sw $t3, ($v1)
|
|
/* B0D7A0 80096600 AC6C0004 */ sw $t4, 4($v1)
|
|
/* B0D7A4 80096604 24420008 */ addiu $v0, $v0, 8
|
|
/* B0D7A8 80096608 00401825 */ move $v1, $v0
|
|
/* B0D7AC 8009660C 3C0EFFFC */ lui $t6, (0xFFFCFC7E >> 16) # lui $t6, 0xfffc
|
|
/* B0D7B0 80096610 3C0DFCFF */ lui $t5, (0xFCFFFFFF >> 16) # lui $t5, 0xfcff
|
|
/* B0D7B4 80096614 35ADFFFF */ ori $t5, (0xFCFFFFFF & 0xFFFF) # ori $t5, $t5, 0xffff
|
|
/* B0D7B8 80096618 35CEFC7E */ ori $t6, (0xFFFCFC7E & 0xFFFF) # ori $t6, $t6, 0xfc7e
|
|
/* B0D7BC 8009661C AC6E0004 */ sw $t6, 4($v1)
|
|
/* B0D7C0 80096620 AC6D0000 */ sw $t5, ($v1)
|
|
/* B0D7C4 80096624 24420008 */ addiu $v0, $v0, 8
|
|
/* B0D7C8 80096628 00401825 */ move $v1, $v0
|
|
/* B0D7CC 8009662C 3C0F0B00 */ lui $t7, 0xb00
|
|
/* B0D7D0 80096630 2418000C */ li $t8, 12
|
|
/* B0D7D4 80096634 AC780004 */ sw $t8, 4($v1)
|
|
/* B0D7D8 80096638 AC6F0000 */ sw $t7, ($v1)
|
|
/* B0D7DC 8009663C 24420008 */ addiu $v0, $v0, 8
|
|
/* B0D7E0 80096640 00401825 */ move $v1, $v0
|
|
/* B0D7E4 80096644 3C190900 */ lui $t9, 0x900
|
|
/* B0D7E8 80096648 AC790000 */ sw $t9, ($v1)
|
|
/* B0D7EC 8009664C AC650004 */ sw $a1, 4($v1)
|
|
/* B0D7F0 80096650 24420008 */ addiu $v0, $v0, 8
|
|
.L80096654:
|
|
/* B0D7F4 80096654 00401825 */ move $v1, $v0
|
|
/* B0D7F8 80096658 3C09E700 */ lui $t1, 0xe700
|
|
/* B0D7FC 8009665C AC690000 */ sw $t1, ($v1)
|
|
/* B0D800 80096660 AC600004 */ sw $zero, 4($v1)
|
|
/* B0D804 80096664 8FAA0020 */ lw $t2, 0x20($sp)
|
|
/* B0D808 80096668 24420008 */ addiu $v0, $v0, 8
|
|
/* B0D80C 8009666C AD420000 */ sw $v0, ($t2)
|
|
/* B0D810 80096670 8FBF0014 */ lw $ra, 0x14($sp)
|
|
/* B0D814 80096674 27BD0020 */ addiu $sp, $sp, 0x20
|
|
/* B0D818 80096678 03E00008 */ jr $ra
|
|
/* B0D81C 8009667C 00000000 */ nop
|
|
|