ROM Hack Hakuouki DS Translation Project - Hacker Needed

Status
Not open for further replies.

metersandpiper

Member
OP
Newcomer
Joined
Apr 7, 2010
Messages
18
Trophies
1
XP
56
Country
United States
azerty1 said:
so...i can't hack and slash or cheat my way by brute forcing this one. there's nothing consistent and unique enough before each text string. i'm sure the top half of the file has pointers all over it, but i can't seem to find them/not enough time to stare at it long enough to find them.
There are random strings that definitely say something coherent, though the confusing thing is that half of them use some strange format with a 656E 645F before them and others use the same as the normal text...
quite confusing. i'll have more time to look at this one tomorrow, probably...
Any updates on this?

I'm just curious lol. It's okay if you haven't worked on it at all. Also, I sent you a message. I think we should chat via AIM or something.
 
  • Like
Reactions: Willhart

jjjewel

Well-Known Member
Member
Joined
Dec 17, 2009
Messages
1,010
Trophies
0
XP
522
Country
United States
More Info for azerty1:

File with "ev" in the name can be ignored. (Codes in there are not supposed to be changed. They are checking for endings, etc.)

init.DAT@ can also be ignore.

---------------

For general .DAT@ files, check the value at Hex 20. Switch the bytes there. It will point to somewhere near the bottom of the file and you will see a list of memory_init, memory_exit, sure1, sure2, and so on. (Sure is a Japanese word su-re which means thread.) Ignore memory_init and memory_exit and start checking for text from the address shown after sure1. It will always be the byte at 74 (hex) from the first value you got at Hex 20.

For example, at file 100-1-0.DAT@. The value at Hex 20 is 94 4E 01. Switch it to get 014E94. Go to Hex 014E94 and you'll see the list of memory_init, etc. Add Hex 74 to 014E94 = 014F08. At 014F08, you'll see AC 49 there. Switch it to get 49AC and this is where you should start to check for text. (Everything before 49AC will be the game codes which are not supposed to be changed.)

Then for the text, I could find 3 categories. (Not sure if there are more but I checked roughly and these 3 seemed to cover all the game scripts.) You can look for these values in the file;

Category 1: Dialogs: 00 00 00 00 D2 00 00 00 01 00 00 00
Category 2: Speakers: 00 00 00 00 D4 00 00 00 01 00 00 00
Category 3: Choices: 00 00 00 00 E7 00 00 00 02 00 00 00

Once you find the part with any of the above codes, the pattern will be like this. (I use Category 1 for example.)

00 00 00 00 | D2 00 00 00 | 01 00 00 00 | xx 00 00 00 | yy yy yy 00

xx = length of this block of codes (hex)
yyyyyy = hex address of some codes before your text

So switch the bytes for yyyyyy and go to the address;

You will get
4-byte codes | 4-byte codes | 4-byte codes | mm 00 00 00 | Your Text

mm = length of your text

So from yyyyyy, add 12 bytes and read the value of mm. Then add 4 bytes and convert the next mm bytes to Shift-Jis text.

After that, you're done with this block of codes. Just get back to where the code starts and skip xx bytes to the next block of codes.

------------------

The above strategy can be used for script extraction. But script insertion is probably a lot more complicated. (Each block of codes has pointers to the next block. So if the text length is changed, the pointer for all the codes after that will have to be changed too. It can get more complicated when you have to deal with choices where one block of codes has more than one pointer.)
 

jjjewel

Well-Known Member
Member
Joined
Dec 17, 2009
Messages
1,010
Trophies
0
XP
522
Country
United States
For Nimue, if you just need the Japanese scripts to translate while waiting for azerty1's program, you can use these.

scripts in /quiz folder
scripts in /script folder

Anyway, I can't make text insertion program for you. So you still have to wait for azerty1.
happy.gif
 

metersandpiper

Member
OP
Newcomer
Joined
Apr 7, 2010
Messages
18
Trophies
1
XP
56
Country
United States
Oh this is SO awesome. Good luck azerty1! Thanks SO much jjjewel! This will definitely give me something to do in the downtime while I wait for an inserter.
 
  • Like
Reactions: Willhart

Kajitani-Eizan

Well-Known Member
Member
Joined
Feb 4, 2013
Messages
109
Trophies
1
Age
44
XP
146
Country
United States
Nimue said:
Couldn't you do a loop or some recursive... Thing to do the... Pointer... Stuff?

yeah, it shouldn't be too bad. even if you can't easily figure out the script format, you should be able to find the pointers by searching. first see if you can figure out where they are and how to change them by hand (i.e. using a hex editor), then once you've got that down write a program to automate it (i.e. the inserter).
 

metersandpiper

Member
OP
Newcomer
Joined
Apr 7, 2010
Messages
18
Trophies
1
XP
56
Country
United States
Kajitani-Eizan said:
Nimue said:
Couldn't you do a loop or some recursive... Thing to do the... Pointer... Stuff?

yeah, it shouldn't be too bad. even if you can't easily figure out the script format, you should be able to find the pointers by searching. first see if you can figure out where they are and how to change them by hand (i.e. using a hex editor), then once you've got that down write a program to automate it (i.e. the inserter).
Yeah, I think what they're saying is that they can find them, but changing one changes all the rest. Or something. I don't understand the 'multiple pointers' thing though, like, AT ALL. I think once they figure out how they change they might be able to do a loop thing in programming and get it done... I dunno though. This is mostly coming from my techie friend.
 
  • Like
Reactions: Willhart

azerty1

Well-Known Member
Member
Joined
Mar 22, 2009
Messages
160
Trophies
0
Age
29
Website
Visit site
XP
99
Country
Canada
Nimue said:
Kajitani-Eizan said:
Nimue said:
Couldn't you do a loop or some recursive... Thing to do the... Pointer... Stuff?

yeah, it shouldn't be too bad. even if you can't easily figure out the script format, you should be able to find the pointers by searching. first see if you can figure out where they are and how to change them by hand (i.e. using a hex editor), then once you've got that down write a program to automate it (i.e. the inserter).
Yeah, I think what they're saying is that they can find them, but changing one changes all the rest. Or something. I don't understand the 'multiple pointers' thing though, like, AT ALL. I think once they figure out how they change they might be able to do a loop thing in programming and get it done... I dunno though. This is mostly coming from my techie friend.
Let's say we have a file with 10 bytes:
11 22 33 44 55 66 77 88 99 AA
a pointer is basically the index of the information we want in the set of 10 bytes so if the pointer is something like 10, we return AA, if it's 6, we return 66.

If you replace the byte 55 with 12 34, then the file will look like this:
11 22 33 44 12 34 66 77 88 99 AA
the pointer 6 normally points to 66, but now the sixth byte in the file is 34, so it will return 34, which is bad.
so basically, when rewriting the pointers, i keep track of the size differences of the files removed and the files inserted, in this case, it is 1 (2 - 1) and I add that difference to every following pointer.
 

metersandpiper

Member
OP
Newcomer
Joined
Apr 7, 2010
Messages
18
Trophies
1
XP
56
Country
United States
azerty1 said:
Nimue said:
Kajitani-Eizan said:
Nimue said:
Couldn't you do a loop or some recursive... Thing to do the... Pointer... Stuff?

yeah, it shouldn't be too bad. even if you can't easily figure out the script format, you should be able to find the pointers by searching. first see if you can figure out where they are and how to change them by hand (i.e. using a hex editor), then once you've got that down write a program to automate it (i.e. the inserter).
Yeah, I think what they're saying is that they can find them, but changing one changes all the rest. Or something. I don't understand the 'multiple pointers' thing though, like, AT ALL. I think once they figure out how they change they might be able to do a loop thing in programming and get it done... I dunno though. This is mostly coming from my techie friend.
Let's say we have a file with 10 bytes:
11 22 33 44 55 66 77 88 99 AA
a pointer is basically the index of the information we want in the set of 10 bytes so if the pointer is something like 10, we return AA, if it's 6, we return 66.

If you replace the byte 55 with 12 34, then the file will look like this:
11 22 33 44 12 34 66 77 88 99 AA
the pointer 6 normally points to 66, but now the sixth byte in the file is 34, so it will return 34, which is bad.
so basically, when rewriting the pointers, i keep track of the size differences of the files removed and the files inserted, in this case, it is 1 (2 - 1) and I add that difference to every following pointer.
...At least some of that made sense >
 
  • Like
Reactions: Willhart

metersandpiper

Member
OP
Newcomer
Joined
Apr 7, 2010
Messages
18
Trophies
1
XP
56
Country
United States
azerty1 said:
Nimue said:
Kajitani-Eizan said:
Nimue said:
Couldn't you do a loop or some recursive... Thing to do the... Pointer... Stuff?

yeah, it shouldn't be too bad. even if you can't easily figure out the script format, you should be able to find the pointers by searching. first see if you can figure out where they are and how to change them by hand (i.e. using a hex editor), then once you've got that down write a program to automate it (i.e. the inserter).
Yeah, I think what they're saying is that they can find them, but changing one changes all the rest. Or something. I don't understand the 'multiple pointers' thing though, like, AT ALL. I think once they figure out how they change they might be able to do a loop thing in programming and get it done... I dunno though. This is mostly coming from my techie friend.
Let's say we have a file with 10 bytes:
11 22 33 44 55 66 77 88 99 AA
a pointer is basically the index of the information we want in the set of 10 bytes so if the pointer is something like 10, we return AA, if it's 6, we return 66.

If you replace the byte 55 with 12 34, then the file will look like this:
11 22 33 44 12 34 66 77 88 99 AA
the pointer 6 normally points to 66, but now the sixth byte in the file is 34, so it will return 34, which is bad.
so basically, when rewriting the pointers, i keep track of the size differences of the files removed and the files inserted, in this case, it is 1 (2 - 1) and I add that difference to every following pointer.
Any progress so far azerty1 dear? It's okay if you've been busy >
 
  • Like
Reactions: Willhart

jjjewel

Well-Known Member
Member
Joined
Dec 17, 2009
Messages
1,010
Trophies
0
XP
522
Country
United States
Nimue- For now I'd suggest that you try to get familiar with these programs;

DSLazy: Try to unpack your game ROM. It will unpack the game into folders and subfolders.
BatchLZ77 1.3: Use this to decompress your script files.
CrystalTile2: Use this to read the script files.

Here's a step-by-step:
1- Open your ROM in DSLazy and then Unpack it. (You will get the folders somewhere in the same directory as DSLazy, if I remember correctly.)
2- Locate the scripts in script/scenario/ in the folder you got from DSLazy.
3- Copy a file 100-1-0.DAT@ to somewhere else.
4- Decompress 100-1-0.DAT@ with BatchLZ77 (Select LZ77 Type 11 from Option menu.)
5- Open the decompressed file in CrystalTile2.
6- From CrystalTile2's menu, select TBL and then Code Page and then select Japanese (Shift-Jis).

Okay, let me know once you get to step 6 and can see some readable Japanese script in the CrystalTile2 program. I'll tell you later what steps you have to do to get the text in the game then.
biggrin.gif


P.S. Some of the file or folder names I mentioned might be wrong. Just look for something with similar name then. (I don't have the game file with me now.)
 

jjjewel

Well-Known Member
Member
Joined
Dec 17, 2009
Messages
1,010
Trophies
0
XP
522
Country
United States
Since someone asked me about what to do next after those steps, I'll explain here.
Anyway, this is not the perfect way of the rom hacking process. It's more of a
manual insertion but this should be enough for a beginner to get some idea about
game translation. After this, if you have time to learn some programming, you can
write your own programs to make auto-insertion and stuff.
biggrin.gif

(I don't know why I ended up writing a very looooong explanation. I'll put it in
a spoiler tag then. It's really long.
tongue.gif
)

(Con't from previous post)

7- Assuming you already downloaded my extracted scripts from "scripts in /script
folder" I posted earlier. Unzip and open the file [email protected]. You should see
something like this;

004E0C,28,TEXT,????????????
004E60,08,CTRL,??
004EA0,08,CTRL,???
005748,04,TEXT,?
005A70,16,NAME,???#Name[1]
005AAC,24,TEXT,????????……?
005B00,44,TEXT,?????????????????????
005B68,28,TEXT,?????????????
005BB0,32,TEXT,??????????????


8- Now, back to step 6 where you should see some Japanese text in the file if you
did everything correctly. Locate the address 004E0C in CrystalTile2 program. (It
will be shown as 00004E00 on the left column with label "address" on the top. You
can use Properties tab on the left and type "4E0C" at offset too. It will move to
the main line which is "4E00".) At address 4E0C, look at one row below it ("4E1C")
and you should see the Japanese script "????????????" which is the same as
the extracted text. (I explained about this in Negima's thread too. So you can
look there if you need more info.)


9- Now it's time to make your translation if you haven't done that. From the
extracted scripts, the second number is the limit for your English alphabets &
punctuations. So the first line "004E0C,28,TEXT,????????????" has 28 as a
text limit. You can't translate it to "Do you want to skip the prologue?" because it
will be longer than 28 characters. So you have to shorten the translation to "Want
to skip the prologue?" (26 chars) or "Skip the prologue?" (18 chars). Note that all
spaces and punctuations also counted as your characters and all must be the English
alphabets and punctuations, not the Japanese ones. (Ex. You must use "." not "?".)

Anyway, if you really want to use the punctuations or anything in Japanese font,
like ?these Japanese parentheses? , you will have to count each of them as 2
characters.

9.1-- This game uses different text spacing for the lines I labeled with "NAME". So
I'd suggest that you don't translate them for now. Just leave them in Japanese. You
can experiment how many characters you can put in the "NAME" text later. (If the
text for "NAME" is too long, your game will freeze.)

9.2-- So basically, try translating the lines with labels "TEXT" and "CTRL".

9.3-- This line "005B00,44,TEXT,?????????????????????" seems to allow 44
characters for your translation. But the actual dialog box in the game can only hold
40 characters per line. So try not to make anything longer than 40 chars.

9.4-- If you're familiar with spreadsheet program, you can use "Len" function to
count the characters for your translated text.

9.5-- There are also some blank text like "005748,04,TEXT, ". Just leave it like that.
You don't have to do anything with it.


10- Now if you have your translation in a text file, copy and paste each line to its
corresponding location in CrystalTile2. (Make sure the translation does not exceed
the character limit.) See step 8- if you already forget how to look for the location.

10.1-- Sometimes when your translation is shorter than the original Japanese script,
you will need to replace the rest of the Japanese script with blank bytes. Just type
00 in the code table. (You need to type in the code part in the middle of
Crystaltile2 program, not the text part on the right.)


11- After you tried pasting maybe a few lines of translations, save or save as
your 100-1-0.DAT@ file.

12- Use BatchLZ77 V.1.3 to compress the file you just saved. (At Options, select
LZ77 Type 11.)

13- Locate the 100-1-0.DAT@ file you got from step 2- and replace it with this new
file you just compressed in step 12-.

14- Use DSLazy to pack your game file and test play it.

(Okay, again, this is not a good practice for rom hacking. Many hackers don't
recommend doing manual insertion like this, but I think it's way easier than
learning how to program or use other programs to do it.
tongue.gif
)
 

metersandpiper

Member
OP
Newcomer
Joined
Apr 7, 2010
Messages
18
Trophies
1
XP
56
Country
United States
jjjewel said:
Since someone asked me about what to do next after those steps, I'll explain here.
Anyway, this is not the perfect way of the rom hacking process. It's more of a
manual insertion but this should be enough for a beginner to get some idea about
game translation. After this, if you have time to learn some programming, you can
write your own programs to make auto-insertion and stuff.
biggrin.gif

(I don't know why I ended up writing a very looooong explanation. I'll put it in
a spoiler tag then. It's really long.
tongue.gif
)

(Con't from previous post)

7- Assuming you already downloaded my extracted scripts from "scripts in /script
folder" I posted earlier. Unzip and open the file [email protected]. You should see
something like this;

004E0C,28,TEXT,????????????
004E60,08,CTRL,??
004EA0,08,CTRL,???
005748,04,TEXT,?
005A70,16,NAME,???#Name[1]
005AAC,24,TEXT,????????……?
005B00,44,TEXT,?????????????????????
005B68,28,TEXT,?????????????
005BB0,32,TEXT,??????????????


8- Now, back to step 6 where you should see some Japanese text in the file if you
did everything correctly. Locate the address 004E0C in CrystalTile2 program. (It
will be shown as 00004E00 on the left column with label "address" on the top. You
can use Properties tab on the left and type "4E0C" at offset too. It will move to
the main line which is "4E00".) At address 4E0C, look at one row below it ("4E1C")
and you should see the Japanese script "????????????" which is the same as
the extracted text. (I explained about this in Negima's thread too. So you can
look there if you need more info.)


9- Now it's time to make your translation if you haven't done that. From the
extracted scripts, the second number is the limit for your English alphabets &
punctuations. So the first line "004E0C,28,TEXT,????????????" has 28 as a
text limit. You can't translate it to "Do you want to skip the prologue?" because it
will be longer than 28 characters. So you have to shorten the translation to "Want
to skip the prologue?" (26 chars) or "Skip the prologue?" (18 chars). Note that all
spaces and punctuations also counted as your characters and all must be the English
alphabets and punctuations, not the Japanese ones. (Ex. You must use "." not "?".)

Anyway, if you really want to use the punctuations or anything in Japanese font,
like ?these Japanese parentheses? , you will have to count each of them as 2
characters.

9.1-- This game uses different text spacing for the lines I labeled with "NAME". So
I'd suggest that you don't translate them for now. Just leave them in Japanese. You
can experiment how many characters you can put in the "NAME" text later. (If the
text for "NAME" is too long, your game will freeze.)

9.2-- So basically, try translating the lines with labels "TEXT" and "CTRL".

9.3-- This line "005B00,44,TEXT,?????????????????????" seems to allow 44
characters for your translation. But the actual dialog box in the game can only hold
40 characters per line. So try not to make anything longer than 40 chars.

9.4-- If you're familiar with spreadsheet program, you can use "Len" function to
count the characters for your translated text.

9.5-- There are also some blank text like "005748,04,TEXT, ". Just leave it like that.
You don't have to do anything with it.


10- Now if you have your translation in a text file, copy and paste each line to its
corresponding location in CrystalTile2. (Make sure the translation does not exceed
the character limit.) See step 8- if you already forget how to look for the location.

10.1-- Sometimes when your translation is shorter than the original Japanese script,
you will need to replace the rest of the Japanese script with blank bytes. Just type
00 in the code table. (You need to type in the code part in the middle of
Crystaltile2 program, not the text part on the right.)


11- After you tried pasting maybe a few lines of translations, save or save as
your 100-1-0.DAT@ file.

12- Use BatchLZ77 V.1.3 to compress the file you just saved. (At Options, select
LZ77 Type 11.)

13- Locate the 100-1-0.DAT@ file you got from step 2- and replace it with this new
file you just compressed in step 12-.

14- Use DSLazy to pack your game file and test play it.

(Okay, again, this is not a good practice for rom hacking. Many hackers don't
recommend doing manual insertion like this, but I think it's way easier than
learning how to program or use other programs to do it.
tongue.gif
)


Bleh. I hope someone's not gonna steal my project *sadface*.


edit: WAIT I'M AN IDIOT. You posted that awhile ago >
 
  • Like
Reactions: Willhart

metersandpiper

Member
OP
Newcomer
Joined
Apr 7, 2010
Messages
18
Trophies
1
XP
56
Country
United States
Nimue said:
jjjewel said:
Since someone asked me about what to do next after those steps, I'll explain here.
Anyway, this is not the perfect way of the rom hacking process. It's more of a
manual insertion but this should be enough for a beginner to get some idea about
game translation. After this, if you have time to learn some programming, you can
write your own programs to make auto-insertion and stuff.
biggrin.gif

(I don't know why I ended up writing a very looooong explanation. I'll put it in
a spoiler tag then. It's really long.
tongue.gif
)

(Con't from previous post)

7- Assuming you already downloaded my extracted scripts from "scripts in /script
folder" I posted earlier. Unzip and open the file [email protected]. You should see
something like this;

004E0C,28,TEXT,????????????
004E60,08,CTRL,??
004EA0,08,CTRL,???
005748,04,TEXT,?
005A70,16,NAME,???#Name[1]
005AAC,24,TEXT,????????……?
005B00,44,TEXT,?????????????????????
005B68,28,TEXT,?????????????
005BB0,32,TEXT,??????????????


8- Now, back to step 6 where you should see some Japanese text in the file if you
did everything correctly. Locate the address 004E0C in CrystalTile2 program. (It
will be shown as 00004E00 on the left column with label "address" on the top. You
can use Properties tab on the left and type "4E0C" at offset too. It will move to
the main line which is "4E00".) At address 4E0C, look at one row below it ("4E1C")
and you should see the Japanese script "????????????" which is the same as
the extracted text. (I explained about this in Negima's thread too. So you can
look there if you need more info.)


9- Now it's time to make your translation if you haven't done that. From the
extracted scripts, the second number is the limit for your English alphabets &
punctuations. So the first line "004E0C,28,TEXT,????????????" has 28 as a
text limit. You can't translate it to "Do you want to skip the prologue?" because it
will be longer than 28 characters. So you have to shorten the translation to "Want
to skip the prologue?" (26 chars) or "Skip the prologue?" (18 chars). Note that all
spaces and punctuations also counted as your characters and all must be the English
alphabets and punctuations, not the Japanese ones. (Ex. You must use "." not "?".)

Anyway, if you really want to use the punctuations or anything in Japanese font,
like ?these Japanese parentheses? , you will have to count each of them as 2
characters.

9.1-- This game uses different text spacing for the lines I labeled with "NAME". So
I'd suggest that you don't translate them for now. Just leave them in Japanese. You
can experiment how many characters you can put in the "NAME" text later. (If the
text for "NAME" is too long, your game will freeze.)

9.2-- So basically, try translating the lines with labels "TEXT" and "CTRL".

9.3-- This line "005B00,44,TEXT,?????????????????????" seems to allow 44
characters for your translation. But the actual dialog box in the game can only hold
40 characters per line. So try not to make anything longer than 40 chars.

9.4-- If you're familiar with spreadsheet program, you can use "Len" function to
count the characters for your translated text.

9.5-- There are also some blank text like "005748,04,TEXT, ". Just leave it like that.
You don't have to do anything with it.


10- Now if you have your translation in a text file, copy and paste each line to its
corresponding location in CrystalTile2. (Make sure the translation does not exceed
the character limit.) See step 8- if you already forget how to look for the location.

10.1-- Sometimes when your translation is shorter than the original Japanese script,
you will need to replace the rest of the Japanese script with blank bytes. Just type
00 in the code table. (You need to type in the code part in the middle of
Crystaltile2 program, not the text part on the right.)


11- After you tried pasting maybe a few lines of translations, save or save as
your 100-1-0.DAT@ file.

12- Use BatchLZ77 V.1.3 to compress the file you just saved. (At Options, select
LZ77 Type 11.)

13- Locate the 100-1-0.DAT@ file you got from step 2- and replace it with this new
file you just compressed in step 12-.

14- Use DSLazy to pack your game file and test play it.

(Okay, again, this is not a good practice for rom hacking. Many hackers don't
recommend doing manual insertion like this, but I think it's way easier than
learning how to program or use other programs to do it.
tongue.gif
)


Bleh. I hope someone's not gonna steal my project *sadface*.


edit: WAIT I'M AN IDIOT. You posted that awhile ago >
 
  • Like
Reactions: Willhart

metersandpiper

Member
OP
Newcomer
Joined
Apr 7, 2010
Messages
18
Trophies
1
XP
56
Country
United States
jjjewel said:
Since someone asked me about what to do next after those steps, I'll explain here.
Anyway, this is not the perfect way of the rom hacking process. It's more of a
manual insertion but this should be enough for a beginner to get some idea about
game translation. After this, if you have time to learn some programming, you can
write your own programs to make auto-insertion and stuff.
biggrin.gif

(I don't know why I ended up writing a very looooong explanation. I'll put it in
a spoiler tag then. It's really long.
tongue.gif
)

(Con't from previous post)

7- Assuming you already downloaded my extracted scripts from "scripts in /script
folder" I posted earlier. Unzip and open the file [email protected]. You should see
something like this;

004E0C,28,TEXT,????????????
004E60,08,CTRL,??
004EA0,08,CTRL,???
005748,04,TEXT,?
005A70,16,NAME,???#Name[1]
005AAC,24,TEXT,????????……?
005B00,44,TEXT,?????????????????????
005B68,28,TEXT,?????????????
005BB0,32,TEXT,??????????????


8- Now, back to step 6 where you should see some Japanese text in the file if you
did everything correctly. Locate the address 004E0C in CrystalTile2 program. (It
will be shown as 00004E00 on the left column with label "address" on the top. You
can use Properties tab on the left and type "4E0C" at offset too. It will move to
the main line which is "4E00".) At address 4E0C, look at one row below it ("4E1C")
and you should see the Japanese script "????????????" which is the same as
the extracted text. (I explained about this in Negima's thread too. So you can
look there if you need more info.)


9- Now it's time to make your translation if you haven't done that. From the
extracted scripts, the second number is the limit for your English alphabets &
punctuations. So the first line "004E0C,28,TEXT,????????????" has 28 as a
text limit. You can't translate it to "Do you want to skip the prologue?" because it
will be longer than 28 characters. So you have to shorten the translation to "Want
to skip the prologue?" (26 chars) or "Skip the prologue?" (18 chars). Note that all
spaces and punctuations also counted as your characters and all must be the English
alphabets and punctuations, not the Japanese ones. (Ex. You must use "." not "?".)

Anyway, if you really want to use the punctuations or anything in Japanese font,
like ?these Japanese parentheses? , you will have to count each of them as 2
characters.

9.1-- This game uses different text spacing for the lines I labeled with "NAME". So
I'd suggest that you don't translate them for now. Just leave them in Japanese. You
can experiment how many characters you can put in the "NAME" text later. (If the
text for "NAME" is too long, your game will freeze.)

9.2-- So basically, try translating the lines with labels "TEXT" and "CTRL".

9.3-- This line "005B00,44,TEXT,?????????????????????" seems to allow 44
characters for your translation. But the actual dialog box in the game can only hold
40 characters per line. So try not to make anything longer than 40 chars.

9.4-- If you're familiar with spreadsheet program, you can use "Len" function to
count the characters for your translated text.

9.5-- There are also some blank text like "005748,04,TEXT, ". Just leave it like that.
You don't have to do anything with it.


10- Now if you have your translation in a text file, copy and paste each line to its
corresponding location in CrystalTile2. (Make sure the translation does not exceed
the character limit.) See step 8- if you already forget how to look for the location.

10.1-- Sometimes when your translation is shorter than the original Japanese script,
you will need to replace the rest of the Japanese script with blank bytes. Just type
00 in the code table. (You need to type in the code part in the middle of
Crystaltile2 program, not the text part on the right.)


11- After you tried pasting maybe a few lines of translations, save or save as
your 100-1-0.DAT@ file.

12- Use BatchLZ77 V.1.3 to compress the file you just saved. (At Options, select
LZ77 Type 11.)

13- Locate the 100-1-0.DAT@ file you got from step 2- and replace it with this new
file you just compressed in step 12-.

14- Use DSLazy to pack your game file and test play it.

(Okay, again, this is not a good practice for rom hacking. Many hackers don't
recommend doing manual insertion like this, but I think it's way easier than
learning how to program or use other programs to do it.
tongue.gif
)


Okay, one thing to think about here? The menus. I think they're images, so umm... How would I work with those?
 
  • Like
Reactions: Willhart

ore0

Well-Known Member
Member
Joined
Apr 8, 2010
Messages
168
Trophies
0
Location
New York
Website
Visit site
XP
119
Country
United States
Nimue said:
Okay, one thing to think about here? The menus. I think they're images, so umm... How would I work with those?
I think I might be able to help, but I don't have much experience... The way I would do it is use whatever program you use to see the game files, and look for the one with the menu images. Extract them, edit, and reinsert.
 

jjjewel

Well-Known Member
Member
Joined
Dec 17, 2009
Messages
1,010
Trophies
0
XP
522
Country
United States
Nimue said:
Okay, one thing to think about here? The menus. I think they're images, so umm... How would I work with those?

I'm not very good with graphics, especially graphics from idea factory games. (They always have some animated menus that I think difficult to extract.) Anyway, as far as I checked, the graphic parts aren't compressed. I think any programs that can view Tiles will work. (CrystalTile2 itself can view Tiles, and there are other programs like TileMolester and stuff.)



Also, here's a list of other files that contain text. (They are not the main dialogs, mostly some extra stuff.) Their script systems are different from the main dialog scripts. You will probably need help for text extraction/insertion for these later.

- Arm9.bin
Quizzes, and other system save/load stuff.

- emaki_script.bin
Short stories

- kougunroku.bin
Synopses

- oboegaki.bin
Glossaries
 

servant

Well-Known Member
Member
Joined
Jan 30, 2012
Messages
172
Trophies
0
Age
31
XP
115
Country
United States
:lol: yeah srry bout that, didn't want to necrobump but I thought it was necessary.
I was just searching around the net and found no real rason as to why the project was was abandoned, so yeah.
So judging from what I've seen it was a lack of hacking expertise that caused this.
 
Status
Not open for further replies.

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Shubshub @ Shubshub: oshit its the real jdbye