I get a warning that a latch is generated - why
You are only assigning to StartRowxSN in some of the when blocks.  You either need to assign to it in all of the blocks, or give it a default assignment with the other signals (after the comment default assignements: stay in present state).