AVF: Difference between revisions
Jump to navigation
Jump to search
m (Update samples link) |
(fill information from ScummVM code) |
||
Line 4: | Line 4: | ||
AVF is suspected to be a multimedia format used in the game [http://www.mobygames.com/game/windows/nancy-drew-stay-tuned-for-danger Nancy Drew: Stay Tuned For Danger]. It may be used in other games in the ''Nancy Drew'' series. | AVF is suspected to be a multimedia format used in the game [http://www.mobygames.com/game/windows/nancy-drew-stay-tuned-for-danger Nancy Drew: Stay Tuned For Danger]. It may be used in other games in the ''Nancy Drew'' series. | ||
=== Header === | |||
Old format: | |||
3 bytes - "ALG" | |||
7 bytes - unknown | |||
2 bytes - major version | |||
2 bytes - minor version | |||
New format: | |||
15 bytes - "AVF WayneSikes" | |||
2 bytes - major version | |||
2 bytes - minor version | |||
1 byte - unknown | |||
Known versions are 1.0 and 2.0. | |||
Common header: | |||
2 bytes - number of frames | |||
2 bytes - width | |||
2 bytes - height | |||
1 byte - depth | |||
4 bytes - frame time | |||
1 byte - compression (should be 2) | |||
1 byte (version 1.0 only) - unknown | |||
=== Table of contents entries format === | |||
Table of contents entry for version 1.0: | |||
9 bytes - name | |||
4 bytes - index | |||
4 bytes - unknown | |||
4 bytes - offset | |||
4 bytes - compressed size | |||
Table of contents entry for version 2.0: | |||
2 bytes - index | |||
4 bytes - offset | |||
4 bytes - compressed size | |||
4 bytes - uncompressed size | |||
1 byte - type | |||
4 bytes - unknown | |||
=== Frame compression === | |||
Compression type 2 means that frame data is first compressed with LZSS scheme that groups flags into bytes and has spaces as the window fill value. | |||
Type 0 is raw data. Types 1 and 2 employ additional RLE-based compression (or can be empty frames). | |||
The compression method works by issuing one-byte commands for skipping or writing pixel pairs: | |||
* 0x20 - read 32-bit <code>skip</code> value and 32-bit <code>length</code> value, skip <code>skip * 2</code> pixels and read <code>length * 2</code> new pixels | |||
* 0x40 - read a pixel pair (2 bytes), 32-bit <code>skip</code> value and 32-bit <code>length</code> value, skip <code>skip * 2</code> pixels and output pixel pair <code>length</code> times | |||
* 0x80 - read 8-bit <code>length</code> value, read 32-bit number of skip+put operations, read <code>length * 2</code> new pixels into buffer, and then for the number of skip+put operations read 32-bit <code>skip</code> value, skip <code>skip * 2</code> pixels and output <code>length * 2</code> pixels from the buffer | |||
[[Category:Game Formats]] | [[Category:Game Formats]] | ||
[[Category:Undiscovered Game Formats]] | [[Category:Undiscovered Game Formats]] |
Revision as of 05:39, 20 July 2021
- Company: Her Interactive
- Extension: AVF
- Samples: http://samples.mplayerhq.hu/game-formats/avf/
AVF is suspected to be a multimedia format used in the game Nancy Drew: Stay Tuned For Danger. It may be used in other games in the Nancy Drew series.
Header
Old format:
3 bytes - "ALG" 7 bytes - unknown 2 bytes - major version 2 bytes - minor version
New format:
15 bytes - "AVF WayneSikes" 2 bytes - major version 2 bytes - minor version 1 byte - unknown
Known versions are 1.0 and 2.0.
Common header:
2 bytes - number of frames 2 bytes - width 2 bytes - height 1 byte - depth 4 bytes - frame time 1 byte - compression (should be 2) 1 byte (version 1.0 only) - unknown
Table of contents entries format
Table of contents entry for version 1.0:
9 bytes - name 4 bytes - index 4 bytes - unknown 4 bytes - offset 4 bytes - compressed size
Table of contents entry for version 2.0:
2 bytes - index 4 bytes - offset 4 bytes - compressed size 4 bytes - uncompressed size 1 byte - type 4 bytes - unknown
Frame compression
Compression type 2 means that frame data is first compressed with LZSS scheme that groups flags into bytes and has spaces as the window fill value.
Type 0 is raw data. Types 1 and 2 employ additional RLE-based compression (or can be empty frames).
The compression method works by issuing one-byte commands for skipping or writing pixel pairs:
- 0x20 - read 32-bit
skip
value and 32-bitlength
value, skipskip * 2
pixels and readlength * 2
new pixels - 0x40 - read a pixel pair (2 bytes), 32-bit
skip
value and 32-bitlength
value, skipskip * 2
pixels and output pixel pairlength
times - 0x80 - read 8-bit
length
value, read 32-bit number of skip+put operations, readlength * 2
new pixels into buffer, and then for the number of skip+put operations read 32-bitskip
value, skipskip * 2
pixels and outputlength * 2
pixels from the buffer