00,01 - Player code
02,03 - Commentary code
04-18? - Player Name
20,21 - innings (test)
22,23 - not outs (test)
24,25 - overs bowled (test)
26,27 - wickets (test)
28,29 - runs conceded (test)
30,31 - runs scored (test)
32 - 50's (test)
33 - 100's (test)
34,35 - catches (test)
36,37 - maidens (test)
38,39 - matches and 5-fors (test)
40,41 - innings (ODI)
42,43 - not outs (ODI)
44,45 - overs bowled (ODI)
46,47 - wickets (ODI)
48,49 - runs conceded (ODI)
50,51 - runs scored (ODI)
52 - 50's (ODI)
53 - 100's (ODI)
54,55 - catches (ODI)
56,57 - maidens (ODI)
58,59 - matches and 5-fors (ODI)
60,61 - innings (FC)
62,63 - not outs (FC)
64,65 - overs bowled (FC)
66,67 - wickets (FC)
68,69 - runs conceded (FC)
70,71 - runs scored (FC)
72 - 50's (FC)
73 - 100's (FC)
74,75 - catches (FC)
76,77 - maidens (FC)
78,79 - matches and 5-fors (FC)
80,81 - innings (OD)
82,83 - not outs (OD)
84,85 - overs bowled (OD)
86,87 - wickets (OD)
88,89 - runs conceded (OD)
90,91 - runs scored (OD)
92 - 50's (OD)
93 - 100's (OD)
94,95 - catches (OD)
96,97 - maidens (OD)
98,99 - matches and 5-fors (OD)
100-103 - batting: concentration, defence, attack, offside, legside
104-107 - batting: straight, front foot, back foot (and two hidden attributes in positions 4 and 5)
108-111 - batting: skill (position 2), resilience (position 4) and two hidden attributes (positions 1 and 3)
112-115 - blank ?catching
116-119 - bowling: discipline, accuracy, seam, bouncer
120-123 - bowling: slower ball, spin, arm ball, googly, flipper
124-127 - bowling/fielding: inswing, outswing, arm strength, fielding accuracy, agility
128,129 - stamina
130,131 - Batting position and aggression
132 - Bowling style and aggression
133,134 - hands used and fielding positions
134,135 - player speed
136 - catching
137-139 - F0 7D DF for all players
142,143 - High Score (test)
145,146 - High Score (ODI)
148,149 - High Score (FC)
150,151 - High Score (OD)
153,154 - BBI runs (test)
156,157 - BBI runs (ODI)
158,159 - BBI runs (FC)
161,162 - BBI runs (OD)
204 - Batting weaknesses
208,209 - Batting strengths
212,213 - Special skills
221 - player height
223 - bat
228,229,230 - nationality
360 - age
361 - player type
362 - bowling deliveries available
364,365 - face
Bytes 130,131 - Batting position and aggression
0_ 80 - OB Agg
0_ 81 - TE Agg
0_ 88 - OB Mod
0_ 89 - TE Mod
0_ 90 - OB Def
0_ 91 - TE Def
8_ 80 - MO Agg
8_ 81 - LO Agg
8_ 88 - MO Mod
8_ 89 - LO Mod
8_ 90 - MO Def
8_ 91 - LO Def
The second half of the first byte is unknown but apart from that this is pretty simple. It seems to be 0 for created players and 2 or 3 for ingame players. No noticeable effect.
Byte 132 - Bowling style and aggression
_9 - RF
_8 - LF
_7 - RFM
_6 - LFM
_5 - RM
_4 - LM
_3 - SLA
_2 - OS
_1 - LAC
_0 - LS
0_ - Agg
1_ - Mod
2_ - Def
Bytes 133 and 134 - Hands and fielding positions
NB Only the second half of byte 134. The first half controls player speed
General, General: 05 _0
General, Slip: 05 _1
General, Outfielder: 05 _2
General, Closefielder: 05 _3
General, Wicketkeeper: 85 _0
General, Cover: 85 _1
General, Gully: 85 _2
General, Square Leg: 85 _3
Each first attribute has two possible bytes with four secondary after each
WK: for 0D gen/slip/out/close have values _0-_3
for 8D wk/cover/gully/sq leg have values _0-_3
Slip: 15 _0-_3; 95 _0-_3
Cover: 1D _0-_3; 9D _0-_3
Outfield: 25 _0-_3; A5 _0-_3
Gully: 2D _0-_3; AD _0-_3
Close in: 35 _0-_3; B5 _0-_3
Square Leg: 3D _0-_3; BD _0-_3
This is all for RH bat and Fielding hand right.
Do the following to the first byte for RH:
For RHB and RHF subtract 5 (will end 0 or 8)
For LHB and RHF subtract 4 (will end 1 or 9)
For RHB and LHF subtract 1 (will end 4 or C)
For LHB and LHF leave (will end 5 or D)
Bytes 134,135,136 - Player speed and catching
134,135 - Speed
1_ 02 = 021 hex2dec = 33 = scaled 50
0 _03 = 030 hex2dec = 48 = scaled 75
Convert these into values by scaling them on Ajit's base-64 scale [url=http://www.planetcricket.org/forums/showpost.php?p=269686&postcount=75]here[/url] (exactly the same as all the other attributes) and they now read 50 and 75).
136 - Catching
21, hex2dec = 33 = scaled 50
3E, hex2dec = 62 = scaled 100
Bytes 142 and 143 - High Score (test)
14 C3 breaks down as follows:
C tells us that the score is not an 'out'.
4 tells us to add 1 to the number we get
1_ _ 3 tells us to multiply 3*64 and add it to 1*4
Therefore (1*4) + (3*64) +1 = 197
ab cd = (c*64) + (a*4) + converted b (c will be C)
Conversely 'Not Out' high scores work backwards
C0 D9
D tells us the score is a 'Not Out'
0 tells us to add 0 to the final number
9 tells us to multiply (16-9)*64
C tells us to subtract (C*4) from (16-9)*4
(16-9)*64 - (12*4) - 0 = 400 not out
Bytes 145, 146 - High Score (ODI)
The first half of the second byte tells us whether the high score is Not Out or not:
The even bytes (2,4,6,8,A,C,E) are 'out' and the odd bytes (1,2,5,7,B,D,F) are 'Not Out'.
For 'out'
EC 61
The second half of the first byte is the signifier:
0 = add 0; 4 = add 1; 8 = add 2; C = add 3
The 1 in the second half of the second byte is multiplied by 64
The E in the first half of the first byte is multiplied by 4
Therefore (14*4) + (1*64) + 3 = 123
For 'Not Out'
18 BD
The second half of the first byte is the signifier:
0 = subtract 0; 4 = subtract 1; 8 = subtract 2; C = subtract 3
The D is subtracted from 16 and multiplied by 16
The 1 is multiplied by 4
Therefore ((16-13)*64) - (4*1) - 2 = 186*
Bytes 148, 149 - High Score (FC)
The first half of the second byte seems to be immaterial
The second half signifies a formula as follows: (where bytes are ab cd)
0 and 8: (a*16) + b 'out'
1 and 9: 256 + ((a*16) + b) 'out'
6 and E: 512 - ((a*16) + b) 'Not Out'
F: 256 - ((a*16) + b) 'Not Out'
(there may be another signifier paired with F)
Therefore:
B9 18 = (11*16) + 9 = 185
C5 D9 = 256 + ((12*16) + 5) = 453
C5 EE = 512 - ((12*16) + 5) = 315*
21 6F = 256 - ((2*16) + 1) = 223*
Bytes 150, 151 - High Score (OD)
Operates using a base 8 system. The second half of the first byte seems to be immaterial.
For 'out' the whole of the second byte is converted into decimal and multiplied by 8. We then add as follows depending on the first half of the first byte:
0,1 = add 0
2,3 = add 1
4,5 = add 2
6,7 = add 3
8,9 = add 4
A,B = add 5
C,D = add 6
E,F = add 7
E1 0F therefore is hex0F = dec 15 = (15*8) + 7 = 127
For 'Not Out' the system is reversed again and the added numbers subtracted.
20 ED
(256 - hexED)*8 - 1 = (256-237)*8 - 1 = 151*
for ab cd = (256 - hexcd)*8 - a
Logically this will diverge at around 512 for both. I guess the assumption is that no-one will ever score over 512 in an OD game!
Octavius said:wow you are doing great Colin! i assume that once you have broken the codes you can make a player editor, or doi have to learn hoe to adjust bytes :P imsuch a PC noob. I have downloaded the hex workshop, could someone post a link to a full tutorial for adjusting bytes for an individual player? i created my own players and opened the roster in hex and couldnt find any of the names of any of the players i created.
i am worried that all this seems so simple to most of you that instructions are for advanced users who have some clue about this stuff.
78 C2 00 D0 61 00 02 6F 70 12
Bytes 153,154 - BBI runs conceded (test)
ab cd
a*4 + b/4 + d*64
1C C1 = (1*4) + (12/4) + (1*64) = 71
Bytes 156,157 - BBI runs conceded (ODI)
ab cd
a*16 + b (just a simple decimal conversion of the first byte: c and d don't seem to be used)
16 58 = (1*16) + 6 = 22
Bytes 158,159 - BBI runs conceded (FC)
ab cd
d*8 + a/2 + c*128
60 09 = (9*8) + (6/2) + (0*128) = 75
Bytes 161,162 - BBI runs conceded (OD)
ab cd
a*4 + b/4 + d*64
58 01 = (5*4) + (8/4) + (1*64) = 86