Shadowhearts Wiki

Hello! Just thought I'd post a little update on the SHII Directors cut. One or two people have asked me something I'd like to address: 

"Dengarde, an English translation already exists! Isn;t most of this just a copy and paste job?"

That was my first thought too! After trying it however, I can tell you right now, it will not work. And if you'd like to know why, then sit down and grab some popcorn, because this will be a bit of a read.

My attempt with this was done in the area AR_00_U. Or, as you guys know it, the first area of Ardennes Forest, where Gepetto gives you your first crests. At first, it works fine! The script is running properly, everything is readable, we're golden! And then...


...magical what, Gepetto? He'll never tell you, because thats as for as it gets. Every line after that is completely blank, and it crashes completely when Lenny comes into the scene. This is because the file for the English translation of the game is larger then the file for the Japanese translation. Allow me to elaborate

There are no ovious indicators of the start or end of a file when HEX editing the ISO of the game. For me, OR the game itself. Which leads me to beleive that there is some value within the iso that tells the game exactly how many bytes the file is, so the game knows to stop loading it. For example, lets say we have two lines:

  • Konichiwa!
  • Hello, how are you today?

The top being the japanese translation, and the bottom being what I would replace it with. Lets also give each character a position.

K o n i c h i w a !
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
H e l l o , h o w a r e y o u t o d a y ?

In the japanese version, something tells the game to stop reading the file at position 11.  In the english, 26. If I put the eglish in place of the japanese, the game would still think the file ends at 11, so the line would read

  • Hello, how

And that doesn't really work, because everything after 11 is nullified, and without finding the value to tell the game to look further, it will NEVER be read. So while a chunk of the translation might work, most of it will not even read.

This positional thing also brings up another issue about how the text is formatted. In this example, I will be using three characters as an example, Yuri, Anastasia, and Karin. Now, if you summoned them in game they would be separate lines.




In the file however, they would look more like this:


Lets give these characters some numbers again, shall we?

Y u r i . A n a s t a s i a . K a r i n


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

The same idea with the file sizes. The game is told at what position to look for a specific line.  1 for Yuri, 6 for Anastasia, and 16 for Karin. However, this also comes with a twist! While the game is told by another value fo the end of a file, the end of a line is actually told by the line itself. Posisions 5, 15, and 21 are actually a certain character that tells the game "Stop reading here"! 

Now, I can do whatever I want with those. Add a million, subtract them all so it's one big line, thats fine. But again, it's the STARTING position that causes problems.

So lets say I rearanged these names to Anastasia.Karin.Yuri. instead. The text may change, but the starting positions would not. Sooo...

A n a s t a s i a . K a r i n . Y u r i


(1) 2 3 4 5 (6) 7 8 9 10 11 12 13 14 (15) 16 17 18 19 20 21

Remember, the game will look for those lines at 1, 6, and 15. That has not changed. The stoping posisions have changed though, from 5, 15, and 21, to 10, 16, and 21. So now, when the game looks for those lines, starting at those posisions, they will read

  • Anastasia
  • asia
  • n

Note that there's no starting posision within Yuri's name. So that line can never be read. Two of these likes also start in very odd positions. 

This is the issue I am having. A lot of the lines in the english version are a lot bigger than the japanese counterpart, and lines end up bleeding into others. As a result I have to somehow shorten the line to fit

For example, the "Equipment" option in the menu is now "EQP". Simply because I can't put "Equipment" in there without turnning "Personal" into "pment".

And while I DO know where the positional values are can have the ability to change them, there lies the final issue. The positionals are based on the strings position as a hex value based on the position of the file. For example, from the byte 00000000, this string starts at 0000000A. This would be fine excapt that I've viewing everything as ONE BIG ASS FILE. All the text and models and music and whatever in one big package. So that this file would call 0000000A would probably be 735A4B45 for me. And without a clear indicator of where a file starts or ends, this is a huge obsticle that's more work than it's worth.

As a result, I pretty much have to rewrite the ENTIRE script to make it work properly. 

So there you have it. One VERY long explanation on why copy/pasting will not work.

More updates soon!