Вариант ещё, двигать оригинальный спрайт, а не перед выводом на экран. Но придется написать специфическую процедуру, чтобы крутило спрайт размер плюс знакоместо. И процедура вывода тоже будет специфичная. Но зато каждый фрейм сдвиг спрайта по горизонтали всегда на 2 пикселя.

- - - Добавлено - - -

Так же хранить значение, на сколько пикселей сдвинуто в буфере оригинал, для того чтобы вернуться к исходному спрайту

- - - Добавлено - - -

И в итоге нет таблиц, нет больших и тяжёлых сдвигов каждый фрейм и самое ценное оно всегда за константное время смещает спрайт