AdamCatalyst Posted April 26, 2023 Report Posted April 26, 2023 (edited) How-to: Move & Resize the Net Graphic (NHL '94) It appears that each Net graphic is arranged in 6 x 4 tile qudarants. So four 48 px by 32 px chunks make up the top net, and four different 48 px by 32 px chunks make up the bottom net. We already know how to change the colour palette for each quadrant thanks to this post by @clockwise: In this post I'll show you how to move around these quadrants. Why might you want to do this? Well, you could… Relocate the net graphic. Shrink it by moving more of it to overlap itself. Make the Net(s) match the Rink symmetry. (In case you haven’t noticed, the Nets are an odd number of pixels, in Rink, Crease, etc. made up of an even number of pixels.) It’s possible that more can be done than this. I was investigating making the Net(s) symmetrical, and once I achieved that, I abandoned this project. I’m posting my notes in case someone else can make use of this, or wants to keep investigating this area of code. I have included the minor adjustments needed if you want to make the Net symmetry match the Rink symmetry. Top Net Top Net: Top Left quadrant X-position / Y-position 0xA16BB / 0xA16BD Original E8 / E9 Symmetrical (1 pixel to the right) E9 / " Top Net: Top Right quadrant X-position / Y-position 0xA16C3 / 0xA16C5 Original FF / E9 Top Net: Bottom Left quadrant X-position / Y-position 0xA16CB / 0xA16CD Original E6 / F9 Symmetrical (1 pixel to the right) E7 / " Top Net: Bottom Right quadrant X-position / Y-position 0xA16D3 / 0xA16D5 Original 11 / F9 Bottom Net Bottom Net: Top Left quadrant X-position / Y-position 0xA16DB / 0xA16DD Original E8 / E6 Symmetrical (1 pixel to the right) E9 / " Bottom Net: Top Right quadrant X-position / Y-position 0xA16E3 / 0xA16E5 Original FF / E6 Bottom Net: Bottom Left quadrant X-position / Y-position 0xA16EB / 0xA16ED Original F8 / E4 Symmetrical (1 pixel to the right) F9 / " Bottom Net: Bottom Right quadrant Sorry, I never got this far. If anyone else figures this out, let me know and I will update it here. Edited December 27, 2023 by AdamCatalyst standardizing naming and formatting Quote
von Ozbourne Posted April 26, 2023 Report Posted April 26, 2023 Thanks for this eh. I've always had some issues with how the new nets were recoloured. This can really open up some possibilities. Now the question is, if it's possible to translate this over to the puck... Quote
AdamCatalyst Posted April 26, 2023 Author Report Posted April 26, 2023 It's unfortunate that the stuff I found offers such limited customization. I had grand ideas of mixing colour palettes, and other things, but haven't been able to get any of my ideas to work or look good within these restrictions. I suspect there is more to discover here, I gave up early on this one, it was not an exhaustive search. Quote
von Ozbourne Posted April 26, 2023 Report Posted April 26, 2023 Interesting coincidence that the radio today had a show that concentrated on the history of the story of, and the modern take on the term "Holy Grail". While the commercial aspect of using the term has gotten too aggrandizing, despite the level of historical connection to how "acquire this thing and your life will be better." is what the legend has been for centuries, I find that the "questing" part, for something that is so challenging that it can be either a white whale or grail, does still resonate, perhaps to a notably modest level, with the quest for the hole ice puck. 1 Quote
AdamCatalyst Posted April 26, 2023 Author Report Posted April 26, 2023 6 hours ago, von Ozbourne said: Now the question is, if it's possible to translate this over to the puck... Wait, what are you trying to do with the puck? Quote
von Ozbourne Posted April 27, 2023 Report Posted April 27, 2023 3 hours ago, AdamCatalyst said: Wait, what are you trying to do with the puck? Oh, there was an urban legend that the puck's palette could be changed to match the team colours, and thus change with the home team. But the concrete evidence and methodology have been either lost to time with Damascus steel or that lighthouse near Alexandria. At our current stage, it also can't be ruled out that the proof of concept was never actualized. Quote
AdamCatalyst Posted April 27, 2023 Author Report Posted April 27, 2023 Got it. I can’t help but be drawn to such a challenge. Will review my notes and venture out into the wilderness today over breakfast. Quote
AdamCatalyst Posted April 27, 2023 Author Report Posted April 27, 2023 (edited) found it. Edited April 27, 2023 by AdamCatalyst Quote
AdamCatalyst Posted April 27, 2023 Author Report Posted April 27, 2023 14 hours ago, von Ozbourne said: Oh, there was an urban legend that the puck's palette could be changed to match the team colours, and thus change with the home team. But the concrete evidence and methodology have been either lost to time with Damascus steel or that lighthouse near Alexandria. At our current stage, it also can't be ruled out that the proof of concept was never actualized. Quote
kingraph Posted April 27, 2023 Report Posted April 27, 2023 Man, I know @clockwise had done this hack (changing puck color to home team) in his ROM updates years back. I can't find the info though. Quote
Brodeur30 Posted February 1 Report Posted February 1 On 4/26/2023 at 9:54 AM, AdamCatalyst said: It's unfortunate that the stuff I found offers such limited customization. I had grand ideas of mixing colour palettes, and other things, but haven't been able to get any of my ideas to work or look good within these restrictions. I suspect there is more to discover here, I gave up early on this one, it was not an exhaustive search. There's a missing piece to this. What you have found are codes that move the top and bottom net. I found them many years ago and applied them to my smallest goal rom. These codes are needed to fine tune the location of the top and bottom goal to "match" the exact boundary created by the codes that control the invisible boundary of the goal scoring window : https://forum.nhl94.com/index.php?/topic/18850-how-to-make-puck-hit-boards-instead-of-invisible-barrier/#comment-176501 To achieve accurate fine-tuned collision you have to adjust both of those sets of codes to "align" with one another. These move around the whole of the "goal artwork" of codes on their position on the ice. It's hard to get a full appreciation for how complicated this is and how much balancing is involved, but I've worked through this and know how to make meaningful changes to any goal artwork or size. The codes you found can often help with additional alignment of collision of when the puck crosses the rink ice not crossing the goal-line threshold at the correct pixel. And you've already edit the normal goal artwork and you move the goals around this way and see what happens. So it's important to understand how important these codes are to doing what I did in the smallest goal rom for example. If you test my rom you'll notice how tight the goal collision is. It's no coincidence. It took extensive research of balancing of 4 distinct sets of codes. The sense I got from your comment was you conclude that you were limited, by I think not realizing how all this relates to my barriers code and the other ways to edit the goal artwork. It's very complicated but I'm pleased to say that I've worked though this and have the missing links. In my experience the default collision with the normal goal artwork is not satisfactory which is why I've been working so hard not only to make smaller goals but to improve the accuracy of shots on goal generally and how they interact with the goal and the posts. One thing we know about NHL 94 on Genesis is that often the puck might go through where the post art is and becomes a goal, often depending on the angle that the puck is moving towards the goal. With the barriers code (and appropriate edits to the goal artwork, and these goal position codes) you can achieve a customly placed goal window (size) of your choice. But there are multiple steps involved, of testing in-game then fine turning the art and the position to reach the barriers set in the other code. You realized that you couldn't actually resize it but you initially thought you could because of the limits to how you can edit and move the top goal art. What you observed there was a real limitation, it's because the only part you can "move" is the upside down U shape part. The inner part of the top goal is uneditable by the normal goal art and can only be altered by editing the rink art in those tiles. With my collision codes you can fine tune whatever edits you made to the goal artwork or the goal position code that you found, but there's no running away from the collision values. They govern the goal window (and how the goal art aligns with them) whether you use edit or not. You've concluded that there is limited customization because you've run into real limits and haven't worked through them. Fortunately for you I have a solution to this dilemma and all that it takes is an understanding that it takes various separate sets of codes to align the goal art and the physical barriers. Through thorough testing (of shots near posts, etc, testing the boundary alignment with the goal art) you can learn how these 3 distinct code sets interact with one another. First there's editing the goal art itself to make the goal bigger or smaller, narrower or wider depending on what the barrier code is. This needs to be done after setting the barriers code. But you can only do so much without the position codes you found which are crucial to alignment. You do as much as you can with the normal goal art getting it where you want it, in relation to my barriers code. But then you test it and it's not quite aligned properly. Example - even after extensive edits to my barriers code, and to the goal artwork, the barriers might still not be properly aligned with the goal or ice art. (goal-line, etc) The puck might go through the top part of the goal and miss, so you need to move that top goal down a few pixels. Remembering that with the top goal you can move the top bar down a few pixels (in the artwork) to tailor the adjust down U-shaped art of the top goal to where the collision is. You might find that the goal edges even after extensive edits to the goal art and to the barriers code, you will find it's still a pixel or two off from where you want it to be. That's where these position codes come into play. With these you can fine tune it further, you move the position of the overall goal artwork on the ice, pixel by pixel if the barrier value is still not matching the goal art. Note that these codes you found can also be found in RAM and fine tuned with the game running to get the position right. And Three, to tie it all together my barrier codes. It's important to note that Regardless of what size goal you are using, even if you're simply using the "original" size goals, that all these sets of codes are interacting with one another whether you are aware of it or not. Remember that you can determine the size of the goal "window" with the barrier codes. But where those physical barriers are are not aligned with the goal art or even the default values in your goal position codes. If you tested my smallest goal rom you'd have experienced the end result of tying these loose ends together. Quote
AdamCatalyst Posted February 2 Author Report Posted February 2 @Brodeur30 This post is *only* about “Moving & Resizing the Net Graphic.” That's not an oversight or omission, that's just what the focus is here. The actual collision area for the Net can be reshaped and moved, but I've not had the time to post notes on those variables. Your thread is still the best resource to learn how to affect that. Quote
Brodeur30 Posted February 2 Report Posted February 2 2 hours ago, AdamCatalyst said: @Brodeur30 This post is *only* about “Moving & Resizing the Net Graphic.” That's not an oversight or omission, that's just what the focus is here. The actual collision area for the Net can be reshaped and moved, but I've not had the time to post notes on those variables. Your thread is still the best resource to learn how to affect that. Resizing it can be done this way, but there's an important distinction. There's an integral difference between "resizing" the goal with these codes vs resizing the goal manually by editing the goal art and making the goal art bigger or smaller that way. When you do it through your codes, if i recall correctly, when you "resize" the goal artwork by converging the quadrants inward lets say, through the codes you found here, you're not only moving the artwork but you're also affecting the location of the goal window related to the barrier code. In some cases, to "align" the invisible barriers with the artwork, it requires edits to the goal artwork. Because when you do it that way, you can make changes to the top and side goal to "align" the barrier code with the artwork. So yes you can resize the goals with your quadrant positioning codes, but when you do it only this way (without editing the goal art and redrawing it manually) you can't "correct" the inconsistency between where my barrier code set the boundary vs where the goal art actually is in relation to that. What your codes do for example is it allows you (if you move all quadrants down a few pixels for example) you'll notice that this will cause the puck to cross the goal-line at the correct pixel, in relation to the goal-line on the ice. To visualize it, your codes above essentially move the "outer" boundary of each "corner" area of the goal. But as I explained, with the top goal, the inner rectangle of the goal is uneditable and if you try to move the top goal quadrant goal artwork inward the inner sections will disappear due to this box. I'm trying to help you understand that, the limits you ran into when you (perhaps?) couldn't "correct" or align the boundary and the goal art properly to your liking by these codes. It's because these codes maintain the integrity to the boundary to a degree whereas manually editing the goal art doesn't. Each set of codes are important for different reasons but to create custom goal sizes and to align it correctly it requires manually editing the goal art in addition to adjustments of your codes to the overall position and shape within the boundary. Note that I have learned how this works over time. The sense I get is taht you weren't putting it all together and got frustrated so I was trying to explain the issue. Quote
Brodeur30 Posted February 8 Report Posted February 8 After further testing of these codes, particularly the top goal codes, I can confirm that you can take any normal goal art and converge it inward as you described and the upside down U shaped top goal art moves in over the uneditable area. So I want clear up any confusion. As far as what I said earlier, it is true that these codes can be used to align the goal art with the goal line on the ice, but these codes do not appear to affect the barriers as I implied. But more testing is needed to fully confirm this. It has been quite a while since I've been modding NHL 94 so I'm trying to remember everything that I had previously learned. Extensive testing is needed to see how a converged normal goal art through only the codes above interact with a lower barrier code. In some cases, the barriers code may have a different geometry of the scoring area that would require some manual adjustments to the goal art in tile layer pro but that remains to be seen. I'll have to test your latest rom to see what your barrier interaction is like. But for context, the way I did my smaller goal rom was not by using these codes primarily, but by drastically editing the normal goal art to go beyond the normal editable boundary, which caused the side posts to be deleted in the goal art and I made them reappear through rink art of those pixels. That's why when the net is knocked off its moorings in my rom the side posts stay in place and only the top part of the top goal moves. This unique way that I achieved that wasn't exactly the most straight forward way but at the time it was the only way that I knew how. And perhaps by using only the codes above combined with the barrier codes you'll be able to have an more straight forward way of reducing the size of the goal art, but no matter which way you do it, micro fine turning of these codes in combination with the barriers code are crucial to getting the puck to hit the post or if it does go through it misses at the exact pixels that the post art is at rather than becoming a goal. And that means, in practice, to adjust the goal art to the barrier, and that is done by testing, viewing slow mo replay of near misses, when it hits the pits, when it bounces of the back of the net, etc. And in the case of converging the quadrants as you described it would still require manual goal art editing to delete the parts that converged upon itself. Example : As you can see, through your codes you can bring in the normal side posts into the inner area that is normally off limits to editing. As in, you cannot "move" those side posts into that inner area and be that narrow as shown above just by editing the tiles. But through the X-position codes, you can bring the side posts into this area,, which is obviously hugely important and was something that I didn't know about when I made my rom. I discovered these codes but it was after I had already designed it via the other method. Notably, as you can see from the screenshot, when converging, it seems that what happens is that the top goal art shows up "over" the bottom goal art. This means that, after converging, you have to go into the goal art tiles and delete parts of the net so it all aligns up without parts from one quadrant on top of parts from other quadrants. This is a viable method to creating your own custom smaller goal, in a distinctly different way that I initially did it but one that I'm surely going to utilize moving forward. When you get the size you want, then you adjust the barriers code to align with the goal art as best you can which requires trial and error. My overly complicated way of doing itt isn't necessarily the best way to go about this, so if any of what I said was confusing, well I'm trying to work all this out myself and get back up to speed. But your codes are invaluable to making it easy for everyone to make their own smaller goals. Without these codes, it's much harder to do. But with either method it requires manually editing the goal art, and adjusting the shape of the back of the net may also be needed to adjust to the barriers. As you'll find out, it's not just the goal scoring window it's also related to the barrier of the back of the goal and how that interacts with the barriers code. Getting everything aligned can be a challenge and you're well on your way to that now. Quote
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.