Dali
From Just Solve the File Format Problem
(Difference between revisions)
(→Links) |
|||
Line 13: | Line 13: | ||
<code>SD2</code> files are 640x400 in mono | <code>SD2</code> files are 640x400 in mono | ||
+ | == Format details == | ||
+ | |||
+ | === Dali file format === | ||
+ | |||
+ | Copied from AtariForumWiki.[https://archive.org/details/wiki-atari_wikicom] | ||
+ | |||
+ | <pre> | ||
+ | Dali *.SD0 (ST low resolution) | ||
+ | *.SD1 (ST medium resolution) | ||
+ | *.SD2 (ST high resolution) | ||
+ | |||
+ | Files do not seem to have any resolution or bit plane info stored in them. The file | ||
+ | extension seems to be the only way to determine the contents. | ||
+ | |||
+ | 1 long file id? [always 0] | ||
+ | 16 words palette | ||
+ | 92 bytes reserved? [usually 0] | ||
+ | 32000 bytes raw image data | ||
+ | ----------- | ||
+ | 32128 bytes total for file | ||
+ | </pre> | ||
+ | |||
+ | === Dali Compressed file format === | ||
+ | |||
+ | Copied from AtariForumWiki.[https://archive.org/details/wiki-atari_wikicom] | ||
+ | |||
+ | <pre> | ||
+ | Dali compressed *.LPK (ST low resolution) | ||
+ | *.MPK (ST medium resolution) | ||
+ | *.HPK (ST high resolution) | ||
+ | |||
+ | Files do not seem to have any resolution or bit plane info stored in them. The file | ||
+ | extension seems to be the only way to determine the contents. | ||
+ | |||
+ | 16 words palette | ||
+ | ? size of byte array in bytes, stored as plain ASCII text + cr/lf | ||
+ | ? size of long array in bytes, stored as plain ASCII text + cr/lf | ||
+ | ? array of bytes | ||
+ | ? array of longs | ||
+ | |||
+ | ? image data: | ||
+ | Assuming the tables have been loaded into arrays: | ||
+ | uint8 *btab=malloc(size of byte array); | ||
+ | uint32 *ltab=malloc(size of long array); | ||
+ | |||
+ | uint8 *bmap=malloc(32000); /* st bitmap */ | ||
+ | |||
+ | /* PureC example by Lonny Pursell - placed into the Public Domain 1/19/2017 */ | ||
+ | uint8 flag; | ||
+ | uint16 i, index, offset; | ||
+ | uint32 data; | ||
+ | flag = index = 0; | ||
+ | for (i=0; i<=156; i=i+4) { | ||
+ | for (offset=0; offset<=31840; offset=offset+160) { | ||
+ | if (flag==0) { | ||
+ | flag = btab[index]; | ||
+ | data = ltab[index]; | ||
+ | index++; | ||
+ | } | ||
+ | bmap[offset + i] = (data >> 24) & 0xFF; | ||
+ | bmap[offset + i + 1] = (data >> 16) & 0xFF; | ||
+ | bmap[offset + i + 2] = (data >> 8) & 0xFF; | ||
+ | bmap[offset + i + 3] = data & 0xFF; | ||
+ | flag--; | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
== Identification == | == Identification == | ||
Line 30: | Line 97: | ||
* https://www.atari-forum.com/index.php/Dali_file_format | * https://www.atari-forum.com/index.php/Dali_file_format | ||
* https://www.atari-forum.com/index.php/Dali_Compressed_file_format | * https://www.atari-forum.com/index.php/Dali_Compressed_file_format | ||
+ | |||
+ | [[Category:Atari graphics formats]] |
Revision as of 10:43, 14 August 2020
Dali is a graphics program for the Atari ST.
SD0
files are 320x200 with 16 colors
SD1
files are 640x200 with 4 colors
SD2
files are 640x400 in mono
Contents |
Format details
Dali file format
Copied from AtariForumWiki.[1]
Dali *.SD0 (ST low resolution) *.SD1 (ST medium resolution) *.SD2 (ST high resolution) Files do not seem to have any resolution or bit plane info stored in them. The file extension seems to be the only way to determine the contents. 1 long file id? [always 0] 16 words palette 92 bytes reserved? [usually 0] 32000 bytes raw image data ----------- 32128 bytes total for file
Dali Compressed file format
Copied from AtariForumWiki.[2]
Dali compressed *.LPK (ST low resolution) *.MPK (ST medium resolution) *.HPK (ST high resolution) Files do not seem to have any resolution or bit plane info stored in them. The file extension seems to be the only way to determine the contents. 16 words palette ? size of byte array in bytes, stored as plain ASCII text + cr/lf ? size of long array in bytes, stored as plain ASCII text + cr/lf ? array of bytes ? array of longs ? image data: Assuming the tables have been loaded into arrays: uint8 *btab=malloc(size of byte array); uint32 *ltab=malloc(size of long array); uint8 *bmap=malloc(32000); /* st bitmap */ /* PureC example by Lonny Pursell - placed into the Public Domain 1/19/2017 */ uint8 flag; uint16 i, index, offset; uint32 data; flag = index = 0; for (i=0; i<=156; i=i+4) { for (offset=0; offset<=31840; offset=offset+160) { if (flag==0) { flag = btab[index]; data = ltab[index]; index++; } bmap[offset + i] = (data >> 24) & 0xFF; bmap[offset + i + 1] = (data >> 16) & 0xFF; bmap[offset + i + 2] = (data >> 8) & 0xFF; bmap[offset + i + 3] = data & 0xFF; flag--; } }
Identification
.sc*
files are exactly 32128 bytes long.
*.pk
files are compressed.