The logo competition for the 2025 4chan Winter Cup is now taking submissions. | ||
The deadline is January 6th, 23:59 UTC. Logos will be placed in this gallery to facilitate discussion. This will be followed by a polling period to determine which logo will be used. Please send all submissions to Potatotron. You must supply a high-res PNG file (5000x5000 limit) and the original multi-layer source file. | ||
Cloverleaf logo: .png .svg |
|
Cloverball logo: .ai .png .svg |
Difference between revisions of "Talk:Pro Evolution Soccer 2016/Edit file"
Line 197: | Line 197: | ||
Ah that makes perfect sense, thanks! I'll update the table - [[User:NBD|NBD]] ([[User talk:NBD|talk]]) 23:54, 28 December 2015 (UTC) | Ah that makes perfect sense, thanks! I'll update the table - [[User:NBD|NBD]] ([[User talk:NBD|talk]]) 23:54, 28 December 2015 (UTC) | ||
==Team Tactics== | |||
In the original option file, it starts at offset 0x530272. | |||
It is compound by 850 entries. Each entry is 520 (0x208) bytes long. | |||
Please note that there is no player id in this entry. The data references the player index inside the team roster. | |||
Example: | |||
The Barcelona teams roster: C. Bravo, G. Piqué, M. Bartra, D. Alves, J. Alba, J. Mascherano, J. Rakitic, S. Busquets, Sandro, Neymar, and so on. | |||
The first player has index 0. | |||
The captain is 7. It means: the 8th player in the team roster is the captain. So, S. Busquets is the captain. | |||
0x000 4 bytes - team id - the value 0x03FFFF is used when it is an empty entry | |||
0x004 offensive tactics | |||
each tactics contains 11 3-bytes entries: player position, x-coordinate, y-coordinate | |||
the first 3-bytes are about the player that is referenced in offset 0x178 (see below), the second 3-bytes are about the player that is referenced in offset 0x179 (see below) and so on until the 11th player | |||
(sorry is a little confusing) | |||
0x025 defensive tactics - same structure as offensive tactics | |||
0x046 custom tactics - same structure as offensive tactics | |||
0x067 23 bytes - unknown data | |||
0x07E same structure from 0x04 to 0x7D - seems it is not used in the game | |||
0x0F8 same structure from 0x04 to 0x7D - seems it is not used in the game | |||
0x172 6 bytes - unknown | |||
0x178 128 bytes - 32 player references, 4 bytes each - the value 0xFF is used for emptiness | |||
0x1F8 1 byte - long fk taker | |||
0x1F9 1 byte - short fk taker 1 | |||
0x1FA 1 byte - short fk taker 2 | |||
0x1FB 1 byte - left ck taker | |||
0x1FC 1 byte - right ck taker | |||
0x1FD 1 byte - pk taker | |||
0x1FE 1 byte - captain | |||
0x1FF 1 byte - join attack 1 - 0xFF means empty | |||
0x200 1 byte - join attack 2 - 0xFF means empty | |||
0x201 1 byte - join attack 3 - 0xFF means empty | |||
0x202 zeros | |||
TODO: the order needs confirmation (offensive, defensive, custom) | |||
[[User:Heringer|Heringer]] ([[User talk:Heringer|talk]]) 19:31, 29 December 2015 (UTC) |
Revision as of 19:31, 29 December 2015
Here is some contribution:
Structure of EDIT00000000
- Header - The header may vary in length. There are some patches where the logo inside this file is changed, so the header length changes.
- Player entries start at offset 0x10AAA. There are 25000 entries.
Each entry has 112 bytes (0x70). - Player extra info (appearance mainly) entries start at offset 0x2BC42A. There are 25000 entries.
Each entry has 72 bytes (0x48). - Team entries start at offset 0x473B6A. There are 850 entries.
Each entry has 456 bytes (0x1C8). - Championships entries start at 0x4D257A. There are 100 entries. Each entry has 92 bytes (0x5C). Contains name and ball id.
- Stadium entries start at 0x4D496A. There are 100 entries. Each entry has 128 bytes (0x80).
- To be confirmed: Uniform entries start at 0x4D7B6A. There are 2500 entries. Each entry has 88 bytes (0x58).
- Teams roster entries start at 0x50D6CA. There are 850 entries. Each entry has 164 bytes (0xA4).
- Leagues roster entries start at 0x52F752. There are 712 entries, each entry has 4 bytes and is a team id. The league slots are fixed. It is a mess. I will post about it later.
- To be confirmed: Teams tactics entries start at 0x530272. There are 850 entries. Each entry has 520 bytes (0x208).
- To be confirmed: From 0x59C102 to the end there is nothing.
User:Heringer 08:17, 23 December 2015
I confirmed via unit testing that the position enumeration is correct and all players has values from 0 to 12. Though, the rule about the player offset 0x1F:7 does not seem to be correct.
User:Heringer 14:57, 23 December 2015
Thank you! I will look into it and start adding things once Christmas is over. I am a bit surprised that the position enumeration is correct, because when I looked at it from in-game memory all left and right positions were swapped. Then again, I never confirmed through the save file. --ShiggyGiddy (talk) 08:42, 24 December 2015 (UTC)
Oh, man, you are rigth about the swapped positions. I did not notice it before, sorry. Just swap them and everything will be right. I used my enumeration from PES2015. I thought it was equal to your values, but there is really this difference (L/R swapped).
User:Heringer 14:39, 24 December 2015
On PES2015, the bit you called "Unknown B (0x17:7)" was a flag to indicate if the player was edited or not.
User:Heringer 15:24, 24 December 2015
The playable position seems to be:
Bits 0-1: Centre Forward, Bits 2-3: Second Striker, Bits 4-5: Left Wing Forward, Bits 6-7: Right Wing Forward, Bits 8-9: Attacking Midfielder, Bits 10-11: Defensive Midfielder, Bits 12-13: Centre Midfielder, Bits 14-15: Left Midfielder, Bits 16-17: Right Midfielder, Bits 18-19: Right Back, Bits 20-21: Left Back, Bits 22-23: Centre Back, Bits 24-25: Goalkeeper
Everything else in player entry seems to be ok as you defined.
In the team entry, i can tell you:
const uint OFFSET_COACH_NATION = 0xC; const uint LENGTH_COACH_NATION = 0x2; const uint OFFSET_TEAM_NATION = 0x8; const uint LENGTH_TEAM_NATION = 0x2;
Some stuff from Tony
Player appearance data
- 0x04-0x06 Boots
- When the decimal boot ID is converted to binary/bits, you will get 4 parts. The bits used for the boot ID are the letters in the binary string below:
- dddd 0000 bbbb cccc 0000 00aa
- An example boot ID is 7011, in big-endian hex: 13 C5 and in binary: 0001 0011 1100 0101. The boot ID limits make sure that the last the 2 bits (first 2 on the left) are always 00, thus you actually get the following:
- 01 0011 1100 0101
- Now the first 2 bits on the left are aa in the string with letters. The next 4 are bbbb, then cccc and last dddd. So the final string becomes: 0101 0000 0011 1100 0000 0001
- If you have lower boot ID, for example 234, it's EA in hex. But fill up from the left with 0 until you have 4 character byte string, so 00EA.
- 0x06-0x07 GK Gloves
- The decimal boot ID is converted to little-endian hex and everything is bitshifted 2 bits to the left.
- So for example decimal ID 801 is 21 03 in LE hex and in binary: 0010 0001 0000 0011, and then bitshifted: 1000 01xx 0000 1100
- The x bits are used for the boot ID
- 0x14 Spectacles
- 6-7 sleeve season style
- 3-5 style of glasses (000 = none)
- 0-2 glasses frame color
- 0x2D Skin (and other things)
- 3-4 cheek data
- 0-2 skin ID (full range, where 0 and 7 are transparent skin textures (in the Gamma DLC) and thus allow custom skin texture)
Player Appearance Entry
I am not sure if it will help, because probably you already have something similar and some stuff has changed... But here is my player appearance entry "map" from last version (PES 2015) regarding the present "unknown" offsets in the article. The known offset in the article are almost the samething in both versions (2015, 2016).
Please note that the bits are indexed from 1 to 8 instead of 0 to 7.
16 [5-8] face/facialbuild/jawwidth 17 [1-4] face/facialbuild/jawheight 17 [5-8] face/facialbuild/jawdepth 18 [1-4] face/facialbuild/checkbonewidth 18 [5-8] face/facialbuild/checkboneheight 19 [1-4] face/facialbuild/checkbonedepth 19 [5-8] ? 1A [1-4] ? 1A [5-8] face/eyebrowshape/glabellawidth 1B [1-4] face/eyebrowshape/angleinner 1B [5-8] face/eyebrowshape/glabellaheight 1C [1-4] face/eyebrowshape/eyebrowlength 1C [5-8] face/eyebrowshape/angleouter 1D [1-4] face/eyebrowshape/eyebrowdepth 1D [5-8] face/eyeshape/pupilsize 1E [1-4] face/eyeshape/eyedepth 1E [5-8] face/eyeshape/innereyepos 1F [1-4] face/eyeshape/innereyecornerht 1F [5-8] face/eyeshape/outereyepos 20 [1-4] face/eyeshape/eyecornerht 20 [5-8] face/eyeshape/uppereyelidposinner 21 [1-4] face/eyeshape/uppereyelidhtinner 21 [5-8] face/eyeshape/uppereyelidposouter 22 [1-4] face/eyeshape/uppereyelidhtouter 22 [5-8] face/eyeshape/bottomeyelidpos 23 [1-4] face/eyeshape/bottomeyelidht 23 [5-8] face/eyeshape/horizontaleyepos 24 [1-4] face/eyeshape/eyeheight 24 [5-8] face/noseshape/height 25 [1-4] face/noseshape/lenght 25 [5-8] face/noseshape/size 26 [1-4] face/noseshape/nasalbridgeposition 26 [5-8] face/noseshape/bridge 27 [1-4] face/noseshape/width 27 [5-8] face/noseshape/nasalrootheight 28 [1-4] face/mouthshape/attribute3 28 [5-8] face/mouthshape/attribute5 29 [1-4] face/mouthshape/attribute6 29 [5-8] ? 2A [1-4] face/mouthshape/attribute7 2A [5-8] face/mouthshape/shape 2B [1-4] face/mouthshape/attribute8 2B [5-8] face/facialbuild/chinwidth 2C [1-4] face/facialbuild/chinheight 2C [5-8] face/facialbuild/chindepth 2D [1-3] face/skincolor 2D [4-8] face/skin/type 2E [1-3] face/skin/forehead 2E [4-8] face/facialhair/type 2F [1-3] face/skin/wrinkles 2F [4-8] face/eyeshape/uppereyelidtype 30 [1-4] face/eyeshape/bottomeyelidtype 30 [5-8] face/ear/lenght 31 [1-4] face/ear/width 31 [5-8] face/ear/angle 32 [1-5] face/eyebrowshape/eyebrowstyle 32 [6-8] face/facialbuild/necklinetype 33 [1-4] head/facesize/facesize 33 [5-8] head/facesize/faceposition 34 [1-6] face/noseshape/type, angle: type = 1 + valor / 3; dif = valor - type; angle = 0, se dif = 0; -1, se dif = 1; +1, se dif = 2 34 [7-8] ? 35 [1-3] face/mouthshape/type1 35 [4-6] face/mouthshape/type2 35 [7-8] hairstyle/color/red = 35[8-7] + 36[4-1] 36 [1-4] hairstyle/color/red = 35[8-7] + 36[4-1] 36 [5-8] hairstyle/color/green = 36[8-5] + 37[2-1] 37 [1-2] hairstyle/color/green = 36[8-5] + 37[2-1] 37 [1-6] hairstyle/color/blue 38 [1-8] hairstyle/variation 39 [1-6] face/eyebrowshape/color/red 39 [7-8] face/eyebrowshape/type 3A [1-6] face/eyebrowshape/color/green 3A [7-8] face/eyebrowshape/density 3B [1-6] face/eyebrowshape/color/blue 3B [7-8] face/eyebrowshape/eyebrowthickness 3C [1-3] hairstyle/hairstyles (1=skinhead, 2=veryshort, 3=short, 4=medium, 5=long, 6=special) 3C [4-6] hairstyle/hairtype (0=undefined, 1=straight, 2=wavy, 3=permed, 4=dreadlocks) 3C [7-8] ? 3D [1-1] hairstyle/acessory 3D [2-4] hairstyle/acessorycolor (flag and color index) 3D [5-8] face/facialhair/color/red = 0x3D[8-5] + 0x3E[2-1] 3E [1-2] face/facialhair/color/red = 0x3D[8-5] + 0x3E[2-1] 3E [3-8] face/facialhair/color/green 3F [1-6] face/facialhair/color/blue 3F [7-8] face/facialhair/thickness 40 [1-4] face/eyeshape/iriscolor 40 [5-8] ? (0 or 7) 41 [1-4] ? (0 or 7) 41 [5-8] hairstyle/color/preset (weird: 0=custom(preset9); 1=preset4; 2=preset6; 3=preset5; 4=preset8; 5=preset1; 6=preset2; 7=preset3; 8=preset7)
Team-Player Entry
The last 32 bytes used to be the shirt numbers. Each byte is a shirt number.
In PES 2015, the last shirt number was repeated for the empty players, i do not know why. But i do not think this is relevant, i think it is just ignored.
Example: a team with 23 players numbered sequentially would have the last 32 bytes: 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 17 17 17 17 17 17 17 17 17
Heringer (talk) 23:49, 28 December 2015 (UTC)
Ah that makes perfect sense, thanks! I'll update the table - NBD (talk) 23:54, 28 December 2015 (UTC)
Team Tactics
In the original option file, it starts at offset 0x530272.
It is compound by 850 entries. Each entry is 520 (0x208) bytes long.
Please note that there is no player id in this entry. The data references the player index inside the team roster.
Example: The Barcelona teams roster: C. Bravo, G. Piqué, M. Bartra, D. Alves, J. Alba, J. Mascherano, J. Rakitic, S. Busquets, Sandro, Neymar, and so on. The first player has index 0. The captain is 7. It means: the 8th player in the team roster is the captain. So, S. Busquets is the captain.
0x000 4 bytes - team id - the value 0x03FFFF is used when it is an empty entry 0x004 offensive tactics each tactics contains 11 3-bytes entries: player position, x-coordinate, y-coordinate the first 3-bytes are about the player that is referenced in offset 0x178 (see below), the second 3-bytes are about the player that is referenced in offset 0x179 (see below) and so on until the 11th player (sorry is a little confusing) 0x025 defensive tactics - same structure as offensive tactics 0x046 custom tactics - same structure as offensive tactics 0x067 23 bytes - unknown data 0x07E same structure from 0x04 to 0x7D - seems it is not used in the game 0x0F8 same structure from 0x04 to 0x7D - seems it is not used in the game 0x172 6 bytes - unknown 0x178 128 bytes - 32 player references, 4 bytes each - the value 0xFF is used for emptiness 0x1F8 1 byte - long fk taker 0x1F9 1 byte - short fk taker 1 0x1FA 1 byte - short fk taker 2 0x1FB 1 byte - left ck taker 0x1FC 1 byte - right ck taker 0x1FD 1 byte - pk taker 0x1FE 1 byte - captain 0x1FF 1 byte - join attack 1 - 0xFF means empty 0x200 1 byte - join attack 2 - 0xFF means empty 0x201 1 byte - join attack 3 - 0xFF means empty 0x202 zeros
TODO: the order needs confirmation (offensive, defensive, custom)