Game mentioned as "like King's Field" - Hungry Ghosts

#31
Eek WOW, you weren't kidding about the epic amount of text! ‎  Nor about the massive repetition... I'm not finished scanning the file, but some blocks are repeated in excess of 10 times. ‎  Movingeyes ‎  The hardest part of this project I think will just be sorting out all the data properly (keeping strict tabs on start/stop positions, size of each translation block, etc.) ‎  I spent a few hours playing with some methods for automation of finding the real text blocks, but I think it will be much more reliable (and faster, at this rate) to just scan the file in the hex editor and jot down the positions. ‎  I noticed some patterns, but nothing that repeats perfectly. ‎  I've had good luck simply searching for instances of common characters, such as ã ‎â€ž and the ellipsis block †‎¦

The (duplicate) text is strewn over the whole of PACK.DAT, so for now, I'll just translate a few sections, insert back into the .dat file, and see if that's good enough to start. ‎  Eventually, when I've translated all the unique text blocks, it shouldn't take long to swap those out. ‎ 

Thanks for the tip on ARMIPS! ‎  That looks like just the ticket. ‎ 

I'll try to provide occasional updates, though feel free to poke me if it's been a while. ‎  This is just a very crude estimate, but I'll try to have the organizational stuff sorted out by the beginning of summer, and all the translation of the unique blocks done by around the end of summer. ‎  The text I've seen seems easier to translate than that in STA - it appears to be more conversational/colloquial, which is much easier for me than translating obscure item names and the like, since I didn't learn by studying 'textbook' Japanese.

At any rate, I'm committed now, so it'll happen (slowly)! ‎ 
Reply

#32
I don't think it would be too hard to make a text dumper for ShiftJIS ‎  that produced an ASM file.
ARMIPS supports "areas", meaning you can define a maximum space for the text. The dumper would only have to detect SJIS
record the SJIS start as the area's beginning and the string's beginning
record the SJIS end as the area's end
and write the generic tags

Say the following text started at 0x100
ã ‎ ‎¨Ã£â€šâ€šÃ£ ‎ ‎«Ã§Å“Ÿã ‎ ‎®Ã¥ ‎¹ ‎³Ã¥â€™Å’ã‚’ç ‎¯â€°Ã£ ‎ ‎Ã£ ‎ ‎¾Ã£ ‎â€”ょã ‎â€ 
It would be 28 bytes long and say it has 7 'blank' 00s after it for a total of 35 bytes (0x23) maximum text size.

Code:
.org 0x100                        (sets the write location for the translation that follow)
.area 0x123 - 0x100                  (sets the max area for the translated text ie end minus start)                         
        .string "Translated text"     (armips will write the text between " "  at 0x100)
        ;ともに真の平和を築きましょう     (Putting the japanese in an ignored 'comment' line helps)
.endarea

If you made a dumper that produced such a file for ARMIPS, all you would have to do is run ARMIPS and it would auto-insert the translations and make sure nothing was oversized.
Reply

#33
I found a very good tactical hack n' slash called 'Severence: Blade of Darkness' that plays a lot like Dark Souls, you can buy it on gog.com for $5.99.
~ ‎® Indie RPG developer.

Twitter: twitter.com/JC_Bailey1112
Reply

#34
I have an old big-box copy of Severance for the PC. It was one of the first games I encountered that had a big modding community. ‎  If anyone tries it out, they might search for fan made mods too.
Reply

#35
I've been following this with great interest. I've tried playing the game several times but always stopped a few hours in since having a guide at all times ruins the atmosphere and sense of exploration. I'm really hoping you guys stick to it so we can finally play a translated version of Hungry Ghosts.
Let strength be granted so the world might be mended.
Reply

#36
It's going slowly, but it is going. ‎  Coffee ‎  I'm happy with my code for extracting and inserting text from the iso. ‎ 
The menus are mostly complete, and I finally have a chance tonight to plug away at the intro video/boat man sequances and some of the initial gameplay text. ‎  Had to make some interesting alterations to fit in the sometimes severely limited space available, but it makes sense. ‎  And I've done a couple tests to make sure that what I translate and put back in actually works and shows up correctly in-game, etc. ‎ 

It'll get there! ‎  Bowl
Reply

#37
Very cool! Screen shots?

Also, can you tell the basic outline of how your tool works?

My brain often works backwards so I'm always happy to get tip on how other people tackle a problem. beerchug
Reply

#38
Haha, sure. ‎  I'm on a work trip, so I don't have access to any screen shots of the game at the moment. ‎  But I can at least describe how I'm doing stuff...

Basically, I'm just using a couple of short python scripts I wrote. ‎  This is almost definitely a more tedious method than it could be, but I like it because I know it's doing exactly what I tell it. ‎  (and I like python...)
- First, I scanned through the PACK.DAT binary in MadEdit (Just searching for some common Japanese characters), and wrote down the start and end positions of some blocks. ‎  I doubt I'll do this for ALL of the gajilions of text blocks, but I wanted to get started on some real translation, and it was easy to find blocks I wanted containing specific words (like the menu stuff).
- Next, I just read the PACK.DAT file into python, copy the byte streams based on the start/stop positions, and save the text, positions, etc. as a csv file. ‎  This way, I can easily work on any given text block independently, without having to worry about the others.
- I do all the translation from the csv in a spreadsheet, so that I can make comments, see the length available real-time, search, copy and paste easily, etc...
- Finally, when I have a block all finished, I reinsert the text blocks to PACK.DAT in python. ‎  It's easy-peasy to just read in PACK.DAT and the translated block(s), swap out the block bytes (since I have the locations in a nice list), and close the file. ‎  Then I load the iso file as binary in python, and directly swap all the bytes of PACK.DAT. ‎  It's memory intensive and it's not efficient by any means, but it only takes a minute or so, and this way I know there will not be any issues with checksums, etc. ‎ 

Perhaps over-complicated, and I may streamline this for later, but works like a charm! ‎ 

One added benefit to doing it this way is that it would be much easier to translate to yet another language: I can share my csv files, and the translator can simply open them up, translate (with the built-in "how many characters do I have left" cells), and swap out the iso data with the scripts. ‎ 




Reply

#39
I don't think efficiency is really an issue with something like this since it's mostly a 'one time' run. ‎  I can picture the auto-formula features in Excel being quite handy. Interesting!
Reply

#40
Status update:
Things are still moving along at their own pace - There are a lot of weird entries in the item menu that are difficult to translate. ‎  At any rate, progress is slowly being made. ‎  Plus, there is one other item of news to report:

A new member has volunteered to help on this project! ‎  I'll let him introduce himself here, if he so chooses, but the important thing is that he has offered to help share some of the burden. ‎  This means, of course, that you should be able to play this game in English a bit sooner! ‎  beerchug
Reply





Users browsing this thread:
7 Guest(s)