Jump to content
NHL'94 Forums

Recommended Posts

Posted

Official release date of the 1.0 ROM is January 1st, 2026.

Before we get to that, I need to write up how fighting works. It is mostly based on the same method as NHLPA93.

 

How it works in NHLPA93:

The game keeps tracks of a value I will call Check Count. Every time a player falls to the ice from a check, a number is added to the Check Count value, regardless of Home or Away teams. It is a total of checks for both teams. In normal cases, a 1 will be added to the value. If the player has a Fight attribute of 0 (which would be an H/F attribute of 0 or 1), 2 will be added to the value.

 

During every player-player contact (does not have to be a body check), there is a check for fighting. First, there are a number of things that need to be checked before it considers a fight:

- Impact needs to be more than 10 decimal (little bumps are less than this)
- Players cannot be in the locked in an animation (think laying on the ice as an example)
- Players cannot be called for a delayed penalty
- Players cannot be goalies
- Clock has to be running
- Can't be a game highlight
- Checks the fight flag of the puck. I don't know why, it doesn't seem ever to be set.
- Cant be on a faceoff

After those checks, it will do some math with the Check Count and the players' Fight values:

Starting value of 40 decimal:

Takes result of 40 - CheckCnt, and divides it by 4. Then adds 10 decimal to the result.

(40 - CheckCnt) / 4  + 10 = X

Next, it takes the player who initiated contact, and compares their fight value to X. If the fight value is less than X, exit.
If the player passes the test, then it will look at the other player involved in contact, and compare their fight value to 2. If their fight value is less than 2, then it will exit the checkfight routine completely. It will repeat this whole check for the second player (swaps the 2 players for comparison).

First, you need to have enough CheckCnt. If your CheckCnt is 40, then one of the players need a minimum of 10 fight attribute, and the other player needs a minimum of 2 fight attribute to continue with checks. If you have a CheckCnt of 32, then one of the players needs a minimum of 12 fight attribute (fight attribute is always even), and so on.  This is the main limiting factor.

Should note: a 10 in fight attribute = a 71  on the attribute display pages in the game (Edit Lines screen or Team Roster). 

OK, so the 2 players met the above criteria, what check is next? 

The code looks at the ChksF of player with the lower fight attribute:

ChksF of player x 2 = Y

-Y + 16 decimal = Z

If Z is greater than the player's Fight attribute, exit.

If Z is less than the player's Fight attribute, then the fight starts.

The player with the lower Fight attribute needs to have a minimum amount of ChksF. If the player has a 2 Fight (the minimum for fighting), they need at least 7 ChksF. If the player has a 6 Fight, they need at least 5 ChksF.

 

OK, so the fight is a go. The code will first see if it will assign an Instigator penalty to the team of the player who initiated the fight (the player with the higher Fight in most cases). If penalties are off, it will skip this step:

Take the frame counter, and pass the first 2 bits. If they are 0, an Instigator penalty will be assigned to the first available player on the ice for that team (not a goalie, not the fighter, not a player who is "unavailable" (i.e. going to the bench)).

If the bits are not 0, there is no Instigator penalty.

 

Before the fight starts, The CheckCnt variable is cleared, along with all the ChksF for the players on each team. The crowd is excitement is boosted, players are put into position for fighting, scrolling is locked, and assignments are given out (assfight for the players fighting, assfwatch for the players not fighting). The players who are not fighting, will look for checking opportunities, and these checks WILL COUNT towards the CheckCnt variable (remember it was cleared moments ago).

 

Gloves are dropped. Both players get assigned the Fighting penalty. Fight begins. The player's fight strength is based on their current energy level (line changes on, if not it's a set value) and their Fight attribute. 

Energy level, max is $1000 or 4096 decimal.

- Multiply energy level by Fight attribute.
- Divide by 256.
- Divide by 16. 
(This ends up as divide by 4096).
- Compare to 5, if lower, set to 5.

This is the player's fight strength.

A player who has a Fight attribute of 10, with line changes off (max energy), will have a strength of 10. A player with 8 Fight, max energy, will have a strength of 8.

Each taken punch will take 1 off their strength. The higher their strength, the farther the knock back from a connected punch (X velocity is affected).

If no one gets knocked down after a period of time (I forget what the time is), the fight will end and both players go to the box. If someone gets knocked down, the player standing is changed to the Fighting Win penalty (get a checkmark), and a possible injury is determined:

Injury?

Randomize a number from 0-60.

- Get winning fighter's Chk value (0-30 decimal scale, Chk attribute * 5 + Hot/Cold + 3rd Per Bonus)
- Compare the Chk value to the RNG number. If Chk value is higher, game injury with blood!! If lower, just a stunned loser.

 

The 5 min major for fighting is special. It's a major, so you don't lose a player on ice (you will for Instigator penalty), and the players don't come out of the box once the time is up. They will come out at the next whistle.

 

Differences in my 94 Patch:

There are 2 modes: ON and ON-Arcade mode. I'll go over the differences as needed.

The whole fight code is the same as 93 with some changes:

- I changed the value to compare CheckCnt to based on period length.

< 2 min  = 20
2-7 min  = 30
7-20 min = 40
>= 20 min  = 40

Checking league games with 5 min periods, there is an average of about 40 checks a game. Changing it to 30 would allow at least 1 fight in normal conditions.

- I changed minimum Fight attribute to start a fight based on mode:

On mode = 10 Fight attribute
Arcade mode = 6 Fight attribute

Minimum to join a fight:

2 for both modes

- I changed the minimum ChksF starting value based on period length:

Remember, this value is halved in the calculation

<2 min = 8
2-7 min = 8
7-20 min = 16
>= 20 min = 16

 - I also changed the RNG for injury for Arcade mode, to risk more injuries:

ON mode = 0-60 RNG
Arcade mode = 0-45 RNG

- I set it so there are no fights during OT

- I removed the reset of the ChksF for all players (this would really mess with stats on the site). I don't think this is a big factor in repeated fights by the same player.

NOTE: These values are customizable in the ASM file for the patch. They are labeled and located near the top for easy access.

ROM Changes:

Because of the minimum Fight being so high (10), there were only 17 players in the original 94 ROM who could start a fight, compared to 83 in NHLPA93:

 

Stu Grimson			ANH	F
Grant Ledyard			BUF	D
Gord Donnelly			BUF	D
Brad May			BUF	F
Rob Ray				BUF	F
Craig Berube			CGY	F
Bob Probert			DET	F
Louie DeBrusk			EDM	F
Kelly Buchberger		EDM	F
Dave Manson			EDM	D
Mike Peluso			OTW	F
Shawn Cronin			PHI	D
Jay Caufield			PIT	F
Tony Twist			QUE	F
Basil McRae			STL	F
Ken Baumgartnr			TOR	F
Gino Odjick			VAN	F

So, I scoured the internet for more info on fights from 92-93. @77 recommended - https://web.archive.org/web/20190207030347/http://www.dropyourgloves.com/Fights/LeagueSeason.aspx?League=1&Season=1993

I also used hockeyfights.com as a second source. 

I adjusted H/F for some players based on # of fights and historical significance. I made sure every team has at least one player with 10 fighting or above. Most of these guys are on the bench. 

You can see the list of players from the attached sheet. There are now 58 players with 10 or higher Fight rating (look at H/F column, and round down to nearest even number)

Hope you enjoy the ROM! Let me know if there are any questions!

 

Fighting Players.xlsx

  • Love 5
  • Wow 1
Posted
12 minutes ago, UltraMagnus said:

Makes me wonder why 95 removed the code but left the sprites

I'm not sure they ever put the code in, just put the sprites in. They didn't leave any trace of code in 95 when I checked last. Might be possible for 95 once its disassembled a bit more.

  • Love 1
Posted
1 minute ago, chaos said:

I'm not sure they ever put the code in, just put the sprites in. They didn't leave any trace of code in 95 when I checked last. Might be possible for 95 once its disassembled a bit more.

I've begun it and actually started with the season mode if there is anyway of expanding the number of teams. I've found some spots but expanding it will just need a bit more time. 

Posted
19 hours ago, chaos said:

NHLPA93

I am curious about this part actually. I know '93 still had the 0-15 scale and '94 the 0-6 scale by default.

Will the ratings line up the same way whether you are using 0-6 of smoz's 0-15, or since it is tied to the handedness anyway is it just operating on an independent scale.

Posted
1 hour ago, von Ozbourne said:

I am curious about this part actually. I know '93 still had the 0-15 scale and '94 the 0-6 scale by default.

Will the ratings line up the same way whether you are using 0-6 of smoz's 0-15, or since it is tied to the handedness anyway is it just operating on an independent scale.

Fighting in 94 still uses 0-15 scale, because hot/cold and team bonuses aren't applied to it. Lesser and Co switched the other attributes to 0-6 because of the bonuses, the logic still functions internally on a 0-30 scale like 93 and 92 for those attributes.

0-6 attribute * 5 + bonuses, maxing out at 30

Posted

Hi @chaos - I'm working on updating the ratings for the '26 ROM. I've been using "How Injuries Work" to rate the H/F previously, does the patch override the calculation of being injured for the period or game?

Goes without saying, amazing work.

 

Posted
5 minutes ago, Jkline3 said:

Hi @chaos - I'm working on updating the ratings for the '26 ROM. I've been using "How Injuries Work" to rate the H/F previously, does the patch override the calculation of being injured for the period or game?

Goes without saying, amazing work.

 

Thanks bud!

No, injuries for the game will still work the same. The H/F will also affect who fights as well.

  • Love 1

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.

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

    • There are no registered users currently online
×
×
  • Create New...