Jump to content
buck

COM defensive coverage late in season

Recommended Posts

Is there code in TSB (besides "JUICE") that makes COM defense cover more WRs as the season progresses/MAN gets more wins?

It seems to me that either:

1. there is some "extra code" that makes COM cover more WR as season goes on,

2. or COM is picking the best possible pass play to get max coverage as the season progresses

I've tried setting a high "INT Juice" for every week and that doesn't do it. Even with all the same "INT Juice" the coverage still increases as I get more wins...[And I don't want to hack the defensive play bytes because I don't want to interfere with MAN side of the ball.]

I want to make only COM cover more WRs all the time and it seems to me that there is something happening to make them cover more later in a season. But I don't understand how it works.

Share this post


Link to post
Share on other sites

I did a little searching last night but couldn't find it. I was looking for code that loaded up at the start of the game - similar to "juice" code - it's loaded at the beginning of the game. I wasn't able to find any values that loaded in a similar pattern, except stuff around xE07C.

Does anybody know what is going on around xE07C to xE0AB?

I'm going to look for code that's loaded when COM defense gets on the field, hopefully I can find a pattern...we've got to find this COM "mojo"!

Share this post


Link to post
Share on other sites
Does anybody know what is going on around xE07C to xE0AB?

that has something to do with the "week 1-17" text that displays at the intro to a season game.

Share this post


Link to post
Share on other sites

just a bump here, but I'm still pretty darn sure that there is some other kind of cpu mojo goin' on as the season progresses...I'm not sure how to find it, though.

any ideas on how to use fceuxdsp or something?

Share this post


Link to post
Share on other sites

If I knew the answer to this, I'd be super happy. I did some searching myself, but I couldn't find it either...

Specifically, I'd like this for the SNES, although I assume once we find it in the NES, it'd be easy to port.

Share this post


Link to post
Share on other sites

I think I may have found it:

This code is ran at the start of the game...I think it also sets the juice.


; 0x034106
$80F6:A0 B2 LDY #$B2 ;
$80F8:B1 3E LDA ($3E), Y ; wins
$80FA:A0 B3 LDY #$B3 ;
$80FC:38 SEC ;
$80FD:F1 3E SBC ($3E), Y ; losses
$80FF:B0 10 BCS $8111 ; if (wins - losses >= 0) goto $8111
$8101:4C 0F 81 JMP $810F
$8104:20 58 81 JSR $8158
$8107:C9 30 CMP #$30
$8109:F0 04 BEQ $810F
$810B:C9 03 CMP #$03
$810D:D0 2D BNE $813C
$810F:A9 00 LDA #$00 ; else, set difference to zero
$8111:8D 7D 66 STA $667D ; save difference

When the ball is snapped this code is ran:


; 0x028B3F
$8B2F:AD 7D 66 LDA $667D ;
$8B32:C5 DE CMP $DE
$8B34:90 03 BCC $8B39
$8B36:4C C5 97 JMP $97C5 ; <---harder ai
$8B39:4C 1B 80 JMP $801B ; <---softer ai

By NOP'ing the BCC $8B39 out, the CBs almost always covered the receivers, the ILBs either double covered/ran back and forth between 2 receivers/rushed the qb. When I NOP'ed the JMP $97C5 too, the defense usually just stood there.

I need to test it out a bit more (I only tried season, MAN vs COM, MIN vs DET).

Share this post


Link to post
Share on other sites

yeah, in preseason mode -> setting 0x28b44 and 0x28b45 to EA seems to give the cpu late-season AI - even in RUN defense...hot damn.

Share this post


Link to post
Share on other sites

any chance you could find the SNES location, cx? I looked for a similar string and couldn't find one...

I wonder how this works...does it use the value that's there until your record gets to a certain point, and then it flips this flag to no operation? Basically...if the game detects nop in this location, it's good coverage, otherwise it's preseason style coverage?

Now that I started teaching myself 6502, I understand a bit more what's going on...so the reason I couldn't find the string is because the CMP and the JMPs are pointing to memory locations, and those are likely different in the SNES. I was able to find 90 03 4C in about a million spots, now I just need to find one near a C5

Share this post


Link to post
Share on other sites
any chance you could find the SNES location, cx? I looked for a similar string and couldn't find one...

Now that I started teaching myself 6502, I understand a bit more what's going on...so the reason I couldn't find the string is because the CMP and the JMPs are pointing to memory locations, and those are likely different in the SNES. I was able to find 90 03 4C in about a million spots, now I just need to find one near a C5

why don't you search for "C5 DE 90 03 4C"

I searched for it and can't find it

Share this post


Link to post
Share on other sites

I think the DE is is not in the snes. I think I found it as I said in the last post, XVI32 has a wildcard character search. I will test tonight.

If this does work, I think the juice code for interceptions should be altered, as it might be near impossible to pass.

Share this post


Link to post
Share on other sites
If this does work, I think the juice code for interceptions should be altered, as it might be near impossible to pass.

Yeah, I'm playing thru a season right now with this MOJO hack...get your JJs and timed-Dive catches in order!

I'm gonna look into a random branch...so at least there's a chance that you can get somebody besides a HB or TE open.

Share this post


Link to post
Share on other sites
I think the DE is is not in the snes. I think I found it as I said in the last post, XVI32 has a wildcard character search. I will test tonight.

The $DE is a ram address, so it probably won't be the same on the snes. If it doesn't turn up, I can take a look tonight when I get home.

Share this post


Link to post
Share on other sites

What I usually do is set a breakpoint in the debugger on the address I'm trying to find. When it snaps, right click on the left side of the debugger window and some text should pop up that says "go here in rom" or something like that.

Share this post


Link to post
Share on other sites

Buck, that random thing is intriguing. Let me k ow what you find.

cxrom, thanks for the response. Once I looked at the code, I realized the DE was a me

address. If my tests don't pan out, I might have to consult with you. Thanks much.

Share this post


Link to post
Share on other sites

Unless my eyes deceive me, that is definitely it for SNES. Everyone was covered a helluva lot more often and I had to get lucky enough to have a guy wide open or hope for a diving CC...very cool.

Now if we could come up with some way to make it a little more randomized so it wasn't so derned difficult...running was effin' impossible with this turned on...

Share this post


Link to post
Share on other sites

Well... You could have juice turned off and just have the normal players but with the improved AI which would make the attributes actually matter instead of playing against a team of madmen.

But anyways... great find!! I've always wondered where that boost came from I'm glad it's finally been found.

Now if only someone could figure out how to have the cpu randomly pick a player and then give the guy with the # over his head a boost I'd have my wishlist just about complete.

Share this post


Link to post
Share on other sites
When the ball is snapped this code is ran:


; 0x028B3F
$8B2F:AD 7D 66 LDA $667D ;
$8B32:C5 DE CMP $DE
$8B34:90 03 BCC $8B39
$8B36:4C C5 97 JMP $97C5 ; <---harder ai
$8B39:4C 1B 80 JMP $801B ; <---softer ai

Interesting, I never looked hard for this since I didn't think it existed. But I wanted to know what $DE was and I had a pretty good idea from doing the play coding.

From my play design post:

xC8 = COM Jump To (Pointer, Random). $DE = Random in the C8 command while $667D = Juice Level

This code isn't exactly doing harder AI and softer AI. It is deciding whether to jump to the Pointer ($97C5) or skip the Pointer ($801B). Just in the original game the C8 commands are better for obvious reasons now explained.

Share this post


Link to post
Share on other sites

Interesting, I never looked hard for this since I didn't think it existed. But I wanted to know what $DE was and I had a pretty good idea from doing the play coding.

From my play design post:

xC8 = COM Jump To (Pointer, Random). $DE = Random in the C8 command while $667D = Juice Level

This code isn't exactly doing harder AI and softer AI. It is deciding whether to jump to the Pointer ($97C5) or skip the Pointer ($801B). Just in the original game the C8 commands are better for obvious reasons now explained.

So is this just a binary situation, either C8 or no C8? Is there a way to "soften" this or make it randomly occur on a play-by-play basis?

...maybe jump to a created subroutine which basically flips a coin and either jumps to $97C5 or doesn't?

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.

×