Hello everyone! I have decided to take on the project of translating Dragon Quest Monsters 2 3DS. I will supply a patch for the community to enjoy as I progress on this wonderful journey.
Dragon Warrior Monsters 2: Cobi Journey and Tara's Adventure hold a special place in my childhood memories, so I will be doing this for personal reasons. So if an official English translation is announced it won't make me mad in the least.
My goals are of the following:
Translate all skills and abilities
Translate all monster names
Translate all relevant menus that are commonly used during offline play.
Translate any other random bits that are important.
I will NOT be focusing on translating the story....at least not right away.
Here is what I'm working on now.
I want to make it as easy as possible for people to help contribute to this project if they wish to do so, however, right now I am currently doing research on the hex dumps of the files I'm working with. I can find and edit any of the Japanese located in the /data/Message/*.binj but I need to plan out the overall strategy I need to approach to avoid problems as I progress.
You see hex is very different than traditional translating we are normally accustomed too. For example Japanese in raw bytes is much more confined and uses less memory than English, so when I translate a piece of text I need to follow the strict hex layout byte by byte. This is the Japanese hex used for Skill Point allotments B7 B1 D7 E0 32 A8 DC BF 8D A3 9F 90 9F. That is a total of 13 one byte possible English characters I can use. I can simply replace that with 1F 31 2F 32 32 0C 1C 35 2F 34 3A 39 + 0C to change the text to Skill Points in the main menu and that will work. I can't however put Skill Point Allocation because it is too large in size.
This is where pointers and finding free memory comes into play. I have located all the pointers to each piece of text in question, but I am having to find free space in each file that I can change the pointer to so I don't run into problems like not being able to replace the hex value of "Quit" into a value of 3. I can put "Qui" in it with no problem but when I insert the extra byte to get the "t" in the game it breaks text in the game.
An example of a successful pointer swap. The 4 byte SAVE pointer has been swapped with the 13 byte Skill Points pointer.
Unless there is another method that I'm not aware of; we are going to need to find each pointer and it's corresponding hex value so we can rearrange all of them in a way that we can properly input English values.
かしこさ (4 bytes) <<< This is an actual value in the game.
kashikosa <<<Romaji
Intelligence (12 bytes) <<<Full translation
INT (3 bytes) <<<Abbreviation
So if you look at this you will see that the default pointer has 4 bytes to fill. We would only need 3 bytes to do our translation. Instead of wasting that extra byte we will need to find a place where 4 bytes is needed but 3 is supplied. We can simply swap them and we will be good to go!
I see now why they didn't put the full monster names into the dialogue in the Terry No Wonderland translation. There is simply a very limited amount of free space to work with!
P.S I will come back to edit this post at a later date when I have more progress to share with you guys.
Dragon Warrior Monsters 2: Cobi Journey and Tara's Adventure hold a special place in my childhood memories, so I will be doing this for personal reasons. So if an official English translation is announced it won't make me mad in the least.
My goals are of the following:
Translate all skills and abilities
Translate all monster names
Translate all relevant menus that are commonly used during offline play.
Translate any other random bits that are important.
I will NOT be focusing on translating the story....at least not right away.
Here is what I'm working on now.
I want to make it as easy as possible for people to help contribute to this project if they wish to do so, however, right now I am currently doing research on the hex dumps of the files I'm working with. I can find and edit any of the Japanese located in the /data/Message/*.binj but I need to plan out the overall strategy I need to approach to avoid problems as I progress.
You see hex is very different than traditional translating we are normally accustomed too. For example Japanese in raw bytes is much more confined and uses less memory than English, so when I translate a piece of text I need to follow the strict hex layout byte by byte. This is the Japanese hex used for Skill Point allotments B7 B1 D7 E0 32 A8 DC BF 8D A3 9F 90 9F. That is a total of 13 one byte possible English characters I can use. I can simply replace that with 1F 31 2F 32 32 0C 1C 35 2F 34 3A 39 + 0C to change the text to Skill Points in the main menu and that will work. I can't however put Skill Point Allocation because it is too large in size.
This is where pointers and finding free memory comes into play. I have located all the pointers to each piece of text in question, but I am having to find free space in each file that I can change the pointer to so I don't run into problems like not being able to replace the hex value of "Quit" into a value of 3. I can put "Qui" in it with no problem but when I insert the extra byte to get the "t" in the game it breaks text in the game.
An example of a successful pointer swap. The 4 byte SAVE pointer has been swapped with the 13 byte Skill Points pointer.
Unless there is another method that I'm not aware of; we are going to need to find each pointer and it's corresponding hex value so we can rearrange all of them in a way that we can properly input English values.
かしこさ (4 bytes) <<< This is an actual value in the game.
kashikosa <<<Romaji
Intelligence (12 bytes) <<<Full translation
INT (3 bytes) <<<Abbreviation
So if you look at this you will see that the default pointer has 4 bytes to fill. We would only need 3 bytes to do our translation. Instead of wasting that extra byte we will need to find a place where 4 bytes is needed but 3 is supplied. We can simply swap them and we will be good to go!
I see now why they didn't put the full monster names into the dialogue in the Terry No Wonderland translation. There is simply a very limited amount of free space to work with!
P.S I will come back to edit this post at a later date when I have more progress to share with you guys.
Last edited by ruineka,