ROM Hack Harvest Moon DS - Swedish Translation

Gryphon93

Well-Known Member
OP
Member
Joined
Nov 30, 2008
Messages
145
Trophies
0
XP
252
Country
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!
 

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,798
Trophies
3
XP
28,321
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.
 

Gryphon93

Well-Known Member
OP
Member
Joined
Nov 30, 2008
Messages
145
Trophies
0
XP
252
Country
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!
 

qwsed

Well-Known Member
Member
Joined
Oct 23, 2008
Messages
152
Trophies
0
XP
163
Country
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.
 

Maktub

Well-Known Member
Member
Joined
Nov 4, 2006
Messages
829
Trophies
0
Age
34
Location
Málaga
XP
166
Country
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.
 

Gryphon93

Well-Known Member
OP
Member
Joined
Nov 30, 2008
Messages
145
Trophies
0
XP
252
Country
qwsed said:
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.

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!
 

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,798
Trophies
3
XP
28,321
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)
 

Gryphon93

Well-Known Member
OP
Member
Joined
Nov 30, 2008
Messages
145
Trophies
0
XP
252
Country
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
wink.gif
. 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?
 

psycoblaster

Divine
Member
Joined
Jan 26, 2008
Messages
2,131
Trophies
0
Age
33
Location
Seoul.. (in Korea)
Website
Visit site
XP
211
Country
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
 

seangibbz

Active Member
Newcomer
Joined
Sep 19, 2008
Messages
31
Trophies
0
XP
207
Country
Canada
The "RIFF ... SCR CODE" segment seems to indicate a script file in a Resource Interchange File Format container.

Harvest Moon: A Wonderful Life contains several of these files (with the file extension .sb). It's presumed that these were used for testing purposes during development.

I've attached an example which, judging by the name, would trigger the event where Cody will give you a piece of art for your home.
 

Attachments

  • EV5007_godey_getart.7z
    1.4 KB · Views: 146

seangibbz

Active Member
Newcomer
Joined
Sep 19, 2008
Messages
31
Trophies
0
XP
207
Country
Canada
The "RIFF ... SCR CODE" segment seems to indicate a script file in a Resource Interchange File Format container.

Harvest Moon: A Wonderful Life contains several of these files (with the file extension .sb). It's presumed that these were used for testing purposes during development.

I've attached an example which, judging by the name, would trigger the event where Cody will give you a piece of art for your home.
Update: I've managed to figure out how to swap around different .sb script files in HMAWL.

In AWL, the game makes use of CLZ compression. This means that certain files will need to be uncompressed, modified, then recompressed.

I'm unsure if CLZ is utilized in HMDS, but hopefully these will offer some sort of insight into these files.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    K3Nv2 @ K3Nv2: Like for micro