|
Hauptseite - Welches System? - Hardware - Software - Emulatoren - |
Internet MausNet Programmieren Verweise Über |
Extension: .SPS (low)
Dieses Format komprimiert Spectrum 512 Bilder besser als der Standardalgorithmus. Es gibt zwei Programme, die dieses Format unterstützen, SPSLIDEX und ANISPEC. Sie scheinen sich aber etwas in der Interpretation des Formates zu unterscheiden.
Header
1 WORD | Flag ($5350 bzw. "SP") |
1 WORD | reserviert für zukünftige Erweiterungen (immer 0) |
1 LONG | Länge der Datenbitmap |
1 LONG | Länge der Farbpaletten |
Bilddaten und Paletten
komprimiert, unkomprimiert siehe Spectrum 512
Kompression
Der Algorithmus ist ein modifizierter Lauflängenalgorithmus (RLE), ähnlich dem in Spectrum 512 (Compressed). Die Daten sind in Records gespeichert, die aus einem Header-Byte gefolgt von einem oder meheren Bytes bestehen. Die Bedeutung der Header-Bytes ist folgende:
Für ein gegebenes Header-Byte (unsigned) x:
0<=x<=127 | Wiederhole das nächste Byte x+3 mal |
128<=x<=255 | Verwende die nächsten x-128+1 Bytes |
Die Daten erscheinen in folgender Reihenfolge (wie im Spectrum 512 (Compressed) Format, SPSLIDEX?)
Die zweite Variante (ANISPEC?) speichert die Daten als breite vertikale Streifen:
Bilddaten, Plane 0, Zeile 1, Spalten 0 - 7. Bilddaten, Plane 0, Zeile 2, Spalten 0 - 7. Bilddaten, Plane 0, Zeile 3, Spalten 0 - 7. . . . Bilddaten, Plane 0, Zeile 199, Spalten 0 - 7. Bilddaten, Plane 0, Zeile 1, Spalten 8 - 15. Bilddaten, Plane 0, Zeile 2, Spalten 8 - 15. . . . Bilddaten, Plane 0, Zeile 199, Spalten 312 - 319. Bilddaten, Plane 1, Zeile 1, Spalten 0 - 7. . . . Bilddaten, Plane 3, Zeile 198, Spalten 312 - 319 Bilddaten, Plane 3, Zeile 199, Spalten 312 - 319.
Eine Schleife zum Auslesen dieser Daten hätte folgenden Aufbau:
for (plane = 0; plane < 4; plane++) for (x = 0; x < 320; x += 8) for (y = 1; y < 200; y++) for (x1 = 0; x1 < 8; x1++) image[y, x + x1] = ...
Palettenkomprimierung:
Die Komprimierung ähnelt der in Spectrum 512 (Compressed), aber die Colormap wird als Folge von Bits betrachtet anstatt als Folge von Word betrachtet. Es existieren 597 Records. Jeder Record enthält einen 14 Bit Header, gefolgt von 9 Bit Paletteneinträgen. Der Header gibt an, welche Einträge folgen (1=enthalten, 0=nicht enthalten). Das höchstwertige Bit steht für den Eintrag 1, während das niederwertigste Bit für Eintrag 14 steht. Paletteneintrag 0 und 15 werden auf schwarz (0) gesetzt. Jeder Paletteneintrag wird in der Form "rrrgggbbb" angegeben. Das Format der Palette ist im Kapitel über das unkomprimierte Format Spectrum 512 beschrieben.
English version not yet available. |