ScePaf

Much of this page is wrong because much of the PAF is written in C++ but it works as a "function".

A good resource (to merge here) can be found at ScePaf-headers by Graphene.

Module
is a C++ runtime.

This module has many virtual tables that point to exported functions. It would be great to start from marking which function belongs to which vtable. This way we can restore initial class structure.

Libraries
TOOL version of libpaf module is different from CEX and DEX ones as it has an additional library: ScePafAutoTestTty. Some TOOL system apps import this library and crash on CEX/DEX systems because of that missing library.

scePafCommonCreateStartEventWatchdogThread
The created thread will run in loop.

scePafResourceSearchIdByName
This is a guessed name. Temp name was scePafResourceGetIdByName.

Searches using sha-1.

ScePafToplevel
//ScePafToplevel_F5354FEF SceInt32 SetInterface(SceUInt32 slot, ScePVoid interfaceTable);

//ScePafToplevel_1DF2C6FD ScePVoid GetInterface(SceUInt32 slot);

//ScePafToplevel_A5560E60, size of the struct is 0x1C0 void* scePafToplevelInitializeSystemParam(void* pafSystemParam);

//ScePafToplevel_907BA948, fills pafSystemParam with system-specific info to prepare for top level init void* scePafToplevelSetSystemParam(void* pafSystemParam);

//ScePafToplevel_E2860A99, main init function, buffer size must be 0x7C void* scePafToplevelInitialize(void* pafInitBuf, void* pafSystemParam);

//ScePafToplevel_3F0DB1BF, name is official scePafToplevelLoadCommonResourceAsync(void* pafTopLevel, ScePafLoadCRFinishCallback finish_callback);

//ScePafToplevel_400F84CE, size of struct is 0x94 scePafToplevelInitializeResourceInitParam(void* pafRcoParam);

//ScePafToplevel_004D98CC scePafToplevelAssignResourceName(const char* name);

//ScePafToplevel_F702E40A, name is official scePafToplevelLoadResourceAsync(void* pafRcoParam, ScePafLoadResourceFinishCallback finish_callback);

//ScePafToplevel_12E33958, thread that calls it becomes locked (does all drawing) scePafToplevelStartDrawing(void* pafTopLevel);

//ScePafToplevel_9A4B0DC4 scePafTopLevelStopDrawing(void* pafTopLevel);

//ScePafToplevel_32CE0577 scePafTopLevelFinalize(void* pafTopLevel);

//ScePafToplevel_004D98CC, selects from resources registered with scePafToplevelAssignResourceName scePafTopLevelSelectResource(const char* resourceName);

//ScePafToplevel_34FE1331, struct size is 0x2C scePafTopLevelInitializePageData(void* pageData);

//ScePafToplevel_30B442D9 scePafTopLevelLoadPage(void* widgetGroup, ScePafWidgetMainParam* pageParam, void* pageData);

ScePafWidget
widget

scePafWidgetCreateNewTextWidget
Temp name was scePafWidgetCreateNewWidget.

ScePafWidget_DDB0437F
A possible name could be scePafWidgetSetColorEnd.

scePafWidgetTypeText2
same to scePafWidgetTypeText

scePafWidgetTypeBusyIndicator2
same to scePafWidgetTypeBusyIndicator1

scePafWidgetSetPosition
Temp name was scePafWidgetAddWidget.

scePafWidgetSearchWidgetById
Searches the widget corresponding to a2->id from the group of a1 and returns pWidgetCtx if found

ScePafAutoTestTty_9E10E873
Can serve both as normal debug printf and also dump some PAF objects as XML. On external version of libpaf this function does nothing because it does not open tty output.