+0 10 BYTEs Signature "VPM 2.1",0,0,0 (probably version dependent) +10 1000 WORDs Planet coordinates. 500 X,Y pairs +2010 682 BYTEs Race names. Same format as RACE.NM +2692 n BYTEs Movie data, variable-sized blocks. Each block has the format +0 BYTE block type +1 n BYTEs block data A turn ends with a block of type 0 containing no data, i.e. just a null byte. Each block specifies the differences from the previous turn to this one. --- Planet block --- +0 BYTE 1 (block type) +1 n WORDs planet data bits 0..8 Id bits 9..12 owner bit 13 ? (0) bit 14 starbase present bit 15 ? (0) +m WORD 0 (block terminator) --- Ship block --- +0 BYTE 2 (block type) +n RECORDs of variable size: +0 WORD bit 0 hull info present bit 1 owner/engine info present bit 2 beam info present bit 3 torp info present bit 4 damage info present bit 5 X coordinate present bit 6 Y coordinate present bit 7..15 Id --- all these fields are optional: --- +? BYTE hull +? BYTE bits 0..3 owner bits 4..7 engine +? BYTE bits 0..3 beam type bits 4..7 beam count +? BYTE bits 0..3 torp type bits 4..7 torp launcher count +? BYTE damage% +? WORD X +? WORD Y +? WORD 0 (block terminator)
Note: when a ship is destroyed, this is reported with an entry that has only owner/engine information with new owner zero.
--- Minefield block --- +0 BYTE 3 (block type) +1 n RECORDs of variable size: +0 WORD Bits 0..8 Id Bit 15 1 if radius change only --- if Bit 15 clear --- +2 WORD X +4 WORD Y +6 WORD Radius +8 BYTE Bits 0..3 owner Bit 4 1=web --- if Bit 15 set --- +2 WORD Radius +m WORD 0 (block terminator)
Note that the VPM player assumes that the first recorded turn is turn 1, no matter what it really was.