Initial register value in synthesized design is always 0
I believe in Quartus, the initial value in a declaration only works for simulation. For Synthesis (and simulation), you need to use a separate initial block.

initial begin
    State = non_zero_state;
    ...