Thank you for reply Tidusnake666 and once again thanks for fantastic work!
Had a lot of work these days, so not very much progress.
Anyways, I'd like to share some script to unpack talk.dat to message txt's. Place it in the folder where is US talk.dat and run "msg_dump.bat" In few mins you'll have 5824 dialogues messages. Some of them are rubbish, some of them are in japanese (?) but most of them are good ol' english.
The next step is to create algorithm that will create character pairs that we need. Then, replacement-algorithm, then put it back together and enjoy
Also, another update on font.lzs.
Thanks to the perl script provided earlier, I managed to npack that lzs. When the algo is written in words, it's good, but when in code, it's better
Feel free to look at it (still don't know how to edit that file)
Another update, more like a questin to the person, that might know the answer.
I've been looking into US and JP font.txf and I'm confused. It was said, that half-width characters are "wraped over" because they have smaller texture. But. in JP txf file, there's always 36 characters per line (1024 px), regardless if it's a "english-alphabet line" or "kanji-only line". So I don't really now get it how US chars are "doubled" and japanese hiragana/katakana/kanji character aren't. And why they are doubled only in messages and not in menus, items, skills, etc. And why the first letter in every word in dialogues isn't doubled (regardless of letter, it just should be first)?
There's something else, more specific to dialogues here. We should dig it further.
Just sharing thoughts on this.
Hi. I'm the one who suggested the font.txf trick. I normally prefer to avoid public posting, but Alexmagno seems quite busy, and it wouldn't be right for me to impose on him any more than I already did.
I think all the half-width characters are loaded into appropriately sized (ie. smaller) textures, no matter their "density" in the font.txf file. The game is aware of their width, and honors it most of the time (for instance, in the menus), but it just does not when rendering the text of the conversations. During the conversations, all the characters are considered full width, no matter whether they are or not.
And to comment on your second point: When using an ASCII character as the first letter, it is doubled just like any other, according to my tests. (If you're absolutely sure it is not in the cases you studied, please try and explain how to reproduce this behavior.)
EDIT: I did some more testing, and it appears you are right. While the first letter of the first word of a line is doubled as usual, the first letters of words following a space are not, at least in some cases. This is curious, but I don't think it is useful, regrettably.
Okay, seems like I can get it after a night of sleep. But now, when we have an access to extracted files and pointers to messages, wouldn't it be easier to replace ANSI chars with 2-byte S-JIS equvalents and correct file size in the header?
Gonna try it whe I'll have some time.
Indeed, but keep in mind that the 2-byte SJIS latin characters are full width. That means the resulting text will not be as compact as in the US version. As a consequence, it will not be possible to use the official US translation as a base unless its typesetting is redone by hand. This is why I don't think it is an easier solution. But it is of course feasible, and has the advantage of leaving the kanjis untouched.
If you feel like trying this, you should know that:
- It is possible to add a line by simply adding a "\1[something]\0" string after the '\0' character terminating the previous line. For example, if your trying to translate "\1こんにちは世界\0" but "\1Ｈｅｌｌｏ ｗｏｒｌｄ\0" doesn't fit on one line, you can use "\1Ｈｅｌｌｏ\0\1ｗｏｒｌｄ\0" to typeset it on two lines.
- The character '\2' can be used to create a new 'page' of up to three lines. The player will have to press the OK button to turn page, as usual. In the previous example, if you want to print "Ｈｅｌｌｏ" on one page and "ｗｏｒｌｄ" on the other, simply use "\1Ｈｅｌｌｏ\0\2\1ｗｏｒｌｄ\0".
Yeah, I'm well aware of that. And great example, btw
It can be divided into more pages. But, we'll have even japanese sounds asynced, because sounds are tied to dialogues.
Oh, well, need more thinking on that. And more testing.
You have to change the header too. If you put new lines in the script the game will crash after a short time because the given length in the header doesn't match with the new length.
OKkay, tested with some of the first phrazes, seems like everything fits exacly (but it's only 5 or so first phrazes), but there's some strange game behaviour - it re-reads the whole message every time the new line is added. Or so it seems.
Anyways, maybe it's a wrong path, and the consequences were obvious, I tried.