Scribe99 Posted August 6, 2008 Report Share Posted August 6, 2008 The 93s etc? Nope, I haven't looked at them at all. Maybe some day... No I meant the hacked or edited '94 roms. Quote Link to comment Share on other sites More sharing options...
smozoma Posted August 10, 2008 Author Report Share Posted August 10, 2008 No I meant the hacked or edited '94 roms. It should work with any 94 rom, as long it has been through NOSE at some point. you can take, say, a GDL rom, and apply the patch to that. Quote Link to comment Share on other sites More sharing options...
smozoma Posted August 12, 2008 Author Report Share Posted August 12, 2008 New ROM with 3 new features: 1. Check ability is calculated as (6*wgt + 10*chk - 12) instead of (8*wgt). Ability to take a hit is still (8*wgt). This formula scales well for players of different weights. Heavy guys: Bourque (wgt=10, chk=6): his checking ability is no longer (8*10)=80, it is now (6*10+10*6-12)=108. He could check himself, because his checking rating is good. He can now usually check guys up to wgt=13. McSorley (wgt=14,chk=3): (6*14+10*3-12)=102 compared to (8*14)=112. He can't check himself because he's no good at checking (3 is bad if you're that heavy!). He can usually check guys up to wgt=12. Light guys: Fleury (wgt=3, chk=4): (6*3+10*4-12)=46 , (8*3)=24. He can check himself, and guys up to wgt=5 (usually). When you're light, a 3+ in checking gives you bonus, whereas if you're heavy, a 3 actually makes you less effective! neat! Even if Fleury's checking were just 3, he'd have a checking ability of 36, so he could check guys with wgt=4. I'll make an excel table some time... There are 3 'crossover' points, where guys hit like normal. wgt=4,chk=2. If a guy has wgt=4 and chk=2, he checks like normal. If he has chk=3+, he gets bonus. wgt=9,chk=3. if a guy with wgt=9 has chk=4+, he gets bonus. 2 or less, penalty. wgt=14,chk=4. 5+ = bonus. 3 or less, penalty 2. Checks after the whistle no longer count in the stats. 3. If you go into the Player Stats page in the pause menu... You can see how many checks each player has dished out! Updated patcher to come eventually... NHL94_ChkStats080811.bin Quote Link to comment Share on other sites More sharing options...
Inklings Posted August 14, 2008 Report Share Posted August 14, 2008 New ROM with 3 new features:1. Check ability is calculated as (6*wgt + 10*chk - 12) instead of (8*wgt). Ability to take a hit is still (8*wgt). This formula scales well for players of different weights. Heavy guys: Bourque (wgt=10, chk=6): his checking ability is no longer (8*10)=80, it is now (6*10+10*6-12)=108. He could check himself, because his checking rating is good. He can now usually check guys up to wgt=13. McSorley (wgt=14,chk=3): (6*14+10*3-12)=102 compared to (8*14)=112. He can't check himself because he's no good at checking (3 is bad if you're that heavy!). He can usually check guys up to wgt=12. Light guys: Fleury (wgt=3, chk=4): (6*3+10*4-12)=46 , (8*3)=24. He can check himself, and guys up to wgt=5 (usually). When you're light, a 3+ in checking gives you bonus, whereas if you're heavy, a 3 actually makes you less effective! neat! Even if Fleury's checking were just 3, he'd have a checking ability of 36, so he could check guys with wgt=4. I'll make an excel table some time... There are 3 'crossover' points, where guys hit like normal. wgt=4,chk=2. If a guy has wgt=4 and chk=2, he checks like normal. If he has chk=3+, he gets bonus. wgt=9,chk=3. if a guy with wgt=9 has chk=4+, he gets bonus. 2 or less, penalty. wgt=14,chk=4. 5+ = bonus. 3 or less, penalty 2. Checks after the whistle no longer count in the stats. 3. If you go into the Player Stats page in the pause menu... You can see how many checks each player has dished out! Updated patcher to come eventually... NHL94_ChkStats080811.bin WOW! major props dude. This such a huge step for the nhl94 community! Quote Link to comment Share on other sites More sharing options...
Bo Knows NHL94 Posted August 15, 2008 Report Share Posted August 15, 2008 Yeah all this is so awesome, great work! I can't wait to play a league with these updates, this would give a draft league so much more variety instead of just how light can i go Quote Link to comment Share on other sites More sharing options...
smozoma Posted September 16, 2008 Author Report Share Posted September 16, 2008 (edited) For those interested, here are my notes on how to do the weight bug fix and the wgt+chk hack. If you want to add the weight bug fix or checking hack to your ROM, talk to me on AIM and I'll try to help out (it's not that hard, though I make it look pretty confusing here!). a line of code in my notes might look like this: 52 28 01 1C -- ADDQ.B #1,$011C(A0) -- increment check value 52 28 01 1C is the actual code that you put in the ROM using a hex editor ADDQ.B #1,$011C(A0) is what the hex code translates to in assembly code increment check value is my description of what the code/instruction does 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 "gggggggg" or "gg:gggg" be the location of the unused code section of the ROM (the "FF" bytes, so gggggggg is where those FFs start. For example, 00fffac2 for a 28-team ROM and 01E2af2 for a 30-team ROM). The last number should always be even (0,2,4,6,8,A,C,E). ================================================================================ SIMPLE WEIGHT BUG FIX - CHECKING BASED ONLY ON WEIGHT -------------------------------------------------------------------------------- This hack doesn't involve using the empty space at the end of the ROM. You just need to change 2 values in the original ROM (switch 2a and 2b). Easiest hack ever! (A2) is the info array of the player getting checked (A3) is the info array of the player trying to check @ 01:3D72 ::Old:: 90 2b 00 67 - SUB.B #$0067(A3),D0 - sub guy checking's (wgt*8) d0 2a 00 67 - ADD.B #$0067(A2),D0 - add guy getting checked (wgt*8) ::New:: 90 2a 00 67 - SUB.B #$0067(A2),D0 - sub guy getting checked (wgt*8) d0 2b 00 67 - ADD.B #$0067(A3),D0 - add guy checking's (wgt*8) ================================================================================ IMPROVED WEIGHT BUG FIX - CHECKING BASED ON WEIGHT AND CHECKING ATTRIBUTE -------------------------------------------------------------------------------- (A2) is the info array of the player getting checked (A3) is the info array of the player trying to check Make sure the bytes at 01:3D70 are E3 40 @ 01:3D72 ::Old:: 90 2b 00 67 -- SUB.B #$0067(A3),D0 -- sub guy checking's (wgt*8) d0 2a 00 67 -- ADD.B #$0067(A2),D0 -- add guy getting checked (wgt*8) ::New:: 4e b9 gggg gggg -- JSR $(empty code) 4e 71 -- NOP @ gg:gggg ::Old:: FF FF FF FF ... ::New:: 3F 01 -- MOVE.W D1,-(A7) -- push d1 90 2a 00 67 -- SUB.B #$0067(A2),D0 -- sub guy getting checked (wgt*8) -- (let x = current value of d0, which is $78 or $F0) 12 2B 00 67 -- MOV.B #$0067(A3),D1 -- d1 = ckr wgt -- d1 = wgt*8 E2 01 -- ASR.B #1,D1 -- d1 /= 2 -- d1 = wgt*4 D0 01 -- ADD.B D1, D0 -- d0 += d1 -- d0 = x + wgt*4 E2 01 -- ASR.B #1,D1 -- d1 /= 2 -- d1 = wgt*2 D0 01 -- ADD.B D1, D0 -- d0 += d1 -- d0 = x + wgt*6 12 2B 00 75 -- MOV.B #$0075(A3),D1 -- d1 = ckr chk -- d1 = chk*5+0.5 (the bonus averages about 0.5) E3 01 -- ASL.B #1,D1 -- d1 *= 2 -- d1 = chk*10+1 D0 01 -- ADD.B D1, D0 -- d0 += d1 -- d0 = x + wgt*6 + chk*10+1 04 00 00 0E -- SUBI.B #$0E, D0 -- d0 -= 14 -- d0 = x + wgt*6 + chk*10+1 - 14 32 1F -- MOVE.W (A7)+,D1 -- pop d1 4e 75 -- RTS You can change the value subtracted with the SUBI.B to make it harder or easier to check, overall. Subtract less to make it easier to check, subtract more to make it harder. I chose 14 because it made the average of the formula equal to the average wgt*8. wgt*8 is the check resistance of the players. ================================================================================ CHECK STATS -------------------------------------------------------------------------------- This replaces the PIM stat in the Player Stats screen with CHK (checks) per player. It also adds a Checks Against stat per player (overwriting the original hidden check stat). (A0) is $C6CE or $CA32, the start of the home or away team stats, respectively. (A2) is the info array of the player getting checked (A3) is the info array of the player giving the check Replace "PIM" text with "CHK" in Player Stats screen. @ 00:993F ::Old:: 50 49 4D -- PIM -- ASCII text "PIM" ::New:: 43 48 4B -- CHK -- ASCII text "CHK" Replace the "increment team and player check count" with a jump to custom code: @ 01:4130 ::Old:: 52 68 00 10 -- ADDQ.W #1,$0010(A0) 42 40 -- CLR.W D0 10 2B 00 66 -- MOVE.b $0066(A3),D0 -- d0 = player index/offset in team D0 C0 -- ADDA.W D0,A0 -- a0 += player index/offset 52 28 01 1C -- ADDQ.B #1,$011C(A0) -- increment check value (we can change the value of A0 because it isn't used later until reset to another value) ::New:: 4e b9 gggg gggg -- JSR $gggggggg 4e 71 4e 71 -- NOP, NOP 4e 71 4e 71 -- NOP, NOP 4e 71 Here is our custom code: @ hh:hhhh ::Old:: FF FF FF FF ... ::New:: 1. Increment team check count 52 68 00 10 -- ADDQ.W #1,$0010(A0) -- inc team check count for the Game Stats -- screen (checks after the whistle count) 2. If the game is halted (whistle blown), branch to skip recording individual checks 08 39 00 00 00 ff c2 ea -- BTST #0,($00FFC2EA) -- if the bit not 0, we will branch 66 00 00 2A -- BNE $002A -- branch to the RTS to skip checks after whistle (NOTE: if you want to also not count checks after the whistle in the Game Stats screen, then move the "1." code below "2." and change "66 00 00 2A" to "66 00 00 2E") 3. Increment check (for) count for individual players 42 40 -- CLR.W D0 10 2B 00 66 -- MOVE.b $0066(A3),D0 -- d0 = player index (offset in team) D0 C0 -- ADDA.W D0,A0 -- a0 += player index 52 28 01 02 -- ADDQ.B #1,$0102(A0) -- increment check value 4. Increment check (against) count for individual players 90 C0 -- SUBA.W D0, A0 -- undo the ADDA.W above 90 FC 03 64 -- SUBA.W #$0364,A0 -- back up A0 to Home Players stat array B7 CA -- CMPA.L a2,a3 -- cmp a3-a2 (cmp checker-checkee) 6E 00 00 06 -- BGT #$0006 -- if a3-a2 is positive, it's a check against -- a home player, so skip next instruction D0 FC 06 C8 -- ADDA.W #$06C8,A0 -- go to Away Players stat array 42 40 -- CLR.W D0 -- set D0 to zero 10 2A 00 66 -- MOV.B #$0066(A2),D0 -- set D0 = player index of checked player D0 C0 -- ADDA.W D0,A0 -- a0 += player index 52 28 01 1C -- ADDQ.B #1,$011C(A0) -- increment check against value 5. return 4e 75 -- RTS Don't write PIM stat -- we're using that memory for check stats! @ 01:2302 ::Old:: D5 32 00 00 -- ADD.B D2,$00(A2,D0) ::New:: 4E 71 4E 71 -- NOP NOP ================================================================================ Edited September 26, 2008 by smozoma Quote Link to comment Share on other sites More sharing options...
metzgerism Posted September 26, 2008 Report Share Posted September 26, 2008 Smoz: What would happen if there were two 2Bs or two 2As in the code for the weight-bug? Quote Link to comment Share on other sites More sharing options...
smozoma Posted September 26, 2008 Author Report Share Posted September 26, 2008 Smoz: What would happen if there were two 2Bs or two 2As in the code for the weight-bug? even checking, with different weights. ie it'd behave as though 2 guys with equal weights were in a check, even though they actually have different weights. 90 2b 00 67 - SUB.B #$0067(A3),D0 - sub guy checking's (wgt*8) d0 2a 00 67 - ADD.B #$0067(A2),D0 - add guy getting checked (wgt*8) if you make them both 2b or both 2a, then you basically don't change the value of D0 at all. Quote Link to comment Share on other sites More sharing options...
Evan Posted November 28, 2008 Report Share Posted November 28, 2008 I'm actually going to check this out right now, no pun intended. This displays CHK instead of PIM, but the PIM stats are still recorded properly right? Great work! -Evan Quote Link to comment Share on other sites More sharing options...
smozoma Posted November 29, 2008 Author Report Share Posted November 29, 2008 I'm actually going to check this out right now, no pun intended. This displays CHK instead of PIM, but the PIM stats are still recorded properly right?Great work! -Evan I overwrote the PIM stats. When reading a save file for GDL or Blitz, you have to write code to inspect the Penalty Summary and count the PIMs for players manually. Quote Link to comment Share on other sites More sharing options...
Evan Posted November 29, 2008 Report Share Posted November 29, 2008 I overwrote the PIM stats.When reading a save file for GDL or Blitz, you have to write code to inspect the Penalty Summary and count the PIMs for players manually. Ahh I see. Ok, thanks for the info. Can't believe you've had time to work on these types of hacks. -Evan Quote Link to comment Share on other sites More sharing options...
HABS Posted January 5, 2009 Report Share Posted January 5, 2009 can we sticky this thread pls. Quote Link to comment Share on other sites More sharing options...
smozoma Posted April 24, 2009 Author Report Share Posted April 24, 2009 I finally re-wrote the patcher program, so it works now. see original post Quote Link to comment Share on other sites More sharing options...
feivelclark Posted April 24, 2009 Report Share Posted April 24, 2009 (edited) I finally re-wrote the patcher program, so it works now. see original post w00000000000t. I actually hacked one ROM myself by following your notes but this will def. make everything alot easier. I also played your nhl94 rom which you posted before (the one with your weight fix and that tracks CHK) and ran a few demos. Boston is really brutal. Okay I patched some roms to include the CHK for and against stat. My question is if the CHK against stat is hidden then what purpose does it serve? Edited April 24, 2009 by feivelclark Quote Link to comment Share on other sites More sharing options...
smozoma Posted June 29, 2009 Author Report Share Posted June 29, 2009 Okay I patched some roms to include the CHK for and against stat.My question is if the CHK against stat is hidden then what purpose does it serve? The statistic is stored in a save state made at the end of the game, so it can be retrieved and displayed in a stats-enabled league like Blitz. see here: http://www.blitz94.com/playerstats.asp?ord...=false&lg=0 Russ Courtnall was the most-checked player in season 2 of Blitz Quote Link to comment Share on other sites More sharing options...
smozoma Posted June 29, 2009 Author Report Share Posted June 29, 2009 v1.2 Bug Fix: in the Game Stats screen, if you sorted on the "checks for" stat, it still had a title of "Penalty Minutes". Now says "Checks For". Quote Link to comment Share on other sites More sharing options...
trudatman Posted June 6, 2011 Report Share Posted June 6, 2011 just applied this hack (only the 2B<->2A part) to EA Hockey. I suppose it is now "right," but I don't know the players, any way. there was a question on the first page of this thread which I answered elsewhere, but seeing the question here made me want to add the answer here, as well. in SNES NHL '94, when you have so many players penalized that you run out of folks to skate, they get sprung, one by one, but the advantage still holds until the penalty time is up. when your team has so many injuries that you don't have enough uninjured humans to skate, guys suddenly feel better and rally. "I'm not dead, after all, coach." took me many tries to prove these facts. Quote Link to comment Share on other sites More sharing options...
CoachMac Posted April 10, 2013 Report Share Posted April 10, 2013 So if you make them both 2A or 2B, then weight is no longer a factor in checking? This seems to me to the best solution. I hate that weight is the most important factor in the game. The wt bug fix is great but it just reverses the problem. Some of the little guys were great checkers. Quote Link to comment Share on other sites More sharing options...
CoachMac Posted April 11, 2013 Report Share Posted April 11, 2013 (edited) Well after testing if you make them both 2A or both 2B. The rom will not open. This is in 93. So I guess that does not work. On a side note the weights in the game are all wrong. Gretzky, Fleury, Sweeney were all 180-190. So if that were correct wt bug would not matter as much. Edited April 11, 2013 by CoachMac Quote Link to comment Share on other sites More sharing options...
smozoma Posted April 12, 2013 Author Report Share Posted April 12, 2013 Well after testing if you make them both 2A or both 2B. The rom will not open. This is in 93. So I guess that does not work. On a side note the weights in the game are all wrong. Gretzky, Fleury, Sweeney were all 180-190. So if that were correct wt bug would not matter as much. Hm the ROM should open, unless the checksum routine is still in there. But you're right, setting them both to the same register will eliminate weight from the checking calculation. I'm not sure that the weights are particularly wrong. My hockey cards from that era line up pretty well with the game. Fleury is always listed as 160. Greztky, 170-175. Gilmour 170, Roenick 170... If you go by hockey-reference or hockeydb, then they will have their most recent playing weight, and players from that time tended to gain weight over their career (not sure if it's just normal, or it's that the conditioning levels improved so much over the course of the 90s) Quote Link to comment Share on other sites More sharing options...
CoachMac Posted April 12, 2013 Report Share Posted April 12, 2013 (edited) Wow is Hockeydb and Hockeyref off! I checked the Cards from then to and you are exactly right. The 2 web-sites list Roenick at 211 and 205. Sure not what he weighed in 91. Thanks for setting me straight. I still don't get why my roms won't open when I make them both the same. I am doing this with NHLPA 93 by the way. Thanks for your insight. Edited April 12, 2013 by CoachMac Quote Link to comment Share on other sites More sharing options...
smozoma Posted April 12, 2013 Author Report Share Posted April 12, 2013 I still don't get why my roms won't open when I make them both the same. I am doing this with NHLPA 93 by the way. Thanks for your insight. Is the ROM a 'brand new' never-edited NHLPA 93? The games have a built-in checksum routine, so that if the game has been modified (or maybe the ROM 'went bad' in the cartridge), the game just sits on a black screen. Here is wboy's way of killing the checksum Here is my easier way for NHL94 (might work for 93) Quote Link to comment Share on other sites More sharing options...
CoachMac Posted April 12, 2013 Report Share Posted April 12, 2013 Nope. It is not a brand new rom. It is a rom that I had already done the WBF to. I just went back in and tried to make them both the same. I tied both 2A and both 2B. I also ran it back thru NOSE. I will keep experimenting and report back. Quote Link to comment Share on other sites More sharing options...
smozoma Posted April 14, 2013 Author Report Share Posted April 14, 2013 Hm, it really doesn't make sense that the ROM wouldn't even load, because that code isn't used until a check takes place. My only guess is you accidentally deleted or added bytes to the ROM, which puts everything out of whack. Quote Link to comment Share on other sites More sharing options...
CoachMac Posted April 14, 2013 Report Share Posted April 14, 2013 Hooray! I finally got it to work. It does have to be run thru NOSE to fix the checksum. Thought I had done it. By the way I think the game plays best like this. WBX instead of WBF Needs more testing though. Quote Link to comment Share on other sites More sharing options...
ricci Posted May 6, 2013 Report Share Posted May 6, 2013 (edited) Hey, I've been doing some work on a NHL 93 rom and had some trouble adding IMPROVED WEIGHT BUG FIX - CHECKING BASED ON WEIGHT AND CHECKING ATTRIBUTE at the end of the rom. The rom would simply not read it. That said, at offset FF40 i decided to add the checking value $0075 in place of the weight value for the checkee so it was D02B 0075. Unfortunately this made it all but impossible to check accordingly I decided to swap the values of the checker and checkee. That is 902A 0075 and D02B 0067. That way the checking value of the checker is Multiplied by 8 and weight value of the checkee is multiplied by 5. As such the checking value plays and important role in checking. After that, I went into NOSE and swapped the weight value and checking value and went into Hexeditor changed the text "Weight" to "Checking" and "Checking" to "Balance" This change worked quite well. The rom doesn't allow you to check the weight of the players but allows you to tinker with the Checking values to alter the flow of the game. If anyone has any questions please let me know. Edited May 6, 2013 by ricci Quote Link to comment Share on other sites More sharing options...
CoachMac Posted May 6, 2013 Report Share Posted May 6, 2013 Nice job, can you post the rom? Quote Link to comment Share on other sites More sharing options...
ricci Posted May 12, 2013 Report Share Posted May 12, 2013 Sure, Its the 94-95 rosters and I added a couple teams. NHL 95-96-1.bin Quote Link to comment Share on other sites More sharing options...
kingraph Posted July 29, 2013 Report Share Posted July 29, 2013 I think it's important to highlight that this thread not only shows how to fix the weight bug, but this also has the explanation of how to hack the ROM to only count checks during the game (not after whistle). It's not talked about much, but in my opinion this is one of the greatest hacks out there! Especially for stat leagues. The checking stat is pretty meaningless without this hack applied. Yes GDL, I'm looking at you. Quote Link to comment Share on other sites More sharing options...
Brutus Posted July 29, 2013 Report Share Posted July 29, 2013 Should use this check hack for Classic. It was a stat that had to be deleted because the fix wasn't in. Gameplay is still the same. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.