Inferno #05
30 апреля 2004

Sofтинка - Упаковщик RGB картинок Powerful Code Decreaser v6.2.

 Powerful Code Decreaser v6.2
 

   Упаковщик  в своё  время  использовался
для сжатия RGB картинок (.Y). Возможно, им 
упакованы многие журналы. Возможно, именно 
здесь  появилось  стандартное дерево из 16 
вариантов,которое впоследствии попало в MS 
Pack, Hrum, Hrust... Не берусь  утверждать 
ничего... 

   В комплекте  с компрессором прилагаются
распаковщики в исходниках. Это решает мно-
гие проблемы,давая возможность выбрать,как
использовать распаковщик. Распаковщики не-
достаточно оптимизированы,но наличие исхо-
дников позволяет решить и этот вопрос.
   Имеются битовый и байтовый потоки,бито-
вый поток выбирается по 2 байта. Для рабо-
ты используется стек (принцип DJNZ:POP HL:
LD B,C:ADD HL,HL ). 
   Упакованный  блок  начинается с 5 байт,
относящихся  к концу файла, потом  лежат 2
первых байта битового потока.
   Далее согласно битовому потоку:

%1 - просто байт (из байтового потока); 
 %000,xxxx - puts=1. Сверхкороткая ссылка с 
 disp=xxxx+1=1..16;
 %001 - puts=2. Короткая ссылка, dispL изв- 
  лекается из байтового потока. Если -1, то
  выход из распаковщика,иначе dispL на еди-
 ницу больше прочитанного;
 %010 - puts=3. Здесь и далее следующим об- 
  разом определяется disp: из байтового по-
  тока  считывается dispL, а dispH из бито-
  вого потока по дереву:
   %0 - dispH=0,
   %1000 - dispH=1,
   %1010 - dispH=2,
   %1100 - dispH=3,
   %1110 - dispH=4,
   %1011000 - dispH=5,
  и т.д. Коды  начинаются с единицы и имеют
  структуру: 2  информационных  бита, 1 бит
  признака окончания (0=окончание) и т.д.До
  8 бит dispH.  Крупный недостаток - совер-
  шенно не используются коды,начинающиеся с
 %1001...
%01101 - puts=4; 
%01110 - puts=5; 
%0111100 - puts=6; 
%0111101 - puts=7; 
%0111110 - puts=8; 
%011111100 - puts=9; 
%011111101 - puts=10; 
%011111110 - puts=11; 
%01111111100 - puts=12; 
%01111111101 - puts=13; 
%01111111110 - puts=14; 
%01111111111 - puts=15; 
 %01100 - взять некий byte из байтового по- 
  тока. Если 0, то считать  2 байта puts из
 байтового потока, иначе puts=byte+15.

                       подготовил А. Кодер




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Учимся кoдить "Bесчи" - II - Уневеpсaльная пoдпpoгpaмма печaти шpифтoм 32*24.
Обзор игр - The Cezar, 8-й Отдел, Clickmania, 4x4 Puzzle, Xixit, Tower Pod.
Real fun - интервью у Столкера.

В этот день...   19 ноября