This page was made by Perseonn BalthasaarPerseonn Balthasaar.

The sixth main installment of the Soul series, which came with a rather good battle system, but poor movelist pool. The character creation aspect, which is the main reason I bought this game, is lacking in item variation. I can go on and on, but that's not the point of this page.

As this is a save data hack, you're required to understand how to encrypt/decrypt your save data and manipulate it using hex editor (XVI32 preferred as hex editor).

If you're interested in showcasing your character, you can visit Another Stage of History.

Data Stucture

Custom Character Data

So far I have found moveset, voice, weapon, and character strength. For less drama issue in online battle, the strength digit will not be disclosed. It's easy to find anyway.

  Before changing the moveset/style, ensure the character are using FIRST weapon. The game may crash after editing if you have assigned them a weapon they don't have, most likely happen with Dampierre and Ezio. If you messed up, the weapon digit is located on +2 address after Moveset 2.

Each slot has two name address, the second address is not listed here due to their adjacent location. You can utilize the name address to break the limit of 12 letter. For safety, use same name for both address. The longest name I've tried is "Cliche Incarnate Richter" which is 24 characters and he is editable, usable in all modes, without breaking the name. The name will be truncated to 12 if I re-input his name during creation.

Voice data is pretty-self explanatory.

As you can see, each slot has two moveset address, each using same digit. They have different function:
Moveset 1
Character's pose during creation (including photo), menu weapon name, sometimes entry pose, sometimes win pose, and character's identity. This also governs the mimic character behavior. If you set this to mimic character's identity, they will ignore the second moveset data and weapon.
Moveset 2
Character's moveset, weapon set, and roster slot (standard edit). This affects taunt if used with either Kilik with Xiba's move or Elysium with Pyrrha Omega's move, but neither will gain special moveset nor special Critical Edge.
Example
If you make a Siegfried custom, set Move 1 to "01" and Move 2 to "02, the game will recognize the character as Maxi, will call "Maxi" upon selection, will have maxi's weapon name on creation mode, but will appear under Voldo's roster slot, have Voldo's moveset and weapon, while have Maxi's pose during creation.

  Using Ezio style, apart from missing announcer voice, has no problem in all modes.

  Voice digit is different from moveset digit, but somehow follows old numbering.

  With weapon code, it is possible to assign 9th weapon for all characters. They are either SoulCalibur (female characters, Siegfried), or a more detailed version of their default weapon.

Miscellaneous

Finding the Custom Character Moveset Data

I found the data myself using an algorithm I built in Microsoft Office Excel. First I created 7 custom characters named Bohb1, Bohb2, Bohb3, Bohb4, Bohb5, Alice4, and Alice5. They are all just a copy of each other, no parameter changed, and their card blanked i.e. black background, maximum frame zoom, corner image). Blanking the card is essential to make the image as similar as possible, thus will not pollute the algorithm.

The moveset was configured as follows:
Slot Character Moveset
20 (Blank slot) N/A
21 Bohb1 Mitsurugi
22 Bohb2 Maxi
23 Bohb3 Voldo
24 Bohb4 Yoshimitsu
25 Bohb5 Cervantes
26 Alice4 Yoshimitsu
27 Alice5 Cervantes
28 Ezio Ezio
29 Algol Algol

Mitsurugi was chosen due to the digit pattern of previous Soul series that Mitsurugi always come first, followed by Maxi, then Voldo, then Yoshimitsu, then Cervantes.

This pattern allows the logic of Bohb1 to Bohb5 always have different digit, but Bohb4 and Bohb5 have same digit with Alice4 and Alice5, respectively. Let's state this as Logic 1.

From my previous attempted search for the digit (which failed), each character slot have 29832 address. Trying to cover that without any help is suicide. On this search, I also open to the chance that the character slot address does not begin at name address. I have to think of the possibility that part of Bohb2's address will be on the 29832 address that I designate as Bohb1's address. Thus I also list 29832 address before Bohb1, even though the slot was empty. Let's state this as Logic 2.

Using only half of Logic 1, I put the following code on Excel:

=IF(OR([@Bohb1]=[@Bohb2],[@Bohb2]=[@Bohb3],[@Bohb3]=[@Bohb4]),"Same Value!","")

Notice that Bohb 5 is not used on the algorithm because of Logic 2, thus Bohb5's moveset address could be in Bohb4's. This code compares Bohb1 to Bohb2, Bohb2 to Bohb3 and Bohb3 to Bohb4. If either of them are same, then the address are considered same, since by first moveset logic, neither Bohb can have save address.

From the initial 29832, the algorithm allowed me to filter the table to a much manageable 63 addresses. After just a bit of looking, I found that address 16603 and 20780 possibly contain the character digit since they correspond to Logic 1. But here's the catch. The digit for Mitsurugi (00) appears on the blank slot before Bohb1.

Note the vertical arrangement due to the limitation of Excel's horizontal cells. Apparently on Soulcalibur V, Cervantes (08) comes before Yoshimitsu (18).
Note the vertical arrangement due to the limitation of Excel's horizontal cells. Apparently on Soulcalibur V, Cervantes (08) comes before Yoshimitsu (18).

Which means my speculation of Logic 2 is proven. After editing both number, I succeeded in making my first Ezio Custom Character.

Sleipial with Ezio moveset.
Sleipial with Ezio moveset.