Harvest Moon DS - Swedish Translation

Discussion in 'NDS - ROM Hacking and Translations' started by Gryphon93, Jul 9, 2009.

Jul 9, 2009
  1. Gryphon93
    OP

    Member Gryphon93 GBAtemp Regular

    Joined:
    Nov 30, 2008
    Messages:
    145
    Country:
    Sweden
    I'm currently trying to translate Harvest Moon DS (US V.1.0) into Swedish. I've extracted the files from the ROM, looked through them roughly, found the text files and some files containing the graphics. I've "translated" some of the sprites (I've repainted them) and I've also found out how to make swedish characters to show up. My question now is: Can someone help me with the pointers? I mean, I want to change the length of some "sentances", but because of the pointers, I can't do it right now. I want help to locate the pointers and help to understand them.

    I've been wondering about it for a while now, but I haven't found out anything about it. I've read a bit of the Rom Hacking Guide by FAST6191, but I'm not done yet. I've read about pointers, but it didn't help much (Maybe because I haven't read the whole guide?). There is some things in the text files that may have something to do with the pointer-thingy. I think they're some kind of commands. Anyway, the "commands" are: STR, SCR CODE, RIFF and maybe some more.

    I also wonder if I'm allowed to post a hexdump of a part of the text file. It'll maybe help to locate the pointers. (Even if it's not sure that they're located in the text file).

    I'm sorry if I've explained badly, but I hope you understand what I mean. If not, please tell me and I'll try to explain better. Please help, if you are able to. If I manage to change the pointers, I'll be able to translate the game properly. Thanks in advance!
     
  2. FAST6191

    Reporter FAST6191 Techromancer

    pip
    Joined:
    Nov 21, 2005
    Messages:
    21,737
    Country:
    United Kingdom
    Pointers are like the contents page of a book except instead of pages you use addresses although these addresses can be encoded in a seemingly odd way (what I guess is causing you issues).
    Changing the length of the text as you have found changes the address which means the game does not display it properly.

    Please post a hex dump (from the first bytes and include some text in there as well) or post what files are used.

    Good news is that you have already done the hardest part of translation, pointers are just tedious.

    If you want though my main trick for figuring out pointers (and in some cases changing them) is to make a spreadsheet* of the old addresses (end of line is usually a 00 or something), a list of the new ones (again 00 or something), a list of the pointers (they are probably at the start of the file and each entry is usually the same length (usually around 4 to 8 bytes) so if you adjust the window to get one pointer per "line" which you can then copy and paste). You can usually make such a list with a hex editor search and checking "find all".

    *open office supports hex out of the box, depending on your version of MS office you may have to install the "(engineering) analysis toolpack".

    I have not hacked Harvest moon in some time but I have hacked Rune factory which uses the same engine and setup for the most part and the pointers I found there were fairly simple.
     
  3. Gryphon93
    OP

    Member Gryphon93 GBAtemp Regular

    Joined:
    Nov 30, 2008
    Messages:
    145
    Country:
    Sweden
    Hm... Okay. Do you want a hex dump of the whole file? From the first byte to the last?

    If you want to look at the text files yourself (there is 7 of them, one per language), you'll find them in the "script"-folder. I'm translating ScriptUS.bin. I've compared the US-file with the Spanish-file to see if I could find something useful. I compared two strings, both meaning the same thing (namely: "Welcome! Welcome to Harvest Moon!", but one of them was written in spanish, of course), and I found out that the spanish one is longer than the US one. The Spanish-string was (hex) 25 characters long and the US-string was (hex) 21 characters long. I thought it would help me to find the pointers in some way, but I don't know.

    There is at least one file more that I've to find the pointers in, and it's the itemmsg_E.bin-file located in the "message"-folder.

    One last thing, I also want help to find the dialogs where you enter your name, your farm's name, and so on, so I can translate them and add the swedish characters to them. I really appreciate your help! Thanks!
     
  4. psycoblaster

    Member psycoblaster Divine

    Joined:
    Jan 26, 2008
    Messages:
    2,132
    Location:
    Seoul.. (in Korea)
    Country:
    Korea, South
    Upload the file for a better and more accurate answer
     
  5. qwsed

    Member qwsed GBAtemp Regular

    Joined:
    Oct 23, 2008
    Messages:
    152
    Country:
    Anguilla
    lol... Verkligen? Cool idé men svenskarna förstår engelska väldigt bra. I.o.f.s om det är till dina barn eller yngre syskon eller va det nu kan vara så kan jag väl köpa det ^^.

    Translation: Really? Cool idea, but we Swedes understand english very well. Tho if it is for your kids and/or younger siblings i can understand it.
     
  6. Maktub

    Member Maktub GBAtemp Advanced Fan

    Joined:
    Nov 4, 2006
    Messages:
    832
    Location:
    Málaga
    Country:
    Spain
    I could lend you a hand, if you so wanted. Just let me know... I'd be of help ONLY with translating, since I know nothing of coding/programming/anything alike.

    However, I'd say qwsed is quite right about most swedes having a good knowledge of English.
     
  7. Gryphon93
    OP

    Member Gryphon93 GBAtemp Regular

    Joined:
    Nov 30, 2008
    Messages:
    145
    Country:
    Sweden
    Okay, I'll tell you why I'm translating the game. I can also tell you that I already know that we Swedes understand english well, but it's not because of that I'm translating the game to Swedish.

    1. I want to help swedish people, who don't understand english very well, to understand the game and make their game experience better.

    2. I want to try to translate a game (this is my first time)

    3. I like things like this, namely figuring out things and try to make it work the way you want

    4. I wonder how a Harvest Moon game would be like if it was in swedish

    I hope that cleared some things up about why I'm translating the game.

    Now over to the hexdump:

    You can get the hexdump here: http://jags.hoogetech.com/Other/ScriptUS.7z


    It's a 7z-file (1.61MB), but inside it's a .txt-file and it's quite large (13.5 MB). You better not try to open it in Notepad (even if it works fine) because it takes some time to load it. Try Notepad++, or any other program, instead.

    I hope you can help me further now when you've got the hexdump. Thanks again!
     
  8. FAST6191

    Reporter FAST6191 Techromancer

    pip
    Joined:
    Nov 21, 2005
    Messages:
    21,737
    Country:
    United Kingdom
    OK thanks for the info, I pulled apart the rom and grabbed the script file. Only looking at the ScriptUS.bin file for now, the other stuff might be buried somewhere else in the game and the other pointers I am leaving for now.

    First off I guess I lied earlier when I said I expected it to be easy; you have a complex one on your hands. I am off to watch a film shortly so I could not do a complete workup of the format but this is hopefully enough to get you started although if you do not quite understand pointers this could be confusing.
    Here is my spreadsheet (ODS format), I make frequent reference to it in the post to come:
    http://www.4shared.com/file/117025575/be6d...dspointers.html

    Pointers appear to be at the start of the file, I called 4 to 8 bytes which turns out what correct (4 bytes).

    54B0 2E00 is the last entry before it all gets "random". Found at 1440 (hex) offset.

    002E B054 then becomes an address of interest. Turns out it is the end of the file (a good start) and is marked by a 00.

    Looking up the file 002E B020 is the next "end of line" type of symbol (another 00)

    002E A7A0 is the second to last entry on the list, too bad as this means it is not going to be a simple hack.
    It does however have a "RIFF" as the ASCII decode.
    Searching for RIFF says 1347 instances. The pointer list is 1297 lines (1440 hex / 8 hex = 510 hex = 1296 decimal), do not worry I fix this in a second and it highlights an interesting problem faced by hackers using automated tools and/or the mindset required.

    Following up the list the next few entries correspond to a "RIFF" entry.
    Interesting sidenote is after RIFF is a number that is the length of the RIFF section to come (give or take some alignment bytes by the looks of things); I do not know if being there is a leftover from compiling/similar or something useful/used by the game but it is never wise to assume it is not.

    As hinted at by the higher number of potential pointers it is not flawless so finding a "phantom" entry.
    Going from the bottom again aside from the very last entry
    0x002E5FF5 is the RIFF entry of choice that does not feature in the pointers but does in a search of RIFF entries.
    Turns out you have to be careful about this sort of thing: it is part of Griffin (a fictional monster or in this case a name, it strikes me with a username such as yours though this is redundant), searching again there are three entries for Griffin which accounting for those is still nowhere near the pointer implied amount.
    Another search but this time limiting it to uppercase nets 1295 instances and now the list appears to line up near perfectly (first and last entry are "missing") which would be my next search.
    For giggles I did a lower case search for RIFF netting 52 hits and even more interestingly a spelling mistake at 8EAB0 where the name is spelled "Griffen". It is not like such a thing is unprecedented though: http://www.chronicgames.net/images/games/n...eenshot-001.jpg (natume anyone?)
    A couple of lines below this is another interesting entry which looks to be the name wildcard but that is not really a pointer issue but more of a text issue (it is not unheard of for such things to be found in the pointers).

    Examination of a RIFF file, I already mentioned the length entry.
    Example one used: the first file found at 1444 ending 1C34
    Few text entries in this one (22 useful "00" values in the text section) and no immediately obvious pointers, it is also disproportionately large for such a small amount of text (text starts at 73b and ends at 7EF) which suggests the possibility of text display also being thrown in.

    Poking around it seems the pointers are in the section starting with STR, I did a search of the differences between the 00 entries and the differences between the first entries of the STR section and saw a matching sequence.

    In this case the pointers start at 10 in the STR section. My guess is they are standard offset pointers (in the case of this demo add 68 hex).

    This leaves a few interesting questions such as what do the other values in the STR section mean and indeed what do the other values in the RIFF section mean (SCR CODE and JUMP)
     
  9. Gryphon93
    OP

    Member Gryphon93 GBAtemp Regular

    Joined:
    Nov 30, 2008
    Messages:
    145
    Country:
    Sweden
    Thanks for you hard work, FAST6191! I really appreciate it! I'll take my time and read through the text some times more, just to make sure I understand a little better [​IMG]. It's, as I said earlier, my first time I'm hacking/translating a game, so I think I've to be extra careful and make sure I read everything very accurately. I had also a thought about that STR possibly were pointers, or something. Well, I'll read you post again and see what I can do! Thanks A LOT!

    Edit: Just a question: Is it bad to use a trimmed rom when you're hacking? Because I found out that I'm doing it :/. It's probably a bad thing to do, or is it?
     
  10. psycoblaster

    Member psycoblaster Divine

    Joined:
    Jan 26, 2008
    Messages:
    2,132
    Location:
    Seoul.. (in Korea)
    Country:
    Korea, South
    rather than the hex dump, please post the actual file so I can actually see lol
    and it doesn't really matter if you are using a trimmed rom or not
    it's a lot easier to edit file by file rather than the rom as a whole just to keep the original rom size
     
  11. Gryphon93
    OP

    Member Gryphon93 GBAtemp Regular

    Joined:
    Nov 30, 2008
    Messages:
    145
    Country:
    Sweden
    Okay, I see [​IMG]. I'll upload the file very soon. I'll edit my post then.

    Here you go!: Download (Mediafire)
     

Share This Page