Difference between revisions of "Cine/Specifications"

Jump to navigation Jump to search
1,987 bytes added ,  17:39, 5 May 2018
Added more detail to chapter title "Compression format" with "Compression format (Bytekiller 1.3)".
(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.
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 (Not of any type I could recognize).
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]]
417

edits

Navigation menu