mirror of
https://github.com/pmret/papermario.git
synced 2024-11-12 14:03:56 +01:00
209 lines
9.7 KiB
ArmAsm
209 lines
9.7 KiB
ArmAsm
.set noat # allow manual use of $at
|
|
.set noreorder # don't insert nops after branches
|
|
|
|
|
|
glabel func_8003CCB0
|
|
/* 0180B0 8003CCB0 27BDFF60 */ addiu $sp, $sp, -0xa0
|
|
/* 0180B4 8003CCB4 AFB60080 */ sw $s6, 0x80($sp)
|
|
/* 0180B8 8003CCB8 0080B02D */ daddu $s6, $a0, $zero
|
|
/* 0180BC 8003CCBC AFB1006C */ sw $s1, 0x6c($sp)
|
|
/* 0180C0 8003CCC0 00A0882D */ daddu $s1, $a1, $zero
|
|
/* 0180C4 8003CCC4 AFB00068 */ sw $s0, 0x68($sp)
|
|
/* 0180C8 8003CCC8 02D18021 */ addu $s0, $s6, $s1
|
|
/* 0180CC 8003CCCC AFBF0084 */ sw $ra, 0x84($sp)
|
|
/* 0180D0 8003CCD0 AFB5007C */ sw $s5, 0x7c($sp)
|
|
/* 0180D4 8003CCD4 AFB40078 */ sw $s4, 0x78($sp)
|
|
/* 0180D8 8003CCD8 AFB30074 */ sw $s3, 0x74($sp)
|
|
/* 0180DC 8003CCDC AFB20070 */ sw $s2, 0x70($sp)
|
|
/* 0180E0 8003CCE0 F7B80098 */ sdc1 $f24, 0x98($sp)
|
|
/* 0180E4 8003CCE4 F7B60090 */ sdc1 $f22, 0x90($sp)
|
|
/* 0180E8 8003CCE8 F7B40088 */ sdc1 $f20, 0x88($sp)
|
|
/* 0180EC 8003CCEC 82020330 */ lb $v0, 0x330($s0)
|
|
/* 0180F0 8003CCF0 1440000B */ bnez $v0, .L8003CD20
|
|
/* 0180F4 8003CCF4 24050011 */ addiu $a1, $zero, 0x11
|
|
/* 0180F8 8003CCF8 24060014 */ addiu $a2, $zero, 0x14
|
|
/* 0180FC 8003CCFC 240200FF */ addiu $v0, $zero, 0xff
|
|
/* 018100 8003CD00 AFA00010 */ sw $zero, 0x10($sp)
|
|
/* 018104 8003CD04 AFA20014 */ sw $v0, 0x14($sp)
|
|
/* 018108 8003CD08 AFA00018 */ sw $zero, 0x18($sp)
|
|
/* 01810C 8003CD0C 8EC40024 */ lw $a0, 0x24($s6)
|
|
/* 018110 8003CD10 0C0B7A25 */ jal func_802DE894
|
|
/* 018114 8003CD14 0000382D */ daddu $a3, $zero, $zero
|
|
/* 018118 8003CD18 24020001 */ addiu $v0, $zero, 1
|
|
/* 01811C 8003CD1C A2020330 */ sb $v0, 0x330($s0)
|
|
.L8003CD20:
|
|
/* 018120 8003CD20 82030330 */ lb $v1, 0x330($s0)
|
|
/* 018124 8003CD24 24020001 */ addiu $v0, $zero, 1
|
|
/* 018128 8003CD28 14620090 */ bne $v1, $v0, .L8003CF6C
|
|
/* 01812C 8003CD2C 00511004 */ sllv $v0, $s1, $v0
|
|
/* 018130 8003CD30 02C22821 */ addu $a1, $s6, $v0
|
|
/* 018134 8003CD34 94A20332 */ lhu $v0, 0x332($a1)
|
|
/* 018138 8003CD38 24420007 */ addiu $v0, $v0, 7
|
|
/* 01813C 8003CD3C 00021C00 */ sll $v1, $v0, 0x10
|
|
/* 018140 8003CD40 00032403 */ sra $a0, $v1, 0x10
|
|
/* 018144 8003CD44 A4A20332 */ sh $v0, 0x332($a1)
|
|
/* 018148 8003CD48 28820168 */ slti $v0, $a0, 0x168
|
|
/* 01814C 8003CD4C 14400010 */ bnez $v0, .L8003CD90
|
|
/* 018150 8003CD50 0000802D */ daddu $s0, $zero, $zero
|
|
/* 018154 8003CD54 3C02B60B */ lui $v0, 0xb60b
|
|
/* 018158 8003CD58 344260B7 */ ori $v0, $v0, 0x60b7
|
|
/* 01815C 8003CD5C 00820018 */ mult $a0, $v0
|
|
/* 018160 8003CD60 00031FC3 */ sra $v1, $v1, 0x1f
|
|
/* 018164 8003CD64 00004010 */ mfhi $t0
|
|
/* 018168 8003CD68 01041021 */ addu $v0, $t0, $a0
|
|
/* 01816C 8003CD6C 00021203 */ sra $v0, $v0, 8
|
|
/* 018170 8003CD70 00431023 */ subu $v0, $v0, $v1
|
|
/* 018174 8003CD74 00021840 */ sll $v1, $v0, 1
|
|
/* 018178 8003CD78 00621821 */ addu $v1, $v1, $v0
|
|
/* 01817C 8003CD7C 00031100 */ sll $v0, $v1, 4
|
|
/* 018180 8003CD80 00431023 */ subu $v0, $v0, $v1
|
|
/* 018184 8003CD84 000210C0 */ sll $v0, $v0, 3
|
|
/* 018188 8003CD88 00821023 */ subu $v0, $a0, $v0
|
|
/* 01818C 8003CD8C A4A20332 */ sh $v0, 0x332($a1)
|
|
.L8003CD90:
|
|
/* 018190 8003CD90 00A0902D */ daddu $s2, $a1, $zero
|
|
/* 018194 8003CD94 3C138000 */ lui $s3, 0x8000
|
|
/* 018198 8003CD98 0200882D */ daddu $s1, $s0, $zero
|
|
/* 01819C 8003CD9C 3C013FF0 */ lui $at, 0x3ff0
|
|
/* 0181A0 8003CDA0 4481C800 */ mtc1 $at, $f25
|
|
/* 0181A4 8003CDA4 4480C000 */ mtc1 $zero, $f24
|
|
/* 0181A8 8003CDA8 3C014054 */ lui $at, 0x4054
|
|
/* 0181AC 8003CDAC 4481B800 */ mtc1 $at, $f23
|
|
/* 0181B0 8003CDB0 4480B000 */ mtc1 $zero, $f22
|
|
/* 0181B4 8003CDB4 3C0141E0 */ lui $at, 0x41e0
|
|
/* 0181B8 8003CDB8 4481A800 */ mtc1 $at, $f21
|
|
/* 0181BC 8003CDBC 4480A000 */ mtc1 $zero, $f20
|
|
.L8003CDC0:
|
|
/* 0181C0 8003CDC0 96440332 */ lhu $a0, 0x332($s2)
|
|
/* 0181C4 8003CDC4 00912021 */ addu $a0, $a0, $s1
|
|
/* 0181C8 8003CDC8 00042400 */ sll $a0, $a0, 0x10
|
|
/* 0181CC 8003CDCC 0C00A4F5 */ jal cosine
|
|
/* 0181D0 8003CDD0 00042403 */ sra $a0, $a0, 0x10
|
|
/* 0181D4 8003CDD4 46000021 */ cvt.d.s $f0, $f0
|
|
/* 0181D8 8003CDD8 46380000 */ add.d $f0, $f0, $f24
|
|
/* 0181DC 8003CDDC 46360002 */ mul.d $f0, $f0, $f22
|
|
/* 0181E0 8003CDE0 00000000 */ nop
|
|
/* 0181E4 8003CDE4 27A20020 */ addiu $v0, $sp, 0x20
|
|
/* 0181E8 8003CDE8 4620A03E */ c.le.d $f20, $f0
|
|
/* 0181EC 8003CDEC 00000000 */ nop
|
|
/* 0181F0 8003CDF0 45010005 */ bc1t .L8003CE08
|
|
/* 0181F4 8003CDF4 00501021 */ addu $v0, $v0, $s0
|
|
/* 0181F8 8003CDF8 4620008D */ trunc.w.d $f2, $f0
|
|
/* 0181FC 8003CDFC 44031000 */ mfc1 $v1, $f2
|
|
/* 018200 8003CE00 0800F388 */ j .L8003CE20
|
|
/* 018204 8003CE04 A0430000 */ sb $v1, ($v0)
|
|
|
|
.L8003CE08:
|
|
/* 018208 8003CE08 46340001 */ sub.d $f0, $f0, $f20
|
|
/* 01820C 8003CE0C 4620008D */ trunc.w.d $f2, $f0
|
|
/* 018210 8003CE10 44031000 */ mfc1 $v1, $f2
|
|
/* 018214 8003CE14 00000000 */ nop
|
|
/* 018218 8003CE18 00731825 */ or $v1, $v1, $s3
|
|
/* 01821C 8003CE1C A0430000 */ sb $v1, ($v0)
|
|
.L8003CE20:
|
|
/* 018220 8003CE20 96440332 */ lhu $a0, 0x332($s2)
|
|
/* 018224 8003CE24 00912021 */ addu $a0, $a0, $s1
|
|
/* 018228 8003CE28 2484002D */ addiu $a0, $a0, 0x2d
|
|
/* 01822C 8003CE2C 00042400 */ sll $a0, $a0, 0x10
|
|
/* 018230 8003CE30 0C00A4F5 */ jal cosine
|
|
/* 018234 8003CE34 00042403 */ sra $a0, $a0, 0x10
|
|
/* 018238 8003CE38 46000021 */ cvt.d.s $f0, $f0
|
|
/* 01823C 8003CE3C 46380000 */ add.d $f0, $f0, $f24
|
|
/* 018240 8003CE40 46360002 */ mul.d $f0, $f0, $f22
|
|
/* 018244 8003CE44 00000000 */ nop
|
|
/* 018248 8003CE48 27A20038 */ addiu $v0, $sp, 0x38
|
|
/* 01824C 8003CE4C 4620A03E */ c.le.d $f20, $f0
|
|
/* 018250 8003CE50 00000000 */ nop
|
|
/* 018254 8003CE54 45010005 */ bc1t .L8003CE6C
|
|
/* 018258 8003CE58 00501021 */ addu $v0, $v0, $s0
|
|
/* 01825C 8003CE5C 4620008D */ trunc.w.d $f2, $f0
|
|
/* 018260 8003CE60 44031000 */ mfc1 $v1, $f2
|
|
/* 018264 8003CE64 0800F3A1 */ j .L8003CE84
|
|
/* 018268 8003CE68 A0430000 */ sb $v1, ($v0)
|
|
|
|
.L8003CE6C:
|
|
/* 01826C 8003CE6C 46340001 */ sub.d $f0, $f0, $f20
|
|
/* 018270 8003CE70 4620008D */ trunc.w.d $f2, $f0
|
|
/* 018274 8003CE74 44031000 */ mfc1 $v1, $f2
|
|
/* 018278 8003CE78 00000000 */ nop
|
|
/* 01827C 8003CE7C 00731825 */ or $v1, $v1, $s3
|
|
/* 018280 8003CE80 A0430000 */ sb $v1, ($v0)
|
|
.L8003CE84:
|
|
/* 018284 8003CE84 96440332 */ lhu $a0, 0x332($s2)
|
|
/* 018288 8003CE88 00912021 */ addu $a0, $a0, $s1
|
|
/* 01828C 8003CE8C 2484005A */ addiu $a0, $a0, 0x5a
|
|
/* 018290 8003CE90 00042400 */ sll $a0, $a0, 0x10
|
|
/* 018294 8003CE94 0C00A4F5 */ jal cosine
|
|
/* 018298 8003CE98 00042403 */ sra $a0, $a0, 0x10
|
|
/* 01829C 8003CE9C 46000021 */ cvt.d.s $f0, $f0
|
|
/* 0182A0 8003CEA0 46380000 */ add.d $f0, $f0, $f24
|
|
/* 0182A4 8003CEA4 46360002 */ mul.d $f0, $f0, $f22
|
|
/* 0182A8 8003CEA8 00000000 */ nop
|
|
/* 0182AC 8003CEAC 27A20050 */ addiu $v0, $sp, 0x50
|
|
/* 0182B0 8003CEB0 4620A03E */ c.le.d $f20, $f0
|
|
/* 0182B4 8003CEB4 00000000 */ nop
|
|
/* 0182B8 8003CEB8 45010005 */ bc1t .L8003CED0
|
|
/* 0182BC 8003CEBC 00501021 */ addu $v0, $v0, $s0
|
|
/* 0182C0 8003CEC0 4620008D */ trunc.w.d $f2, $f0
|
|
/* 0182C4 8003CEC4 44031000 */ mfc1 $v1, $f2
|
|
/* 0182C8 8003CEC8 0800F3BA */ j .L8003CEE8
|
|
/* 0182CC 8003CECC A0430000 */ sb $v1, ($v0)
|
|
|
|
.L8003CED0:
|
|
/* 0182D0 8003CED0 46340001 */ sub.d $f0, $f0, $f20
|
|
/* 0182D4 8003CED4 4620008D */ trunc.w.d $f2, $f0
|
|
/* 0182D8 8003CED8 44031000 */ mfc1 $v1, $f2
|
|
/* 0182DC 8003CEDC 00000000 */ nop
|
|
/* 0182E0 8003CEE0 00731825 */ or $v1, $v1, $s3
|
|
/* 0182E4 8003CEE4 A0430000 */ sb $v1, ($v0)
|
|
.L8003CEE8:
|
|
/* 0182E8 8003CEE8 26100001 */ addiu $s0, $s0, 1
|
|
/* 0182EC 8003CEEC 2A020014 */ slti $v0, $s0, 0x14
|
|
/* 0182F0 8003CEF0 1440FFB3 */ bnez $v0, .L8003CDC0
|
|
/* 0182F4 8003CEF4 26310019 */ addiu $s1, $s1, 0x19
|
|
/* 0182F8 8003CEF8 241500FF */ addiu $s5, $zero, 0xff
|
|
/* 0182FC 8003CEFC 0000802D */ daddu $s0, $zero, $zero
|
|
/* 018300 8003CF00 27B30020 */ addiu $s3, $sp, 0x20
|
|
/* 018304 8003CF04 27B20038 */ addiu $s2, $sp, 0x38
|
|
/* 018308 8003CF08 27B10050 */ addiu $s1, $sp, 0x50
|
|
/* 01830C 8003CF0C 02A0A02D */ daddu $s4, $s5, $zero
|
|
/* 018310 8003CF10 2405000C */ addiu $a1, $zero, 0xc
|
|
.L8003CF14:
|
|
/* 018314 8003CF14 0200302D */ daddu $a2, $s0, $zero
|
|
/* 018318 8003CF18 02701021 */ addu $v0, $s3, $s0
|
|
/* 01831C 8003CF1C 02501821 */ addu $v1, $s2, $s0
|
|
/* 018320 8003CF20 02302021 */ addu $a0, $s1, $s0
|
|
/* 018324 8003CF24 90470000 */ lbu $a3, ($v0)
|
|
/* 018328 8003CF28 90620000 */ lbu $v0, ($v1)
|
|
/* 01832C 8003CF2C 90830000 */ lbu $v1, ($a0)
|
|
/* 018330 8003CF30 26100001 */ addiu $s0, $s0, 1
|
|
/* 018334 8003CF34 AFA00010 */ sw $zero, 0x10($sp)
|
|
/* 018338 8003CF38 AFB40014 */ sw $s4, 0x14($sp)
|
|
/* 01833C 8003CF3C AFA00018 */ sw $zero, 0x18($sp)
|
|
/* 018340 8003CF40 8EC40024 */ lw $a0, 0x24($s6)
|
|
/* 018344 8003CF44 00073E00 */ sll $a3, $a3, 0x18
|
|
/* 018348 8003CF48 00021400 */ sll $v0, $v0, 0x10
|
|
/* 01834C 8003CF4C 00E23825 */ or $a3, $a3, $v0
|
|
/* 018350 8003CF50 00031A00 */ sll $v1, $v1, 8
|
|
/* 018354 8003CF54 00E33825 */ or $a3, $a3, $v1
|
|
/* 018358 8003CF58 0C0B7A25 */ jal func_802DE894
|
|
/* 01835C 8003CF5C 00F53825 */ or $a3, $a3, $s5
|
|
/* 018360 8003CF60 2A020014 */ slti $v0, $s0, 0x14
|
|
/* 018364 8003CF64 1440FFEB */ bnez $v0, .L8003CF14
|
|
/* 018368 8003CF68 2405000C */ addiu $a1, $zero, 0xc
|
|
.L8003CF6C:
|
|
/* 01836C 8003CF6C 8FBF0084 */ lw $ra, 0x84($sp)
|
|
/* 018370 8003CF70 8FB60080 */ lw $s6, 0x80($sp)
|
|
/* 018374 8003CF74 8FB5007C */ lw $s5, 0x7c($sp)
|
|
/* 018378 8003CF78 8FB40078 */ lw $s4, 0x78($sp)
|
|
/* 01837C 8003CF7C 8FB30074 */ lw $s3, 0x74($sp)
|
|
/* 018380 8003CF80 8FB20070 */ lw $s2, 0x70($sp)
|
|
/* 018384 8003CF84 8FB1006C */ lw $s1, 0x6c($sp)
|
|
/* 018388 8003CF88 8FB00068 */ lw $s0, 0x68($sp)
|
|
/* 01838C 8003CF8C D7B80098 */ ldc1 $f24, 0x98($sp)
|
|
/* 018390 8003CF90 D7B60090 */ ldc1 $f22, 0x90($sp)
|
|
/* 018394 8003CF94 D7B40088 */ ldc1 $f20, 0x88($sp)
|
|
/* 018398 8003CF98 03E00008 */ jr $ra
|
|
/* 01839C 8003CF9C 27BD00A0 */ addiu $sp, $sp, 0xa0
|
|
|