Implement, somewhat horribly, half of move calculation