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_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 wrong name is scePafWidgetCreateNewWidget.

ScePafWidget_DDB0437F
??? 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.