-
Posts
92 -
Joined
-
Last visited
-
Days Won
32
McMarkis last won the day on May 4
McMarkis had the most liked content!
Profile Information
-
Location
Toronto Ontario Canada
Previous Fields
-
Preferred System
SNES
-
Favorite Way To Score
Slapshot
Recent Profile Visitors
The recent visitors block is disabled and is not being shown to other users.
McMarkis's Achievements
-
How to: Add Custom Menu Items to the Game Setup Screen v1.0 (2025 04 29) Info: I've put together a GitHub repo showing how to add custom menu items to the game setup screen in NHL '94. Using this method, I’ve created five example patches, all included in the repo. Fake Shot (New functionality) Weight Bug (Chaos 120 decimal patch) 5 Minutes, 99 Min OT to Period Lengths Fighting - (Coming Soon) Multi Menu, with everything combined You’ll also find a master "multi menu" example that demonstrates how to combine multiple patches into a single ROM. This approach works with custom ROMs too—you'll just need to update the insertion RAM address to match your rom. This is more of an advanced level patch geared towards ROM modders. It allows you to edit the source code of these patches to change the behavior as well. Any questions please drop in the forum and we will keep this updated and make improvements over time. We can probably wrap a User Interface tool around these patches in the future, but I wanted to get it out now so people could start using it, and provide feedback. Patch: I recommend visiting the GitHub repository and checking out the README. It provides details on all the patches I've created using this method. Here is the direct link to download the zip package containing all the examples. Each folder in the zip package has a README.md file with instructions. Version Notes v1.0 Initial Release. Known Issues In Demo Mode, Goalie Control + User Record options are editable, but should not be.
-
Looks fantastic, Speed boosts are insane. Love it.
-
Problem: There is a bug in the SNES code responsible for calculating the Hot/Cold Bonus for every player attribute (Speed, Agility, etc.). The details can be found here. TLDR; As a result, no attribute receives a negative bonus; instead, the attribute is consistently given the maximum boost (100) if the bonus was negative. Solution: This patch will show the true attribute value (100) in Edit Lines when the bug happens. Patch: Download the patch tool to create your own ROM or patch an existing ROM.
-
- 1
-
-
Fixing the "Handedness" in the Face-Off Insets
McMarkis replied to AdamCatalyst's topic in General Questions & Discussion
I agree with Chaos, If your code is working keep that. The AI generated code is overkill and was just there as a reference as a possible way to reduce the number of TST instructions. But it can often be wrong and needs to be iterated through to get the correct answer. -
Fixing the "Handedness" in the Face-Off Insets
McMarkis replied to AdamCatalyst's topic in General Questions & Discussion
I believe @chaos dreams in m68k assembly now, so I would defer to him about assembly sins 😁. Below are a few of my thoughts. I converted you HEX values to assembly code, and made the smallest of changes for the branching. I personally like JSR.L so i can just do RTS commands to return back to the original code. I haven't tested this, but your pattern seems good. Hack-jack existing code Jump to new code and NOP extra instructions Perform New code and return on exit. ;Hijack Old code and call to new code JSR.L $0007FEDC ; Call new subroutine (long) NOP ; No operation NOP ; No operation ;Start of Your new subroutine @7FEDC BTST.B #7,$0062(A3) ; Test bit 7 (bottom) BEQ.S .bottom ; If bottom, branch (short) TST.B $0074(A3) ; Test if hand = RIGHT BEQ.S .exit ; If RIGHT, exit (short) BRA.S .add3 ; Not RIGHT, do add3 (short) .bottom: TST.B $0074(A3) ; Test if hand = RIGHT BNE.S .exit ; If LEFT, exit (short) .add3: ADDQ.W #3,D0 ; Add 3 to D0 .exit: RTS ; Return from subroutine AI Suggestions: My gut was telling me that you can probably simplify the multiple BTST & TST scenarios with some combo statement. So I asked Claude AI to help, and it suggested the following. Break down the problem into a matrix like (Truth) table to help understand the possible combinations. You want to add 3 when the player is Left handed and top position? You want to add 3 when the player is Right handed and bottom position? Position(bit7) Hand EOR Result BTST #7 Add 3? TOP(0) RIGHT(0) 0 0 No TOP(0) LEFT(1) 1 1 Yes <-- Add 3 BOTTOM(1) RIGHT(0) 1 1 Yes <-- Add 3 BOTTOM(1) LEFT(1) 0 0 No Something like this now possibly, I haven't tested this code. JSR.L $0007FEDC ; Call subroutine (long) NOP ; Padding/placeholder NOP ; Padding/placeholder ;Start of Your new subroutine @7FEDC MOVE.W D1,-(SP) ; Save original D1 value since we are overwriting it MOVE.B $0074(A3),D1 ; Get hand orientation EOR.B $0062(A3),D1 ; XOR with position BTST #7,D1 ; Test result BNE.S .add3 ; If NOT equal, add3 BRA.S .exit ; Otherwise exit .add3: ADDQ.W #3,D0 ; Add 3 to D0 .exit: MOVE.W (SP)+,D1 ; Restore D1 RTS I know this is a bit of a brain dump—I went full over-explainer mode here. If anything’s unclear, just holler, and I’ll happily clarify. Honestly, though, I’m being a bit selfish because it’d be amazing to rope in another brave soul into the wonderful, weird world of assembly. Welcome to the dark side—we have opcodes! -
Fixing the "Handedness" in the Face-Off Insets
McMarkis replied to AdamCatalyst's topic in General Questions & Discussion
LOL, @AdamCatalyst, diving into source code assembly and the listing file? You're leveling up fast! I wouldn't be surprised if you're rewriting this entire game next. Just to clarify, this is what I am seeing when I test with Montreal (Home), LA (Away) 1st period. 1st image is Muller (Lefty) Home team (Bottom). 2nd image is Bellows (Righty) Home team (Bottom). 3rd image is Gretzky (Lefty) Away Team (Top) 4th image is Carson (Righty) Away Team (Top) Your saying the stance is wrong? When your a lefty like muller in image 1, it should actually be the 2nd image? where your left hand is on the lower portion of the stick. You can't find the code that controls this? -
Thanks @AdamCatalyst! Glad I was able to help progress your masterpiece. Love the detail you put in all your forum posts, it keeps us all motivated to help out.
-
NHL '94: Wide Display Mode (“widescreen”) Hack v2.0
McMarkis replied to AdamCatalyst's topic in Sega Hacking Projects
I'm not sure how @chaos does it, he may have an easier way, but here is the method I use: I compile the NHL 92' source code from the github repo using the included batch file. This produces a listing file (nhl92.lst) that contains both the source code and the compiled binary (hexadecimal) values. I search the nhl92.lst file for the routine, comment or code I’m looking for—in this example, the updatescroll routine. The left-hand side of the listing file contains the offset in the nhl92.bin file along with the generated hex values (70C0) For instance, 0000C2D2 is the ROM location of the instruction in the nhl92.bin file, and 70C0 is the binary (hex) value generated by the moveq #-192+128,d0 instruction. I then open the nhl94.bin in HxD editor and I search for the hex value 70C0. In this case, the code was found at offset 15F3E (second screenshot) Additionally, @chaos has shared a decompiled version of NHL '94 with me, which includes many comments copied over from the NHL '92 source code. This is incredibly helpful because it makes the instructions easier to read and provides useful context with comments. -
NHL '94: Wide Display Mode (“widescreen”) Hack v2.0
McMarkis replied to AdamCatalyst's topic in Sega Hacking Projects
You da man, Looks like Adam already changed it from 70 C0 to 70 E0 in his ROM. Must be a different scroll happening when in Horizontal mode for the penalty box. I'm still convinced it has something to do with the Skateto Routine. -
NHL '94: Wide Display Mode (“widescreen”) Hack v2.0
McMarkis replied to AdamCatalyst's topic in Sega Hacking Projects
Hey @AdamCatalyst, I did a quick search for the UpdateScroll routine in the 94' code but I haven't had much luck locating it. However I noticed the X and Y coordinates that the player should skate to are set before calling the Skateto routine. I would assume somewhere the origin would be referenced and the X,Y offset would be added to that. I will keep digging around, and let you know if I find anything.. -
Some really nice touches to this ROM. Love the intermission music, and the crowd colors look great.
-
NHL '94: Wide Display Mode (“widescreen”) Hack v2.0
McMarkis replied to AdamCatalyst's topic in Sega Hacking Projects
Hey @AdamCatalyst Base 94 Rom: The '94 code is slightly different than '92, but I gave it a quick test for the home team in 94' and it works. Location 0xC918 Original 70 0B Try changing 0B to a lower number to move the home players X position to the left. The code further down just takes this value from d0 and makes it negative for the away team. This automatically adjust the away player by the same amount without any further changes. (Confirmed) Let me know if it works. @chaosThanks for the IDA comments, made it easy to map from 92' to 94' -
I love seeing all the creative ways people are enjoying your ROM @AdamCatalyst — On real hardware with CRTs, Miyoo Mini, and even the Switch! The screenshots they share make it even better. We need a compilation of all the screenshots on different devices.
- 182 replies
-
- 1
-
-
NHL '94: Wide Display Mode (“widescreen”) Hack v2.0
McMarkis replied to AdamCatalyst's topic in Sega Hacking Projects
In your Wide Mode ROM @ Location 1601A if you modify 54 40 to 56 40, this will move the ref window to the right. The original 68k instruction is adding decimal value 2 to the D0 register. So changing the 54 to 56 adds #3 to D0 etc. add #2,d0 I think the text overlay may be a little more tricky. Still looking into that. For reference, if anyone else comes across this, the routine is located in the 92 source code under showref, which is part of video.asm @chaos -
NHL '94: Wide Display Mode (“widescreen”) Hack v2.0
McMarkis replied to AdamCatalyst's topic in Sega Hacking Projects
In your Wide Mode ROM at location FB5E, the instruction currently sets the X position for when the faceoff window is on the left side. The current calculation is #8 + 46, d0 (Left side). By changing 70 36 to 70 40, it modifies the calculation to #8 + 46 + 10, which moves the window 10 units to the right. Similarly, at location FB68, the X position is set for when the faceoff window is on the right side. The current calculation is #(18 * 8 ) + 46, d0 (Right side). Changing 303C 00BE to 303C 00B4 adjusts the calculation to #(18 * 8 ) + 46 - 10, shifting the window 10 units to the left. That should allow you to move the window around anywhere you want in any direction. For reference, if anyone else comes across this, the routine is located in the 92 source code under puckfaceoff2, which is part of logic.asm