Editing Talk:PSP Emulation
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 175: | Line 175: | ||
0x04100010 - Get PGD data size | 0x04100010 - Get PGD data size | ||
</pre> | </pre> | ||
== TRANSLATOR_PATCH == | |||
What does the TRANSLATOR_PATCH is responsible for? Patching the PSP RAM, maybe? | |||
* Yeah, looks like it. Patch is done right before entering recompiler/emitter, right before mips code is read. Worth to add that patch seems to affect only code that gets recompiled, which mean no patches to data, only to code(?). --[[User:Kozarovv|Kozarovv]] ([[User talk:Kozarovv|talk]]) 17:45, 4 March 2023 (CET) | |||
** Looking for ways to fix the shitty Patapon 3. Patch (for PAL version) skips the sceIo functions to avoid loading the DATAMS.BND file from ms0:/ during the bootup. Of course it does not work on the PS3, in contrary to the PPSSPP. I do not have a time and wish to play with the EBOOT file encryption/decryption. --[[User:Agrippa|Agrippa]] ([[User talk:Agrippa|talk]]) 20:58, 10 March 2023 (CET) | |||
TRANSLATOR_PATCH[2] = { 08844B7C 08844B80 10000036 00A08821 } | |||
Looks like the pattern is wrong. I have tried various combinations with no luck for Final Fantasy Tactics. Patch for ULES version is ''0x883E050 00001021''.--[[User:Agrippa|Agrippa]] ([[User talk:Agrippa|talk]]) 20:42, 15 March 2023 (CET) | |||
* It seems like emu expect single patch to be 0x14 in size? It's little bit hard to read that code because emu read it first, then translate to config nr, and send pemucorelib, that one interpret it, and send to translator (jit) elf using 0xB3900000 mapped mem. In the end pemucorelib also have built in jit which apparently don't use that patch? No idea really, i did some work on psp emu, but only for simple configs, and recompilers/emitters. --[[User:Kozarovv|Kozarovv]] ([[User talk:Kozarovv|talk]]) 11:17, 16 March 2023 (CET) | |||
** What is the proper character set for the config file? ANSI or UTF-8?--[[User:Agrippa|Agrippa]] ([[User talk:Agrippa|talk]]) 11:00, 19 March 2023 (CET) | |||
*** Not sure if that matter, emu read it using sscanf. So both should be supported, you can check premade configs from psp launchers. Emu read it as (notice spaces): | |||
TRANSLATOR_PATCH[%lld] = { | |||
When string match config decimal value is read. This is only config that read that value as 32 bits (lwz addr + 4, other cfgs do ld addr), which probably doesn't matter for us anyway. That value is used as a multiplier for 0x14 size for calloc. So it dictates how many patches are there (and one "config" is expected to be 0x14 size by calloc). Returned pointer is saved, and pemucorelib gets notified about config (pointer is not send yet, just count as an argument). From that point next chunks are read by sscanf with just %08X as format. So it expect just 8 valid hex characters (4 bytes). What's important i can't find place where it expect spaces. So apparently value should be passed as 128 (160?) bit. Also there seems to be no space after "{" and, before "}" Next thing is that first two values after count are and with 0xFFFFFFFC, so that will be most likely address of some kind (MIPS cpu most likely). And that how it looks in psp emu file. All that is sent to PEmuCoreLib. Which process it, and send by 0xB39000XX to translator (JIT) file. So valid config seems to be for eg: | |||
TRANSLATOR_PATCH[1] = {08844B7C08844B801000003600A08821} | |||
--[[User:Kozarovv|Kozarovv]] ([[User talk:Kozarovv|talk]]) 21:19, 19 March 2023 (CET) |