Sign in to follow this  
smozoma

HOW TO: Edit the Player Overall Rating Formula

Recommended Posts

Attached is a program that changes the formula used in the game to generate the Overall rating for the players and goalies. I changed the formula to more accurately reflect the value each attribute brings to the player.

OvrFormulaFix1.0.zip

NOTE: The formula is for ROM with the weight bug fix applied, since it gives some added rating for being heavy!

The formulas I created are

Players:
(start at -3)
Wgt:  x1
Agi:  x2
Spd:  x4
OfA:  x2
DfA:  x1
ShP:  x3
Chk:  x1
StH:  x2
ShA:  x2
End:  x1
Rgh:  x0
Pas:  x1
Agr:  x0

Goalies:
(start at -3)
Agi:  x4
DfA:  x3
PkC:  x3

StL:  x2
StR:  x2
GvL:  x2
GvR:  x2

I'll explain how the hack works at the end of this post...

One of the great things about these numbers is that they preserve Lemieux as 100, Bourque as 99, and Belfour as 98, just like with the original formula.

Again, remember the formula is for ROMs with the weight bug fix.

Improved to 85+:

96->98 Mogilny

90->92 Selanne

89->90 Roenick

85->89 Gartner

86->88 Neely

84->87 Lindros

81->87 Hull

85->86 Robitaille

82->86 Modano

82->85 Turgeon

80->85 Sandstrom

Same:

100 Lemieux

95 Yzerman

90 Bure

Lower than original 85+:

93->88 Oates

91->85 LaFontaine

89->84 Gilmour

87->79 Gretzky (biiig drop)

86->84 Larmer

86->82 Fleury

85->84 Messier

85->84 Roberts

On average, players are rated about 1 higher than with the original formula.

Here is how the hack works:

================================================================================

OVERALL RATING

--------------------------------------------------------------------------------

First, here is basically the formula used by the game for players:

Ovr = 2*Agi + 3*Spd + 3*OfA + 2*DfA + ShP + 2*Chk + 3*StH + 2*ShA + End + Pas

and for goalies:

Ovr = 4.5*Agi + 4.5*DfA + 4.5*PkC + StR + StL + GvR + GvL

If you want the full story on the formula, check this thread:

http://forum.nhl94.com/index.php?showtopic...amp;#entry61570

Here is how you change the formula:

There are two parts to changing the Overall rating formula for players and for

goalies. In one part, you need to change a value to indicate which player

attributes to include in the calculation. in the other part, you need to

change a bunch of values to indicate the multiplier to use for each attribute.

I was really impressed by this method; I thought it was pretty clever and easy

to change.

Part One:

At location 0x00019420 (hex), there is a value of 1FBA

This value is interpreted by the game as a set of individual binary bits

indicating which attributes to use when rating a player (not a goalie -- I

give the values for goalies at the end of this post). If a bit is a 1 (one),

the the corresponding player attribute is included in the calculation of an

overall rating.

convert the hexadecimal number to binary to see the bits:

0x1FBA = 0001 1111 1011 1010

Let's call them bits 1-16, starting from the left. They correspond to:

bit 1 - (0) - first digit in player number

bit 2 - (0) - second digit in player number

bit 3 - (0) - weight

bit 4 - (1) - agility

bit 5 - (1) - speed

bit 6 - (1) - offensive awareness

bit 7 - (1) - defensive awareness

bit 8 - (1) - shot power

bit 9 - (1) - checking

bit 10 - (0) - handedness / fighting

bit 11 - (1) - stick handling

bit 12 - (1) - shot accuracy

bit 13 - (1) - endurance

bit 14 - (0) - roughness

bit 15 - (1) - passing

bit 16 - (0) - aggression

If you want to include weight in the overall rating, you set "bit 3" to a 1.

this gives you

0011 1111 1011 1010 = 3FBA (instead of the original 1FBA)

So, just change the value in the ROM to the value corresponding to which

attributes you want included in your Overall rating formula.

Part 2:

Starting at location 0x000FAB1C, there is a list of values 16 bytes long

(remember one byte is displayed with two characters in a hex editor):

02. 02. 02. 02. 04. 06. 02. 04. 02. 04. 06. 06. 04. 02. 02 02

Agr Pas Rgh End ShA StH H/F Chk ShP DfA OfA Spd Agi Wgt #2 #1

(periods added to get the spacing right)

Now, this bit is a little tricky... the values are BACKWARDS and DOUBLED!

That is, they run in reverse order to the bit order listed above, and are

double the value of the actual multiplier. So, you can see that Speed has a

value of "06" which means in the Overall formula, speed has a multiplier of 3.

You may notice that there are no zero values: to make something have no

multiplier, you are supposed to use a zero in the bit field -- do not make the

value zero in this list of multipliers.

So, if you want to make Shot Power worth 2x, Shot Accuracy only worth 1x, and

also include Weight as worth 1x, change the values so you end up with:

02. 02. 02. 02. 02. 06. 02. 04. 04. 04. 06. 06. 04. 02. 02 02

Agr Pas Rgh End ShA StH H/F Chk ShP DfA OfA Spd Agi Wgt #2 #1

(note: the Weight value didn't change, it was already 02)

I hope that makes sense!

Now, if you want to change the formula for goalies, these values are at:

0x00019582 (value is 130F)

0x000FAB2C (value is 02 02 02 02 02 02 02 02 09 09 02 02 09 02 02 02)

Edited by smozoma

Share this post


Link to post
Share on other sites

Another great discovery by smozoma but the question remains.. Would Shawn Chambers still have a 1 overall rating in NHLPA93?

2jdiexw.jpg

Shame EA didn't create a separate rating system for defensemen. Most of them are relegated as crash test dummies with mobility and scoring ability as the metric.

Share this post


Link to post
Share on other sites
Another great discovery by smozoma but the question remains.. Would Shawn Chambers still have a 1 overall rating in NHLPA93?

2jdiexw.jpg

Shame EA didn't create a separate rating system for defensemen. Most of them are relegated as crash test dummies with mobility and scoring ability as the metric.

You know, i noticed something "funny" when I was looking at this stuff.. and maybe i can exploit that to make a defenseman formula. you are right, the formula (especially my new one) really doesn't give D any credit.

Share this post


Link to post
Share on other sites

Did you make any progress on the D rating thing? I am intrigued

Share this post


Link to post
Share on other sites

Thanks for the goalie part I requested, Smoz. I knew you could do it!

Share this post


Link to post
Share on other sites
Did you make any progress on the D rating thing? I am intrigued

nah, haven't looked at it. thought about it a little and thought it was probably not possible. maybe one day i'll give it a more thorough look.

Share this post


Link to post
Share on other sites

I hereby nominate Smoz for the Nobel Peace Prize! A wise man once said "Be the change you want to see in the world." Smoz apparently took that advice seriously, and has made the NHL '94 world a better place.

I'm loving his fix to enable speed to affect a goaltender's OVR in my rom. I always liked the ratings I gave my goalies, but never liked how low their OVR was. I always found myself wishing the OVR were just a few points higher. With Smoz's fix, my goalies now have OVR ratings that are 2-4 points higher than what they originally were!

Funnily enough, the new OVR doesn't show up in NOSE. NOSE still reports the original OVR you had prior to the speed fix. But the new OVR shows up when you start the rom. For instance, Guy Hebert was a 76 overall in nose, and was a consistent 76 when I would play the game. With the speed fix, NOSE still says he is a 76, but he is a consistent 80 in the game now.

Share this post


Link to post
Share on other sites
I hereby nominate Smoz for the Nobel Peace Prize! A wise man once said "Be the change you want to see in the world." Smoz apparently took that advice seriously, and has made the NHL '94 world a better place.

I'm loving his fix to enable speed to affect a goaltender's OVR in my rom. I always liked the ratings I gave my goalies, but never liked how low their OVR was. I always found myself wishing the OVR were just a few points higher. With Smoz's fix, my goalies now have OVR ratings that are 2-4 points higher than what they originally were!

Funnily enough, the new OVR doesn't show up in NOSE. NOSE still reports the original OVR you had prior to the speed fix. But the new OVR shows up when you start the rom. For instance, Guy Hebert was a 76 overall in nose, and was a consistent 76 when I would play the game. With the speed fix, NOSE still says he is a 76, but he is a consistent 80 in the game now.

I'm sure NOSE just has the default formula hardcoded into it, rather than reading the code to find out the forumula (I'd have done it the same way wboy did :lol: ).

what about increasing the ratings given for glove/stick sides? they are by default 1x, which is really weak, while the other stats are 4.5x. Maybe try something like 3*(agi + spd + PkC + DfA) + 2*(StL + StR + GvL + GvR). on the other hand, maybe the stick/glove ratings are actually not very important (it's hard to tell because typically the goalies with high stick/glove also have high ratings in the other attributes... anyone want to experiment with seeing what they really do?)

Share this post


Link to post
Share on other sites

one more thing I'd like to see explored for the SNES version. the brain power of some of y'all....impressive.

Share this post


Link to post
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.

Sign in to follow this  

  • Who's Online   0 Members, 1 Anonymous, 13 Guests (See full list)

    There are no registered users currently online