попробуй варианты OR и AND по всем маскам (одного байта)
- - - Добавлено - - -
емнип в Capitan Trueno маска сжатая и вдвое меньшего разрешения (по обеим осям)
в одном байте хранится маска сразу для четырёх байт спрайта
чётные и нечётные биты кодируют разные строки маски
Прихожу без разрешения, сею смерть и разрушение...
parallelno(06.10.2024)
Т.е. это статистика по исходным спрайтам без сдвигов? Тогда идея не прокатила, со сдвигами будет еще хуже. Выходя за рамки темы - у Tony фишка в графике, и если однострочная автомаска будет ее портить, то лучше поискать другие варианты. Трехстрочная в реализации на 8080 будет довольно медленной. Может поделить игру на части или сделать подгружаемые с магнитофона уровни? А в MX можно и все сразу загрузить.
не, по уму тогда нужно две таблицы масок - отдельно для левого и правого края
причём для именно таких нешироких спрайтов без промежутков результат получится почти идеальный
чтоб при сдвигах ширина маски не плавала - маскировать не просто крайний байт, а от края первый ненулевой
Прихожу без разрешения, сею смерть и разрушение...
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
CityAceE, Ну как прогресс?
С уважением,
Jerri / Red Triangle.
С уважением, Станислав.
CityAceE, основаня идея быстрого сдвига без таблиц у меня была в том, при копировании спрайта из места хранения в буфер, который уже выводится на экран использовался сразу сдвиг на 1 пиксель влево или вправо, или без сдвига. Тут смысл в том, что если спрайты например хранились в отдельном банке, а вывести сдвинутый спрайт нужно на 5/7 экраны и спрайты у и тебя упакованные по строкам. Используется примитивный RLE, где ты можешь повторяющиеся строки или даже части спрайта не хранить повторно. Так вот, быстро сдвинув (RRA/RLA) при распаковки и копировании в буфер и получив предсдвинутый спрайт, при выоде на экран его нужно всего лишь досдвинуть до нужной фазы... например для фазы 0: выводим как есть, сдвигать не надо, для фазы 1 используем предсдвинутый при коприровании в буфер спрайт, для фазы 2 - используем предвинутый при коприровании и дополнительно сдвигаем его при выводе на экран на 1 пиксель. Самые меделенные фазы это сдвиг на 3 и 5 пикселей, понятно как быстро сдвинуть на 6 и 7 пикселей. Для 7 используем двиг влево, и для 6 используем сдвиг влево + доп сдвиг на пиксель, только нужно сместить указатель на адрес буфера. Ну, а для сдвигов на 3 и 5 используем RLD/RRD команды, сдвиг на полубайт, в сочетании с предсвдинутым буфером. Эта же команда используется для сдвига на 4. Рабочий пример этого способа, я выкладывал здесь на форуме. Сама процедурка получилась очень компактной и достаточно быстрой, конечно табличный метод работает чуть быстрее на 30% где-то, но если поджимает память то выкручиваться можно вот таким способом.
CityAceE(08.02.2025), Oleg N. Cher(10.02.2025)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)