Jump to content

How TSB decides strength of CPU opponent?


CMigs

Recommended Posts

Something I've always wondered:

As someone who usually plays the CPU, I loathe the early season games in which the CPU plays at the level of a brain dead rat and a MAN can run off 60-0 without trying. Two questions regarding ways to avoid this:

1) Is there a way to edit the rom up the level of CPU crack?

2) What happens if you sim a season to the middle and take a team with an undefeated record?

I know that the rom gets harder as the season goes on. It also seems that the quality of the CPU is in part based on the MAN team's record. However, is that based on the team's record, or the player's record? If you pick up a team that is 8-0 at midseason, will the CPU be hard, reading an 8-0 team, or easy, reading a 0-0 player?

Link to comment
Share on other sites

  • 4 months later...

If anyone knows where that is let me know, as it would be awesome for CIA. It's a coaching league where we have both MAN and CPU controlled teams. Because the Week 1 CPU isn't as hard to beat as playing the same team in pre-season, all of our games played against CPU-controlled teams are played in pre-season.

The problem with this is that there are no injuries when playing in pre-season, which I would like to be a possibility in every game that is played, not just the MANvMAN ones.

Link to comment
Share on other sites

If anyone knows where that is let me know, as it would be awesome for CIA. It's a coaching league where we have both MAN and CPU controlled teams. Because the Week 1 CPU isn't as hard to beat as playing the same team in pre-season, all of our games played against CPU-controlled teams are played in pre-season.

Computer Juice: x1DF10 to x1DF65

Hex Boost Order: Defensive Speed, Offensive Speed, Interception, Pass Control, Reception

Each level is decided by the team's Win/Loss Record with each win raising the level of juice. A team with 0 wins and 0 losses is the first set of numbers (also the preseason juice). A team with 1 win and 0 losses plays against the same juice as a team with 6 wins and 5 losses (the second set of numbers). Any team with 16 or more wins will play vs the final set of computer juice.

From what I could tell, the first set of numbers also affects some things like return speed for the MAN players and the like.

Link to comment
Share on other sites

so if we have this in the ROM:

0001df10h: 00 01 00 00 00 01 02 01 01 01 01 02 01 02 02 01

0001df20h: 02 01 03 02 02 02 02 03 03 02 02 02 04 03 02 02

0001df30h: 02 04 04 02 02 02 05 04 02 02 03 05 05 02 02 03

0001df40h: 06 05 02 02 04 06 06 03 02 04 07 06 03 03 04 07

0001df50h: 07 03 03 05 08 07 03 03 05 08 08 03 03 05 09 08

0001df60h: 03 04 06 09 09

You're saying that the data in Red is what the teams use for Pre-Season data? I'm wondering if that's correct. The data in Red seems to be the lowest set of values, and I swear that Week 1 teams don't play as well as they do in pre-season. Is it possible that the green or blue collections are what are used in pre-season?

Link to comment
Share on other sites

so if we have this in the ROM:

0001df10h: 00 01 00 00 00 01 02 01 01 01 01 02 01 02 02 01

0001df20h: 02 01 03 02 02 02 02 03 03 02 02 02 04 03 02 02

0001df30h: 02 04 04 02 02 02 05 04 02 02 03 05 05 02 02 03

0001df40h: 06 05 02 02 04 06 06 03 02 04 07 06 03 03 04 07

0001df50h: 07 03 03 05 08 07 03 03 05 08 08 03 03 05 09 08

0001df60h: 03 04 06 09 09

The ones in red are definitely Preseason, Pro-Bowl, and Week 1. The ones in green are 1 win and the ones in blue 2 wins.

If you change all the values to 03 04 06 09 09 the computer will play like you are 16-0 every time that you play.

Link to comment
Share on other sites

I'm really going to have to do some testing to prove this to myself. I doubt one could really tell the difference if they are playing MAN against SF CPU in Week 1 or pre-season. Either way, you'll torch them.

But play those games in COA mode and I think you will see a difference, or at least that's what I'd like to prove.

No disrespect jstout, I'm just hung-up on this. How do you KNOW that the same values are used for both pre-season and week 1? Are you using a program that sniffs which values are loaded at gametime?

This brings up another question: Does the CPU go back and adjust these values during the game to enforce the "comeback" rule if you are crushing the computer? Is it just more likely that this occurs if playing in pre-season, making it seem more difficult to beat the CPU if the comeback rule just isn't applied during week 1 match-ups?

Link to comment
Share on other sites

Glad to see this got picked up.

For people who play the CPU, it'd be awesome to have the CPU at top juice all the time - the first weeks of the season are fairly boring for someone good at the game. It might also mean that I wouldn't be required to play with shitty teams for a challenge.

This might actually inspire me to learn some hex to do this for myself if no one releases a juiced rom.

Link to comment
Share on other sites

Wow, this is great info Jstout.

Especially with the way the juice data is broken up into different categories. This means that I can change my rom so that the CPU doesn't become almost impossible to intercept in the later weeks -- one of the things I was trying to address through player ratings.

Link to comment
Share on other sites

Just wanted to post my conversation with jstout just in case anyone else was following this. jstout, post your results when you get a chance!

(5:19:50 PM) snatches1: thanks for that cpu juice info, that is going to be very helpful for my league

(5:20:08 PM) Jlstout123: No problem. I've had that info for a long time

(5:21:29 PM) snatches1: i'm not convinced that preseason = week 1 values though

(5:22:41 PM) Jlstout123: I was getting ready to answer your question at the board. The FCEUXD emulator that came out a while back has saved me a lot of time for testing stuff. The emulator can be set to highlight and show which bytes are used. So I do know exactly which ones are get loaded.

(5:23:46 PM) snatches1: i figured you would say that, which just confuses me. I just have this gut feeling that it is more difficult to defeat the cpu in pre-season than in week 1

(5:24:34 PM) Jlstout123: I don't think so. I've never had a problem with destroying the CPU during preseason

(5:25:01 PM) snatches1: I would hope not :D

(5:25:17 PM) snatches1: remember, my comments all come from a COA perspective

(5:25:53 PM) Jlstout123: Ok, you want me to load up a COA in preseason and week 1 and see what loads?

(5:26:17 PM) snatches1: I'd love for you to, actually

(5:26:35 PM) Jlstout123: Ok. I'll load up a game and do a few plays then test the next one

(5:26:49 PM) snatches1: i probably need to get my hands on FCEUXD as well

(5:27:31 PM) Jlstout123: Yeah, 2 versions are out there at the moment. The original and the SP version which added some features to the debugger

(5:31:54 PM) snatches1: hey, I gotta run. if you would, just IM me your results or post them on the forum. I'm sure everyone would be interested in the results.

Link to comment
Share on other sites

Glad to see this got picked up.

For people who play the CPU, it'd be awesome to have the CPU at top juice all the time - the first weeks of the season are fairly boring for someone good at the game. It might also mean that I wouldn't be required to play with shitty teams for a challenge.

This might actually inspire me to learn some hex to do this for myself if no one releases a juiced rom.

If that is the only change you make to the original rom it would take about 2 minutes to do. I'll upload it when I get home later if no one else does by then.

A better idea would be for someone to create an IPS patch. Then you can easily juice any rom that you want. I'm not sure how to do that yet. Anyone want to do this?

Link to comment
Share on other sites

Yeah, this is very good stuff for season players. It is nice that the AI juice is broken into categories.

OT - Do you think that the original TSB programmers had in mind that we would be breaking down this (greatest) game to such depths? I think it's strange that the best players in original TSB aren't even "maxed out" according to the internal rating system - like it was left open for...

peace

Link to comment
Share on other sites

Oh NO! Not more BS receptions!!! So with 0B as receptions can the CPU catch the ball with 5 people covering the WR?

But yes, higher values will work - I didn't go above 0F - but anyways, the CPU is fuxxing crazy fast. It's pretty funny to see.

BAD_AL wrote:

Like anyone tried something like 03 05 06 09 0B ?

Link to comment
Share on other sites

But yes, higher values will work - I didn't go above 0F - but anyways, the CPU is fuxxing crazy fast. It's pretty funny to see.

I also did some testing and can confirm that all 0F's makes the CPU impossible to beat. They tackled me in the endzone on a kickoff for a safety, if that paints the picture for you.

Unfortunately, I was disappointed to find out that the same effect does not occur when you play as COA vs. CPU. I played quite a few games in both Preseason and Season to see if there was a difference in the difficulty. I won some and lost some in both modes, leaving me wondering if there is any difference at all b/w the two play modes. More importantly, the way the CPU played was identical to the way they played before I set the initial "juice" variables to all 0F's.

I was really hoping there was a global way of juicing the CPU while playing as COA, but no dice.

I also downloaded that FCEXU emulator and tried to use the trace logger to see if any data from the addresses listed above was accessed in any way during COA mode. I'm not sure if I had it working properly, but after searching the trace log file that was created I did not see that those CPU "juice" values were accessed in any way.

Link to comment
Share on other sites

I also downloaded that FCEXU emulator and tried to use the trace logger to see if any data from the addresses listed above was accessed in any way during COA mode.

use the debugger and set a break point on reads, rather then sifting through a trace log.

Link to comment
Share on other sites

use the debugger and set a break point on reads, rather then sifting through a trace log.

I tried that, but the "to" and "from" address fields will only allow 4-chars, and the juice data is located from x1df10 to x1df64.

Am I missing something here? Can you use the condition field somehow to stop when accessing these locations?

Link to comment
Share on other sites

the nes only has a 16-bit address bus so it can only access $0000 - $FFFF. you need to adjust that address in the *.nes file for where it would be loaded in NES-rom. there are 4 banks:

$8000 - $9FFF

$A000 - $BFFF

$C000 - $DFFF

$E000 - $FFFF

the conditional field is used to have the breakpoint fire in certain situations:

A == #1

$8A != #0

(A == #1) && ($8A != #0)

1. fires the breakpoint only when the accumulator is one

2. only when mem location $8A doesn't equal zero

3. only fires when both conditions are met

Link to comment
Share on other sites

  • 1 month later...
Can someone come up with a "juice" IPS patch for people?

Yeah i would also like to see an IPS patch. Also, has any more testing been done for COA vs. COM play? I'd like to know if editing these values has an impact on those types of games as well.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji 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.

×
×
  • Create New...