Для уровней 800 байт минимальное оправданное окно 1024 байта (а лучше больше), иначе проще паковать по одному уровню.
- - - Добавлено - - -
Для zx0 "словарем" являются распакованные данные, или кольцевой буфер, если он используется.
Для уровней 800 байт минимальное оправданное окно 1024 байта (а лучше больше), иначе проще паковать по одному уровню.
- - - Добавлено - - -
Для zx0 "словарем" являются распакованные данные, или кольцевой буфер, если он используется.
Сам себя поправлю/дополню - для zx0 не только распакованные данные являются словарем, но и "префикс", если он использовался при упаковке. Возможно svofksi больше про этот вариант написал.
Сравнил сжатие уровней Старой башни (Денис Грачев), 21 уровень по 880 байт=18480 байт. Каждый уровень сжимался отдельно.
ZX0 (взял сжатые файлы из исходников игры): 7787 байт, распаковщик 92 байта
Exomizer 3.1.2 -P43: 7608 байт, распаковщик 264 байта, временная таблица 156 байт
ZX5 v2.0: 7579 байт, распаковщик 147(151) байт
Exomizer 3.1.2 -P43 -E: <7337 байт + временная таблица 156 байт> или <7311 байт + на постоянку таблица 156 байт>, распаковщик 279 байт
RIP v2023.03.30 -rb: 7211 байт, распаковщик 310 байт + временно 1474 байта рабочая область
UPKR 0.2.2 --z80: 6590 байт, распаковщик 224 байта + временно 320 байт рабочая область
Для полного счастья надо бы еще и время распаковки протестировать, но если не вдаваться в детали, то во всех случаях кроме UPKR им можно пренебречь. UPKR придется подождать, скорее всего больше секунды на уровень, но если экономить каждый байт, то хороший вариант применения этого специфического упаковщика.
CityAceE(18.10.2024)
Уровень это один экран, или сразу много?
Больше игр нет
В Старой башне уровни со скроллом, поэтому нельзя сказать, что один экран. Для определенности - я о файлах mapXX.tmx.mapa, где XX от 00 до 20
У меня пока ещё немножко места в памяти есть. Как в очередной раз упрусь, то буду экспериментировать. А пока же остановился на ZX0. Но уже прикинул, откуда взять 1,5 килобайта на распаковку.
С уважением, Станислав.
А как в Золоте Монтесумы, там по экранам или пачками? Это наверное скорее к @CityAceE вопрос.
Больше игр нет
parallelno(19.08.2025)
Для полноты картины результаты сжатия уровней Старой башни в zx0 с окнами от 512 до 2048 байт и по 2 уровня.
salvador -classic -w512: 7576 байт
salvador -classic по 2 уровня: 7434 байта
salvador -classic -w1024: 7037 байт
salvador -classic -w2048: 6842 байт
Признаю, что был неправ, когда написал, что в данном случае нужны окна >=1024. Начиная с 512 уже сжимает лучше за счет возможности ссылки на предыдущий уровень, пусть и неглубокой. Надо учитывать, что оконный распаковщик распухнет по сравнению с обычным.
Последний раз редактировалось ivagor; 19.10.2024 в 07:10. Причина: salvador 1.4.2
В БК3D.Arena ("прямой") распаковщик zx0 догнал по размеру распаковщик 8080 - 92 байта. Посмотрел еще раз - новых идей по сокращению версии 8080 не появилось. Для вектора можно сократить на байт, но получится не универсальный вариант, если прерывания разрешены, то зависит от особенностей обработчика. Для БК тоже есть резерв с возможным повторным использованием RET. Достаточно интересная ситуация, инструкции PDP11 в среднем более толстые, но это компенсируется тем, что они и более емкие. Единственный плюс, что для 8080 версия без самомодификации, но это не особо критично для распаковщика современного формата, который практически всегда работает в озу. Версия dzx0 8080 с самомодификацией тоже есть, она быстрее, но больше по размеру.
Последний раз редактировалось ivagor; 13.08.2025 в 11:01.
Improver(14.08.2025), Oleg N. Cher(23.08.2025), Pyk(17.08.2025)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)