Dee-Nee Forums

General => RBI Baseball => Topic started by: nightwulf on 12/15/02, 02:53:38 AM

Title: Pitcher ROM data explained, and question of "unknown data"
Post by: nightwulf on 12/15/02, 02:53:38 AM
In weeding through the NES ROM I've figured out what most of the pitcher data represents. For your own personal amusement, my findings and explanation are below. There are also three fields that I simply cannot figure out. Those values are listed as well, in the hope that someone may know.

I tried to write this information in an easy-to-understand manner, but any knowledge of the hexadecimal (base 16) number system would make it much simpler to follow.

For example, the following is the data stored for John Tudor of the Cardinals:
        1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16
0106D0- 0C 1D 3C 2B 36 39 24 41 1C 8C B4 BD 7B 28 72 8E
Here's what I know:

byte 1 (0C) represents his "player number" of the team. He is the 13th player. I also believe this defines him as a starting pitcher ... that is, players 13 and 14 are starters, and 15/16 are relievers.

bytes 2-7 (1D 3C 2B 36 39 24) is simply his name, followed by a space, because each player must have a 6-character name.

byte 8 (41) is partly a mystery. The "1" indicates that he is a left-handed, non-sidearm pitcher. Possible values are: 0=RHP, 1=LHP, 2=RHP sidearm, 3=LHP sidearm. I have no clue what the "4" represents. See below for more information.

byte 9 (1C) is Tudor's ERA, 1.28. Take a player's ERA (for example, 1.28 heh), multiply by 100 (=128), and subtract 100 (=28). 28 in hexadecimal is 1C. This also explains why a player's ERA must be between 1.00 and 3.55 inclusively. Only one byte is used in the ROM for ERA, which means the value stored must be between 0 and 255. Using the above formula, an ERA of 1.00 (x100, -100) would be stored in the ROM as zero, and an ERA of 3.55 (x100, -100) would be 255.

byte 10 (8C) represents a pitcher's sinker speed. This value (and the next two) don't translate directly into a "top speed," but the higher the number, the faster he can throw sinkers. The value of these speed ratings can be from 0-255, and Tudor's is 140.

byte 11 (B4) is the curve speed. B4 is 180.

byte 12 (BD) is the fastball speed. BD is 189.

byte 13 (7B) represents a pitcher's ability to throw a curve ball. The higher the number, the more control the pitcher has to curve the ball in any direction. Again this value can be from 0-255, and 7B is 123.

byte 14 (28) is the stamina. This is also represented from 0-255. Tudor's stamina is 40. Most starting pitchers have a value from 40-50, and most relievers are in the high teens.

bytes 15-16 (72 8E) ... I have NO DAM IDEA.  :-\ I've played with all kinds of modified values in these bytes, and have yet to come up with a definite use for them. One possibility is that these may relate to the probability that a batter will hit a ground or fly ball off of this pitcher.

Here's bytes 8, 15, and 16 for all four of the Cardinal pitchers:
        8 15 16
Tudor - 41 72 8E
Cox   - 80 70 8F
Dayley- 31 8B 93
Worrel- 40 71 8D
The second digit of byte 8 shows that these are LHP, RHP, LHP, and RHP respectively, and that none are sidearm pitchers. WTF does the first digit represent?? It varies from 0-F. Bytes 15 and 16 are different with each pitcher, but they don't stray far. 15 is always near 80, and 16 is near 90.

Many thanks go both to this site, and to the creators of RBI Manager. Both were a great help in determining what the ROM data represents.

I hope anyone who's read this far found this information interesting, and I hope anyone bored by it quit reading long ago hehe. If anyone has any idea what the unknown values above may represent, please post your ideas in this thread. If anyone would like me to post the actual data for any other pitchers, please let me know; I'd be happy to do so.

Nightwulf
Title: Re:Pitcher ROM data explained, and question of "unknown data"
Post by: SmokedUBad13 on 12/15/02, 01:49:06 PM
Damn again.

SmokedUBad
www.dee-nee.com/rbi/mbeales
Title: Re:Pitcher ROM data explained, and question of "unknown data"
Post by: Gantry on 12/15/02, 06:55:09 PM
I would like to see a dump of all the pitchers if you don't mind...

BTW - Could I do a simple Hex dump on the ROM itself to get this data?  
Title: Re:Pitcher ROM data explained, and question of "unknown data"
Post by: Gantry on 12/15/02, 07:35:53 PM
This is really good work, Nightwulf...  Let me add what meager info I can, along with some questions:

<<< bytes 2-7 (1D 3C 2B 36 39 24) is simply his name, followed by a space, because each player must have a 6-character name. >>>

A little confused here...  If there are only 6-bytes, where does the space come in?  Are these ASCII values?  

<<<  byte 8 (41) is partly a mystery. The "1" indicates that he is a left-handed, non-sidearm pitcher.  I have no clue what the "4" represents >>>

It looks like the first 4 bits of byte 8 determine a pitchers drop ability.  By drop ability, I mean their ability to have slowballs actually hit the plate, especially later in the game.  I know this because Mike Scott has the best drop in the game, and his is at 14 (decimal).  I know about Scott's drop ability because your printouts of byte 8 for the Cardinals correspond to the right-most values listed for pitchers in version 2.0 of the RBI Manager.  I figured out awhile back that this column corresponded to drop (the program has it as ???), but never had the data breakdown until now.  

PS - Do you have version 2.0 of RBIBM?   Adds a few more entries, but you've figured out most of them...


<<< bytes 15-16 (72 8E) ... I have NO DAM IDEA.  >>>

Nor do I, and these are listed in RBIBM 2.0 as well.  They also have the ??? heading, and I've toyed with them to no avail.  Put a couple pitchers at the extreme ends of both values and it made no noticable difference in the way they pitched...

<<< byte 11 (B4) is the curve speed. B4 is 180.  >>>

RBIBM has this listed as Normal.  By curve speed, do you mean the speed of a non-fastball/slowball?

This data breakdown has been very helpful to me, and perhaps we can figure out what those last two bytes do.  I think those are all we haven't accounted so far...




Title: Re:Pitcher ROM data explained, and question of "unknown data"
Post by: nightwulf on 12/15/02, 10:48:45 PM
Quote from: Gantry on 12/15/02, 07:35:53 PMA little confused here...  If there are only 6-bytes, where does the space come in?  Are these ASCII values?  
Nope. I don't think I've ever seen a ROM that uses actual ASCII values; it'd certainly make life easier tho heh. RBI uses the following values to represent alphanumeric characters:

00=0 (zero), 01=1, ... 09=9
0A=A, 0B=B, ... 23=Z
24= (space)
25=. (period)
26=( (left parenthesis ?!)
27=' (apostrophe)
28=a, 29=b, ... 41=z

Further values start getting into graphics tiles in the same table as the character set.

So, in Tudor's case, "1D 3C 2B 36 39 24" translates to "Tudor ".

Quote from: Gantry on 12/15/02, 07:35:53 PMIt looks like the first 4 bits of byte 8 determine a pitchers drop ability.  By drop ability, I mean their ability to have slowballs actually hit the plate, especially later in the game.
Ooh !!! I owe you a beer! ;D That's exactly it. I changed this value in Tudor's data to 0, and sinkers never hit the ground; same value at F and every sinker he threw did. Many thanks!

Quote from: Gantry on 12/15/02, 07:35:53 PMPS - Do you have version 2.0 of RBIBM?   Adds a few more entries, but you've figured out most of them...
The only version I could find is the one linked to elsewhere in this site. It's 1.5.

Quote from: Gantry on 12/15/02, 07:35:53 PMRBIBM has this listed as Normal.  By curve speed, do you mean the speed of a non-fastball/slowball?
Yep. As far as the game is concerned, if you aren't pushing "Up" or "Down" when you pitch, then you're throwing a curve ball. Whether you choose to actually curve it or not,  the pitch's speed is determined through this value. With a value of FF, Tudor was throwin' curves at up to 120 mph.

Nightwulf
Title: Re:Pitcher ROM data explained, and question of "unknown data"
Post by: Gantry on 12/15/02, 11:27:48 PM
QuoteThe only version I could find is the one linked to elsewhere in this site. It's 1.5.

OK, I'm attaching it to this post.  Had to repackage the zip file myself, so let me know if I screwed it up...

I think the only way to figure out what the last two bytes are is to play a bunch of games with the values at both ends of the spectrum.   The ability to keep hits on the ground sounds like a good theory...

Title: Re:Pitcher ROM data explained, and question of "unknown data"
Post by: nightwulf on 12/15/02, 11:42:31 PM
Ooh thank ya. While we're attaching files, here's a hex dump of all pitchers in the game, separated into tables.

Nightwulf
Title: Re:Pitcher ROM data explained, and question of "unknown data"
Post by: Gantry on 12/16/02, 12:06:11 AM
Very nice, makes it a little easier to decipher what is going on...

Perhaps the first unknown byte (#15) has something to do with the ability to give up gopherballs?  I notice right away that the live-fsat-throw-hard pitchers have a low byte-15 total.  Ryan (69), Garrelts(6F) and Beringuer(6E) are all fast throwers who have a tendency to give up a lot of homers.  At least in my experience...  Maybe it's more of a general flyball/groundball rule than gopherballs, but Garrelts & Beringeur especially are known for either striking out the side or giving up 4 runs...

Then again, if that were the case, you would have seen an absurd homer rate after changing the values to FF or 00....
Title: Re:Pitcher ROM data explained, and question of "unknown data"
Post by: Gantry on 12/16/02, 12:15:33 AM
Now I'm starting to think that my previous theory blows.  I think it has something to do with curve, one byte for left and one byte for right.  Not quite sure what yet, but notice how the sidearmers have the highest byte-16 values, along with the flamethrowers.  

As for the lowest byte-16 values by far, you have Garrelts and Orosco.  What makes Jessie unique is that he's the only lefy side-armer in the game.  Not sure about Garrelts, around here he's known for speed and gopherballs...

The plot thickens...
Title: Re:Pitcher ROM data explained, and question of "unknown data"
Post by: sucka free on 12/16/02, 12:01:09 PM
Have you guys checked the dilithium crystals?  My friends scotty says that they might be low.  Just trying to help.
Title: Re:Pitcher ROM data explained, and question of "unknown data"
Post by: Gantry on 12/16/02, 01:56:02 PM
Tried a few more ideas, but am still stumped...  Thought perhaps they were hitting statistics, but I still couldn't hit for shit after going to 255...

I still think it will correspond to curve, because sidearmers reach the extremes of these ratings one way or the other and they have the most pull to one side of the plate.  Then again, adjusting these numbers did nothing...

Title: Re:Pitcher ROM data explained, and question of "unknown data"
Post by: Gantry on 12/16/02, 03:21:08 PM
More testing:

I let the computer play a "Watch" game where I gave one staff 01 01 and the other FF FF for bytes 15 and 16.  I could not notice anything abnormal, outside of the computer's terrible play.  Whatever these numbers mean, they have little impact on the game itself.  The "contact" of pitching stats if you will...

And yet they must be used for something because the hitters all have 00 00 for bytes 15 & 16.   If Nightwulf or anyone can figure it out, they are a better man than I....

PS - Though I pretty much use Linux, Ultra Edit 32 is one heck of a program.  Their hex editor is simple and powerful...
Title: Re:Pitcher ROM data explained, and question of "unknown data"
Post by: Carlos_jackal on 12/17/02, 12:30:17 AM
I was wondering what the Hexadecimal dumps of all the non pitcher was.  I you have it would you mind posting it
Title: Re:Pitcher ROM data explained, and question of "unknown data"
Post by: vgp100 on 12/17/02, 11:55:21 AM
I'll be right back. I've got to take a hexidecimal dump right now.