Hacking [PSP] La Pucelle Ragnarok Translation

Gaming4Ever

Banned!
Banned
Joined
May 28, 2014
Messages
486
Trophies
0
Age
43
XP
136
Country
United States
THX a Bunch ChepChep really loving all the Updates on this.....Been slowly advancing and loving every minute of it hopefully we get some more Progress on PKP :yaypsp:
 

Shinon

Well-Known Member
Member
Joined
Jul 30, 2014
Messages
106
Trophies
0
Age
26
XP
182
Country
Malaysia
Why is it there's only audio for the first dialog in most conversations in the game?
and translate the system language? the home menu is still in japanese
 

Cyan

GBATemp's lurking knight
Former Staff
Joined
Oct 27, 2002
Messages
23,749
Trophies
4
Age
46
Location
Engine room, learning
XP
15,662
Country
France
When playing in japanese, all the text fit in a single "dialog box", so audio is span over a single box.
If you press O it skip the box and also the audio to play the next one.
It would need more hack to prevent the audio cutting when pressing O if there are more text box for the same conversation.

I don't know if the home menu is part of the game, it's maybe dependent to the PSP firmware detecting it's a japanese game and using japanese menu.
Same for the Save menu.

If there's a bit determining the region, maybe it could be patched?
 

ChepChep

Well-Known Member
Member
Joined
Feb 9, 2011
Messages
611
Trophies
0
XP
876
Country
United States
I have tried figuring out O button issue and it is beyond my ability at this point. Also the home menu as save screen is the firmware detecting the the japanese game and displaying the correct language. I have not figure out how to get it in english but it should be possible to trick the firmware to display english.
 

Cyan

GBATemp's lurking knight
Former Staff
Joined
Oct 27, 2002
Messages
23,749
Trophies
4
Age
46
Location
Engine room, learning
XP
15,662
Country
France
I'm still trying to beat the last chapter...
I don't have any character left except the fake/back to Lv1 princess. (I don't know where that character comes from, a bug on the bonus chapter?)
The ennemies are really strong and I'm killed in two turns, so I'm making a looot of leveling with captured enemies (again ;__; Why my trained characters are not with me?)

about the save menu, it seems if you patch the language detection, only the "Load/Back/Enter/Load Completed/Saved/Exit without saving?" will be translated.
All the rest of the text related to the story progress needs to be translated manually, so it should be somewhere in the game, do you know where it's located?
Like "Level" "Chapter", chapter name, etc.

Stormyu can help you with setting the Home Menu and Save Menu detection to english.
 

ChepChep

Well-Known Member
Member
Joined
Feb 9, 2011
Messages
611
Trophies
0
XP
876
Country
United States
Cyan,

Looking at the thread I think I have an idea of what needs to be done to translate to English. I am learning more about how to do the ASM and use the PPSSPP debugger and RAM dumper. I will look into trying to fix this for LPR and PKP.

-ChepChep
 

Cyan

GBATemp's lurking knight
Former Staff
Joined
Oct 27, 2002
Messages
23,749
Trophies
4
Age
46
Location
Engine room, learning
XP
15,662
Country
France
Stormyu explained to me that I need to use ppsspp debugger, search for the Function zz_sceUtilitySavedataInitStart() (at the bottom of the function list)
From there, we can follow the ASM, but I don't understand ASM so I only guess from here.

I think there's two possibilities:
- Hack the function itself to always return english. (require ASM programming, which I don't know)
or
- Find the memory containing the arguments passed to the function and edit the language in the DialogCommon.


He will show me next Monday how to really do it.
But you know better how to hack the game than me, I just wanted to learn new things :)
 

JamRules

.....
Member
Joined
Jan 9, 2014
Messages
527
Trophies
1
XP
2,204
Country
United States
If you want the home menu in English you might want to look into sceImposeSetLanguageMode as well as sceUtilitySavedataInitStart

http://psp.jim.sh/pspsdk-doc/pspimpose__driver_8h.html#a1858adc7ea1ccad5ff3b356ed5b1c3c0

if I remember correctly 0=Japanese, 1=English

Edit: screenshot for sceUtilitySavedataInitStart if it helps. 0x4 from register a0 should be 0x01, should be able to use a breakpoint to find the save

save_edit.png
 

ChepChep

Well-Known Member
Member
Joined
Feb 9, 2011
Messages
611
Trophies
0
XP
876
Country
United States
I have the home menu in english in the unreleased patch. Someone a few months ago help me with finding that one.
 

Cyan

GBATemp's lurking knight
Former Staff
Joined
Oct 27, 2002
Messages
23,749
Trophies
4
Age
46
Location
Engine room, learning
XP
15,662
Country
France
From the function name, how to do you find the address you need to edit?

You have:
zz_sceUtilitySavedataInitStart > 0x08994558 > Register a0
Why a0 ? how do you know this is the one with the "data" struct?

this is what I found:
226041-La_Pucelle_Hack01.png
so I replace 0x08ACB650 to 0x01 ?

But this is the RAM address, not a file position I need to edit in the ISO, so there's probably something I need to program to force this value to 1?
Or find the place in the ISO where this value appear?

I can edit the RAM address in ppsspp, but it's automatically setting the interface to the language defined in the emulator's option, so I don't see any differences. (or it's not the correct place to edit)
 

JamRules

.....
Member
Joined
Jan 9, 2014
Messages
527
Trophies
1
XP
2,204
Country
United States
The function is a syscall so the input register should always be the same.
And yes replacing 0x08ACB650 is correct.

To change it you need to add a write breakpoint for 0x08ACB650, size 4.
There should be an sw/sb instruction (for example Sol Trigger has this "sw zero, 0x4(a0)" )
(Sorry, don't have a copy of the game so can't help with specifics)

Once you've found the instruction you need to save the value as 1, may be difficult depending on the asm.
You'll then need to find it in eboot.bin and hex-edit it.
 

Cyan

GBATemp's lurking knight
Former Staff
Joined
Oct 27, 2002
Messages
23,749
Trophies
4
Age
46
Location
Engine room, learning
XP
15,662
Country
France
Thanks for your help :)
This is the first time I try an emulator's debugger, so I'm discovering possibilities and menus.

I added the break point 0x08ACB650, size 4, read/write, but it doesn't hit it when I go to the save menu.
 

JamRules

.....
Member
Joined
Jan 9, 2014
Messages
527
Trophies
1
XP
2,204
Country
United States
Thanks for your help :)
This is the first time I try an emulator's debugger, so I'm discovering possibilities and menus.

I added the break point 0x08ACB650, size 4, read/write, but it doesn't hit it when I go to the save menu.

Strange, It should be hit. Unless the value is loaded via IORead but I would think that unlikely.

Maybe use Emulation/Reset since it may be saved ready. You should at least be able to observe the value changing
 

Cyan

GBATemp's lurking knight
Former Staff
Joined
Oct 27, 2002
Messages
23,749
Trophies
4
Age
46
Location
Engine room, learning
XP
15,662
Country
France
ah yes, when reseting it's hit two times.
I see that this value is accessed only at launch (the game is checking Memory card...), not later while accessing save data.

That's interesting to do.
 

JamRules

.....
Member
Joined
Jan 9, 2014
Messages
527
Trophies
1
XP
2,204
Country
United States
ah yes, when reseting it's hit two times.
I see that this value is accessed only at launch (the game is checking Memory card...), not later while accessing save data.

You may have to change more than one location, each dialog will likely have it's own value.
So there may be separate values for each load and save.

when the break point hits zz_sceUtilitySavedataInitStart click RA under goto (or use step)
to find where the call is made from. Forget to mention earlier it's quite common for there to be separate dialog values for each call.

I suppose you could play through and list all the a0 values used
 

Cyan

GBATemp's lurking knight
Former Staff
Joined
Oct 27, 2002
Messages
23,749
Trophies
4
Age
46
Location
Engine room, learning
XP
15,662
Country
France
I found the ASM writing to 0x08ACB650
226047-La_Pucelle_Hack03.png

226049-La_Pucelle_Hack04.png


Can I add 4 bytes into eboot.bin or is there a checksum?
I think I need to convert

Address ASM Action Hex Value of ASM
088A4A70 lui v0,0x8AD ; set 0x08AD0000 into v0 // 0xAD08023C
088A4A74 sw zero,-0x49B0(v0) ; write zero to address v0-0x49BA (08ACB650) // 0x50B640AC


to:

insert4bytes li 0a,0x01 ; set 01 into a0 // 0x01000424
088A4A70 lui v0,0x8AD ; set 0x08AD0000 into v0 // 0xAD08023C
088A4A74 sw a0,-0x49B0(v0) ; write a0 to address v0-0x49BA (08ACB650) // 0x50B644AC


This is my first time reading/writing ASM.


But when I edit 0x50B644AC to 0x01 in PPSSPP RAM, I can't access save menu anymore, so it's maybe not the correct address to edit.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Xdqwerty @ Xdqwerty: @SylverReZ, unless you mean you are tired too +1