Jump to content
bruddog

Changing the differential for popcorning/ dl busting through

Recommended Posts

I haven't checked over this too much but I know of the basic areas. I'll look into it some more though.

x28360 to x28383 has a short routine that jumps to others.

$8350:B1 AE     LDA ($AE),Y ; Offensive HP from x3DFFF to x3E00E
$8352:38 SEC
$8353:F1 3E SBC ($3E),Y ; Defensive HP from x3DFFF to x3E00E
$8355:90 0E BCC $8365 ; if D.HP > O.HP goto $8365
$8357:C9 10 CMP #$10
$8359:90 18 BCC $8373 ; if (O.HP - D.HP) < x10 goto $8373
$835B:C9 20 CMP #$20
$835D:B0 03 BCS $8362 ; if (O.HP - D.HP) > x20 goto $8362
$835F:4C CF 83 JMP $83CF ; Defensive Player Thrown
$8362:4C 0F 84 JMP $840F ; Defensive Player Immediately Thrown
$8365:C9 F1 CMP #$F1
$8367:B0 0A BCS $8373 ; if (O.HP - D.HP) > xF1 goto $8373
$8369:C9 E1 CMP #$E1
$836B:90 03 BCC $8370 ; if (O.HP - D.HP) < xE1 goto $8370
$836D:4C 4A 84 JMP $844A ; Offensive Player Thrown
$8370:4C 84 84 JMP $8484 ; Offensive Player Immediately Thrown
$8373:20 36 B1 JSR $B136 ; Players Grapple

Roughly, each routine has a likely outcome listed above but there is a chance that instead of what happens that the players will just grapple (maybe the weaker player will win but never studied that). I just haven't looked too far past that at any time.

Share this post


Link to post
Share on other sites

What about boosts? For example, the defense gets boosted on called plays, and OL appears to get boosted on certain run plays. Do you know how this is determined? One example of how I'd want to apply this is for DLs with a strong pass rush but weak against the run (like Indy during the regular season last year) I would have their HP boosted when both the offense and defense calls a pass play, but have their normal hp around 50-56.

Share this post


Link to post
Share on other sites
What about boosts? For example, the defense gets boosted on called plays, and OL appears to get boosted on certain run plays. Do you know how this is determined? One example of how I'd want to apply this is for DLs with a strong pass rush but weak against the run (like Indy during the regular season last year) I would have their HP boosted when both the offense and defense calls a pass play, but have their normal hp around 50-56.

That is in the play design for the offense and defense. Similar to when the DL gets boosts to be faster on called plays there is a command that boosts HP. So the players HP would be the score + boost = HP here.

Share this post


Link to post
Share on other sites

The problem is that it would apply to every team.

What about boosts? For example, the defense gets boosted on called plays, and OL appears to get boosted on certain run plays. Do you know how this is determined? One example of how I'd want to apply this is for DLs with a strong pass rush but weak against the run (like Indy during the regular season last year) I would have their HP boosted when both the offense and defense calls a pass play, but have their normal hp around 50-56.

Share this post


Link to post
Share on other sites
things that would be cool:

1. To be able to manipulate this a bit to change the scales.

2. To change the amount of time before the OL busts in.

3. To possibly use a different OL attribute for run blocking.

#3 is brilliant, I like it! Maybe for rs and rp we could find a middle ground for both and draw both from one rating, kind of like tecmo did for the pc and pa. Then you could put run block into that empty slot and have hp drawn from hit on run plays. I'm sure it's probably insanely hard to do for the superflous purpose it would serve, but I like the idea.

I'm just going to bring up again, that I'd like to see HP mean something in man vs man games on nes tecmo much the way it is important in tecmo III. Like the farther away you get from even hp's the harder it is to outtap someone. Noone has even been able to answer if there is even any effect of hp on man vs. man grapples. I personally think the player on defense has an edge, and hp doesn't come into play but that's just an opinion.

Share this post


Link to post
Share on other sites

I came up with some code for more dynamic DL vs OL play but unfortunately the jumps to the random HP boosts need to be applied before the other play commands. :lol:

So my implentation didn't work as expected since the players basically grapple before the HP boost gets applied even if I apply them before the jump to the SET to grapple commands and the jumps to pass rush. Doesn't make sense but that was the case.

I guess thats why in the blitz commands they apply the boosts before any of the other commands. I guess I will have to implement this if I ever get around to making the man-man rom that is like yaks.

This could probably be done in the actual grappling code but

1. I'm not sure there is enough room do do it....especially with all the recent hacks

2. For me to figure out how to do it might be painful.

2. The logic would go roughly like

very rough psuedocode

LOAD random

COMP random if < 40% SET DEF HP 38HP

COMP random if < 47% LOAD DEF HP ADD 50HP

COMP random if < 54% LOAD DEF HP ADD 44HP

....

If random >93% =regular DEF HP

resume normal grappling code.

Share this post


Link to post
Share on other sites

Here is a hack that will make DL vs OL play more variable for basic roms. This hack slightly modifies the code jsout posted above

It gives an evenly matched DL 63vs 63 69 vs 69 a 20% chance of breaking through. Like wise a evenly matched OL has a 10% chance of popcorn. I think the DL bust through goes up about 10% for each differential. I'll plot the table when get a chance.

@28360

B1 AE ; Offensive HP from x3DFFF to x3E00E

91AE ; Store value

A5 3D ; load random number from 3D

29 1F ; Make Random 0-1F (0-31)

18 ; Clear Carry

71 AE ; Add Random to offensive HP

F1 3E ; (OFF HP + Random) - Defensive HP from x3DFFF to x3E00E

90 08 ; if value less than 0 goto Offensive PLayer Thrown

C9 1D ; Compare value with 1D (value - 1D)

B0 07 ; if value > 16 goto Defensive player thrown

C9 04 ; compare with 4

B0 06 ; if value greater than 4 goto Players Grapple else do next instruction

4C 84 84 ;Offensive Player Immediately Thrown

4C 0F 84 ; Defensive Player Immediately Thrown

20 36 B1; players grapple for awhile

EA ; no operation space fillers

EA

EA

EA

EA

EA

SET (0x28360, 0xB1AE91AEA53D291F1871AEF13E9008C91DB007C904B0064C84844C0F842036B1EAEAEAEAEAEA)

Share this post


Link to post
Share on other sites

xplozv gave this to me for the SNES version (he's an NES hack port master!).

SET(0x18DB8,0xB1639163AD0002291F187163F1039008C91DB007C904B0064C158D4C8E8C20B0C3EAEAEAEAEA)

I haven't tested it 100% yet...I love having xplozv around. Finally I don't have to bug jstout to try and figure out hacks for NES. Now SNES gets love too.

Share this post


Link to post
Share on other sites
Here is a hack that will make DL vs OL play more variable for basic roms. This hack slightly modifies the code jsout posted above

It gives an evenly matched DL 63vs 63 69 vs 69 a 20% chance of breaking through. Like wise a evenly matched OL has a 10% chance of popcorn. I think the DL bust through goes up about 10% for each differential. I'll plot the table when get a chance.

@28360

B1 AE ; Offensive HP from x3DFFF to x3E00E

91AE ; Store value

A5 3D ; load random number from 3D

29 1F ; Make Random 0-1F (0-31)

18 ; Clear Carry

71 AE ; Add Random to offensive HP

F1 3E ; (OFF HP + Random) - Defensive HP from x3DFFF to x3E00E

90 08 ; if value less than 0 goto Offensive PLayer Thrown

C9 1D ; Compare value with 1D (value - 1D)

B0 07 ; if value > 16 goto Defensive player thrown

C9 04 ; compare with 4

B0 06 ; if value greater than 4 goto Players Grapple else do next instruction

4C 84 84 ;Offensive Player Immediately Thrown

4C 0F 84 ; Defensive Player Immediately Thrown

20 36 B1; players grapple for awhile

EA ; no operation space fillers

EA

EA

EA

EA

EA

SET (0x28360, 0xB1AE91AEA53D291F1871AEF13E9008C91DB007C904B0064C84844C0F842036B1EAEAEAEAEAEA)

this is interesting. I've been trying it out for a few games - but can't tell any difference, yet.

Share this post


Link to post
Share on other sites

If you lower the value in red, the defender will be thrown more often. If you raise the value in blue closer to the value in red, the offensive player will be thrown more often. The wider the gap in the two values will cause a normal grapple to happen more often.

SET (0x28360, 0xB1AE91AEA53D291F1871AEF13E9008C91DB007C904B0064C84844C0F842036B1EAEAEAEAEAEA)

The SET command for the SNES a few posts above is for an SNES rom with a header. Here is the one for a headerless rom:

SET(0x18BB8,0xB1639163AD0002291F187163F1039008C91DB007C904B0064C158D4C8E8C20B0C3EAEAEAEAEA)

Share this post


Link to post
Share on other sites
If you lower the value in red, the defender will be thrown more often. If you raise the value in blue closer to the value in red, the offensive player will be thrown more often. The wider the gap in the two values will cause a normal grapple to happen more often.

by 'normal grapple' do you mean that the two players' HP is used instead of this random stuff?

Share this post


Link to post
Share on other sites

Sorry think I had a few errors with that code. Though i think it still should have been noticeable. The ORIGINAL ROM code does this

1. DEF HP is 50 more than OFF HP Throw offense immediately

2. DEF HP is 25 more than OFF HP Throw offense (variable amount of time before OL thrown)

3. OFF HP is 50 more than DEF HP throw defense immediately

4. OFF HP is 25 more than DEF HP throw defense immediately (variable amount of time before DL thrown)

otherwise it goes to the 20 36 B1 routine where the players engage in a lengthy grapple.

The problem is almost never do player matchups reach the 25 or 50 HP threshold so almost always they engage in a lengthy grapple. The use of fixed threseholds means the same thing essentially happens on every play with regards to the OL DL play.

Here is the fixed code. It should work this time.

B1 AE ; Offensive HP from x3DFFF to x3E00E

38 ; set carry

F1 3E ; (OFF HP - Defensive HP) from x3DFFF to x3E00E

91 AE ; Store value

A5 3D ; load random number from 3D

29 3F ; Make Random 0-1F (0-31)

18 ; Clear Carry

71 AE ; Add Random to offensive HP

30 0B

c9 0E ; compare wit 00

90 07 ; if value neg carry set goto Offensive PLayer Thrown

C9 34 ; compare with 52

90 06 ; < 52 go to players grapple

4C 0F 84 ; Defensive Player Immediately Thrown

4C 84 84 ; Offensive Player Immediately Thrown

20 36 B1; players grapple for awhile

EA ; no operation space fillers

EA

EA

EA

EA

EA

Making the the "OE" in C9 0E larger will increase the percentage of defenders busting in and decreasng it will decrease the percentage. Likewise changing the "34" to a lower number will have more OL popcorning defenders.

Share this post


Link to post
Share on other sites

Great job with this hack bruddog! I am loving new feel it gives especially in the passing game. Sometimes you have all the time you need to hit your WR. Sometimes the one of the DL is on you pretty quick and you have to scramble to throw or scramble to pick up a couple of yards. I enjoy the balanced realistic OL/DL play with this hack.

Here is the corrected code ported to SNES TSB1:

SET(0x18BB8,0xB16338F1039163AD0002293F187163300BC90E9007C93490064C8E8C4C158D20B0C3EAEAEAEAEA)

Share this post


Link to post
Share on other sites

Sorry think I had a few errors with that code. Though i think it still should have been noticeable. The ORIGINAL ROM code does this

1. DEF HP is 50 more than OFF HP Throw offense immediately

2. DEF HP is 25 more than OFF HP Throw offense (variable amount of time before OL thrown)

3. OFF HP is 50 more than DEF HP throw defense immediately

4. OFF HP is 25 more than DEF HP throw defense immediately (variable amount of time before DL thrown)

otherwise it goes to the 20 36 B1 routine where the players engage in a lengthy grapple.

@ x8360... what do E1 and F1 stand for? How can you use this to manipulate the different differentials?

I'd like the offensive player to be thrown if the differential is +25 and to loop to 844a if the differential is 13.

Edited by quince3800

Share this post


Link to post
Share on other sites

I haven't checked over this too much but I know of the basic areas. I'll look into it some more though.

x28360 to x28383 has a short routine that jumps to others.

$8350:B1 AE LDA ($AE),Y ; Offensive HP from x3DFFF to x3E00E
$8352:38 SEC
$8353:F1 3E SBC ($3E),Y ; Defensive HP from x3DFFF to x3E00E
$8355:90 0E BCC $8365 ; if D.HP > O.HP goto $8365
$8357:C9 10 CMP #$10
$8359:90 18 BCC $8373 ; if (O.HP - D.HP) < x10 goto $8373
$835B:C9 20 CMP #$20
$835D:B0 03 BCS $8362 ; if (O.HP - D.HP) > x20 goto $8362
$835F:4C CF 83 JMP $83CF ; Defensive Player Thrown
$8362:4C 0F 84 JMP $840F ; Defensive Player Immediately Thrown
$8365:C9 F1 CMP #$F1
$8367:B0 0A BCS $8373 ; if (O.HP - D.HP) > xF1 goto $8373
$8369:C9 E1 CMP #$E1
$836B:90 03 BCC $8370 ; if (O.HP - D.HP) < xE1 goto $8370
$836D:4C 4A 84 JMP $844A ; Offensive Player Thrown
$8370:4C 84 84 JMP $8484 ; Offensive Player Immediately Thrown
$8373:20 36 B1 JSR $B136 ; Players Grapple

Roughly, each routine has a likely outcome listed above but there is a chance that instead of what happens that the players will just grapple (maybe the weaker player will win but never studied that). I just haven't looked too far past that at any time.

I'm guessing this is already known in some way, but I think I've figured this out for the defense. The values at 28370 were originally:

  • c9 e1 to throw immediately (although this is not 100% of the time, it's just like 80+) and
  • c9 f1 to (grapple for a time?) and then throw (i.e., the throw may be immediate, or take some time)

These correspond to tecmo rating differentials as follows (the hex coefficient is +/- 4):

fd = 6 (tested)

f9 = 13 (tested)

f5 = 19 (tested)

f1 = 25

ed = 31 (should)

e9 = 38 (should)

e5 = 44 (should)

e1 = 50

I tested this with DL's at 56 and 50 against an OL with all 44 HP and it worked the way I expected. The only hitch was that the immediate throwing differential is not 100%.

I'm not able to figure out the offensive range yet though. In counting backwards, I got 50 (HP differential) at c9 20, but a 19 at c9 10. The 25 was at c9 12 when I charted it. I don't know if this means the code really says to throw variably with a 19 HP differential (offense over defense) or if I miscounted. This is how I corresponded the numbers:

19 = 10

25 = 12

31 = 14

38 = 16

44 = 18

50 = 20

I should probably toy with this some more, but that's what I arrived at tonight from testing.

*Note: if you put the differential bytes in the wrong order (i.e., the higher value before the lower one), it will cause the grapples to be uneven. I had a (modified) completely 44 HP Colts (1991) OL defeating the Raiders DL's in grapples consistently. There seemed to be about a 50-50 split with this in place. I didn't return to it, but it's something maybe to look into.

*Edit:

I couldn't find the offensive numbers because I was thinking about it the wrong way. The coefficient is again 4, thus:

25 = 10

31 = 14 (should be)

38 = 18 (should be)

44 = 1c (should be)

50 = 20

Edited by quince3800

Share this post


Link to post
Share on other sites

After checking this over Tecmomonster I found a few errors. One saving the result was wrong because then the modified result is used as the offensive players HP for any other interactions during the play.

 

2. I had an extra EA in the code above that overwrote something. I'm not sure what the effect of that would be. There are more EA's below but that is because I removed the saving portion.

 

Tecmo

A5 3D ; load random number from 3D
29 3F ; Make Random 0-1F (0-31)
18 ; Clear Carry

71 AE ; Add Offensive HP from x3DFFF to x3E00E
38 ; set carry
F1 3E ; (OFF HP - Defensive HP) from x3DFFF to x3E00E + Random

30 0B
c9 0E ; compare with 14
90 07 ; BCC,  if value neg carry set go to Offensive Player Thrown
C9 34 ; compare with 52
90 06 ; < 52 go to players grapple
4C 0F 84 ; Defensive Player Immediately Thrown
4C 84 84 ; Offensive Player Immediately Thrown
20 36 B1; players grapple for awhile
EA

EA

EA

EA

EA

EA

EA

EA

EA
 

Share this post


Link to post
Share on other sites

bruddog@paypal.com:

COMMENTS/QUESTION - the original code used B1AE to "load offensive HP" - Why does your new version use 71AE? Is it because it "adds" instead?

 

also

I did like how the previous version worked.  I thought it did the job fine, seemed more "dynamic" than this one.  Are the only two practical differences between this latest and the previous version is that individual OL HP *was unintentionally* modified; and that extra "EA"?

 

 

After checking this over Tecmomonster I found a few errors. One saving the result was wrong because then the modified result is used as the offensive players HP for any other interactions during the play.

 

2. I had an extra EA in the code above that overwrote something. I'm not sure what the effect of that would be. There are more EA's below but that is because I removed the saving portion.

 

Tecmo

A5 3D ; load random number from 3D
29 3F ; Make Random 0-1F (0-31)
18 ; Clear Carry

71 AE ; Add Offensive HP from x3DFFF to x3E00E
38 ; set carry
F1 3E ; (OFF HP - Defensive HP) from x3DFFF to x3E00E + Random

30 0B
c9 0E ; compare with 14
90 07 ; BCC,  if value neg carry set go to Offensive Player Thrown
C9 34 ; compare with 52
90 06 ; < 52 go to players grapple
4C 0F 84 ; Defensive Player Immediately Thrown
4C 84 84 ; Offensive Player Immediately Thrown
20 36 B1; players grapple for awhile
EA

EA

EA

EA

EA

EA

EA

EA

EA
 

Edited by buck

Share this post


Link to post
Share on other sites
On 9/24/2011 at 0:02 PM, bruddog said:

Sorry think I had a few errors with that code. Though i think it still should have been noticeable. The ORIGINAL ROM code does this

 

1. DEF HP is 50 more than OFF HP Throw offense immediately

2. DEF HP is 25 more than OFF HP Throw offense (variable amount of time before OL thrown)

 

3. OFF HP is 50 more than DEF HP throw defense immediately

4. OFF HP is 25 more than DEF HP throw defense immediately (variable amount of time before DL thrown)

 

otherwise it goes to the 20 36 B1 routine where the players engage in a lengthy grapple.

 

The problem is almost never do player matchups reach the 25 or 50 HP threshold so almost always they engage in a lengthy grapple. The use of fixed threseholds means the same thing essentially happens on every play with regards to the OL DL play.

 

Here is the fixed code. It should work this time.

 

 

 

B1 AE ; Offensive HP from x3DFFF to x3E00E

38 ; set carry

F1 3E ; (OFF HP - Defensive HP) from x3DFFF to x3E00E

91 AE ; Store value

A5 3D ; load random number from 3D

29 3F ; Make Random 0-1F (0-31)

18 ; Clear Carry

71 AE ; Add Random to offensive HP

30 0B

c9 0E ; compare wit 00

90 07 ; if value neg carry set goto Offensive PLayer Thrown

C9 34 ; compare with 52

90 06 ; < 52 go to players grapple

4C 0F 84 ; Defensive Player Immediately Thrown

4C 84 84 ; Offensive Player Immediately Thrown

20 36 B1; players grapple for awhile

EA ; no operation space fillers

EA

EA

EA

EA

EA

 

Making the the "OE" in C9 0E larger will increase the percentage of defenders busting in and decreasng it will decrease the percentage. Likewise changing the "34" to a lower number will have more OL popcorning defenders.

so the updated nes command would be:

 

#Changing the differential for popcorning/ dl busting through
#http://tecmobowl.org/forums/topic/8388-changing-the-differential-for-popcorning-dl-busting-through/
#Visit link to see author's notes on variables to edit to modify code below
SET(0x28360,0xB1AE38F13E91AEA53D293F1871AE38F13E300BC90E9007C93490064C0F844C84842036B1EAEAEAEAEAEAEAEAEA)

@bruddog is this correct?

 

Edited by SBlueman

Share this post


Link to post
Share on other sites

so you take this part of the original code as posted here:

 

SET(0x28360,0xB1AE38F13E91AE

 

and then add this edit as per this post:

 

A53D293F1871AE38F13E300BC90E9007C93490064C0F844C84842036B1EAEAEAEAEAEAEAEAEA)

 

now one can fiddle with items in red above as so:

 

Quote

Making the the "OE" in C9 0E larger will increase the percentage of defenders busting in and decreasng it will decrease the percentage. Likewise changing the "34" to a lower number will have more OL popcorning defenders.


just trying to have a concise post that summarizes this code and makes is accessible for readers. 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.

×