Under the microscope: FIFA Soccer 96

We talk sometimes about how cheat sites like GameFAQs have quality control issues. Lots of games have bogus codes listed. Some are incorrectly transcribed, some are actually for other games, and some are totally made up.

Some of the codes for the Genesis version of FIFA Soccer 96 are bogus. Neither of these work, for example:

EA Dream Team: Press A(2), B(2), C(2), B, C(2), A(2) at the options screen.

Super Power: Press B, A, B(2), C, B, A, C, B(4) at the options screen.

What species of bogus are they? It turns out they’re incorrectly transcribed. As we’ll see below, they’re close to right – but not quite.

While I was looking into this, I found several other cheat codes for this game that I don’t think have been documented before. Furthermore, I found nearly identical codes for FIFA 97: Gold Edition. Read on for details!

The cheat menu codes

Most of the time, examining an old game involves a lot of fumbling around in the dark. You’ve got its raw machine code, but you don’t know what any of it does. To get anywhere, you have to orient yourself by finding some bit of logic you understand. From there you can spider out to adjacent bits and build up a mental picture of how things are structured.

Things were much easier with FIFA Soccer 96, however. Its ROM has function labels! Most blocks of code in it end with an ASCII identifier. This isn’t quite as good as having a full set of debug symbols, but it’s pretty handy.

The function called FE_supercheat handles cheat input. It executes when you’re on the Options > Game Settings screen.

Game Settings

This function is a fairly standard cheat code listener: it checks controller input against arrays of bit patterns that represent button sequences – no surprises there. But what is surprising is how many button sequences it checks. GameFAQs has two questionable codes, but the game is checking for no less than 50.

The arrays of button patterns start at 001fb64c and use the standard Genesis mapping, so they’re easy to read off. The first 10 enable items in the Cheats menu, which is accessed by starting a friendly game, pausing, and pressing B.

The cheats menu

Each of the menu items is activated by its own code:

  • Invisible walls: C, C, C, B, A, A, A, B, A, C, C, A
  • Curve ball: B, A, C, B, C, C, C, A, B, A, B, A, B
  • Crazy ball: C, A, B, C, B, A, C, C, B, A, C
  • Dream team: A, A, B, B, A, C, C, B, C, C, A, A
  • Super power: B, A, B, B, C, B, A, C, B, B, B, B, B, B
  • Super goalie: A, A, A, A, A, B, B, B, B, B, A, C, C
  • Super offence: A, A, A, C, C, B, C, A, A, B, C, C
  • Super defence: B, B, B, C, B, C, A, C, B, B, B, C, B
  • Balloon ball: A, B, A, C, A, B, A, C, C, B, C, B
  • Stupid goalie: A, A, C, B, A, B, C, A, B, C, C, A, B, B

You need to enter these slowly and deliberately – the game only registers menu button presses every 8 frames, so don’t speed through the codes. You’ll hear a sound effect if you get one right.

We can now see that the GameFAQs codes are only very slightly off. The Dream Team code is missing an A button in the middle, and the Super power code is missing two B buttons at the end. So close!


Change the background

The first code after the ones for enabling cheat menu items is: C, A, C, A, C, C, C, B, C, A, B, A, C, A, A, C, A, C, A.

What’s it do? It changes the direction that the background image moves. Normally the EA and FIFA logos go from southeast to northwest; this reverses that. Here’s a video of the change taking effect:

 

This code stops the movement entirely: C, B, A, C, C, B, C, C, B, C, B, C, B, C, B.


End game early

The next code’s buttons are: A, C, B, A, C, A, C, C, B, C, A, B, A, C, B, A, C, B.

After entering the sequence, start a game. Then press:

  • A+Start: Player 2 wins.
  • B+Start: Draw.
  • C+Start: Player 1 wins.
The results screen

The scores are randomly determined. Ghidra’s decompilation of the C+Start logic looks like this with labels added:

    rand_val_1 = rand_000ad512();
    score_p2_fffff8b6 = rand_val_1 & 3;
    score_p1_fffff8b5 = score_p2_fffff8b6 + 1 + score_p1_fffff8b5;
    total_score_fffff8b7 = score_p1_fffff8b5 + score_p2_fffff8b6;

That is, a number between 0 and 3 is generated for player 2. That number is added to player 1’s current score, which is then incremented again to ensure a win.


Unlock Custom League, Custom Tournament, and Custom Playoff

Normally the Custom League, Custom Tournament and Custom Playoff items are grayed out in the Options menu. You have to win once in the corresponding mode to enable each item.

The Custom League item becomes available after winning in League mode

But there are codes that let you skip this process. 12 of them mark a league as complete; 12 mark a tournament as complete; and 12 mark a playoff as complete.

The full list of 36 codes is in the Appendix below. Here is one of each type – putting in one of these is enough to unlock that type’s custom mode:

  • League: B, A, C, C, A, C, A, A, A
  • Tournament: B, A, C, C, A, B, A, A, A
  • Playoff: B, A, A, C, A, A, A, A, A
Custom league unlocked

Further research

That’s 49 codes – what’s the 50th? The button sequence is: B, C, A, B, A, C, C, B, C, A, C, B, A, B, A.

You have to enter it on the in-game pause menu (press Start, then select Options); it gets cleared if you do it via the main menu.

This causes a function named JOYPAD_move_farthest_to to be called when one of your teammates gets control of the ball or jumps. The effect is subtle, though – I wouldn’t be able to describe it in terms of gameplay without these labels.

If this makes more sense to you, leave a comment!


FIFA 97: Gold Edition

It’s not surprising that the next game in the Genesis FIFA series is similar to its predecessor. Indeed, the cheat detection system is virtually identical in FIFA 97: Gold Edition.

The only differences are:

  • You have to enter the cheat menu codes from the in-game pause menu – they get reset if you start from the top-level Options screen.
  • Four cheats are missing: the two that change the background, the one that ends the game early, and the hard-to-describe one from above.
  • The button sequences are different.

The full list is in the Appendix below.


Outro

For more on the FIFA games for Genesis, see these articles at 68K Revival – they’re excellent:

Those cover images that are hiding in the games, and cover some of the same ground I do here. I was working on my article as these were being posted, so I’ve been scooped to some extent!

Thanks for reading. I’ll be back here at SEGAbits next week with another Genesis game examination. Check out my blog for more retro game reverse engineering in the meantime.


Appendix 1: FIFA Soccer 96

These 12 codes mark one of the leagues as complete in FIFA Soccer 96:

  • American: B, A, C, C, A, C, A, A, A
  • Brazilian: B, A, A, C, A, C, A, A, B
  • English: B, A, C, C, A, C, A, A, C
  • French: B, A, A, C, A, C, A, B, A
  • German: B, A, C, C, A, C, A, B, B
  • Italian: B, A, A, C, A, C, A, B, C
  • Malaysian: B, A, C, C, A, C, A, C, A
  • Dutch: B, A, A, C, A, C, A, C, B
  • Scottish: B, A, C, C, A, C, A, C, C
  • Spanish: B, A, A, C, A, C, B, A, A
  • Swedish: B, A, C, C, A, C, B, A, B
  • World: B, A, A, C, A, C, B, A, C

These 12 mark one of the tournaments as complete:

  • American: B, A, C, C, A, B, A, A, A
  • Brazilian: B, A, B, C, A, B, A, A, B
  • English: B, A, C, C, A, B, A, A, C
  • French: B, A, B, C, A, B, A, B, A
  • German: B, A, C, C, A, B, A, B, B
  • Italian: B, A, B, C, A, B, A, B, C
  • Malaysian: B, A, C, C, A, B, A, C, A
  • Dutch: B, A, B, C, A, B, A, C, B
  • Scottish: B, A, C, C, A, B, A, C, C
  • Spanish: B, A, B, C, A, B, B, A, A
  • Swedish: B, A, C, C, A, B, B, A, B
  • World: B, A, B, C, A, B, B, A, C

And these 12 mark one of the playoffs as complete:

  • American: B, A, A, C, A, A, A, A, A
  • Brazilian: B, A, C, C, A, A, A, A, B
  • English: B, A, A, C, A, A, A, A, C
  • French: B, A, C, C, A, A, A, B, A
  • German: B, A, A, C, A, A, A, B, B
  • Italian: B, A, C, C, A, A, A, B, C
  • Malaysian: B, A, A, C, A, A, A, C, A
  • Dutch: B, A, C, C, A, A, A, C, B
  • Scottish: B, A, A, C, A, A, A, C, C
  • Spanish: B, A, C, C, A, A, B, A, A
  • Swedish: B, A, A, C, A, A, B, A, B
  • World: B, A, C, C, A, A, B, A, C

Appendix 2: FIFA 97: Gold Edition

Here are the cheat menu codes for FIFA 97: Gold Edition:

  • Invisible walls: B, A, C, B, B, A, A, B, A, C, C, A, B
  • Curve ball: B, C, C, B, C, C, C, A, B, A, C
  • Crazy ball: C, C, C, B, B, B, A, C, B, A, A
  • Dream team: B, A, B, B, A, B, C, B, C, B, A, B
  • Super power: A, A, B, A, C, B, A, C, A, B, B, A, B, A
  • Super goalie: C, A, C, A, C, B, B, B, C, B, A, C, C, C
  • Super offence: C, C, C, C, C, B, C, A, A, B, C, C, C, C
  • Super defence: A, A, A, C, B, C, A, A, B, B, A, A, A
  • Balloon ball: C, C, A, C, A, B, A, C, C, B, C, C, C
  • Stupid goalie: C, A, C, B, A, C, C, A, C, C, C, C, B, A

These are the league codes:

  • American: C, B, C, C, A, A, B, A, A
  • Brazilian: B, A, A, C, A, C, A, A, B
  • English: C, B, C, C, B, A, A, A, C
  • French: B, A, C, C, A, C, B, B, A
  • German: C, B, C, C, A, A, A, B, B
  • Italian: B, A, A, C, A, C, C, B, C
  • Malaysian: C, B, C, C, A, A, A, C, A
  • Dutch: B, A, A, C, A, C, A, C, B
  • Scottish: C, B, C, C, B, A, A, C, C
  • Spanish: B, A, A, C, A, C, B, A, A
  • Swedish: C, B, C, C, A, A, C, A, B
  • World: B, A, A, C, A, C, B, C, C

These are the tournament codes:

  • American: B, C, C, C, A, B, A, A, A
  • Brazilian: A, A, B, C, A, C, A, A, B
  • English: B, C, C, C, A, B, A, A, C
  • French: A, A, B, C, A, C, A, B, A
  • German: B, C, C, C, A, B, A, B, B
  • Italian: A, A, B, C, A, C, A, B, C
  • Malaysian: B, C, C, C, A, B, A, C, A
  • Dutch: A, A, B, C, A, C, A, C, B
  • Scottish: B, C, C, C, A, B, A, C, C
  • Spanish: A, A, B, C, A, C, B, A, A
  • Swedish: B, C, C, C, A, B, B, A, B
  • World: A, A, B, C, A, C, B, A, C

And these are the playoff codes:

  • American: A, A, A, A, B, A, A, B, A
  • Brazilian: A, A, C, C, B, A, A, A, B
  • English: A, A, A, A, B, A, B, A, C
  • French: A, A, C, C, B, A, A, B, A
  • German: A, A, A, A, B, A, B, B, B
  • Italian: A, A, C, C, B, A, A, B, B
  • Malaysian: A, A, A, A, B, A, A, C, A
  • Dutch: A, A, C, C, B, A, A, B, C
  • Scottish: A, A, A, A, B, A, A, C, C
  • Spanish: A, A, C, A, B, A, B, A, A
  • Swedish: A, A, A, C, B, A, B, A, B
  • World: A, A, C, C, B, A, B, A, C

 

Leave a Reply

Your email address will not be published. Required fields are marked *