parallelno, это было бы разумно так делать, но я просто сделал тупой колбек на каждый символ и печатаю их один за другим. С музыкой то же самое (колбаск следит, когда накопится строка из 16 регистров и выплевывает их в AY). Собственно переделка распаковщика сводится к тому, что по адресу назначения находится циклический буфер 256 байт и inx b заменяется на inr c (и еще пара нюансов связанных с тем же самым). Этот же буфер является окном, поэтому и паковать надо с -w 255.
Думал про группировку ym по регистрам (это когда сначала все фреймы регистра 0, потом все фреймы регистра 1 итд). RLE там делать нечего, по крайней мере на тех примерах, что у меня. Допустим музон "EA demosong" по строкам с окном 255 упаковывается в 17322 байт, а если он по столбцам -- в 2141 при том же размере окна. Но чтобы таким воспользоваться, надо либо распаковать его целиком, что невозможно (ок, можно в кваз, но это неспортивно совсем), либо запаковывать и распаковывать 14 потоков параллельно. Для 14 параллельных потоков надо 14 буферов в 256 байт, что ну как бы тоже так себе прикол -- получается, что мы сэкономили на сжатии, но потом ту же самую память отжали на распаковку. Но с другой стороны это всего 3584 байта, то есть размер более-менее сопоставимый с плохо рекомпилированным плеером pt2.
Еще интересный вариант -- использовать микро-окна. Например 16 байт дает 12137 байт, или 32 байта дают 5836 байт. Допустим для окна 32, нужно всего 448 байт на распаковку 14 потоков и собственно данные 5836 байт.
В принципе этот способ конечно не самый красивый, но мне нравится его универсальность. И для ви53 таким образом тоже можно.
Meanwhile, я заинтересовался плеером в демке polet4k, которая на Базыре не светится так ярко и может быть он покомпактней и поприятней на ощупь. Но это надо вынимать.


Ответить с цитированием

