Hello trid users,
some days ago i handled WordPerfect files with name extension CBT. So
i looked for other WordPerfect samples. There exist samples with VRS
file name extension and names like: STANDARD.VRS
I found no information especially about file format specification
about such WordPerfect files, but luckily some basic info are found in
unofficial WordPerfect File Format description
WPFF_DocumentStructure.htm. So i choose that page as reference. That
is expressed by line like:
<RefURL>
https://github.com/OneWingedShark/WordPerfect/blob/master/ doc/SDK_Help/FileFormats/WPFF_DocumentStructure.htm
</RefURL>
When i run TrID on such examples these are described correctly but
unspecific like "WordPerfect (generic)" by definition
wp-generic.trid.xml (see appended output/trid-v-old.txt).
For comparison reason i also run the file utility (version 5.42). This
describes the examples as "Corel WordPerfect" with sub classification
as "Unknown filetype 36" and version "v5.0" (see appended
output/file-5.42.txt).
In the unofficial documentation for VRS file type 26 is listed and for
36 for WPD is listed. Oh, this this seems to be a changing
accident. So i mentioned this in remark line. Furthermore i looked how
other call VRS samples. I found something like "Corel WordPerfect
video resource device driver" or "Video Resource e.g. video device
driver - WordPerfect". So i choose what seems to fit best the file
name suffix. So i express this inside TrID definition by lines like:
<FileType>WordPerfect Video Resource</FileType>
<Ext>VRS</Ext>
When looking inside sample near the beginning i found string like "IBM
CGA (& compatibles)". So i know that this classification is alright.
So i run tridscan on my examples to generate vrs-wp.trid.xml. So we
see that not only the first 4 bytes are the same like \xFFWPC that is
generic for all WordPerfect samples, but also the first bytes are the
same. That is expressed by XML construct like:
<Bytes>FF5750431000000001240000000000005C7387F94473030014004A7309004C00</Bytes>
<ASCII> . W P C . . . . . $ . . . . . . \ s . . D s . . . . J s . . L</ASCII>
<Pos>0</Pos>
Unfortunately the definition is based only on 1 sample. At offset 4
pointer to document area is stored as 4 byte little endian integer. In
my example this value was 16 ( hexadecimal 10). So the 3 upper bytes
are nil by lucky circumstances in my examples. At offset the 8 and 9
the product and file type are stored. In my example this value was
always 1 and 36 ( hexadecimal 24). That is significant for WordPerfect
Video Resource VRS files.
At offset 10 the major version and minor version fields are stored as
byte value. In my examples this value was v5.0 ( hexadecimal 0000).
Assuming that there exist examples with other document area offset and
other version numbers this becomes according to documentation like:
<Pattern>
<Bytes>FF575043</Bytes>
<ASCII> . W P C</ASCII>
<Pos>0</Pos>
</Pattern>
<Pattern>
<Bytes>0124</Bytes>
<Pos>8</Pos>
</Pattern>
At offset 12 encryption field is stored. In my examples this was
always zero. At offset 14 pointer to index area is stored. In my
examples this value was always zero. At offset 16 not documented
extended header starts. In my examples this value always starts with
byte sequence 5C7387F9447303. But i do not know if this always
true. So i delete these parts concerning patterns.
With the new definition now WordPerfect WordPerfect Video Resource VRS
examples are described more precisely ( see appended
output/trid-v-new.txt). TrID definition and output are stored in
archive vrs.zip. I hope that the XML file can be used in future
version of triddefs.
With best wishes
Jörg Jenderek