Пишу в раздел ZX-программирования, так как принципы везде одинаковы. И общая концепция будет полезна, что для ZX-программистов, что для других ретро-компьютерщиков.
В общем, ситуация такая. Польские девелоперы выкатил нереальной красоты монохромную игру Tony: Montezuma's Gold для трех ретро-платформ: Atari 8-bit, C64 и Amiga (куда ж без неё). Не все разделяют мой восторг, но я просто писаю кипятком от того, что получилось. Готовится релиз и под ZX, правда, с несколько усечёнными уровнями из-за того, что изначально разрешение игры 320*192.
Ну так вот. Я возжелал увидеть эту игру на моём первом компьютере Специалист. Сделал демо на основе видеороликов и вроде как успокоился, так как остальное Специалист не потянет. А не потянет он прежде всего подгрузку уровней. Но в Telegram-группе по Специалисту меня уверили в том, что несколько разновидностей подключения SD-карты нивелируют эту проблему. Так, ну если подгрузку уровней он всё же потянет, то остаётся узкое место - оперативная память. На всё про всё её там только 36 кб. И в эти 36 кб нужно уместить конфигурации всех лабиринтов уровней, всю графику ландшафта, врагов и анимацию главного героя. По моим скромным подсчётам 36 килобайт на это никак не хватит. Ну ОК, если сделать каждый раз подгрузку лабиринтов с SD мы освободим некоторое место в ОЗУ, но лишь некоторое! Экономить нужно буквально на всём. В общем, уровни мы оставим на потом, а сейчас будем считать, что у нас только один экран по которому скачет главный герой. Благодаря Sanchez'у я знаю как можно круто попиксельно перемещать спрайт по экрану, а за одно и зеркалировать его. Но, к моему великому сожалению, это требует дофига памяти на таблицы. У меня этой памяти попросту нет!
Отсюда возникает вопрос вынесенный в заголовок этой темы (хоть и без вопроса). Помогите, подскажите, наведите на путь истинный!
При анализе графики выпущенной игры, персонаж движется с дискретностью в 2 пикселя и при этом имеет маску. Нужно то же самое организовать и в Специалисте максимально быстро и с минимальным потреблением памяти.