For some reason, even after you change the language options for Final Fantasy IX on Steam to Japanese, the game still plays out in English, despite all of the Japanese data being in the game. This was disappointing for me who likes to use these games as a practice tool.
Fortunately it was quite easy to modify the game's code to force the language into Japanese. There was already a patched version of the file floating around the forums, but I prefer to do it myself and know exactly what was changed, as well as knowing how to redo it in case the game gets an update in the future.
-
Open
Steam\steamapps\common\FINAL FANTASY IX\x64\FF9_Data\Managed\Assembly-CSharp.dll
with dnSpy. -
Using
Edit->Search Assemblies
search forGetSystemLanguage
(which is a method inside theSettingsState
class on the global namespace).
- Double-click on the search result, then right-click on the method's name and choose
Edit Method (C#)...
- Replace all of the method's body with
return "Japanese";
In other words, this:
public string GetSystemLanguage()
{
SystemLanguage systemLanguage = Application.systemLanguage;
switch (systemLanguage)
{
case SystemLanguage.English:
return "English(US)";
default:
if (systemLanguage == SystemLanguage.Italian)
{
return "Italian";
}
if (systemLanguage == SystemLanguage.Japanese)
{
return "English(US)";
}
if (systemLanguage != SystemLanguage.Spanish)
{
return "English(US)";
}
return "Spanish";
case SystemLanguage.French:
return "French";
case SystemLanguage.German:
return "German";
}
}
Becomes:
public string GetSystemLanguage()
{
return "Japanese";
}
- Hit
Compile
, thenFile->Save Module
with the default settings, on top of the original file.
That's it! The game should now run in Japanese. Don't be fooled by the title screen, it still shows up in english, but the bottom left corner should read JP.
-
If at any point you want to go back to the original language, just use Steam's built-in
Verify integrity of game files...
option. Or keep a backup of the original file yourself. -
Very Important: If you happen to go into the Language Selection screen inside the game, and explicitly choose a language, the game will start ignoring the mod and uses that language instead. To make things worse, this change seems to be automatically saved and will persist even if you quit the game. I've found a few workarounds for this issue:
-
If you have your Japanese save file uploaded to the cloud, then you can just download it to revert the language.
-
If you don't care about your save file, you can delete it from
AppData\LocalLow\SquareEnix\FINAL FANTASY IX\Steam\EncryptedSavedData
. -
Alternatively, you can use dnSpy, search for the
Read
method insideSharedDataBytesStorage
, and change the line that saysthis.SelectedLanguage = binaryReader.ReadInt32();
intothis.SelectedLanguage = -1;
to make the game ignore the language on the saved data.
-