417
edits
(Made corrections to the Operation Stealth's savegame format (e.g. no entry sizes are saved after the screen parameters). Also added some TODOs and comments.) |
(Added more detail to chapter title "Compression format" with "Compression format (Bytekiller 1.3)".) |
||
(5 intermediate revisions by 2 users not shown) | |||
Line 10: | Line 10: | ||
===.ADL files=== | ===.ADL files=== | ||
AdLib music. | |||
===.AMI files=== | ===.AMI files=== | ||
Line 305: | Line 305: | ||
</pre> | </pre> | ||
===Compression format=== | ===Compression format (Bytekiller 1.3) === | ||
The compression algorithm used by all Delphine's adventure games uses | The compression algorithm used by all Delphine's adventure games uses | ||
sliding window compression (Quite like [http://en.wikipedia.org/wiki/LZ77 LZ77]) | sliding window compression (Quite like [http://en.wikipedia.org/wiki/LZ77 LZ77]) | ||
combined with a fixed non-adaptive [http://en.wikipedia.org/wiki/Entropy_coding entropy coding] scheme | combined with a fixed non-adaptive [http://en.wikipedia.org/wiki/Entropy_coding entropy coding] | ||
scheme. It seems that the algorithm is [http://www.pouet.net/prod.php?which=47994 Bytekiller 1.3]. | |||
This is based on comparing the reverse engineered | |||
[https://github.com/scummvm/scummvm/blob/branch-2-0-0/engines/cine/unpack.cpp#L92 decompression routine] | |||
in ScummVM with the | |||
[https://github.com/aperture-software/colditz-escape/blob/v1.2/low-level.c#L150 uncompress]-function | |||
from [https://github.com/aperture-software/colditz-escape Colditz Escape]'s source code. | |||
The compressed data is in big endian 32-bit chunks, working backwards from the buffer's end. | The compressed data is in big endian 32-bit chunks, working backwards from the buffer's end. | ||
Line 405: | Line 411: | ||
error detection method, it lets errors through relatively easily if compared to other more robust | error detection method, it lets errors through relatively easily if compared to other more robust | ||
error detection methods like [http://en.wikipedia.org/wiki/SHA-1 SHA-1] or even [http://en.wikipedia.org/wiki/Cyclic_redundancy_check CRC]). | error detection methods like [http://en.wikipedia.org/wiki/SHA-1 SHA-1] or even [http://en.wikipedia.org/wiki/Cyclic_redundancy_check CRC]). | ||
===Fonts=== | |||
Fonts are loaded from file "TEXTE.DAT". | |||
====TEXTE.DAT file's format==== | |||
<pre> | |||
Byte Meaning | |||
------ ------------------------------------------------------------ | |||
0-1 Entry size (16-bit big endian integer) | |||
2-3 Entry count (16-bit big endian integer) | |||
4-end Font data (4-bit bitplaned data in 16-bit big endian chunks) | |||
------ ------------------------------------------------------------ | |||
</pre> | |||
* Characters are 16x8 in size | |||
* Entry size has been 8 in all observed data | |||
* Entry count divided by entry size gives the number of characters in the font | |||
* Take a look at [http://scummvm.svn.sourceforge.net/viewvc/scummvm/scummvm/trunk/engines/cine/gfx.cpp?revision=33976&view=markup#l_1669 gfxConvertSpriteToRaw] to see how the font data can be unpacked | |||
====Known different font versions==== | |||
There are 4 known different font versions: | |||
=====78 characters version===== | |||
* Used by most PC, Amiga and Atari ST versions of Future Wars, but also by Operation Stealth's Amiga demo | |||
* [[Image:Cinematique-78_characters_font.png]] | |||
=====85 characters version===== | |||
* Used by all observed versions of German Future Wars (Amiga and PC), possibly by Spanish Future Wars too | |||
* [[Image:Cinematique-85_characters_font.png]] | |||
=====90 characters version===== | |||
* Used by most PC, Amiga and Atari ST versions of Operation Stealth | |||
* [[Image:Cinematique-90_characters_font.png]] | |||
=====93 characters version===== | |||
* Used by all observed versions of German Operation Stealth (Amiga and PC) | |||
* [[Image:Cinematique-93_characters_font.png]] |
edits