Virtual Disk doc fix typos and minor rewrites

This commit is contained in:
minjaesong
2022-12-21 04:12:37 +09:00
parent c48a4834f8
commit 71fd92ad17

View File

@@ -24,10 +24,10 @@ current specversion number: 254
Version 254 is a customised version of TEVD tailored to be used as a savegame format for Terrarum. Version 254 is a customised version of TEVD tailored to be used as a savegame format for Terrarum.
### 254 ### 254
- Removed compressed file; instead we're providing compression tool - Removed Compressed File; a compression tool is provided instead
- Footer moved upto the header (thus freeing the entry id 0xFEFEFEFE) - Footer moved up to the header (thus freeing the entry id 0xFEFEFEFE)
- Entry IDs are extended to 8 bytes - Entry IDs are extended to 8 bytes
- Removed file name field - Removed the file name field
### 0x03 ### 0x03
- Option to compress file entry - Option to compress file entry
@@ -37,7 +37,7 @@ Version 254 is a customised version of TEVD tailored to be used as a savegame fo
- 8 Reserved footer - 8 Reserved footer
### 0x01 ### 0x01
**Note: this version were never released in public** **Note: this version was never released to public**
- Doubly Linked List instead of Singly - Doubly Linked List instead of Singly
@@ -58,29 +58,29 @@ Version 254 is a customised version of TEVD tailored to be used as a savegame fo
## Header ## Header
Uint8[4] Magic: TEVd UInt8[4] Magic: TEVd
Int48 Disk size in bytes (max 256 TiB) Int48 Disk size in bytes (max 256 TiB)
Uint8[32] Disk name UInt8[32] Disk name
Int32 CRC-32 Int32 CRC-32
1. create list of arrays that contains CRC 1. create list of arrays that contains CRC
2. put all the CRCs of entries 2. put all the CRCs of entries
3. sort the list (here's the catch -- you will treat CRCs as SIGNED integer) 3. sort the list (here's the catch -- you will treat CRCs as SIGNED integer)
4. for elems on list: update crc with the elem (crc = calculateCRC(crc, elem)) 4. for elems on list: update crc with the elem (crc = calculateCRC(crc, elem))
Int8 Version Int8 Version (0xFE) ----- alongside the Marker Byte, these 2 bytes are designed to raise errors when
Int8 0xFE Int8 Marker Byte (0xFE) - the disk archive was read by the previous versions of the implementation.
< BEGIN extraInfoBytes > /* BEGIN extraInfoBytes */
Int8 Disk properties flag 1 Int8 Disk properties flag 1
0th bit: readonly 0th bit: readonly
Int8 Save type Int8 Save type (0b 0000 00ab)
0th bit: unset - full save; set - quick save b: unset - full save; set - quick save
1st bit: set - generated by autosave a: set - generated by autosave
Int8 Kind of the Save file Int8 Kind of the Save file
0: Undefined (old version of the game?) 0: Undefined (or very old version of the game)
1: Player Data 1: Player Data
2: World Data 2: World Data
Int8[13] Extra info bytes Int8[13] Extra info bytes reserved for future usage
< END extraInfoBytes > /* END extraInfoBytes */
Unit8[236] Rest of the long disk name (268 bytes total) UInt8[236] Rest of the long disk name (268 bytes total)
(Header size: 300 bytes) (Header size: 300 bytes)
@@ -91,18 +91,18 @@ Version 254 is a customised version of TEVD tailored to be used as a savegame fo
<Actual Entry> <Actual Entry>
NOTES: NOTES:
- entries are not guaranteed to be sorted, even though the disk cracker will make it sorted. - entries are not guaranteed to be sorted, even though the Disk Cracker will show them sorted.
- Root entry (ID=0) however, must be the first entry that comes right after the header. - Root entry (ID=0) however, must be the first entry that comes right after the header.
- Parent node of the root is undefined; do not make an assumption that root node's parent is 0. - Parent node of the root is undefined; do not make an assumption that parent of the root node is 0.
### Entry Header ### Entry Header
Int64 EntryID (random Long). This act as "jump" position for directory listing. Int64 EntryID (random Long). This act as "jump" position for directory listing.
NOTE: Index 0 must be a root "Directory" NOTE: Index 0 must be a root "Directory"
Int64 EntryID of parent directory Int64 EntryID of parent directory
UInt8 Flag for file or directory or symlink UInt8 Type Marker
0b d000 00tt, where: 0b d000 00tt, where:
tt - 0x01: Normal file, 0x02: Directory list, 0x03: Symlink tt: 01Normal file, 10Directory list, 11Symlink
d - discard the entry if the bit is set d: discard the entry if the bit is set
UInt8[3] <Reserved> UInt8[3] <Reserved>
Int48 Creation date in real-life UNIX timestamp Int48 Creation date in real-life UNIX timestamp
Int48 Last modification date in real-life UNIX timestamp Int48 Last modification date in real-life UNIX timestamp
@@ -110,14 +110,14 @@ NOTES:
(Header size: 36 bytes) (Header size: 36 bytes)
### Entry of File (Uncompressed) ### Entry of File
Int48 File size in bytes (max 256 TiB) Int48 File size in bytes (max 256 TiB)
<Bytes> Actual Contents <Bytes> Actual Contents
(Header size: 6 bytes) (Header size: 6 bytes)
### Entry of Directory ### Entry of Directory
Uint32 Number of entries (normal files, other directories, symlinks) UInt32 Number of entries (normal files, other directories, symlinks)
<Int64s> Entry listing, contains IndexNumber <Int64s> Entry listing, contains IndexNumber
(Header size: 4 bytes) (Header size: 4 bytes)