All PG2 file structures, compiled by L.Guzman * December 2005.

I started upon Lasse Hintze Jensen files specifications, but compiled on a single file, fixing some minor errors (as "Player data" lenght which is 388 bytes instead of 288), adding .DAT and .SHP files and updating the new fields made available by the patch 2.10.
I have to thank to Lasse for doing the heaviest work, but also to Progi and Fred Chlanda for his help on understanding some of the files structures. I have rearrange and sometimes renamed, some of the intermediate structures, according to my own understanding, so be aware this document could seem somehow different than those published by Lasse.
 


Index

  Equipment (EQP)
  Campaign (CAM)
  Map definition (MAP)
  Panzer2.dat (DAT)
  Pictures (SHP)
  Sounds (MEL)
  Music (MUS)
  Scenario (SCN)
  Campaign Savegame (CSV)
  Play by e-mail Savegame (EML)
  Single Savegame (SAV)
   

 

The Equipment (EQP) file
The PG2 equipment file has not a fixed size.
This file holds all the data for every unit. Its size depend upon the number of units in the file.
Along with the *.EQP file is a *.TXT with the same name, that hold all the names of the units.
The equipment files (.eqp + .txt) must be on main game directory.
 
Bytes Read as Meaning
2 word Number of units in the file. Depending on game patch you use this can be
< 1000 for SSI 1.0x
< 2000 for unofficial patch 102G
< 4000 for unofficial patch 120
Variable Equip rec #items x 73 bytes each
Bytes Read as Meaning
2 word Equipment code. It should be the index in equip.txt also, but is not used this way.
equipment code and text entry is reagrdless this value the record index in this file
1 byte Equipment class
     00=None (no unit maker)
     01=Infantry
     02=Tank
     03=Recon
     04=Anti-Tank
     05=FlaK (Panzer General II)
     06=Fortification
     07=Ground Transport (no unit maker)
     08=Artillery
     09=Air Defense
     10=Fighter
     11=Tactical Bomber
     12=Level Bomber (no unit maker)
     13=Air Transport
     14=Submarine
     15=Destroyer
     16=Battleship
     17=Carrier
     18=Naval Tansport
     19=Battle Cruiser
     20=Cruiser
     21=Light Cruiser
1 byte Soft attack
1 byte Hard attack
1 byte Air attack
1 byte Naval attack
1 byte Ground defense
1 byte Air defense
1 byte Close defense
1 byte Target type
     0=Soft
     1=Hard
     2=Air
     3=Sea
1 byte Initiative
1 byte Gun Range
1 byte Spotting Range
1 byte Range defense modier
1 byte Move mode
      0=Ground
      1=Air
1 byte Movement Method
      00=Tracked
      01=Half Tracked
      02=Wheeled
      03=Leg
      04=Towed
      05=Air
      06=Deep Naval
      07=Costal
      08=All Terrain (tracked)
      09=Amphibious
      10=Navel
      11=All Terrain (Leg)
1 byte Movement
1 byte Fuel
1 byte Ammunition
1 ? Unknown
1 byte Prestige cost. The value you see is this data x 12
2 ?? Unknown, though it seems a kind of internal shp-index
1 ? Unknown.
1 byte Month expired
1 byte Month available
1 byte Year available
1 byte Year expired
1 byte Non-organic transport
      00=Cannot be transported
      01=Can be Naval transported
      02=Can be Airmobile & naval
      03=can be Airborne & naval & Airmobile
1 Bitfields 1st Country byte, each bit is correspond with an specific country
      bit1 = country #7
      bit2 = country #6
      bit3 = country #5
      bit4 = country #4
      bit5 = country #3
      bit6 = country #2
      bit7 = country #1
      bit8 = country #0 -> NO country
1 Bitfields 2nd Country byte
      bit1 = country #15
      bit2 = country #14
      bit3 = country #13
      bit4 = country #12
      bit5 = country #11
      bit6 = country #10
      bit7 = country #9
      bit8 = country #8
1 Bitfields 3rd Country byte
      bit1 = country #23
      bit2 = country #22
      bit3 = country #21
      bit4 = country #20
      bit5 = country #19
      bit6 = country #18
      bit7 = country #17
      bit8 = country #16
1 Bitfields 4th Country byte
      bit1 = country #31
      bit2 = country #30
      bit3 = country #29
      bit4 = country #28
      bit5 = country #27
      bit6 = country #26
      bit7 = country #25
      bit8 = country #24
1 Bitfields 1st Special attributes byte
      bit1 = Unit is Available in Game
      bit2 = ?
      bit3 = Unit Ignores Entrenchments
      bit4 = Unit is Bridge on Rivers
      bit5 = Unit cannot start Soft Attack
      bit6 = Unit cannot start Hard Attack
      bit7 = Unit cannot start Air Attack
      bit8 = Cannot be Purchased
1 Bitfields 2nd Special attributes byte
      bit1 = No buyable for AI
      bit2 = Mountain movement
      bit3 = Recon (phased) movement
      bit4 = disembark, (jump out transport if attacked)
      bit5 = Turn on/off support fire availability
      bit6 = Air units supply option (carrier like option)
      bit7 = Air transportable with transport (don't loose transport when air embarked)
      bit8 = unit can attack Air targets
1 Bitfields 3rd Special attributes byte
      bit1 = Combat support (same as leader)
      bit2 = No prototype
      bit3 = Can be purchased (allow to purchase otherwise no purchasables unit)
      bit4 = Carrier deploy option
      bit5 = Ground Unit can capture a flag
      bit6 =
      bit7 =
      bit8 =
1 byte 4th Special attributes byte - Not used YET
1 byte Bomber size (for Lebel bombers only)
6 Array of char Icon name
2 word Attack sound.
this number will be added to 2000 to get a MEL file (20xx.MEL)
2 word Move sound.
this number will be added to 1000 to get a MEL file (10xx.MEL)
2 word Death sound.
this number will be added to 3000 to get a MEL file (30xx.MEL)
1 byte Ground transport weight
1 byte Air and naval transport weight
20 ?.. Unknown
If the equipment file uses the +5 countries extension allowed when using the patch 2.10, the game needs 5 additional country names.
Add the 5 country names at the end of the GUI97.TXT file (line 441-45). If the game finds >= 124 pictures in FLAGS1.SHP file the new country names will be used. To show the correct unit class name in the INSPECT UNIT and HQ screen, change also line 139 and 146 this way:
     139: replace “Panzer General II" with "FlaK"
     146: replace “Panzer General II" with "Level Bomber"
     441: name of country #27
     …
     445: name of country #31

so you should have a GUI97.txt file with 445 lines instead of the 440 lines.>

Back to top

The Campaign (CAM) file
The PG2 campaign file is always 31944 byte big.
It can hold a maximum of 50 scenarios as it is.
The campaign files has to be in the SCENARIO directory.
 
Bytes Read as Meaning
2 word Number of scenarios in campaign
2 word Prestige points for player at start of campaign. If prestige goes higher then 65535 it will role over to 0
20 Arrav of char Winning the campaign SMK filename
20 Array of char Loseing the campaign SMK filename
31800 Scenario Data 50 scenarios x 636 bytes each
 
Bytes Read as Meaning
2 word Total max prestige (player cap)
This has to do with prestige.
It demands if you get your victory/loss prestige.
If you have more prestige, then "Total Max", at the
end of a scenario you DON'T get the victory/loss
prestige! NOTE: its the NEXT SCENARIOS "Total Max"
that decide for the CURRENT scenario.
If you have less, you get as much of the victory/loss
prestige until you run over "Total max".
2 word Lasse called Start Max prestige, a kind of cap for Start prestige for player field.
But it rather look like it disables "Total max prestige" so any award defined is added, regardless current player prestige at the start of a scenario. If this is zero, then player prestige is limited by "Total max prestige" (player cap)
2 word maybe AI start prestige. PG2 doesn't use it.
2 word Start prestige for player.
This is prestige you get, at the start of a scenario if you have less the "Start Max"
20 Array of char Scenario filename
20 Array of char Scenario SMK intro  filename
20 Array of char Scenario MUS intro filename
20 Array of char Scenario TXT intro filename
2 word prestige awarded for brilliant victory
20 Array of char Scenario SMK filename for brilliant victory
20 Array of char Scenario MUS filename for brilliant victory
20 Array of char Scenario TXT filename for brilliant victory
20 Array of char Scenario SMK after TXT for brilliant victory
2 word prestige awarded for  victory
20 Array of char Scenario SMK  filename for victory
20 Array of char Scenario MUS filename for victory
20 Array of char Scenario TXT ifilename for victory
20 Array of char Scenario SMK after TXT for victory
2 word prestige awarded for tactical victory
20 Array of char Scenario SMK intro  filename for tactical victory
20 Array of char Scenario MUS intro filename for tactical victory
20 Array of char Scenario TXT intro filename for tactical victory
20 Array of char Scenario SMK after TXT for tactical victory
2 word prestige awarded for loseing
20 Array of char Scenario SMK intro  filename for loseing
20 Array of char Scenario SMK intro filename for loseing
20 Array of char Scenario TXT intro filename for loseing
20 Array of char Scenario SMK after TXT for loseing
2 word Brilliant victory goto to scenario,  255 lose campaign 254 end campaign
2 word If scenario xx has been played goto-
2 word this scenario
24 ?.. Unknown
2 word Victory goto to scenario, 255 lose campaign 254 end campaign
2 word If scenario xx has been played goto-
2 word this scenario
24 ?.. Unknown
2 word Tactical victory goto to scenario, 255 lose campaign 254 end campaign
2 word If scenario xx has been played goto-
2 word this scenario
24 ?.. Unknown
2 word Loseing goto to scenario, 255 lose campaign 254 end campaign
2 word If scenario xx has been played goto-
2 word this scenario
24 ?.. Unknown
100 ?.. Unknown
20 Array of char TXT filename for campaign intro
78 byte Unknown
1 byte country  flag to show on list
1 byte Unknown

Back to top

The map definition (MAP) file
The PG2 map file is always 14561 byte big.
It defines hexes attributes and the image to link
The map definition files must be in the SCENARIO directory
Built in game editor cannot be used (it will crash the game) if you have 200 or more .map files on the folder
but to play it doesn't matter how many you have.
 
Bytes Read as Meaning
2 word Map's image number, links this file with the MAP*.SHP files making up the imapge for the map.
2 word X size, but game dos not use this value, real size is taken fron image size.
2 word X size, but game dos not use this value, real size is taken fron image size.
2 ?? Unknown
2 ?? Unknown
12600 Hex data 45 x 40 hexes x 7 bytes each one
 
Bytes Read as Meaning
2 word Terrain. 
00= Clear
01= City
02= Airfield
03= Forest
04= Bocage
05= Hill
06= Mountain
07= Sand
08= Swamp
09= Ocean
10= River
11= Fortification
12= Port
13= Stream
14= Escarpment
15= Impassable River
16= Rough
2 word Roads.
00=Non
01=North
02=North-East
04=East (not used)
08=South-East
16=South
32=South-West
64=West (not used)
128=North-West
2 ?? Unknown
1 ? Unknown
8 ?.. Unknown
1753 ?.. Unknown
The PG2 picture map file is made up to 12 .SHP files each holding a piece of the map up to 640x480 pixels.
All the SHP files are named like Map#xy.shp, where [#] is the map link number (at least 2 dˇgits 0 padded), [x] the column number, and [y] the row number, The biggest size allowed is 1920x1920 pixels which makes 12 tiles arranged this way
 
Map#00.shp Map#10.shp Map#20.shp
Map#01.shp Map#11.shp Map#21.shp
Map#02.shp Map#12.shp Map#22.shp
Map#03.shp Map#13.shp Map#23.shp
 

Back to top

The panzer2 (DAT) file
The PG2 panzer2 file has not a fixed zˇsize.
It holds all files the game needs to make up the interface, like GAME.PAL, interface SHP files and all unit's icons SHP files.
The panzer2 file must be in the root game directory.
 
Bytes Read as Meaning
4 DWORD Number of files included
Variable Items dictionary #items x 17 bytes (there is a record for each file included plus an empty entry at the end)
 
Bytes Read as Meaning
4 DWORD offset of shape
13 Array of char name of item, it is in fact the file name was appended
Should be in alphabetical order
Variable SHP file each file  included into the dictionary plus an empty one
Most of them are shape (SHP) files, but it really can hold any file.  GAME.PAL file should be included
GAME.PAL file hold the palette to be used - it is 1024 bytes size.
It is a binary file with 256 contiguous records
Each record is  4 bytes long containing red, green and blue components padded to 32 bits boundary (4 bytes)  for each palette index.

Back to top

The (SHP) file
PG2 SHP files are really bitmaps encoded to reduce size.
This files are used both for map pictures and for interface and unit's icons
 
Bytes Read as Meaning
4 DWORD eye catcher should be equal to "1.10"
4 DWORD number of icons included on SHP file
Variable Offsets #items x 8 bytes (there is a record for each icon included on the file)
 
Bytes Read as Meaning
4 DWORD offset for icon header
4 DWORD It is said to be the offset for icon palette, but is is always 0 as palette is taken from GAME.PAL
Variable size Icon data there is a record for each icon included on the file
 
Bytes Read as Meaning
2 word

number of lines -1

2 word number of pixels in a line
4 ???? unknown, can be 0, though SSI icons has data here.
4 DWORD start X pixel
4 DWORD start Y pixel
4 DWORD end X pixels
4 DWORD end Y pixel
Variable byte a stream of encoded data for this icon
Variable DWORD It does not exist if offset for palette is 0. Never exist on any .DAT file
Icon data is decoded this way:
  • The Start-position (upper left corner) is start X start Y fields.
  • Every paint-instruction starts with a "instruction-byte" followed by one or more data-bytes
    (except when this first byte is 0 or 1) - see below
  • Color data is always a byte (0.255) meaning the index into the 256 colors palette.
  • Depending on the instruction-byte you should take this actions :
     
    Instruction byte is    ACTION

    0

    start new row
    1 skip the number of pixels contained in the next byte.
    example. "01 22" : means skip 22 pixels

    an even number

    draw a line using the color in the next byte with a length equal to "instruction-byte"/ 2
    example: "06 D5" : means Line: 0x06/2 = 3 pixels long, color RGB palette_index(0xD5)
    an odd number subtract 1 from the "instruction-byte", divide it by 2, and you get the number of bytes, representing the color of the next "as many pixels as your result
    example : 05 17 00 ' : next  (0x05 - 1)/2 = 2 bytes should be the colors of the next 2 pixels in the row we are in, thats is RGB(palette_index(0x17) and RGB(palette_index(0x00)

Back to top

The sound (MEL) file
The *.MEL file is the one holding all the unit sound, and some game sound.
10xx.mel, 20xx.mel and 30xx.mel are unit sound, selectable via the equipment file.
1.mel holds the sound when you click the mouse, and 5000.mel is for very low dark rumbling sound, not sure where its used. This is also the only file that has set repeat itself to endless (same as 0xFFFFFFF).
The *.MEL files are on PCM RAW format - 16bit 22050 mono. and cannot be larger then 870-950Kb. If they are the game refuse to play it.
 
Bytes Read as Meaning
4 ???? unknown
4 DWORD 1# Sample rate (prime sample rate)
   0x00002B11=11025
   0x00003E80=16000
   0x00005622=22050
   0x000061A8=25000
   0x0000AC44=44100
   0xFFFFFFFF=use random rate between 2# & 3# sample rate.
4 DWORD 2# Sample rate (Random sample rate start)
4 DWORD 3# Sample rate (Random sample rate end)
4 DWORD Repeat
   0 = Endless
   1 = 1 time (normal)
   N = N times
4 ???? unknown
Variable DWORD Raw data 16 bit
Every sample is 4 byte (Dword=16bit) and just go on like this to the end.
Sample rate under 3000 is not really usefull.
If 1# sample rate is 0xFFFFFFFF the a random sample rate is selected between 2# and 3#, every time a unit using that sound does something.

Back to top

The music (MUS) files
The *.MUS file is the one holding all the sound you hear to the intro/victory txt for a campaign.
All *.MUS files are plane simple RAW 8/16bit data. There is no sample rate header like in the *.MEL file, so they all have to be in PCM RAW format - 8bit 22050 stereo. Except the xxplay1-2.mus files they are in 16bit 22050 stereo.
 
Bytes Read as Meaning
Variable word Raw data 16 bit
Every sample is 4 byte (Dword=16bit) and just go on like this to the end.

Back to top

The Scenario (SCN) file
The PG2 scenario file has not a fixed size, its size depend upon the number of units in the file.
Along with the *.SCN file is a *.TXT with the same name, that hold all the names for units and terrain, even if there ar no units nor terrain renamed this file is needed cause the first line defines which title will be shown for the scenario.
Scenarios can be set as hidden (they don't show on scenario list) usualy when they belong to a campaign.
They can be set also as "UseMade" scenarios (they show up blue on the list) which is the default for those scenarios made using built-in editor.
Scenarios should be located on SCENARIO directory, unless they are UserMade type. UserMade type are expected to be located on USERSCEN folder instead.
The scenario files (.scn + .txt) included in a campaign must be placed on the scenario directory.

 
Bytes Read as Meaning
22 Scenario Data
 
Bytes Read as Meaning
1 Byte Scenario Selection. Not meaningful for savegames
This byte determinates if a single scenario shows up in the scenario select list in the game.
This is basically for hiding campaign scenarios, that are not meant to be played as single scenario.
A scenario with this byte set to 1 will be fully workable in a campaign, but does not show up as a single scenario.
Any other value makes to be shwon
2 Bitfields Patch 2.x options
Bit1 = Default experience for new units && prototypes as defined on Turn 40 prestige setting for each player
Bit2 = Use current / basic strenght as defined (so no reset current to basic)
Bit3 = Use Fuel as defined (so no reset when load)
Bit4 = Use Ammo as defined (so no reset when load)
Bit5 = Avoid paratroop deployment on ocean hexes using air transport
Bit6 = No prototypes
Bit7 = Play custom music during Scenario File
Bit8 = Allow setting default unit's strenght for each player (also when getting prototypes)
Bit9 = Allow settting a time frame in range between 1 and 12 months for valid prototypes
Bit10=Allow Different victory types for VHs
Bits 11..16 -> not used yet.
1 ? Unknown
2 word Scenario name in game. Not meaningful for savegames
This refers to the *.TXT file with the same name as the *.SCN file. It's the entry number in this text file to display on the "turn panel" as scenario name. This does NOT change the name of the scenario in the scenario select list, as its always the first name in the same text file that is used.
1 byte Atmospheric conditions. This is only a guideline on how the weather conditions is going to be. Some latitudes does not allow all kind of weather, Ex it is pointless to set snow in Africa, as the game will not do it.
     0 = fair
     1 = overcast
     2 = rain
     3 = snow
1 byte Atmospheric latitude. SSI themselves used South-Europe for USA scenarios, however if you make a Alaska scenario, its probably better to use North-Europe.
    0 = Africa
    1 = S-europa
    2 = N-europa
    3 = E-europa
2 word Date day. If outside range, the date will not be displayed.
2 word Date month. If outside range, the date will not be displayed.
2 word Date year. 1900+ number entered. In order to get per-1900 years you will have to let the counter "rollover", which it will do when 1900+number is over 65535 (the max a word can hold). It rollover to zero if the value is F894h or higher. But the game will not display years from 0-1600, however years 1601-65535 will be displayed just fine.
1 byte Turns for brilliant victory. Note in case of more than 40 turns weird and unintended prestige allocation will happen.
1 byte Turns for victory. Note in case of more than 40 turns weird and unintended prestige allocation will happen. Read
1 byte Turns for tactical victory. Note in case of more than 40 turns weird and unintended prestige allocation will happen.
1 byte Brilliant hex turns ? - it doesn't work
1 byte Victory hex turns ? - it doesn't work
1 byte Tactical hex turns ? - it doesn't work
1 byte Turns per Day. Number of turns to proceed before the date changes one day.
1 byte Ground conditions. Has influence on units capability to move is different terrains.
    0 = dry
    1 = frozen
388 Players 4 players x 97 bytes
 
Bytes Read as Meaning
1 byte Main Country. This is the main country of the player. This is also the byte that decide how many players is in the game at start of a scenario. If this value is zero the player is not in the game. This number is the index to the country list names found on GUI97
1 byte Minor Country 1.
1 byte Minor Country 2.
1 byte Minor Country 3.
1 byte Minor Country 4.
1 byte Attack Stance. This is for the AI. Note a bug is present here. If all 4 minor countries is used, the "Attack Stance" byte will be interpreted as 5th minor country and at the same time work as normal "Attack stance", resulting in the "Austria" will be a 5th country, as "Austria" has the country code 1.
0=defensive
1=aggressive
1 byte Air transporter available. Number of transporter available on Airfields hexes.
1 byte Ship transporter available. Number of transporters available on port hexes.
2 word Number of units. This value should not be messed with, unless you know exactly what you are doing. This is the number of current units for this player.Max 100 (100)
2 word Number of units. This value should not be messed with, unless you know exactly what you are doing. This is the number of additional units placed on the map when using the PGII editor. Any additional editing will add this number to the one on top and a new number of additional units will be added here. The two number of units can combined not exceed 100 for one Player. Note in v1.00 of Panzer General II  this number is only 75.Max 100
2 word AI Arrival (possible obsolete)
2 word AI Bucket (possible obsolete)
1 byte Side. The side of this player.0=side 1 (Axis) 1=side 2 (Allied)
80 word Turn Prestige. It allows to define how many prestige each player gets on each turn.
If Bit1 Patch 2.x options is set, last item (40th) has default experience for new units
10800 Map Hexes 45 x 40 x  6 bytes
 
Bytes Read as Meaning
1 Bitfields Ownership of Hex. What Player and what flag is displayed on this hex. Note the flag does not have to be one of the country assigned to the player.
   Bits 1..5 = Owner flag (See appendix for values)
   Bits 6..8 = Player ( 0 = none, 1 = Player1,  2 = Player2,  3 = Player3,  4 = Player4)
1 Bitfields Supply hex.  No bit set = non suplly hex

     bit1 = player1
     bit2 = player2
     bit3 = player3
     bit4 = player4
     Bit5   is set on every hex within a unit sight range
     Bit 6-7-8 Called Unit Supply zone is something unused,
                    it is just a value the SSI editor set on that hex if a unit is close to the hex or on the hex.
1 Bitfields Victory hex. t is required that a victory hex is placed on a hex own by a player of the other side. If no such hexes exist, a side will win by taking ANY kind of hex from the other side.  No bit set = no victory hex

     bit1 = no effect
     bit2 = Axis victory hex * with patch 2.20 it means Axis Brilliant Victory hex
     bit3 = no effect * with patch 2.20 it means Axis Victory hex 
     bit4 = no effect * with patch 2.20 it means Axis Tactica Victory type
     bit5 = Allied  victory hex * with patch 2.20 it means Allied Brilliant Victory hex
     bit6 = no effect * with patch 2.20 it means Allied Victory hex
     bit7 = no effect * with patch 2.20 it means Allied Tactical Victory hex
     bit8 = no effect
1 Bitfields Deployment and prestige hex  No bit set  = no deployment, and normal prestige

     bit1 = Avoid Prestige hex when set.
     bit2 = no effect
     bit3 = Deploy for Player1
     bit4 = Deploy for Player2
     bit5 = Deploy for Player3
     bit6 = Deploy for Player4
     bit7 = no effect
     bit8 = no effect

If a unit stands, at start, on a hex with the deployment flag set it becomes a core unit. This is only true if the scenario is played thug a campaign, not if its played as a single scenario. And again this is only true if the scenario is the first in the campaign. All units standing on deployment hex in ALL other scenarios in the campaign, are ignored. The are not displayed and the do NOT become part of the game.
2 word Name. Link to the Text describing the hex. This ref to a *.TXT file with the same name as the *.SCN file. Entry is line in the text file.
140 Map Data  
 
Bytes Read as Meaning
20 Array of char Map name. This is the name of the map file used for this scenario
20 Array of char Scenario intro TXT filename. This is the name of the text file for the scenario carrying the text you read when you press on a scenario in the game.
1 byte Scenario type. Blue scenario used *.ply for text file with the intro text. Gray uses *.txt files.
    0 = SSI  (gray)  it is expected on Scenario folder and have a TXT intro file
    1 = USER (Blue) it is expected on Usercen folder and have a PLY  intro file
20 Array of char Custom scenario music 1st file. Requires Bit7 Patch 2.x options set.
20 Array of char Custom scenario music 2nd file. Requires Bit7 Patch 2.x options set.
1 byte Default unit's strenght for player 0. Requires Bit8 Patch 2.x options set.
1 byte Default unit's strenght for player 1. Requires Bit8 Patch 2.x options set.
1 byte Default unit's strenght for player 2. Requires Bit8 Patch 2.x options set.
1 byte Default unit's strenght for player 3. Requires Bit8 Patch 2.x options set.
1 byte time frame in range between 1 and 12 months for valid prototypes. If zero, it defaults to 12. Requires Bit9 Patch 2.x options set.
54 byte Unused.
Variable Units 65 bytes each unit, up to 100 units per player
 
Bytes Read as Meaning
1 Bitfields 1st status byte

  Bit1 : ?
  Bit2 : ?
  Bit3 : Is an Auxiliary unit
            All units are auxiliare unless this bit is clear
            In campaign scenarios any unit standing on deployment hexes in the first scenario get
            this bit removed, and thus is a core unit.
            In single scenarios and PBEM all unit get
            this bit set, and thus are all auxiliary units.
  Bit4 : ?
  Bit5 : Used "re-supply" action
  Bit6 : Used "move" action
  Bit7 : Used "fire" action
  Bit8 : Used "support fire" action
1 Bitfields 2nd status byte

  Bit1 : ?
  Bit2 : if unit's name has been changed on game (always 0 in scenarios)
  Bit3 : Unit is Named ? See Unit name id
  Bit4 : ?
  Bit5 : Not count against the cap (not meaningful on scenarios)
  Bit6 : ? - but must be set
  Bit7 : must be 1 for movement available, if 0 unit cannot move
  Bit8 : sometimes set
2 ?? unknown, usually 0
2 ?? unknown, but they have data
1 ? unknown, but usually 223 or 224
1 ? unknown, but always 4
2 word Unit Name id. If unit is not named it is same as equipment code, either see below.
  About unit name id
  • If bit2 is set, Unit name id is expected to be an entry into Name 2 table and bit3 should not be set as bit2 takes precedence

  • If bit3 is set, Unit name id should be set to:
    • the entry line on scenario text file for Scenario file
    • entry into Name 1 table for Savegames

  • If none are set then, Unit name id should be equal to the main unit code (that's the entry line into equip97.txt file).
2 word unit position on map - X coordinate.
2 word unit position on map - Y coordinate.
2 word Total unit number count. This is the maximum number allowed to place on the map by the SSI editor. Even thug the max number of units per player is 100, and thereby the overall max should be 400, never the less it is 332. Anyway this number should match all players
2 word Player unit count. Max 100 per player. Starting from zero to max 99.
2 word Unit code. This is the index on equip97.eqp file. If the value is not found in the equipment file, PGII shows the icon defined for first item (equip #0)
2 word Transport type. The equipment code of the assigned transporter, if any, which appearance a unit will change to if the transporter is capable of moving longer then the unit. Please note air- and sea transporters is NOT assigned transporters, but simply stat and look changes of a unit. Look "unit appearance" just below.
2 word Unit appearance. This is how the unit appear on the map, and which stats it has. Normal this should be zero for any unit or you will/can end up with some weird cases. This is meant for units in sea- and air- transporters. The value will then be the air- or sea- transport code, that way the unit will appear as a transporter with the stats of a transport, but ones unloaded it uses the stat and appearance of the normal unit code. This is because air- and sea- transp. is not a assigned transporter like a normal land transporter, but rather a different appearance of the unit.
2 ?? Unknown
2 word Experience level. This does nothing other than hold current running experience total. Will run over to zero at 65535.
2 word Unit mount code. Unit mount code should almost always be the same as the unit code. This is the code a unit un-mount to by the beginning of a new turn. This is in order to find "its way back" from transporter mode, which the unit will change to if the assigned "transport type" is capable to move longer. In case of Air- and sea-transporters this code should be the same as the unit appearance code or you will have weird mount/un-mount as the unit moves.
2 word Leader index. This is the link to the leaders for this unit, store in the "Leader data" section, but only savegames has that area, so this field is only used at scenario level to mean the unit will get a leader, but you cannot define here what leader. As there can only be 15 leader per player (there is only room for 15), setting a number higher than 15 will not do you any good. But you can assing same leader to several units.
1 byte Leader chance. Every time the experience bar is increased (up to 5 ) there is a random chance of getting a leader. The odds for this start at 10%. This is because the routine generates a random number between 0 and 100 and compares it with [10+ leader chance']. If the random number is less, then you get a leader. When you first start, leader chance' is zero, and so the chance is 10%. However if you DON'T get a leader this time, the routine generates another random number between 0 and 10, ADDS it to the old value in "leader chance" and puts this new value in "leader chance"! So the next time you try for a leader, the odds have increased a bit in your favor. This means that if you DEFINITELY want a unit to have a leader on the next experience bar increase, put a 90 into "leader chance". This makes the odds 90 + 10 = 100%!!!! Could be useful for those scenario/campaign designers who place units with 199 experience as a trap for the unwary player. Any value over 90 will also generate a leader ever time.
1 byte Experience level indicator(bars). A number higher then 5 will not show more then 5 blocks (there is no more graphic for this), but is will work as a higher experience. A 255 bar unit is virtual indestructible. Automatically this will not go higher then 5 by the game, but manual you can set it higher.
2 word Unit deployment status.
  0 = Vanish if campaign
  1 = Not deployed (still at HQ pool)
  2 = Deployed on map
Value 0 is set by the game when scenario is played in a campaign, for all units standing on deployment hexes at start of the scenario (except the very first scenario in the campaign) and make those units vanish from the game. This is how you can use scenarios as single and in campaigns where some units are in the single version and not when play thug the campaign.
1 byte Unit player:   0 = player1
  1 = player2
  2 = player3
  3 = player4
Be aware a lot of other values need to be correct too, in order to shift player.
1 byte Side. The side this unit belongs too (0 is axis, 1 is Alled).
1 byte Unit country flag.
1 byte Lasting Suppression. This is the Current number of strength point that is suppressed as LASTING suppression.
1 byte Current strength. This is the current strength of a unit, can be over (over strength) or under (casualties) the original strength. On scenarios this value is reset to be same as basic strenght unless bit2 for Patch 2.x options is set.
Thug you can set this value as high as far as there are a graphic icon to show. When PGII runs out of graphic to display it will crash the game. Each side and type has its own graphic, with 1-15 (or more with latest datup) numbers and additional 5 icons for 16-20 in strength. If you go higher it will run into graphic used by other units and high enough run completely out of graphic, which crashes the game.
1 byte Remaining Movement range. Current remaining movement points for this turn. Will be reset to the set movement range for this unit type in the equipment file, by the beginning of every turn, so it doesn't matter what you write hwere, it will be reset.
1 byte Remaining Fuel points. On scenarios this value is reset at start to be the value from the Equipment unless bit3 Patch 2.x options is set.
Ones this number goes under the value set for this unit type in the equipment file, the re-supply bottom will light up. A unit can max re-supply to the value from the Equipment file.
1 byte Remaining ammunition in double the amount. The reason for this is the ”Fire Discipline” leader. Thug the readme says is uses ammo at half rate, it actually uses it at a 1:1 rate, its all the other units that uses it a double rate, thus the double ammunition count. This can result in the last desperate shoot from artillery (but not only artillery), because when the ammunition counter in the game says the unit has 0 it can in fact have both 0 and 1. It’s often seen in the desert, because it has harsh re-supply rules, resulting in un-even re-supply. More than one unit beside a re-supplying unit also results in un-even re-supply, so it can happen in every map. On scenarios this value is reset at start to be the value from the Equipment, unless Bit4 Patch 2.x options is set.
1 byte Entrenchment. The entrenchment value of a unit.
1 byte Entrenchment ticks/counts. Number of counts for next Entrenchment increase. The is actually duel functioning. When a certain number of counts has been reached, corresponding to the number of turns a units has stood still on a hex,- which are different from class to class and terrain in question, this increases the entrenchment of the unit. This is the byte found just about. The count is in two's, like 2-4-6...... If you increase this number really high, so it contains several count circles it will increase the entrenchment of the unit by the more then a one increase.
5 ?.. Unknown
1 byte Hits. Number of hits this unit has sustained by enemy units. For every hit 2 point is taken of the units defensive values. Defensive values cannot go into negative, so after this number have taken away all the units defensive values, increasing it further will not do any good.
2 word Unit direction (face) (0-15 counter clockwise). Be aware the game WILL crash if you enter a value higher than 15 here. This value defines which of the 9 icons will be shown.
1 byte Arrival turn as reinforcement. They arrive at the XY set above. a zero value means it is not a reinforce.
1 byte Basic or Original strength. This is the max strength you can reinforce to if you have prestige and current strength is under original strength. Read Current strength for details.
1 byte Air defense destroyed by this unit. Number destroyed.
1 byte Anti Tanks destroyed by this unit. Number destroyed.
1 byte Artillery destroyed by this unit. Number destroyed.
1 byte Infantry destroyed by this unit. Number destroyed.
1 byte Recon destroyed by this unit. Number destroyed.
1 byte Tanks destroyed by this unit. Number destroyed.
1 byte Fighter destroyed by this unit. Number destroyed.
1 byte Bomber destroyed by this unit. Number destroyed.
3 ??? Unknown

Back to top

The Campaign Savegame (CSV) file
This PG2 savefile has not a fixed size, its size depend upon the number of units in the file and the number of turns played.
This files are located on SAVE folder.

 
Bytes Read as Meaning
268 Savegame Header Common struct for all savegames types
Bytes Read as Meaning
12 Array of char ID string. The game does not actually use it. It holds the version of PG2 used used to make the savegame.
v1.00 will write "Tue Sep 30 1" (Tue Sep 30 14:12:24 1997) UK+US+German (there is no official French v1.00)
v1.01 will write "Thu Oct 9 1" (Thu Oct 9 16:42:14 1997) French
v1.01 will write "Tue Oct 21 1" (Tue Oct 21 11:13:10 1997) UK+US+German
v1.02 will write "Fri Jan 9 1" (Fri Jan 9 13:41:06 1998) UK+US+German+French
1 ? Unknown - always 0
1 ? Unknown - always 1
200 Array of char The describing text you can write at the end of turn.
50 Array of char More describing text. You cannot write here but game will show itif there is something.
2 ?? Unknown
2 word Unit selected. This is the current unit of the curent player that is selected
24 Players status 6 bytes x 4 players
Bytes Read as Meaning
1 byte Player is in the game ( 0 = NO, 1 = YES )
1 byte Player has played his turn ( 0 = NO, 1 = YES )
Every time a player has played his turn, this byte is set to 1. An exception to this is the last player, that would be player 2 in a 2 player game, player 3 in a 3 player game ...etc. The last player never get it set, as the whole thing resets to zero when the last player has played, indicationg that its the first player turn again.
1 byte Who is this player the AI ( 0 = Human, 1 = AI )
This is initial read of the setting you make in the scenario select list. For PBEM player 2 automatically becomes human. In campaign Player 2 automatically becomes the AI.
1 byte Player attitude. Initialy this is read from the Attack Stance setting
0 = Aggressive
1 = Defensive
1 byte Player side. Initialy this is read from the Side setting
0 = Axis
1 = Allied
1 ? Unknown
22 Scenario Data it is a copy of the scenario file
388 Players It is a copy of the scenario file section
10800 Map Hexes It is a copy of the scenario file section
140 Map data It is a copy of the scenario file section
42 Set Up here is the current basic setup data read at the start of each turn.
 
Bytes Read as Meaning
5 ?.. Unknown
1 byte Replay status. [ 0 = Play ] , [ 1 = Don't play ]
Since replay is only available in PBEM games it is only meaningful for *.EML files. If you put a 1 here the replay will not play at all.
2 word Number of turns that has passed (current turn).
2 word Atmospheric conditions. It is from here the current weather is taken, as it can change every turn.
[ 0 = fair ] , [ 1 = overcast ] , [ 2 = rain ] , [ 3 = snow ]
Atmospheric conditions found in scenario data is only the guideline for the very first turn.
8 ?.. Unknown.
2 word Current prestige for player 0. This is the currently available prestige to spend for player one.
2 word Current prestige for player 1. This is the currently available prestige to spend for player one.
2 word Current prestige for player 2. This is the currently available prestige to spend for player one.
2 word Current prestige for player 3. This is the currently available prestige to spend for player one.
2 word Prestige modifier setting for player 0.
Even thoug you can set the prestige modifier to anything you want, it should be rollover to 0 if bigger than 65535. Keep it under 1000 and it should work fine.
2 ?? Unknown.
2 word Prestige modifier setting for player 1.
2 ?? Unknown.
2 word Prestige modifier setting for player 2.
2 ?? Unknown.
2 word Prestige modifier setting for player 3.
2 ?? Unknown.
44 Blown Bridges Each bridge status. 0 = Ok, 1 = Blown
  Each byte refers to a bridge on the internal bridge table stored into the executable. file. The max number of bridges on any of the original SSI maps is indeed 44, this is why this section is 44 bytes big. Thats map 18. The numbers is simply representation of the way the graphic is lined up in BR_xx.shp, which again link directly to the order of X,Y in the execute file bridge table. When a bridge is blown graphic BR_xx.shp from Panzer2.dat is drawn instead. This doesn't work with any release bigger than 1.02
720 Leaders 12 bytes x 15 leaders x 4 players
 
Bytes Read as Meaning
1 byte Leader slot [ 0 = Not Used] , [ 1 = Used ]
Really it doesn't matter which value it has. The leader will exist as long as some unit links to it
7 ?.. Unknown
2 word Name entry. This refers to an entry in the file Names.txt
1 byte Random leader attribute. This value should really only be in the range 8..34, as the ones before are they class leaders. But they do work here also. See Leaderappendix for the different leaders
1 byte Class leader attribute. This value should really only be in the range 1..8, as the range after are they random leaders. But they do work here also. See Leaderappendix for the different leaders
856 Dossier 214 bytes x 4 players
 
Bytes Read as Meaning
51 Array of char Player general name. It is randomly taken from "names.txt" but you can change at any time. In the game you are only allowed to write a name of max 20 char, but the game actually saves back as a 50 char name plus a 0 to finish
1 byte Country to use for dossier photo and medals
40 ?.. Filled with zeros. Lasse said the game does not write back to these bytes, but it does read them. 
4 DWORD Number of lost AD units, including Core as well as Auxiliary.
4 DWORD Number of lost AT units, including Core as well as Auxiliary.
4 DWORD Number of lost ATY units, including Core as well as Auxiliary.
4 DWORD Number of lost INF units, including Core as well as Auxiliary.
4 DWORD Number of lost RECON units, including Core as well as Auxiliary.
4 DWORD Number of lost TANK units, including Core as well as Auxiliary.
4 DWORD Number of lost FTR units, including Core as well as Auxiliary.
4 DWORD Number of lost TB units, including Core as well as Auxiliary.
4 DWORD Number of killed AD units.
4 DWORD Number of killed AT units.
4 DWORD Number of killed ATY units.
4 DWORD Number of killed INF units.
4 DWORD Number of killed RECON units.
4 DWORD Number of killed TANK units.
4 DWORD Number of killed FTR units.
4 DWORD Number of killed TB units.
2 word Number of Brilliant Victories.
2 word Number of Normal Victories.
2 word Number of Tactical Victories.
2 word Number of Loses.
50 byte Medals. Each byte represents one campaign scenario result.
  [ 0 = Brilliant ] , [ 1 = Normal ] , [ 2 = Tactical ], [ 3 = Lose ]
All 50 byte are default filled as lose (3). This is fully independent of the Number of different victory conditions set in the above 4 set of integer. The dossier will display the first 18 bytes different than 3 it finds. Unfortunately it cant display more than that, even thug a campaign can hold as many as 50 scenarios.
1 byte HQ status ( 0 = In Scenario, 1 = In HQ ) This ref. to where you currently are. HQ is where you can over strength and upgrade. ONLY core units can be upgraded or over strength here. Works in all savegame types.
9999 ?.. Unknown.
Variable Name Table 1 Names defined on scenario TXT file
  This table contents everything from the TXT file, with the same name as the used scenario file. Everything from this file is included, regardless of any hex or unit actually uses the name.
There is a first word defining how many items you should iterate, and then a list of items. If that number is 0, then there are no list of items and next word is the lenght of Name Table 2
Each entry is not fixed size, but it has all info needed to read it. You should iterate until all entries are read.
Bytes Read as Meaning
2 word Entry number index.
2 word Length of entry. The game allows no more than 20 char for the name thus lenght can max be 20.
Variable Array of char Name
Variable Name Table 2 Names of units that get changed during a game. It has no fixed size
  There is a first word defining how many items you should iterate, and then a list of items.. If that number is 0, then there are no list of items and next byte is number of items for Units byte
Each entry is not fixed size, but it has all info needed to read it. You should iterate until all entries are read.
Bytes Read as Meaning
2 word Entry number index.
2 word Length of entry. The game allows no more than 20 char for the name thus lenght can max be 20.
Variable Array of char Name
Variable Units 65 bytes each unit, up to 100 units per player
149 Campaign Data
 
Bytes Read as Meaning
2 word Current scenario in the campaign (0-49).
21 Array of char Campaign file name as Null terminated string.
2 ?? unknown.
2 ?? unknown.
50 byte Played scenarios. Each byte represent one of the 50 possible scenarios in the campaign. It is set to 1 if the scenario has been played and 0 if not played. It is used for the 2nd goto option in campaign file.
50 byte Victory conditions. Each byte represent one of the 50 possible scenarios in the campaign.
[ 0 = Brilliant ] , [ 1 = Normal ] , [ 2 = Tactical ], [ 3 = Lose ]
All 50 bytes are default to 0.
20 ?.. unknown.
2 word Prototype chance.
  Every time you get a BV there is a chance to get a prototype. This field is the probability of getting one. Game adds 20% to this field before checking it. If you get a prototype this filed is reset to 0 thus next time you'll have a 20% of success, either it is saved being 20% higher. At start this field is set to 100, so firts BV you have a 120% for succes (that's is you always get one if any is availbale).
However it’s not enough that the chance says you have to have a prototype, there must also be something available for you to get. Unless it is modified using Patch 2.x options a prototype is assigned from equipment units which become available between 1 and 9 months after the next scenario starts. So if you first scenario in the campaign starts say Aug41, you get the BV, and next scenario you get to because of the BV start say Dec41, you will get a prototype units that has an available date ranging from Jan42 to Sep42. Using Patch 2.x you can set that time frame as short as only Jan 42 (timeframe = 1) or as wide as from Jan42 to Dec42 (timeframe = 12).
You don’t get prototype units that become available in the same month as the scenario starts. If no such equipment is available you will get no prototype even if the counter says 100%. The counter will however stay a 100%, so as soon as you get another BV and equipment is available you will get a prototype unit.
500 Units Honors 5 bytes x 100 units x 4 players units battle honors.
  Number represent the scenario it was given in. The game will only display as many of them as the experience bars the unit has, so it does not help to set all 5 of them if the unit does not have the bars, they will not be displayed. If more BH carry the same scenario number they will be displayed on the same line. Note scenario numbers are normally counted in 0-49, while battle honors number are counted in 1-50.
Bytes Read as Meaning
1 byte First battle honor.
1 byte 2nd battle honor.
1 byte 3rd battle honor.
1 byte 4th battle honor.
1 byte 5th battle honor.
10000 Scen Names 200 bytes x 50 scenarios titles.
 
Bytes Read as Meaning
200 Array of char Scenario title. This is not the scenario filename, but the scenario title (same as you see in game). Only those scenarios played are filled, in the order they had been played.
500 ?.. Unknown.
17 Section 2 header
 
Bytes Read as Meaning
2 word size of 2nd section.
15 ?.. unknown.
Variable Second part ... A complete savegame consist of the current stats, that is the first part, - always on top of the file. The second part is the stat before the current turn. The 'section 2 header' is ONLY found in the first part of the savegame NOT the second part, understandable enough since this section describes the 2nd part of the savegame! The 'replay' section is found at the bottom of Part 2 of the savegame, and thus is NOT included in any of the two parts, but is a independent section, that actually describes the different between the two parts of the savegame. Part two + the 'replay' should be the Part one stats.
Variable Replay Action codes
  This is made by a series of action codes. Near everyone is different in length (byte) Every action of your unit is recorded. The byte in (xx) is the total length of that action, including the action code it self. As one can see this section is a LONG way from complete explored. It's going to take some time before I am finished with this.
Bytes Read as Meaning
2 word Primary Action Code. If example the first word is 01 (move) than the following 21 byte is the data for the move action, described below including action code
Actions codes mark with * are not used in PBEM. These are almost for sure for Network play or maybe for campaign, but not sure about that
  0 = *Start. (?? byte)
1 = Move. (21 byte)
2 = *End of turn. (?? byte)
3 = Attack. (27 byte)
4 = *Set Seed. (?? byte)
5 = Mount. (19 byte)
6 = Disembark. (20 byte)
7 = Embark. (16 byte)
8 = *Supply. (?? byte)
9 = Purchase.(20 byte)
10 = Place. (21 byte)
11 = *Pickup. (?? byte)
12 = Replacements. (19 byte)
13 = *Destroyed. (?? byte)
14 = Select. (16 byte)
15 = Cancel move. (55 byte)
16 = *Player. (?? byte)
17 = *Scenario. (?? byte)
18 = *Chat. (?? byte)
19 = *Inc counter. (?? byte)
20 = *Resend message. (?? byte)
21 = Sell. (18 byte)
22 = *Swap players. (?? byte)
23 = *Prestige modified. (?? byte)
24 = *Player quit. (?? byte)
25 = *Time limite.(?? byte)
26 = *Receipt. (?? byte
2 word Second Action Code.
3 = Select & Embark
5 = Sell
6 = Mount
7 = Disembark & Purchase
8 = Move & Place
14 = Attack

Back to top

Play by e-mail Savegame (EML) file
This savegame is particle sensitive to wrong setting from the original scenario its created from. Some settings in scenario can crash the PBEM savegame during replay, where in other savegames such setting will go unnoticed.
Normally PBEM savegame consist ONLY of these two section. Different turns are NOT stored on top of each other. ONLY the current and the last turn is stored. However there is a bug in PBEM, where the file suddenly begins to grow turn for turn. this is caused by the fact that different version CANNOT play against each other. IF two different versions play against each other, like v1.00 vs. v1.02 each version will include its own two Parts, just putting them on top of each other. This also results in the 'replay of your own previous turn', where, if you replay the turn, see you own previous turn replay, instead of the correct current turn of the enemy. The correct replay IS in the savegame, but because each version reads from its own stored Parts, it replays your own replay. NEVER play against each other with different version, not only is there rule changes from version to version, but also this weird replay thing will happen. If a PBEM savegame grows over 100K you got such a case. Also unlike the other savegame the replay section is viewable from in-game, by using the replay bottom.

 
Bytes Read as Meaning
268 Savegame Header Common header for all savegames
24 Players status 6 bytes x 4 players * Same as defined for CSV
22 Scenario Data it is a copy of the scenario file
388 Players It is a copy of the scenario file section
10800 Map Hexes It is a copy of the scenario file section
140 Map data It is a copy of the scenario file section
720 Leaders 12 bytes x 15 leaders x 4 players * Same as defined for CSV
42 Set Up Setup data read at the start of each turn. * Same as defined for CSV
44 Blown Bridges Each bridge status. * Same as defined for CSV
856 Dossier Same as defined for CSV
1 byte HQ status ( 0 = In Scenario, 1 = In HQ ) This ref. to where you currently are. HQ is where you can over strength and upgrade. ONLY core units can be upgraded or over strength here. Works in all savegame types.
9999 ?.. Unknown.
Variable Name Table 1 Same as defined for CSV
Variable Name Table 2 Same as defined for CSV
Variable Units 65 bytes each unit, up to 100 units per player
Same as defined for CSV
84 Passwords
21 bytes (null terminated string) x 4 players
 
Bytes Read as Meaning
21 Array of char Null terminated string containing password for player 0
21 Array of char Null terminated string containing password for player 1
21 Array of char Null terminated string containing password for player 2
21 Array of char Null terminated string containing password for player 3
17 Section 2 header Same as defined for CSV
Variable Second part ... Similar as dedˇfined for CSV.
Variable Replay Same as defined for CSV

Back to top

Single Savegame (SAV) file
This format is similar than those described before, but a little simpler
 
Bytes Read as Meaning
268 Savegame Header Common header for all savegames
24 Players status 6 bytes x 4 players * Same as defined for CSV
22 Scenario Data it is a copy of the scenario file
388 Players It is a copy of the scenario file section
10800 Map Hexes It is a copy of the scenario file section
140 Map data It is a copy of the scenario file section
42 Set Up Setup data read at the start of each turn. * Same as defined for CSV
44 Blown Bridges Each bridge status. * Same as defined for CSV
720 Leaders 12 bytes x 15 leaders x 4 players * Same as defined for CSV
856 Dossier Same as defined for CSV
1 byte HQ status ( 0 = In Scenario, 1 = In HQ ) This ref. to where you currently are. HQ is where you can over strength and upgrade. ONLY core units can be upgraded or over strength here. Works in all savegame types.
9999 ?.. Unknown.
Variable Name Table 1 Same as defined for CSV
Variable Name Table 2 Same as defined for CSV
Variable Units 65 bytes each unit, up to 100 units per player
Same as defined for CSV
17 Section 2 header Same as defined for CSV
Variable Second part ... Similar as dedˇfined for CSV.
Variable Replay Same as defined for CSV

Back to top