mirror of
https://github.com/pmret/papermario.git
synced 2024-11-12 14:03:56 +01:00
201 lines
9.4 KiB
ArmAsm
201 lines
9.4 KiB
ArmAsm
.set noat # allow manual use of $at
|
|
.set noreorder # don't insert nops after branches
|
|
|
|
|
|
glabel func_800DCB7C
|
|
/* 07602C 800DCB7C 27BDFF80 */ addiu $sp, $sp, -0x80
|
|
/* 076030 800DCB80 AFB40048 */ sw $s4, 0x48($sp)
|
|
/* 076034 800DCB84 8FB40090 */ lw $s4, 0x90($sp)
|
|
/* 076038 800DCB88 AFBF004C */ sw $ra, 0x4c($sp)
|
|
/* 07603C 800DCB8C AFB30044 */ sw $s3, 0x44($sp)
|
|
/* 076040 800DCB90 AFB20040 */ sw $s2, 0x40($sp)
|
|
/* 076044 800DCB94 AFB1003C */ sw $s1, 0x3c($sp)
|
|
/* 076048 800DCB98 AFB00038 */ sw $s0, 0x38($sp)
|
|
/* 07604C 800DCB9C F7BE0078 */ sdc1 $f30, 0x78($sp)
|
|
/* 076050 800DCBA0 F7BC0070 */ sdc1 $f28, 0x70($sp)
|
|
/* 076054 800DCBA4 F7BA0068 */ sdc1 $f26, 0x68($sp)
|
|
/* 076058 800DCBA8 F7B80060 */ sdc1 $f24, 0x60($sp)
|
|
/* 07605C 800DCBAC F7B60058 */ sdc1 $f22, 0x58($sp)
|
|
/* 076060 800DCBB0 F7B40050 */ sdc1 $f20, 0x50($sp)
|
|
/* 076064 800DCBB4 C4A60000 */ lwc1 $f6, ($a1)
|
|
/* 076068 800DCBB8 00C0882D */ daddu $s1, $a2, $zero
|
|
/* 07606C 800DCBBC E7A60028 */ swc1 $f6, 0x28($sp)
|
|
/* 076070 800DCBC0 C63E0000 */ lwc1 $f30, ($s1)
|
|
/* 076074 800DCBC4 C4E60000 */ lwc1 $f6, ($a3)
|
|
/* 076078 800DCBC8 3C128011 */ lui $s2, 0x8011
|
|
/* 07607C 800DCBCC 2652C970 */ addiu $s2, $s2, -0x3690
|
|
/* 076080 800DCBD0 E7A6002C */ swc1 $f6, 0x2c($sp)
|
|
/* 076084 800DCBD4 4600F18D */ trunc.w.s $f6, $f30
|
|
/* 076088 800DCBD8 E6460000 */ swc1 $f6, ($s2)
|
|
/* 07608C 800DCBDC C6200000 */ lwc1 $f0, ($s1)
|
|
/* 076090 800DCBE0 4600018D */ trunc.w.s $f6, $f0
|
|
/* 076094 800DCBE4 3C018011 */ lui $at, 0x8011
|
|
/* 076098 800DCBE8 E426C94C */ swc1 $f6, -0x36b4($at)
|
|
/* 07609C 800DCBEC C6200000 */ lwc1 $f0, ($s1)
|
|
/* 0760A0 800DCBF0 0080982D */ daddu $s3, $a0, $zero
|
|
/* 0760A4 800DCBF4 4600018D */ trunc.w.s $f6, $f0
|
|
/* 0760A8 800DCBF8 3C018011 */ lui $at, 0x8011
|
|
/* 0760AC 800DCBFC E426C974 */ swc1 $f6, -0x368c($at)
|
|
/* 0760B0 800DCC00 C6800000 */ lwc1 $f0, ($s4)
|
|
/* 0760B4 800DCC04 44806000 */ mtc1 $zero, $f12
|
|
/* 0760B8 800DCC08 0C00A6C9 */ jal clamp_angle
|
|
/* 0760BC 800DCC0C 46000605 */ abs.s $f24, $f0
|
|
/* 0760C0 800DCC10 3C0140C9 */ lui $at, 0x40c9
|
|
/* 0760C4 800DCC14 34210FD0 */ ori $at, $at, 0xfd0
|
|
/* 0760C8 800DCC18 44811000 */ mtc1 $at, $f2
|
|
/* 0760CC 800DCC1C 00000000 */ nop
|
|
/* 0760D0 800DCC20 46020002 */ mul.s $f0, $f0, $f2
|
|
/* 0760D4 800DCC24 00000000 */ nop
|
|
/* 0760D8 800DCC28 3C0143B4 */ lui $at, 0x43b4
|
|
/* 0760DC 800DCC2C 44811000 */ mtc1 $at, $f2
|
|
/* 0760E0 800DCC30 00000000 */ nop
|
|
/* 0760E4 800DCC34 46020503 */ div.s $f20, $f0, $f2
|
|
/* 0760E8 800DCC38 0C00A85B */ jal sin_rad
|
|
/* 0760EC 800DCC3C 4600A306 */ mov.s $f12, $f20
|
|
/* 0760F0 800DCC40 46000586 */ mov.s $f22, $f0
|
|
/* 0760F4 800DCC44 0C00A874 */ jal cos_rad
|
|
/* 0760F8 800DCC48 4600A306 */ mov.s $f12, $f20
|
|
/* 0760FC 800DCC4C 3C014120 */ lui $at, 0x4120
|
|
/* 076100 800DCC50 44813000 */ mtc1 $at, $f6
|
|
/* 076104 800DCC54 00000000 */ nop
|
|
/* 076108 800DCC58 4606B102 */ mul.s $f4, $f22, $f6
|
|
/* 07610C 800DCC5C 00000000 */ nop
|
|
/* 076110 800DCC60 0000802D */ daddu $s0, $zero, $zero
|
|
/* 076114 800DCC64 0260202D */ daddu $a0, $s3, $zero
|
|
/* 076118 800DCC68 27A50018 */ addiu $a1, $sp, 0x18
|
|
/* 07611C 800DCC6C 46003087 */ neg.s $f2, $f6
|
|
/* 076120 800DCC70 46020002 */ mul.s $f0, $f0, $f2
|
|
/* 076124 800DCC74 00000000 */ nop
|
|
/* 076128 800DCC78 27A6001C */ addiu $a2, $sp, 0x1c
|
|
/* 07612C 800DCC7C 27A70020 */ addiu $a3, $sp, 0x20
|
|
/* 076130 800DCC80 C7A60028 */ lwc1 $f6, 0x28($sp)
|
|
/* 076134 800DCC84 3C01C6FF */ lui $at, 0xc6ff
|
|
/* 076138 800DCC88 3421FE00 */ ori $at, $at, 0xfe00
|
|
/* 07613C 800DCC8C 4481D000 */ mtc1 $at, $f26
|
|
/* 076140 800DCC90 46043080 */ add.s $f2, $f6, $f4
|
|
/* 076144 800DCC94 C7A6002C */ lwc1 $f6, 0x2c($sp)
|
|
/* 076148 800DCC98 27A20024 */ addiu $v0, $sp, 0x24
|
|
/* 07614C 800DCC9C E7BE001C */ swc1 $f30, 0x1c($sp)
|
|
/* 076150 800DCCA0 E7B80024 */ swc1 $f24, 0x24($sp)
|
|
/* 076154 800DCCA4 46003000 */ add.s $f0, $f6, $f0
|
|
/* 076158 800DCCA8 4600D706 */ mov.s $f28, $f26
|
|
/* 07615C 800DCCAC E7A20018 */ swc1 $f2, 0x18($sp)
|
|
/* 076160 800DCCB0 E7A00020 */ swc1 $f0, 0x20($sp)
|
|
/* 076164 800DCCB4 0C037140 */ jal func_800DC500
|
|
/* 076168 800DCCB8 AFA20010 */ sw $v0, 0x10($sp)
|
|
/* 07616C 800DCCBC 0440000F */ bltz $v0, .L800DCCFC
|
|
/* 076170 800DCCC0 E7B80030 */ swc1 $f24, 0x30($sp)
|
|
/* 076174 800DCCC4 C7A00024 */ lwc1 $f0, 0x24($sp)
|
|
/* 076178 800DCCC8 4618003E */ c.le.s $f0, $f24
|
|
/* 07617C 800DCCCC 00000000 */ nop
|
|
/* 076180 800DCCD0 4500000A */ bc1f .L800DCCFC
|
|
/* 076184 800DCCD4 00000000 */ nop
|
|
/* 076188 800DCCD8 46000606 */ mov.s $f24, $f0
|
|
/* 07618C 800DCCDC C7BA001C */ lwc1 $f26, 0x1c($sp)
|
|
/* 076190 800DCCE0 24100001 */ addiu $s0, $zero, 1
|
|
/* 076194 800DCCE4 3C018011 */ lui $at, 0x8011
|
|
/* 076198 800DCCE8 AC22C978 */ sw $v0, -0x3688($at)
|
|
/* 07619C 800DCCEC 3C018011 */ lui $at, 0x8011
|
|
/* 0761A0 800DCCF0 AC22C98C */ sw $v0, -0x3674($at)
|
|
/* 0761A4 800DCCF4 4600D18D */ trunc.w.s $f6, $f26
|
|
/* 0761A8 800DCCF8 E6460000 */ swc1 $f6, ($s2)
|
|
.L800DCCFC:
|
|
/* 0761AC 800DCCFC 3C014334 */ lui $at, 0x4334
|
|
/* 0761B0 800DCD00 44816000 */ mtc1 $at, $f12
|
|
/* 0761B4 800DCD04 44803000 */ mtc1 $zero, $f6
|
|
/* 0761B8 800DCD08 0C00A6C9 */ jal clamp_angle
|
|
/* 0761BC 800DCD0C 460C3300 */ add.s $f12, $f6, $f12
|
|
/* 0761C0 800DCD10 3C0140C9 */ lui $at, 0x40c9
|
|
/* 0761C4 800DCD14 34210FD0 */ ori $at, $at, 0xfd0
|
|
/* 0761C8 800DCD18 44811000 */ mtc1 $at, $f2
|
|
/* 0761CC 800DCD1C 00000000 */ nop
|
|
/* 0761D0 800DCD20 46020002 */ mul.s $f0, $f0, $f2
|
|
/* 0761D4 800DCD24 00000000 */ nop
|
|
/* 0761D8 800DCD28 3C0143B4 */ lui $at, 0x43b4
|
|
/* 0761DC 800DCD2C 44811000 */ mtc1 $at, $f2
|
|
/* 0761E0 800DCD30 00000000 */ nop
|
|
/* 0761E4 800DCD34 46020503 */ div.s $f20, $f0, $f2
|
|
/* 0761E8 800DCD38 0C00A85B */ jal sin_rad
|
|
/* 0761EC 800DCD3C 4600A306 */ mov.s $f12, $f20
|
|
/* 0761F0 800DCD40 46000586 */ mov.s $f22, $f0
|
|
/* 0761F4 800DCD44 0C00A874 */ jal cos_rad
|
|
/* 0761F8 800DCD48 4600A306 */ mov.s $f12, $f20
|
|
/* 0761FC 800DCD4C 3C014120 */ lui $at, 0x4120
|
|
/* 076200 800DCD50 44813000 */ mtc1 $at, $f6
|
|
/* 076204 800DCD54 00000000 */ nop
|
|
/* 076208 800DCD58 46163102 */ mul.s $f4, $f6, $f22
|
|
/* 07620C 800DCD5C 00000000 */ nop
|
|
/* 076210 800DCD60 46003087 */ neg.s $f2, $f6
|
|
/* 076214 800DCD64 46001002 */ mul.s $f0, $f2, $f0
|
|
/* 076218 800DCD68 00000000 */ nop
|
|
/* 07621C 800DCD6C 0260202D */ daddu $a0, $s3, $zero
|
|
/* 076220 800DCD70 27A50018 */ addiu $a1, $sp, 0x18
|
|
/* 076224 800DCD74 C7A60028 */ lwc1 $f6, 0x28($sp)
|
|
/* 076228 800DCD78 27A6001C */ addiu $a2, $sp, 0x1c
|
|
/* 07622C 800DCD7C 46043080 */ add.s $f2, $f6, $f4
|
|
/* 076230 800DCD80 C7A6002C */ lwc1 $f6, 0x2c($sp)
|
|
/* 076234 800DCD84 27A70020 */ addiu $a3, $sp, 0x20
|
|
/* 076238 800DCD88 46003000 */ add.s $f0, $f6, $f0
|
|
/* 07623C 800DCD8C C7A60030 */ lwc1 $f6, 0x30($sp)
|
|
/* 076240 800DCD90 27A20024 */ addiu $v0, $sp, 0x24
|
|
/* 076244 800DCD94 E7BE001C */ swc1 $f30, 0x1c($sp)
|
|
/* 076248 800DCD98 E7A60024 */ swc1 $f6, 0x24($sp)
|
|
/* 07624C 800DCD9C E7A20018 */ swc1 $f2, 0x18($sp)
|
|
/* 076250 800DCDA0 E7A00020 */ swc1 $f0, 0x20($sp)
|
|
/* 076254 800DCDA4 0C037140 */ jal func_800DC500
|
|
/* 076258 800DCDA8 AFA20010 */ sw $v0, 0x10($sp)
|
|
/* 07625C 800DCDAC 04400010 */ bltz $v0, .L800DCDF0
|
|
/* 076260 800DCDB0 00000000 */ nop
|
|
/* 076264 800DCDB4 C7A00024 */ lwc1 $f0, 0x24($sp)
|
|
/* 076268 800DCDB8 4618003E */ c.le.s $f0, $f24
|
|
/* 07626C 800DCDBC 00000000 */ nop
|
|
/* 076270 800DCDC0 4500000B */ bc1f .L800DCDF0
|
|
/* 076274 800DCDC4 00000000 */ nop
|
|
/* 076278 800DCDC8 46000606 */ mov.s $f24, $f0
|
|
/* 07627C 800DCDCC C7BC001C */ lwc1 $f28, 0x1c($sp)
|
|
/* 076280 800DCDD0 24100001 */ addiu $s0, $zero, 1
|
|
/* 076284 800DCDD4 3C018011 */ lui $at, 0x8011
|
|
/* 076288 800DCDD8 AC22C978 */ sw $v0, -0x3688($at)
|
|
/* 07628C 800DCDDC 3C018011 */ lui $at, 0x8011
|
|
/* 076290 800DCDE0 AC22C968 */ sw $v0, -0x3698($at)
|
|
/* 076294 800DCDE4 4600E18D */ trunc.w.s $f6, $f28
|
|
/* 076298 800DCDE8 3C018011 */ lui $at, 0x8011
|
|
/* 07629C 800DCDEC E426C94C */ swc1 $f6, -0x36b4($at)
|
|
.L800DCDF0:
|
|
/* 0762A0 800DCDF0 12000011 */ beqz $s0, .L800DCE38
|
|
/* 0762A4 800DCDF4 0000102D */ daddu $v0, $zero, $zero
|
|
/* 0762A8 800DCDF8 461CD03C */ c.lt.s $f26, $f28
|
|
/* 0762AC 800DCDFC 00000000 */ nop
|
|
/* 0762B0 800DCE00 45020002 */ bc1fl .L800DCE0C
|
|
/* 0762B4 800DCE04 E63A0000 */ swc1 $f26, ($s1)
|
|
/* 0762B8 800DCE08 E63C0000 */ swc1 $f28, ($s1)
|
|
.L800DCE0C:
|
|
/* 0762BC 800DCE0C C6200000 */ lwc1 $f0, ($s1)
|
|
/* 0762C0 800DCE10 3C01C6FF */ lui $at, 0xc6ff
|
|
/* 0762C4 800DCE14 3421FE00 */ ori $at, $at, 0xfe00
|
|
/* 0762C8 800DCE18 44813000 */ mtc1 $at, $f6
|
|
/* 0762CC 800DCE1C 00000000 */ nop
|
|
/* 0762D0 800DCE20 4606003C */ c.lt.s $f0, $f6
|
|
/* 0762D4 800DCE24 00000000 */ nop
|
|
/* 0762D8 800DCE28 45030001 */ bc1tl .L800DCE30
|
|
/* 0762DC 800DCE2C E6260000 */ swc1 $f6, ($s1)
|
|
.L800DCE30:
|
|
/* 0762E0 800DCE30 E6980000 */ swc1 $f24, ($s4)
|
|
/* 0762E4 800DCE34 24020001 */ addiu $v0, $zero, 1
|
|
.L800DCE38:
|
|
/* 0762E8 800DCE38 8FBF004C */ lw $ra, 0x4c($sp)
|
|
/* 0762EC 800DCE3C 8FB40048 */ lw $s4, 0x48($sp)
|
|
/* 0762F0 800DCE40 8FB30044 */ lw $s3, 0x44($sp)
|
|
/* 0762F4 800DCE44 8FB20040 */ lw $s2, 0x40($sp)
|
|
/* 0762F8 800DCE48 8FB1003C */ lw $s1, 0x3c($sp)
|
|
/* 0762FC 800DCE4C 8FB00038 */ lw $s0, 0x38($sp)
|
|
/* 076300 800DCE50 D7BE0078 */ ldc1 $f30, 0x78($sp)
|
|
/* 076304 800DCE54 D7BC0070 */ ldc1 $f28, 0x70($sp)
|
|
/* 076308 800DCE58 D7BA0068 */ ldc1 $f26, 0x68($sp)
|
|
/* 07630C 800DCE5C D7B80060 */ ldc1 $f24, 0x60($sp)
|
|
/* 076310 800DCE60 D7B60058 */ ldc1 $f22, 0x58($sp)
|
|
/* 076314 800DCE64 D7B40050 */ ldc1 $f20, 0x50($sp)
|
|
/* 076318 800DCE68 03E00008 */ jr $ra
|
|
/* 07631C 800DCE6C 27BD0080 */ addiu $sp, $sp, 0x80
|
|
|