|
ACNews
#13
31 октября 2002 |
|
Guide - Формат упакованного триколора .888.

▄▄▄▄ ▄ ▄ ▄▄▄ ▄▄▄ ▄▄▄▄
■▄░ ▓ ▄▄ ▓ ▓ ▓ ▓ ▒ ▓▄▄ ▄░ ■▄░ ■▄░ ■▄░ ■▄░ ■▄░ ■▄░ ■▄░ ■▄░
■▀ ░▄▄▓ ░▄▄░ ▄░▄ ░▄▄░ ░▄▄▄ ■▀░ ■▀░ ■▀░ ■▀░ ■▀░ ■▀░ ■▀░ ■▀░ ■▀
Формат упакованного триколора .888
Файлы данного формата будут генерироваться редактором 8col, на-
чиная с версии v0. Разумеется, поддержка всех старых форматов
останется, как на чтение, так и на запись.
Заголовок отсутствует!
Тело файла содержит данные о содержимом последовательно идущих
знакомест 8x8 (слева направо, сверху вниз, 32 знакоместа по го-
ризонтали и 24 по вертикали). Всего существует 8 цветов - по 2
градации на каждую цветовую составляющую: G, R, B.
В теле файла перемешаны 2 потока: битовый и байтовый, аналогично
формату hrust2.1 (см. AlCoNews#11). Битовый поток является упра-
вляющим, первый байт файла принадлежит ему.
Запись о каждом знакоместе состоит из полей:
3 бита - тип цветности (характеризует количество цветов)
[опционально] - использованные цвета в порядке увеличения часто-
ты (т.е. начиная с самых редких)
[опционально] сколько-то бит или, возможно, 24 байта - пиксе-
льные данные знакоместа в соответствии с его типом.
Типы цветности:
0 - 8-цветное знакоместо, в байтовом потоке лежит 24 байта дан-
ных,по 3 байта (в порядке R, G, B) на каждую пиксельную линию
знакоместа. (Байтовый поток, кроме как здесь, больше нигде не
используется.) Палитра отсутствует.
1 - используется последний использованый не 8-цветный тип цвет-
ности, палитра также берётся старая.
2 - одноцветное знакоместо. В палитре один элемент, указывающий
этот цвет. Элемент палитры занимает 3 бита: G, R, B. Пиксель-
ные данные отсутствуют.
3 - двухцветное знакоместо. В пиксельных данных лежат пиксели
слева направо, сверху вниз, по 1 биту на пиксель. 0 - наибо-
лее частый пиксель (последний элемент палитры), 1 - наиболее
редкий пиксель (первый элемент палитры).
4 - трёхцветное знакоместо. Цвета пикселей кодируются: 0, 10, 11
(в порядке убывания частоты, т.е. в порядке убывания номера в
палитре).
5 - четырёхцветное знакоместо. Цвета пикселей кодируются: 00,
01, 10, 11 (в порядке убывания частоты).
6 - пятицветное знакоместо. Цвета пикселей кодируются: 00, 01,
10, 110, 111 (в порядке убывания частоты).
7 - шестицветное знакоместо. Цвета пикселей кодируются: 00, 01,
100, 101, 110, 111 (в порядке убывания частоты).
Степень сжатия среднестатистической триколорины несколько силь-
нее, чем у hrust2.1, при этом скорость сжатия многократно выше.
Распаковщик:
;палитра не запоминается, если
;8 цветов ИЛИ используется старая палитра
;ЦВЕТА В ОБРАТНОМ ПОРЯДКЕ:начиная с редких
FROM=#D000
TO=#8000
ORG #6000
TCOL_S ;DS 6
GO
LD HL,FROM
LD C,128
EXX
LD HL,TO
LD DE,125
LD C,1
DEP EXX
CALL DEP3
CALL NZ,oldcl
JR NZ,COLQQ
LD B,8
COL80 LD E,(HL) ;R
INC HL
LD D,(HL) ;G
INC HL
;(DE)=%0GRB0grb
DUP 4
XOR A
RL D
RLA
RL E
RLA
RLC (HL)
RLA
ADD A,A
RL D
RLA
RL E
RLA
RLC (HL)
RLA
EXX
LD (HL),A
INC L
EXX
EDUP
ORG $-2
ADD HL,DE
EXX
INC HL
DJNZ COL80
COLQQ EXX
LD A,H
INC L,L,L,L
JP PE,$+6
SUB 4
LD H,A
RES 7,L
CP 'TO+96
JP C,DEP
CHL LD C,(HL)
INC HL
RL C
RET
oldcl LD D,'TCOL_S
DEC A
JR Z,COLOLD
LD LX,A
LD E,A
DEPTAB CALL DEP3
DEC E
LD (DE),A
JR NZ,DEPTAB
COLOLD LD A,LX
LD B,64
CP 4
JR NC,COL45O
DEC A
JR Z,COL1
DEC A
JR Z,COL2
;2=11
;1=10
;0=0
COL3
LD A,#80
CALL DEPCOL0
JR Z,COL3N1
SLA C
CALL Z,CHL
RLA
DEC A
COL3N1 CALL PUTCOL
DJNZ COL3
RET
;1=1
;0=0
COL2
LD A,#80
CALL DEPCOL0
CALL PUTCOL
DJNZ COL2
RET
COL45O
JR Z,COL4
RRA
JR C,COL5
;5=111
;4=110
;3=101
;2=100
;1=01
;0=00
COL6 LD A,#40
CALL DEPCOL0
CP 2
JR C,COL6N1
DEC A
SLA C
CALL Z,CHL
RLA
COL6N1 CALL PUTCOL
DJNZ COL6
RET
;4=111
;3=110
;2=10
;1=01
;0=00
COL5 LD A,#40
CALL DEPCOL0
CP 3
JR C,COL5N1
SLA C
CALL Z,CHL
RLA
SUB 3
COL5N1 CALL PUTCOL
DJNZ COL5
RET
;3=11
;2=10
;1=01
;0=00
COL4
LD A,#40
CALL DEPCOL0
CALL PUTCOL
DJNZ COL4
RET
COL1
LD A,(DE)
LD D,A
RLCA
RLCA
RLCA
RLCA
OR D
EXX
LD B,8
COL10 LD (HL),A
INC L
LD (HL),A
INC L
LD (HL),A
INC L
LD (HL),A
ADD HL,DE
DJNZ COL10
EXX
RET
PUTCOL LD E,A
LD A,(DE)
EXX
RLD
LD A,C
AND #2A
JR Z,$+3
INC L
RLC C
JR NC,$+3
ADD HL,DE
EXX
RET
DEP3
LD A,#20
DEPCOL0 SLA C
CALL Z,CHL
ADC A,A
JR NC,DEPCOL0
RET
Другие статьи номера:
Похожие статьи:
В этот день... 25 октября