Editing PSP Emulator

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

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 572: Line 572:
==Compatibility Settings==
==Compatibility Settings==
Emulator file stores compatibility settings for 898 Title IDs (as of 3.65 firmware). Additionally, settings can be supplied by title_specific.bin files. Title IDs are hidden under simple hash, which Sony borrowed from PSP POPS. That's not only similarity between two compatibility systems. Same like on POPS single config entry have 4 bytes ID and 4 bytes value, also here Sony decided to start count from -1, so config ID are in range of -1 - 0x1F. Which gives 33 possible settings per game.<br><br>
Emulator file stores compatibility settings for 898 Title IDs (as of 3.65 firmware). Additionally, settings can be supplied by title_specific.bin files. Title IDs are hidden under simple hash, which Sony borrowed from PSP POPS. That's not only similarity between two compatibility systems. Same like on POPS single config entry have 4 bytes ID and 4 bytes value, also here Sony decided to start count from -1, so config ID are in range of -1 - 0x1F. Which gives 33 possible settings per game.<br><br>
'''Warning!''' Current version of Vita Adrenaline break internal table settings and use own values in ScePspemuInitTitleSpecificInfoPatched. This is probably reasoning why some games run better outside of Adrenaline (in ARK for example). This is because adrenaline hook's function responsible for reading internal and external config table and use own code that totally skips ScePspemuInitTitleSpecificInfo. This can be fixed by removing "info" patches from titleinfo.c. But new workaround needs to be found for __sce_menu_info ID patch.
'''Warning!''' Current version of Vita Adrenaline seems to break internal table settings and use own values in ScePspemuInitTitleSpecificInfoPatched. This is probably reasoning why some games run better outside of Adrenaline (in ARK for example). This is because adrenaline hook's function responsible for reading config table and use own code that totally skips internal table. This can be easily fixed, just remove ScePspemuInitTitleSpecificInfoRef hooks.  


===Title ID Hash generator===
===Title ID Hash generator===
Line 623: Line 623:
| 0x08 || Unk ||
| 0x08 || Unk ||
|-
|-
| 0x09 || Unk || Lseek for Msfs related. Game specific as it tests against requested offset. When enabled and offset match, 0x40 is ored to value when sceCompatWriteShared32 is called with id 0x82. 
| 0x09 || Unk ||
|-
|-
| 0x0A || Unk || Some kind of delay. Value is multiplied by 1000 before used.
| 0x0A || Unk || Some kind of delay. Value is multiplied by 1000 before used.
|-
|-
| 0x0B || No || Predefined Allegrex memory patches for selected games.
| 0x0B || No || Predefined setting for selected games. Many of them use different comp flags under the hood.
  0x01: UCUS98687 Twisted Metal: Head-On
  0x01: UCUS98687 Twisted Metal: Head-On
  0x02: UCES00018 Twisted Metal: Head-On
  0x02: UCES00018 Twisted Metal: Head-On
Line 5,508: Line 5,508:
===External Compatibility Flags===
===External Compatibility Flags===
Beside what is in internal table we can supply our own settings by '''ur0:emu_list/title_specific.bin''' file.
Beside what is in internal table we can supply our own settings by '''ur0:emu_list/title_specific.bin''' file.
This file if valid, is parsed before internal table and if config for current game is found, internal table is not used. Luckily file is plain bin without any encryption or obfuscation layer. Unluckily emulator try to download new file when vita is online. This gonna need patch or plugin to disable download/overwrite, eventually we can redirect it to our own online database.
This file if valid, is parsed before internal table and if config for current game is found, internal table is not used. Luckily file is plain bin without any encryption or obfuscation layer.
Emulator perform few checks to ensure that file is valid:
Emulator perform few checks to ensure that file is valid:
*File size need to be multiply of 0x88 + 0x10 header.
*File size need to be multiply of 0x88 + 0x10 header.
*File revision need to be 0x0A (for 3.65 emu)
*File revision need to be 0x0A (for 3.65 emu)
*File magic need to be PSPC
*File magic need to be PSPC
New games can be added by appending entry to current file, 0x21350 is file size limit. ID Hash can be generated using [[PSP_Emulator#Title_ID_Hash_generator|Title ID Hash generator script]]
Example:
<br><br>'''Example:'''
  Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F Everything in 4 bytes units. Little endian. Example shows default cfg values.
  Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F                   Everything in 4 bytes units. Little endian. Example shows default cfg values.
                                                              
                                                              
  00000000  50 53 50 43 0A 00 00 00 13 1A 00 00 00 00 00 00  PSPC............ magic (PSP Compat), file revision, version (only for print), padding  
  00000000  50 53 50 43 0A 00 00 00 13 1A 00 00 00 00 00 00  PSPC............ magic (PSP Compat), file revision, version (only for print), padding  
Please note that all contributions to Vita Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see Vita Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)