Author
|
Topic: Phoenix Wright NDS Script to GBA: Last Updated Sept. 11, 2008 (Read 4 times)
|
cocomonk22
Guest
|
|
« on: February 22, 2008, 07:11:57 pm » |
|
GS3 Translation as of September 11th: http://PW.scorpei.com/ips/GS3_English00h3.ips Translated all of case 2, needs to be tested for bugs, freezes, and other overflow errors. Also, this project now has a wiki that can be found here: http://PW.scorpei.comThis project aims to take the script from the English Phoenix Wright games 1-3 for NDS and put them into the Japanese Gyakuten Saiban games 1-3 for GBA, creating an English translation for three GBA games. with the stuff at come back court (gs3 translation) it could be not so difficult. You have to add a variable width font hack, to add English letters at the end of the Japanese font, and to change scriptutils.py to encode any character with the given offset. Since the ASM font hack might be tedious if you don’t have any hacking background, I can say that it could range from one afternoon to two weeks :p. If anyone has any familiarity with hacking roms and is interested in this project, please consider helping, as my knowledge in this area is minimal so far. Tools needed: Comeback Courtroom tools ( http://sourceforge.net/project/showfiles.php?group_id=109053&package_id=136688&release_id=500989) Phoenix Wright Script Editor ( http://www.romhacking.net/utils/419/) ============================== To start off, I have extracted the English scripts from PW3 and the Japanese script from GS3. Since the CC3 tool already includes VWF, it should be the quickest and easiest way to start testing this project. Since two different tools were used, the scripts are not formatted the same. For example, the file containing the English trans uses <bgcolor:256,0,31> and <wait:10> while the Japanese script shows <bgcolor 256 0 31> and <wait_noanim 10>. I could just replace : and , with spaces, but doing so would effect normal spoken text as well. An alternative would be to modify the Phoenix Wright Script Editor to format output so that such commands as <wait:10> would instead be output as <wait_noanim 10> so it would be in the correct format for the Comeback Court 3 editor. PWSE is written in Python and includes the source, so it should be easy enough for someone who knows python, hopefully. Edit: Or, a text editor that can do renames such as [ ] to @PTR or <fademusic:*,*> to <fademusic * *>. Scripts of case 1 (items ending in translated are the English, the others are the Japanese version as formatted for CC3, which will be used to put the text into the gba version): http://www.4shared.com/file/38659382/abbabd6b/gs3-1.html============================== Edit 2: I've created a small program that does the conversion of the control codes in the scripts created by PWSE to the formatting of the control codes used in the comebackcourt tool. It can output script, convert to similar codes as used with comebackcourt, and change replace Japanese text with a file with an English file created after using the output script function. You can get it here: http://pw.scorpei.com/aascriptreader.zip============================== Edit 3: After modifying aascriptreader a few times to reduce the errors and testing the rom, I have found that simply substituting the cc files will NOT work since the DS and GBA games use different argument values. However, it would still be possible to use aascriptreader's "script output" function to remove control codes only leaving in dialogue separated by line, which could then be substituted to replace the Japanese text by adding a new function that checks for where '<' does not occur after '>'. That would work assuming that the Japanese and English use the same amount of dialogue separations (hopefully), but it would still require modification of the speed arguments which are not the same for Japanese and English versions because of the differing length between number of characters of each. ============================== Edit 4: I attempted to substitute English directly into the Japanese. Unfortunately, the English and Japanese text does not line up properly, so it will be a bit more complicated than I had hoped. I'll try to go back to changing PWSE scripts to cc scripts, but it will be difficult as the control codes of cc use hexadecimal and values may not line up correctly.
|
|
« Last Edit: March 06, 2009, 04:28:52 am by cocomonk22 »
|
|
|
|
cocomonk22
Guest
|
|
« Reply #1 on: February 22, 2008, 09:38:44 pm » |
|
Sorry, double-post removed.
|
|
« Last Edit: February 23, 2008, 02:08:40 am by cocomonk22 »
|
|
|
|
Suzaku
Guest
|
|
« Reply #2 on: February 23, 2008, 12:10:42 am » |
|
Don't double-post. There's an Edit button. :police:
|
|
|
|
andwhyisit
Guest
|
|
« Reply #3 on: February 26, 2008, 08:50:40 pm » |
|
This is the best idea ever. I have been waiting for this for a long time. Good luck.
|
|
|
|
KaioShin
Guest
|
|
« Reply #4 on: February 27, 2008, 03:35:43 am » |
|
This is the best idea ever.
Why? I'm a Phoenix Wright maniac myself, but I still don't get the point. Don't let this distract you from your project, I'm just curious.
|
|
|
|
akadewboy
Guest
|
|
« Reply #5 on: February 27, 2008, 01:40:22 pm » |
|
It gives people that don't have the DS a chance to play them, I've always wondered what all the hype was about this game. I don't have a DS, but I can play GBA games on my PSP
|
|
« Last Edit: February 27, 2008, 02:15:30 pm by akadewboy »
|
|
|
|
Ryusui
Guest
|
|
« Reply #6 on: February 27, 2008, 02:45:22 pm » |
|
Just remember, the DS version of the first game has an extra case, and it ties into the fourth game.
|
|
|
|
cocomonk22
Guest
|
|
« Reply #7 on: February 29, 2008, 05:31:21 am » |
|
OK, actually, after reading through the comebackcourt tool's guidelines, it looks like the method I was using to add in the translated text was wrong, and the real way is actually simpler than I thought, and would not require me having to modify any of the control codes such as animations and such that are not related to the text (I wasn't supposed to replace the Japanese text, I was supposed to put the English into the [] to use the VWF). I was able to get the text to fit the right amount of [], at least for the first section, however, I have run into a bigger problem: the GBA version only uses two lines of text per text box instead of three lines as in the DS version! The comebackcourt tool is using an Arial 13 font on two rows. Somehow, this needs to be changed to a shorter font that uses three rows, but I have no knowledge of how to do that at all, so until someone else has a solution to fix this, I'm not sure how I'll be able to progress in this project. GBA on the left, DS on the right (notice how the GBA version cuts off the last line of text):
|
|
|
|
Ryusui
Guest
|
|
« Reply #8 on: February 29, 2008, 02:13:34 pm » |
|
You have two options.
1. Reformat the page breaks in the English script. You might also want to add the DS version's font to the GBA game, for consistency's sake, since horizontal screen space doesn't seem to be an issue.
2. Reformat the entire script so that the same amount of text fits in each text box. You may want to use a narrower font for this purpose.
As for "use a shorter font so you can fit three lines of text in a single textbox"...basically, you can't. Technically you can, but this is on the "metric buttload" end of the "time, effort and cursing" scale. The textbox appears to have four tiles, or 32 pixels, worth of vertical space: changing the code to use, say, an 8x10 VWF instead of an 8x16 would take an inordinate amount of time, knowhow and bugtesting (since you'd be splitting characters across tiles vertically as well as horizontally). Even an 8x8 VWF would take some effort, and in either case you'd be dealing with some very, very tiny print.
|
|
|
|
cocomonk22
Guest
|
|
« Reply #9 on: February 29, 2008, 03:48:03 pm » |
|
I'll try your first option. After doing a quick test, I found that, for lines with two <b>, if I change the second one to a <p>, it will load the third line in a new text box using the same []:
[=14%3/4I'm telling you for your sake.=10<b>/4If you continue to see her,=0a<p>it's going to be bad news.=50].
However, since this is the intro scene, the <p> should instead be <nextpage_nobutton>, as <p> waits for user input before proceeding to the next screen.
One problem I forgot to mention has to do with the wait speeds and timing (=xx,/x,possibly *x as well). I've converted them to hexadecimal format to match the GBA version, but the timing still seems to be off. I think the problem is that not all of the wait and speed arguments are for the text only, so when I divide the English to include such arguments, I get some that are for non-text related actions as well as the ones that affect the text. The problem could also be that PWSE might be using arguments in reverse order (00 is slow, ff is fast, or the other way around).
|
|
|
|
andwhyisit
Guest
|
|
« Reply #10 on: February 29, 2008, 08:46:02 pm » |
|
It gives people that don't have the DS a chance to play them, I've always wondered what all the hype was about this game. I don't have a DS, but I can play GBA games on my PSP That is exactly my reason as well.
|
|
|
|
cocomonk22
Guest
|
|
« Reply #11 on: March 01, 2008, 04:14:45 am » |
|
After some more modifications with my script reader, 2 of the the three files for case 1 were replaced with English almost perfectly! The only parts missing were the answers that the player selects from when asked a question such as "Yes,No" or answers to the judge's questions. The reason those parts were missing is because the DS version uses graphics for those parts rather than text: Since these occurrences are few, it shouldn't be too difficult to write in the answers manually. ----- Edit: Added in the answers: ----- For the third part of the case, there are some strange pointers in both the GBA and DS scripts. If I can figure out how to match the pointers in both, it should be easy to complete the case 1 script. There are also some problems in the script with the wrong character's voice moving when someone else is speaking or the wrong name label being shown when someone is talking: This is a bit more complicated to fix, since the <name:> and <person:> controlcodes are different between the GBA and DS versions, and so would require making a list of all the different name codes and all the different person codes and having them converted to GBA values. I'm not sure of an easy way to go through with that. ----------------------------------------- UPDATE: I've finished translating case 1, part of case 2, and case 4. This is text only, with the exception of the graphics that were modified by the ComebackCourt guys, since I don't know how to modify graphics. Let me know of any problems you find in the game. The reason on these parts of the cases are translated is because the hackall.bat file used to put the translation in the game only has instructions for those parts, and I'm not sure how to find out the correct hex values and rom addresses. Here's an excerpt: echo Inserting Case 1-1 script... rem cctools\\ccscript -pack -dmp insertion_temp\\case1-1.bin -txt extracted\\case1-1.cc cctools\\ccscript -pack -dmp insertion_temp\\case1-1.bin -txt scripts\\case1-1-translated.cc cctools\\ccinsert -hex 0x00007a08 -rom CC3_English.gba -romaddr 0x00049B38 cctools\\ccinsert -lz77 -dmp insertion_temp\\case1-1.bin -rom CC3_English.gba -romaddr 0x007a0000 rem cctools\\ccinsert -lz77 -dmp insertion_temp\\case1-1.bin -rom CC3_English.gba -romaddr 0x006E5BC4
echo Inserting Case 1-2 script...
rem Unholy hack to circumvent RAM overflow cctools\\ccscript -pack -dmp insertion_temp\\case1-2.bin -txt scripts\\case1-2-translated.cc
cctools\\ccscript -pack -dmp insertion_temp\\case1-2-overflow.bin -txt scripts\\case1-2-overflow.cc cctools\\ccinsert -dmp insertion_temp\\case1-2-overflow.bin -rom CC3_English.gba -romaddr 0x007d0000
rem 087d0000 - 02011FC0 = 67be040 rem + 0x2F0 = 067be330 <-> 30e37b06 rem at addr 0x168 cctools\\ccinsert -hex 0x30e37b06 -rom insertion_temp\\case1-2.bin -romaddr 0x00000168
cctools\\ccinsert -hex 0x00007c08 -rom CC3_English.gba -romaddr 0x00049B3C cctools\\ccinsert -lz77 -dmp insertion_temp\\case1-2.bin -rom CC3_English.gba -romaddr 0x007c0000
echo Inserting Case 1-3 script... cctools\\ccscript -pack -dmp insertion_temp\\case1-3.bin -txt scripts\\case1-3-translated.cc cctools\\ccinsert -hex 0x00007e08 -rom CC3_English.gba -romaddr 0x0001EE9C cctools\\ccinsert -lz77 -dmp insertion_temp\\case1-3.bin -rom CC3_English.gba -romaddr 0x007e0000
echo Inserting Case 2-1 script... cctools\\ccscript -pack -dmp insertion_temp\\case2-1.bin -txt scripts\\case2-1-preview.cc cctools\\ccinsert -lz77 -dmp insertion_temp\\case2-1.bin -rom CC3_English.gba -romaddr 0x006F92E8
echo Inserting Case 2-1b script... cctools\\ccscript -pack -dmp insertion_temp\\case2-1b.bin -txt scripts\\case2-1b-translated.cc cctools\\ccinsert -hex 0x00007b08 -rom CC3_English.gba -romaddr 0x0001EECC cctools\\ccinsert -lz77 -dmp insertion_temp\\case2-1b.bin -rom CC3_English.gba -romaddr 0x007b0000
echo Inserting Case 4-1 script... cctools\\ccscript -pack -dmp insertion_temp\\case4-1.bin -txt scripts\\case4-1-translated.cc cctools\\ccinsert -lz77 -dmp insertion_temp\\case4-1.bin -rom CC3_English.gba -romaddr 0x0077bf54
echo Inserting Case 4-2 script... cctools\\ccscript -pack -dmp insertion_temp\\case4-2.bin -txt scripts\\case4-2-translated.cc cctools\\ccinsert -hex 0x00007908 -rom CC3_English.gba -romaddr 0x00049b6c cctools\\ccinsert -lz77 -dmp insertion_temp\\case4-2.bin -rom CC3_English.gba -romaddr 0x00790000 Anyone know how to get the values for -hex and the first -romaddr? I know the second -romaddr value is the original location of the script in the rom.
|
|
« Last Edit: March 02, 2008, 07:42:53 pm by cocomonk22 »
|
|
|
|
ZereoX
Guest
|
|
« Reply #12 on: March 02, 2008, 08:46:37 am » |
|
cocomonk22-- Your my god. Finally someone that does it, even Broco(ComebackCourt) stop his translation.I will be glad to try it out. Also the link is miswritten so here: www.4shared.com/file/39485854/a2db5844/GS3_English00a.html%22
|
|
« Last Edit: March 02, 2008, 08:52:03 am by ZereoX »
|
|
|
|
Tauwasser
Guest
|
|
« Reply #13 on: March 02, 2008, 09:49:23 am » |
|
Did you think about the court cases? How would you be able to press or present evidence on the right statement if you have maybe more than one textbox for every original one textbox :|?
cYa,
Tauwasser
|
|
|
|
cocomonk22
Guest
|
|
« Reply #14 on: March 02, 2008, 03:17:04 pm » |
|
Check the first post for the newest translation patch. Did you think about the court cases? How would you be able to press or present evidence on the right statement if you have maybe more than one textbox for every original one textbox :|?
cYa,
Tauwasser
I did think about the court cases, actually, but I haven't tested how the testimony works yet. What I could do is have the testimony use a <nextpage_nobutton> at the part where it goes to the third line, or someone could change the font. I could also try removing all the <b>, but that may present formatting problems elsewhere. Edit: It actually seems to work well. Here's an example of a regular two line testimony: Here's a three line testimony divided into two pages. The first two lines (Notice the down arrow to show that it continues; also you cannot navigate testimonies, press, or present): The last line (Now you can press or present. You can also navigate testimony now): An attempt to put all three lines on two lines (The last line does not fit completely on the screen): I think I'll keep it the way it is for now rather than try to compress it to two lines.
|
|
« Last Edit: March 02, 2008, 07:44:45 pm by cocomonk22 »
|
|
|
|
|