mirror of
https://github.com/pret/pokediamond.git
synced 2026-04-26 08:17:27 -05:00
86 lines
1.5 KiB
ArmAsm
86 lines
1.5 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "global.inc"
|
|
|
|
.text
|
|
|
|
arm_func_start _d2f
|
|
_d2f:
|
|
and r2, r1, #0x80000000
|
|
mov r12, r1, lsr #0x14
|
|
bics r12, r12, #0x800
|
|
beq _020E9ED4
|
|
mov r3, r12, lsl #0x15
|
|
cmn r3, #0x200000
|
|
bhs _020E9EB8
|
|
subs r12, r12, #0x380
|
|
bls _020E9EE4
|
|
cmp r12, #0xff
|
|
bge _020E9F54
|
|
mov r1, r1, lsl #0xc
|
|
orr r3, r2, r1, lsr #0x9
|
|
orr r3, r3, r0, lsr #0x1d
|
|
movs r1, r0, lsl #0x3
|
|
orr r0, r3, r12, lsl #0x17
|
|
bxeq lr
|
|
tst r1, #0x80000000
|
|
bxeq lr
|
|
movs r1, r1, lsl #0x1
|
|
andeqs r1, r0, #0x1
|
|
addne r0, r0, #0x1
|
|
bx lr
|
|
_020E9EB8:
|
|
orrs r3, r0, r1, lsl #0xc
|
|
bne _020E9ECC
|
|
mov r0, #0xff000000
|
|
orr r0, r2, r0, lsr #0x1
|
|
bx lr
|
|
_020E9ECC:
|
|
mvn r0, #0x80000000
|
|
bx lr
|
|
_020E9ED4:
|
|
orrs r3, r0, r1, lsl #0xc
|
|
bne __f_underflow
|
|
.global __f_result_zero
|
|
__f_result_zero:
|
|
mov r0, r2
|
|
bx lr
|
|
_020E9EE4:
|
|
cmn r12, #0x17
|
|
beq _020E9F38
|
|
bmi __f_underflow
|
|
mov r1, r1, lsl #0xb
|
|
orr r1, r1, #0x80000000
|
|
mov r3, r1, lsr #0x8
|
|
orr r3, r3, r0, lsr #0x1d
|
|
rsb r12, r12, #0x1
|
|
movs r1, r0, lsl #0x3
|
|
orr r0, r2, r3, lsr r12
|
|
rsb r12, r12, #0x20
|
|
mov r3, r3, lsl r12
|
|
orrne r3, r3, #0x1
|
|
movs r1, r3
|
|
bxeq lr
|
|
tst r1, #0x80000000
|
|
bxeq lr
|
|
movs r1, r1, lsl #0x1
|
|
andeqs r1, r0, #0x1
|
|
addne r0, r0, #0x1
|
|
bx lr
|
|
_020E9F38:
|
|
orr r0, r0, r1, lsl #0xc
|
|
.global __f_very_tiny_result
|
|
__f_very_tiny_result:
|
|
movs r1, r0
|
|
mov r0, r2
|
|
addne r0, r0, #0x1
|
|
bx lr
|
|
.global __f_underflow
|
|
__f_underflow:
|
|
mov r0, r2
|
|
bx lr
|
|
_020E9F54:
|
|
mov r0, #0xff000000
|
|
orr r0, r2, r0, lsr #0x1
|
|
bx lr
|
|
arm_func_end _d2f
|