Dali

From Just Solve the File Format Problem
(Difference between revisions)
Jump to: navigation, search
(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&lt;=156; i=i+4) {
 +
    for (offset=0; offset&lt;=31840; offset=offset+160) {
 +
        if (flag==0) {
 +
            flag = btab[index];
 +
            data = ltab[index];
 +
            index++;
 +
        }
 +
        bmap[offset + i] = (data &gt;&gt; 24) &amp; 0xFF;
 +
        bmap[offset + i + 1] = (data &gt;&gt; 16) &amp; 0xFF;
 +
        bmap[offset + i + 2] = (data &gt;&gt; 8) &amp; 0xFF;
 +
        bmap[offset + i + 3] = data &amp; 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

File Format
Name Dali
Ontology
Extension(s) .sd0 .sd1 .sd2 .hpk .lpk .mpk

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.

Software

Sample files

Links

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox