Editing PSP Emulator
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 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 | '''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 || | | 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 | | 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 | 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. |