Keeping the constant as an I32 is using less memory. With the coercion, you are actually adding an extra byte to the memeory (the initial I8). Though, the compiler will turn that all into an I32 constant anyways. But it just looks bad having the conversion straight off of a constant.
Keeping track of the array index is simple. Just use a shift register. The only remotely difficult part is taking care of the rollover, which is simply a comparison with a select.