Dr. Halo PIC

From Just Solve the File Format Problem
(Difference between revisions)
Jump to: navigation, search
Line 17: Line 17:
  
 
Some editions of Dr. Halo support several dozen video cards, each with a handful of graphics modes, so supporting the entire format would be quite difficult. But it is realistic to support files that use the standard CGA/EGA/VGA modes.
 
Some editions of Dr. Halo support several dozen video cards, each with a handful of graphics modes, so supporting the entire format would be quite difficult. But it is realistic to support files that use the standard CGA/EGA/VGA modes.
 +
 +
== Format details ==
 +
''[Some of this information is based on reverse engineering, and may be incorrect. Written for the fileformats.archiveteam.org wiki.]''
 +
 +
A PIC file consists of a header segment, followed by the compressed image data. Byte order is little-endian.
 +
 +
=== Header structure ===
 +
 +
{| class="wikitable"
 +
! Offset !! Length !! Description
 +
|-
 +
|0 || 2 || "<code>AH</code>" signature
 +
|-
 +
|2 || 2 || Software version code?
 +
|-
 +
|4 || 2 || Unused?
 +
|-
 +
|6 || 1 || File type? Always 0x02.
 +
|-
 +
|7 || 1
 +
|Board ID? Known values:
 +
 +
{| class="wikitable"
 +
! Value !! Description !! Implied header size
 +
|-
 +
|0x01 || CGA || 16
 +
|-
 +
|0x07 || Hercules || 10
 +
|-
 +
|0x15 || EGA (4-plane modes) || 12
 +
|-
 +
|0x3c || VGA (1-plane modes) || 16
 +
|-
 +
|0x47 || VGA (4-plane modes) || 12
 +
|}
 +
 +
|-
 +
|8 || 2 || Unknown
 +
|-
 +
|10 || 2 || Graphics mode. This field is not always present.
 +
|}
 +
 +
For 4-color CGA-like modes:
 +
 +
{| class="wikitable"
 +
! Offset !! Length !! Description
 +
|-
 +
|12 || 1
 +
|0x10 bit: One of the palette selector bits.
 +
 +
Low 4 bits: Color of palette entry 0, from the standard 16-color PC/CGA palette.
 +
|-
 +
|13 || 1 || Unknown
 +
|-
 +
|14 || 1 || 0x01 bit: One of the palette selector bits.
 +
|-
 +
|15 || 1 || Unknown
 +
|}
 +
 +
=== Compression scheme ===
 +
Compression is byte-oriented. The "next multiple of 512 bytes" instructions refer to the absolute file position.
 +
 +
To decompress, read a byte (N), follow the instructions below, repeat.
 +
 +
{| class="wikitable"
 +
! Code byte (N) !! Instructions
 +
|-
 +
|N = 0 || End of plane. If there are more planes, seek to the next multiple of 512 bytes.
 +
|-
 +
|1 ≤ N ≤ 127 || Emit the next N bytes literally.
 +
|-
 +
|N = 128 || End of block: Seek to the next multiple of 512 bytes.
 +
|-
 +
|N ≥ 129 || Emit the next byte N−128 times.
 +
|}
  
 
== Identification ==
 
== Identification ==

Revision as of 18:37, 5 November 2022

File Format
Name Dr. Halo PIC
Ontology
Extension(s) .pic
Released 1984

Dr. Halo (including Dr. Halo Plus and Dr. Genius) is a line of raster image editing software for DOS, developed by Media Cybernetics.

Its main native file format is .PIC. Sometimes, a PIC file has a companion .PAL file. This article is about PIC format, and the software in general. There are separate articles for some formats:

PIC format does not seem to be as well known as CUT. A reference to "Dr. Halo format" most likely means CUT, not PIC.

Contents

Discussion

PIC is highly "device dependent". A PIC file contains identifiers for the relevant graphics hardware and mode, and a compressed copy of raw video memory.

Some editions of Dr. Halo support several dozen video cards, each with a handful of graphics modes, so supporting the entire format would be quite difficult. But it is realistic to support files that use the standard CGA/EGA/VGA modes.

Format details

[Some of this information is based on reverse engineering, and may be incorrect. Written for the fileformats.archiveteam.org wiki.]

A PIC file consists of a header segment, followed by the compressed image data. Byte order is little-endian.

Header structure

Offset Length Description
0 2 "AH" signature
2 2 Software version code?
4 2 Unused?
6 1 File type? Always 0x02.
7 1 Board ID? Known values:
Value Description Implied header size
0x01 CGA 16
0x07 Hercules 10
0x15 EGA (4-plane modes) 12
0x3c VGA (1-plane modes) 16
0x47 VGA (4-plane modes) 12
8 2 Unknown
10 2 Graphics mode. This field is not always present.

For 4-color CGA-like modes:

Offset Length Description
12 1 0x10 bit: One of the palette selector bits.

Low 4 bits: Color of palette entry 0, from the standard 16-color PC/CGA palette.

13 1 Unknown
14 1 0x01 bit: One of the palette selector bits.
15 1 Unknown

Compression scheme

Compression is byte-oriented. The "next multiple of 512 bytes" instructions refer to the absolute file position.

To decompress, read a byte (N), follow the instructions below, repeat.

Code byte (N) Instructions
N = 0 End of plane. If there are more planes, seek to the next multiple of 512 bytes.
1 ≤ N ≤ 127 Emit the next N bytes literally.
N = 128 End of block: Seek to the next multiple of 512 bytes.
N ≥ 129 Emit the next byte N−128 times.

Identification

PIC files start with ASCII "AH", and the byte at offset 6 is 0x02.

Software

Sample files

Links

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox