Difference between revisions of "Pro Evolution Soccer 2021/Edit file"
Giovani1906 (talk | contribs) |
m |
||
Line 2,395: | Line 2,395: | ||
Be sure to check [[Appendix:Rules]] or the rules of the invitational in question to find out what is considered legal. | Be sure to check [[Appendix:Rules]] or the rules of the invitational in question to find out what is considered legal. | ||
[[Category:Pro Evolution Soccer | [[Category:Pro Evolution Soccer 2021]] |
Latest revision as of 12:15, 24 April 2021
Pro Evolution Soccer 2021 This is still a work in progress. Please be patient. | |
---|---|
Game | |
Rules | |
Info | |
Tools | |
Modding |
The Edit file is called EDIT00000000 and can be found in %HOMEPATH%\Documents\KONAMI\eFootball PES 2021 SEASON UPDATE\%steamid%\save.
It is encrypted and thus, cannot be simply edited directly.
Refer to the Tools page for decrypting and editing tools.
Note: This edit file mapping applies to Pro Evolution Soccer 2020 as well.
Structure
Note: The beginning of the file is considered what pesXcrypter exports as data.dat.
- Header
- Player entries
- Player appearance entries
- Team entries
- Manager entries
- Competitions
- Stadiums
- Undocumented entries
- Team-Player table
- Competition entry entries
- Game plan entries
Header
Start: HEX block 0
End: HEX block 7B
Length: 124 (0x7C) bytes, first 96 (0x60) omitted for now
Offset (byte:bit) | Length | Description | Format | Enforced limits | Default value |
---|---|---|---|---|---|
0x60:0 | 2 bytes | Amount of player entires (appearance and data) | 0xDE12 (4830) | ||
0x62:0 | 2 bytes | Unknown A | Possible leftover of appearance entry count. | 0x0000 | |
0x64:0 | 2 bytes | Amount of team entires | 0xD200 (210) | ||
0x66:0 | 2 bytes | Amount of manager entries | 0xE700 (231) | ||
0x68:0 | 2 bytes | Amount of stadium entires | 0x3700 (55) | ||
0x6A:0 | 2 bytes | Amount of competition entries | 0x2E00 (46) | ||
0x6C:0 | 2 bytes | Amount of entries of a currently undocumented entry | 0x4F00 (79) | ||
0x6E:0 | 2 bytes | Unknown B | 0x0000 | ||
0x70:0 | 2 bytes | Amount of team-player table entries | 0xD200 (210) | ||
0x72:0 | 2 bytes | Unknown C | 0x0000 | ||
0x74:0 | 2 bytes | Amount of team game plan entries | 0xD200 (210) | ||
0x76:0 | 2 bytes | Unknown D | 0x0000 | ||
0x78:0 | 2 bytes | Unknown E | 0x0000 | ||
0x7A:0 | 2 bytes | Unknown F | 0x0000 |
Player entry
Start: HEX block 7C
End: HEX block 8ED2FB
Entry length: 240 (0xF0) bytes
Offset (byte:bit) | Length | Description | Format | Enforced limits | Default value |
---|---|---|---|---|---|
0x00:0 | 4 bytes | Player ID | PES: must be unique | >= 1048576 | |
0x04:0 | 4 bytes | Commentary Name | References a player ID. | Same as the player ID. | |
0x08:0 | 2 bytes | Nationality/Region | 0x0401 = Others | 0xE700 (San Marino) | |
0x0A:0 | 8 bits | Height (cm) | PES: must be in range [155, 210] | 180 | |
0x0B:0 | 8 bits | Weight (kg) | PES: must be in range [max(30, Height - 129), Height - 81] | 80 | |
0x0C:0 | 8 bits | Motion: Goal Celebration 1 | 0 = OFF | PES: must be in range [0, 140] | 0 |
0x0D:0 | 8 bits | Motion: Goal Celebration 2 | 0 = OFF | PES: must be in range [0, 140] | 0 |
0x0E:0 | 7 bits | Offensive Awareness | PES: must be in range [40, 99] | 77 | |
0x0E:7 | 7 bits | Ball Control | PES: must be in range [40, 99] | 77 | |
0x0F:6 | 2 bits | Weak Foot Usage | In-game value minus one | PES: must be in range [0, 3] | 1 |
0x10:0 | 7 bits | Tight Possession | PES: must be in range [40, 99] | 77 | |
0x10:7 | 7 bits | Low Pass | PES: must be in range [40, 99] | 77 | |
0x11:6 | 7 bits | Lofted Pass | PES: must be in range [40, 99] | 77 | |
0x12:5 | 7 bits | Finishing | PES: must be in range [40, 99] | 77 | |
0x13:4 | 4 bits | Motion: Arm Movement (Dribbling) | In-game value minus one | PES: must be in range [0, 7] (full range) | 0 |
0x14:0 | 7 bits | Place Kicking | PES: must be in range [40, 99] | 77 | |
0x14:7 | 7 bits | Curl | PES: must be in range [40, 99] | 77 | |
0x15:6 | 7 bits | Speed | PES: must be in range [40, 99] | 77 | |
0x16:5 | 7 bits | Acceleration | PES: must be in range [40, 99] | 77 | |
0x17:4 | 4 bits | Motion: Arm Movement (Running) | In-game value minus one | PES: must be in range [0, 7] (full range) | 0 |
0x18:0 | 7 bits | Jump | PES: must be in range [40, 99] | 77 | |
0x18:7 | 7 bits | Physical Contact | PES: must be in range [40, 99] | 77 | |
0x19:6 | 7 bits | Balance | PES: must be in range [40, 99] | 77 | |
0x1A:5 | 7 bits | Stamina | PES: must be in range [40, 99] | 77 | |
0x1B:4 | 4 bits | Motion: Corner Kick | In-game value minus one | PES: must be in range [0, 5] | 0 |
0x1C:0 | 7 bits | Ball Winning | PES: must be in range [40, 99] | 77 | |
0x1C:7 | 7 bits | Aggression | PES: must be in range [40, 99] | 77 | |
0x1D:6 | 7 bits | GK Awareness | PES: must be in range [40, 99] | 77 | |
0x1E:5 | 7 bits | GK Catching | PES: must be in range [40, 99] | 77 | |
0x1F:4 | 3 bits | Conditioning | In-game value minus one | PES: must be in range [0, 7] (full range) | 3 |
0x1F:7 | 1 bit | Edited Player Name | Whether the player name was edited (1) or not (0). | PES: must be in range [0, 1] (full range) | 0 |
0x20:0 | 7 bits | GK Reach | PES: must be in range [40, 99] | 77 | |
0x20:7 | 6 bits | Age | PES: must be in range [15, 50] | 21 | |
0x21:5 | 4 bits | Registered Position | Possible values are:
|
PES: must be in range [0, 12] | 1 |
0x22:1 | 1 bit | Unknown A | Presumably unused/padding. | 0 | |
0x22:2 | 5 bits | Playing Styles |
|
PES: must be be in range [0, 21] | 0 |
0x22:7 | 5 bits | Motion: Free Kick | In-game value minus one | PES: must be in range [0, 15] (full range) | 0 |
0x23:4 | 3 bits | Star Rating | Probably reputation | PES: inaccessible feature | 7 |
0x23:7 | 1 bit | Edited Basic Settings | Whether one of the player's basic settings was edited (1) or not (0). | PES: must be in range [0, 1] (full range) | 0 |
0x24:0 | 7 bits | Defensive Awareness | PES: must be in range [40, 99] | 77 | |
0x24:7 | 7 bits | GK Clearing | PES: must be in range [40, 99] | 77 | |
0x25:6 | 7 bits | Heading | PES: must be in range [40, 99] | 77 | |
0x26:5 | 3 bits | Motion: Hunching (Dribbling) | In-game value minus one | PES: must be in range [0, 2] | 0 |
0x27:0 | 3 bits | Motion: Hunching (Running) | In-game value minus one | PES: must be in range [0, 2] | 0 |
0x27:3 | 3 bits | Motion: Penalty Kick | In-game value minus one | PES: must be in range [0, 3] (full range) | 0 |
0x27:6 | 2 bits | Weak Foot Accuracy | In-game value minus one | PES: must be in range [0, 3] (full range) | 1 |
0x28:0 | 7 bits | Dribbling | PES: must be in range [40, 99] | 77 | |
0x28:7 | 2 bits | Injury Resistance | In-game value minus one | PES: must be in range [0, 2] | 2 |
0x29:1 | 2 bits | Playing Attitude | PES: inaccessible feature | 0 | |
0x29:3 | 2 bits | Dribble Motion | PES: inaccessible feature | 0 | |
0x29:5 | 18 bits | Playable Position (Values 5-13) | An array of 9 2-bit entries with the following as values:
Each entry pertains to one position, in the following order:
|
PES: each entry must be in range [0, 2] | 0 |
0x2B:7 | 1 bit | Edited Registered Position | Whether one of the player's registered position was edited (1) or not (0). | PES: must be in range [0, 1] (full range) | 0 |
0x2C:0 | 6 bits | Playable Position (Values 1-3) | An array of 3 2-bit entries with the following as values:
Each entry pertains to one position, in the following order:
|
PES: each entry must be in range [0, 2] | 0 |
0x2C:6 | 7 bits | GK Reflexes | PES: must be in range [40, 99] | 77 | |
0x2D:5 | 7 bits | Kicking Power | PES: must be in range [40, 99] | 77 | |
0x2E:4 | 2 bits | Playable Position (Value 4) | A single 2-bit entry with the following as values:
This entry pertains to the remaining one position:
|
PES: must be in range [0, 2] | 0 |
0x2E:6 | 5 bits | Edited Settings | Whether one of the player's settings was edited (1) or not (0).
Bitmask with 5 entries:
|
PES: must be in range [0, 1] (full range) | 0 |
0x2F:3 | 1 bit | Unknown B | Seems to have value of 0 or 1, can't figure it out what it is. Maybe an edit flag? | 0 | |
0x2F:4 | 1 bit | Unknown C | Presumably unused/padding. | 0 | |
0x2F:5 | 1 bit | Stronger Foot | Possible values are:
|
PES: must be in range [0, 1] (full range) | 0 |
0x2F:6 | 1 bit | Stronger Hand | Possible values are:
|
PES: inaccessible feature | 0 |
0x2F:7 | 7 bits | COM Playing Style | Bitmask with 7 entries:
|
PES: at most 5 may be active at once | 0 |
0x30:6 | 41 bits | Player Skills | Bitmask with 41 entries:
|
PES: at most 10 may be active at once | 0 |
0x35:7 | 1 bit | Unknown D | Presumably unused/padding. | 0 | |
0x36:0 | 61 bytes | Player Name | Null-terminated string | PES: must not exceed 20 characters
Up to 60 characters are handled by the game |
PLACEHOLDER |
0x73:0 | 61 bytes | Print Name (Club) | Null-terminated string | PES: must not exceed 20 characters, uppercase letters only | PLACEHOLDER |
0xB0:0 | 64 bytes | Print Name (National Team) | Null-terminated string | PES: must not exceed 20 characters, uppercase letters only | PLACEHOLDER |
Note: default values are based on a newly created edited player.
Player appearance entry
Note: A player appearance entry always follows the player data entry. That's why the start and end of the entire datablock are the same as the player entry's.
Start: HEX block 7C
End: HEX block 8ED2FB
Entry Length: 72 (0x48) bytes
Team entry
Start: HEX block 8ED2FC
End: HEX block 958DA3
Entry Length: 588 (0x24C) bytes
Offset (byte:bit) | Length | Description | Format | Enforced limits | Default value |
---|---|---|---|---|---|
0x000:0 | 4 bytes | Team ID | PES: must be unique | ||
0x004:0 | 4 bytes | Manager ID | Assigned Manager ID | ||
0x008:0 | 2 bytes | Team Emblem |
|
0xFFFF | |
0x00A:0 | 2 bytes | Home Stadium | References a Stadium ID | PES: must be unique | |
0x00C:0 | 2 bytes | Stadium Image |
|
0xFFFF | |
0x00E:0 | 2 bytes | Team Nationality | References a Nation ID, 0x0401 = Others | 0xE700 (San Marino) | |
0x010:0 | 2 bytes | Team Callname | References a Commentary Callname ID | 0xFFFF | |
0x012:0 | 6 bits | Goal Net Colour 1 - Red | PES: Must be in range [0-63] | ||
0x012:6 | 6 bits | Goal Net Colour 1 - Green | PES: Must be in range [0-63] | ||
0x013:4 | 4 bits | Goal Netting Design | |||
0x14:0 | 6 bits | Goal Net Colour 2 - Red | PES: Must be in range [0-63] | ||
0x14:6 | 6 bits | Goal Net Colour 2 - Green | PES: Must be in range [0-63] | ||
0x15:4 | 6 bits | Goal Net Colour 2 - Blue | PES: Must be in range [0-63] | ||
0x016:2 | 6 bits | Team Color 1 Red | PES: Must be in range [0-63] | ||
0x017:0 | 6 bits | Team Color 1 Green | PES: Must be in range [0-63] | ||
0x017:6 | 1 bit | Edited Team Name/Abbreviation | Flag indicating if team name or abbreviation has been changed (1) or not (0). | PES: must be in range [0, 1] (full range) | |
0x017:7 | 1 bit | Edited Team Emblem | Flag indicating if team emblem has been changed (1) or not (0). | PES: must be in range [0, 1] (full range) | |
0x018:0 | 6 bits | Team Color 2 Green | PES: Must be in range [0-63] | ||
0x018:6 | 6 bits | Team Color 2 Blue | PES: Must be in range [0-63] | ||
0x019:4 | 6 bits | Media Backdrop Colour - Red | PES: Must be in range [0-63] | ||
0x1A:2 | 6 bits | Media Backdrop Colour - Green | PES: Must be in range [0-63] | ||
0x1B:0 | 6 bits | Media Backdrop Colour - Blue | PES: Must be in range [0-63] | ||
0x01B:6 | 1 bit | Edited Stadium Selection | Flag indicating if home stadium has been changed (1) or not (0). | PES: must be in range [0, 1] (full range) | |
0x01B:7 | 1 bit | Edited Stadium Name | Flag indicating if the home stadium name has been changed (1) or not (0). | PES: must be in range [0, 1] (full range) | |
0x1C:0 | 4 bits | Stadium Goal Style | |||
0x1C:4 | 4 bits | Stadium Turf Pattern | |||
0x1D:0 | 4 bits | Stadium Sideline Colour | |||
0x1D:4 | 4 bits | Stadium Seat Colour | |||
0x01E:0 | 6 bits | Team Color 1 Blue | PES: Must be in range [0-63] | ||
0x01E:6 | 6 bits | Team Color 2 Red | PES: Must be in range [0-63] | ||
0x01F:4 | 4 bits | Goal Net Design | |||
0x020:0 | 6 bits | Goal Net Colour 1 - Blue | PES: Must be in range [0-63] | ||
0x020:6 | 10 bits | Edited Team Settings | Whether one of the team's settings was edited (1) or not (0).
Bitmask with 10 entries, of which 2 are unknown:
|
PES: must be in range [0, 1] (full range) | 0 |
0x022:0 | 16 bytes | Unknown C | Presumably unused/padding. | ||
0x024:0 | 96 bytes | Official Partners (1-3) Image | An array of 3 4-byte entries with the following as value:
Each entry pertains to each three partner images, in the following order:
|
0xFFFFFFFF | |
0x030:0 | 320 bytes | Team Strip (1-10) | An array of 10 4-byte entries with the following as value:
Each entry pertains to a kit entry, in the following order:
|
||
0x058:0 | 4 bytes | Rival Team 1 | References a Team ID | 0xFFFF0300 | |
0x05C:0 | 4 bytes | Rival Team 2 | References a Team ID | 0xFFFF0300 | |
0x060:0 | 4 bytes | Rival Team 3 | References a Team ID | 0xFFFF0300 | |
0x064:0 | 1 byte | Banner 1 Edited Flag | Special case, 0x00 always | ||
0x065:0 | 1 byte | Banner 2 Edited Flag | 0x00 if not edited, 0x01 if edited | ||
0x066:0 | 1 byte | Banner 3 Edited Flag | 0x00 if not edited, 0x02 if edited | ||
0x067:0 | 1 byte | Banner 4 Edited Flag | 0x00 if not edited, 0x03 if edited | ||
0x068:0 | 70 bytes | Team Name | Null-terminated string | ||
0x0AE:0 | 4 bytes | Scoreboard name | Null-terminated string | PES: must not exceed 3 characters | |
0x0B2:0 | 181 bytes | Custom Stadium Name | Null-terminated string | PES: must not exceed 60 characters | |
0x167:0 | 16 bytes | Banner 1 Text | Null-terminated string | PES: must not exceed 15 characters | |
0x177:0 | 16 bytes | Banner 2 Text | Null-terminated string | PES: must not exceed 15 characters | |
0x187:0 | 16 bytes | Banner 3 Text | Null-terminated string | PES: must not exceed 15 characters | |
0x197:0 | 16 bytes | Banner 4 Text | Null-terminated string | PES: must not exceed 15 characters | |
0x1A7:0 | 165 bytes | Unknown D |
Manager entry
Start: HEX block 958DA4
End: HEX block 974C83
Entry Length: 88 (0x58) bytes
Offset (byte:bit) | Length | Description | Format | Enforced limits | Default value |
---|---|---|---|---|---|
0x00:0 | 4 bytes | Manager ID | PES: must be unique | ||
0x04:0 | 2 bytes | Manager Nationality | |||
0x06:0 | 2 bytes | Manager picture ID | 0xFFFF | ||
0x08:0 | 1 byte | Unknown A | 0x60 | ||
0x09:0 | 79 bytes | Manager Name |
Competitions
Start: HEX block 974C84
End: HEX block 980D7B
Entry Length: 760 (0x2F8) bytes
Offset (byte:bit) | Length | Description | Format | Enforced limits | Default value |
---|
Stadium Entry
Start: HEX block 980D7C
End: HEX block 983D37
Entry Length: 188 (0xBB) bytes
Offset (byte:bit) | Length | Description | Format | Enforced limits | Default value |
---|---|---|---|---|---|
0x00:0 | 4 bytes | Stadium ID | PES: must be unique | ||
0x04:0 | 184 bytes | Stadium Name | PES: must not exceed 60 characters |
Unknown section
This section is located between the Stadium name and Team Player tables, but has not been documented yet.
Start: HEX block 983D38
End: HEX block 9D4647
Entry Length: 132 (0x84) bytes
Team-Player Table
The Team-Player table is what links a Player ID to a Team ID. It is basically a Team ID, followed by a list of 40 Player IDs that correspond to the players in that team, then the respective shirt numbers for those players.
Start: HEX block 9D4648
End: HEX block A0864F
Entry Length: 284 (0x11C) bytes
Offset (byte:bit) | Length | Description | Format | Enforced limits | Default value |
---|---|---|---|---|---|
0x00:0 | 4 bytes | Team ID | PES: must be unique | ||
0x04:0 | 160 bytes | Player IDs / Index IDs | 40 x 4 bytes
This table also assigns (what I would like to call them anyways) Index IDs. |
0x00000000 (no player) | |
0xA4:0 | 80 bytes | Shirt Numbers | 40 x 2 bytes | PES: must be in range [0, 999] | |
0xF4:0 | 40 bytes | Unknown A |
Competition Entry
This section does not use separators nor do individual sections have a fixed length.
It is almost a continued list of Team IDs (length: 4 bytes) that will determine what team plays in what league. For example, the first 20 team IDs are teams that will play in the English League. Right after that you get 20 team IDs that will play in the English 2nd Division. Therefore this section will be slightly different from the other ones. 0xFFFF0300 is used to mark 'no team' in the list.
Start: HEX block A08650
End: HEX block A0987F
Entry Length: 4656 (0x1230) bytes (whole section)
Offset (byte:bit) | Length | Amount of teams | League/Cup |
---|
Team Game Plan
In addition to storing saved tactics in the Edit File, this exact same structure is present in PES memory for both teams during a match and pre-match (after team select) and contains the currently set tactics for each team.
Some values or settings may be marked "invalid in Edit Mode" or "pre-match only" to indicate that PES cannot be used to set them in the Edit File.
Start: HEX block A09880
End: HEX block A7C857
Entry Length: 628 (0x274) bytes
Offset (byte:bit) | Length | Description | Format | Enforced limits | Default value |
---|---|---|---|---|---|
0x000:0 | 4 bytes | Team ID |
|
||
0x004:0 | 520 bytes | Unknown A | |||
0x20C:0 | 1 byte | Long FK Taker | Index ID of a player to take the long free kick. | ||
0x20C:0 | 1 byte | Long FK Taker | Index ID of a player to take the long free kick. | ||
0x20E:0 | 1 byte | FK Taker 2 | Index ID of a second player to take the short free kick. | ||
0x20F:0 | 1 byte | Left CK Taker | Index ID of a player to take the corner kick on the left side of the pitch. | ||
0x210:0 | 1 byte | Right CK Taker | Index ID of a player to take the corner kick on the right side of the pitch. | ||
0x211:0 | 1 byte | PK Taker | Index ID of a player to take the penalty kick in regulation and extra time. | ||
0x212:0 | 3 byte | Players To Join The Attack | 3 x 1 byte
Index ID of the players to join the attack. |
||
0x215:0 | 1 byte | Captain | Index ID of the player to be the Captain. |
Limitations enforced by PES
Even though editing the save files externally technically allows using the full range of all values, PES puts some additional limitations in place. Some of these might be checked and corrected by the game, others are just taken as they are. This might lead to unexpected behaviour or even crash the game. Be sure to check Appendix:Rules or the rules of the invitational in question to find out what is considered legal.