Difference between revisions of "Pro Evolution Soccer 2016/Edit file"
ShiggyGiddy (talk | contribs) m (→Player entry: Added letters to unknown bits) |
ShiggyGiddy (talk | contribs) (→Player entry: Added most in-game default values (needs verification with save file), changed "Motion: Form" to "Form") |
||
Line 47: | Line 47: | ||
! Format | ! Format | ||
! Enforced limits | ! Enforced limits | ||
! Default value | |||
|- | |- | ||
| 0x00:0 | | 0x00:0 | ||
| 4 bytes | | 4 bytes | ||
| Player ID | | Player ID | ||
| | |||
| | | | ||
| | | | ||
Line 59: | Line 61: | ||
| References a player ID | | References a player ID | ||
| | | | ||
| ''None'' '''''(NEEDS VERIFICATION)''''' | |||
|- | |- | ||
| 0x08:0 | | 0x08:0 | ||
Line 64: | Line 67: | ||
| ''Unknown A'' | | ''Unknown A'' | ||
| Always 0xFFFF | | Always 0xFFFF | ||
| | |||
| | | | ||
|- | |- | ||
| 0x0A:0 | | 0x0A:0 | ||
| 2 bytes | | 2 bytes | ||
| | | Nationality/Region | ||
| | | | ||
| | | | ||
| ''Others'' '''''(NEEDS VERIFICATION)''''' | |||
|- | |- | ||
| 0x0C:0 | | 0x0C:0 | ||
Line 77: | Line 82: | ||
| | | | ||
| PES: must be in range [155, 210] | | PES: must be in range [155, 210] | ||
| 180 | |||
|- | |- | ||
| 0x0D:0 | | 0x0D:0 | ||
Line 83: | Line 89: | ||
| | | | ||
| PES: must be in range [max(30, ''Height'' - 129), ''Height'' - 81] | | PES: must be in range [max(30, ''Height'' - 129), ''Height'' - 81] | ||
| 75 | |||
|- | |- | ||
| 0x0E:0 | | 0x0E:0 | ||
Line 89: | Line 96: | ||
| 0 = OFF | | 0 = OFF | ||
| PES: must be in range [0, 122] | | PES: must be in range [0, 122] | ||
| 0 | |||
|- | |- | ||
| 0x0F:0 | | 0x0F:0 | ||
Line 95: | Line 103: | ||
| 0 = OFF | | 0 = OFF | ||
| PES: must be in range [0, 122] | | PES: must be in range [0, 122] | ||
| 0 | |||
|- | |- | ||
| 0x10:0 | | 0x10:0 | ||
Line 101: | Line 110: | ||
| | | | ||
| PES: must be in range [40, 99] | | PES: must be in range [40, 99] | ||
| 80 | |||
|- | |- | ||
| 0x10:7 | | 0x10:7 | ||
Line 107: | Line 117: | ||
| | | | ||
| PES: must be in range [40, 99] | | PES: must be in range [40, 99] | ||
| 80 | |||
|- | |- | ||
| 0x11:6 | | 0x11:6 | ||
Line 113: | Line 124: | ||
| | | | ||
| PES: must be in range [40, 99] | | PES: must be in range [40, 99] | ||
| 80 | |||
|- | |- | ||
| 0x12:5 | | 0x12:5 | ||
Line 119: | Line 131: | ||
| | | | ||
| PES: must be in range [40, 99] | | PES: must be in range [40, 99] | ||
| 80 | |||
|- | |- | ||
| 0x13:4 | | 0x13:4 | ||
Line 125: | Line 138: | ||
| Value minus one | | Value minus one | ||
| PES: must be in range [0, 15] (full range) | | PES: must be in range [0, 15] (full range) | ||
| 0 | |||
|- | |- | ||
| 0x14:0 | | 0x14:0 | ||
Line 131: | Line 145: | ||
| | | | ||
| PES: must be in range [40, 99] | | PES: must be in range [40, 99] | ||
| 80 | |||
|- | |- | ||
| 0x14:7 | | 0x14:7 | ||
Line 137: | Line 152: | ||
| | | | ||
| PES: must be in range [40, 99] | | PES: must be in range [40, 99] | ||
| 80 | |||
|- | |- | ||
| 0x15:6 | | 0x15:6 | ||
Line 143: | Line 159: | ||
| | | | ||
| PES: must be in range [40, 99] | | PES: must be in range [40, 99] | ||
| 80 | |||
|- | |- | ||
| 0x16:5 | | 0x16:5 | ||
Line 149: | Line 166: | ||
| | | | ||
| PES: must be in range [40, 99] | | PES: must be in range [40, 99] | ||
| 80 | |||
|- | |- | ||
| 0x17:4 | | 0x17:4 | ||
| 3 bits | | 3 bits | ||
| | | Form | ||
| Value minus one | | Value minus one | ||
| PES: must be in range [0, 7] (full range) | | PES: must be in range [0, 7] (full range) | ||
| 3 | |||
|- | |- | ||
| 0x17:7 | | 0x17:7 | ||
| 1 bit | | 1 bit | ||
| ''Unknown B'' | | ''Unknown B'' | ||
| | |||
| | | | ||
| | | | ||
Line 167: | Line 187: | ||
| | | | ||
| PES: must be in range [40, 99] | | PES: must be in range [40, 99] | ||
| 80 | |||
|- | |- | ||
| 0x18:7 | | 0x18:7 | ||
Line 173: | Line 194: | ||
| | | | ||
| PES: must be in range [40, 99] | | PES: must be in range [40, 99] | ||
| 80 | |||
|- | |- | ||
| 0x19:6 | | 0x19:6 | ||
Line 179: | Line 201: | ||
| | | | ||
| PES: must be in range [40, 99] | | PES: must be in range [40, 99] | ||
| 80 | |||
|- | |- | ||
| 0x1A:5 | | 0x1A:5 | ||
Line 185: | Line 208: | ||
| | | | ||
| PES: must be in range [40, 99] | | PES: must be in range [40, 99] | ||
| 80 | |||
|- | |- | ||
| 0x1B:4 | | 0x1B:4 | ||
Line 191: | Line 215: | ||
| Value minus one | | Value minus one | ||
| PES: must be in range [0, 2] | | PES: must be in range [0, 2] | ||
| 1 | |||
|- | |- | ||
| 0x1B:6 | | 0x1B:6 | ||
Line 203: | Line 228: | ||
| | | | ||
| PES: must be in range [40, 99] | | PES: must be in range [40, 99] | ||
| 80 | |||
|- | |- | ||
| 0x1C:7 | | 0x1C:7 | ||
Line 209: | Line 235: | ||
| | | | ||
| PES: must be in range [40, 99] | | PES: must be in range [40, 99] | ||
| 80 | |||
|- | |- | ||
| 0x1D:6 | | 0x1D:6 | ||
Line 215: | Line 242: | ||
| | | | ||
| PES: must be in range [40, 99] | | PES: must be in range [40, 99] | ||
| 80 | |||
|- | |- | ||
| 0x1E:5 | | 0x1E:5 | ||
Line 221: | Line 249: | ||
| | | | ||
| PES: must be in range [40, 99] | | PES: must be in range [40, 99] | ||
| 80 | |||
|- | |- | ||
| 0x1F:4 | | 0x1F:4 | ||
Line 227: | Line 256: | ||
| Value minus one | | Value minus one | ||
| PES: must be in range [0, 7] (full range) | | PES: must be in range [0, 7] (full range) | ||
| 0 | |||
|- | |- | ||
| 0x1F:7 | | 0x1F:7 | ||
| 1 bit | | 1 bit | ||
| ''Unknown D'' | | ''Unknown D'' | ||
| Seems to be based on ''Registered Positon'' | | Seems to be based on ''Registered Positon'' '''''(NEEDS VERIFICATION)''''': | ||
* 0 - Registered position is CB | * 0 - Registered position is CB | ||
* 1 - Registered position is not CB | * 1 - Registered position is not CB | ||
| | |||
| | | | ||
|- | |- | ||
Line 239: | Line 270: | ||
| 4 bits | | 4 bits | ||
| Registered Position | | Registered Position | ||
| Possible values are | | Possible values are '''''(NEEDS VERIFICATION)''''': | ||
* 12 - Centre Forward, | * 12 - Centre Forward, | ||
* 11 - Second Striker, | * 11 - Second Striker, | ||
Line 254: | Line 285: | ||
* 0 - Goalkeeper | * 0 - Goalkeeper | ||
| PES: must be in range [0, 12] | | PES: must be in range [0, 12] | ||
| 12 | |||
|- | |- | ||
| 0x20:4 | | 0x20:4 | ||
| 1 bits | | 1 bits | ||
| ''Unknown E'' | | ''Unknown E'' | ||
| | |||
| | | | ||
| | | | ||
Line 264: | Line 297: | ||
| 5 bits | | 5 bits | ||
| Playing Styles | | Playing Styles | ||
| Possible values are | | Possible values are '''''(NEEDS VERIFICATION)''''': | ||
* (None) | * (None) | ||
* Goal Poacher | * Goal Poacher | ||
Line 283: | Line 316: | ||
* Offensive Goalkeeper | * Offensive Goalkeeper | ||
* Defensive Goalkeeper | * Defensive Goalkeeper | ||
| PES: must be be in range [0, 17]<br/>('''''NEEDS VERIFICATION''''' | | PES: must be be in range [0, 17]<br/>'''''(NEEDS VERIFICATION)''''' | ||
| ''None'' '''''(NEEDS VERIFICATION)''''' | |||
|- | |- | ||
| 0x21:2 | | 0x21:2 | ||
Line 290: | Line 324: | ||
| | | | ||
| PES: must be in range [40, 99] | | PES: must be in range [40, 99] | ||
| 80 | |||
|- | |- | ||
| 0x22:1 | | 0x22:1 | ||
Line 296: | Line 331: | ||
| | | | ||
| PES: must be in range [40, 99] | | PES: must be in range [40, 99] | ||
| 80 | |||
|- | |- | ||
| 0x23:0 | | 0x23:0 | ||
Line 302: | Line 338: | ||
| | | | ||
| PES: must be in range [40, 99] | | PES: must be in range [40, 99] | ||
| 80 | |||
|- | |- | ||
| 0x23:7 | | 0x23:7 | ||
Line 314: | Line 351: | ||
| Value minus one | | Value minus one | ||
| PES: must be in range [0, 7] (full range) | | PES: must be in range [0, 7] (full range) | ||
| 0 | |||
|- | |- | ||
| 0x24:3 | | 0x24:3 | ||
Line 320: | Line 358: | ||
| Value minus one | | Value minus one | ||
| PES: must be in range [0, 5] | | PES: must be in range [0, 5] | ||
| 0 | |||
|- | |- | ||
| 0x24:6 | | 0x24:6 | ||
Line 326: | Line 365: | ||
| Value minus one | | Value minus one | ||
| PES: must be in range [0, 3] (full range) | | PES: must be in range [0, 3] (full range) | ||
| 1 | |||
|- | |- | ||
| 0x25:0 | | 0x25:0 | ||
Line 332: | Line 372: | ||
| Value minus one | | Value minus one | ||
| PES: must be in range [0, 3] | | PES: must be in range [0, 3] | ||
| 1 | |||
|- | |- | ||
| 0x25:2 | | 0x25:2 | ||
Line 340: | Line 381: | ||
*1 - B | *1 - B | ||
*2 - A | *2 - A | ||
Each entry pertains to one position, in the following order | Each entry pertains to one position, in the following order '''''(NEEDS VERIFICATION)''''': | ||
* Bits 0-1: Centre Forward, | * Bits 0-1: Centre Forward, | ||
* Bits 2-3: Second Striker, | * Bits 2-3: Second Striker, | ||
Line 355: | Line 396: | ||
* Bits 24-25: Goalkeeper | * Bits 24-25: Goalkeeper | ||
| PES: each entry must be in range [0, 2] | | PES: each entry must be in range [0, 2] | ||
| 0 | |||
|- | |- | ||
| 0x28:4 | | 0x28:4 | ||
Line 361: | Line 403: | ||
| Value minus one | | Value minus one | ||
| PES: must be in range [0, 2] | | PES: must be in range [0, 2] | ||
| 0 | |||
|- | |- | ||
| 0x28:6 | | 0x28:6 | ||
Line 367: | Line 410: | ||
| Value minus one | | Value minus one | ||
| PES: must be in range [0, 2] | | PES: must be in range [0, 2] | ||
| 0 | |||
|- | |- | ||
| 0x29:0 | | 0x29:0 | ||
Line 373: | Line 417: | ||
| Value minus one | | Value minus one | ||
| PES: must be in range [0, 3] (full range) | | PES: must be in range [0, 3] (full range) | ||
| 0 | |||
|- | |- | ||
| 0x29:2 | | 0x29:2 | ||
Line 379: | Line 424: | ||
| | | | ||
| PES: must be in range [40, 99] | | PES: must be in range [40, 99] | ||
| 80 | |||
|- | |- | ||
| 0x2A:1 | | 0x2A:1 | ||
Line 385: | Line 431: | ||
| | | | ||
| PES: must be in range [40, 99] | | PES: must be in range [40, 99] | ||
| 80 | |||
|- | |- | ||
| 0x2B:0 | | 0x2B:0 | ||
Line 391: | Line 438: | ||
| | | | ||
| PES: must be in range [15, 50] | | PES: must be in range [15, 50] | ||
| 17 | |||
|- | |- | ||
| 0x2B:6 | | 0x2B:6 | ||
Line 403: | Line 451: | ||
| | | | ||
| PES: must be in range [40, 99] | | PES: must be in range [40, 99] | ||
| 80 | |||
|- | |- | ||
| 0x2C:7 | | 0x2C:7 | ||
| 1 bit | | 1 bit | ||
| ''Unknown H'' | | ''Unknown H'' | ||
| | |||
| | | | ||
| | | | ||
Line 413: | Line 463: | ||
| 4 bits | | 4 bits | ||
| ''Unknown I'' | | ''Unknown I'' | ||
| | |||
| | | | ||
| | | | ||
Line 423: | Line 474: | ||
* 1 - Left foot | * 1 - Left foot | ||
| | | | ||
| 0 | |||
|- | |- | ||
| 0x2D:5 | | 0x2D:5 | ||
Line 436: | Line 488: | ||
*Bit 6 - Long Ranger | *Bit 6 - Long Ranger | ||
| PES: at most 5 may be active at once | | PES: at most 5 may be active at once | ||
| 0 | |||
|- | |- | ||
| 0x2E:4 | | 0x2E:4 | ||
Line 470: | Line 523: | ||
*Bit 27 - Fighting Spirit | *Bit 27 - Fighting Spirit | ||
| PES: at most 10 may be active at once | | PES: at most 10 may be active at once | ||
| 0 | |||
|- | |- | ||
| 0x32:0 | | 0x32:0 | ||
Line 475: | Line 529: | ||
| Player Name | | Player Name | ||
| Null-terminated string | | Null-terminated string | ||
| | | PES: must not exceed 15 characters<br/> | ||
PES: must not exceed 15 characters<br/> | |||
Up to 45 characters are handled by the game | Up to 45 characters are handled by the game | ||
| ''Must not be empty'' | |||
|- | |- | ||
| 0x60:0 | | 0x60:0 | ||
Line 484: | Line 538: | ||
| Null-terminated string | | Null-terminated string | ||
| PES: must not exceed 15 characters, uppercase letters only | | PES: must not exceed 15 characters, uppercase letters only | ||
| ''Empty string'' '''''(NEEDS VERIFICATION)''''' | |||
|} | |} | ||
Revision as of 13:35, 22 December 2015
Pro Evolution Soccer 2016 | |
---|---|
Game | |
Rules | |
Info | |
Tools | |
Modding |
The save game is called EDIT00000000 and can be found in %HOMEPATH%\documents\KONAMI\Pro Evolution Soccer 2016\save.
It is encrypted and thus, cannot be simply edited directly. Also, when moving from PES15 to PES16, Konami changed both the file names and the ecryption used for save games.
Tools
pes16decrypter
The first decrypter, called pes16decrypter, is a command-line tool and was written by members of the 4chan Cup community. It is available on GitHub. A binary download can also be found there.
The 4CCC maintains its own fork here. Be sure to check both as occasionally one might be ahead of the other.
Hex editors
After decrypting the save file, you may use a hex editor to change a few values yourself. Please keep in mind however that it is very easy to break the save game, so be careful. This is a good and simple way to change player names, for example.
Save game editors
Since the save was not decrypted until recently, there are currently no save game editors. This is expected to change in the near future once the PES modding community catches up with recent developments.
Notes
Structure of EDIT00000000
Note: The beginning of the file is considered what pes16decrypter exports as data.dat.
- Header
- Player entries
- unkown
- Team entries
- unknown
Header
Length: 76 bytes
- 52 bytes - unknown
- 2 bytes - Number of players
- 22 bytes - unknown
Player entry
Length: 112 bytes
Offset (byte:bit) | Length | Description | Format | Enforced limits | Default value |
---|---|---|---|---|---|
0x00:0 | 4 bytes | Player ID | |||
0x04:0 | 4 bytes | Commentary Name | References a player ID | None (NEEDS VERIFICATION) | |
0x08:0 | 2 bytes | Unknown A | Always 0xFFFF | ||
0x0A:0 | 2 bytes | Nationality/Region | Others (NEEDS VERIFICATION) | ||
0x0C:0 | 8 bits | Height (cm) | PES: must be in range [155, 210] | 180 | |
0x0D:0 | 8 bits | Weight (kg) | PES: must be in range [max(30, Height - 129), Height - 81] | 75 | |
0x0E:0 | 8 bits | Motion: Goal Celebration 1 | 0 = OFF | PES: must be in range [0, 122] | 0 |
0x0F:0 | 8 bits | Motion: Goal Celebration 2 | 0 = OFF | PES: must be in range [0, 122] | 0 |
0x10:0 | 7 bits | Attacking Prowess | PES: must be in range [40, 99] | 80 | |
0x10:7 | 7 bits | Defensive Prowess | PES: must be in range [40, 99] | 80 | |
0x11:6 | 7 bits | Goalkeeping | PES: must be in range [40, 99] | 80 | |
0x12:5 | 7 bits | Dribbling | PES: must be in range [40, 99] | 80 | |
0x13:4 | 4 bits | Motion: Free Kick | Value minus one | PES: must be in range [0, 15] (full range) | 0 |
0x14:0 | 7 bits | Finishing | PES: must be in range [40, 99] | 80 | |
0x14:7 | 7 bits | Low Pass | PES: must be in range [40, 99] | 80 | |
0x15:6 | 7 bits | Lofted Pass | PES: must be in range [40, 99] | 80 | |
0x16:5 | 7 bits | Header | PES: must be in range [40, 99] | 80 | |
0x17:4 | 3 bits | Form | Value minus one | PES: must be in range [0, 7] (full range) | 3 |
0x17:7 | 1 bit | Unknown B | |||
0x18:0 | 7 bits | Swerve | PES: must be in range [40, 99] | 80 | |
0x18:7 | 7 bits | Catching | PES: must be in range [40, 99] | 80 | |
0x19:6 | 7 bits | Clearing | PES: must be in range [40, 99] | 80 | |
0x1A:5 | 7 bits | Reflexes | PES: must be in range [40, 99] | 80 | |
0x1B:4 | 2 bits | Injury Resistance | Value minus one | PES: must be in range [0, 2] | 1 |
0x1B:6 | 2 bits | Unknown C | |||
0x1C:0 | 7 bits | Body Balance | PES: must be in range [40, 99] | 80 | |
0x1C:7 | 7 bits | Kicking Power | PES: must be in range [40, 99] | 80 | |
0x1D:6 | 7 bits | Explosive Power | PES: must be in range [40, 99] | 80 | |
0x1E:5 | 7 bits | Jump | PES: must be in range [40, 99] | 80 | |
0x1F:4 | 3 bits | Motion: Arm Movement (dribbling) | Value minus one | PES: must be in range [0, 7] (full range) | 0 |
0x1F:7 | 1 bit | Unknown D | Seems to be based on Registered Positon (NEEDS VERIFICATION):
|
||
0x20:0 | 4 bits | Registered Position | Possible values are (NEEDS VERIFICATION):
|
PES: must be in range [0, 12] | 12 |
0x20:4 | 1 bits | Unknown E | |||
0x20:5 | 5 bits | Playing Styles | Possible values are (NEEDS VERIFICATION):
|
PES: must be be in range [0, 17] (NEEDS VERIFICATION) |
None (NEEDS VERIFICATION) |
0x21:2 | 7 bits | Ball Control | PES: must be in range [40, 99] | 80 | |
0x22:1 | 7 bits | Ball Winning | PES: must be in range [40, 99] | 80 | |
0x23:0 | 7 bits | Coverage | PES: must be in range [40, 99] | 80 | |
0x23:7 | 1 bit | Unknown F | |||
0x24:0 | 3 bits | Motion: Arm Movement (running) | Value minus one | PES: must be in range [0, 7] (full range) | 0 |
0x24:3 | 3 bits | Motion: Corner Kick | Value minus one | PES: must be in range [0, 5] | 0 |
0x24:6 | 2 bits | Weak Foot Accuracy | Value minus one | PES: must be in range [0, 3] (full range) | 1 |
0x25:0 | 2 bits | Weak Foot Usage | Value minus one | PES: must be in range [0, 3] | 1 |
0x25:2 | 26 bits | Playable Position | An array of 13 2-bit entries with:
Each entry pertains to one position, in the following order (NEEDS VERIFICATION):
|
PES: each entry must be in range [0, 2] | 0 |
0x28:4 | 2 bits | Motion: Hunching (dribbling) | Value minus one | PES: must be in range [0, 2] | 0 |
0x28:6 | 2 bits | Motion: Hunching (running) | Value minus one | PES: must be in range [0, 2] | 0 |
0x29:0 | 2 bits | Motion: Penalty Kick | Value minus one | PES: must be in range [0, 3] (full range) | 0 |
0x29:2 | 7 bits | Place Kicking | PES: must be in range [40, 99] | 80 | |
0x2A:1 | 7 bits | Speed | PES: must be in range [40, 99] | 80 | |
0x2B:0 | 6 bits | Age | PES: must be in range [15, 50] | 17 | |
0x2B:6 | 2 bits | Unknown G | |||
0x2C:0 | 7 bits | Stamina | PES: must be in range [40, 99] | 80 | |
0x2C:7 | 1 bit | Unknown H | |||
0x2D:0 | 4 bits | Unknown I | |||
0x2D:4 | 1 bits | Stronger Foot | Possible values are:
|
0 | |
0x2D:5 | 7 bits | COM Playing Style | Bitmask with 7 entries:
|
PES: at most 5 may be active at once | 0 |
0x2E:4 | 28 bits | Player Skills | Bitmask with 28 entries:
|
PES: at most 10 may be active at once | 0 |
0x32:0 | 46 bytes | Player Name | Null-terminated string | PES: must not exceed 15 characters Up to 45 characters are handled by the game |
Must not be empty |
0x60:0 | 16 bytes | Print Name | Null-terminated string | PES: must not exceed 15 characters, uppercase letters only | Empty string (NEEDS VERIFICATION) |
Note: some settings also change other values within the player entry, e.g. if Registered Position is set to CB it also changes the byte left of it (in one example from 0x89 to 0x09). It is assumed that this behavior occurs for whatever values PES considers to be default.
Team entry
Length: 456
- 4 bytes - Team ID
- 60 bytes - unknown
- 4 bytes - Rival Team 1 (Team ID)
- 4 bytes - Rival Team 2 (Team ID)
- 4 bytes - Rival Team 3 (Team ID)
- 72 bytes - unknown
- 70 bytes - Team Name (last byte should probably be 00) (length is assumed, not proven)
- 189 bytes - Team Score Board Name (last byte should probably be 00) (length is assumed, not proven)
- 0 bytes - probably something else within Team Score Board Name
- 49 bytes - Manager Name (last byte should probably be 00) (length is assumed, not proven)
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 behavior 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.