+  RHDN Forum Archive
|-+  Romhacking
| |-+  ROM Hacking Discussion
| | |-+  Need help with translating texts in arm9.bin (NDS)
Pages: [1] 2
Author Topic: Need help with translating texts in arm9.bin (NDS)  (Read 2 times)
psycoblaster
Guest
« on: July 14, 2008, 04:36:01 am »

I'm planning on restarting the Tales of Innocence translation, because all I know about ROM hacking is grabbing a hex editor and changing the text...
I've heard that I should use IDA Pro, so I got it. (not the trial)
If anyone can help me, I would be glad...
I want to edit the text with text longer than the original Japanese.
Thanks in advance  Smiley
KaioShin
Guest
« Reply #1 on: July 14, 2008, 04:55:36 am »

IDA won't really help you unless you already know ASM. Since you just want to learn it it will absolutely overwhelm you with functions and options. It also won't help you understand what code does, it'll just throw the code at you. In a debugger you can follow the code and see for yourself what it does - invaluable to learn the mechanics.

What you need to get is the debugger version of no$GBA. It costs 15$ and is nowhere available online like IDA, don't bother searching. Unfortunately you can't currently buy it either since the author vanished from the earth. Your only chance is propably to learn assembly on another system like the SNES first so you'll have less trouble with IDA.
psycoblaster
Guest
« Reply #2 on: July 14, 2008, 05:15:13 am »

First, sorry for posting in the wrong section....
So if I can't get the debug version, the only choice is to learn assembly?
« Last Edit: July 14, 2008, 05:24:08 am by psycoblaster »
KaioShin
Guest
« Reply #3 on: July 14, 2008, 05:46:51 am »

You need to learn assembly with the debugger version too - it just helps making it much easier. There is no way around learning Assembly for a decent RPG translation.
DarthNemesis
Guest
« Reply #4 on: July 14, 2008, 06:43:42 am »

Nah, you don't need to learn assembly just to rename the items/enemies/whatever in the arm9. Just find the pointer table(s) and update the pointers to use the new addresses. I wrote a very simple program to do this for Disgaea that could probably be adapted for TOI with minimal effort. You'd just have to make sure that the average length of your new names doesn't exceed that of the Japanese names, or you'll run out of space. Adding support for single-byte encoding would help in that regard, but that's where assembly would come into play.
Ryusui
Guest
« Reply #5 on: July 14, 2008, 02:05:45 pm »

Quote from: DarthNemesis on July 14, 2008, 06:43:42 am
Nah, you don't need to learn assembly just to rename the items/enemies/whatever in the arm9. Just find the pointer table(s) and update the pointers to use the new addresses. I wrote a very simple program to do this for Disgaea that could probably be adapted for TOI with minimal effort. You'd just have to make sure that the average length of your new names doesn't exceed that of the Japanese names, or you'll run out of space. Adding support for single-byte encoding would help in that regard, but that's where assembly would come into play.

Not necessarily. Death Note: The Kira Game uses the entire S-JIS charset, including single-byte ASCII, so it depends. Your best shot is to just insert some ASCII text and see if it displays properly. If not, then you have ASM work to do.
DarthNemesis
Guest
« Reply #6 on: July 14, 2008, 07:50:35 pm »

Quote from: Ryusui on July 14, 2008, 02:05:45 pm
Not necessarily. Death Note: The Kira Game uses the entire S-JIS charset, including single-byte ASCII, so it depends. Your best shot is to just insert some ASCII text and see if it displays properly. If not, then you have ASM work to do.
I said that because I tried it in the game before posting :happy:
Rearranging pointers worked fine, but ASCII didn't show up.
Ryusui
Guest
« Reply #7 on: July 14, 2008, 08:36:50 pm »

Well, open foot insert mouth. ^_^;
psycoblaster
Guest
« Reply #8 on: July 15, 2008, 04:53:29 am »

Ok. So about learning assembly, I have to learn the whole thing as if learning a new programming language, or is there just some places where I need "study" in?
@DarthNemesis
What "type" of pointer table did Disgaea have?
Want to see if I can find some pointers in the arm9.bin...

And also, I want to know how to change the font size... I've found the fonts in NFTR format and was able to see them.
« Last Edit: July 15, 2008, 04:58:56 am by psycoblaster »
DarthNemesis
Guest
« Reply #9 on: July 15, 2008, 05:49:29 am »

Quote from: psycoblaster on July 15, 2008, 04:53:29 am
Want to see if I can find some pointers in the arm9.bin...
Easiest way to find them?
1. Pick an item name to search for - アップルグミ
2. Find the address where it's stored - 0x088A2C
3. Reverse the bytes of the address - 2C8A08
4. Find the address where that's stored - 0x07492C

If all goes well, you're looking at the pointer table.
Ryusui
Guest
« Reply #10 on: July 15, 2008, 10:22:53 pm »

Quote from: psycoblaster on July 15, 2008, 04:53:29 am
And also, I want to know how to change the font size... I've found the fonts in NFTR format and was able to see them.

Again: no clue if my experience with Death Note: The Kira Game will help, but look at the end of the font data and see if you can't find the width table. Each character gets three bytes: the left margin, the actual character width and the right margin. Changing these will change how each individual character is printed: in short, by modifying them, you can not only get a narrower font, but a proportional one at that (i.e. VWF). The problem is, if any built-in formatting functions expect text to be monospace (e.g. the centering routine in Death Note: The Kira Game), fixing them is probably going to take some tricky ASM hacking.
psycoblaster
Guest
« Reply #11 on: July 16, 2008, 03:23:30 am »

@DarthNemesis
I've done what you did and I have found them Cheesy
but are these pointers "in order" as the texts in arm9 binary???
Or are they in the order of how they appear in game, or just in any random order???
(well it's not that important...)
now about ASM
i've heard that each game system has different type of coding... So as others say, when I want to do some ASM hacking for DS, I should start out with something easier and then later move onto the DS, correct?
then what site should I look at and would I start out with something like the NES?
« Last Edit: July 16, 2008, 04:01:05 am by psycoblaster »
KC
Guest
« Reply #12 on: July 16, 2008, 04:00:38 am »

They are stored in whatever order the compiler stores them.
Be aware, though, that these pointers point to ram locations, and not file locations. So you have to calculate a bit more for overlays.
psycoblaster
Guest
« Reply #13 on: July 16, 2008, 04:04:43 am »

Quote from: KC on July 16, 2008, 04:00:38 am
They are stored in whatever order the compiler stores them.
Be aware, though, that these pointers point to ram locations, and not file locations. So you have to calculate a bit more for overlays.
If I have understood DarthNemesis correctly, the pointers that I have found should all point to the texts in the arm9 binary...
DarthNemesis
Guest
« Reply #14 on: July 16, 2008, 04:19:42 am »

Quote from: psycoblaster on July 16, 2008, 04:04:43 am
If I have understood DarthNemesis correctly, the pointers that I have found should all point to the texts in the arm9 binary...
I gave you instructions for the easiest case, which is pointers inside arm9 to arm9. There are also some strings in the overlay_000#.bin files, which probably have their own pointers, but the pointers would not start counting from the beginning of the file in that case, since those files are "overlaid" over a certain location in memory that probably doesn't start at 0. Because of that, you may have to subtract a certain value from each pointer in the overlay_0002.bin file in order to get the correct address of a string.
Pages: [1] 2  


Powered by SMF 1.1.4 | SMF © 2006-2007, Simple Machines LLC