Street Fighter Alpha 3 time-based secrets

Introduction

Street Fighter Alpha 3 (also known as Street Fighter Zero) is one arcade game from Street Fighter series. As well as other Street Fighter arcade games, there are some secret characters or secret game modes. However, what makes SFA3 different is the fact that all secrets are initally locked, and are only unlocked after some weeks of play, one-by-one. The background color of title screen changes every time a secret is unlocked.

If you are playing SFA3 in one emulator, you probably won't want to wait the time needed for all secrets become available. This little guide explains how to unlock time-based secrets in MAME.

More detailed info about SFA3 (including list of all secrets and screen colors) can be found at Arcade History Database. FAQs, codes, tips can be found at GameFAQs.

If you just want to unlock all secrets without reading how I discovered it, jump straight to sfa3.nv patch section or sfa3.nv download section.

Cheating

It is possible to unlock all secrets using cheats in MAME. You need to get a cheat.dat file (which is a list of all known cheats for all MAME games) and enable cheats in MAME configuration before you can use any of them. After this, start the game and open the MAME in-game menu (press Tab). You will find a "Cheats" menu item. Inside it, you can select the desired background color of title screen (each color corresponds to a different number of secrets unlocked).

Although this technique works, it is not the best, because MAME does not like cheats and won't save hiscores if cheating is enabled.

NVRAM

Of course, the best way to unlock the secrets is using the same method of real arcades: store the "unlock level" in NVRAM.

The NVRAM stores all configurations made in "service-mode" (like coinage, difficulty level), as well as number of coins inserted, number of free plays, and some other data used by game. The SFA3 NVRAM is 128 bytes long. The challenge is to find what needs to be changed to unlock the secrets.

In MAME, NVRAM is saved to file "sfa3.nv" inside "nvram/" directory.

NVRAM-hacking

After some little investigation, I discovered the first 96 bytes of NVRAM are used to store configuration, as well as internal game name. The next 12 bytes are used for internal counters (coins, service and free plays). The remaining 20 bytes were still unknown to me.

The first thing I tried to do was fill the last 20 bytes with 0xFF. When I started the game, the title screen was a little messed up. First, it took lots of seconds to display the title screen, just after initial animation with all characters. When it finally showed up, the background color was changed. Then, the screen locked for some seconds (the "Insert Coins" messages stopped blinking for a while). After some time, the color of "H" and "A" letters of "Alpha" changed.

Although I haven't tried to activate any of the secrets, I concluded the byte (or bytes) I needed to change was really between those last 20 bytes.

I still needed to discover what I need to change. Then I checked cheat.dat file and discovered (after reading how cheat definition works) that "Select Color Unlock" cheat just writes one byte at address FF80EE. The value written defines the color. The "light blue" color, which unlocks everything, corresponds to value 4.

Time to go back to sfa3.nv hacking. This time, I filled the last 20 bytes with different values. Then I started MAME with cheating enabled, just to allow me watch the FF80EE address. Watching that address I discovered the value of byte number 117 (0x75 in hexadecimal) is loaded to that memory address.

NVRAM table

The next table tries to describe what is the meaning of each byte in SFA3 NVRAM. Info here was discovered by me.

Start address (hex) Length (bytes) Description
0 48 Configuration and internal game name.
30 48 A copy of first 48 bytes. I have no idea why this info is duplicated in NVRAM.
60 4 Coin counter
64 4 Service counter
68 4 Freeplay counter
6C 9 Unknown
75 1 Title screen background color (0=Cream; 1=Red; 2=Green; 3=Blue; 4=Light Blue)
76 10 Unknown

Patch your "sfa3.nv" file (AKA "Do it yourself")

To patch your currently existing "sfa3.nv" file, just change the byte at position 0x75 to 4. You may do this using one hex editor, or even using DOS "debug" program.

Download a ready-to-use "sfa3.nv" file

You can download a ready-to-use sfa3.nv file. Just put it in "nvram/" directory.

SFA3 clones

I haven't tested this method with any SFA3 clone. I guess it should work. However, the provided "sfa3.nv" file may not work on clones, because of "internal name" which is stored inside it.

Final notes

I guess the game may overwrite our hack after some (long) time of play. I guess this could happen if the game thinks it is time to unlock another secret. If this happens, just redo the hack.

This is the first time I did a NVRAM-hack. If you have useful info to be added to this page (like the meaning of all NVRAM bytes), contact me.