Hi everyone,
Lately I've been playing around with Super Robot Wars MX Portable for a potential translation. I managed to find the game's script and other text using MadEdit and used Cartographer to dump them. Playing with the game's files, I discovered it only supports full width Shift-JIS encoding. I learned a bit about ASM from the scant amount of PSP hacking documentation available and have been playing around with PPSSPP's disassembly and GE debugger to see how I might go about changing the width of the in-game font so it could support a thinner English font.
This is how the game's text normally looks.
I used the GE debugger to find out where the width of each character is written and set a breakpoint accordingly, which is at 08806618. The width of the first character, as shown in the memory view, is 66. At 0x08806614, the game takes the value of t2, adds it to a1, and stores it in t0. From playing around with the RAM, I found out that adding 8 bytes to 08806618 shrinks the font width by half, so my goal is to find out how to achieve this.
Just to play around and see what would happen if hardcoded this increase in myself, I changed the opcode from addu to addiu and changed t2 to 0x8.
This was the result. The characters shrink in width, but the spacing is the same. I thought it was a good start, until I entered battle to see if anything broke because of what I changed.
Sure enough, unit health bars are busted and the portrait and text boxes at the bottom suddenly shift to the left.
If you couldn't tell, I'm a total beginner with ASM and only really understand playing around which values to change, not so much where to appropriately change them. I was wondering if anyone had some tips on where to go from here. Obviously I need to nail down where the change in spacing of characters occurs, but more importantly I want to be able to shrink the text without breaking health bars and other textures. I have a feel confident about the actual translation part, but I don't want to move forward with that until I square this away. Any help would be appreciated!
Lately I've been playing around with Super Robot Wars MX Portable for a potential translation. I managed to find the game's script and other text using MadEdit and used Cartographer to dump them. Playing with the game's files, I discovered it only supports full width Shift-JIS encoding. I learned a bit about ASM from the scant amount of PSP hacking documentation available and have been playing around with PPSSPP's disassembly and GE debugger to see how I might go about changing the width of the in-game font so it could support a thinner English font.
This is how the game's text normally looks.
I used the GE debugger to find out where the width of each character is written and set a breakpoint accordingly, which is at 08806618. The width of the first character, as shown in the memory view, is 66. At 0x08806614, the game takes the value of t2, adds it to a1, and stores it in t0. From playing around with the RAM, I found out that adding 8 bytes to 08806618 shrinks the font width by half, so my goal is to find out how to achieve this.
Just to play around and see what would happen if hardcoded this increase in myself, I changed the opcode from addu to addiu and changed t2 to 0x8.
This was the result. The characters shrink in width, but the spacing is the same. I thought it was a good start, until I entered battle to see if anything broke because of what I changed.
Sure enough, unit health bars are busted and the portrait and text boxes at the bottom suddenly shift to the left.
If you couldn't tell, I'm a total beginner with ASM and only really understand playing around which values to change, not so much where to appropriately change them. I was wondering if anyone had some tips on where to go from here. Obviously I need to nail down where the change in spacing of characters occurs, but more importantly I want to be able to shrink the text without breaking health bars and other textures. I have a feel confident about the actual translation part, but I don't want to move forward with that until I square this away. Any help would be appreciated!