dbk, они заданы в скрипте, который генерит их сдвиги итд. Вот скрипт:
https://github.com/svofski/incursion...makesprites.py
А вот то, что из него выходит:
https://github.com/svofski/incursion...aster/ship.inc
Вид для печати
dbk, они заданы в скрипте, который генерит их сдвиги итд. Вот скрипт:
https://github.com/svofski/incursion...makesprites.py
А вот то, что из него выходит:
https://github.com/svofski/incursion...aster/ship.inc
svofski, почему решил использовать двухстрочный вывод вместо столбцового (столбцами было бы быстрее и короче)?
ivagor, спрайты -- это самое первое, что я вообще сделал для этой игры и это было ~8 лет назад. Не очень хорошо помню. Может быть у меня была какая-то мысль, может быть она была о чем-то не том и дала помеху. Это отмазка.
А теперь про твой вопрос -- ты собственно о чем? ;) Вот смотрю сейчас на ship_ltr, и вижу четкий паттерн, 4 пуша, lxi h, 256+8, dad sp, sphl, 4 пуша, lxi h, 256+8, dad sp, sphl.. В некоторых местах скипаются начальные пуши, если есть такая возможность. Это по-моему вывод по столбцам. А что такое двухстрочный вывод и где он?
Про двухстрочность протормозил. Посмотрел на layer 0 и не сообразил сразу, что там в связи с оптимизацией под конкретную картинку выводятся только две строки.
Спрайты я делал в первую очередь и по-моему они в общем неплохо оптимизированы. Что же касается более высокоуровневых вещей, там оптимизация очень прагматичная. Что мешало и тормозило, я переделывал. Все остальное, если гуденаф, то остается как есть. Иначе я бы никогда его не доделал.
Еще вопрос про спрайты и оптимизацию. Нулевые строки ты не выводишь, а нулевые двухбайтные push b делаешь. Зачем они нужны?
ivagor, затирать предыдущий кадр? Как именно выбирается стратегия в каких случаях я сейчас точно не скажу, это все подгонялось под конкретные кораблики-вертолетики.
Зависит еще от того, что именно затирается. Если движемся слева направо и текущая фаза сдвига по границе столбца, то надо затереть столбец слева и там все нули. Если справа налево, то левые нули не нужны, зато нужны справа.
Понятно, я про движение по горизонтали не подумал. Но тогда часть push b все же можно сократить (кроме затирающих) - пачки или даже одиночные push b, которые первые или последние в столбце. И соответственно откорректировать приращение sp, если столбец не последний. В кораблике плывущем направо есть такие пустые места справа.
- - - Добавлено - - -
Ну и видны моменты, когда меняется один байт, не два. Для них lxi h можно заменить на mvi h или mvi l. Стоят ли эти крошки усложнения генератора - не знаю. В болдере++ совсем мало тайлов и я вручную оптимизировал. Тупо, но просто.