mirror of
https://github.com/n64decomp/mk64
synced 2026-06-12 13:04:50 -04:00
c669d792a2
Signed-off-by: Taggerung <tyler.taggerung@gmail.com>
197 lines
9.9 KiB
ArmAsm
197 lines
9.9 KiB
ArmAsm
glabel func_8002AB70
|
|
/* 02B770 8002AB70 27BDFFD0 */ addiu $sp, $sp, -0x30
|
|
/* 02B774 8002AB74 AFBF001C */ sw $ra, 0x1c($sp)
|
|
/* 02B778 8002AB78 AFB00018 */ sw $s0, 0x18($sp)
|
|
/* 02B77C 8002AB7C 8C8E00BC */ lw $t6, 0xbc($a0)
|
|
/* 02B780 8002AB80 24010008 */ li $at, 8
|
|
/* 02B784 8002AB84 00808025 */ move $s0, $a0
|
|
/* 02B788 8002AB88 31CF0008 */ andi $t7, $t6, 8
|
|
/* 02B78C 8002AB8C 51E1003A */ beql $t7, $at, .L8002AC78
|
|
/* 02B790 8002AB90 3C014248 */ lui $at, 0x4248
|
|
/* 02B794 8002AB94 44802000 */ mtc1 $zero, $f4
|
|
/* 02B798 8002AB98 C486008C */ lwc1 $f6, 0x8c($a0)
|
|
/* 02B79C 8002AB9C 4606203C */ c.lt.s $f4, $f6
|
|
/* 02B7A0 8002ABA0 00000000 */ nop
|
|
/* 02B7A4 8002ABA4 45020034 */ bc1fl .L8002AC78
|
|
/* 02B7A8 8002ABA8 3C014248 */ lui $at, 0x4248
|
|
/* 02B7AC 8002ABAC 848200C4 */ lh $v0, 0xc4($a0)
|
|
/* 02B7B0 8002ABB0 240100B6 */ li $at, 182
|
|
/* 02B7B4 8002ABB4 3C05800E */ lui $a1, %hi(gKartGravityTable) # 0x800e
|
|
/* 02B7B8 8002ABB8 0041001A */ div $zero, $v0, $at
|
|
/* 02B7BC 8002ABBC 0000C012 */ mflo $t8
|
|
/* 02B7C0 8002ABC0 2B01FFFF */ slti $at, $t8, -1
|
|
/* 02B7C4 8002ABC4 1020001C */ beqz $at, .L8002AC38
|
|
/* 02B7C8 8002ABC8 3C063DCC */ lui $a2, 0x3dcc
|
|
/* 02B7CC 8002ABCC 2B01FFEC */ slti $at, $t8, -0x14
|
|
/* 02B7D0 8002ABD0 14200019 */ bnez $at, .L8002AC38
|
|
/* 02B7D4 8002ABD4 3C014190 */ li $at, 0x41900000 # 18.000000
|
|
/* 02B7D8 8002ABD8 44815000 */ mtc1 $at, $f10
|
|
/* 02B7DC 8002ABDC C4880094 */ lwc1 $f8, 0x94($a0)
|
|
/* 02B7E0 8002ABE0 3C014358 */ li $at, 0x43580000 # 216.000000
|
|
/* 02B7E4 8002ABE4 44819000 */ mtc1 $at, $f18
|
|
/* 02B7E8 8002ABE8 460A4403 */ div.s $f16, $f8, $f10
|
|
/* 02B7EC 8002ABEC 3C0141A0 */ li $at, 0x41A00000 # 20.000000
|
|
/* 02B7F0 8002ABF0 44813000 */ mtc1 $at, $f6
|
|
/* 02B7F4 8002ABF4 24840100 */ addiu $a0, $a0, 0x100
|
|
/* 02B7F8 8002ABF8 46128102 */ mul.s $f4, $f16, $f18
|
|
/* 02B7FC 8002ABFC 4604303E */ c.le.s $f6, $f4
|
|
/* 02B800 8002AC00 00000000 */ nop
|
|
/* 02B804 8002AC04 4502000D */ bc1fl .L8002AC3C
|
|
/* 02B808 8002AC08 96190254 */ lhu $t9, 0x254($s0)
|
|
/* 02B80C 8002AC0C 3C0543FA */ lui $a1, 0x43fa
|
|
/* 02B810 8002AC10 0C008973 */ jal move_f32_towards
|
|
/* 02B814 8002AC14 3C063F80 */ lui $a2, 0x3f80
|
|
/* 02B818 8002AC18 26040DAC */ addiu $a0, $s0, 0xdac
|
|
/* 02B81C 8002AC1C 3C063D4C */ lui $a2, (0x3D4CCCCD >> 16) # lui $a2, 0x3d4c
|
|
/* 02B820 8002AC20 34C6CCCD */ ori $a2, (0x3D4CCCCD & 0xFFFF) # ori $a2, $a2, 0xcccd
|
|
/* 02B824 8002AC24 AFA40020 */ sw $a0, 0x20($sp)
|
|
/* 02B828 8002AC28 0C008973 */ jal move_f32_towards
|
|
/* 02B82C 8002AC2C 3C054040 */ lui $a1, 0x4040
|
|
/* 02B830 8002AC30 10000036 */ b .L8002AD0C
|
|
/* 02B834 8002AC34 8E0200BC */ lw $v0, 0xbc($s0)
|
|
.L8002AC38:
|
|
/* 02B838 8002AC38 96190254 */ lhu $t9, 0x254($s0)
|
|
.L8002AC3C:
|
|
/* 02B83C 8002AC3C 26040100 */ addiu $a0, $s0, 0x100
|
|
/* 02B840 8002AC40 34C6CCCD */ ori $a2, (0x3D4CCCCD & 0xFFFF) # ori $a2, $a2, 0xcccd
|
|
/* 02B844 8002AC44 00194080 */ sll $t0, $t9, 2
|
|
/* 02B848 8002AC48 00A82821 */ addu $a1, $a1, $t0
|
|
/* 02B84C 8002AC4C 0C008973 */ jal move_f32_towards
|
|
/* 02B850 8002AC50 8CA52650 */ lw $a1, %lo(gKartGravityTable)($a1) # 0x2650($a1)
|
|
/* 02B854 8002AC54 26040DAC */ addiu $a0, $s0, 0xdac
|
|
/* 02B858 8002AC58 3C063D8F */ lui $a2, (0x3D8F5C29 >> 16) # lui $a2, 0x3d8f
|
|
/* 02B85C 8002AC5C 34C65C29 */ ori $a2, (0x3D8F5C29 & 0xFFFF) # ori $a2, $a2, 0x5c29
|
|
/* 02B860 8002AC60 AFA40020 */ sw $a0, 0x20($sp)
|
|
/* 02B864 8002AC64 0C008973 */ jal move_f32_towards
|
|
/* 02B868 8002AC68 3C053F80 */ lui $a1, 0x3f80
|
|
/* 02B86C 8002AC6C 10000027 */ b .L8002AD0C
|
|
/* 02B870 8002AC70 8E0200BC */ lw $v0, 0xbc($s0)
|
|
/* 02B874 8002AC74 3C014248 */ li $at, 0x42480000 # 50.000000
|
|
.L8002AC78:
|
|
/* 02B878 8002AC78 44815000 */ mtc1 $at, $f10
|
|
/* 02B87C 8002AC7C C6080124 */ lwc1 $f8, 0x124($s0)
|
|
/* 02B880 8002AC80 3C014000 */ li $at, 0x40000000 # 2.000000
|
|
/* 02B884 8002AC84 26040100 */ addiu $a0, $s0, 0x100
|
|
/* 02B888 8002AC88 4608503E */ c.le.s $f10, $f8
|
|
/* 02B88C 8002AC8C 3C05800E */ lui $a1, %hi(gKartGravityTable) # 0x800e
|
|
/* 02B890 8002AC90 45020005 */ bc1fl .L8002ACA8
|
|
/* 02B894 8002AC94 96090254 */ lhu $t1, 0x254($s0)
|
|
/* 02B898 8002AC98 44818000 */ mtc1 $at, $f16
|
|
/* 02B89C 8002AC9C 00000000 */ nop
|
|
/* 02B8A0 8002ACA0 E6100DAC */ swc1 $f16, 0xdac($s0)
|
|
/* 02B8A4 8002ACA4 96090254 */ lhu $t1, 0x254($s0)
|
|
.L8002ACA8:
|
|
/* 02B8A8 8002ACA8 3C063CA3 */ lui $a2, (0x3CA3D70A >> 16) # lui $a2, 0x3ca3
|
|
/* 02B8AC 8002ACAC 34C6D70A */ ori $a2, (0x3CA3D70A & 0xFFFF) # ori $a2, $a2, 0xd70a
|
|
/* 02B8B0 8002ACB0 00095080 */ sll $t2, $t1, 2
|
|
/* 02B8B4 8002ACB4 00AA2821 */ addu $a1, $a1, $t2
|
|
/* 02B8B8 8002ACB8 0C008973 */ jal move_f32_towards
|
|
/* 02B8BC 8002ACBC 8CA52650 */ lw $a1, %lo(gKartGravityTable)($a1) # 0x2650($a1)
|
|
/* 02B8C0 8002ACC0 8E0B00BC */ lw $t3, 0xbc($s0)
|
|
/* 02B8C4 8002ACC4 24010002 */ li $at, 2
|
|
/* 02B8C8 8002ACC8 26040DAC */ addiu $a0, $s0, 0xdac
|
|
/* 02B8CC 8002ACCC 316C0002 */ andi $t4, $t3, 2
|
|
/* 02B8D0 8002ACD0 15810009 */ bne $t4, $at, .L8002ACF8
|
|
/* 02B8D4 8002ACD4 3C053F80 */ lui $a1, 0x3f80
|
|
/* 02B8D8 8002ACD8 26040DAC */ addiu $a0, $s0, 0xdac
|
|
/* 02B8DC 8002ACDC 3C063D8F */ lui $a2, (0x3D8F5C29 >> 16) # lui $a2, 0x3d8f
|
|
/* 02B8E0 8002ACE0 34C65C29 */ ori $a2, (0x3D8F5C29 & 0xFFFF) # ori $a2, $a2, 0x5c29
|
|
/* 02B8E4 8002ACE4 AFA40020 */ sw $a0, 0x20($sp)
|
|
/* 02B8E8 8002ACE8 0C008973 */ jal move_f32_towards
|
|
/* 02B8EC 8002ACEC 3C053F80 */ lui $a1, 0x3f80
|
|
/* 02B8F0 8002ACF0 10000006 */ b .L8002AD0C
|
|
/* 02B8F4 8002ACF4 8E0200BC */ lw $v0, 0xbc($s0)
|
|
.L8002ACF8:
|
|
/* 02B8F8 8002ACF8 3C063D8F */ lui $a2, (0x3D8F5C29 >> 16) # lui $a2, 0x3d8f
|
|
/* 02B8FC 8002ACFC 34C65C29 */ ori $a2, (0x3D8F5C29 & 0xFFFF) # ori $a2, $a2, 0x5c29
|
|
/* 02B900 8002AD00 0C008973 */ jal move_f32_towards
|
|
/* 02B904 8002AD04 AFA40020 */ sw $a0, 0x20($sp)
|
|
/* 02B908 8002AD08 8E0200BC */ lw $v0, 0xbc($s0)
|
|
.L8002AD0C:
|
|
/* 02B90C 8002AD0C 3C030010 */ lui $v1, 0x10
|
|
/* 02B910 8002AD10 8FA40020 */ lw $a0, 0x20($sp)
|
|
/* 02B914 8002AD14 00436824 */ and $t5, $v0, $v1
|
|
/* 02B918 8002AD18 146D0007 */ bne $v1, $t5, .L8002AD38
|
|
/* 02B91C 8002AD1C 3C0541A0 */ lui $a1, 0x41a0
|
|
/* 02B920 8002AD20 0C008973 */ jal move_f32_towards
|
|
/* 02B924 8002AD24 3C063F80 */ lui $a2, 0x3f80
|
|
/* 02B928 8002AD28 3C01800F */ lui $at, %hi(D_800ED7B8) # $at, 0x800f
|
|
/* 02B92C 8002AD2C C432D7B8 */ lwc1 $f18, %lo(D_800ED7B8)($at)
|
|
/* 02B930 8002AD30 8E0200BC */ lw $v0, 0xbc($s0)
|
|
/* 02B934 8002AD34 E6120100 */ swc1 $f18, 0x100($s0)
|
|
.L8002AD38:
|
|
/* 02B938 8002AD38 304E0004 */ andi $t6, $v0, 4
|
|
/* 02B93C 8002AD3C 24010004 */ li $at, 4
|
|
/* 02B940 8002AD40 15C10008 */ bne $t6, $at, .L8002AD64
|
|
/* 02B944 8002AD44 8FA40020 */ lw $a0, 0x20($sp)
|
|
/* 02B948 8002AD48 3C0541C8 */ lui $a1, 0x41c8
|
|
/* 02B94C 8002AD4C 0C008973 */ jal move_f32_towards
|
|
/* 02B950 8002AD50 3C063F80 */ lui $a2, 0x3f80
|
|
/* 02B954 8002AD54 3C0144E1 */ li $at, 0x44E10000 # 1800.000000
|
|
/* 02B958 8002AD58 44812000 */ mtc1 $at, $f4
|
|
/* 02B95C 8002AD5C 8E0200BC */ lw $v0, 0xbc($s0)
|
|
/* 02B960 8002AD60 E6040100 */ swc1 $f4, 0x100($s0)
|
|
.L8002AD64:
|
|
/* 02B964 8002AD64 304F0400 */ andi $t7, $v0, 0x400
|
|
/* 02B968 8002AD68 24010400 */ li $at, 1024
|
|
/* 02B96C 8002AD6C 15E10004 */ bne $t7, $at, .L8002AD80
|
|
/* 02B970 8002AD70 3C01800F */ lui $at, %hi(D_800ED7BC) # $at, 0x800f
|
|
/* 02B974 8002AD74 C426D7BC */ lwc1 $f6, %lo(D_800ED7BC)($at)
|
|
/* 02B978 8002AD78 8E0200BC */ lw $v0, 0xbc($s0)
|
|
/* 02B97C 8002AD7C E6060100 */ swc1 $f6, 0x100($s0)
|
|
.L8002AD80:
|
|
/* 02B980 8002AD80 0002C300 */ sll $t8, $v0, 0xc
|
|
/* 02B984 8002AD84 07010003 */ bgez $t8, .L8002AD94
|
|
/* 02B988 8002AD88 3C01800F */ lui $at, %hi(D_800ED7C0) # $at, 0x800f
|
|
/* 02B98C 8002AD8C C428D7C0 */ lwc1 $f8, %lo(D_800ED7C0)($at)
|
|
/* 02B990 8002AD90 E6080100 */ swc1 $f8, 0x100($s0)
|
|
.L8002AD94:
|
|
/* 02B994 8002AD94 86190044 */ lh $t9, 0x44($s0)
|
|
/* 02B998 8002AD98 3C01800F */ lui $at, %hi(D_800ED7C4) # $at, 0x800f
|
|
/* 02B99C 8002AD9C 33280800 */ andi $t0, $t9, 0x800
|
|
/* 02B9A0 8002ADA0 51000004 */ beql $t0, $zero, .L8002ADB4
|
|
/* 02B9A4 8002ADA4 8E0200BC */ lw $v0, 0xbc($s0)
|
|
/* 02B9A8 8002ADA8 C42AD7C4 */ lwc1 $f10, %lo(D_800ED7C4)($at)
|
|
/* 02B9AC 8002ADAC E60A0100 */ swc1 $f10, 0x100($s0)
|
|
/* 02B9B0 8002ADB0 8E0200BC */ lw $v0, 0xbc($s0)
|
|
.L8002ADB4:
|
|
/* 02B9B4 8002ADB4 3C030080 */ lui $v1, 0x80
|
|
/* 02B9B8 8002ADB8 3C014396 */ li $at, 0x43960000 # 300.000000
|
|
/* 02B9BC 8002ADBC 00434824 */ and $t1, $v0, $v1
|
|
/* 02B9C0 8002ADC0 54690005 */ bnel $v1, $t1, .L8002ADD8
|
|
/* 02B9C4 8002ADC4 3C030100 */ lui $v1, 0x100
|
|
/* 02B9C8 8002ADC8 44818000 */ mtc1 $at, $f16
|
|
/* 02B9CC 8002ADCC 8E0200BC */ lw $v0, 0xbc($s0)
|
|
/* 02B9D0 8002ADD0 E6100100 */ swc1 $f16, 0x100($s0)
|
|
/* 02B9D4 8002ADD4 3C030100 */ lui $v1, 0x100
|
|
.L8002ADD8:
|
|
/* 02B9D8 8002ADD8 00435024 */ and $t2, $v0, $v1
|
|
/* 02B9DC 8002ADDC 146A0004 */ bne $v1, $t2, .L8002ADF0
|
|
/* 02B9E0 8002ADE0 3C01800F */ lui $at, %hi(D_800ED7C8) # $at, 0x800f
|
|
/* 02B9E4 8002ADE4 C432D7C8 */ lwc1 $f18, %lo(D_800ED7C8)($at)
|
|
/* 02B9E8 8002ADE8 8E0200BC */ lw $v0, 0xbc($s0)
|
|
/* 02B9EC 8002ADEC E6120100 */ swc1 $f18, 0x100($s0)
|
|
.L8002ADF0:
|
|
/* 02B9F0 8002ADF0 3C030200 */ lui $v1, 0x200
|
|
/* 02B9F4 8002ADF4 00435824 */ and $t3, $v0, $v1
|
|
/* 02B9F8 8002ADF8 146B0004 */ bne $v1, $t3, .L8002AE0C
|
|
/* 02B9FC 8002ADFC 3C014448 */ li $at, 0x44480000 # 800.000000
|
|
/* 02BA00 8002AE00 44812000 */ mtc1 $at, $f4
|
|
/* 02BA04 8002AE04 00000000 */ nop
|
|
/* 02BA08 8002AE08 E6040100 */ swc1 $f4, 0x100($s0)
|
|
.L8002AE0C:
|
|
/* 02BA0C 8002AE0C 8FBF001C */ lw $ra, 0x1c($sp)
|
|
/* 02BA10 8002AE10 8FB00018 */ lw $s0, 0x18($sp)
|
|
/* 02BA14 8002AE14 27BD0030 */ addiu $sp, $sp, 0x30
|
|
/* 02BA18 8002AE18 03E00008 */ jr $ra
|
|
/* 02BA1C 8002AE1C 00000000 */ nop
|
|
|
|
/* 02BA20 8002AE20 03E00008 */ jr $ra
|
|
/* 02BA24 8002AE24 00000000 */ nop
|
|
|
|
/* 02BA28 8002AE28 03E00008 */ jr $ra
|
|
/* 02BA2C 8002AE2C 00000000 */ nop
|
|
|
|
/* 02BA30 8002AE30 03E00008 */ jr $ra
|
|
/* 02BA34 8002AE34 00000000 */ nop
|