smozoma

HOW TO: let the goalie roam farther with and without the puck

Recommended Posts

Here is how to allow the goalie to move farther under manual goalie control, both with AND without the puck.

Some background info:

- When I start a number with a '$', it's a hex value.

- When I start a number with '@', it's a hex offset.

- In hex, when a number's first digit is an 'F', that means it's a negative number (in this hack, anyway..). FFFF= -1, FFFE = -2...

- The position of the players is relative the centre ice dot (0,0).

- To the right and up is positive; to the left and down is negative.

- See the picture below for the locations of some lines

When the goalie doesn't have the puck, he is constrained to a small box around the crease, measured in pixels (although he actually can move outside this box, but his movement becomes extremely slow, about 1 pixel per second).

- Right side of box: $0024. The value is in the ROM at offset @00B632

- Left side of box: $FFDB @00B650

- Bottom of box for the upper-end goalie: $00E7 @00B66A

- Top of box for the lower-end goalie: $FF19 @00B674

When the goalie has the puck, the whistle is blown if he crosses a line near the top of the faceoff dots.

- The line for the upper-end goalie: $00AA @00D3EA

- The line for the lower-end goalie: $FF56 @00D3F2

Here is an example you might use:

--------------------------------
Make the box twice as wide for both goalies:
--------------------------------

(right side)
OFFSET: @00B632
OLD VALUE: $0024 (+36)
NEW VALUE: $0048 (+72)

(left side)
OFFSET: @00B650
OLD VALUE: $FFDC (-36)
NEW VALUE: $FFB8 (-72)

--------------------------------
Let the goalies roam farther towards centre ice, WITHOUT the puck:
--------------------------------

(upper end goalie)
OFFSET: @00B66A
OLD VALUE: $00E7 (+231)
NEW VALUE: $00E0 (+224, a little bit closer to centre-ice)

(lower end goalie)
OFFSET: @00B674
OLD VALUE: $FF19 (-231)
NEW VALUE: $FF20 (-224, a little bit closer to centre-ice)

--------------------------------
Let the goalies roam farther towards centre ice WITH the puck:
--------------------------------

(upper end goalie)
OFFSET: @00D3EA
OLD VALUE: $00AA
NEW VALUE: $0090 (between the faceoff circles and the blueline)

(lower end goalie)
OFFSET: @00D3F2
OLD VALUE: $FF56
NEW VALUE: $FF70 (between the faceoff circles and the blueline)

Here's an example for letting the goalies go anywhere:

--------------------------------
Make the box as wide as the rink for both goalies:
--------------------------------

(right side)
OFFSET: @00B632
OLD VALUE: $0024 (+36)
NEW VALUE: $007C (+124)

(left side)
OFFSET: @00B650
OLD VALUE: $FFDC (-36)
NEW VALUE: $FF84 (-124)

--------------------------------
Let the goalies roam all the way down the ice, WITHOUT the puck:
--------------------------------

(upper end goalie)
OFFSET: @00B66A
OLD VALUE: $00E7 (+231)
NEW VALUE: $FE00 (uhh this is a guess.. my diagram has a mistake.  tell me if this doesnt work.)

(lower end goalie)
OFFSET: @00B674
OLD VALUE: $FF19 (-231)
NEW VALUE: $0200 (uhh this is a guess.. my diagram has a mistake.  tell me if this doesnt work.)

--------------------------------
Let the goalies roam all the way down the ice WITH the puck:
--------------------------------

(upper end goalie)
OFFSET: @00D3EA
OLD VALUE: $00AA
NEW VALUE: $FE00 (uhh this is a guess.. my diagram has a mistake.  tell me if this doesnt work.)

(lower end goalie)
OFFSET: @00D3F2
OLD VALUE: $FF56
NEW VALUE: $0200 (uhh this is a guess.. my diagram has a mistake.  tell me if this doesnt work.)

post-253-1265582897_thumb.png

-----

Notes:

Yes, it would be possible to add extra code to the game to get the play whistled down if the goalie violated the trapezoid rule (but without a penalty), but I won't do this. The AI goalie always rushes into the corner to get the puck, so this would cause a huge number of whistles without knowing how to disable that behaviour.

kind of funny: I spent sooo much time tracing backwards through code trying to find how to do this hack, without success ... then I got sick of it and just started looking at the very first trace point that used a certain memory location, and what do you know, that was it. Could have saved hours! I learned some stuff on the way, though, that might be useful some other time.

Edited by smozoma

Share this post


Link to post
Share on other sites

Another brilliant hack. :anger:

When you said you came across a few interesting things was just wondering if the following things are or could be possible?

1. Increasing or possibly reducing the goalie side-to-side movement making it harder to deke the goalie? (far too easy on Genesis but is certainly more difficult in the SNES 93 version)

2. Making the computer pull the goalie after just one goal rather than two

3. Further to this making the computer swap goalies if the starter is having a bad day.

Also any ideas if the scoring areas of the net work in a similar way?

Share this post


Link to post
Share on other sites
Another brilliant hack. :anger:

When you said you came across a few interesting things was just wondering if the following things are or could be possible?

1. Increasing or possibly reducing the goalie side-to-side movement making it harder to deke the goalie? (far too easy on Genesis but is certainly more difficult in the SNES 93 version)

2. Making the computer pull the goalie after just one goal rather than two

3. Further to this making the computer swap goalies if the starter is having a bad day.

Also any ideas if the scoring areas of the net work in a similar way?

Sorry, I haven't seen anything like that.

What I meant was I found things like where the player's current speed is stored, and the location of the puck. I think the location of the puck will allow me to find a way to disable icing.

Share this post


Link to post
Share on other sites
Sorry, I haven't seen anything like that.

What I meant was I found things like where the player's current speed is stored, and the location of the puck. I think the location of the puck will allow me to find a way to disable icing.

Well was just wondering if some of this could be done as would definitely improve the game. Had a bit of a go at this hacking without any real success (just some strange happenings) so not sure what is and isn't possible.

Share this post


Link to post
Share on other sites
Well was just wondering if some of this could be done as would definitely improve the game. Had a bit of a go at this hacking without any real success (just some strange happenings) so not sure what is and isn't possible.

Those will be relatively difficult hacks, unfortunately.

1. (make it harder to deke)

No clue if this is possible. AI code is a mystery. Making them move less on dekes would probably have the side effect of making them really slow on onetimers. I'd be more interested in getting rid of the falling over save on the walk-across move. Anyway, it's not that easy to score on dekes in '94, I find.. even the best breakaway percentage in Blitz is just 26%, and only one other person even has 20%

2. Making the computer pull the goalie after just one goal rather than two

Actually, i think this one should be possible, but i'm not quite sure what you mean. the CPU will pull the goalie if they're down by 2 goals near the end, but you only want it to pull him when they're down by 1?

3. Further to this making the computer swap goalies if the starter is having a bad day.

This is maybe possible, but quite hard. It would involve adding entirely new code to the game, since the game never swaps goalies. I did something like this when improving the checking code and fixing the 2nd-assist bug. Someone would need to figure out how the goalie swapping works..

Share this post


Link to post
Share on other sites
Those will be relatively difficult hacks, unfortunately.

1. (make it harder to deke)

No clue if this is possible. AI code is a mystery. Making them move less on dekes would probably have the side effect of making them really slow on onetimers. I'd be more interested in getting rid of the falling over save on the walk-across move. Anyway, it's not that easy to score on dekes in '94, I find.. even the best breakaway percentage in Blitz is just 26%, and only one other person even has 20%

2. Making the computer pull the goalie after just one goal rather than two

Actually, i think this one should be possible, but i'm not quite sure what you mean. the CPU will pull the goalie if they're down by 2 goals near the end, but you only want it to pull him when they're down by 1?

3. Further to this making the computer swap goalies if the starter is having a bad day.

This is maybe possible, but quite hard. It would involve adding entirely new code to the game, since the game never swaps goalies. I did something like this when improving the checking code and fixing the 2nd-assist bug. Someone would need to figure out how the goalie swapping works..

Regarding no2 - yeh I think it would be better if teams pulled their goalie when down 1 rather than 2 - more realistic. Ideally pulling the goalie when down by 1 or by 2. Weren't you talking about doing a hacking website before? Is that still on the horizon?

Share this post


Link to post
Share on other sites

I think a better way to make the computer harder to play against is to "teach" them how to shoot more one-timers and try more cheese ramming. I'm not sure how we can code the brains of me, Frey, Bo, habs, Icestorm, etc. though...

Share this post


Link to post
Share on other sites
Regarding no2 - yeh I think it would be better if teams pulled their goalie when down 1 rather than 2 - more realistic. Ideally pulling the goalie when down by 1 or by 2. Weren't you talking about doing a hacking website before? Is that still on the horizon?

I finally have my own linux/apache server going, so I may actually try this now..

Share this post


Link to post
Share on other sites

any ideas on similar codes for SNES ROMs?

Share this post


Link to post
Share on other sites

This hack would be more do-able in SNES because the goalies don't chase the puck in the corners as much.

Share this post


Link to post
Share on other sites

let's do it, then! you start! hehe. seriously, if I thought I could translate this from Genesis to SNES, I would, but I am going to require major assistance. really, though... let's do this.

Share this post


Link to post
Share on other sites

not having any luck with simple endian conversion (duh), so I'm hoping somebody wants to try to tackle this stuff the hard way. this site could surely use some semipro SNES hackers.

Share this post


Link to post
Share on other sites

Bump for my info on Plabax Rom.

Plabax, what were the parameters you used?

 

Edited by CoachMac

Share this post


Link to post
Share on other sites

I think I found them

At B632 change from 0024 to 0028
At B650 change from FFDC to FFD8

At B66A change from 00E7 to 00E0
At B674 change from FF19 to FF20

Is that correct?

Share this post


Link to post
Share on other sites

Whatever Blitz uses. I didn't change anything.

I didn't even know this hack existed (in Blitz) when Plablegs started. It just happened to be in the ROM by chance.

Edited by Premium

Share this post


Link to post
Share on other sites
Guest
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoticons maximum 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.