распространение этой информации нужно немедля запретить — она подрывает основы. вместо того, чтобы оптимизировать код люди будут сетовать на несовершенность компрессора, лишающего их шансов принять участие в size-compo
«Down with rules 256b» использует чуть подпиленный ZX7mini. Лично для меня это было важной частью задачи — показать, что компрессия актуальна в 256b, тем более что бут-сектор для Atari ST, послуживший моим вдохновением, занимал 512б и распаковывался, по словам автора, до 39438 байт: www.pouet.net/prod.php?which=57063

«Splash 1K» и «Chaos Construction 1K» используют ZX7 со стандартным распаковщиком.
Возможно ошибаюсь, у меня все жИ как бы не-настоящий TS, но зато хорошо отключать хоть чипы, хоть каналы по одному\оптом.
Так вот, первый и второй чип как бы перепутаны. Когда все 6 каналов сведены в стерео, попробуй догадайсО, какой чип звучит.
Авот когда выходы второго чипа отключены, и при этом первый молчит, а второй работает(судя по тесту) — тут я и задумываюсь, у меня ли перепутано или все же в сабже. На скорость конечно не влияйет, но все жЫ…
«Я делаю миниинтры (от 256б» — хотелось бы продолжать верить, что в sizecoding вплоть до 512 байтов никакие типовые упаковщики-распаковщики не используются.
Да, тоже этим занимался :) Хотя это очень быстро меня утомляет, экспоненциальный рост сложности такой оптимизации всё же парит :)

Ещё возил программу по памяти, чтобы константы брать из случайных регистров. Ещё, в самом конце уже, модифицировал распаковщики, чтобы сберечь несколько бит на настройках уже самого распаковщика (скажем, zx7mini копирует первый байт вслепую, а потом уже следит по битовому потоку. У меня выходило, что всё равно первые 6-8 байт не паковались, поэтому я просто копировал их автоматом, меняя настойки самого распаковщика).
это можно делать ifdef и сразу несколькими вариантами кода в исходнике, потом автоматический перебор всех вариантов включенных/выключенных definе, автокомпиляция-упаковка каждого состояния, сравнение всех и автовыбор минимальной интры… ;)
Упаковщик Hrum в составе mhmt УЖЕ оптимальный. Нет, Hrust 1 объективно лучший пакер Пьянкова на данный момент. Но по сжатию их вроде выжали на 100%. Теперь есть запас только по скорости.

Хотя, нужно будет расследовать, как именно там выбираются моменты для вставки кодов расширения ссылок в Hrust 1, потому что я что-то не совсем понимаю как это можно сделать оптимально, особенно с учётом того, что укорачивать коды вроде тоже декомпрессор позволяет.
Для ловли блох такого рода, рекомендую пересобрать избранный оптимальный пакер, добавив к нему функцию печати итогового числа бит. Часто бывает, что есть 2-3 варианта кода, вроде примерно одно и то же, на итоговый размер в байтах не влияет, но в таком упаковщике с битами видишь, какой вариант был реально оптимальнее. Я много сберёг используя такой подход в «Down with the rules». Очень много циклов развернул и т.д. У меня гораздо больше итоговый неупакованный размер интры, по сравнению с тем, что делал ты. Подозреваю, что на 4кб должно получаться 6-7кб кода «оптимизированного под упаковщик». Например, вместо декранчера писать хорошо жмущийся код — ну, ты понимаешь.
т.е. нонешний hrust 1 / oh1c перебил hrum, а раньше, насколько помню, было не так.

возможно, возможен «optimal hrum packer», как для hrust'а? ;)
  • avatar boris
  • 0
пишет что вроде да! сумел перекинуть в trd
Т.е. для себя я сделал такой вывод: нужно переписать Hrust 1 и Hrum для работы с битовым потоком в байтах (вместо битов) и переписать их распаковщики примерно по той же схеме, по которой написаны сейчас ApLib, Exomizer и ZX7. Думаю, это уменьшит их размер Hrust 1 и сделает его вполне конкурентными в чём-то вроде 4K; в случае с Hrum я думаю больше смысла пытаться конкурировать с пакерами типа ZX7, т.е. брать размером распаковщика и скоростью распаковки.
Распаковщик Hrust мне кажется великоват, не пробовал его. Хотя...

                  dizzy4k (unpacked size 4973)

                 smallest  packed   total   free
                 unpacker   size     size   bytes

appack             156      3906     4062    34
exomizer -c        154      3855     4009    87
hrum               105      3968     4073    23
hrust 1            209      3851     4060    36
hrust 2            212      3944     4156   -60
megalz             110      3963     4073    23
zx7                 69      4006     4075    21

                  c2h5oh (unpacked size 5232)

                 smallest  packed   total   free
                 unpacker   size     size   bytes

appack             156      3887     4043    53
exomizer -c        154      3816     3970   126
hrum               105      3937     4042    54
hrust 1            209      3825     4034    62
hrust 2            212      3903     4115   -19
megalz             110      3931     4041    55
zx7                 69      3988     4057    39
  • avatar diver4d
  • 0
Получилось?
  • avatar Nuts_
  • 0
к сожалению не успел выпустить свое пособие по проведению трансляций
мы это все проходили в 2012 году, прям 1в1
  • avatar tsl
  • 2
Чото подумал, если все так хотят реальных чипов, чо б не сделать девайс в формате «бутерброда».
Плюсы:
— вставляется в панельку, отстутствует шлейф, приводящий шину данных з80 в состояние «кровь-кишки-говно-распидорасило»,
— занимает меньше места в пространстве.
Минусы:
— чуть габаритнее по высоте и совсем чучуть по ширине.
— чипы видимо придется запаивать — панельки особого смысла не имеют (как доставать нижний чип?).
сейчас проверил, c exomizer'ом меняется политика по сжатию изменяемых команд, вида
sp_save: ld sp,0
->
sp_save: ld sp,__sp

ifdef FORPACK
__sp equ #3131
__hl equ #2121
__de equ #1111
__bc equ #0101
else
__sp equ 0
__hl equ 0
__de equ 0
__bc equ 0
endif

при паковке hrum'ом, — лучше было оставлять ld sp,0, иначе наоборот + 3 байта на всю интру еще и добавит :)

c exomizer'ом же — 3 байта уберет.
;)
а, тот к hrust'у…
это обычный hrum или oh1c?
С инетом опять беда, всё время падает. Да и вебку 120 градусов нельзя ставить так далеко, оказалось (
Т.е. Exomizer однозначный лидер, ZX7 скорее всего уже на этом масштабе неактуально использовать.
ApPack, Hrum, MegaLZ на этом масштабе почти неразличимы, чего и следовало ожидать по итогам больших тестов.