The password for Joe Montana Sports Talk Football '93 is too simple

I was up for a good challenge. In a moment of winter boredom I decided to take a stab at reverse engineering the password for Joe Montana Sports Talk Football '93. I was all psyched to try figuring out a checksum or some other nuisance. Instead, it's a simple pattern that took a little trial & error to solve. So boring.

Of all the old football games, I don't know why I like this one so much. I think because it's not way too simple, like football on Intellivision or Atari 2600 or even early NES games. You don't need a deep understanding of offensive & defensive schemes though. There are no injuries or random penalties. The weather effects look nice. There is only one named player so it's unlikely you ever have to play as someone who went on to commit an awful crime. I'm not looking for much more out of an NFL game.

Joe Montana Sports Talk Football '93 has a 10 character password for saving season progress. Even if it included a battery the password is a nice feature if you want to go straight to the Super Bowl for your favorite team. Unless of course your favorite team didn't exist in 1993.

Password format

The 10 characters of the password are all in fixed positions that map to one field. There's nothing fancy going on here:


[0] Team code
[1] Other team win/loss
[2] Schedule
[3] Week
[4] Player wins (weeks 1-5) 
[5] Player wins (weeks 6-10) 
[6] Player wins (weeks 7-15) 
[7] Player wins (week 16+playoffs) 
[8] Difficulty/time
[9] Options

Each of these will be described in detail. Actually, let's start doing that now...

Team code

The first character in the password is the player team. The values start at B and are mostly alphabetical by city:


B=Atlanta
C=Buffalo
D=Chicago
F=Cincinnati
G=Cleveland
H=Dallas
J=Denver
K=Detroit
L=Green Bay
M=New York (Giants)
N=Kansas City
P=Houston
Q=Las Angeles (Raiders)
R=Las Rams (Rams)
S=Indianapolis
T=Minnesota
V=New Orleans
W=New England
X=Miami
Y=New York (Jets)
Z=Philadelphia
0=Phoenix
1=Pittsburgh
2=San Diego
3=Seattle
4=San Francisco
5=Tampa
6=Washington

As far as I can tell, you can swap the team from any code with any other.

Other team win/loss

This is the one I understand the least. All I can tell is it impacts the win/loss record of the other teams. There are 4 different values it cycles between. B, C, D, F produce different values and then G loops back to the B value. This cycle of 4 values continues through the entire password character set.

Here is an example:

Win/loss scenarios

Obviously the player's win/loss record changes this. That is explained further down. What I think is happening, which is supported by the next section, is the game has a set of predefined season scenarios.

Schedule

Like the previous item, this cycles between 4 options. There are 4 potential schedules per team with B being schedule 1, C being 2, and so on until they loop back around with G. See this example for week 1:

Four possible schedules

About half the games are divisional matches. Maybe this value impacts which divisions play which other divisions? In the first screenshot there is also:

Hmm... maybe that theory checks out. None of those match seasons between 1991-1993 so I think we can rule out that these are based on real schedules. The 4th screenshot is interesting as there is only one non-divisional game, AFC East vs NFC East. It would make sense that the field would toggle between which divisions play each other. I'm not recording every game played in a season to test this idea out. Although it is probably not difficult to find a block of data with the schedules in the ROM.

The next game in this series allows the player to select a season to recreate (1991-1993). So I think this is an early iteration of that idea.

Combining this with the previous one yields 16 possible season scenarios. I'll feel a little dumb if this is in the manual... [checks manual]... it's not. I'd look for an ad or other marketing material but I think that will end up back on this site anyway.

Week

This is which week the season is in. These start at C which is week 1. Yes, you can have a password starting at week 1 even though you can't produce it in the game. From there they simply increment until Y. So all the possible values are:


C = Week 1
D = Week 2
F = Week 3
G = Week 4
H = Week 5
J = Week 6
K = Week 7
L = Week 8
M = Week 9
N = Week 10
P = Week 11
Q = Week 12
R = Week 13
S = Week 14
T = Week 15
V = Week 16
W = Playoffs, divisional round
X = Playoffs, conference round
Y = Super Bowl

For the playoff weeks, there are a limited set of values accepted in the Player wins (week 16+playoffs) field described later on.

Player wins (weeks 1-5)

This part is a little complicated to explain. The player's win/loss record is recorded in a set of 4 bitstrings of 5 characters each. Although for the final one only 3 characters match. Letters in the password screen correspond to a bitstring. Luckily they are in sequence and follow a very easy to identify pattern.

Here are the possible values:


B = 00000 = Player has lost all five games
C = 10000 = Player win in week 1
D = 01000 = Player win in week 2
F = 11000 = Player win in weeks 1-2
G = 00100 = Player win in week 3
H = 10100 = Player win in weeks 1,3
J = 01100 = Player win in weeks 2-3
K = 11100 = Player win in weeks 1-3
L = 00010 = Player win in week 4
M = 10010 = Player win in weeks 1,4
N = 01010 = Player win in weeks 2,4
P = 11010 = Player win in weeks 1-2,4
Q = 00110 = Player win in weeks 3-4
R = 10110 = Player win in weeks 1,3-4
S = 01110 = Player win in weeks 2-4
T = 11110 = Player win in weeks 1-4
V = 00001 = Player win in week 5 
W = 10001 = Player win in weeks 1,5
X = 01001 = Player win in weeks 2,5
Y = 11001 = Player win in weeks 1-2,5
Z = 00101 = Player win in weeks 3,5
0 = 10101 = Player win in weeks 1-3,5
1 = 01101 = Player win in weeks 2-3,5
2 = 11101 = Player win in weeks 1-3,5
3 = 00011 = Player win in weeks 4-5
4 = 10011 = Player win in weeks 1,4-5
5 = 01011 = Player win in weeks 2,4-5
6 = 11011 = Player win in weeks 1-2,4-5
7 = 00111 = Player win in weeks 3-5
8 = 10110 = Player win in weeks 1,3-5
9 = 01111 = Player win in weeks 2-5
? = 11111 = Player win in weeks 1-5

Now, I don't know why anyone would save a password after losing a game. Maybe you have already clinched a playoff spot and don't care. Maybe they are trying to recreate a season. I dunno, there are some people even weirder than me out there.

Player wins (weeks 6-10)

This works exactly like the previous field but add 5 to all the weeks.

Player wins (weeks 11-15)

Yup, same deal again.

Player wins (week 16+playoffs)

This one is a little more complicated because it supports fewer values. If you are playing in the conference round the code has to have a win in the divisional round. Likewise, playing in the Super Bowl requires wins in both playoff rounds. Using a value that does not have wins for the previous games will produce an invalid password.

This leaves the supported value as:


B = 00000 = Player lost in week 16, is currently in the divisional round
C = 10000 = Player won in week 16, is currently in the divisional round
D = 01000 = Player lost in week 16, won the divisional game, is currently in the conference round
F = 11000 = Player won in week 16, won the divisional game, is currently in the conference round
J = 01100 = Player lost in week 16, won the divisional game, won the conference round, is currently in the Super Bowl
K = 11100 = Player won in week 16, won the divisional game, won the conference round, is currently in the Super Bowl

Difficulty/time

The values for this field are:


B = 00000 = 20 mins, normal
C = 10000 = 20 mins, difficult
D = 01000 = 20 mins, beginner
F = 11000 = invalid
G = 00100 = 40 mins, normal
H = 10100 = 40 mins, difficult
J = 01100 = 40 mins, beginner
F = 11100 = invalid
L = 00010 = 60 mins, normal
M = 10010 = 60 mins, difficult
N = 01010 = 60 mins, beginner

I find the invalid values odd but can also see the pattern they're using.

Options

The options are another 5 character bitstring. The character to bitstring mappings are the same as the win/loss mappings. So B means "00000" and ? means "11111". For options, a zero means that option is enabled and 1 means it is disabled.

The bitstring positions are:


[0] = Zoom view 
[1] = Passing cursor
[2] = SegaVision
[3] = Music
[4] = Speech

So for example, T ("11110") would have everything disabled except speech and H ("10100") has SegaVision and Zoom view disabled.

The field view is not saved anywhere. This is a small annoyance because you have to set it every time you reset or turn off the console.

Examples

Testing every possible combination is not going to happen. Or I'm not going to do it. I'll use a random number generator to create 4 regular season games and spot check the passwords. This is not an exhaustive test of course. For each of these examples the schedule, win/loss, and week 16+playoff wins is set to B.

First up, the random values are:

Result of QBBV7YSBCT password

Alright, that worked. Next up:

Result of BBBTRPQBBC password

Another success, moving on to:

Result of 6BBGHBBBLF password

And now for the last regular season example:

Result of PBBTP6BBGG password

Super Bowl passwords are of course what everyone really wants. They are all very simple. With my preferred options they are all [team code]+BBY???KB9

Some examples:

Two examples of Super Bowl codes

Despite being a little too easy this was still fun. I will not go back to previous installments in this series because I never got into them. Quick reminder that this site is only about things I find interesting. Deciphering passwords for games I'll never play is not on my list. Anyway, I suspect they aren't that different since the games themselves aren't radically different. A quick glance at some Super Bowl passwords for Joe Montana II: Sports Talk Football sure looks like they follow a similar scheme. The later games use a save battery.

Maybe, just maybe, I'll try this again for another game that uses passwords and that doesn't have a published guide to generating them.



Related