------------------------------------------------------------------------------- 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 won´t need to do any hacking to set the controls, right ? There are still bits I´m uncertain about as with some high score tables, but who cares. I´ve found what I wanted to find so that´s 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 character´s 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. What´s 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 DC´s VMU file manager. You might actually change it... it´s 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 couldn´t 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 don´t 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 it´s FF when the game was cleared ? Don´t really know. Byte 11 = Number of wins (obsolete for Arcade Mode but it´s 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 it´s reverse nibbled. 2. Arcade VS ------- Bytes 0-3 = Score (reverse nibbled; obsolete for Arcade VS but it´s 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 10´34"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 didn´t manage to beat the mode in my "early" SFA3 days and when I did beat it, the default settings were not activated so it wasn´t saved... I can´t be bothered to try it out now, too lazy I´m afraid. Example: 2nd Place (1A44-1A53), Player 1: DMC (me) used Charlie, Player 2: COM used Sakura, A-ISM, 11 wins, Time 08´49"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 ------------------------ Here´s 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) won´t 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: ----------- You´re 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 don´t 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 it´s 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 1´49"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 don´t 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 don´t forget to kick M.Bison where he belongs!