This was caused due to try_move_x destroying registers.
The fix was to simply push and pop de and hl.
# Known Bugs
-## Movement in multiple directions slows donw movement to a crawl
-When pressing two direction buttons movement speed calculations slow down a lot.
input_held BTNUP
jr z, @notup REL
-
+
+ push de
+ push hl
call unit_try_move_up
+ pop hl
+ pop de
pop bc
ld bc, st_unit_delay_to_active
input_held BTNDOWN
jr z, @notdown REL
+ push de
+ push hl
call unit_try_move_down
-
+ pop hl
+ pop de
+
pop bc
ld bc, st_unit_delay_to_active
push bc
input_held BTNLEFT
jr z, @notleft REL
+ push de
+ push hl
call unit_try_move_left
+ pop hl
+ pop de
pop bc
ld bc, st_unit_delay_to_active