-------------------------------------------------------------------------------
Street Fighter Alpha 3 Saikyo Dojo for Sega Dreamcast
System File: I-ISM and High Score data hacking guide
Version 1.0, 2001-09-09
Written on September 9th, 2001 by Dirk Mayer (sokaku@gmx.de; www.sokaku.de)
-------------------------------------------------------------------------------
     Best viewed in Notepad with non-proportional fonts
     (Courier, Courier New, Fixedsys; size 8)

After spending quite some hours to get to grips with the info, I finally 
proudly present this guide. If you want whip through the Grade Recognition 
Matches, this is going to prove really handy provided you have a means to change 
the file. I used the "EMS DC Linker V2.3b" software with its hex editor. This 
was supplied with the "Skillz DC 4M Memory Card" I purchased a few days ago, 
which comes with a cable so you can connect the memory card to the serial port 
of your computer. For more information check out www.hkems.com.

The system file contains the high scores and the I-ISM data and other stuff 
(option settings, key config). However, this guide focuses on the cool bits 
only, because you wont need to do any hacking to set the controls, right ?

There are still bits Im uncertain about as with some high score tables, but 
who cares. Ive found what I wanted to find so thats fine by me.

Contents:
---------
I.   FILE INFO
II.  VALUES
III. GENERAL MEMORY MAP (as seen in the DC linker hex editor):
IV.  HOW HIGHSCORES ARE COMPOSED
V.   I-ISM DATA MEMORY MAP
VI.  LEGAL / DISCLAIMER




------------
I. FILE INFO
------------
Title:          SFALPHA3_SYSTEM_FILE
File Name:      SFALPHA3.SYS
Size on the VM: 24 blocks
Size in bytes:  12288 (12kb)




----------
II. VALUES
----------

Values for certain parameters, namely the ISM or the characters:
Those may be cunningly used. Think of making an enormous high score with 
Mr.Cheap (aka Shin Akuma), then change the value for the character to the one 
for a "weak" character. Oh well, you may always change a high score to 
9999999... *heh*

1. Character  00 = Ryu         10 = Zangief      20 = Guile
   used	      01 = Ken         11 = Gen          21 = Fei Long
              02 = Akuma       12 = Chun Li X    22 = Deejay
              03 = Charlie     13 = M.Bison S    23 = T.Hawk
              04 = Chun Li     14 = Sodom X      24 = Shin Akuma
              05 = Adon        15 = Balrog
              06 = Sodom       16 = Cammy
              07 = Guy         17 = Evil Ryu
              08 = Birdie      18 = E.Honda
              09 = Rose        19 = Blanka
              0A = M.Bison     1A = R.Mika
              0B = Sagat       1B = Cody
              0C = Dan         1C = Vega
              0D = Sakura      1D = Karin
              0E = Rolento     1E = Juli
              0F = Dhalsim     1F = Juni

              Note: No.12 is X-ISM Chun Li (other costume),
              ----- No.13 is "Shin" M.Bison (Killer Psycho Crusher etc.)
                    No.14 is X-ISM Sodom (Katanas as weapons instead of 
                             Sais)
                    The ISM dictates the characters sprite, this means that 
                    when you try to make an A-ISM Chun Li with the old costume, 
                    she will just have the new costume. Same goes for Sodom.

   Whats interesting here is the order. The characters who were in Alpha 1 
   have the numbers 00-0A, then those who turned up first (or made their 
   return) in Alpha 2 take the numbers 0D-11. Following are three "special" 
   characters (12-14), then Alpha 3 newbies with a kind of suborder (like 
   Fei Long, Deejay and T.Hawk in a row).
		
2. ISM used  FF = X-ISM
             00 = A-ISM
             01 = V-ISM
             02 = I-ISM




--------------------------------------------------------------
III. GENERAL MEMORY MAP (as seen in the DC linker hex editor):
--------------------------------------------------------------

Following is a description of what the different parts of the 
file contain.

0000-007F  some data (contents partially unknown)

0080-027F  the icon for display in the DCs VMU file manager.
           You might actually change it... its 32x32 pixels in size with 16 
           colours. Each byte contains two pixels (left and right nibble). 
           I guess it has its color palette stored somewhere but I couldnt 
           be bothered to investigate.

0280-0433  some data (unknown)

           ----------- Highscore data area -----------
0434-0653  Arcade Mode X-ISM,  16 bytes x 34 positions
0654-0873  Arcade Mode A-ISM,  16 bytes x 34 positions
0874-0A93  Arcade Mode V-ISM,  16 bytes x 34 positions
0A94-0CB3  Arcade VS   X-ISM,  16 bytes x 34 positions
0CB4-0ED3  Arcade VS   A-ISM,  16 bytes x 34 positions
0ED4-10F3  Arcade VS   V-ISM,  16 bytes x 34 positions

10F4-1313  Arcade Mode I-ISM,  16 bytes x 34 positions
1314-1533  Arcade VS   I-ISM,  16 bytes x 34 positions

1534-15D3  Survival Arcade,    16 bytes x 10 positions
15D4-1673  Survival Original,  16 bytes x 10 positions
1674-1713  Survival Boss,      16 bytes x 10 positions
1714-17B3  Survival 10 Battle, 16 bytes x 10 positions
17B4-1853  Survival 30 Battle, 16 bytes x 10 positions
1854-18F3  Survival 50 Battle, 16 bytes x 10 positions
18F4-1993  Survival InfBattle, 16 bytes x 10 positions

1994-1A33  ?? (maybe "first setting" for InfBattle when there are no 
               highscores yet, but I actually dont really know)

1A34-1AD3  Survival Dramatic,  16 bytes x 10 positions
           --------- Highscore data area end ---------

1AD4-1C8F  I-ISM Character No.1
1E28-1FE3  I-ISM Character No.2
217C-2337  I-ISM Character No.3
24D0-268B  I-ISM Character No.4
2824-29DF  I-ISM Character No.5
2B78-2D33  I-ISM Character No.6




-------------------------------
IV. HOW HIGHSCORES ARE COMPOSED
-------------------------------

Highscore data is 16 bytes for each entry. The memory map depends on the mode:

1. Arcade Mode -------

   Bytes 0-3   = Score (reverse nibbled, see explanation below)
   Bytes 4-6   = Initials
   Byte  7     = (ALWAYS 00, probably unused)
   Byte  8     = Character used (see list in "II. Values")
   Byte  9     = ??
   Byte  10    = ?? usually 0, but in X-ISM its FF when the game was cleared ? 
                    Dont really know.
   Byte  11    = Number of wins (obsolete for Arcade Mode but its there)
   Byte  12    = a value from 0 to 2 for the ISM: 00=X 01=A 02=V
   Bytes 13-15 = ??

   Example: 2nd place (0664-0673), Initials DMC, used A-ISM Charlie, 
            finished the game, Score 1344700
            Byte:  0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15
            Value: 00 47 34 01 44 4D 43 00 03 02 00 00 01 00 00 00

   Score: Unlike in the Survival modes, the score information is stored in half 
          bytes or 4 bits (=nibbles). If you look at the example, you can see 
          how each digit takes up half a byte, so read from byte 3 to byte 0 
          backwards (left nibble, then right nibble of each byte) and you will 
          understand why I say its reverse nibbled.


2. Arcade VS -------

   Bytes 0-3   = Score (reverse nibbled; obsolete for Arcade VS but its there)
   Bytes 4-6   = Initials
   Byte  7     = (ALWAYS 00, probably unused)
   Byte  8     = Character used
   Byte  9     = ??
   Byte  10    = ?? (usually 0)
   Byte  11    = Number of wins
   Byte  12    = a value from 3 to 5 for the ISM: 03=X 04=A 05=V
   Bytes 13-15 = ??

   Example: 7th place (0F34-0F43), Initials GUY, used V-ISM Guy, 4 wins
            Byte:  0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15
            Value: 00 40 02 00 47 55 59 00 07 04 00 04 05 00 00 00


3. Survival Arcade, Original, Boss, 10/30/50/Infinite Battle -------

   Bytes 0-3   = Score
   Bytes 4-6   = Initials
   Byte  7     = (ALWAYS 00, probably unused)
   Byte  8     = Character used
   Byte  9     = ISM
   Byte  10    = Number of wins
   Byte  11    = (Always 00 in Survival modes, probably unused)
   Byte  12    = If all matches in the corresponding mode were cleared, 
                 the value will be FF, otherwise it is 00.
   Bytes 13-15 = Minutes, Seconds, Milliseconds

   Example: Survival Arcade, 1st place (1534-1543), Initials DMC, used 
            I-ISM Ken, cleared all stages (27 wins), Time 1034"48, 
            Score 454700
            Byte:  0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15
            Value: 2C F0 06 00 44 4D 43 00 01 02 1B 00 FF 0A 22 30


4. Survival Dramatic -------

   Bytes 0-2   = Initials Player 1 (COM if Player 1 was the computer)
   Byte  3     = (Always 00 it seems)
   Bytes 4-6   = Initials Player 2 (COM if Player 2 was the computer)
   Byte  7     = (Always 00 it seems)
   Bytes 8+9   = Characters used for Player 1 and 2
   Byte  10    = ISM
   Byte  11    = (Always 00 in Survival modes, probably unused)
   Byte  12    = Number of wins
   Bytes 13-15 = Minutes, Seconds, Milliseconds

   Note: I guess that one of the "Always 00" bytes will have a different value 
         if Survival Dramatic is cleared, but I didnt manage to beat the mode 
         in my "early" SFA3 days and when I did beat it, the default settings 
         were not activated so it wasnt saved... I cant be bothered to try it 
         out now, too lazy Im afraid.

   Example: 2nd Place (1A44-1A53), Player 1: DMC (me) used Charlie, 
            Player 2: COM used Sakura, A-ISM, 11 wins, Time 0849"66
            Byte:  0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15
            Value: 44 4D 43 00 43 4F 4D 00 03 0D 00 00 0B 08 31 42




------------------------
V. I-ISM DATA MEMORY MAP
------------------------

Heres the interesting stuff! Customize those to make your character really 
powerful... or rather overpowered like hell... or weak, if you like to. 
Alternatively make a "funny" character (read on).

Just add the offset to the start address (ref. "III. General Memory Map") 
for one of the six I-ISM characters.

0000-0053  Data for the I-ISM character
0054-01BB  GR match data (12 bytes * 30 matches = 360 bytes)


1. Data for the I-ISM character ------

   You can actually input two-byte values for attack power etc.!!! But make 
   sure that you change the maximum values for the corresponding values. Have 
   fun with Attack Power 1000+... however, just inserting FFFF (65535) wont do 
   the trick all the time, it seems. Experiment with those.

   Unknown bytes are omitted this time:

   offset      contents
   ----------- ----------------------------------
   Byte 1      = Character used
   Byte 2      = ISM
   Byte 5      = Level (-1)
   Bytes 8-11  = Total Exp
   Bytes 12-15 = X-ISM Exp
   Bytes 16-19 = A-ISM Exp
   Bytes 20-23 = V-ISM Exp

   Bytes 24-27 = ISM Pluses (see below)

   Bytes 38+39 = Attack Power
   Bytes 40+41 = Super Combo Attack Power
   Bytes 42+43 = Defense
   Byte  44+45 = Gauge
   Byte  46+47 = Stamina

   Bytes 48+49 = Maximum Attack Power
   Bytes 50+51 = Maximum Super Combo Attack Power
   Bytes 52+53 = Maximum Defense
   Bytes 54+55 = Maximum Gauge
   Bytes 56+57 = Maximum Stamina

   Byte 59     = GD

   (the bytes in between here probably are related to the route taken in the 
    world tour mode)

   Byte 80     = Gokuentou cleared (I guess...)

   ISM Pluses:
   -----------
   Youre gonna love this! People thought you could only have 11 ISM Pluses at 
   most, but no, Sir, you can have all 25 ISM Pluses AT THE SAME TIME !!!
   Simply set the corresponding bits in the bytes 24 to 27. However, there 
   seems to be a catch, though: I tested this in the infamous G.R. match no. 16 
   against Cody and Guy. While I managed to dizzy them VERY quickly (well, with 
   attack power 768...), they could also dizzy ME just as fast.

   And apparently some other strange side effects can be achieved by messing 
   around with the "empty" bits, I dont know. In one example I had a Zangief 
   with 767 for Attack/SC Attack and 2048 for Defense/Gauge/Stamina as well as 
   all bits set in Byte 26 (thus including bits 5 and 6), giving him 27 ISM 
   Pluses. The combination of the stats and the ISM Pluses seemed to cause funny 
   effects: While you could knock your opponent out with one single Fierce Punch, 
   some moves and throws (namely Spinning Piledriver, the last hit of both Super 
   Combos...) would actually give the opponent some energy BACK! Strange indeed. 
   Oh yes, neither would his SC Gauge recover nor would he have infinite guard 
   power and so on, despite having all ISM Pluses.

   Try it out for yourself; following is the data for the Zangief described 
   above. Just paste the data into bytes 0000-0058 (offset) of a character, of 
   course you need to put all data down here into one long line first by 
   deleting the spaces and carriage returns. You may also customize this 
   as you like (other character etc.).

   011000011F0A070EFCF53000F4F10A0084651100849E1400FFFFFF0700000000000000000
   F1FFF02FF02000800080008FF02FF02000800080008010D8B220100852028000B01810013
   4402012308310000000000

   Okay, now for the description what each bit does:

   Byte	Bit ISM Plus
   ---- --- ------------------
   24    0  Alpha Combo
         1  Alpha Cancel
         2  Super Alpha Cancel
         3  Super Guard
         4  Infinite Guard
         5  Auto Guard
         6  Guard Power Plus
         7  Custom Combo

   25    0  Air Guard
         1  Alpha Counter Plus
         2  Super Combo Gauge Plus
         3  Resist Dizziness
         4  Damage Plus
         5  -
         6  -
         7  Status Plus

   26    0  Guard Smash
         1  Super Guard Smash
         2  Supreme Guard Smash
         3  Custom Combo Charger
         4  Alpha Power
         5  Super Alpha Power
         6  Supreme Alpha Power
         7  infinite Auto Guard

   27    0  SC Gauge Recover
         1  Overall Power Up
         2  Multiple Taunt
         3  -
   

2. GR match data ------

   The following bytes contain zeros only for each GR match until a match has 
   been cleared, in which case the following info replaces the zeros:

   Bytes 0-2   = ? (bytes 0 and 2 seem to have value 1 when a match is cleared.)
   Byte  3     = Max Combo
   Bytes 4-7   = Score
   Byte  8     = Minutes
   Byte  9     = ? (always 0)
   Bytes 10,11 = Seconds, Milliseconds
   
   Note: for some reason the value for milliseconds is different. Supposedly
         its handled in the game by multiplying the value of Byte No. 11 with 
         1,66 (for the following example it would be 22 (decimal) * 1,66 = 36), 
         the result is then rounded.

   Example: Match No. 16 against Cody and Guy (2C80-2C8B), 
            Score 97300, Time 149"36, Max Combo 10
            Byte:  0  1  2  3  4  5  6  7  8  9  10 11
            Value: 01 1B 01 0A 14 7C 01 00 01 00 31 16




----------------------
VI. LEGAL / DISCLAIMER
----------------------
All the usual stuff... this guide (or FAQ) is Copyright 2001 by Dirk Mayer. 
You may put in on your site as long as you give credit and dont change the 
contents. This guide is hosted at GameFAQs (www.gamefaqs.com).

For suggestions and questions feel free to send an e-mail to sokaku@gmx.de.
And dont forget to kick M.Bison where he belongs!