Jump to content
NHL'94 Forums

HOW TO: Fix The Missing 2nd Assist Bug


smozoma

Recommended Posts

There is a bug in the game where it cuts out the second assist on a play if the goal scorer and 1st assister pass between each other twice. For example, if player A passes to B, B passes to C, C passes back to B, and B scores, A doesn't get the assist he deserves.

Download this patcher program to add the hack to your own ROMs. Unzip it, and just drag-and-drop your ROMs onto the program in order to patch them. NHL94 only (might work with NHL93, but I haven't tried it)

AssistBugFix1.0.zip

For those interested in the technical side of the hack, here are the details:

================================================================================
SECOND ASSIST BUG FIX
--------------------------------------------------------------------------------
This fixes the bug where the 3rd player on a play does not get an assist if the
other two players pass the puck back and forth.  For example, if player A
passes to player B, B passes to C, C passes back to B, and B scores, A doesn't
get an assist, but he should.

If you open an NHL94 ROM in a hex editor and go to the end, you'll see a bunch 
of "FFFFFF...".  This is empty space in the ROM.  I use this empty space to add
new code to the ROM.  When I want to change the behaviour of the original code,
I overwrite the original code with code that tells the ROM to look at my code
at the end of the ROM (using a "JSR" instruction).  My code then does what I 
want to do (like add 1 check to a player who did a check).  Then at the end of 
my code, I jump back to place after my "JSR" instruction, to keep doing whatever
the game was doing before.

When a fix adds code at the end of the ROM, let "iiiiiiii" be the 
location of the unused code section of the ROM (the "FF" bytes, 
so iiiiiiii is where those FFs start. For example, 000ffac2 for a 
28-team ROM and 001E2092 for a 30-team ROM).  The last number should always be 
even (0,2,4,6,8,A,C,E).

Variables/Registers/Constants used in this hack:
D0 (16-bit) is the index of the last player to touch to the puck
(A0) is the start of the home or away team's Game Stats structure
$0018 is the offset to "current / last person to touch puck" (i.e. goal scorer)
$001A is the offset to "first assist"
$001C is the offset to "second assist"
Use Word operations (.W)


@ 00010188
::Old::
31 68 00 1A 00 1C	-- MOVE.w  $001A(A0),$001C(A0)
::New::
4E B9 ii ii ii ii	-- JSR     $iiiiiiii (I use $000ffb1e)	-- jump to new code at end of ROM
for pasting in hex editor: 4EB9000FFB1E

@ 000F6CE4
::Old::
31 68 00 1A 00 1C	-- MOVE.w  $001A(A0),$001C(A0)
::New::
4E B9 ii ii ii ii	-- JSR     $iiiiiiii (I use $000ffb1e)
for pasting in hex editor: 4EB9000FFB1E

@ iiiiiiii (empty space at end of ROM.  I use $000ffb1e)
B0 68 00 1A	  	-- CMP.W	$001A(A0),D0		-- is new current player EQ 1st assist?
67 00 00 08	  	-- BEQ  	#$0008				-- if EQ skip next instruction
31 68 00 1A 00 1C	-- MOVE.w   $001A(A0),$001C(A0)	-- overwrite 2nd assist with 1st assist
4e 75				-- RTS							-- go back to where we did JSR
for pasting in hex editor: B068001A670000083168001A001C4E75

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

Edited by smozoma
Link to comment
Share on other sites

Smoz,

I love the dedication to figuring more stuff out with the game. That 2nd assist bug is always annoying.

-Evan

hacking the game is so addictive :blink:

I updated my post above, with the info for the hack.

A patcher program is attached, too. You just drag-and-drop a ROM onto the executable and then tell it what name to use to save the patched ROM as.

Link to comment
Share on other sites

Cool hack Smoz

Tried it in NHL 93. It also works. :D

Your expanation of the hack was a big help

cool stuff, never thought about applying it to the other games. good to know these things transfer well :)

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...