SceCompat: Difference between revisions
Jump to navigation
Jump to search
CelesteBlue (talk | contribs) No edit summary |
CelesteBlue (talk | contribs) No edit summary |
||
Line 327: | Line 327: | ||
|} | |} | ||
=== | === sceCompatPrepareLoad === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 341: | Line 341: | ||
Loads Pcff (PSP Compat Flash Files) and Pcbc (PSP Compat Boot Code). | Loads Pcff (PSP Compat Flash Files) and Pcbc (PSP Compat Boot Code). | ||
<source lang="C">int | <source lang="C">int sceCompatPrepareLoad(void);</source> | ||
=== sceCompatRegWrite === | === sceCompatRegWrite === | ||
Line 409: | Line 409: | ||
|} | |} | ||
=== | === sceCompatMapDDR === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 423: | Line 423: | ||
<source lang="C"> | <source lang="C"> | ||
// size must be 0x4000000 (64MB) | // size must be 0x4000000 (64MB) | ||
int | int sceCompatMapDDR(SceUID memblock_uid, SceSize size); | ||
</source> | </source> | ||
Line 515: | Line 515: | ||
| 0.990 || not present | | 0.990 || not present | ||
|- | |- | ||
| 1. | | 1.03-3.60 || 0xD2E3370E | ||
|} | |} | ||
<source lang="C">int sceCompatGetStatus(void);</source> | |||
=== sceCompatInterrupt === | === sceCompatInterrupt === | ||
Line 526: | Line 528: | ||
|} | |} | ||
Set a custom SceCompatMailbox address. | |||
<source lang="C">int sceCompatInterrupt( | <source lang="C"> | ||
// some_id must be between 0 and 10 | |||
int sceCompatInterrupt(SceUInt32 some_id); | |||
</source> | |||
=== sceCompatSetRif === | === sceCompatSetRif === |
Revision as of 14:46, 12 April 2020
This is the primary kernel interface to the PSP Emulator.
Module
Known NIDs
Version | Name | World | Privilege | NID |
---|---|---|---|---|
1.69 | SceCompat | Non-secure | Kernel | 0x7FA33B9B |
3.60-3.65 | SceCompat | Non-secure | Kernel | 0x8F2D0378 |
Libraries
Known NIDs
Version | Name | World | Visibility | NID |
---|---|---|---|---|
3.60-3.65 | SceCompatForDriver | Non-secure | Kernel | 0x7CFA62CD |
3.60-3.65 | SceCompatForVsh | Non-secure | User | 0xF68A1AD0 |
0.990-3.65 | SceCompat | Non-secure | User | 0x0F35909D |
Types
typedef struct SceCompatSettings { // size is 8 on FW 1.03 SceUInt32 disp_filter : 1; SceUInt32 camera_direction : 1; SceUInt32 ra_up : 4; SceUInt32 ra_down : 4; SceUInt32 ra_left : 4; SceUInt32 ra_right : 4; SceUInt32 reserved : 46; } SceCompatSettings; typedef struct SceCompatInitParam { // size is 0x40 on FW 1.03 char unk[0x40]; } SceCompatInitParam;
SceCompatForDriver
SceCompatForDriver_6EBD9E01
Version | NID |
---|---|
0.990 | not present |
3.60 | 0x6EBD9E01 |
SceCompatForVsh
SceCompatForVsh_4915DEE7
Version | NID |
---|---|
0.990 | not present |
3.60 | 0x4915DEE7 |
SceCompatForVsh_70997F92
Version | NID |
---|---|
0.990 | not present |
3.60 | 0x70997F92 |
SceCompatForVsh_9C107CC9
Version | NID |
---|---|
0.990 | not present |
3.60 | 0x9C107CC9 |
SceCompat
sceCompatGetUpdateState
Version | NID |
---|---|
0.990-1.03 | not present |
3.60 | 0x0CDE9EC5 |
sceCompatGetDevInf
Version | NID |
---|---|
0.990 | not present |
1.03-3.60 | 0x138006A8 |
Calls sceIoDevctlForDriver("ux0", 0x3001, NULL, 0, pInf, sizeof(SceIoDevInfo));.
int sceCompatGetDevInf(SceIoDevInfo *pInfo);
sceCompatGetPeripheralState
Version | NID |
---|---|
0.990-3.60 | 0x176B2906 |
// periph_id: 1: IsHeadphoneExist, 2: GetBatteryLifePercent, 3: GetBatteryLifeTime, 4: IsSuspendRequired int sceCompatGetPeripheralState(SceUInt32 periph_id);
Version | NID |
---|---|
0.990 | not present |
1.03-3.60 | 0x1CD51530 |
// some_id must be between 0x80 and 0x8A int sceCompatWriteShared32(SceUInt32 some_id, SceUInt32 value);
Version | NID |
---|---|
0.990-1.03 | not present |
3.60 | 0x2306FFED |
// buf max size is 0x10, but only 0xC bytes are written to Shared SRAM int sceCompatWriteSharedCtrl(void *buf);
sceCompatSetSettings
Version | NID |
---|---|
0.990 | not present |
1.03-1.69 | 0x312782DC |
3.60 | not present |
int sceCompatSetSettings(SceCompatSettings settings);
sceCompatSuspendResume
Version | NID |
---|---|
0.990 | not present |
1.69-3.60 | 0x324112CA |
// mode: 0: suspend, 1: resume // step: 1: first step, 2: second step int sceCompatSuspendResume(SceUInt32 mode, SceUInt32 step);
sceCompatSetDisplayConfig
Version | NID |
---|---|
0.990-1.03 | not present |
1.69 | 0x32BA3DCF |
sceCompatRegRead
Version | NID |
---|---|
0.990-1.69 | 0x4521505D |
3.60 | not present |
// unk_id: if unk_id equals 0, offset + size must be less than 0x3a5d, // else if unk_id equals 1, offset + size must be less than 0x20000 int sceCompatRegRead(SceUInt32 unk_id, SceUInt32 offset, void *pBuf, SceSize size);
sceCompatAvailableColorSpaceSetting
Version | NID |
---|---|
0.990-1.03 | not present |
3.60 | 0x456226DD |
sceCompatCache
Version | NID |
---|---|
0.940-3.60 | 0x6777390E |
// mode: 1: Invalidate, 2: Clean and Invalidate, 3: Clean int sceCompatCache(SceUInt32 mode, void *base, SceSize size);
sceCompatAllocCdram
Version | NID |
---|---|
0.990 | not present |
1.69 | 0x6E8E3BA8 |
sceCompatWaitSpecialRequest
Version | NID |
---|---|
0.940-3.60 | 0x714F7ED6 |
int sceCompatWaitSpecialRequest(SceUInt32 req_id);
Version | NID |
---|---|
0.990 | not present |
1.03-3.60 | 0x73AA4871 |
// some_id must be between 0 and 6 int sceCompatReadShared32(SceUInt32 some_id, SceUInt32 *pValue);
sceCompatGetSettings
Version | NID |
---|---|
0.990 | not present |
1.03-1.69 | 0x782C980E |
3.60 | not present |
int sceCompatGetSettings(SceCompatSettings *pSettings);
sceCompatIsPocketStationTitle
Version | NID |
---|---|
0.990 | not present |
3.60 | 0x7DCFBCCE |
sceCompatWaitAndGetRequest
Version | NID |
---|---|
0.990-1.03 | not present |
3.60 | 0x8176C238 |
int sceCompatWaitAndGetRequest(SceUInt32 req_id, SceUInt32 a2);
sceCompatSetUpdateState
Version | NID |
---|---|
0.990-1.03 | not present |
3.60 | 0x8A44206F |
sceCompatStart
Version | NID |
---|---|
0.940-3.60 | 0x8CA1632D |
sceCompatPrepareLoad
Version | NID |
---|---|
0.940 | not present |
1.03 | 0x78E469D6 |
3.60 | not present |
Loads Pcff (PSP Compat Flash Files) and Pcbc (PSP Compat Boot Code).
int sceCompatPrepareLoad(void);
sceCompatRegWrite
Version | NID |
---|---|
0.990-1.69 | 0x912B1C28 |
3.60 | not present |
// unk_id: if unk_id equals 0, offset + size must be less than 0x3a5d, // else if unk_id equals 1, offset + size must be less than 0x20000 int sceCompatRegWrite(SceUInt32 unk_id, SceUInt32 offset, const void *pBuf, SceSize size);
sceCompatIdStorageLookup
Version | NID |
---|---|
0.940-3.60 | 0x94AAA245 |
int sceCompatIdStorageLookup(SceUInt16 key, SceUInt32 offset, void *pBuf, SceSize size);
sceCompatCheckPocketStation
Version | NID |
---|---|
0.990 | not present |
1.03-3.60 | 0x96FC2A87 |
sceCompatGetTitleList
Version | NID |
---|---|
0.990-1.03 | not present |
3.60 | 0x99F13E04 |
sceCompatGetCurrentSecureTick
Version | NID |
---|---|
0.990-1.03 | not present |
3.60 | 0xA073EBEE |
sceCompatAllocCdramWithHole
Version | NID |
---|---|
0.990-1.03 | not present |
3.60 | 0xA5039FFA |
sceCompatMapDDR
Version | NID |
---|---|
0.990 | not present |
1.03 | 0xC6B19D35 |
3.60 | not present |
// size must be 0x4000000 (64MB) int sceCompatMapDDR(SceUID memblock_uid, SceSize size);
sceCompatGetPspSystemSoftwareVersion
Version | NID |
---|---|
0.990-3.60 | 0xB113DCC0 |
On PSP FW 6.60, it returns 660.
int sceCompatGetPspSystemSoftwareVersion(void);
sceCompatFrameBufferInit
Version | NID |
---|---|
0.990 | not present |
1.03-3.60 | 0xBC0E2B4C |
int sceCompatFrameBufferInit(void *base);
sceCompatLCDCSync
Version | NID |
---|---|
0.990 | not present |
1.03-3.60 | 0xBD177787 |
int sceCompatLCDCSync(void);
sceCompatWaitIntr
Version | NID |
---|---|
0.990-1.03 | not present |
3.60 | 0xC1E14CF5 |
sceCompatGetRequest
Version | NID |
---|---|
0.990-1.03 | not present |
1.69 | 0xCB9F607B |
3.60 | not present |
sceCompatDatRead
Version | NID |
---|---|
0.990-3.60 | 0xCBE73EBE |
// index must be 0 // offset + size must be lower or equal to 0x1038 int sceCompatDatRead(SceUInt32 index, SceUInt32 offset, void *pBuf, SceSize size);
sceCompatReturnValueEx
Version | NID |
---|---|
0.990 | not present |
1.69-3.60 | 0xCC02A9FF |
sceCompatGetStatus
Version | NID |
---|---|
0.990 | not present |
1.03-3.60 | 0xD2E3370E |
int sceCompatGetStatus(void);
sceCompatInterrupt
Version | NID |
---|---|
0.940-3.60 | 0xD6AA36DD |
Set a custom SceCompatMailbox address.
// some_id must be between 0 and 10 int sceCompatInterrupt(SceUInt32 some_id);
sceCompatSetRif
Version | NID |
---|---|
0.990 | not present |
1.03-3.60 | 0xD8B69F23 |
// Example of entitlementId: AA0000-AAAA00000_00-0000000000000000 int sceCompatSetRif(const char *entitlementId);
sceCompatGetPrimaryHead
Version | NID |
---|---|
0.990 | not present |
1.69 | 0xDC9EE33A |
sceCompatSetSuspendSema
Version | NID |
---|---|
0.990 | not present |
1.69-3.60 | 0xDD30239E |
sceCompatInitEx
Version | NID |
---|---|
0.990-1.03 | not present |
1.69-3.60 | 0xE97C1B5F |
sceCompatUninit
Version | NID |
---|---|
0.990-3.60 | 0xEF929397 |
int sceCompatUninit(void);
sceCompatStop
Version | NID |
---|---|
0.990-3.60 | 0xFCE2422F |
int sceCompatStop(void);
sceCompatInit
Version | NID |
---|---|
0.940-1.03 | 0xB9DBD54A |
3.60 | not present |
Loads Pcff (PSP Compat Flash Files) and Pcbc (PSP Compat Boot Code).
int sceCompatInit(SceSize size, SceUInt32 a2, SceCompatInitParam *pParam);
sceCompatLCDCInit
Version | NID |
---|---|
0.940-0.990 | 0x3021D626 |
1.03-3.60 | not present |
int sceCompatLCDCInit(void *base);
sceCompatLCDCExec
Version | NID |
---|---|
0.940-0.990 | 0x7E3E266D |
1.03-3.60 | not present |
int sceCompatLCDCExec(void);
sceCompatResume
Version | NID |
---|---|
0.990 | 0xCA184D5B |
1.03-3.60 | not present |
// step: must be either 1 (resume Pervasive, restore CPU speed) or 2 (init lcd dmac, write resume payload, reload act.dat) int sceCompatResume(SceUInt32 step, int maybe_addr);
sceCompatSuspend
Version | NID |
---|---|
0.990 | 0x9EFFE36E |
1.03-3.60 | not present |
// step: must be either 1 (black screen) or 2 (suspend Pervasive, slow down CPU, wipe act.dat in memory) int sceCompatSuspend(SceUInt32 step);
Version | NID |
---|---|
0.990 | 0xC37A463C |
1.03-3.60 | not present |
Writes to SceCompatSharedSram.
int sceCompatWriteShared(SceUInt32 offset, const void *pBuf, SceSize size);
sceCompatWaitRequest
Version | NID |
---|---|
0.990-1.03 | 0x434BDAB0 |
3.60 | not present |
int sceCompatWaitRequest(SceUInt32 req_id);
sceCompatReturnResult
Version | NID |
---|---|
0.990 | 0x02F5CF19 |
1.03-3.60 | not present |
int sceCompatReturnResult(SceUInt32 req_id);
sceCompatReturnValue
Version | NID |
---|---|
0.990-1.03 | 0x61DB492A |
3.60 | not present |
int sceCompatReturnValue(SceUInt32 req_id, uint a2, uint a3);
sceCompatSetDisplayBuffer
Version | NID |
---|---|
0.990-1.03 | 0xC820EC43 |
3.60 | not present |
int sceCompatSetDisplayBuffer(const SceDisplayFrameBuf *pFrameBuf);
Version | NID |
---|---|
0.990 | 0xC983287E |
1.03-3.60 | not present |
int sceCompatReadShared(SceUInt32 offset, void *pBuf, SceSize size);