Важная информация

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 18

Тема: Формат файлов Hrust 1.3

  1. #1
    Veteran Аватар для Sinus
    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,279
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Формат файлов Hrust 1.3

    Хелп анегай!

    Надо описание формата Hrust'a (Hrumer, ауууу ^_^)
    В AlCoNews#11 есть про 2.1, а мне надо про 1.1 (вроде 1.3 тоже самое)

    Пытался втыкать по распаковщику, но на самом деле слабо въехал.
    [target] [zemu] [js8x] [pouet] KAY-1024, 5''FDD, 3''FDD, HDD

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Master
    Регистрация
    17.01.2005
    Адрес
    Старый Оскол
    Сообщений
    537
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    4 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sinus
    Надо описание формата Hrust'a (Hrumer, ауууу ^_^)
    Hrust 1.x

    Распаковщик Hrust 1.x - самый хитрый
    распаковщик на ZX. Несмотря на небольшой
    размер, он вполне способен запутать любого
    заглянувшего.

    Уникальность формата в том,что он прямо
    предназначен для сжатия кодов.Для этого он
    снабжён кодами копирования с разрывом, ка-
    ких больше нигде нет. Дополнительно приме-
    нены расширяющиеся коды смещений,которые в
    начале файла короткие и указывают недале-
    ко, а ближе к концу - длинные.
    В авторском комплекте имеется два рас-
    паковщика - с входным потоком в стеке и с
    входным потоком в IX. Еще один распаковщик
    в виде бейсик-загрузчика сделал из первого
    Alone Coder. Все они эквивалентны.
    Распаковщик начинается с переброски
    упакованного блока в конец памяти,выделен-
    ной для распаковки. Переброска идёт только
    в случае, если адрес конца упакованного
    блока изначально меньше адреса конца памя-
    ти для распаковки. Бейсик-вариант этого
    фрагмента не содержит,там нужно самому ко-
    нтролировать,чтобы упакованный блок в про-
    цессе распаковки не портился.Тем не менее,
    есть шанс, что он запорется и в авторских
    распаковщиках, после переброски. Для этого
    конец блока должен плохо паковаться.

    Битовый поток берётся кусками по 16
    бит. C содержит константу 16. D содержит
    один сброшенный бит,положение которого от-
    носительно левого края байта определяет
    длину расширяемых ссылок. Изначально D= bf
    (назовём это состояние "2 бита расширяемой
    ссылки"),далее периодическо происходит RRC
    D ("3..8 бит расширяемой ссылки").

    Упакованные блоки имеют заголовок:

    +0 "HR".
    +2 распакованная длина.
    +4 упакованная длина.
    +6 шесть последних байт блока.
    +12 два байта начала битового потока.
    +13 первый байт блока.
    +14 сами упакованные данные.

    Обработка упакованных данных осуществ-
    ляется согласно указаниям битового потока:

    %1 - получить байт из байтового потока и
    поместить куда распаковываем.
    %000,-disp3 - копировать 1 байт со смеще-
    ния -1..8
    %001 - копировать C=2 байта. disp кодируе-
    тся так:
    %00Ў%01: -dispH= fdЎ fe, -dispL в битовом
    потоке;
    %10: -dispH= ff, далее исходя из байтово-
    го потока: числа < e0 понимаются как
    -dispL (ссылка обычная), Є e0 хитро:
    RLCA:XOR C, при A=-1 расширяется длина
    ссылки, иначе SUB 15 и получаем -dispL=
    = b2Ў ee (ссылка со вставным байтом:байт
    из $-disp, байт из байтового потока,байт
    из $+2-disp );
    %11,-disp5: обычная ссылка (через %10 та-
    кие короткие disp описать нельзя);
    %010 - копировать C=3 байта. Здесь и далее
    disp кодируется так:
    %00: -dispH= fe, -dispL в битовом потоке;
    %01: -dispH= ff, далее исходя из байтово-
    го потока: числа < e0 понимаются как
    -dispL (ссылка обычная), Є e0 хитро:
    RLCA:XOR C, при A=-1 расширяется длина
    ссылки (на самом деле не используется),
    иначе SUB 15 и получаем -dispL= b1Ў ef
    (со вставным байтом:байт из $-disp, байт
    из байтового потока, байт из $+2-disp );
    %10,-disp5;
    %11: расширяющаяся ссылка. -dispH берётся
    из битового потока, число битов согласно
    D ( bf.. fe соответствует 2..8 бит).
    -dispL берётся из байтового потока. В
    остальном ссылка как ссылка.
    %01100 - копировать C=4 байта как выше.
    Здесь и далее коды ссылок со вставным ба-
    йтом невыгодны, но есть.
    %01110 - копировать 5.
    %0111100 - копировать 6.
    %0111101 - копировать 7.
    %0111110 - копировать 8.
    %011111100 - копировать 9.
    %011111101 - копировать 10.
    %011111110 - копировать 11.
    %01111111100 - копировать 12.
    %01111111101 - копировать 13.
    %01111111110 - копировать 14.
    %01111111111 - копировать 15.
    И особенные случаи:
    %01101000001111 - конец файла.
    %0110100,len7 - если len7>15, то len будет
    равно len7*256+байт_из_байтового_пото ка.
    В любом случае результат ляжет в BC, а
    далее см. случаи с len=3..15.
    %0110101xxxx - 12Ў42 (чётное число) байтов
    из байтового потока.
    %011011,-disp4: ссылка со вставным байтом:
    байт из $-disp, байт из байтового потока,
    байт из $+2-disp. Сделано из-за того, что
    в %001 предусмотрены только -dispL= b2..
    ee, причем чётные, а в %010 только b1..
    ef, нечётные.

  4. #3
    Veteran Аватар для Sinus
    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,279
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вроде то что надо.
    [target] [zemu] [js8x] [pouet] KAY-1024, 5''FDD, 3''FDD, HDD

  5. #4
    Veteran Аватар для lvd
    Регистрация
    23.01.2005
    Сообщений
    1,113
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alexandr Medvedev
    Hrust 1.x

    Распаковщик Hrust 1.x - самый хитрый
    распаковщик на ZX. Несмотря на небольшой
    размер, он вполне способен запутать любого
    заглянувшего.

    Уникальность формата в том,что он прямо
    предназначен для сжатия кодов.Для этого он
    снабжён кодами копирования с разрывом, ка-
    ких больше нигде нет. Дополнительно приме-
    нены расширяющиеся коды смещений,которые в
    начале файла короткие и указывают недале-
    ко, а ближе к концу - длинные.
    [skip]

    ...продираясь сквозь белорусские буквы...

    А что имеется в виду под копированием с разрывом?

  6. #5
    Veteran Аватар для jtn
    Регистрация
    15.01.2005
    Адрес
    Kievska Rus
    Сообщений
    1,149
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ......и всё таки лучший пакер для кодов это HRUM!!

  7. #6
    Member Аватар для Dr.Lion/RSM
    Регистрация
    08.04.2005
    Адрес
    Kharkov mega city
    Сообщений
    188
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jtn
    ......и всё таки лучший пакер для кодов это HRUM!!
    А в чем основные отличия в алгоритмах паковки между HRUM и HRUST? Просветите, если кто вкурсе!
    Автор эмуляторов Nescube, PocketZX.

  8. #7
    Veteran Аватар для Sinus
    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,279
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от lvd
    ...продираясь сквозь белорусские буквы...

    А что имеется в виду под копированием с разрывом?
    Копирование с разрывом?
    Наверное имелось ввиду копировать N байт со смешения (-OFS)

    З.Ы. А депакер действительно странно написан. Я посидел, поизменял чуток. Может и стало на 10-20 байт больше, но зато стало возможно разобраться в логике работы
    [target] [zemu] [js8x] [pouet] KAY-1024, 5''FDD, 3''FDD, HDD

  9. #8
    Member
    Регистрация
    17.01.2005
    Адрес
    Gorno-Altaysk
    Сообщений
    82
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Привет!

    Копирование с разрывом:

    Если ранее встретилась последовательность ABC, и далее встретилась на каком то расстоянии от нее последовательность AXC, то вставляем спец.код, говорящий о такой ситуации, указываем расстояние до ABC, далее указываем сам символ X.

    hrum-hrust:

    hrum: короткий распаковщик, подвязываемый к упакованном блоку.
    hrust: отдельный распаковщик, не более 256 байт, по максимуму забитый всем, чем можно.

  10. #9
    Master Аватар для elf/2
    Регистрация
    14.01.2005
    Адрес
    N.Novgorod
    Сообщений
    803
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sinus
    Копирование с разрывом?
    Наверное имелось ввиду копировать N байт со смешения (-OFS)
    нет. имелось ввиду:
    1. копируем один байт по смещению -off
    2. копируем один байт из байтового потока
    3. копируем один байт по смещению -off+2

  11. #10
    Master Аватар для elf/2
    Регистрация
    14.01.2005
    Адрес
    N.Novgorod
    Сообщений
    803
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hrumer
    Привет!
    hrum-hrust:

    hrum: короткий распаковщик, подвязываемый к упакованном блоку.
    hrust: отдельный распаковщик, не более 256 байт, по максимуму забитый всем, чем можно.
    в аттаче распаковщики на си, развернутые. если присмотреться то алгоритм понятен...
    Вложения Вложения

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Формат EXE/DLL для новой ОС
    от Alex/AT в разделе Оси
    Ответов: 32
    Последнее: 26.04.2005, 18:11
  2. Формат NSF - что это такое?
    от Dr.Lion/RSM в разделе Музыка
    Ответов: 8
    Последнее: 25.04.2005, 12:19
  3. Ответов: 5
    Последнее: 19.03.2005, 02:15
  4. Как в Unreal ускорить загрузку TAP файлов?
    от lavstudio в разделе Эмуляторы
    Ответов: 1
    Последнее: 19.02.2005, 01:50
  5. Форматы файлов
    от Viktor2004 в разделе Эмуляторы
    Ответов: 2
    Последнее: 13.02.2005, 09:57

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •