[PROJECT] "The Legend of Legacy" - English Translation

Discussion in '3DS - ROM Hacking, Translations and Utilities' started by DJPlayer, Jun 5, 2015.

  1. DJPlayer
    OP

    DJPlayer Banned

    Banned
    542
    184
    May 21, 2015
    Netherlands
    Hey Guys,

    I want to start a second translation project which should be "The Legend of Legacy".
    Right now, I've some problems to rebuild it to cia (Need help with Game-Decrypting and Rebuilding) but because of NTR_CFW and LayeredFS, I'm able to test the translation Ingame.
    I just changed one simple line yet but we should be able to modify the text without big problems.
    Here's a example:
    Warning: Spoilers inside!


    There are two filetypes which should contain Texts: .nam-files and .msg-files

    The .nam-file can be edited when we change the Text Encoding to "UTF-8".
    before Text Encoding
    after Text Encoding
    Right now I can edit the texts BUT I the changed strings HAVE TO BE THE SAME LENGTH because of the offsets.
    For the offsets, we would need a simple editor which edits the offsets manually.

    The .msg-file SHOULD be editable when we change the Text Encoding to "UTF-8".
    before Text Encoding
    after Text Encoding
    The files should be editable too, but I guess that we need a tool for this, too.


    After we finished our Translation of Assassination Classroom, I want to translate this game.
    But for this, I need YOUR help.
    Could you help us to edit this two file formats?
    I've uploaded a package with a few of the files for example.
    Some of the files.rar

    I would be very pleased if you could help us.
     
    Last edited by DJPlayer, Jun 5, 2015
    Celice, LinkmstrYT and breaktemp like this.
  2. Falo

    Falo GBAtemp Regular

    Member
    253
    199
    Jul 22, 2012
    Gambia, The
    Easy, *.msg files:
    Code:
    //--------------------------------------
    //--- 010 Editor v5.0.2 Binary Template
    //--------------------------------------
    local int i, start_of_text, start_of_names;
    
    struct TCRC tcrc;
    struct TEXT text;
    if(FTell() == FileSize()) return; //check if NPC table is present
    struct NPCT npct;
    struct NAME name;
    
    Printf("text entries:\n");
    for(i = 0;i<(tcrc.size/8);i++)
    {
      FSeek(start_of_text + tcrc.entries[i].offset);
      struct{
      char text[];
    
      //debug print text into output window,
      //note: there are some non-utf8 values like 0x01
      Printf("%08X: %s\n", tcrc.entries[i].hash, text);
      }text_entry;
    }
    Printf("\nname entries:\n");
    for(i = 0;i<(npct.size/0x20);i++)
    {
      if(npct.entries[i].id == 0) continue; // skip empty entries
    
      FSeek(start_of_names + npct.entries[i].offset);
      struct{
      char text[];
      Printf("%08X: %s\n", npct.entries[i].id, text);
      }name_entry;
    }
    
    struct TCRC{ //Text CRC table
      char magic[4]; //TCRC
      int size;
    
      struct TCRC_ENTRY entries[size/8];
    };
    
    struct TCRC_ENTRY{
      uint hash;
      int offset;
    };
    
    struct TEXT{ //Text Table, linked to Text CRC table
      char magic[4]; //TEXT
      int size;
      start_of_text = FTell();
      byte data[size];
    };
    
    struct NPCT{ //NPC Table
      char magic[4]; //NPCT
      int size;
      struct NPCT_ENTRY entries[size/0x20];
    };
    
    struct NPCT_ENTRY{
      int offset;
      uint id;
      char npc_id[24];
    };
    
    struct NAME{ //Name Table, linked to NPC Table
      char magic[4]; //NAME
      int size;
      start_of_names = FTell();
      byte data[size];
    };
    Sample: F04_GRE01.msg
    Output:
    Code:
    04423488: 他愛ない。
    104C7E28: むむ、床が急に輝きを!?
    27A49398: ここが新大陸ですね。@k
    さあ、進んでみましょう!
    367695B9: はーい、返り討ち仝
    3E32F2F6: ここが新大陸ね。@k
    まずはいろいろ探索してみましょう。
    44305280: 新大陸か……。@k
    この空気、どこか郷愁を感じさせるな。
    49E63115: 渦巻く風の音が、飛び交う巨鳥の
    動きを封じた。
    4B421C6F: ん、なんだあの光る床は?
    4BAC9D8F: もう! 巣に近づいただけで
    襲ってくるなんて!
    523AFCE1: 奇襲で倒そうなんて、
    はちみつより甘いわね。
    5A3166D3: この先へ進みますか?
    5A7E9BAE: ふーん、ここが新大陸か。@k
    ま、とにかく歩き回ってみましょ。
    61F349D1: ん、あの床、
    何か光ってるな?
    67858674: おー、ここが浮上した大陸かあ。@k
    なんか、ワクワクしてきたぜ!
    691E7C20: ふー、あやうく
    ハチの巣にされる所だったぜ。
    811EB230: あれ、あそこの床光ってますよ。
    844AE8C5: む、あの光る床は……?
    8B38A62A: ここが新大陸だな。@k
    ひとまず歩き回ってみるか。
    9888D35E: あら? 何かしらあの光る床は。
    B083EBF0: 周囲から魔物の気配が消えた!
    B6F65F80: おお! この場所は知っておるぞ!@k
    ……と、思ったが忘れてしまった!!
    C154AEF9: 湖の水が、まるで地面のように
    固くなった。
    C3A849CE: よう、気がついたか。
    危ないとこだったぞ、お前ら。
    あんまりムチャはするなよ。
    CB4AC022: ふん、虫ごときに、
    オレは負けん。
    DAFE5197: やれやれ、血気盛んな
    虫ですな……。
    DEFBC481: ここから、切り立った山々に登って行けそうだ。
    ECCDA603: その先に拡がるのは、山であって山でなく、
    森であって森でない、奇妙な風景だった。
    F5D69742: ここから、切り立った山々に登って行けそうだ。
    FCC4BA06: あら、あの光る床はなあに?
    
    name entries:
    80000006: 冒険者男
    80000006: 冒険者男
    *.arr -> each file has it's own unique structure, it's a value and pointer database, the pointer are linked with *.nam files.

    sysmsg_message.arr is the easiest one, because it only contains the pointer table, each pointer is 2 byte, so filesize/2 = count.
     
    Last edited by Falo, Jun 5, 2015 - Reason: script updated, npc table added and parsed
  3. DJPlayer
    OP

    DJPlayer Banned

    Banned
    542
    184
    May 21, 2015
    Netherlands
    Ahh, okay :)
    Just want to know: Can edit the files with your 010-Editor script?
    I'm really new with tools like this but normally I learn very fast if you explain me what I've to do.

    btw. I edited the sysmsg_message.nam with EditPadPro (converted to UTF-8 -> Changed something -> checked if it has the same filelength and didn't added/removed bytes)
    Warning: Spoilers inside!
     
  4. Falo

    Falo GBAtemp Regular

    Member
    253
    199
    Jul 22, 2012
    Gambia, The
    Technically yes and no, 010 editor is just a fast way to find out the structure of a file and edit it, but you can only edit it with a fixed length.
    You need a tool which rebuilds the whole file to support any text length.

    Same for the *.arr/*.nam files, but each *.arr needs it's own tool.
     
  5. breaktemp

    breaktemp D-Sun who was called D-Moon

    Member
    820
    373
    Mar 17, 2008
    United States
    TSU...no.1 in tha hood
    Oh wow, I just stumbled upon this game on youtube and I am really feeling it !!

    * reminds me of the old SaGa games *

    I wish your project team the best of luck ^_^"
     
  6. DJPlayer
    OP

    DJPlayer Banned

    Banned
    542
    184
    May 21, 2015
    Netherlands
    oh, understood :/
    I think about .nam-files, fixed lengths would not be a big problem. I think I'll be able to edit these files with EditPad-Pro (because of the japanese characters, there should be enough space for changes).
    But about the .msg-files, I think I need a Tool to do it.
    Do you know someone who is willing to write a simple tool for us to edit this .msg-files?

    about the arr/nam-files I'm not sure if it's possible to write a Tool which can get the information of every arr-file to generate the structure for the nam-files to edit these.
    Yea..
     
  7. DJPlayer
    OP

    DJPlayer Banned

    Banned
    542
    184
    May 21, 2015
    Netherlands
    Made a small update. It seems that we need to find a way to ADD new lines or shorten the Character Description.

    Original Version
    Translated Version

    The fully translation of:
    Code:
    財宝を求めて世界を旅してま
    わるトレジャーハンター。元気
    一杯、まっすぐで楽天的。正
    義感が強く、曲がったことは
    should be like:
    Code:
    A treasure hunter on his journey through the world, 
    wanting to lay his hands on the greatest treasure there is. 
    He always keeps his spirits up high and 
    is a straight forward person with great health. 
    He is also a skilled thief, 
    but has a terrible dislike of a certain women's affection.
     
  8. loco365

    loco365 GBAtemp Guru

    Member
    5,458
    2,673
    Sep 1, 2010
    I've been patiently waiting for this game to ever be announced for the West, but it hasn't yet, so seeing a translation attempt for this game really excites me. This is something I'll definitely watch out for, I wish you the best of luck.

    By the way, do you plan to just dump all the text and have it translated, then repair and insert it again later on as you go, or will you just be doing it a bit at a time? I barely know much in the way of Japanese, but I do know a little bit and can probably translate some simple menu texts and whatnot if I'm not absurdly busy.
     
  9. DJPlayer
    OP

    DJPlayer Banned

    Banned
    542
    184
    May 21, 2015
    Netherlands
    I would dump all texts and translate as much as I can when I have free time.
    But now I've the problem that I've limited space and a fix length that I can use for each text because of the offsets and such.
    I would need a Tool that can completely edit/rebuild these files.
    But right now, I can only edit a few strings because of the limitation
     
  10. GHANMI

    GHANMI GBAtemp Advanced Fan

    Member
    966
    491
    Jun 10, 2012
    Isn't Atlus USA already localizing this one?
    They announced it during a podcast.
     
  11. loco365

    loco365 GBAtemp Guru

    Member
    5,458
    2,673
    Sep 1, 2010
    It wasn't an official announcement. I read about this, and in the article, they said that they've asked Atlus directly about it but haven't gotten an answer on the subject.
     
  12. Rob Blou

    Rob Blou GBAtemp Advanced Fan

    Member
    642
    297
    Jul 16, 2013
    Canada
  13. GHANMI

    GHANMI GBAtemp Advanced Fan

    Member
    966
    491
    Jun 10, 2012
    Welp, it's confirmed now :/
     
  14. DJPlayer
    OP

    DJPlayer Banned

    Banned
    542
    184
    May 21, 2015
    Netherlands
  15. LITTOMA

    LITTOMA Advanced Member

    Newcomer
    67
    42
    Nov 14, 2014
    Switzerland
    how to compute the text crc?
     
  16. Falo

    Falo GBAtemp Regular

    Member
    253
    199
    Jul 22, 2012
    Gambia, The
    There is no checksum.
    The text entries use a unknown (most likely custom md5 or crc32) hash system to identify strings.
     
  17. the MCDO

    the MCDO Member

    Newcomer
    30
    6
    Dec 2, 2014
    United States
    Djplayer what new project will you work on next
     
  18. Melon__Bread

    Melon__Bread ~It's A Magik~

    Member
    709
    399
    Dec 9, 2013
    United States
    Fixed that for ya
     
    DJPlayer likes this.
  19. DJPlayer
    OP

    DJPlayer Banned

    Banned
    542
    184
    May 21, 2015
    Netherlands
    I've two more games that could be translated.
    But right now, I'll keep it a secret which one it is ;)