mirror of
https://github.com/cemu-project/Cemu.git
synced 2026-07-11 01:25:15 +02:00
1c73dc9e1b
- Full reimplementation of proc_ui.rpl with all 19 exports - Foreground/Background messages now go to the coreinit system message queue as they should (instead of using a hack where proc_ui receives them directly) - Add missing coreinit API needed by proc_ui: OSGetPFID(), OSGetUPID(), OSGetTitleID(), __OSCreateThreadType() - Use big-endian types in OSMessage - Flesh out the stubs for OSDriver_Register and OSDriver_Unregister a bit more since we need to call it from proc_ui. Similiar small tweaks to other coreinit API - Stub sysapp SYSSwitchToEManual() and _SYSSwitchToEManual() in such a way that they will trigger the expected background/foreground transition, avoiding softlocks in games that call these functions
44 lines
1.4 KiB
C++
44 lines
1.4 KiB
C++
|
|
namespace proc_ui
|
|
{
|
|
enum class ProcUIStatus
|
|
{
|
|
Foreground = 0,
|
|
Background = 1,
|
|
Releasing = 2,
|
|
Exit = 3
|
|
};
|
|
|
|
enum class ProcUICallbackId
|
|
{
|
|
AcquireForeground = 0,
|
|
ReleaseForeground = 1,
|
|
Exit = 2,
|
|
NetIoStart = 3,
|
|
NetIoStop = 4,
|
|
HomeButtonDenied = 5,
|
|
COUNT = 6
|
|
};
|
|
|
|
void ProcUIInit(MEMPTR<void> callbackReadyToRelease);
|
|
void ProcUIInitEx(MEMPTR<void> callbackReadyToReleaseEx, MEMPTR<void> userParam);
|
|
void ProcUIShutdown();
|
|
bool ProcUIIsRunning();
|
|
bool ProcUIInForeground();
|
|
bool ProcUIInShutdown();
|
|
void ProcUIRegisterCallback(ProcUICallbackId callbackType, void* funcPtr, void* userParam, sint32 priority);
|
|
void ProcUIRegisterCallbackCore(ProcUICallbackId callbackType, void* funcPtr, void* userParam, sint32 priority, uint32 coreIndex);
|
|
void ProcUIRegisterBackgroundCallback(void* funcPtr, void* userParam, uint64 tickDelay);
|
|
void ProcUIClearCallbacks();
|
|
void ProcUISetSaveCallback(void* funcPtr, void* userParam);
|
|
void ProcUISetCallbackStackSize(uint32 newStackSize);
|
|
uint32 ProcUICalcMemorySize(uint32 numCallbacks);
|
|
sint32 ProcUISetMemoryPool(void* memBase, uint32 size);
|
|
void ProcUISetBucketStorage(void* memBase, uint32 size);
|
|
void ProcUISetMEM1Storage(void* memBase, uint32 size);
|
|
void ProcUIDrawDoneRelease();
|
|
ProcUIStatus ProcUIProcessMessages(bool isBlockingInBackground);
|
|
ProcUIStatus ProcUISubProcessMessages(bool isBlockingInBackground);
|
|
|
|
void load();
|
|
} |