1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2024-11-11 03:39:59 +00:00
oot/asm/code_80104450.s
Lucas Shaw 3c440ef7f1
Finished code_801031F0.c, guPosition.c, guLookAtHilite.c (#84)
* started microcode decomp

* Modified spec to fix error

* osContGetQuery OK

* Decompiled guLookAtHilite.c

* guPosition.c OK

* Fixed formatting

* osViSetEvent.c OK

* Deleted unnecessary files

* Made suggested changes, merged playblack.c

* Removed line breaks from comments

* Removed argument listing
2020-04-22 13:20:49 -04:00

126 lines
5.9 KiB
ArmAsm

.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 purposee registers
.section .text
.align 4
glabel func_80104450
/* B7B5F0 80104450 27BDFFE8 */ addiu $sp, $sp, -0x18
/* B7B5F4 80104454 AFBF0014 */ sw $ra, 0x14($sp)
/* B7B5F8 80104458 AFA5001C */ sw $a1, 0x1c($sp)
/* B7B5FC 8010445C AFA60020 */ sw $a2, 0x20($sp)
/* B7B600 80104460 AFA70024 */ sw $a3, 0x24($sp)
/* B7B604 80104464 0C0406D0 */ jal guMtxIdentF
/* B7B608 80104468 AFA40018 */ sw $a0, 0x18($sp)
/* B7B60C 8010446C C7A40020 */ lwc1 $f4, 0x20($sp)
/* B7B610 80104470 C7A6001C */ lwc1 $f6, 0x1c($sp)
/* B7B614 80104474 3C014000 */ li $at, 0x40000000 # 0.000000
/* B7B618 80104478 44814000 */ mtc1 $at, $f8
/* B7B61C 8010447C 46062001 */ sub.s $f0, $f4, $f6
/* B7B620 80104480 8FA20018 */ lw $v0, 0x18($sp)
/* B7B624 80104484 C7AE0028 */ lwc1 $f14, 0x28($sp)
/* B7B628 80104488 C7B00030 */ lwc1 $f16, 0x30($sp)
/* B7B62C 8010448C 46004283 */ div.s $f10, $f8, $f0
/* B7B630 80104490 C7B2002C */ lwc1 $f18, 0x2c($sp)
/* B7B634 80104494 44813000 */ mtc1 $at, $f6
/* B7B638 80104498 3C01C000 */ li $at, 0xC0000000 # 0.000000
/* B7B63C 8010449C 46128301 */ sub.s $f12, $f16, $f18
/* B7B640 801044A0 00001825 */ move $v1, $zero
/* B7B644 801044A4 24040004 */ li $a0, 4
/* B7B648 801044A8 E44A0000 */ swc1 $f10, ($v0)
/* B7B64C 801044AC C7A40024 */ lwc1 $f4, 0x24($sp)
/* B7B650 801044B0 44815000 */ mtc1 $at, $f10
/* B7B654 801044B4 3C013F80 */ li $at, 0x3F800000 # 0.000000
/* B7B658 801044B8 46047081 */ sub.s $f2, $f14, $f4
/* B7B65C 801044BC 460C5103 */ div.s $f4, $f10, $f12
/* B7B660 801044C0 46023203 */ div.s $f8, $f6, $f2
/* B7B664 801044C4 E4440028 */ swc1 $f4, 0x28($v0)
/* B7B668 801044C8 E4480014 */ swc1 $f8, 0x14($v0)
/* B7B66C 801044CC C7A8001C */ lwc1 $f8, 0x1c($sp)
/* B7B670 801044D0 C7A60020 */ lwc1 $f6, 0x20($sp)
/* B7B674 801044D4 46083280 */ add.s $f10, $f6, $f8
/* B7B678 801044D8 46005107 */ neg.s $f4, $f10
/* B7B67C 801044DC 46002183 */ div.s $f6, $f4, $f0
/* B7B680 801044E0 E4460030 */ swc1 $f6, 0x30($v0)
/* B7B684 801044E4 C7A80024 */ lwc1 $f8, 0x24($sp)
/* B7B688 801044E8 46087280 */ add.s $f10, $f14, $f8
/* B7B68C 801044EC 46128200 */ add.s $f8, $f16, $f18
/* B7B690 801044F0 46005107 */ neg.s $f4, $f10
/* B7B694 801044F4 46004287 */ neg.s $f10, $f8
/* B7B698 801044F8 46022183 */ div.s $f6, $f4, $f2
/* B7B69C 801044FC 460C5103 */ div.s $f4, $f10, $f12
/* B7B6A0 80104500 E4460034 */ swc1 $f6, 0x34($v0)
/* B7B6A4 80104504 44813000 */ mtc1 $at, $f6
/* B7B6A8 80104508 00000000 */ nop
/* B7B6AC 8010450C E446003C */ swc1 $f6, 0x3c($v0)
/* B7B6B0 80104510 E4440038 */ swc1 $f4, 0x38($v0)
/* B7B6B4 80104514 C7A00034 */ lwc1 $f0, 0x34($sp)
/* B7B6B8 80104518 C4480000 */ lwc1 $f8, ($v0)
/* B7B6BC 8010451C 24630001 */ addiu $v1, $v1, 1
/* B7B6C0 80104520 C4520004 */ lwc1 $f18, 4($v0)
/* B7B6C4 80104524 46004302 */ mul.s $f12, $f8, $f0
/* B7B6C8 80104528 C44E0008 */ lwc1 $f14, 8($v0)
/* B7B6CC 8010452C 10640010 */ beq $v1, $a0, .L80104570
/* B7B6D0 80104530 C450000C */ lwc1 $f16, 0xc($v0)
.L80104534:
/* B7B6D4 80104534 46009282 */ mul.s $f10, $f18, $f0
/* B7B6D8 80104538 C4480010 */ lwc1 $f8, 0x10($v0)
/* B7B6DC 8010453C C4520014 */ lwc1 $f18, 0x14($v0)
/* B7B6E0 80104540 46007182 */ mul.s $f6, $f14, $f0
/* B7B6E4 80104544 C44E0018 */ lwc1 $f14, 0x18($v0)
/* B7B6E8 80104548 24630001 */ addiu $v1, $v1, 1
/* B7B6EC 8010454C 46008102 */ mul.s $f4, $f16, $f0
/* B7B6F0 80104550 C450001C */ lwc1 $f16, 0x1c($v0)
/* B7B6F4 80104554 E44C0000 */ swc1 $f12, ($v0)
/* B7B6F8 80104558 46004302 */ mul.s $f12, $f8, $f0
/* B7B6FC 8010455C E44A0004 */ swc1 $f10, 4($v0)
/* B7B700 80104560 E4460008 */ swc1 $f6, 8($v0)
/* B7B704 80104564 24420010 */ addiu $v0, $v0, 0x10
/* B7B708 80104568 1464FFF2 */ bne $v1, $a0, .L80104534
/* B7B70C 8010456C E444FFFC */ swc1 $f4, -4($v0)
.L80104570:
/* B7B710 80104570 46009282 */ mul.s $f10, $f18, $f0
/* B7B714 80104574 24420010 */ addiu $v0, $v0, 0x10
/* B7B718 80104578 E44CFFF0 */ swc1 $f12, -0x10($v0)
/* B7B71C 8010457C 46007182 */ mul.s $f6, $f14, $f0
/* B7B720 80104580 00000000 */ nop
/* B7B724 80104584 46008102 */ mul.s $f4, $f16, $f0
/* B7B728 80104588 E44AFFF4 */ swc1 $f10, -0xc($v0)
/* B7B72C 8010458C E446FFF8 */ swc1 $f6, -8($v0)
/* B7B730 80104590 E444FFFC */ swc1 $f4, -4($v0)
/* B7B734 80104594 8FBF0014 */ lw $ra, 0x14($sp)
/* B7B738 80104598 27BD0018 */ addiu $sp, $sp, 0x18
/* B7B73C 8010459C 03E00008 */ jr $ra
/* B7B740 801045A0 00000000 */ nop
glabel func_801045A4
/* B7B744 801045A4 27BDFF98 */ addiu $sp, $sp, -0x68
/* B7B748 801045A8 44856000 */ mtc1 $a1, $f12
/* B7B74C 801045AC 44867000 */ mtc1 $a2, $f14
/* B7B750 801045B0 C7A40078 */ lwc1 $f4, 0x78($sp)
/* B7B754 801045B4 C7A6007C */ lwc1 $f6, 0x7c($sp)
/* B7B758 801045B8 C7A80080 */ lwc1 $f8, 0x80($sp)
/* B7B75C 801045BC C7AA0084 */ lwc1 $f10, 0x84($sp)
/* B7B760 801045C0 AFBF0024 */ sw $ra, 0x24($sp)
/* B7B764 801045C4 AFA40068 */ sw $a0, 0x68($sp)
/* B7B768 801045C8 44056000 */ mfc1 $a1, $f12
/* B7B76C 801045CC 44067000 */ mfc1 $a2, $f14
/* B7B770 801045D0 AFA70074 */ sw $a3, 0x74($sp)
/* B7B774 801045D4 27A40028 */ addiu $a0, $sp, 0x28
/* B7B778 801045D8 E7A40010 */ swc1 $f4, 0x10($sp)
/* B7B77C 801045DC E7A60014 */ swc1 $f6, 0x14($sp)
/* B7B780 801045E0 E7A80018 */ swc1 $f8, 0x18($sp)
/* B7B784 801045E4 0C041114 */ jal func_80104450
/* B7B788 801045E8 E7AA001C */ swc1 $f10, 0x1c($sp)
/* B7B78C 801045EC 27A40028 */ addiu $a0, $sp, 0x28
/* B7B790 801045F0 0C041938 */ jal func_801064E0
/* B7B794 801045F4 8FA50068 */ lw $a1, 0x68($sp)
/* B7B798 801045F8 8FBF0024 */ lw $ra, 0x24($sp)
/* B7B79C 801045FC 27BD0068 */ addiu $sp, $sp, 0x68
/* B7B7A0 80104600 03E00008 */ jr $ra
/* B7B7A4 80104604 00000000 */ nop