[VM] Game-State File Format Specification

Librarian: HexCode
Post Reply
User avatar
HexCode
First Lieutenant
First Lieutenant
Posts: 926
Joined: 2019-09-30 18:54, Monday

[VM] Game-State File Format Specification

Post by HexCode » 2021-04-05 17:59, Monday

CONTENT LINKS
==============

Introduction
Absolute Prerequisites
Alphanumeric Data Coding Scheme
Binary Listing Data Coding Scheme
viewtopic.php?f=100&t=553#p9068

*.PGSAV (ADS 1.1 & NDS 1.2)
File Description (If Any)
Scenario / Campaign Selectable Choices Screen
viewtopic.php?f=100&t=553#p9069

*.PGSAV (NDS 1.3, ADS 1.4, NDS 1.5 & ADS 1.6)
Campaign Play Mode Editable Choices
Campaign File & Current Path Label
Pseudo-Random Number Generation
Current Battle Name
viewtopic.php?f=100&t=553#p9070

*.PGSAV (NDS 1.7 & NDS 1.8)
Time & Timing Variables / Settings
Scenario / Campaign Selectable Choices Restated
viewtopic.php?f=100&t=553#p9071

*.PGSAV (NDS 1.9, NDS 1.10 & NDS 1.11)
Weather Variables / Settings
Unit Strength & Experience Restrictions
Participating Combatants
viewtopic.php?f=100&t=553#p9072

*.PGSAV (ADS 2.T.1, NDS 2.T.2, NDS 2.T.3 & NDS 2.T.4)
Side T Name
Side T Prestige
AI Posture & Unit Icons Orientation
Core & Auxiliary Complement Restrictions
viewtopic.php?f=100&t=553#p9073

*.PGSAV (NDS 2.T.5, NDS 2.T.6, NDS 2.T.7 & NDS 2.T.8)
Air / Naval Transport Variables / Settings
Weather Forecasts
Newly Purchased Unit Experience
Side T Units Present on the Map
viewtopic.php?f=100&t=553#p9074

*.PGSAV (ADS 2.T.U.1, NDS 2.T.U.2, NDS 2.T.U.3, NDS 2.T.U.4 & NDS 2.T.U.5)
Unit Name
Unit IDs
Unit Map Location
Unit Auxiliary Designation ?
Unit Operational Stats (Current)
viewtopic.php?f=100&t=553#p9075

*.PGSAV (NDS 2.T.U.6 & DS 2.T.U.7)
Unit Status (Diverse)
Unit Battle Honors
viewtopic.php?f=100&t=553#p9076

*.PGSAV (NDS 2.T.H)
Scouted (& Unscouted) Map Hexes
viewtopic.php?f=100&t=553#p9077

*.PGSAV (SECTION 3)
Turn-Specific Prestige Allotments
viewtopic.php?f=100&t=553#p9078

*.PGSAV (SECTION 4)
Purchasable Unit Classes
viewtopic.php?f=100&t=553#p9079

*.PGSAV (SECTION 5)
Supply Hex Data
viewtopic.php?f=100&t=553#p9080

*.PGSAV (SECTION 6)
Objective Hex Specification
viewtopic.php?f=100&t=553#p9081

*.PGSAV (SECTION 7)
Map Hex Data
viewtopic.php?f=100&t=553#p9082

*.PGSAV (SECTION 8)
Re-Indexed GLN Records
viewtopic.php?f=100&t=553#p9083

*.PGSAV (SECTION 9)
Replay Script Data
viewtopic.php?f=100&t=553#p9085

*.PGSAV (SECTION 10)
Cumulative Casualty Tallies
viewtopic.php?f=100&t=553#p9087

*.PGSAV (SECTION 11)
Campaigning Side & Combatant ID Restatement
viewtopic.php?f=100&t=553#p9088

*.PGSAV (SECTION 12)
Campaign Deployment Hex Specification
viewtopic.php?f=100&t=553#p9089

*.PGSAV (SECTION 13)
Campaign Victory Conditions
viewtopic.php?f=100&t=553#p9090

*.PGSAV (SECTION 14)
Special Features & Capabilities
viewtopic.php?f=100&t=553#p9091

*.PGSAV (SECTION 15)
AI Behavioral Instructions
viewtopic.php?f=100&t=553#p9092


===================================================================

The topic's contents may be modified or progressively added upon as time goes by.

===================================================================

INTRODUCTION
==============

Kindly review:

Introduction
viewtopic.php?f=100&t=536#p8929

PGF's Game-State files sport a *.PGSAV extension. Such files are often referred to as "Save-Game" files. These files should always be located in folder ...\SAVE corresponding to the particular "game" that they are intended to support / reflect.

All PGF Game-State files essentially have the same format. The format is binary and was created by PGF's programmer. It encompasses various Alphanumeric as well Numerical Data Segments (ADS & NDS, respectively). For logical presentation purposes, the format comprises FIFTEEN (15) data Sections following one another in strict sequential order, without any intervening gaps.

The intended purpose of Game-State files is to enable users to interrupt play at any moment of their choosing so that they can later resume play where they left off in a seamless manner. However, such files may also assist certain technically knowledgeable modders in pushing the limits of the mod design envelope...

Game-State files are either proactively generated by users or automatically generated by PGF's engine.

User Generated: The user can choose any valid filename he likes provided he retains the PGSAV file extension (i.e., *.PGSAV). The software's suggested default format is: (dd,mm,yyyy)"BATTLE NAME", TURN xx).

Engine Generated: Companion format's are:
AUTOSAVE (AXIS).PGSAV
AUTOSAVE (ALLIES).PGSAV

In the sequel, "Side 0" shall be referred to as "SIDE-0" (e.g., "Alliance 0") and, correspondingly, "Side 1" shall be referred to as "SIDE-1" (e.g., "Alliance 1").

ABSOLUTE PREREQUISITES
=======================

Engine Hexadecimal Character Strings
viewtopic.php?f=100&t=536#p8935

Hexadecimal Code... Surgery (Part I)
viewtopic.php?f=100&t=536#p8933

ALPHANUMERIC DATA CODING SCHEME
==================================

The scheme below shall be encountered again and again in the sequel !

Code: Select all

Code               Format   Description

"ST UV WX YZ"      32-bit   Number of 16-bit characters to follow
Character String            String of 16-bit characters
"00 00"            16-bit   Null Termination
BINARY LISTING DATA CODING SCHEME
==================================

The scheme below shall be encountered again and again in the sequel !

Code: Select all

Code              Format Description

"ST UV WX YZ"     32-bit Number of 32-bit binary entries to follow
Binary Listing           Listing of 32-bit binary entries
Last edited by HexCode on 2021-11-27 06:09, Saturday, edited 4 times in total.

User avatar
HexCode
First Lieutenant
First Lieutenant
Posts: 926
Joined: 2019-09-30 18:54, Monday

*.PGSAV (ADS 1.1 & NDS 1.2)

Post by HexCode » 2021-04-05 18:08, Monday

*.PGSAV (ADS 1.1 & NDS 1.2)
========

Absolute Prerequisites

The contents of as well as those of all links encountered herein:

viewtopic.php?f=100&t=553#p9068

Preliminaries

Section 1 contains a mixture of data. Most of the data do not change at all during the scenario's entire duration; unless... hacked, of course ! :) Other data are just reflective of the current turn's realities.

Section 1 -- ADS 1.1

File Description (if any)
In general, this data segment's length (in bytes) varies.


If the file has been proactively generated by a user, this data segment's length (in bytes) varies.

Code: Select all

ST UV WX YZ
Anticipate YZWXUVSTh 16-bit Alphanumeric characters to follow.

Code: Select all

Varies
USER FILE DESCRIPTION

Code: Select all

00 00
Null Termination.

ALTERNATIVELY

If the file has been automatically generated by PGF's engine (i.e., "AUTOSAVE"), this data segment is 130 bytes long.

Code: Select all

3E 00 00 00
Anticipate 62 16-bit Alphanumeric characters to follow.

Code: Select all

54 00 68 00 69 00 73 00 20 00 66 00 69 00 6C 00 65 00 20 00 69 00 73 00 20 00 61 00 75 00 74 00 6F 00 6D 00 61 00 74 00 69 00 63 00 61 00 6C 00 6C 00 79 00 20 00 73 00 61 00 76 00 65 00 64 00 20 00 61 00 74 00 20 00 74 00 68 00 65 00 20 00 62 00 65 00 67 00 69 00 6E 00 69 00 6E 00 67 00 20 00 6F 00 66 00 20 00 65 00 61 00 63 00 68 00 20 00 74 00 75 00 72 00 6E 00 2E 00
ENGINE STANDARDIZED COMMENT.

Code: Select all

00 00
Null Termination.

Section 1 -- NDS 1.2

Scenario / Campaign Selectable Choices Screen
This data segment is 44 bytes long.

Code: Select all

06 00 00 00
UNKNOWN PURPOSE. This value stayed the same in all hitherto encountered instances. Any lower values crash the engine. My best guess is that it is a function marker.

Code: Select all

0T 00 00 00
SIDE-0 IS AI OPPONENT. Boolean ("T" is either 0 or 1).

Code: Select all

ST 00 00 00
SIDE-0 PRESTIGE SLIDER MODIFIER. "ST" ranges from "00" to "C8".

Code: Select all

ST UV WX YZ
SIDE-0 EXPERIENCE SLIDER MODIFIER. Intended values follow:

+5 ==> "05 00 00 00"
+4 ==> "04 00 00 00"
+3 ==> "03 00 00 00"
+2 ==> "02 00 00 00"
+1 ==> "01 00 00 00"
.0 ==> "00 00 00 00"
-1 ==> "FF FF FF FF"
-2 ==> "FE FF FF FF"
-3 ==> "FD FF FF FF"
-4 ==> "FC FF FF FF"
-5 ==> "FB FF FF FF"

Code: Select all

0T 00 00 00
SIDE-1 IS AI OPPONENT. Boolean ("T" is either 0 or 1).

Code: Select all

ST 00 00 00
SIDE-1 PRESTIGE SLIDER MODIFIER. "ST" ranges from "00" to "C8".

Code: Select all

ST UV WX YZ
SIDE-1 EXPERIENCE SLIDER MODIFIER. Intended values as per SIDE-0 above.

Code: Select all

0T
WEATHER EFFECTS. Boolean ("T" is either 0 or 1).

Code: Select all

0T
SUPPLY EFFECTS. Boolean ("T" is either 0 or 1).

Code: Select all

0T
HIDE OPPONENT'S UNITS. Boolean ("T" is either 0 or 1).

Code: Select all

00
UNKNOWN PURPOSE. The value "00" stayed the same in all hitherto encountered instances. Experimentation with all sorts of different values has not triggered anything observable. Hence, it is quite likely that the setting is a coding... "dud".

Code: Select all

0T 00 00 00
AI LEVEL IF SIDE-0. Intended values follow:

Basic =========> "00 00 00 00"
Intermediate ==> "01 00 00 00"
Advanced =====> "02 00 00 00"

Code: Select all

0T 00 00 00
AI LEVEL IF SIDE-1. Intended values as per SIDE-0 above.

Code: Select all

0T 00 00 00
CAMPAIGN PLAY MODE. Boolean ("T" is either 0 or 1).

User avatar
HexCode
First Lieutenant
First Lieutenant
Posts: 926
Joined: 2019-09-30 18:54, Monday

*.PGSAV (NDS 1.3, ADS 1.4, NDS 1.5 & ADS 1.6)

Post by HexCode » 2021-04-05 18:14, Monday

*.PGSAV (NDS 1.3, ADS 1.4, NDS 1.5 & ADS 1.6)
========

Absolute Prerequisites

The contents of as well as those of all links hitherto encountered under this topic.

Section 1 -- NDS 1.3

Campaign Play Mode Editable Choices
This data segment is 12 bytes long.


ATTENTION : In Standalone Scenario Play Mode, the present data segment is "nothing / empty".

Code: Select all

0T 00 00 00
"CAMPAIGNING" SIDE ID. Boolean ("T" is either 0 or 1). In other words, either SIDE-0 or SIDE-1.

Code: Select all

ST 00 00 00
"CAMPAIGNING" COMBATANT ID.

Code: Select all

0T 00 00 00
FREE INTER-SCENARIO ELITE REPLACEMENTS. Boolean ("T" is either 0 or 1).

Section 1 -- ADS 1.4

Campaign File & Current Path Label
This data segment's length (in bytes) varies.


ATTENTION: In Standalone Scenario Play Mode, the present data segment is "nothing / empty".

Code: Select all

08 00 00 00
Anticipate 8 16-bit Alphanumeric characters to follow.

Code: Select all

70 00 67 00 2E 00 70 00 67 00 63 00 61 00 6D 00
"pg.pgcam" IN PLAIN ENGLISH.

Code: Select all

00 00
Null Termination.

Code: Select all

ST UV WX YZ
Anticipate YZWXUVSTh 16-bit Alphanumeric characters to follow.

Code: Select all

Varies
CURRENT CAMPAIGN PATH LABEL.

Code: Select all

00 00
Null Termination.

Section 1 -- NDS 1.5

Pseudo-Random Number Generation
This data segment is 8 bytes long.

Code: Select all

0F 00 00 00
UNKNOWN PURPOSE. This value stayed the same in all hitherto encountered instances. Any values lower than "0E" crash the engine. My best guess is that it is a function marker.

Code: Select all

ST UV WX YZ
GENERATED PSEUDO-RANDOM NUMBER.

Section 1 -- ADS 1.6

Current Battle Name
This data segment's length (in bytes) varies.

Code: Select all

ST UV WX YZ
Anticipate YZWXUVSTh 16-bit Alphanumeric characters to follow.

Code: Select all

Varies
CURRENT BATTLE NAME.

Code: Select all

00 00
Null Termination.
Last edited by HexCode on 2021-11-27 06:02, Saturday, edited 1 time in total.

User avatar
HexCode
First Lieutenant
First Lieutenant
Posts: 926
Joined: 2019-09-30 18:54, Monday

*.PGSAV (NDS 1.7 & NDS 1.8)

Post by HexCode » 2021-04-05 18:20, Monday

*.PGSAV (NDS 1.7 & NDS 1.8)
========

Absolute Prerequisites

The contents of as well as those of all links hitherto encountered under this topic.

Section 1 -- NDS 1.7

Time & Timing Variables / Settings
This data segment is 36 bytes long.

Code: Select all

ST UV WX YZ
CURRENT TURN NUMBER.

Code: Select all

ST UV WX YZ
SCENARIO LONGEST DURATION IN TURNS.

Code: Select all

0T 00 00 00
SIDE-1 GETS TO MOVE FIRST. Boolean ("T" is either 0 or 1).

Code: Select all

ST 00 00 00
SCENARIO COMMENCEMENT YEAR. "ST" ranges from "0A" to "63".

Code: Select all

ST 00 00 00
SCENARIO COMMENCEMENT MONTH.

Code: Select all

ST 00 00 00
SCENARIO COMMENCEMENT DAY.

Code: Select all

0T 00 00 00
SCENARIO TURNS PER DAY. T ranges from 0 to 9.

Code: Select all

ST UV WX YZ
DAYS PER SCENARIO TURN.

Code: Select all

00 00 00 00
UNKNOWN PURPOSE. The value "00 00 00 00" stayed the same in all hitherto encountered instances. Experimentation with all sorts of different values has not triggered anything observable. Hence, it is quite likely that the setting is a coding... "dud".

Section 1 -- NDS 1.8

Scenario / Campaign Selectable Choices Restated
This data segment is 32 bytes long.

Code: Select all

0T 00 00 00
WEATHER EFFECTS. Boolean ("T" is either 0 or 1).

Code: Select all

0T 00 00 00
SUPPLY EFFECTS. Boolean ("T" is either 0 or 1).

Code: Select all

0T 00 00 00
HIDE OPPONENT'S UNITS. Boolean ("T" is either 0 or 1).

Code: Select all

00 00 00 00
UNKNOWN PURPOSE. This is likely the companion 32-bit (format) setting to the earlier encountered 8-bit (format) setting. The value "00 00 00 00" stayed the same in all hitherto encountered instances. Experimentation with all sorts of different values has not triggered anything observable. Hence, it is quite likely that, like its companion, the setting is a coding... "dud".

Code: Select all

ST 00 00 00
SIDE-0 PRESTIGE SLIDER MODIFIER. "ST" ranges from "00" to "C8".

Code: Select all

ST 00 00 00
SIDE-1 PRESTIGE SLIDER MODIFIER. "ST" also ranges from "00" to "C8".

Code: Select all

ST UV WX YZ
SIDE-0 EXPERIENCE SLIDER MODIFIER. Intended values follow:

+5 ==> "05 00 00 00"
+4 ==> "04 00 00 00"
+3 ==> "03 00 00 00"
+2 ==> "02 00 00 00"
+1 ==> "01 00 00 00"
.0 ==> "00 00 00 00"
-1 ==> "FF FF FF FF"
-2 ==> "FE FF FF FF"
-3 ==> "FD FF FF FF"
-4 ==> "FC FF FF FF"
-5 ==> "FB FF FF FF"

Code: Select all

ST UV WX YZ
SIDE-1 EXPERIENCE SLIDER MODIFIER. Intended values as per SIDE-0 immediately above.

User avatar
HexCode
First Lieutenant
First Lieutenant
Posts: 926
Joined: 2019-09-30 18:54, Monday

*.PGSAV (NDS 1.9, NDS 1.10 & NDS 1.11)

Post by HexCode » 2021-04-05 18:25, Monday

*.PGSAV (NDS 1.9, NDS 1.10 & NDS 1.11)
========

Absolute Prerequisites

The contents of as well as those of all links hitherto encountered under this topic.

Section 1 -- NDS 1.9

Weather Variables / Settings
This data segment is 32 bytes long.

Code: Select all

0T 00 00 00
GROUND CONDITION. Intended values and their meanings follow:

"00 00 00 00" ==> DRY
"01 00 00 00" ==> MUDDY
"02 00 00 00" ==> FROZEN

Code: Select all

0T 00 00 00
ATMOSPHERIC CONDITIONS. Intended values and their meanings follow:

"00 00 00 00" ==> CLEAR
"01 00 00 00" ==> OVERCAST
"02 00 00 00" ==> RAIN
"03 00 00 00" ==> SNOW

Code: Select all

0T 00 00 00
WEATHER GEOGRAPHICAL ZONE. Intended values and their meanings follow:

"00 00 00 00" ==> LEAST INCLEMENT
"01 00 00 00" ==> SOMEWHAT INCLEMENT
"02 00 00 00" ==> CONSIDERABLY INCLEMENT
"03 00 00 00" ==> MOST INCLEMENT

Code: Select all

0T 00 00 00
ATMOSPHERIC CONDITIONS RESTATED. Intended values and their meanings as per above.

Code: Select all

0T 00 00 00
GROUND CONDITION RESTATED. Intended values and their meanings as per above.

Code: Select all

0T 00 00 00
GROUND WETNESS LEVEL. Intended values and their meanings follow:

"00 00 00 00" triggers DRY GROUND
"01 00 00 00" triggers DRY GROUND
"02 00 00 00" triggers DRY GROUND
"03 00 00 00" triggers MUDDY or FROZEN GROUND
"04 00 00 00" triggers MUDDY or FROZEN GROUND
"05 00 00 00" triggers MUDDY or FROZEN GROUND

Depending on the Storm Front Precipitation Type, GROUND is either MUDDY or FROZEN.

Code: Select all

0T 00 00 00
CURRENT OR LAST STORM FRONT PRECIPITATION TYPE. Intended values and their meanings follow:

"00 00 00 00" ==> NO STORM FRONT YET
"02 00 00 00" ==> RAIN
"03 00 00 00" ==> SNOW

Code: Select all

ST UV WX YZ
#N TURNS REMAINING UNTIL EITHER THE NEXT STORM FRONT ARRIVES OR THE PRESENT STORM FRONT DEPARTS. #N includes the current turn. The Storm Front's Arrival or Departure takes place on turn #N+1.

Section 1 -- NDS 1.10

Unit Strength & Experience Restrictions
This data segment is 8 bytes long.

Code: Select all

ST 00 00 00
MAXIMUM UNIT SIZE FOR UNITS THAT ARE BEING (OVER)STRENGTHENED IN-GAME.

Code: Select all

ST UV 00 00
MAXIMUM UNIT ACCUMULATED EXPERIENCE POINTS FOR UNITS THAT ARE GAINING EXPERIENCE POINTS IN-GAME.

Section 1 -- NDS 1.11

Participating Combatants
This data segment's length (in bytes) varies.

Code: Select all

ST 00 00 00
Anticipate STh Participating Combatants to follow.

Code: Select all

ST 00 00 00
PARTICIPATING COMBATANT #1 ID.

Code: Select all

0T 00 00 00
PARTICIPATING COMBATANT #1 SIDE MEMBERSHIP ID. Boolean ("T" is either 0 or 1). In other words, either SIDE-0 or SIDE-1.

Code: Select all

ST 00 00 00
PARTICIPATING COMBATANT #2 ID.

Code: Select all

0T 00 00 00
PARTICIPATING COMBATANT #2 SIDE MEMBERSHIP ID. Boolean ("T" is either 0 or 1). As before.

ETC

Code: Select all

02 00 00 00
UNKNOWN PURPOSE. This value stayed the same in all hitherto encountered instances. Any other values crash the engine. My best guess is that it is a function marker.
Last edited by HexCode on 2021-11-27 06:05, Saturday, edited 1 time in total.

User avatar
HexCode
First Lieutenant
First Lieutenant
Posts: 926
Joined: 2019-09-30 18:54, Monday

*.PGSAV (ADS 2.T.1, NDS 2.T.2, NDS 2.T.3 & NDS 2.T.4)

Post by HexCode » 2021-04-05 18:29, Monday

*.PGSAV (ADS 2.T.1, NDS 2.T.2, NDS 2.T.3 & NDS 2.T.4)
========

Absolute Prerequisites

The contents of as well as those of all links hitherto encountered under this topic.

Preliminaries

Section 2.0 strictly pertains to SIDE-0. Section 2.1 strictly pertains to SIDE-1. The two Sections share one and the same internal structure. Section 2.1 always follows Section 2.0 without any intervening gaps.

Section 2.T contains a mixture of data. Some of the data do not change at all during the scenario's entire duration; unless... hacked, of course ! :) Other data are just reflective of the current turn's or moment's realities.

Section 2.T -- ADS 2.T.1

Alliance T Name
This data segment's length (in bytes) varies.

Code: Select all

ST 00 00 00
Anticipate STh 16-bit Alphanumeric characters to follow.

Code: Select all

Varies
SIDE DESCRIPTOR.

Code: Select all

00 00
Null Termination.

Section 2.T -- NDS 2.T.2

Side T Prestige
This data segment's is 4 bytes long.

Code: Select all

ST UV WX YZ
ACCUMULATED PRESTIGE POINTS.

Section 2.T -- NDS 2.T.3

AI Posture & Unit Icons Orientation
This data segment's is 8 bytes long.

Code: Select all

0T 00 00 00
AI STANCE. Boolean ("T" is either 0 or 1). Intended values and their meanings follow:

"00 00 00 00" ==> AI IS "DEFENDING"
"01 00 00 00" ==> AI IS "ATTACKING"

Code: Select all

ST UV WX YZ
UNIT ICONS ORIENTATION.

Important. In Section 2.0, the value always is "00 00 00 00". In Section 2.1, the value is either "01 00 00 00" or "FF FF FF FF". There are only two "East-West" unit icons orientation options which are mirror images of each other.

Section 2.T -- NDS 2.T.4

Core & Auxiliary Complement Restrictions
This data segment's is 8 bytes long.

Code: Select all

ST UV WX YZ
CORE COMPLEMENT SIZE LIMIT.

Code: Select all

ST UV WX YZ
AUXILIARY COMPLEMENT SIZE LIMIT.

User avatar
HexCode
First Lieutenant
First Lieutenant
Posts: 926
Joined: 2019-09-30 18:54, Monday

*.PGSAV (NDS 2.T.5, NDS 2.T.6, NDS 2.T.7 & NDS 2.T.8)

Post by HexCode » 2021-04-05 18:34, Monday

*.PGSAV (NDS 2.T.5, NDS 2.T.6, NDS 2.T.7 & NDS 2.T.8)
========

Absolute Prerequisites

The contents of as well as those of all links hitherto encountered under this topic.

Section 2.T -- NDS 2.T.5

Air / Naval Transport Variables / Settings
This data segment's is 16 bytes long.

Code: Select all

ST UV WX YZ
AIR TRANSPORT POINTS AVAILABLE. Currently utilized or not.

Code: Select all

ST UV WX YZ
NAVAL TRANSPORT POINTS AVAILABLE. Currently utilized or not.

Code: Select all

ST UV WX YZ
DEFAULT AIR TRANSPORT UNIT TYPE ID.

Code: Select all

ST UV WX YZ
DEFAULT NAVAL TRANSPORT UNIT TYPE ID.

Section 2.T -- NDS 2.T.6

Weather Forecasts
This data segment's is 12 bytes long.

Code: Select all

0T 00 00 00
FORECAST ATMOSPHERIC CONDITIONS. Values and their meaning as per earlier coverage.

Code: Select all

0T 00 00 00
FORECAST STORM FRONT TYPE. Values and their meaning as per earlier coverage.

Code: Select all

0T 00 00 00
FORECAST GROUND CONDITION. Values and their meaning as per earlier coverage.

Section 2.T -- NDS 2.T.7

Newly Purchased Unit Experience
This data segment's is 4 bytes long.

Code: Select all

ST UV WX YZ
NEWLY BOUGHT UNIT EXPERIENCE POINTS. Does not reflect a possible modification via the Experience Selection Slider.

Section 2.T -- NDS 2.T.8

Side T Units Present on the Map
This data segment's is 4 bytes long.

Code: Select all

ST UV WX YZ
CORE PLUS AUXILIARY UNITS ACTUALLY PRESENT. Excludes undeployed Core Units.

User avatar
HexCode
First Lieutenant
First Lieutenant
Posts: 926
Joined: 2019-09-30 18:54, Monday

*.PGSAV (ADS 2.T.U.1, NDS 2.T.U.2, NDS 2.T.U.3, NDS 2.T.U.4 & NDS 2.T.U.5)

Post by HexCode » 2021-04-05 18:38, Monday

*.PGSAV (ADS 2.T.U.1, NDS 2.T.U.2, NDS 2.T.U.3, NDS 2.T.U.4 & NDS 2.T.U.5)
========

Absolute Prerequisites

The contents of as well as those of all links hitherto encountered under this topic.

Preliminaries

Data Segment 2.T.U always follows NDS 2.T.8 without any intervening gaps. It contains a listing of SIDE T's individual unit data segments. These data segments are sequentially listed one after another, without any intervening gaps.

Individual unit data segments contain a mixture of data. Most of them are just reflective of the current turn's or moment's realities.

Order of Appearance

When it comes to relative appearance in the listing, individual data segments are bunched together, one after another, as per the following order:

Core Units (deployed)
Auxiliary Units
Core Units (undeployed)

Eliminated / Disbanded units are immediately and completely dropped from the listing.

Section 2.T -- ADS 2.T.U.1

Unit Name
This data segment's length (in bytes) varies.

Code: Select all

ST 00 00 00
Anticipate STh 16-bit Alphanumeric characters to follow.

Code: Select all

Varies
UNIT DESCRIPTOR.

Code: Select all

00 00
Null Termination.

Section 2.T -- NDS 2.T.U.2

Unit IDs
This data segment is 24 bytes long.

Code: Select all

ST UV WX YZ
STATUS TYPE ID. If currently not "contained" (i.e., not mounted), the same as the unit specific type's ID. If currently "contained" (i.e., mounted), the transport unit specific type's ID.

Code: Select all

ST 00 00 00
COMBATANT ID. Combatant Ownership Representation (COR).

Code: Select all

0T 00 00 00
SIDE T MEMBER. Boolean ("T" is either 0 or 1).

Code: Select all

ST UV WX YZ
SPECIFIC TYPE ID.

Code: Select all

ST UV WX YZ
SPECIFIC ORGANIC TRANSPORT TYPE ID. Value "FF FF FF FF" indicates the absence of a companion Organic Transport unit.

Code: Select all

ST UV WX YZ
SPECIFIC AIR / NAVAL TRANSPORT TYPE ID. Value "FF FF FF FF" indicates the absence of a companion Air / Naval Transport unit.

Section 2.T -- NDS 2.T.U.3

Unit Map Location
This data segment is 8 bytes long.

Code: Select all

ST UV WX YZ
MAP COLUMN COORDINATE ID. Value "FF FF FF FF" indicates a currently undeployed Core Unit.

Code: Select all

ST UV WX YZ
MAP ROW COORDINATE ID. Value "FF FF FF FF" indicates a currently undeployed Core Unit.

Section 2.T -- NDS 2.T.U.4

Unit Auxiliary Designation ?
This data segment is 1 byte long.

Code: Select all

0T
CORE / AUXILIARY DESIGNATION. Boolean ("T" is either 0 or 1). Core (0) ; Auxiliary (1).

Section 2.T -- NDS 2.T.U.5

Unit Operational Stats (Current)
This data segment is 28 bytes long.

Code: Select all

ST UV WX YZ
STRENGTH FACTORS.

Code: Select all

ST UV WX YZ
SUPPRESSED STRENGTH FACTORS.

Code: Select all

ST UV WX YZ
ACCUMULATED EXPERIENCE POINTS.

Code: Select all

ST UV WX YZ
ENTRENCHMENT LEVEL.

Code: Select all

ST UV WX YZ
UNCONVERTED ENTRENCHMENT POINTS.

Code: Select all

ST UV WX YZ
FUEL POINTS.

Code: Select all

ST UV WX YZ
AMMO POINTS.
Last edited by HexCode on 2021-11-27 06:06, Saturday, edited 2 times in total.

User avatar
HexCode
First Lieutenant
First Lieutenant
Posts: 926
Joined: 2019-09-30 18:54, Monday

*.PGSAV (NDS 2.T.U.6 & DS 2.T.U.7)

Post by HexCode » 2021-04-05 18:41, Monday

*.PGSAV (NDS 2.T.U.6 & DS 2.T.U.7)
========

Absolute Prerequisites

The contents of as well as those of all links hitherto encountered under this topic.

Section 2.T -- NDS 2.T.U.6

Unit Status (Diverse)
This data segment is 13 bytes long.

Code: Select all

0T 0V
UNIT HAS (NOT) ALREADY "ACTED" THIS TURN. Pseudo-Boolean ("0T 0V" is either "01 01" or "00 00"). Possible "Actions": Supply, Replacements, Just Move, Just Attack, Move & Attack, Attack & Move, Upgrade, Purchase.

Code: Select all

ST UV WX YZ
NUMERICAL MILITARY DESIGNATION. If Auxiliary, subtract (decimal) 1000000. Therefore, quite a few Core Units always share their Numerical Military Designations with Auxiliary Units and vice versa.

Code: Select all

ST UV WX YZ
CUMULATIVE KILLS.

Code: Select all

0T
UNIT IS SPOTTED BY OPPONENT. Boolean ("T" is either 0 or 1).

Code: Select all

00 00
UNKNOWN PURPOSE. This value stayed the same in all hitherto encountered instances. Most probably a termination / function marker.

Section 2.T -- DS 2.T.U.7

Unit Battle Honors
This data segment's length (in bytes) varies.

Code: Select all

ST UV WX YZ
Anticipate YZWXUVSTh 16-bit Alphanumeric characters to follow.

Code: Select all

Varies
COMMISSION DATA.

Code: Select all

00 00
Null Termination.

Code: Select all

ST 00 00 00
EXPERIENCE STARS EARNED.

Code: Select all

0T 00 00 00
Anticipate 0Th 16-bit Battle Honors segments to follow. T can be 0, 1, 2, 3, 4 or 5.

If NO (0) Battle Honors:

Code: Select all

Thirty Six "00 00"s
TAIL END OF THIS DATA SEGMENT.

If ONE (1) Battle Honor:

Code: Select all

ST UV WX YZ
Anticipate YZWXUVSTh 16-bit Alphanumeric characters to follow.

Code: Select all

Varies
SCENARIO NAME.

Code: Select all

00 00
Null Termination.

If NO OTHER Battle Honors:

Code: Select all

Thirty Six "00 00"s
TAIL END OF THIS DATA SEGMENT.

If TWO (2) Battle Honors:

ETC

User avatar
HexCode
First Lieutenant
First Lieutenant
Posts: 926
Joined: 2019-09-30 18:54, Monday

*.PGSAV (NDS 2.T.H)

Post by HexCode » 2021-04-05 18:45, Monday

*.PGSAV (NDS 2.T.H)
========

Absolute Prerequisites

The contents of as well as those of all links hitherto encountered under this topic.

Preliminaries

All scenario maps are rectangular. The superimposed grid is mathematically defined by

Code: Select all

Columns: 0 , 1 , 2  . . .  C
   Rows: 0 , 1 , 2  . . .  R
It contains [(C+1)*(R+1)] cells (i.e., hexes). Sometimes, this number is referred to as the map's "area" (A).

PGF's engine "reads & understands" a rectangular map's coordinates in strictly linear fashion. In essence, the engine establishes a one-to-one correspondence between each coordinate pair (human reference) and its companion linear value (engine reference). The engine "reads" a rectangular map in continuous, sequential, uninterrupted fashion.

In the present particular case, SSI's coding "tradition" has been stood on its head. Namely, starting with column 0, the engine canvasses the values therein traversing them from top to bottom along rows. Next comes column 1 and so forth ending with column C's values.

The listing comprises [(C+1)*(R+1)] strictly sequential values.

Section 2.T -- NDS 2.T.H

Scouted (& Unscouted) Map Hexes
This data segment's length (in bytes) varies.

Code: Select all

ST UV 00 00
NUMBER OF MAP COLUMNS.

Code: Select all

ST UV 00 00
NUMBER OF MAP ROWS.

Code: Select all

A "0J"s
MAP HEX IS SCOUTED. Boolean ("J" is either 0 or 1). This is SIDE T's visual perspective. The listing comprises A 8-bit values.

User avatar
HexCode
First Lieutenant
First Lieutenant
Posts: 926
Joined: 2019-09-30 18:54, Monday

*.PGSAV (SECTION 3)

Post by HexCode » 2021-04-05 18:48, Monday

*.PGSAV (SECTION 3)
========

Absolute Prerequisites

The contents of as well as those of all links hitherto encountered under this topic.

Section 3

Turn-Specific Prestige Allotments
This section's length (in bytes) varies.

Code: Select all

ST UV WX YZ
Anticipate YZWXUVSTh 32-bit binary values to follow. Its value is TWICE the scenario's longest duration in turns.

Code: Select all

ST UV WX YZ
SIDE-0 1ST TURN PRESTIGE ALLOTMENT.

Code: Select all

ST UV WX YZ
SIDE-1 1ST TURN PRESTIGE ALLOTMENT.

Code: Select all

ST UV WX YZ
SIDE-0 2ND TURN PRESTIGE ALLOTMENT.

Code: Select all

ST UV WX YZ
SIDE-1 2ND TURN PRESTIGE ALLOTMENT.

ETC

User avatar
HexCode
First Lieutenant
First Lieutenant
Posts: 926
Joined: 2019-09-30 18:54, Monday

*.PGSAV (SECTION 4)

Post by HexCode » 2021-04-05 18:51, Monday

*.PGSAV (SECTION 4)
========

Absolute Prerequisites

The contents of as well as those of all links hitherto encountered under this topic

AND

Unit Classes
viewtopic.php?f=100&t=547#p8995

Section 4

Purchasable Unit Classes
This section is 22 bytes long.

Code: Select all

12 00 00 00
Anticipate 12h (i.e., decimal 18) 8-bit binary values to follow. Its value exactly reflects the number of Unit Classes which PGF's engine "recognizes".

Code: Select all

0T
UNIT CLASS 0 IS PURCHASABLE. Boolean ("T" is either 0 or 1).

Code: Select all

0T
UNIT CLASS 1 IS PURCHASABLE. Boolean ("T" is either 0 or 1).

and so on, concluding with

Code: Select all

0T
UNIT CLASS 17 IS PURCHASABLE. Boolean ("T" is either 0 or 1).

The preceding listing strictly conforms to the "Unit Class Canonical Order".

User avatar
HexCode
First Lieutenant
First Lieutenant
Posts: 926
Joined: 2019-09-30 18:54, Monday

*.PGSAV (SECTION 5)

Post by HexCode » 2021-04-05 18:56, Monday

*.PGSAV (SECTION 5)
========

Absolute Prerequisites

The contents of as well as those of all links hitherto encountered under this topic.

Section 5

Supply Hex Data
This section's length (in bytes) varies.

Code: Select all

ST UV WX YZ
Anticipate YZWXUVSTh data segments to follow. There is a one-to-one correspondence between the data segments and the map hexes designated as "Supply" ones (SHs).

Each SH-specific data segment is 20 bytes long.

Code: Select all

ST UV 00 00
SH #1 MAP COLUMN COORDINATE ID.

Code: Select all

ST UV 00 00
SH #1 MAP ROW COORDINATE ID.

Code: Select all

ST UV WX YZ
PRESTIGE AWARD GRANTED TO SIDE-T UPON THEIR FIRST "CAPTURE" OF SH #1. "Capture" means an ownership change in favor of SIDE-T.

Code: Select all

ST UV WX YZ
NEW UNIT PURCHASE DELAY SPECIFIC TO SH #1. The delay is expressed in number of turns immediately following the turn of "capture".

Code: Select all

ST UV WX YZ
TURN ID OF SH #1'S LAST "(RE)CAPTURE". Value "FF FF FF FF" indicates "no captures whatsoever yet".

Code: Select all

ST UV 00 00
SH #2 MAP COLUMN COORDINATE ID.

Code: Select all

ST UV 00 00
SH #2 MAP ROW COORDINATE ID.

Code: Select all

ST UV WX YZ
PRESTIGE AWARD GRANTED TO SIDE-T UPON THEIR FIRST "CAPTURE" OF SH #2. "Capture" means an ownership change in favor of SIDE-T.

Code: Select all

ST UV WX YZ
NEW UNIT PURCHASE DELAY SPECIFIC TO SH #2. The delay is expressed in number of turns immediately following the turn of "capture".

Code: Select all

ST UV WX YZ
TURN ID OF SH #2'S LAST "(RE)CAPTURE". Value "FF FF FF FF" indicates "no captures whatsoever yet".

ETC

User avatar
HexCode
First Lieutenant
First Lieutenant
Posts: 926
Joined: 2019-09-30 18:54, Monday

*.PGSAV (SECTION 6)

Post by HexCode » 2021-04-05 18:58, Monday

*.PGSAV (SECTION 6)
========

Absolute Prerequisites

The contents of as well as those of all links hitherto encountered under this topic.

Section 6

Objective Hex Specification
This section's length (in bytes) varies.

Code: Select all

ST UV WX YZ
Anticipate YZWXUVSTh data segments to follow. There is a one-to-one correspondence between the data segments and the map hexes designated as "Objective" ones (OHs).

Each OH-specific data segment is 8 bytes long.

Code: Select all

ST UV 00 00
OH #1 MAP COLUMN COORDINATE ID.

Code: Select all

ST UV 00 00
OH #1 MAP ROW COORDINATE ID.

Code: Select all

ST UV 00 00
OH #2 MAP COLUMN COORDINATE ID.

Code: Select all

ST UV 00 00
OH #2 MAP ROW COORDINATE ID.

ETC

User avatar
HexCode
First Lieutenant
First Lieutenant
Posts: 926
Joined: 2019-09-30 18:54, Monday

*.PGSAV (SECTION 7)

Post by HexCode » 2021-04-05 19:05, Monday

*.PGSAV (SECTION 7)
========

Absolute Prerequisites

The contents of as well as those of all links hitherto encountered under this topic

AND ESPECIALLY

*.PGSAV (NDS 2.T.H)
viewtopic.php?f=100&t=553#p9077

ALSO

TACMAP_??????.BMP
viewtopic.php?f=100&t=545#p9030

Internally Re-Indexed GLN Records
viewtopic.php?f=100&t=547#p8996

Combatant Ownership Representations
viewtopic.php?f=100&t=547#p8993

Internally "Summarized" Terrain Typology
viewtopic.php?f=100&t=547#p8997

Underlying Terrain Representations
viewtopic.php?f=100&t=550#p9031

Underlying Roadworks Representations
viewtopic.php?f=100&t=550#p9035

Section 7

Map Hex Data
This data segment is 8+27*A bytes long.


A is the scenario map's "area" expressed in hexes.

Code: Select all

ST UV 00 00
NUMBER OF MAP COLUMNS.

Code: Select all

ST UV 00 00
NUMBER OF MAP ROWS.

The remainder of Section 7 consists of A map hex records which are sequentially listed in strict order, without any intervening gaps. Each such record spans 27 bytes.

The internal structure of a typical Section 7 record follows:

Code: Select all

ST UV 00 00
HEX TIR ID.

Code: Select all

ST UV 00 00
HEX RE-INDEXED GLN ID.

Code: Select all

ST 00 00 00
HEX COR ID. "FF FF FF FF" means none ; "00 00 00 00" means "hex neutralized".

Code: Select all

ST 00 00 00
HEX ATT ID.

Code: Select all

ST 00 00 00
HEX UTR ID.

Code: Select all

ST 00 00 00
HEX URR ID.

Code: Select all

0T
FIRST TIME HEX SIDE ALIGNMENT CHANGE DUE TO SIDE-0 ALIGNED UNIT ACTION. Boolean ("T" is either 0 or 1).

Code: Select all

0T
FIRST TIME HEX SIDE ALIGNMENT CHANGE DUE TO SIDE-1 ALIGNED UNIT ACTION. Boolean ("T" is either 0 or 1).

Code: Select all

0T
HEX IS COMPLETELY UNENTERABLE BY UNITS. Pseudo-Boolean ("T" is either 3 or anything else -- practically 0).
Last edited by HexCode on 2021-12-09 13:18, Thursday, edited 5 times in total.

User avatar
HexCode
First Lieutenant
First Lieutenant
Posts: 926
Joined: 2019-09-30 18:54, Monday

*.PGSAV (SECTION 8)

Post by HexCode » 2021-04-05 19:09, Monday

*.PGSAV (SECTION 8)
========

Absolute Prerequisites

The contents of as well as those of all links hitherto encountered under this topic

PLUS

Internally Re-Indexed GLN Records
viewtopic.php?f=100&t=547#p8996

Section 8

Re-Indexed GLN Records
This section's length (in bytes) varies.

Code: Select all

ST UV WX YZ
Anticipate YZWXUVSTh Alphanumeric records to follow.

Code: Select all

00 00 00 00
ALWAYS PRESENT. The re-indexing always starts with index value ZERO (0) meaning "hex without a GLN Alphanumeric descriptor".

Code: Select all

00 00
Null Termination.

Code: Select all

ST UV WX YZ
Anticipate YZWXUVSTh 16-bit Alphanumeric characters to follow.

Code: Select all

Varies
GLN RECORD. The re-indexing assigns the value ONE (1) to this GLN record.

Code: Select all

00 00
Null Termination.

ETC

User avatar
HexCode
First Lieutenant
First Lieutenant
Posts: 926
Joined: 2019-09-30 18:54, Monday

*.PGSAV (SECTION 9)

Post by HexCode » 2021-04-05 19:12, Monday

*.PGSAV (SECTION 9)
========

Absolute Prerequisites

The contents of as well as those of all links hitherto encountered under this topic.

Preliminaries

Upon a scenario's termination, PGF's engine allows a player to save file *.PGLOG in folder ...\REPLAY. The file's format is plain text and contains script code. Upon invocation, the engine "reads" the script and dynamically presents the viewer with the scenario's kinetic events history.

Throughout scenario play, the evolving script is recorded and constantly appended upon in Section 9.

Replay Script Data
This section's length (in bytes) varies.

Code: Select all

ST UV WX YZ
Anticipate YZWXUVSTh Alphanumeric script entries to follow.

Code: Select all

ST UV WX YZ
Anticipate YZWXUVSTh 16-bit Alphanumeric characters to follow.

Code: Select all

Varies
REPLAY SCRIPT ENTRY.

Code: Select all

00 00
Null Termination.

ETC

User avatar
HexCode
First Lieutenant
First Lieutenant
Posts: 926
Joined: 2019-09-30 18:54, Monday

*.PGSAV (SECTION 10)

Post by HexCode » 2021-04-05 19:32, Monday

*.PGSAV (SECTION 10)
========

Absolute Prerequisites

The contents of as well as those of all links hitherto encountered under this topic

AND ESPECIALLY

Unit Classes
viewtopic.php?f=100&t=547#p8995

Cumulative Casualty Tallies
This section is 144 bytes long.

Code: Select all

ST UV WX YZ
SIDE 0, UNIT CLASS 0 CASUALTIES.

Code: Select all

ST UV WX YZ
SIDE 1, UNIT CLASS 0 CASUALTIES.

Code: Select all

ST UV WX YZ
SIDE 0, UNIT CLASS 1 CASUALTIES.

Code: Select all

ST UV WX YZ
SIDE 1, UNIT CLASS 1 CASUALTIES.

and so on, concluding with

Code: Select all

ST UV WX YZ
SIDE 0, UNIT CLASS 17 CASUALTIES.

Code: Select all

ST UV WX YZ
SIDE 1, UNIT CLASS 17 CASUALTIES.

The preceding listing strictly conforms to the "Unit Class Canonical Order".

User avatar
HexCode
First Lieutenant
First Lieutenant
Posts: 926
Joined: 2019-09-30 18:54, Monday

*.PGSAV (SECTION 11)

Post by HexCode » 2021-04-05 19:35, Monday

*.PGSAV (SECTION 11)
========

Absolute Prerequisites

The contents of as well as those of all links hitherto encountered under this topic.

"Campaigning" Side & Combatant ID Restatement
This section is 12 bytes long.


ATTENTION: In Standalone Scenario Play Mode, the present Section is "nothing / empty".

Code: Select all

01 00 00 00
FILE PG.PGCAM FORMAT VERSION. Always "01 00 00 00".

Code: Select all

0T 00 00 00
"CAMPAIGNING" SIDE ID. Boolean ("T" is either 0 or 1). In other words, either SIDE-0 or SIDE-1.

Code: Select all

ST 00 00 00
"CAMPAIGNING" COMBATANT ID.
Last edited by HexCode on 2021-11-27 06:07, Saturday, edited 1 time in total.

User avatar
HexCode
First Lieutenant
First Lieutenant
Posts: 926
Joined: 2019-09-30 18:54, Monday

*.PGSAV (SECTION 12)

Post by HexCode » 2021-04-05 19:37, Monday

*.PGSAV (SECTION 12)
========

Absolute Prerequisites

The contents of as well as those of all links hitherto encountered under this topic.

Campaign Deployment Hex Specification
This section's length (in bytes) varies.

Code: Select all

ST UV WX YZ
Anticipate YZWXUVSTh binary records to follow.

ATTENTION: In Standalone Scenario Play Mode, the value is "00 00 00 00".

Code: Select all

ST UV WX YZ
DEPLOYMENT HEX COLUMN ID.

Code: Select all

ST UV WX YZ
DEPLOYMENT HEX ROW ID.

ETC

User avatar
HexCode
First Lieutenant
First Lieutenant
Posts: 926
Joined: 2019-09-30 18:54, Monday

*.PGSAV (SECTION 13)

Post by HexCode » 2021-04-05 19:42, Monday

*.PGSAV (SECTION 13)
========

Absolute Prerequisites

The contents of as well as those of all links hitherto encountered under this topic

AND ESPECIALLY

Victory Conditions: Terminology
viewtopic.php?f=100&t=543#p8976

Campaign Victory Conditions
This section's length (in bytes) varies.


ATTENTION: In Standalone Scenario Play Mode, the present Section is "nothing / empty".

Code: Select all

03 00 00 00
Anticipate 3 consecutive data segments to follow. They correspond to the THREE (3) Campaign victory outcome types which PGF's engine "recognizes".

Code: Select all

ST UV WX YZ
Anticipate YZWXUVSTh 16-bit Alphanumeric characters to follow.

Code: Select all

Varies
MAJOR VICTORY DESCRIPTOR. As per file PG.PGCAM's contents.

Code: Select all

00 00
Null Termination.

Code: Select all

ST UV WX YZ
MINIMUM NUMBER OF TURNS EARLIER THAN THE SCENARIO'S MANDATED END. Current turn is inclusive. Values other than "00 00 00 00" apply to Instantaneous Victory types. Value "00 00 00 00" applies to End-Point Victory types.

Code: Select all

ST UV WX YZ
MINIMUM NUMBER OF OBJECTIVE HEXES TO SIMULTANEOUSLY OWN. Value "00 00 00 00" means "Instantaneous Victory" (i.e., Early or Automatic Victory).

Code: Select all

ST UV WX YZ
Anticipate YZWXUVSTh binary records to follow. Each binary record specifies the particular objective hex's location on the map. In order for the relevant Campaign Victory to materialize, their simultaneous ownership is mandatory.

Code: Select all

ST UV WX YZ
MANDATORY OBJECTIVE HEX COLUMN ID.

Code: Select all

ST UV WX YZ
MANDATORY OBJECTIVE HEX ROW ID.

ETC

Code: Select all

ST UV WX YZ
Anticipate YZWXUVSTh 16-bit Alphanumeric characters to follow.

Code: Select all

Varies
MINOR VICTORY DESCRIPTOR. As per file PG.PGCAM's contents.

Code: Select all

00 00
Null Termination.

Code: Select all

ST UV WX YZ
MINIMUM NUMBER OF TURNS EARLIER THAN THE SCENARIO'S MANDATED END. Current turn is inclusive. Values other than "00 00 00 00" apply to Instantaneous Victory types. Value "00 00 00 00" applies to End-Point Victory types.

Code: Select all

ST UV WX YZ
MINIMUM NUMBER OF OBJECTIVE HEXES TO SIMULTANEOUSLY OWN. Value "00 00 00 00" means "Instantaneous Victory" (i.e., Early or Automatic Victory).

Code: Select all

ST UV WX YZ
Anticipate YZWXUVSTh binary records to follow. Each binary record specifies the particular objective hex's location on the map. In order for the relevant Campaign Victory to materialize, their simultaneous ownership is mandatory.

Code: Select all

ST UV WX YZ
MANDATORY OBJECTIVE HEX COLUMN ID.

Code: Select all

ST UV WX YZ
MANDATORY OBJECTIVE HEX ROW ID.

ETC

Code: Select all

ST UV WX YZ
Anticipate YZWXUVSTh 16-bit Alphanumeric characters to follow.

Code: Select all

Varies
OPPOSING SIDE VICTORY DESCRIPTOR. As per file PG.PGCAM's contents.

Code: Select all

00 00
Null Termination.

Code: Select all

FF FF FF FF
RESIDUAL VICTORY OUTCOME. Logical Negation. Always twinned with the value immediately follow.

Code: Select all

FF FF FF FF
RESIDUAL VICTORY OUTCOME. Logical Negation. Always twinned with the immediately preceding value.

Code: Select all

00 00 00 00
Anticipate no binary records whatsoever to follow.

Code: Select all

FF FF FF FF
A termination / function marker.

User avatar
HexCode
First Lieutenant
First Lieutenant
Posts: 926
Joined: 2019-09-30 18:54, Monday

*.PGSAV (SECTION 14)

Post by HexCode » 2021-04-05 19:46, Monday

*.PGSAV (SECTION 14)
========

Absolute Prerequisites

The contents of as well as those of all links hitherto encountered under this topic.

Special Features & Capabilities
This section is 16 bytes long.

Code: Select all

0T 00 00 00
"TURBO" UNITS / CAMPAIGN DEPLOYMENT PHASE. Intended values are:

"00" ==> "Turbo" Units Are "On" & Campaign Deployment Is "Off"
"01" ==> Campaign Deployment Is "On" & "Turbo" Units Are "Off"
"02" ==> Both "Turbo" Units & Campaign Deployment Are "Off"

SIDE-0 "POINT OF VIEW" SETTINGS

Code: Select all

0T
SIDE-0 CAN SEE OPPONENT's UNITS. Boolean ("T" is either 0 or 1).

Code: Select all

0T
SIDE-0 CAN BUY ANY UNIT IRRESPECTIVE OF ITS CHRONOLOGICAL DEBUT. Boolean ("T" is either 0 or 1).

Code: Select all

0T
SIDE-0's UNITS IGNORE OPPONENT UNITS' ZONES OF CONTROL. Boolean ("T" is either 0 or 1).

Code: Select all

0T
SIDE-0's UNITS CAN FREELY MOVE "IN ALL SORTS OF PLACES" ON THE MAP. Boolean ("T" is either 0 or 1).

Code: Select all

0T
WHETHER ATTACKING OR DEFENDING, OPPONENT's UNITS ARE ELIMINATED. Boolean ("T" is either 0 or 1).

Code: Select all

0T
WHEN SUBJECTED TO NON-RANGED COMBAT, OPPONENT's UNITS RETREAT. Boolean ("T" is either 0 or 1).

SIDE-1 "POINT OF VIEW" SETTINGS

Code: Select all

0T
SIDE-1 CAN SEE OPPONENT's UNITS. Boolean ("T" is either 0 or 1).

Code: Select all

0T
SIDE-1 CAN BUY ANY UNIT IRRESPECTIVE OF ITS CHRONOLOGICAL DEBUT. Boolean ("T" is either 0 or 1).

Code: Select all

0T
SIDE-1's UNITS IGNORE OPPONENT UNITS' ZONES OF CONTROL. Boolean ("T" is either 0 or 1).

Code: Select all

0T
SIDE-1's UNITS CAN FREELY MOVE "IN ALL SORTS OF PLACES" ON THE MAP. Boolean ("T" is either 0 or 1).

Code: Select all

0T
WHETHER ATTACKING OR DEFENDING, OPPONENT's UNITS ARE ELIMINATED. Boolean ("T" is either 0 or 1).

Code: Select all

0T
WHEN SUBJECTED TO NON-RANGED COMBAT, OPPONENT's UNITS RETREAT. Boolean ("T" is either 0 or 1).
Last edited by HexCode on 2021-07-23 22:45, Friday, edited 1 time in total.

User avatar
HexCode
First Lieutenant
First Lieutenant
Posts: 926
Joined: 2019-09-30 18:54, Monday

*.PGSAV (SECTION 15)

Post by HexCode » 2021-04-05 19:49, Monday

*.PGSAV (SECTION 15)
========

Absolute Prerequisites

The contents of as well as those of all links hitherto encountered under this topic.

AI Behavioral Instructions
This Section can be "empty", 24 or 48 bytes long.


ATTENTION: In H2H Play Mode, the present Section is "nothing / empty". If PGF's AI plays against a human, the Section is 24 bytes long. If PGF's AI plays against "itself", the Section is 48 bytes long.

Each AI "player" is "instructed" by the binary contents of its corresponding, 24 byte long, data segment.

Code: Select all

03 00 00 00
UNKNOWN PURPOSE. This value stayed the same in all hitherto encountered instances. Most probably a termination / function marker.

Code: Select all

0T 00 00 00
AI LEVEL Intended values follow:

Basic =========> "00 00 00 00"
Intermediate ==> "01 00 00 00"
Advanced =====> "02 00 00 00"

Code: Select all

0T 00 00 00
AI DOES NOT RUSH ITS UNITS FORWARD. Boolean ("T" is either 0 or 1).

Code: Select all

0T 00 00 00
UNKNOWN PURPOSE. "T" can be 0, 1 or 2. Seems to affect which urban centers will be "surrounded" by defensive units.

Code: Select all

0T 00 00 00
UNKNOWN PURPOSE. Probably Boolean ( "T" can be 0 or 1). Always the opposite of the value affecting unit movement behavior.

Code: Select all

0T 00 00 00
AI ATTACK "RECKLESSNESS". "T" can be 0, 1 or 2.

Post Reply