Modding Soul Calibur III (UPDATED - 12.11.2018)

TopazHacker

The Unknown Soul
As you may or may not be aware if you have ever modded Soulcalibur III, the original thread created by OOFMATIC is heavily outdated, as well as heavily cluttered. Seeing this, I decided, since OOFMATIC doesn't mod the game anymore, to just create a thread that will be updated so constantly, that every newcomer can see which files are what and can mod the game with ease.

Now, in order to mod the game in the most basic way, you need a few things:
Just a reminder before we begin: If you are going to use PCSX2, make sure you have version 1.4.0 and be sure that your disc or your ISO is European or Japanese. For some reason, the controller plugin Lilypad, doesn't work with Soulcalibur III USA. Also, yes, I am aware that the OLK Explorer is as old as the time itself. But I wasn't able to perfect my software yet so, yea. I am giving you the least problematic version.

In order to mod the game, you need to extract the contents of the disc, or the ISO, and open the file named "ROOT.OLK" with the OLK Explorer.

When you open that file, you will see 8 files within. Those files have been identified by Byros and yours truly and are as they follow:
File1.olk - Placeholder Dummy
File2.olk - CPU Data (AI, etc.) [Contents Unidentified]
File3.olk - Image and Text Data (GUI, Char Icons, Stage Icons, Tales of Souls, etc.)
File4.olk - Event Data (Cutscenes, etc.) [Contents Unidentified]
File5.olk - Stage Data (Stages, Stage Properties)
File6.olk - Create-a-Soul Data
File7.olk - Main Data [Models, Movesets, Animations (For some reason, this also contains the Create-a-Soul parts)]
NOTE: I didn't really have time to prepare *fancy* index documents. For the time being, please use this document prepared by Byros: https://www.dropbox.com/s/ya8wrhjctusf7vy/Soul Calibur 3 Modding Knowledge Base.doc?dl=1
I do realize that it's all over the place, but it should accommodate you for the time being.


There are 4 types of modding in this game at this given time, which are:
  • Swap-a-File Modding (Model Swaps, Stage Swaps, etc.)
  • Audio Import/Extract (Voice Changes, Quote Changes, etc.)
  • Swap-an-Image Modding (Image and Icon Swaps)
  • Text Modding (Name Changes, Story Text Changes, etc.)
My job here, is to explain the each modding type one-by-one and try to make a sense of them in hopes that you can understand.

Swap-a-File Modding:

This modding type is as straight forward as it can get. All you have to do, is to extract a file from a file, and import it to another file. This may be some difficult to understand with words so, I have demonstrated it below:



As you can see, I have just imported File9.pkg into File10.pkg. I have just imported Mitsurugi P1 model over to Mitsurugi P2 model, and thus changed his P2 costume to his P1 costume.



However, there are severe limitations with this type of modding. Because the tool is so outdated, it doesn't handle "bigger than already is" files correctly at some cases. Importing a bigger file unto another file that is smaller, will cause the tool to pop-up this message:



This thing is buggy, as slow as molasses, and has a very low chance of failure. So, if you see this error pop up, you can click "OK" and have it allocate some space for the file, but be warned. Doing this way too much will cause the ROOT.OLK to get corrupted.

If you feel that this type of modding is way too boring, you are not alone. This method is the only reason that this community is dead. Because at the time, there weren't a lot of other options. In fact, there were none other methods than this one. And this, alongside the fact that you can easily corrupt something, made the game pretty boring to mod. So boring, that even I quit at one point.

Audio Import/Extract:

Years have gone by, and I mean a LOT of years since the audio mods became a thing, but not on this modding community. You see, the other method modded ROOT.OLK, which was openable by any tool. This method, however, uses both ROOT.OLK and VOICE.AFS, depending on the situation. And guess what, VOICE.AFS was unopenable by all the voice modding tools out there.

However, after 9 years, the VOICE.AFS file was finally openable. In reality, it took me less than an hour to open the file and got me uneasy. Either the past modders have speculated that the tool was faulty, or they knew that the file was faulty, but didn't look into it. Whatever the case may be, it works now.

In order for this method to be doable, you need a few things, depending on the file you are going to modify:
Now that you have seen the tools you may ask: "Topaz, aren't the tools for VOICE.AFS Pro Evolution Soccer specific?", and I answer yes. Yes they are. But they work on Soulcalibur III as well, that's because the sound files of PES and SCIII are both made by ADX. So, it will work. No worries.

However, in order to mod VOICE.AFS, you need to edit it. When you open the file with HxD, you will see, something like this:



Now, at the offset 0x05 and 0x06, you see that those bytes have the hexadecimal value of 0xFF, change them to 0x00. At the end, the file should look like this:



If it does, save the file and proceed. If it doesn't, undo everything and change the correct bytes. And if you've done that, congrats! Now you have a VOICE.AFS file that's recognizable and openable and editable. Do not worry about the changed bytes as Soulcalibur III will still love the file and will recognize and use it with no problems, even after the edits.

Now, proceed to open your file with the AFS Explorer. You will notice this popping up when you open the file:



You need to say yes to this. Doesn't matter what you think. Just say yes. When you do say yes, it will ask you to declare a save name. Save it to, VOICE_2.AFS or something, you can't rebuild on top of the original file. After all that, when you import the file (after changing it's name to VOICE.AFS, of course), the game won't be mad at you for importing the rebuilt file.

After all of the work, when you finally open it, you will be greeted by this screen:



Now, I would make a list for this. But I both do not have enough time, and it doesn't really need one. You can playback voices by double clicking them to see what they exactly are. After that, it's just a matter of swapping them by exporting one and importing it to another, like so:



Remember that the imported file exceeding the destination's "Max Size" limit, isn't allowed. This unfortunately breaks the game in the ways that it's unwanted.

However, if you want to import you own voice clips to this, that's certainly possible. After all, that's why I have included PES Sound File Converter, after all. When you open the thing, you will se a little screen like so:



You can just, drag and drop your WAV files unto it and click next, and you will see THIS screen



Leave everything at default, and declare an output folder (You can use the WAV source folder by ticking the "source directory" option), click next. And when you see the progress bars on this screen at 100%, it's done:



After which, you can just import them like shown previously.

Now, if you want to mod the files within ROOT.OLK, however, you have to keep in mind that you can't import custom sounds. Only other MMP (MultiMedia PlayStation) files. And it's not easy to rearrange them if you want to either. So bare with me, because it's gonna get rough.

In ROOT.OLK, you can just throw everything you just learned about the VOICE.AFS file out of the window, it's not valid in here. The sound files are the customized version of VOX ADPCM files, known as MMP (MultiMedia PlayStation) files. These files can only be played back with one program, as I am aware, which is PSound. With PSound, you can listen to these files and extract them into WAV files, but can't import your own at the moment.

The MMP Files for the announcer saying "Mitsurugi" or "Inferno" or whatever are found within that's characters model PKG in File7.olk within ROOT.OLK. But their battle quotes are found inside files File319.pkg trough File576.pkg within File7.olk. They are in the normal character order (Which has been stated in the File7.olk Table of Contents Document found at the start of this thread) in groups of two. For example: File319.pkg is Mitsurugi, but File320.pkg is ALSO Mitsurugi. The difference being the first file is Japanese, while the second file is English. You can extract the File6.mmp within one of these files (File319.pkg~File576.pkg within File7.olk) in order to access the battle quotes for whichever character you desire.

In order to validate that your selection is correct (and if you wanna extract the quotes), you need to open PSound. When you open the program, you will be greeted with this screen (And thank goodness I can shrink this):



When you proceed to open the file, you will see this pop-up:



When you click yes (You kind of have to), you will be greeted with another window, click "Start". And when it's 100%, you can close it to access the GOODS:



Then you can double-click these listings to playback the sound clips. However, do note this: All of the sounds played by this program, when extracted, they will be sped up by a factor of 0.100 times (Resulting in 1.100 speed), and this also causes the pitch to be different. To fix this, you can slow down the file in Audacity to 0.900.

Speaking of extraction, you can extract single or multiple voice files by doing the following:



Now, we have covered the extraction and voice playback but, how about MMP Imports and Rearrangement? Well, that's the difficult part of this modding type. You see, you need to edit hex, and I mean, a LOT of hexadecimal values. So, I am just going to make a video tutorial on it when my microphone is fixed. But as sad as it is to disappoint you and leave this section blank, I really cannot put this difficult type of modding into text. So follow the thread to get updates. When the video is up, you will notice it.

Swap-an-Image Modding:

I really, REALLY wanted this to be "Import-an-Image Modding" section, but my tool for texture imports still has a long way to go. When that's finished, I will add it as a 5th modding type. For the time being though, this has to suffice.

Now, in order to go for this modding type, you need a few things:
  • OLK Explorer v0.04 (Found at the beginning)
  • HxD v2.1 (Found at above)
  • Some Common Sense
NOTE: All of the hex values in this game are LITTLE ENDIAN.

This type of modding consists of you taking an image's "existence code" and pasting it on top of another image's "existence code". What are existence codes, you may ask. Existence codes are the things that determine an image's X, Y coordinates as well as their width and height and some other things. Those codes alongside the images themselves are within a VXT file within, generally File3.olk. The list of VXT's and their contents with their indexes are given at the File3.olk Table of Contents Document.

Now, let's say you want to change Zasalamel's P1 Icon to Random Select. To do that, you need to swap the existence codes of both pictures.

To be clear, this is a existence code example:

Code:
03 00 00 00 00 80 00 10 0E 00 00 00 D0 00 90 00

61 00 00 00 00 00 00 00 15 00 00 00 00 00 00 2D

40 2C 31 21 06 A0 05 20 07 00 00 00 00 00 00 00

0A C0 33 00 3C 02 00 00 09 00 00 00 00 00 00 00
It always starts with "03 00 00 00 00 80 00 10 0E 00". So you should be able to identify them easily. The easiest way to get to the first one of these existence codes is to seek to the value at offset 0x0C in HxD, then seeking to the value at the offset you just seeked, like so:



Now, do remember that these codes are NOT in order. So you can't just pass 59 of them by and get to Zasalamel P1. You have to pay attention to the index bytes:

Code:
03 00 00 00 00 80 00 10 0E 00 [00 00] D0 00 90 00

61 00 00 00 00 00 00 00 15 00 00 00 00 00 00 2D

40 2C 31 21 06 A0 05 20 07 00 00 00 00 00 00 00

0A C0 33 00 3C 02 00 00 09 00 00 00 00 00 00 00
Now, those hexadecimal bytes tell us what image does the existence code belong to. By looking at these, we can identify which existence codes correspond to which images. We are looking for 0x00 (Random Select) and 0x3A (Zasalamel P1). I have located them for you, so you do not have to.

Random Select's existence code resides at offset 0x6000, and Zasalamel P1's existence code resides at offset 0x6E80. Now all we have to do is to copy Random Select, and paste it on Zasalamel P1, like so:



That is quite literally it. Now, when you open up your game and loaded somewhere with character selection, you will see Zasalamel P1 icon is now Random Select



Text Modding:

This modding type is so abysmally simple that, I do not even have to show it here. But I will show a little sample, like editing a name in the executable. For this, you realistically only need HxD.

And the only thing you have to remember is, do not overwrite other names, and always put the hexadecimal value "0x00" at the end of each string. And to know how to do this kind of modding, just watch the GIF below:



That is literally all that there is to it.

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

And so, that concludes our Soul Calibur III Modding thread, for the time being. Remember that this thread will be updated constantly with new tools, new information and new modding techniques. So stay tuned for those. And remember:

The legend, will never die...

- Topaz M. Quartz
 
Last edited: