Jump to content

Simulation Hex Values for TSB III SNES


cuppettcj

Recommended Posts

Before you get too excited (if you're excited at all, that is), you should know that I haven't completely figured everything out, yet. However, I have isolated the hex values that control simulation, and it's only a matter of time (we're talking days here) before I know everything.

Here's what I know so far:

I know how to change Free Agent values. Free Agent points are embedded in the player data, which begins with Buffalo at offset 001EC800. The first hex digit you see is Jim Kelly's Running Speed (A for 69), followed by a hex digit representing his Rushing Power (3 for 25), then his MS, then his HP, then his BB, then his AG. The next hex digit you see after that controls Jim Kelly's skin color. If this digit is 0, Jim Kelly is white, if you change this digit to 8, Jim Kelly becomes a black man. I'm not sure what would happen if you changed this value to something other than 0 or 8, but I don't really care about that right now. The very next digit controls Jim Kelly's Free Agent value. He originally has an A, which is a lot of points. Change this value to 0, however, and this Hall of Fame quarterback becomes as worthless on the Free Agent market as Dan McGwire. By the way, the next hex digits after that control Kelly's PS, PC, PA, AR, and CO. I'm not sure what the last hex digit on the 7th byte controls, but I think it might have something to do with how likely a computer controlled quarterback will flee the pocket. Randall Cunningham and Steve Young are tied for the highest values for this, each with 9. Dan Marino has the lowest with 1. After this, the hex values for Rick Strom start. The values proceed as follows: QB1, QB2, RB1, RB2, RB3, RB4, WR1, WR2, WR3, WR4, TE1, TE2, OL1, OL2, OL3, OL4, OL5, DE1, DE2, DE3, DE4, DE5, DE6, LB1, LB2, LB3, LB4, LB5, SE1, SE2, SE3, SE4, SE5, SE6, SE7, K, P. Then the next team starts.

The teams proceed alphabetically, from East Division to West Division, AFC to NFC. Each quarterback has a total of 7 bytes. Each RB/WR/TE has 5 bytes, with the last byte representing the BC and REC abilities. Each OL has 4 bytes. Each DE/LB/SE has 5 bytes, with the last byte representing the INT and Q abilities. Each kicker has 6 bytes, with the last two bytes representing the KB, KP, and KA abilities. I'm not sure what the last hex digit of the last byte does for the K, but every K is given a 0, so I don't think it is used. The punter has 5 bytes, with the last byte representing the KP and AB abilities. For every player, the Free Agent value is always the second digit of the third byte, or the sixth digit total.

Free Agent points do have SOME effect on simming (which is a correction to a statement I made in another post), but there is a whole other section of data on the ROM that has a bigger effect on how a player sims. I have to go now, but I'll write more about this in a follow-up reply later today.

Edit: I expanded on my explaination of the player ability data to include what I think the last hex digit for quarterback data is used for.

Link to comment
Share on other sites

Sorry I didn't get back to this yesterday, but I was very busy with other things. Anyway, I've already explained how to edit Free Agent values. As stated earlier, this appears to have some effect on how a team sims.

For example, when I changed every player on Dallas to a Free Agent value of 0, the Cowboys (who normally win the NFC East every year) proceeded to produce 5-11 and 4-12 records in back-to-back seasons. When I first discovered this, I thought Free Agent points must be all there is to simulation. This turned out to be an incorrect assumption. Another example: when I changed all of the Arizona players to Free Agent values of F, the normally hapless Cardinals improved to a modest 8-8 and then 7-9 in back-to-back seasons. Again, this was evidence that Free Agent points mattered in simming, but obviously it wasn't the only factor, otherwise the Cardinals would have absolutely dominated.

That's when I discovered a section of data following the ability data that looked promising. Starting at offset 001EE000, I found a series of address pointers, 32 pointers in all. Each pointer pointed to a new address exactly 102 bytes from the previous pointer. Since there were exactly 32 pieces of 102 byte data, I naturally assumed that this data was team specific - all 30 NFL teams at the time, plus a section for the Free Agent "team", plus a section for the All-Time Great "team". This assumption proved correct. To test to see if this was indeed the simulation values, I swapped the 16th pointer (which I hypothesized was for Arizona) with the 17th pointer (which I hypothesized was for Dallas). I then simmed an entire season. Arizona proceeded to go 12-4 and win the NFC East, while Dallas went 4-12. Dave Krieg was named MVP at the end of the season, and Garrison Hearst led the league in rushing. I knew then that I had found what I was looking for.

Now it was just a matter of breaking the 102 bytes down into what they represented, and figuring out what player they were referring to, if any. After examining the data extensively, I determined that each QB was represented by 3 bytes of data, each RB/WR/TE was represented by 4 bytes, each DL/LB/SE was represented by 3 bytes, the K/P was represented by one byte total, and the last byte for each team represented some sort of overall rating. The values proceed by position in the same order the ability data values do, with the exception of the offensive linemen, which don't have any sim data. Therefore, the sim values for the first defensive lineman start immediately after the values for the second tight end.

I haven't extensively tested what each byte for each player represents, but after examing the data and comparing it to sim results and to the players' ability data, I have a pretty good idea. Here's my best guess:

For the QB: The first byte probably represents how cautious the quarterback is. QBs with lower values in this byte tend to lead the league in pass attempts, while higher values tend to indicate less overall attempts. The highest value given for this byte is 1C, while the lowest for this byte is 00. The second byte appears to be the QBs overall rushing ability. Steve Young leads the league in this byte with 09, while Randall Cunningham is not far behind with 08. Dan Marino has 00 for this byte. The first hex digit of the third byte appears to represent the overall passing ability, with Steve Young having the best value of F. Dave Krieg is worst among starting QBs, with a value of 3. The second hex digit of this byte appears to represent how willing a QB is to stay in the pocket. Randall Cunningham is the only starting QB to have a 3 in this value. Dan Marino has a 0 for this.

For RBs/WRs/TEs: The first byte likely represents the overall rushing ability of the player. Chris Warren has the highest value with AD, followed closely by Barry Sanders with AC. The lowest I saw for starting tailbacks was 4F for Edgar Bennett of Green Bay. I'm not sure what the second byte represents yet. I think it might have something to do with amount of carries for rushers. More testing needs to be done on this. All four All-Time Great RBs had 0D for this value. The highest value for this among starting players is Barry Sanders, with a 0C. Emmitt Smith, Chris Warren, and Natrone Means all had 0B for this. The third byte is probably a combination kick return/punt return ability byte. League leading PRs and KRs tend to have higher values in this than the category cellar-dwellers, although there are many players who have higher values in this who don't field either kickoffs or punts. The fourth byte is most likely the overall receiving ability byte. The first hex digit of the fourth byte appears to represent yards per reception data, as James Jett has a higher first digit than Tim Brown. The second digit of this byte appears to represent amount of catches the receiver will get. Jerry Rice leads the league with an F for this digit.

For DLs/LBs/SEs: The first byte probably represents sacking ability, the second byte probably represents interception ability, and the third byte probably represents tackling ability. The highest I saw for the first byte was DB Bills (Bruce Smith) with a 5C. The highest I saw for the second byte was Cb G Cardinals (Dick "Night Train" Lane) with 70. The highest I saw for the third byte was Junior Seau and Hardy Nickerson, both with 0C.

For Ks/Ps: The second to last byte holds both the information for the kicker and punter. The first digit is the overall ability of the punter. The highest for this value is a three way tie between Rich Camarillo of the Oilers, Jeff Gossett of the Raiders, and P G Raiders (Ray Guy). Each has a value of C. The second digit of this byte is the overall ability of the kicker. Morten Andersen, John Carney, Gary Anderson, Pete Stoyanovich, and K G Chiefs (Jan Stenerud) all are tied for the highest value with C.

The last byte for each team holds the overall offensive and defensive prowess for the team's players. The first digit of this byte appears to be the team's overall defensive ability, while the second digit of this byte appears to be the team's overall offensive ability. Dallas leads the league in both, with C's for both digits. I personally think that this is linked to the original players on each team, though, rather than always being linked with the team itself. In other words, if you were to trade Troy Aikman, Emmitt Smith, and Michael Irvin to another team, say the Colts, it is my belief based on somewhat limited testing that the Colts' overall ratings would improve, and that Dallas' overall ratings would decline. I can't prove this yet, but when I traded those players to the Cardinals in one of my tests, the Cowboys finished the season in the cellar while the Cardinals won the division, despite their previously low overall ratings.

I have a text file with all of the sim data from the original TSB3 ROM broken down by team and position. Again, with Rod's permission, I'll upload for everybody's reference. Feel free to test out this data in order to identify exactly what each byte does.

Link to comment
Share on other sites

For those of you who don't understand the byte-swapping process of the address pointers, here's the offsets for each team's sim data:

BUF: Offset 1EE040

IND: Offset 1EE0A6

MIA: Offset 1EE10C

NE : Offset 1EE172

NYJ: Offset 1EE1D8

CIN: Offset 1EE23E

CLE: Offset 1EE2A4

HOU: Offset 1EE30A

JAC: Offset 1EE370

PIT: Offset 1EE3D6

DEN: Offset 1EE43C

KC : Offset 1EE4A2

OAK: Offset 1EE508

SD : Offset 1EE56E

SEA: Offset 1EE5D4

ARI: Offset 1EE63A

DAL: Offset 1EE6A0

NYG: Offset 1EE706

PHI: Offset 1EE76C

WAS: Offset 1EE7D2

CHI: Offset 1EE838

DET: Offset 1EE89E

GB : Offset 1EE904

MIN: Offset 1EE96A

TB : Offset 1EE9D0

ATL: Offset 1EEA36

CAR: Offset 1EEA9C

NO : Offset 1EEB02

STL: Offset 1EEB68

SF : Offset 1EEBCE

Free Agents: Offset 1EEC34

All-Time Greats: Offset 1EEC9A

Link to comment
Share on other sites

  • 2 years later...

So we know the following (about simming TSB3):

1. FA points Matter in simming.

2. FA points are in a player's attributes (start Loc=0x001EC800).

3. Player sim data is team specific and starts at 0x1EE040, 102 byte chunks.

4. QBs (4 bytes)=> cautiousnesss?, Sim pass att, sim run, sim pass(nibble), sim pocket(nibble).

5. Skill players (4 bytes)=> sim rush ability, sim carries for rushers?, sim PR(nibble), sim KR(nibble), sim yds/catch(nibble), sim catch(nibble).

6. Defense (3 bytes)=> sim pass rush, sim pass defensee, sim tackle?

7. P/K (1 byte)=> sim punt(nibble), sim kick(nibble).

Link to comment
Share on other sites

  • 1 month later...
  • 1 year later...

I've finally gotten around to doing some intensive testing of the sim hex values as ccj mapped them out, and here's what I've come up with for the offensive skill players:

QB Sim Bytes

Byte 1:

- ccj was on the right track with this, but wasn't absolutely correct. This byte directly regulates the number of carries the QB will have in a simmed game. Thus, this byte performs the same function as the first byte for the other offensive skill players.

- I haven't been able to definitively determine how to set this value yet, because the values it returns seem to vary, possibly by position. In other words, a hex value of 20 has consistently returned a lot more carries per season for QBs than for RBs... The effect of the value of this byte may be similar to that of other value modifier bytes discovered elsewhere in the rom, where as the value goes up, the effect of the value increases on a bell curve (EG: a value of 04 has double the effect of 03, instead of 33% greater effect on a linear curve)

- the other very important thing to note about the value of this byte is that the hex values for all 12 offensive skill players has to equal FF (255). For every team in the original rom these 12 first sim bytes add up to FF. I sense the stats won't add up properly if the collective value doesn't add up to this. I didn't test it to find out...

Byte 2:

- I think ccj was right with this. It appears to be the QB's rushing ability. However it again appears that this byte is like the first QB sim byte in that it performs the same function as the 2nd byte for the other offensive skill players - which is a detail that ccj missed. There don't appear to be any other parameter requirements to respect for this byte, other than that in the orig rom, this value ranges from 00 to 0d.

Byte 3:

- ccj was again more or less right about the value of the first half of this byte. Changing this value most directly affects the QBs completion %. A value of 'A' here consistently returns a QB that pitches over 60% completion rate. 'C' puts the QB consistently over 65%. Anything under '8' and the QB will struggle to pitch 50% completion rate

- The 2nd half of the byte is also pretty much what ccj says it is, the QB's willingness to scramble.

* I personally believe that Bytes 2 & 3 for the QBs probably act as modifiers for onfield QB performance, in addition to sim numbers. Especially Byte 3.

Be back later with the four RB / WR / TE sim byte explanations.

am rush

Link to comment
Share on other sites

  • 11 years later...
On 7/15/2006 at 10:15 AM, BAD_AL said:

So we know the following (about simming TSB3):

 

1. FA points Matter in simming.

2. FA points are in a player's attributes (start Loc=0x001EC800).

3. Player sim data is team specific and starts at 0x1EE040, 102 byte chunks.

4. QBs (4 bytes)=> cautiousnesss?, Sim pass att, sim run, sim pass(nibble), sim pocket(nibble).

5. Skill players (4 bytes)=> sim rush ability, sim carries for rushers?, sim PR(nibble), sim KR(nibble), sim yds/catch(nibble), sim catch(nibble).

6. Defense (3 bytes)=> sim pass rush, sim pass defensee, sim tackle?

7. P/K (1 byte)=> sim punt(nibble), sim kick(nibble).


I’m trying real hard to get this to work but no matter how I change the running backs digits then sim it’s always the same. I’ve even switched all of Dallas’s RBs bytes to New England’s RBs and vice versa, nothing changes when simming. Not sure what I’m doing wrong. It’s very frustrating.  

Link to comment
Share on other sites

  • 3 weeks later...

 

On 12/12/2019 at 3:36 PM, SirPurr3 said:


I’m trying real hard to get this to work but no matter how I change the running backs digits then sim it’s always the same. I’ve even switched all of Dallas’s RBs bytes to New England’s RBs and vice versa, nothing changes when simming. Not sure what I’m doing wrong. It’s very frustrating.  

Which Editor are you using?

 

Link to comment
Share on other sites

Hxd editor. I actually figured it out. I started in November without have any knowledge of hex, or computer programming, what so ever and just started reading post trying to learn as much as I can before diving into all this. I’m a fast learner and have learned a lot thanks to you guys. I was trying to get NE and Den RBs more carries to match Martin and Davis stats, which I did. 

Link to comment
Share on other sites

  • 1 month later...

I don't understand having the first byte of all twelve skill positions equal 255 as a hard rule.

I added the Colts which came to 235  (hex values, 08,00,92,35,18,02,01,01,00,00)

I added the Bills which came to 253    (Hex values, 08,02,9f,40,08,08,02,02,00,00,00,00)

 

I am 99.9% sure I am missing something.

 

This is an unedited Rom

Edited by crick78
Link to comment
Share on other sites

36 minutes ago, crick78 said:

I don't understand having the first byte of all twelve skill positions equal 255 as a hard rule.

I added the Colts which came to 235  (hex values, 08,00,92,35,18,02,01,01,00,00)

I added the Bills which came to 253    (Hex values, 08,02,9f,40,08,08,02,02,00,00,00,00)

 

I am 99.9% sure I am missing something.

 

This is an unedited Rom


So for Denver the first bytes added up to 256. 10 (16), 76 (118), 4c (76), 22 (34), 0a (10), 01 (1) and 01 (1). I just went by that number (256) when changing sim values. I changed Elway to 08 (8), Davis to d7 (215) and the other 3 running backs 16 (22), 06 (6) and 05 (5). Davis now gets around 360 carries a season, where before the changes backs 1 and 2 split carries almost 50/50. I just went by whatever the number was for each team and don’t go over that number or the sim data won’t add up correctly, eg one player will get no carries. I did the same for receiving sim values as well. Receiving sim value is the 3rd byte. Just add all 3rd byte get the number and adjust for each player, again don’t go over that number. Hope this helps!  

Link to comment
Share on other sites

4 minutes ago, crick78 said:

Thanks, I'll go that route.  Looking to get Peyton Manning throwing more passes.  I'm looking forward to getting it right.

 

Thanks


You're welcome! As for more passes you’ll have to change the offensive preferences. There is 3 locations and you need to change all 3 locations or it won’t work. The locations are 000160904, 001def509 and 001def803. The teams are in order as the sim values order. The colts are 00 which is a rush offense. You can change them to 02 which is pass offense or 03 which is heavy pass. Still not sure what that cc means. I’ve changed other teams byte and nothing seems to happen. 

Link to comment
Share on other sites

15 minutes ago, SirPurr3 said:


You're welcome! As for more passes you’ll have to change the offensive preferences. There is 3 locations and you need to change all 3 locations or it won’t work. The locations are 000160904, 001def509 and 001def803. The teams are in order as the sim values order. The colts are 00 which is a rush offense. You can change them to 02 which is pass offense or 03 which is heavy pass. Still not sure what that cc means. I’ve changed other teams byte and nothing seems to happen. 

 

Oh! Thanks!  Great info, I had a lot of these addresses logged, but can't find the text file.  Thanks so much!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...