News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Show Posts

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.

Messages - Normmatt

Pages: 1 2 [3]
Personal Projects / Re: Bomberman Jetters (GBA) Translation
« on: May 25, 2011, 01:09:57 am »
I'm bumping this because I've finally had some time to work on it recently. I have finally finished my text previewer and auto formatting tool which will make testing out translations easier :)

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.

Programming / Re: armips assembler (v0.7c released!)
« on: February 01, 2011, 07:46:12 am »
Another bug to report.

Code: [Select]
.org 0x08FFFD00
;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]

bx      lr

If I remove the commented line it assembles fine but if its there armips seems to hang, I'm not sure why either its happened a few times now on various opcodes.

EDIT: Apparently if i change the ADD R0,#2 into two ADD r0,#1 with that STR uncommented it assembles fine, possibly some sort of weird alignment issue?

ROM Hacking Discussion / Re: Expanding the script
« on: January 19, 2011, 08:02:52 pm »
I just had a look into the game and it uses relative pointers for the main dialogue not standard GBA type pointers. The pointer table starts at 08051070 and by the looks of the text at 08756A08

It calculates it by doing this:
Code: [Select]
//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

Which basically means read 32bits from (stringID*2 + 08051070) then add that to 08756A08 to get the final string location.

I haven't found any way of switching between the english and japanese text yet and it doesnt look like it was ever programmed in so you'll probably need to extract the english dialogue and replace the japanese dialogue.

Personal Projects / Bomberman Jetters (GBA) Translation
« on: January 19, 2011, 03:11:02 am »
I have been working on this game for about two weeks now and it looks like the hacking work is mostly complete, however I have no played through the entire game to verify if I've missed anything.

As you can see from the pictures below a Variable Width Font has been inserted and it's working perfectly.

All the remains is the text so if anyone is up for translating the text for this game into english, There is approximately 320KB of text which includes control codes and some automated comments. The text is also split into multiple files based on the various pointer tables so the text in each file should all be related. Send me an email at if you're interested.

You can see the current status of the project along with all of the project files on github.

ROM Hacking Discussion / Re: Expanding the script
« on: January 19, 2011, 01:38:24 am »
Just put -$4000. The sample command files demonstrate this ability. ::)

Not in the current build in the Utilities section its not. Using minus in that version didn't work for me either hence my ugly work around.

ROM Hacking Discussion / Re: Expanding the script
« on: January 18, 2011, 12:57:52 am »
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.  :P

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).

Too work with GBA pointers in Cartographer i used "#BASE POINTER:      $F8000000" as a minus 0x08000000

ROM Hacking Discussion / Re: Expanding the script
« on: January 17, 2011, 06:35:52 am »
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

The translation is already in the game so the only hard part is dumping the japanese and english and replacing the japanese. Or better yet change the pointer to the japanese pointer table to the pointer to the english pointer table.

Programming / Re: armips assembler (v0.7c released!)
« on: December 29, 2010, 10:03:36 pm »
a few complaints for the arm support, you dont seem to support the pseudo opcode adr nor can i use pc relative addressing on ldr
for example:
ldr r1, label
label: .word 0

should convert the ldr into ldr r1, [r15,-4] but all i'm getting is errors. If you could fix that and add support for the adr opcode this would be perfect :)

EDIT: looks like i can make a quick little macro for adr
.macro adr,destReg,Address
   .if (here & 2) != 0
      add destReg, r15, (Address-here)-2
      add destReg, r15, (Address-here)

also looks like i fixed my problems with ldr

Pages: 1 2 [3]