Odyssey Magazine #02
14 июля 1997

System - The format PSX.

<b>System</b> - The format PSX.
IBM: PCX
_______

Music by Shov



           The format PCX


   Translated from the English language and format
   derivations are made at the Institute

   Applied Mathematics, USSR Academy of Sciences Samoth
   hinym

The interpreter


     The original document was received by me from
JVDialuge 1st BBS 10.09.1991, translated into
Russian language and format. Some
part of the document is not relevant to the technical 
information in the translation have been omitted. Where I felt 
it necessary, I supplied translate his comments.


ZSoft Corporation
450 Franklin Rd. Suite 100
Marietta, GA 30067
(404) 428-0008
Copyright 1988 ZSoft Corporation



                 Introduction



    The purpose of this booklet is
to help users and software developers to understand the 
technical aspects of the format. PCX and use Utility FRIEZE. 
All comments, questions and proposals for the booklet, please 
contact: 

ZSoft Corporation
Technical Support Department
ATTN: Technical Reference Manual
450 Franklin Rd. Suite 100
Marietta, GA 30067



     Image File Format (. PCX)



    Information in this section will be useful for you if you 
want to write program to read or write PCX files. If you want 
to write a program to images of a strictly defined format

You should be able to create something
so it will work twice as fast
than the "Load from ..." in PC Paintbrush. Files
images that are used in PC Paintbrush product family and FRIEZE 
(with extensions. PCX) begins with a header

length of 128 bytes. Usually you can ignore this header, if all 
your images will have the same resolution. If you want to 
process images with different resolutions and different number 
of colors, you need to correctly interpret the information 
stored in the header. The rest of the file image consists of a 
coded graphic data. When coding is used a simple algorithm 
based on method for long series. We reserve the right to modify 
this algorithm to improve packing.

If the file is stored several color layers, each row of the 
image is stored in the color layers (in the general case Red-R, 
Green-G, blue-B and the layer intensity-I) on the diagram below:


Scan line 0:

    RRR ...

    GGG ...

    BBB ...

    III ...
Scan line 1:

    RRR ...

    GGG ...

    BBB ...

    III ...
(Etc.)

Note interpreter


     Here in the original document, there has clearly 
incorrect. Memorization of layers is carried out, usually for

16-color images EGA. In this case,
initially stored contents of a string of
zero layer of video memory, then from the first, etc. It is 
easy to see that even with a standard palette of EGA, which is 
installed by default BIOS, zero layer of video memory provides 
the BLUE component of the color, not red. If the palette 
differs from the standard, then talk about that the layers of 
video memory are related to the components of color in general 
is difficult. 

Coding method is as follows:
For each byte of X, read from a file

    If the two most significant bits of X are equal to 1, then

        <Repeater> = 6 junior bits X

         = 1

         = X


    As for the saturation of the algorithm takes an average of 
25% of unique data and at least the presence of bias between 
repeated data, then size of the output file, usually turns out 
to be acceptable. The format of the header file is shown below. 

Note interpreter


     Under the saturation algorithm document authors appear to 
understand the situation, when the size of the output file is

more than the amount required video memory
for submission to the recorded image.
It should be noted that from this point of view
format PCX, certainly not the best. In particular, such a 
saturation often holds for colored realistic images, especially 
if they are created applied the methods of halftoning.



           PCX Header Format


Removed. Designation Length Comment
 0 Manufacturer 1 Constant Flag

                           10 = ZSoft. PCX
 1 Version 1 About

                           Version:

                            0 = Version 2.5

                            2 = Version 2.8

                           with information about

                           Palette

                            3 = Version 2.8

                            without information

                            on the palette

                            5 = Version 3.0
 2 January 1 Encoding =. PCX Cody
                            derivations of length
                            GOVERNMENTAL series
 3 Bits per pixel 1 Number of bits per

                           pixel in a layer
 4 Window 8 Dimensions images
                           tion (Xmin,

                           Ymin) - (Xmax,

                           Ymax) in pixels

                           inclusive
12 HRes 2 horizontal

                           Resolution cos
                           giving device
                           properties
14 VRes 2 Vertical

                           Resolution cos
                           giving device
                           properties
16 Colormap 48 Color Set

                           palette (see

                           followed by the text)
64 Reserved 1
65 NPlanes 1 Number of colors

                           layers
66 Bytes per Line 2 Number of bytes per

                           line in color
                           first layer (for

                           PCX-files, all
                           always be

                           even)
68 Palette Info 2 How to interpret the
                           rovat palette:

                            1 = color /

                              black,

                            2 = graduation

                                  Gray
70 Filler 58 completed well
                           lyami until the end

                           Title

All the variables of length 2 are integers.

Note interpreter


    To avoid misunderstanding: in the field
Window series are 4 integers that correspond to the angular
image coordinates Xmin, Ymin, Xmax,
Ymax. As a rule, Xmin and Ymin = 0.


    Decode files in PCX



   First, determine the size of the image
calculating

      [XSIZE = Xmax - Xmin + 1]

      [YSIZE = Ymax - Ymin + 1].
Then calculate how many bytes are required
to save one uncompressed line scan images: TotalBytes = NPlanes 
* BytesPerLine

Note that because we always used
integer number of bytes that may exist
unused data at the end of each scan line. TotalBytes shows how 
much memory should be available to decode each scan line, 
including unused information at the right end

each line.


     Now you can start decoding
the first scan line - read the first byte of data from a file. 
If the two senior bits of this byte is equal to 1, the 
remaining six bits indicate how many times to repeat next byte 
of the file. If this not so, then this byte is the data itself

with a repeater to 1. Continue decoding until the end of the 
line, scoring the number of bytes transferred to the output 
buffer. At the end of each scan line takes place stop coding 
algorithm, but it did not exist during the transition from one

layer to another. When a string is formed
completely at the end of each layer within
line might have a redundant data. For
finding that balance and use the values ​​XSIZE YSIZE. If the 
data are multi-layer, then BytesPerLine shows

where each fiber terminates within scan line.


      Continue to decode the remaining
lines. In the file there may be extra
lines, rounded to 8 or 16 lines.

Note interpreter


     As follows from the above description,
at the end of each scan line provides a stop coding algorithm,
ie it is assumed that each scan line is encoded independently. 
However, my familiarity with files in PCX format shows that 
this is not always the case files (in this format writes not 
only ZSoft Corpration !). So I would advise users

do not expect that such a stop
will necessarily take place. End of each line is better to 
commit to filling its buffer. This is certainly

slightly complicate the decoding program, but
make it more flexible. (Incidentally,
PC Paintbrush graphics editor understands PCX files recorded 
without stop coding algorithm at the end

each row, although the generation of your own files to stop 
doing this). 


      Description of information about the palette


Information about the 16-color palette (EGA / VGA)


    Information on the palette is stored in
one of two different formats. In standard format, RGB (IBM EGA, 
IBM VGA) data are stored in 16 threes. Each

triplet consists of 3 bytes with values
Red (Red), green (Green), and blue
(Blue) colors. Values ​​may be in
0-255, and therefore require their
interpretation of the format used equipment. For example, the 
IBM EGA, there 4 possible levels of RGB for each color.

Since 256 / 4 = 64, then the following is a
a list of matching the color values ​​and
Level:

Significance level

  0-63 0
 64-127 1
128-192 2
193-254 3

Information on the 256-color VGA


    Currently ZSoft added the ability to store in an image file 
PCX palette of more than 16 colors. 256-color palette is 
formatted and interpreted the same way as 16 color, of course, 
except that it is longer. The palette (number of colors x 3 
bytes length) is appended to the PCX file, and it preceded by a 
byte with a decimal value 12. To determine the palette VGA BIOS 
you enough to divide the values ​​read

flowers on 4.

To access the 256-color palette should:
1. Read in the header field Version. If it is 5, the palette 
should be. 2. Read the end of the file and count back

769 bytes. Found the value you should
equal 12, which indicates the presence
256-color palette.

Note interpreter


     Two comments on the 256-color
palette. Firstly, between points 1 and 2
given instructions I would add the following: "Read in the 
header field Bits per pixel. If it is 8, 256-color palette 
should be.. "The meaning is obvious. Secondly, now fairly 
widely spread software package. PCX Programmer's Toolkit firm 
Genus Microprogramming. In this package (at least in the 
versions I know) adopted way to store 256-color palette 
somewhat different from what has been described above. The 
difference is that the panel preceded by a byte with a decimal 
value 10 (instead of 12), and the values ​​of color components 
occupy the lower 6 bits in each of the three bytes of color 
(ie, change from 0 to 63, as is customary in the VGA BIOS).



    Information about the color palette, CGA



    A standard IBM CGA board bit
set to determine the palette is more complicated. Only the 
first three bytes. The first three contain only first byte with 
a meaningful value, which determines the background color. To 
determine the color background to the value of the byte 
(unsigned) divided by 16. The result will be The value obtained 
in the range of 0-15, which determines the background color. 
The second triple contains a meaningful value of the first 
byte, which defines the value of the palette for the remaining 
three colors. PC Paintbrush support for these 8 possible colors

palettes, CGA, and because the value of byte
can be from 0 to 255, it should be divided by 32 (see diagram 
below). 

Table of colors for CGA
Byte # 16 in the title
 The background color is determined by four senior bats.
Byte # 19 in the title
 Only 3 bits are, the other 5 are ignored. The first three bits
denoted as C, P, I.

   Their interpretation:

  C: resolution color burst - 0 = color; 1

  = Monochrome

  P: Palette - 0 = yellow, 1 = white

  I: Brightness - 0 = low, 1 = high.

Note interpreter


    As you can see the original document is silent about cases 
in which information header file should be interpreted as a 
palette CGA. It is not excluded that the branching should be 
based on a field Version header. 

__________________________________________




Other articles:

Entry - What will be the third issue?

Entry - on the envelope

Assembler - Is it possible to throw a screen (6144 bytes) per tick.

Assembler - Slight to scroll the text up to the window 15x24 familiarity.

Discussion - AMIGA VS PC view readers (VVG).

Presentation - VIRTUAL VISION GROUP from Voronezh.

a rest - Rock Encyclopedia: MEGADEATH ...

IS-DOS - Problems and Solutions: macros.

IS-DOS - How to use macros.

Mail - Scrolling to row up and down.

Mail - Print Line 32-character font.

Mail - The procedure for proportional printing.

a rest - Short Story "Cheburashka".

System - The format PSX.

System - Description of program: Y-COMMANDER & MS COMPILER v1.08.

Review - System Software: XAS 7.1

Review - System software: PRO TRACKER 2,1, PRO TRACKER 3,0 d

Review - System Software: ZASM

Demolition - Game Review on "futbolny Management: Review on" futbolny management ": THE DOUBLE, MSMANAGER, MANCHESTER UNITED, KENNY, SOCCER RIVALS, 1-ST DIVISION MANA- GER, SUPER LEAGUE, SOCCER BOSS, PROFFESIONAL SOCCER FOOTBALL, MANAGER 2, ADVANCED SOCCER SIMULATOR.

Interview - An Interview with FIKUS / Flash Inc.

a rest - Once in a lecture.

History - Hackers - art "it" - about the history of the emergence of hacking. p.2

System - Prospects Group Assept Corp: APS v2.0.

System - Multicolor Studio Compiler

Demolition - Description of the game: SOCCER RIVALS.

Advertising - Advertising and announcements.

News - Ferris Wheel.

Mail - about letters

Mail - Competition for best golovolmku (first 2 puzzles).

Review - New Games: TIME COP, UFO III, MORTAL COMBAT, MINELAYER, SEX REVERSY, THE MAGIC OF LOGIC, FEUDAL WARS, CUP AVILLIADY, CHOPPER DUEL, BACK TO SCHOLL, LCP, 750 CC GRANDPRX, INTERNA- TIONAL KIKBOXING, TAG TEAM WRESTLING, CAPTAIN PLANET, DOC THE DESTRUE DUX, OLE, TORO!.

Presentation - The history of AURYN.

Gift - On application to the magazine.

Demorynok - Hit Parade music dem.

System - description: BRIEF DESCRIPTION OF THE TEAMS Y-COMMANDER.

authors - The authors of the journal


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

Similar articles:
Entry - the contents of rooms.
Articles - Chipmeyking as art minimum or "My opinion about the AY-music. "
Internet - "The law is the law."
Music scene - an overview of the musical album "Listen up, i'm here" by Scalesmann / march cats.

В этот день...   21 November