Jump to content
NHL'94 Forums

AdamCatalyst

Members
  • Posts

    684
  • Joined

  • Last visited

  • Days Won

    87

Everything posted by AdamCatalyst

  1. Love it! Gotta keep things fresh somehow. Speaking of which, v3 with physics update is SO close. Just a little bit more testing. Any day now.
  2. Almost certainly, yes. Feed Claude.ai the code, and I suspect it will be able to isolate a key variable or equation that you can manipulate.
  3. Thanks for clarifying!
  4. Your improved weight bug fix wasn't wrong, it was the best solution we had for nearly two decades, improving the quality of countless games played. Just because I am trying to understand code better, some hypothetical questions. Here is the original code. 082B 0003 0062 6700 0004 E340 The C B bug fix removed the branch after the Test. 082B 0003 0062 4E71 4E71 E340 The new weight bug fix removes the Bit Shift that doubles the value from 120 to 240. 082B 0003 0062 6700 0004 4E71 If I understand correctly, couldn't all this code be changed to No-Op?
  5. An Experiment Hey man, so I've been playing with the aforementioned fix, and ran a few tests this morning. I thought you might be interested in the results. Methods Six different demos were run with the Control Group, three different demos Run with the Checking group, three different demos run wth the Weight group. Control Group using my v3.0 Beta. demo mode. using default teams of EDM & FLA (YES, I know the was a mistake, should have been same team vs same team) 5 minutes Penalties ON Line changes OFF Checking Group Set EDM to 0 Checking for every player Set FLA to 15 checking for each player. No other changes from Control Group. Weight Group Set EDM to 0 Weight for every player FLA to 15 Weight for each player. No other changes from Control Group. Results Control Group 44 EDM Body Checks 49 FLA Body Checks Checking Group 04 EDM Body Checks 58 FLA Body Checks Weight Group 09 EDM Body Checks 31 FLA Body Checks Conclusion Chaos's inferences seem spot-on. With the restored code, the Control Group had an asymmetry in Body Checks Thrown of approximately 1 to 1.11. Weight attribute asymmetry had a substantial effect, changing this ration to 1 to 3.44 (~300% increase). Checking attribute asymmetry had a massive effect on Body Checks asymmetry, changing the ratio to 1 to 14.50 (~1300% increase). While the experiment had a less than ideal sample size, and more variables could have been controlled, the effect size is substantial enough to confirm that this fix works as described by Chaos. However, because the sample size was so small, do not infer anything else from these numbers, regarding total checks per game, etc. Appendix Control Group screen-caps. Checking Group (top row) / Weight Group (bottom row).
  6. Figured this out. Check out Section #5 in this post:
  7. Here is what I tried for the AI suggested code. It affects the face-off animation, but not in a desirable way. I suspect that I did this wrong. MOVE.W D1,-(SP) ; 48E7 0200 ; Save D1 MOVE.B $0076(A3),D1 ; 122B 0076 ; Load from offset 0x76 LSL.B #7,D1 ; EF09 ; Shift left 7 bits EOR.B $0062(A3),D1 ; B32B 0062 ; XOR with position BTST #7,D1 ; 0801 0007 ; Test bit 7 BNE.S .add3 ; 6600 0006 ; Branch if not zero BRA.S .exit ; 6000 0004 ; Branch to exit .add3: ADDQ.W #3,D0 ; 5240 ; Add 3 to D0 .exit: MOVE.W (SP)+,D1 ; 4CDF 0400 ; Restore D1 JMP $0000CB96 ; 4EF9 0000 CB96 ; Jump to absolute address
  8. @McMarkis I tried your revised code, and for some reason it didn't work. It's ENTIRELY possible that I am misunderstanding or implementing it wrong. To that end, a few questions. Here is my current working patch in '94: 082B 0007 0062 6700 000E 4A2B 0076 6600 000E 6000 000C 4A2B 0076 6600 0004 5640 4EF9 0000 CB96 I adapted your instructions to this: 082B 0007 0062 6712 4A2B 0076 670C 6008 4A2B 0076 6604 5640 4EF9 0000 CB96 For whatever reason, whenever I change to use the JSR.L, I get flickering graphics for the left player in the face-off inset. Odd. Hence the change at the end. As for the rest, I had a few questions… 1. Why 6712 @ 0x06? Wouldn't that make the bottom face-off always use the same graphic, regardless of hand? 2. Why 670C @ 0x0C? My original logic was to use 66, but this reverses the logic of the branch, and jumps two bytes ahead? 3. Why 6604 @ 0x0E? My original logic jumped to the end, but this instead jumps to add #3 to d0 first, or am I misunderstanding something? Or lots of things… I tried a few variants, and couldn't get the desired behaviour. Not sure what I'm missing. As for the AI generated code, I couldn't get it to work, and it might be too far over my head to even ask questions about. I've never used Claude.AI before. I assume it is what you would recommend for this? In any case, my bloated code seems to work fine, but I am definitely curious to learn how to write this optimally!
  9. My inefficient method seems to work fine in '92 & '94 (I did note the difference in the hand byte, etc), but going to experiment with all this stuff while I watch the Leafs game tonight. Thanks guys!
  10. Oh wow, yes, will need some time to digest. And I seriously have to remember that AI exists. One side note, I originally tried a JSR command, but it caused visual flickering, for reasons that I wasn't table to discern. My brain is exhausted for the day, will definitely look this over at breakfast tomorrow!
  11. OK, this seems to work in '92. Please let me know if I'm committing any errors, omission, or sins against programming. Code redirect 1. Original Logic to Set Handedness for Face-Off Graphics 0x63CC 4A2B 0074 6600 0004 5640 Revised 4EF9 0007 FEDC 4E71 4E71 Code 2. Test if BOTTOM 082B 0007 0062 3. IF BOTTOM jump ahead to #7 6700 000E 4. Test HAND = RIGHT 4A2B 0074 5. If NOT RIGHT (T), jump ahead to #9 6600 000E 6. ELSE go to #10 6000 000C 7. Test HAND = RIGHT 4A2B 0074 8. If LEFT (B), jump to #10 6600 0004 9. Add 3, d0 5640 10. Go Back to continue where we left off 4EF9 0000 63D6
  12. The overall player ratings seem to just be one of those completely cosmetic things. You can set what attributes to include, and how to weight them, but the output number only has perceived value to the user.
  13. YES. Exactly. I mean, I can find the code to swap it back and forth, or ignore handedness, etc. but I can't figure out how to *only* flip the bottom player in the face-offset. I keep thinking that I could branch out and check the bottom team flag, but that's a bit beyond me. But perhaps there is a simpler solution I am not thinking of, such as… I dunno, swapping the second bit in the array? LOL. Is that a thing? Is that just nonsense? I am clearly NOT a programmer.
  14. Damn! Well, that explains it. I liked how easy it was to tweak the "hot spots" for shooting at the goalie in '92.
  15. FYI, I've posted Patches and a “How-to” for folks who want an easier way to apply this hack.
  16. How to: Wide Display Mode in '94 (Manual Methods) So, you're a masochist, eh? Who am I to judge… Every change made by this patch is itemized below. Feel free to critique and suggest improvements. Hopefully this will be useful for others looking to enhance the existing wide mode patches for other versions of the game. Please note, all known issues are listed in the post above. v2.0.1 (2025 01 06) 1. Remove Checksum 0x300 4E B9 00 0F FA C0 Revised 4E 71 4E 71 4E 71 2. Pause Screen display mode set to 256 pixels wide 0x7DD2 0000 317C 9100 0004 317C 921C 0004 Revised 0004 30BC 9100 30BC 921C 30BC 8C00 3. TBD: May Be Unnecessary / Unwanted 0x7E82 58 78 B0 28 Revised 4E 71 4E 71 4. Instant Replay display mode changed to 320 pixels wide This redirects to insert new code. 4.1 Instant Replay Regular View 0xA012 00 00 A4 48 Revised (Original 28-Team / 32-Team) 00 0F FA C0 / 00 1F FA 00 4.2 Instant Replay Reverse View 0xA5C6 00 00 A4 48 Revised (Original 28-Team / 32-Team) 00 0F FA C0 / 00 1F FA 00 5. Camera / Viewport Horizontal Pan Maximums Decreased 5.1 Pan Maximum RIGHT Side - 1/2 (Instant Replay) 0x0A641 003C > 001C (Original Camera Movement Range) 003C > 0010 (Less Camera Movement) 003C > 0000 (No Camera Movement) 5.2 Pan Maximum RIGHT Side - 2/2 (Instant Replay) 0xA649 003C > 001C (Original Camera Movement Range) 003C > 0010 (Less Camera Movement) 003C > 0000 (No Camera Movement) 5.3 Pan Maximum LEFT Side - 1/2 (Instant Replay) 0xA64D FFC4 > FFE4 (Original Camera Movement Range) FFC4 > FFF0 (Less Camera Movement) FFC4 > 0000 (No Camera Movement) 5.4 Horizontal Pan Maximum - LEFT Side - 2/2 (Instant Replay) 0xA655 FFC4 > FFE4 (Original Camera Movement Range) FFC4 > FFF0 (Less Camera Movement) FFC4 > 0000 (No Camera Movement) 5.5 Camera Horizontal Pan Maximum - LEFT Side - Mid-Ice (In-Play) 0xB0AB FFC4 > FFE4 (Original Camera Movement Range) FFC4 > FFF0 (Less Camera Movement) FFC4 > 0000 (No Camera Movement) 5.6 Horizontal Pan Maximum - LEFT Side - Against Boards (In-Play) 0xB0B3 FFC4 > FFE4 (Original Camera Movement Range) FFC4 > FFF0 (Less Camera Movement) FFC4 > 0000 (No Camera Movement) 5.7 Pan Maximum RIGHT Side - Mid-Ice (In-Play) 0xB0C9 003C > 001C (Original Camera Movement Range) 003C > 0010 (Less Camera Movement) 003C > 0000 (No Camera Movement) 5.8 Pan Maximum RIGHT Side - Against Boards (In-Play) 0x0B0D1 003C > 001C (Original Camera Movement Range) 003C > 0010 (Less Camera Movement) 003C > 0000 (No Camera Movement) 6. Line Change Overlays Relocation 0x0B9E5 16 > 1F 7. Face-Off Overlays Relocation Thanks to @McMarkis 7.1 Face-Off Overlays Left Side X-Position 0xFB5F 36 > 3E 7.2 Right Side Face-Off Overlays X-Position 0xFB6B BE > F6 8. Gameplay Display Mode Changed to 320 pixel wide This redirects to insert new code. 0x012B5C 00 01 17 38 Revised (Original 28-Team / 32-Team) 00 0F FA DC / 00 1F FA 1C 9. Clear Screen Box for Penalty Shot & Shoot-Out Relocation & Resizing 0x01203D 03 02 00 70 1B Revised 05 02 00 70 1D 10. Penalty Call Sideboards View Display Mode set to 256 pixels wide This redirects to insert new code. Thanks to @McMarkis 0x120D0 247C 0005 CF6C Revised (Original 28-Team / 32-Team) 4EF9 000F FAF4 / 4EF9 001F FA34 11. Clear Screen Box for Games set to 320 pixels wide 0x12B7F 20 > 28 12. Score Clock Relocation 12.1 Score Clock position 0x012C7B 17 > 1F 12.2 Home Team Name 0x012C8D 18 > 20 12.3 Visitor Team Name 0x012C9F 18 > 20 12.4 Score position 0x012D1F 1C > 24 13. Rink Background X-position Revised 0x015F3F C0 > E0 14. Sideboards Crowd Animation X-position Revised 0x0161F7 C0 > E0 15. Crowd Animation Events X-position Revised 15.1 0x016281 C0 > E0 15.2 0x016287 90 > D0 16. Rink Crowd Animation X-position Revised 0x016287 90 > D0 17. Rink Player Visibility Range Increased 17.1 Rink Player Visibility Right Side 0x016941 90 > B0 17.2 Rink Player Visibility Left Side 0x016949 70 > 50 18. Offset the Position of Players in the Rink and Sideboards to Match This redirects to insert new code. Gameplay Display X-Position 0x01694E 0640 0100 D242 Revised (Original 28-Team / 32-Team) 4EF9 000F FB0A / 4EF9 001F FA4A 19. TBD: May Be Unnecessary / Unwanted 0x01695B 90 > B0 20. TBD: May Be Unnecessary / Unwanted 0x016963 70 > 50 21. Stars of the Game Overlay Relocated 21.1 Box for Stars of the Game 0x18541 02 > 06 21.2 Text: Stars of the Game 0x18553 09 > 0D 21.3 Graphic: Stars of the Game Sponsor Icon (unused by default) 0x18567 03 > 07 21.4 Text: Player Team 0x1859D 1A > 1E 21.5 Text: Player Number & Name 0x185B9 03 > 07 22. Penalty Shot Overlay Relocation 22.1 Penalty Shot Overlay Box 0x0187E3 03 02 00 70 1B Revised 06 02 00 70 1C 22.2 Heading Text: “PENALTY SHOT!” 0x018887 04 > 08 22.3 Infraction Name 0x01882D 04 > 08 22.4 Infracting Player Number & Name 0x018858 04 > 08 22.5 Shooter Number & Name 0x018897 04 > 08 23. Goal Overlays (Goal, PP Goal, Hat Trick) Relocation 23.1 “Goal!” Box 0x188D1 0B > 13 23.2 Goal Scorer 0x1897D 0C > 14 23.3 Text Heading “Assist by:” 0x189C1 0E > 16 23.4 Assist #1 0x189CE 0C > 14 23.5 Assist #2 0x189F3 0C > 14 23.6 Text Heading “GOALl!” 0x18A17 0F > 17 23.7 TBD: May Be Unnecessary / Unwanted 0x18A1F 0C > 14 23.8 Text Heading “HAT TRICK!” (1/2) 0x18A25 0C > 14 23.9 TBD: May Be Unnecessary / Unwanted 0x18A32 0C > 14 23.10 Text Heading “PP GOALl!” 0x18A37 0D > 15 23.11 TBD: May Be Unnecessary / Unwanted 0x18A42 0C > 14 23.12 Text Heading “HAT TRICK!” (2/2) 0x18A47 0C > 14 12.13 TBD: May Be Unnecessary / Unwanted 0x18A54 0C > 14 23.14 Overtime Goal Clear Box 0x18A5D 0B 02 00 70 13 > 13 02 00 70 1B 24. Shoot-Out Overlays Relocation 24.1 Shoot-Out Overlay Box 0x0FC337 03 > 06 24.2 Second Player Name Position 0x0FC38F 04 > 07 24.3 First Team (Home) Name & Score 0x0FC3CF 04 > 07 24.4 First Team (Home) Score Position 0x0FC3E9 15 > 18 24.5 Second Team (Visitor) Name & Score Position 0x0FC409 04 > 07 24.6 Second Team (Visitor) Score Position 0x0FC423 15 > 18 24.7 Round Number Position 0x0FC443 04 > 07 24.8 Heading Text: “SHOOTOUT MODE” 0x0FC469 04 > 07 24.9 First Player Name Position 0x0FC479 04 > 07 24.10 End of Shoot-Out Box Position 0x0FC5BB 01 > 05 24.11 End of Shoot-Out Text “SHOOTOUT WON BY” 0x0FC5D5 02 > 06 24.12 End of Shoot-Out Text: Winning Team Name Position (X-Axis) 0x0FC611 02 > 06 25. Bench & Crowd Animation Relocation 25.1 0x0FD81D C0 > E0 25.2 0x0FD823 90 > D0 26. Patch Code Insertion You can put this code anywhere that you have enough unused space. If you don’t use my recommended addresses, be sure to update the addresses used in the redirects listed above. Original 28-Team ROM 0x0FFAC0 7000 91C8 223C 0003 FEB0 B0FC 018C 6604 5848 6002 D098 5381 6EF0 0C80 8AB9 F121 6602 4E75 287C 00C0 0004 38BC 8F02 38BC 8004 38BC 8700 38BC 8144 38BC C000 323C 003F 33FC 000E 00C0 0000 51C9 FFF6 60FE FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF Revised 33FC 9210 00C0 0004 33FC 8C81 00C0 0004 5278 B00E 4EF9 0000 A448 4E75 33FC 9200 00C0 0004 33FC 8C81 00C0 0004 4EF9 0001 1738 4E75 247C 0005 CF6C 33FC 8C00 00C0 0004 4EF9 0001 20D6 4E75 0640 0120 0838 0007 C2EC 6700 0006 0640 FFDF D242 4EF9 0001 6954 4E75 60FE 32-Team ROM 0x1FFAC0 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF Revised 33FC 9210 00C0 0004 33FC 8C81 00C0 0004 5278 B00E 4EF9 0000 A448 4E75 33FC 9200 00C0 0004 33FC 8C81 00C0 0004 4EF9 0001 1738 4E75 247C 0005 CF6C 33FC 8C00 00C0 0004 4EF9 0001 20D6 4E75 0640 0120 0838 0007 C2EC 6700 0006 0640 FFDF D242 4EF9 0001 6954 4E75 Patch Code Breakdown Here is how the above patch code functions. We can break it down into four lines of code. First, @ 0x0000A012 & 0x0000A5C6 it jumps 0x0000A448 for the Instant Replay Regular & Reverse view. We modified those two references to point here (000FFAC0 / 001FFA00) instead. This line of code change the display mode to 320 pixels wide first, then tells it to head on back to 0x0000A448 as it was originally intended. 33FC 9210 00C0 0004 33FC 8C81 00C0 0004 5278 B00E 4EF9 0000 A448 4E75 Second, @ 0x00012B5C it jumps to 0x00011738 for the Gameplay view. We modified that reference to point here (000FFADC / 001FFA1C) instead. This line of code change the display mode to 320 pixels wide first, then tells it to head on back to 0x00011738 as it was originally intended. 33FC 9200 00C0 0004 33FC 8C81 00C0 0004 4EF9 0001 1738 4E75 Third, @ 0x000120D0 it initiates the Sideboards view for when a Penalty is called. We've removed eight bytes of code at that location, and inserted a redirect to here (000FFAF4 / 001FFA34) instead. This line of code first run the eight bytes of code that we had previously removed, then we change the display mode to 256 pixels wide, and head back to right after those eight bytes of code that we had displaced. 247C 0005 CF6C 33FC 8C00 00C0 0004 4EF9 0001 20D6 4E75 Lastly, @ 0x0001694E it indicates where the sprites should placed on the ice. Again, we've removed eight bytes of code, and inserted a redirect, this time to here (000FFB0A / 001FFA4A). This line of code first runs the eight bytes of code we had previously removed, but with a revised value setting the sprite position to be optimal for gameplay in 320 pixel wide display mode. Next, it tests to see if the current view is Vertical (gameplay) or Horizontal (sideboards). If it is Horizontal, it subtracts #32 from the sprite position value, in order to make it optimal for the 256 pixel wide display mode. Then we head back to right after those eight bytes of code that we had displaced. 0640 0120 0838 0007 C2EC 6700 0006 0640 FFDF D242 4EF9 0001 6954 4E75 And that's it. If you want more information, check out this thread with all my development notes.
  17. How to: Wide Display Mode in '94 (Patches) v2.0.1 (2025 01 06) Above: The Original ROM and WWF Survivor Shoot-Out patched for Wide Display mode. Here is a couple patches that you can use on Sega Genesis/Mega Drive NHL ’94 ROMs to switch the gameplay view from 256 pixels wide to 320 pixels wide. These new patches are built on the v1.2 patches by Paul Met, with extensive new work and alterations to make these modifications more comprehensive and stable. Furthermore, two different versions of the patch are included, one for the original 28-team ROM, and another for the 32-Team ROM hack. And as an added bonus, two optional patches allow you to limit the amount of horizontal camera movement. Without further ado, here are the patches! Please let me know if you encounter any errors. cheers, -Adam NHL 94 - Patches - Display Mode - Wide - v2.0.1.zip Known Issues In Instant Replay View, the Overlays for the Clock and Score are visible. (Any advice on how to fix this?) Potential Issues When applying this to existing ROM hacks, there may be compatibility issues, as it is impossible to prepare a patch that will work with every single ROM hack variant. If you are having difficulties, you may wish to manually modify the ROM with my notes below, or to ask that ROM hack creator for help. Just about everything they need to know is included in the next post below.
  18. I've been sifting through '92 source code, and come across a few items where it is easy to affect a change in '92, but in '94 it doesn't seem to behave as expelled. The last one I came across was goalie save percentages. Works exactly as commented in '92, you can increase or decrease the likelihood of a goal or save in each goalie pose/position and easily see the result. In '94, the code is extremely similar, but modifying it doesn't seem to do… anything?
  19. Oh, I missed this one when it came out! Will check it out today.
  20. Hey folks, Just a quick update about the next release. Revised 5-on-5 lines using 2025 player usage data is almost done. Wide Display Mode Sideboards player position glitch is fixed. Most importantly, I've tweaked the game physics. These were changes I've wanted to make for years, but only figured out how over Christmas. It's subtle, nothing revolutionary, and entirely in-line with the direction of all my other changes for "realism" and balance. And I will provide an optional patch to revert to "Classic" physics. I hope you all had a lovely holiday! cheers, -Adam
  21. This new "Game Mechanics" forum subsection is my new favourite thing on the Internet.
  22. So… how to fix the Centre bug?
  23. WOW! Thank-you for finally clarifying what exactly "Awareness" does.
  24. Oh wow! Interesting that "damage" is cumulative. Loving these breakdowns.
×
×
  • Create New...