I'm still looking for translators if anyone is interested PM me.
it wouldn't be nice to necro-bump this thread without some screens.
You can find some preliminary images of the translated intro scene here.
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
;LDRB R0, [R4,#6]
;ADDS R0, #1 ; patch this mother fucker for number of oam entries
ldr r0, [currentChar2]
ldrb r0, [r0]
STRB R0, [R4,#6]
MOV R0, #1
STRB R0, [R4,#1]
LDR R0, [R4,#0x4C]
ADD R0, #2
;STR R0, [R4,#0x4C]
//R3 is string id?
LDR R1, =unk_8051070
LSLS R0, R3, #2
ADDS R0, R0, R1
LDR R0, [R0]
LDR R1, =unk_8756A08
ADDS R0, R0, R1
Just put -$4000. The sample command files demonstrate this ability.
Wow, you are so lucky. The game you want to translate not only has an English version out on another system, but the version you want to hack has an English script in it already! Damn boy, I need your favorite numbers so I can go play the lottery.
They obviously planned an English release but it got canned. I feel your pain Arcadia453. So many games this has happened to, including mine.
I wonder though....perhaps your game has a pointer to a region (or script pointer)? Region, meaning country. If it does, all you have to do is find that single pointer and mess with the values until it changes the script to English. Resident Evil 2 for the PS1 was like this where it had both Japanese and English scripts. All I did was change 2 bytes and bam! I could switch from Japanese to English and vice versa without having to modify the script or its dialog pointers. This type of pointer can be a bitch to find though (at least for me it was). The only other game I found one like it was in X-men vs Street Fighter for the Saturn.
Do you know if Cartographer has a command like #BASE POINTER to subtract a value instead of adding? I need to do that for the game I'm working on and if it doesn't, it looks like I'll be on my way to the crazy bin. I don't see such a command in the readme, which tells me there isn't one but I wanted ask to make sure.It may be near the script, but it doesn't have to be.
You can say that again. the game I'm working one has pointers scattered in various ways. Some are underneath the text block (easy), some can be found by comparing the location of the text in the game and a save state and finding the difference in memory (not too hard), and some have pointers nowhere near the dialog or text block and are stored in a different format and require a different calculation (pain in the ass).
In hex I can actually see the English script, but I can't figure out how to switch from the Japanese one to the English one. How could I do that?
I've managed to make the Japanese script show English characters, but the problem is that it's too short for what I want to replace it with. I try to push everything back, but the text always starts in the same place, and I can't figure out where it's coming from. How can I fix that?
The answers to both your questions are in the same place.
This is first-timer stuff: what you're asking about is pointers. Usually, they're all gathered up together in one big table. Each pointer is a hex address indicating the start of a different string in the game's script. For a GBA game, finding them should be a simple matter of hex searching the address where one of the strings starts. GBA ROM addresses are offset by $08000000; i.e., if you're looking for a pointer to $158BA, it'll actually be $080158BA - and little-endian to boot (so it'll be stored as BA 58 01 08).
You can change 'em manually, but that's a one-way ticket to the crazy bin. Instead, you'll use a tool like Cartographer to dump the ROM, then format it so you can use a tool like Atlas to reinsert the script and modify the pointers as necessary. Do it right and the only hard part will be translation. :3