Iron Feather

Discussion in 'NDS - ROM Hacking and Translations' started by thecrash1973, Oct 10, 2008.

Oct 10, 2008

Iron Feather by thecrash1973 at 8:22 PM (2,480 Views / 0 Likes) 10 replies

  1. thecrash1973
    OP

    Newcomer thecrash1973 Advanced Member

    Joined:
    Feb 27, 2008
    Messages:
    92
    Country:
    United Kingdom
    Just a quick question how easy would it be to create a program very similiar to the one used to translate Somabringer, to help with the translation of this game.

    I am aware that it was translated once before, but the translation has long since been deleted any help would be greatful. I plan to attempt either this game or deltora quest.
     
  2. DarthNemesis

    Member DarthNemesis GBAtemp Maniac

    Joined:
    Feb 19, 2008
    Messages:
    1,208
    Country:
    United States
    That depends on the format of the script and the pointers. Have you figured out the file formats yet?
     
  3. thecrash1973
    OP

    Newcomer thecrash1973 Advanced Member

    Joined:
    Feb 27, 2008
    Messages:
    92
    Country:
    United Kingdom
    As far as I know all the file types are .pac but am not quite sure what can actually open them.
     
  4. valyr

    Member valyr GBAtemp Fan

    Joined:
    Sep 15, 2007
    Messages:
    317
    Location:
    United Kingdom
    Country:
    United Kingdom
    .pac is another generic package file any number of programs could open it or then again maybe none will

    i recommend you try dragon unpacker because it also does forced file ripping if all else fails
     
  5. thecrash1973
    OP

    Newcomer thecrash1973 Advanced Member

    Joined:
    Feb 27, 2008
    Messages:
    92
    Country:
    United Kingdom
    I have a further look at this rom and have found that it needs a custom rom just like World Destruction and Tales of Innocence, or else it just doesn't show up any information that as been translated.
     
  6. litium

    Member litium GBAtemp Regular

    Joined:
    Mar 19, 2008
    Messages:
    196
    Location:
    Argentina
    Country:
    Argentina
    This game looks awesome, it's a shame that it has been never localized. Heres a little video:

     
  7. War

    Member War Take it easy~

    Joined:
    Oct 26, 2007
    Messages:
    5,409
    Location:
    California
    Country:
    Japan
    I'm almost 100% sure that there is no spedcial encryption since Noitora already did a menu trans before. (But deleted it)
     
  8. Noitora

    Member Noitora ::

    Joined:
    Aug 9, 2007
    Messages:
    3,768
    Location:
    Athens
    Country:
    Greece
    Ouch, anyway yes, it was my first translation, there was no special compression, I don't remember anything about the pointers but I might give it a see later, I have some stuff to do right now.
     
  9. litium

    Member litium GBAtemp Regular

    Joined:
    Mar 19, 2008
    Messages:
    196
    Location:
    Argentina
    Country:
    Argentina
    I hope you do something... i'm willing to GFX (no hacking) but this games looks awesome... sahem tahta never got localized
     
  10. miruki

    Member miruki GBAtemp Advanced Fan

    Joined:
    Apr 23, 2008
    Messages:
    644
    Location:
    Awesometown
    Country:
    Germany
    edit: shit I replied to the wrong topic, that's what you get for opening too many tabs... XDD
     
  11. psycoblaster

    Member psycoblaster Divine

    Joined:
    Jan 26, 2008
    Messages:
    2,132
    Location:
    Seoul.. (in Korea)
    Country:
    Korea, South
    JUST IN CASE ANYBODY WANTED TO PICK THIS UP

    pac files are in this format
    0x00000000 ~ 0x00000002 Size of file table (including this part)
    0x00000003 ~ 0x******** file table. The ******** is the offset the first 2 bytes show.

    As an example, I'm using message.pac because the name of the file seemed like some messages were gonna be in it.

    0x00000000 ~ 0x00000002 was 49 00 00, so flipped, 0x00000049 is where the file table ends
    0x00000003 ~ 0x00000049 is the file table, in this order: first byte is the text length of the file (so for example, a file with a file name of abc.txt would be 7, abcdefg1234.txt would be 0F), and then comes the pointer that points to the actual pointer, and then the file name.
    after 0x00000049, the next 2 bytes were the number of files.
    and then there is a pointer table.
    The pointer starts counting from 0000, which means the first, which is actually located at 0x0200, would be pointed as 0x0000, and so on. The pointer is 4 bytes, and then comes 4 bytes which is the file size of the file that the pointer is directing to.
    I've noticed that pac files with the more number of files have a different type of beginning header, but I don't want to waste time explaining.



    I'm now looking at the first file from message.pac, camp_mes_msg.gem.
    the first 4 bytes is the number of pointers/script in the file. Then comes 4 bytes of pointers, then 4 bytes of the script size, and repeats the number of times that it says on the first 4 bytes.
    Even on this file, the pointers that points to the first script is 00, so you'll need to calculate your pointers correctly when editing.



    I looked into font.pac, and I've found a 4bpp font.

    Didn't look more deeper for a character map/width table though.

    Looked in the pacs inside the menu directory, and the pac files contained NCGR etc files, so the graphics won't be hard to edit, IF graphics was necessary.

    everything in the script folder was not scripts at all.

    I didn't look much more in the ROM, but I now can see that most of the text should be in message.pac, and the use of pointers in the script was pretty basic.


    Now if you take a look into the arm9.bin, there are lots of text in there. Many stuff noitora should have translated for his menu trans.
    Translation is possible, but expanding the arm9 size is not, unless you know arm asm.

    Pointer calculations are simple.

    In the arm9.bin, look at offset 0x1101D8.
    The text should say WEB in double byte characters.
    Now remember, because this is the arm9.bin, you aren't looking for a pointer for the file, but where the text will be in the RAM.
    Because there are no overlay files, most of the times (from what I know), just add 02000000 to your values. That can be found in either the y9.bin /arm9ovltable.bin (whichever the game uses), but I won't get into that, because this game doesn't use any overlays and it's not necessary.

    So doing a byte flip of that text's offset, it becomes D80111.
    Add 02000000 to D80111 so it is now 02D80111. Do a search for this text...
    and you get a matching result in 0x1108EC. That's the pointer for "WEB". So whenever the starting offset of "WEB" changes, you change this pointer value to match "WEB"'s new offset.

    Hope I've helped.
     

Share This Page