Jump to content
NHL'94 Forums

HOW TO: 0-15 player attribute rating scale


smozoma

Recommended Posts

How to.. just use the program that applies the hack!

smozROM hack applicator

NOSE screenshot showing the new ratings:

post-253-052766000 1283476509_thumb.png

You have to update some files in NOSE to get the new ratings. Read "NOSE Update.html" in the smozROM zip package.

If upgrading your ROM to 0-15 ratings, here are approximate ratings translations.. Each point out of 6 is worth 2.5 points out of 15, so not all values can be mapped exactly. I chose to make 1 a little better, 3 a little better, and 5 a little worse.

0 => 0

1 => 3

2 => 5

3 => 8

4 => 10 (A)

5 => 12 (C )

6 => 15 (F)

(If anyone really cares about the underlying assembly code changes, I could post that, too...)

Link to comment
Share on other sites

  • 13 years later...

@smozoma I've been trying to figure out how the Displayed Rating Values are calculated in the ROM. I can see with Weight that there is merely a base weight figure that is set, with each additional Weight "point" adds an increment of 8 above that. But for this… how did you adjust this? I can't figure out if there is a multiplier variable set to 7, or a lookup table, or whatever. You must have done SOMETHING, but I can't figure out what it is. Any insight as to how the displayed values is handled, a HEX address to a multiplier, any insight whatsoever would be greatly appreciated!

  • Like 1
  • Haha 1
Link to comment
Share on other sites

1 hour ago, AdamCatalyst said:

@smozoma I've been trying to figure out how the Displayed Rating Values are calculated in the ROM. I can see with Weight that there is merely a base weight figure that is set, with each additional Weight "point" adds an increment of 8 above that. But for this… how did you adjust this? I can't figure out if there is a multiplier variable set to 7, or a lookup table, or whatever. You must have done SOMETHING, but I can't figure out what it is. Any insight as to how the displayed values is handled, a HEX address to a multiplier, any insight whatsoever would be greatly appreciated!

I second that, just did my first 0-15 rom and had a lot of similar questions.

Link to comment
Share on other sites

1 hour ago, AdamCatalyst said:

@smozoma I've been trying to figure out how the Displayed Rating Values are calculated in the ROM. I can see with Weight that there is merely a base weight figure that is set, with each additional Weight "point" adds an increment of 8 above that. But for this… how did you adjust this? I can't figure out if there is a multiplier variable set to 7, or a lookup table, or whatever. You must have done SOMETHING, but I can't figure out what it is. Any insight as to how the displayed values is handled, a HEX address to a multiplier, any insight whatsoever would be greatly appreciated!

I was gonna say you're working on NHL94 on Thanksgiving but your Canadian. Your Thanksgiving was weeks ago.

Link to comment
Share on other sites

2 hours ago, AdamCatalyst said:

@smozoma I've been trying to figure out how the Displayed Rating Values are calculated in the ROM. I can see with Weight that there is merely a base weight figure that is set, with each additional Weight "point" adds an increment of 8 above that. But for this… how did you adjust this? I can't figure out if there is a multiplier variable set to 7, or a lookup table, or whatever. You must have done SOMETHING, but I can't figure out what it is. Any insight as to how the displayed values is handled, a HEX address to a multiplier, any insight whatsoever would be greatly appreciated!

IIRC it's a lookup in the .ini. For each 0-15 value, there is a corresponding string. That's how I got it to show the "(4/6)" etc equivalencies.

Link to comment
Share on other sites

2 hours ago, smozoma said:

IIRC it's a lookup in the .ini. For each 0-15 value, there is a corresponding string. That's how I got it to show the "(4/6)" etc equivalencies.

Thanks for the reply to a 13-year old thread!

My apologies, but I meant in the ROM, not NOSE. How did you get 0-15 ratings to scale differently in the ROM? I tried to retrace your steps, and really haven't been able to figure out what witchcraft you did here. If you still had your old notes, or spreadsheet, or whatever, I'd love to take a look.

Link to comment
Share on other sites

@AdamCatalyst I sent you a message with my distillation of editing weights as displayed in the game as explained to me by Smozoma earlier [if that is what you were referring to specifically] and if it isn't, it is really interesting nonetheless.

@smozoma As an aside perhaps to the Overall player rating in a 0-15 scale as interpreted by the ROM, I had made a test game where all of the player attributes were set to the same value [all 1s, 2s, 3s, etc...] and I was noticing that I was getting an overall of 99 with all D's, E's and F's and all B's and C's were already over 90. [I'll send some screen shots later to explain better, but I'm supposed to be finishing my breakfast and getting ready for work, not doing research for a game] I suppose that this is an extreme case and not how the player attributes are supposed to be used in a "real" game, but it just seemed like something was off, if the top third of available rating options all gave you a score in the top 10%.

Link to comment
Share on other sites

16 hours ago, smozoma said:

I think this still applies to the 0-15 ratings?

 

Sorry, I think that I must be confusing everyone. I'm not talking about NOSE or Overall Ratings. Please let me start over.

  • In the original 0-6 rating system, rating an Attribute "2" would translate to the ROM showing a Displayed Value of "42" for that attribute.
     
  • However, with your 0-15 system, giving that same Attribute a rating of "2" would translate to the ROM showing a displayed value of "32" for that attribute. 

My question, is why or how? I hypothesize that there is either a multiplier value somewhere (e.g. "take 0-15 rating and multiply by "7" for Displayed Value), or perhaps a look-up table, or perhaps something else entirely. Whatever it is, I would love to know more!

 

 

 

 

Edited by AdamCatalyst
clarity
  • Thanks 1
Link to comment
Share on other sites

2 hours ago, AdamCatalyst said:

Sorry, I think that I must be confusing everyone. I'm not talking about NOSE or Overall Ratings. Please let me start over.

  • In the original 0-6 rating system, rating an Attribute "2" would translate to the ROM showing a Displayed Value of "42" for that attribute.
     
  • However, with your 0-15 system, giving that same Attribute a rating of "2" would translate to the ROM showing a displayed value of "32" for that attribute. 

My question, is why or how? I hypothesize that there is either a multiplier value somewhere (e.g. "take 0-15 rating and multiply by "7" for Displayed Value), or perhaps a look-up table, or perhaps something else entirely. Whatever it is, I would love to know more!

 

 

Ahh I'll have to look it up.

I think for the 0-6 rating, to accomplish multiplying by 18 they did a left bit shift 4 (effectively multiply by 8), add the original value (x8+x1), then left shift 1 more bit ((x8+x1)x2).

So I probably did, left bit shift 4 (x8), subtract original value (x8-x1 = x7).

And the location for that can be found in the source of smozROM.

 

  • Thanks 1
Link to comment
Share on other sites

2 hours ago, von Ozbourne said:

@AdamCatalyst I sent you a message with my distillation of editing weights as displayed in the game as explained to me by Smozoma earlier [if that is what you were referring to specifically] and if it isn't, it is really interesting nonetheless.

@smozoma As an aside perhaps to the Overall player rating in a 0-15 scale as interpreted by the ROM, I had made a test game where all of the player attributes were set to the same value [all 1s, 2s, 3s, etc...] and I was noticing that I was getting an overall of 99 with all D's, E's and F's and all B's and C's were already over 90. [I'll send some screen shots later to explain better, but I'm supposed to be finishing my breakfast and getting ready for work, not doing research for a game] I suppose that this is an extreme case and not how the player attributes are supposed to be used in a "real" game, but it just seemed like something was off, if the top third of available rating options all gave you a score in the top 10%.

Hmm.. I might have calibrated to the existing players. If you approximate some good players (outside of Roenick, Mogs, Lemieux, who should be 99), how do the ratings compare? Especially try some "overrated" (Gretz?) and "underrated" (Klima?) players from the original game's rating scheme.

 

Also note that B is higher than 4 in the original scheme. So a player who is all Bs is better than Muller (or is equal to a maximally hot Muller, or almost half-way to a player who is all 5s).

Link to comment
Share on other sites

2 hours ago, smozoma said:

Ahh I'll have to look it up.

I think for the 0-6 rating, to accomplish multiplying by 18 they did a left bit shift 4 (effectively multiply by 8), add the original value (x8+x1), then left shift 1 more bit ((x8+x1)x2).

So I probably did, left bit shift 4 (x8), subtract original value (x8-x1 = x7).

And the location for that can be found in the source of smozROM.

 

THANK-YOU!!! Will go search to see if I can find that in the source.

After @von Ozbourne shared that Weight info over PM, I realized that Attribute calculations are x8, then bit shifted to force a cheap round down. Dropping it down to a x7 seems like an inexpensive way to compensate.

Link to comment
Share on other sites

I was able to find where the Overall Ratings are knocked down by by 1x for a net 7x instead of 8x, but haven't been able to find the same for the Attributes. I'm borderline just thinking of changing each byte one at a time, to see what they do.

Link to comment
Share on other sites

2 hours ago, AdamCatalyst said:

I was able to find where the Overall Ratings are knocked down by by 1x for a net 7x instead of 8x, but haven't been able to find the same for the Attributes. I'm borderline just thinking of changing each byte one at a time, to see what they do.

Here is the smozROM bits for the 0-15 ratings.

Look at the areas pointed to by the 0x###### addreses.

Or look for those hex strings that were inserted.

 

                # 0-15 player ratings scale
                if "0-15 player ratings scale" in hacksFound:
                    overwriteHex("3F03E543D65F", ROM, 0x0F711C)
                    overwriteHex("2F0E 4278 D6CE 4278 D6D0 2C7C 000F AB3C B8B9 0001 9420 6600 0008 2C7C 000F AB1C B8B9 0001 9582 6600 0008 2C7C 000F AB2C 206A 001E 49EA 01A2 4281 3200 E941 D9C1 D9FC 0000 0010 D0D0 D0D0 5048 51C8 FFFA 4240 4241 740F 4844 0504 6700 0092 3602 E24B 4443 1630 30FF 0802 0000 6700 0004 E84B 0243 000F B47C 000D 6600 0006 6000 0068 B47C 0006 6700 0060 48E7 0700 1A36 2000 4885 BA7C 0002 6700 0010 3F03 5545 D657 51CD FFFC E243 4A5F 4CDF 00E0 BDFC 000F AB3C 6700 001C 4442 3F07 1E34 20FF 4887 DF78 D6CE 5278 D6D0 3E1F 4442 6000 0018 3F03 E943 D657 D65F 4442 D634 20FF 6A00 0004 4203 4442 D043 0641 0064 51CA FF68 BDFC 000F AB3C 6700 001C 323C 0064 48E7 0300 3C38 D6CE 48C6 3E38 D6D0 8DC7 D046 4CDF 00C0 B041 6D00 0006 3200 5340 2C5F 4E75", ROM, 0x0FA9F8)
                    hackcode = "B068001A670000083168001A001C4E75"
                    where = findHex(hackcode, ROM)
                    if where > -1:
                        overwriteHex("ff" * len(bytearray.fromhex(hackcode)), ROM, where)


                # New overall rating formulas for 0-15 ratings
                if "New overall rating formulas for 0-15 ratings" in hacksFound:
                    overwriteHex("0202 0202 0406 0204 0204 0606 0402 0202 0202 0202 0202 0202 0909 0202 0902 0202 0202 0202 0202 0202 0202 0202 0202 0202", ROM, 0x0FAB1C)
                    overwriteHex("1FBA", ROM, 0x019420)
                    overwriteHex("130F", ROM, 0x019582)

 

Link to comment
Share on other sites

On 11/24/2023 at 9:58 AM, von Ozbourne said:

@AdamCatalyst I sent you a message with my distillation of editing weights as displayed in the game as explained to me by Smozoma earlier [if that is what you were referring to specifically] and if it isn't, it is really interesting nonetheless.

@smozoma As an aside perhaps to the Overall player rating in a 0-15 scale as interpreted by the ROM, I had made a test game where all of the player attributes were set to the same value [all 1s, 2s, 3s, etc...] and I was noticing that I was getting an overall of 99 with all D's, E's and F's and all B's and C's were already over 90. [I'll send some screen shots later to explain better, but I'm supposed to be finishing my breakfast and getting ready for work, not doing research for a game] I suppose that this is an extreme case and not how the player attributes are supposed to be used in a "real" game, but it just seemed like something was off, if the top third of available rating options all gave you a score in the top 10%.

After tracking down the smozROM code (above), I think the problem was that I didn't change how the ratings are processed, I just changed the multipliers. The regular system uses a lot of 2s and 3s (which are encoded as 04 and 06), but I had to reduce it to mostly 1s (encoded as 02) to get the rating down to the 25-99 range. So a lot of the nuance is gone because most things need to be rated x1. 

Link to comment
Share on other sites

2 hours ago, smozoma said:

After tracking down the smozROM code (above), I think the problem was that I didn't change how the ratings are processed, I just changed the multipliers. The regular system uses a lot of 2s and 3s (which are encoded as 04 and 06), but I had to reduce it to mostly 1s (encoded as 02) to get the rating down to the 25-99 range. So a lot of the nuance is gone because most things need to be rated x1. 

I finally had some time to examine this closer and I think that you caught it already. Looking at the 0-6 rating here.
image.png

Judging by that, as you said, the 0-15 seems to just add more increments to the pre-established scale. I guess it just threw me off because perhaps in the 0-6 scale, 6 is considered "super human" and used sparingly, but they still wanted those 3s and 4s to seem respectable rather than have the median be actually 50%.

Maybe it's just a me thing, but I would figure that to make better use of the added increments, the numbers could be something like 0=20 and each increment could increase that number by a flat value of 6. This would result in E=104 and F= a "superhuman" 110. Obviously this is just a preference based on a compulsion for equal numbers, but without the ability to do it myself, I can't really flex any authority on the matter. It just seemed like a missed opportunity to me to not take advantage of the extra nuance afforded by the new scale, but again as you say, one is still beholden to the limits of the code in which the game was built.

  • Like 1
Link to comment
Share on other sites

  • 2 months later...

I was unable to get this to work sadly. After properly applying the update and replacing the ini files, and then attempting to open the updated NHL94 rom file in NOSE, I get that message saying this does not appear to be a usable rom. Any ideas? 

Edited by NotJustGamesThisIsMyLife
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...