mirror of
https://github.com/HarbourMasters/SpaghettiKart
synced 2026-07-01 04:20:13 -04:00
632512ada9
* fixed float issue brought over from zeldaret * Import trig_tables.inc.c * Delete game_data_802BA370.s * Import two funcs from sm64 into code_80004740.c
250 lines
12 KiB
ArmAsm
250 lines
12 KiB
ArmAsm
glabel func_802B6540
|
|
/* 11FB50 802B6540 27BDFF50 */ addiu $sp, $sp, -0xb0
|
|
/* 11FB54 802B6544 AFB00020 */ sw $s0, 0x20($sp)
|
|
/* 11FB58 802B6548 00808025 */ move $s0, $a0
|
|
/* 11FB5C 802B654C 97A400C2 */ lhu $a0, 0xc2($sp)
|
|
/* 11FB60 802B6550 AFBF0024 */ sw $ra, 0x24($sp)
|
|
/* 11FB64 802B6554 AFA500B4 */ sw $a1, 0xb4($sp)
|
|
/* 11FB68 802B6558 AFA600B8 */ sw $a2, 0xb8($sp)
|
|
/* 11FB6C 802B655C AFA700BC */ sw $a3, 0xbc($sp)
|
|
/* 11FB70 802B6560 0C0AE006 */ jal sins
|
|
/* 11FB74 802B6564 AFA40038 */ sw $a0, 0x38($sp)
|
|
/* 11FB78 802B6568 8FA40038 */ lw $a0, 0x38($sp)
|
|
/* 11FB7C 802B656C 0C0AE00E */ jal coss
|
|
/* 11FB80 802B6570 E7A00040 */ swc1 $f0, 0x40($sp)
|
|
/* 11FB84 802B6574 3C013F80 */ li $at, 0x3F800000 # 1.000000
|
|
/* 11FB88 802B6578 44816000 */ mtc1 $at, $f12
|
|
/* 11FB8C 802B657C C7A600B8 */ lwc1 $f6, 0xb8($sp)
|
|
/* 11FB90 802B6580 44807000 */ mtc1 $zero, $f14
|
|
/* 11FB94 802B6584 C7A20040 */ lwc1 $f2, 0x40($sp)
|
|
/* 11FB98 802B6588 460C3032 */ c.eq.s $f6, $f12
|
|
/* 11FB9C 802B658C E7A0008C */ swc1 $f0, 0x8c($sp)
|
|
/* 11FBA0 802B6590 46001107 */ neg.s $f4, $f2
|
|
/* 11FBA4 802B6594 E7A000AC */ swc1 $f0, 0xac($sp)
|
|
/* 11FBA8 802B6598 E7A40094 */ swc1 $f4, 0x94($sp)
|
|
/* 11FBAC 802B659C E7AC009C */ swc1 $f12, 0x9c($sp)
|
|
/* 11FBB0 802B65A0 E7AE00A8 */ swc1 $f14, 0xa8($sp)
|
|
/* 11FBB4 802B65A4 E7AE00A0 */ swc1 $f14, 0xa0($sp)
|
|
/* 11FBB8 802B65A8 E7A200A4 */ swc1 $f2, 0xa4($sp)
|
|
/* 11FBBC 802B65AC E7AE0098 */ swc1 $f14, 0x98($sp)
|
|
/* 11FBC0 802B65B0 45000018 */ bc1f .L802B6614
|
|
/* 11FBC4 802B65B4 E7AE0090 */ swc1 $f14, 0x90($sp)
|
|
/* 11FBC8 802B65B8 3C013F80 */ li $at, 0x3F800000 # 1.000000
|
|
/* 11FBCC 802B65BC 44810000 */ mtc1 $at, $f0
|
|
/* 11FBD0 802B65C0 44801000 */ mtc1 $zero, $f2
|
|
/* 11FBD4 802B65C4 00002025 */ move $a0, $zero
|
|
/* 11FBD8 802B65C8 27A70068 */ addiu $a3, $sp, 0x68
|
|
/* 11FBDC 802B65CC 24090003 */ li $t1, 3
|
|
/* 11FBE0 802B65D0 2406000C */ li $a2, 12
|
|
.L802B65D4:
|
|
/* 11FBE4 802B65D4 00042880 */ sll $a1, $a0, 2
|
|
/* 11FBE8 802B65D8 00001025 */ move $v0, $zero
|
|
/* 11FBEC 802B65DC 00E01825 */ move $v1, $a3
|
|
.L802B65E0:
|
|
/* 11FBF0 802B65E0 54A20004 */ bnel $a1, $v0, .L802B65F4
|
|
/* 11FBF4 802B65E4 E4620000 */ swc1 $f2, ($v1)
|
|
/* 11FBF8 802B65E8 10000002 */ b .L802B65F4
|
|
/* 11FBFC 802B65EC E4600000 */ swc1 $f0, ($v1)
|
|
/* 11FC00 802B65F0 E4620000 */ swc1 $f2, ($v1)
|
|
.L802B65F4:
|
|
/* 11FC04 802B65F4 24420004 */ addiu $v0, $v0, 4
|
|
/* 11FC08 802B65F8 1446FFF9 */ bne $v0, $a2, .L802B65E0
|
|
/* 11FC0C 802B65FC 24630004 */ addiu $v1, $v1, 4
|
|
/* 11FC10 802B6600 24840001 */ addiu $a0, $a0, 1
|
|
/* 11FC14 802B6604 1489FFF3 */ bne $a0, $t1, .L802B65D4
|
|
/* 11FC18 802B6608 24E7000C */ addiu $a3, $a3, 0xc
|
|
/* 11FC1C 802B660C 10000041 */ b .L802B6714
|
|
/* 11FC20 802B6610 C7AA008C */ lwc1 $f10, 0x8c($sp)
|
|
.L802B6614:
|
|
/* 11FC24 802B6614 3C01BF80 */ li $at, 0xBF800000 # -1.000000
|
|
/* 11FC28 802B6618 44816000 */ mtc1 $at, $f12
|
|
/* 11FC2C 802B661C C7A800B8 */ lwc1 $f8, 0xb8($sp)
|
|
/* 11FC30 802B6620 3C013F80 */ li $at, 0x3F800000 # 1.000000
|
|
/* 11FC34 802B6624 00002025 */ move $a0, $zero
|
|
/* 11FC38 802B6628 460C4032 */ c.eq.s $f8, $f12
|
|
/* 11FC3C 802B662C 27A70068 */ addiu $a3, $sp, 0x68
|
|
/* 11FC40 802B6630 24090003 */ li $t1, 3
|
|
/* 11FC44 802B6634 45000014 */ bc1f .L802B6688
|
|
/* 11FC48 802B6638 00000000 */ nop
|
|
/* 11FC4C 802B663C 44801000 */ mtc1 $zero, $f2
|
|
/* 11FC50 802B6640 44810000 */ mtc1 $at, $f0
|
|
/* 11FC54 802B6644 2406000C */ li $a2, 12
|
|
.L802B6648:
|
|
/* 11FC58 802B6648 00001025 */ move $v0, $zero
|
|
/* 11FC5C 802B664C 00E01825 */ move $v1, $a3
|
|
/* 11FC60 802B6650 00042880 */ sll $a1, $a0, 2
|
|
.L802B6654:
|
|
/* 11FC64 802B6654 54A20004 */ bnel $a1, $v0, .L802B6668
|
|
/* 11FC68 802B6658 E4620000 */ swc1 $f2, ($v1)
|
|
/* 11FC6C 802B665C 10000002 */ b .L802B6668
|
|
/* 11FC70 802B6660 E4600000 */ swc1 $f0, ($v1)
|
|
/* 11FC74 802B6664 E4620000 */ swc1 $f2, ($v1)
|
|
.L802B6668:
|
|
/* 11FC78 802B6668 24420004 */ addiu $v0, $v0, 4
|
|
/* 11FC7C 802B666C 1446FFF9 */ bne $v0, $a2, .L802B6654
|
|
/* 11FC80 802B6670 24630004 */ addiu $v1, $v1, 4
|
|
/* 11FC84 802B6674 24840001 */ addiu $a0, $a0, 1
|
|
/* 11FC88 802B6678 1489FFF3 */ bne $a0, $t1, .L802B6648
|
|
/* 11FC8C 802B667C 24E7000C */ addiu $a3, $a3, 0xc
|
|
/* 11FC90 802B6680 10000023 */ b .L802B6710
|
|
/* 11FC94 802B6684 E7AC0078 */ swc1 $f12, 0x78($sp)
|
|
.L802B6688:
|
|
/* 11FC98 802B6688 0C0ADF3A */ jal func_802B7CE8
|
|
/* 11FC9C 802B668C C7AC00B8 */ lwc1 $f12, 0xb8($sp)
|
|
/* 11FCA0 802B6690 3C014334 */ li $at, 0x43340000 # 180.000000
|
|
/* 11FCA4 802B6694 44815000 */ mtc1 $at, $f10
|
|
/* 11FCA8 802B6698 3C01802C */ lui $at, %hi(D_802B9FB8)
|
|
/* 11FCAC 802B669C D4269FB8 */ ldc1 $f6, %lo(D_802B9FB8)($at)
|
|
/* 11FCB0 802B66A0 460A0482 */ mul.s $f18, $f0, $f10
|
|
/* 11FCB4 802B66A4 C7AC00B4 */ lwc1 $f12, 0xb4($sp)
|
|
/* 11FCB8 802B66A8 3C01802C */ lui $at, %hi(D_802B9FC0)
|
|
/* 11FCBC 802B66AC D42A9FC0 */ ldc1 $f10, %lo(D_802B9FC0)($at)
|
|
/* 11FCC0 802B66B0 C7B000BC */ lwc1 $f16, 0xbc($sp)
|
|
/* 11FCC4 802B66B4 44807000 */ mtc1 $zero, $f14
|
|
/* 11FCC8 802B66B8 27A40068 */ addiu $a0, $sp, 0x68
|
|
/* 11FCCC 802B66BC 46009121 */ cvt.d.s $f4, $f18
|
|
/* 11FCD0 802B66C0 44077000 */ mfc1 $a3, $f14
|
|
/* 11FCD4 802B66C4 46262203 */ div.d $f8, $f4, $f6
|
|
/* 11FCD8 802B66C8 460C6182 */ mul.s $f6, $f12, $f12
|
|
/* 11FCDC 802B66CC 46285481 */ sub.d $f18, $f10, $f8
|
|
/* 11FCE0 802B66D0 46108282 */ mul.s $f10, $f16, $f16
|
|
/* 11FCE4 802B66D4 46209107 */ neg.d $f4, $f18
|
|
/* 11FCE8 802B66D8 46008487 */ neg.s $f18, $f16
|
|
/* 11FCEC 802B66DC 462020A0 */ cvt.s.d $f2, $f4
|
|
/* 11FCF0 802B66E0 460A3000 */ add.s $f0, $f6, $f10
|
|
/* 11FCF4 802B66E4 4600120D */ trunc.w.s $f8, $f2
|
|
/* 11FCF8 802B66E8 46000004 */ sqrt.s $f0, $f0
|
|
/* 11FCFC 802B66EC 44054000 */ mfc1 $a1, $f8
|
|
/* 11FD00 802B66F0 00000000 */ nop
|
|
/* 11FD04 802B66F4 00057C00 */ sll $t7, $a1, 0x10
|
|
/* 11FD08 802B66F8 000F2C03 */ sra $a1, $t7, 0x10
|
|
/* 11FD0C 802B66FC 46009103 */ div.s $f4, $f18, $f0
|
|
/* 11FD10 802B6700 46006183 */ div.s $f6, $f12, $f0
|
|
/* 11FD14 802B6704 44062000 */ mfc1 $a2, $f4
|
|
/* 11FD18 802B6708 0C0ADAA1 */ jal func_802B6A84
|
|
/* 11FD1C 802B670C E7A60010 */ swc1 $f6, 0x10($sp)
|
|
.L802B6710:
|
|
/* 11FD20 802B6710 C7AA008C */ lwc1 $f10, 0x8c($sp)
|
|
.L802B6714:
|
|
/* 11FD24 802B6714 C7A80068 */ lwc1 $f8, 0x68($sp)
|
|
/* 11FD28 802B6718 C7A40090 */ lwc1 $f4, 0x90($sp)
|
|
/* 11FD2C 802B671C C7A60074 */ lwc1 $f6, 0x74($sp)
|
|
/* 11FD30 802B6720 46085482 */ mul.s $f18, $f10, $f8
|
|
/* 11FD34 802B6724 00000000 */ nop
|
|
/* 11FD38 802B6728 46062282 */ mul.s $f10, $f4, $f6
|
|
/* 11FD3C 802B672C C7A60094 */ lwc1 $f6, 0x94($sp)
|
|
/* 11FD40 802B6730 C7A40080 */ lwc1 $f4, 0x80($sp)
|
|
/* 11FD44 802B6734 460A9200 */ add.s $f8, $f18, $f10
|
|
/* 11FD48 802B6738 46062482 */ mul.s $f18, $f4, $f6
|
|
/* 11FD4C 802B673C 46089280 */ add.s $f10, $f18, $f8
|
|
/* 11FD50 802B6740 E60A0000 */ swc1 $f10, ($s0)
|
|
/* 11FD54 802B6744 C7A40098 */ lwc1 $f4, 0x98($sp)
|
|
/* 11FD58 802B6748 C7A60068 */ lwc1 $f6, 0x68($sp)
|
|
/* 11FD5C 802B674C C7A8009C */ lwc1 $f8, 0x9c($sp)
|
|
/* 11FD60 802B6750 C7AA0074 */ lwc1 $f10, 0x74($sp)
|
|
/* 11FD64 802B6754 46062482 */ mul.s $f18, $f4, $f6
|
|
/* 11FD68 802B6758 00000000 */ nop
|
|
/* 11FD6C 802B675C 460A4102 */ mul.s $f4, $f8, $f10
|
|
/* 11FD70 802B6760 C7AA00A0 */ lwc1 $f10, 0xa0($sp)
|
|
/* 11FD74 802B6764 C7A80080 */ lwc1 $f8, 0x80($sp)
|
|
/* 11FD78 802B6768 46049180 */ add.s $f6, $f18, $f4
|
|
/* 11FD7C 802B676C 460A4482 */ mul.s $f18, $f8, $f10
|
|
/* 11FD80 802B6770 46069100 */ add.s $f4, $f18, $f6
|
|
/* 11FD84 802B6774 E604000C */ swc1 $f4, 0xc($s0)
|
|
/* 11FD88 802B6778 C7A800A4 */ lwc1 $f8, 0xa4($sp)
|
|
/* 11FD8C 802B677C C7AA0068 */ lwc1 $f10, 0x68($sp)
|
|
/* 11FD90 802B6780 C7A600A8 */ lwc1 $f6, 0xa8($sp)
|
|
/* 11FD94 802B6784 C7A40074 */ lwc1 $f4, 0x74($sp)
|
|
/* 11FD98 802B6788 460A4482 */ mul.s $f18, $f8, $f10
|
|
/* 11FD9C 802B678C 00000000 */ nop
|
|
/* 11FDA0 802B6790 46043202 */ mul.s $f8, $f6, $f4
|
|
/* 11FDA4 802B6794 C7A400AC */ lwc1 $f4, 0xac($sp)
|
|
/* 11FDA8 802B6798 C7A60080 */ lwc1 $f6, 0x80($sp)
|
|
/* 11FDAC 802B679C 46089280 */ add.s $f10, $f18, $f8
|
|
/* 11FDB0 802B67A0 46043482 */ mul.s $f18, $f6, $f4
|
|
/* 11FDB4 802B67A4 460A9200 */ add.s $f8, $f18, $f10
|
|
/* 11FDB8 802B67A8 E6080018 */ swc1 $f8, 0x18($s0)
|
|
/* 11FDBC 802B67AC C7A6008C */ lwc1 $f6, 0x8c($sp)
|
|
/* 11FDC0 802B67B0 C7A4006C */ lwc1 $f4, 0x6c($sp)
|
|
/* 11FDC4 802B67B4 C7AA0090 */ lwc1 $f10, 0x90($sp)
|
|
/* 11FDC8 802B67B8 C7A80078 */ lwc1 $f8, 0x78($sp)
|
|
/* 11FDCC 802B67BC 46043482 */ mul.s $f18, $f6, $f4
|
|
/* 11FDD0 802B67C0 00000000 */ nop
|
|
/* 11FDD4 802B67C4 46085182 */ mul.s $f6, $f10, $f8
|
|
/* 11FDD8 802B67C8 C7A80094 */ lwc1 $f8, 0x94($sp)
|
|
/* 11FDDC 802B67CC C7AA0084 */ lwc1 $f10, 0x84($sp)
|
|
/* 11FDE0 802B67D0 46069100 */ add.s $f4, $f18, $f6
|
|
/* 11FDE4 802B67D4 46085482 */ mul.s $f18, $f10, $f8
|
|
/* 11FDE8 802B67D8 46049180 */ add.s $f6, $f18, $f4
|
|
/* 11FDEC 802B67DC E6060004 */ swc1 $f6, 4($s0)
|
|
/* 11FDF0 802B67E0 C7AA0098 */ lwc1 $f10, 0x98($sp)
|
|
/* 11FDF4 802B67E4 C7A8006C */ lwc1 $f8, 0x6c($sp)
|
|
/* 11FDF8 802B67E8 C7A4009C */ lwc1 $f4, 0x9c($sp)
|
|
/* 11FDFC 802B67EC C7A60078 */ lwc1 $f6, 0x78($sp)
|
|
/* 11FE00 802B67F0 46085482 */ mul.s $f18, $f10, $f8
|
|
/* 11FE04 802B67F4 00000000 */ nop
|
|
/* 11FE08 802B67F8 46062282 */ mul.s $f10, $f4, $f6
|
|
/* 11FE0C 802B67FC C7A600A0 */ lwc1 $f6, 0xa0($sp)
|
|
/* 11FE10 802B6800 C7A40084 */ lwc1 $f4, 0x84($sp)
|
|
/* 11FE14 802B6804 460A9200 */ add.s $f8, $f18, $f10
|
|
/* 11FE18 802B6808 46062482 */ mul.s $f18, $f4, $f6
|
|
/* 11FE1C 802B680C 46089280 */ add.s $f10, $f18, $f8
|
|
/* 11FE20 802B6810 E60A0010 */ swc1 $f10, 0x10($s0)
|
|
/* 11FE24 802B6814 C7A400A4 */ lwc1 $f4, 0xa4($sp)
|
|
/* 11FE28 802B6818 C7A6006C */ lwc1 $f6, 0x6c($sp)
|
|
/* 11FE2C 802B681C C7A800A8 */ lwc1 $f8, 0xa8($sp)
|
|
/* 11FE30 802B6820 C7AA0078 */ lwc1 $f10, 0x78($sp)
|
|
/* 11FE34 802B6824 46062482 */ mul.s $f18, $f4, $f6
|
|
/* 11FE38 802B6828 00000000 */ nop
|
|
/* 11FE3C 802B682C 460A4102 */ mul.s $f4, $f8, $f10
|
|
/* 11FE40 802B6830 C7AA00AC */ lwc1 $f10, 0xac($sp)
|
|
/* 11FE44 802B6834 C7A80084 */ lwc1 $f8, 0x84($sp)
|
|
/* 11FE48 802B6838 46049180 */ add.s $f6, $f18, $f4
|
|
/* 11FE4C 802B683C 460A4482 */ mul.s $f18, $f8, $f10
|
|
/* 11FE50 802B6840 46069100 */ add.s $f4, $f18, $f6
|
|
/* 11FE54 802B6844 E604001C */ swc1 $f4, 0x1c($s0)
|
|
/* 11FE58 802B6848 C7AA0070 */ lwc1 $f10, 0x70($sp)
|
|
/* 11FE5C 802B684C C7A8008C */ lwc1 $f8, 0x8c($sp)
|
|
/* 11FE60 802B6850 C7A4007C */ lwc1 $f4, 0x7c($sp)
|
|
/* 11FE64 802B6854 C7A60090 */ lwc1 $f6, 0x90($sp)
|
|
/* 11FE68 802B6858 460A4482 */ mul.s $f18, $f8, $f10
|
|
/* 11FE6C 802B685C 00000000 */ nop
|
|
/* 11FE70 802B6860 46043202 */ mul.s $f8, $f6, $f4
|
|
/* 11FE74 802B6864 C7A40094 */ lwc1 $f4, 0x94($sp)
|
|
/* 11FE78 802B6868 C7A60088 */ lwc1 $f6, 0x88($sp)
|
|
/* 11FE7C 802B686C 46089280 */ add.s $f10, $f18, $f8
|
|
/* 11FE80 802B6870 46043482 */ mul.s $f18, $f6, $f4
|
|
/* 11FE84 802B6874 460A9200 */ add.s $f8, $f18, $f10
|
|
/* 11FE88 802B6878 E6080008 */ swc1 $f8, 8($s0)
|
|
/* 11FE8C 802B687C C7A40070 */ lwc1 $f4, 0x70($sp)
|
|
/* 11FE90 802B6880 C7A60098 */ lwc1 $f6, 0x98($sp)
|
|
/* 11FE94 802B6884 C7A8007C */ lwc1 $f8, 0x7c($sp)
|
|
/* 11FE98 802B6888 C7AA009C */ lwc1 $f10, 0x9c($sp)
|
|
/* 11FE9C 802B688C 46043482 */ mul.s $f18, $f6, $f4
|
|
/* 11FEA0 802B6890 00000000 */ nop
|
|
/* 11FEA4 802B6894 46085182 */ mul.s $f6, $f10, $f8
|
|
/* 11FEA8 802B6898 C7A800A0 */ lwc1 $f8, 0xa0($sp)
|
|
/* 11FEAC 802B689C C7AA0088 */ lwc1 $f10, 0x88($sp)
|
|
/* 11FEB0 802B68A0 46069100 */ add.s $f4, $f18, $f6
|
|
/* 11FEB4 802B68A4 46085482 */ mul.s $f18, $f10, $f8
|
|
/* 11FEB8 802B68A8 46049180 */ add.s $f6, $f18, $f4
|
|
/* 11FEBC 802B68AC E6060014 */ swc1 $f6, 0x14($s0)
|
|
/* 11FEC0 802B68B0 C7A80070 */ lwc1 $f8, 0x70($sp)
|
|
/* 11FEC4 802B68B4 C7AA00A4 */ lwc1 $f10, 0xa4($sp)
|
|
/* 11FEC8 802B68B8 C7A6007C */ lwc1 $f6, 0x7c($sp)
|
|
/* 11FECC 802B68BC C7A400A8 */ lwc1 $f4, 0xa8($sp)
|
|
/* 11FED0 802B68C0 46085482 */ mul.s $f18, $f10, $f8
|
|
/* 11FED4 802B68C4 00000000 */ nop
|
|
/* 11FED8 802B68C8 46062282 */ mul.s $f10, $f4, $f6
|
|
/* 11FEDC 802B68CC C7A600AC */ lwc1 $f6, 0xac($sp)
|
|
/* 11FEE0 802B68D0 C7A40088 */ lwc1 $f4, 0x88($sp)
|
|
/* 11FEE4 802B68D4 460A9200 */ add.s $f8, $f18, $f10
|
|
/* 11FEE8 802B68D8 46062482 */ mul.s $f18, $f4, $f6
|
|
/* 11FEEC 802B68DC 46089280 */ add.s $f10, $f18, $f8
|
|
/* 11FEF0 802B68E0 E60A0020 */ swc1 $f10, 0x20($s0)
|
|
/* 11FEF4 802B68E4 8FBF0024 */ lw $ra, 0x24($sp)
|
|
/* 11FEF8 802B68E8 8FB00020 */ lw $s0, 0x20($sp)
|
|
/* 11FEFC 802B68EC 27BD00B0 */ addiu $sp, $sp, 0xb0
|
|
/* 11FF00 802B68F0 03E00008 */ jr $ra
|
|
/* 11FF04 802B68F4 00000000 */ nop
|