diff --git a/core/libcinternals.mk b/core/libcinternals.mk index 51979dc..27389ee 100644 --- a/core/libcinternals.mk +++ b/core/libcinternals.mk @@ -18,6 +18,9 @@ __signbit \ __signbitf \ __signbitl \ __srget \ +__stderrp \ +__stdinp \ +__stdoutp \ __swbuf \ _Exit \ abort \ diff --git a/core/libkernels.mk b/core/libkernels.mk index d73a2c0..0409214 100644 --- a/core/libkernels.mk +++ b/core/libkernels.mk @@ -267,7 +267,9 @@ sceKernelAddUserEvent \ sceKernelAllocateDirectMemory \ sceKernelCreateEqueue \ sceKernelDeleteEqueue \ +sceKernelWaitEqueue \ sceKernelDlsym \ +sceKernelGetDirectMemorySize \ sceKernelGetCurrentCpu \ sceKernelGetModuleInfo \ sceKernelGetModuleList \ diff --git a/core/stub.mk b/core/stub.mk index 8758468..b819265 100644 --- a/core/stub.mk +++ b/core/stub.mk @@ -21,6 +21,14 @@ $(eval $(call generateModule, libSceNet, sceNetAccept sceNetBind sceNetConnect s $(eval $(call generateModule, libScePad, scePadClose scePadInit scePadOpen scePadRead scePadReadState)) $(eval $(call generateModule, libSceSysmodule, sceSysmoduleIsLoaded sceSysmoduleLoadModule sceSysmoduleUnloadModule)) $(eval $(call generateModule, libSceUsbd, sceUsbdBulkTransfer sceUsbdCheckConnected sceUsbdClearHalt sceUsbdClose sceUsbdControlTransfer sceUsbdExit sceUsbdFreeConfigDescriptor sceUsbdFreeDeviceList sceUsbdGetActiveConfigDescriptor sceUsbdGetConfigDescriptor sceUsbdGetConfigDescriptorByValue sceUsbdGetDeviceDescriptor sceUsbdGetDeviceList sceUsbdInit sceUsbdInterruptTransfer sceUsbdOpen sceUsbdOpenDeviceWithVidPid sceUsbdResetDevice sceUsbdSetInterfaceAltSetting)) +$(eval $(call generateModule, libSceUserService, sceUserServiceInitialize sceUserServiceTerminate sceUserServiceGetLoginUserIdList sceUserServiceGetEvent sceUserServiceGetInitialUser sceUserServiceGetUserName sceUserServiceGetUserColor)) +$(eval $(call generateModule, libSceVideoOut, sceVideoOutOpen sceVideoOutClose sceVideoOutRegisterBuffers sceVideoOutUnregisterBuffers sceVideoOutSubmitFlip sceVideoOutSetBufferAttribute sceVideoOutSetFlipRate sceVideoOutAddFlipEvent sceVideoOutGetFlipStatus)) +$(eval $(call generateModule, libSceGnmDriver, sceGnmFlushGarlic)) +$(eval $(call generateModule, libSceSystemService, sceSystemServiceHideSplashScreen)) +$(eval $(call generateModule, libSceAudioOut, sceAudioOutInit sceAudioOutOpen sceAudioOutClose sceAudioOutOutput sceAudioOutSetVolume)) +$(eval $(call generateModule, libSceIme, sceImeKeyboardOpen sceImeKeyboardClose sceImeKeyboardUpdate sceImeKeyboardGetInfo sceImeKeyboardSetMode sceImeKeyboardGetResourceId sceImeUpdate sceImeOpen sceImeClose sceImeParamInit sceImeSetText)) + + # no need to touch, generates non-module libs $(eval $(call generateLibraryLarge, kern_function, libps4Kernel, none, $(kerns))) diff --git a/include/sce/audioout.h b/include/sce/audioout.h new file mode 100644 index 0000000..c8990fb --- /dev/null +++ b/include/sce/audioout.h @@ -0,0 +1,13 @@ +#pragma once + +#include +#include +#include + + + +int sceAudioOutInit(); +int sceAudioOutOpen(SceUserServiceUserId userId,unsigned int channel,int unknown ,unsigned int samples, unsigned int frequency, unsigned int format); +int sceAudioOutClose(int handle); +int sceAudioOutOutput(int handle, void *buf); +int sceAudioOutSetVolume(int handle, int filter, int *value); diff --git a/include/sce/gnmdriver.h b/include/sce/gnmdriver.h new file mode 100644 index 0000000..4d71139 --- /dev/null +++ b/include/sce/gnmdriver.h @@ -0,0 +1,6 @@ +#pragma once +#include + + +int sceGnmFlushGarlic(); + diff --git a/include/sce/kernel.h b/include/sce/kernel.h index de9ce86..768dea8 100644 --- a/include/sce/kernel.h +++ b/include/sce/kernel.h @@ -28,6 +28,9 @@ int sceKernelCreateEqueue(SceKernelEqueue *eq, const char *name); int sceKernelDeleteEqueue(SceKernelEqueue eq); int sceKernelAddUserEvent(SceKernelEqueue eq, int id); int sceKernelAddReadEvent(SceKernelEqueue eq, int fd, size_t size, void *data); +int sceKernelWaitEqueue(SceKernelEqueue eq, SceKernelEvent *ev, int num, int *out, SceKernelUseconds *timo); + +size_t sceKernelGetDirectMemorySize(); /* more interresting wrappers */ int sceKernelAllocateDirectMemory(off_t searchStart, off_t searchEnd, size_t length, size_t alignment, int type, off_t *physicalAddressDestination); diff --git a/include/sce/pad.h b/include/sce/pad.h index 45b9070..1264d9e 100644 --- a/include/sce/pad.h +++ b/include/sce/pad.h @@ -1,18 +1,12 @@ #pragma once #include -#include +#include +#include int scePadInit(void); -int scePadOpen(int userID, int, int, void *); +int scePadOpen(SceUserServiceUserId userId,int type,int index,uint8_t *param); int scePadClose(int handle); -int scePadRead(int handle, void *data, int count); -int scePadReadState(int handle, void *data); +int scePadRead(int handle, ScePadData *data, int count); +int scePadReadState(int handle, ScePadData *data); -/* unreversed */ -int64_t scePadResetOrientation(); -int64_t scePadSetAngularVelocityDeadbandState(); -int64_t scePadSetLightBar(); -int64_t scePadSetMotionSensorState(); -int64_t scePadSetTiltCorrectionState(); -int64_t scePadSetVibration(); diff --git a/include/sce/systemservice.h b/include/sce/systemservice.h new file mode 100644 index 0000000..86e180a --- /dev/null +++ b/include/sce/systemservice.h @@ -0,0 +1,4 @@ +#pragma once + +#include +int sceSystemServiceHideSplashScreen(); diff --git a/include/sce/types/kernel.h b/include/sce/types/kernel.h index b40ae1c..eb55c79 100644 --- a/include/sce/types/kernel.h +++ b/include/sce/types/kernel.h @@ -2,11 +2,14 @@ #include #include +#include #ifndef MAP_TYPE #define MAP_TYPE 0x0f #endif + + typedef struct SceKernelModuleSegmentInfo { void *address; @@ -34,3 +37,4 @@ typedef void *ScePthreadMutexattr; typedef uint32_t SceKernelModule; typedef uint64_t SceKernelEqueue; +typedef struct kevent SceKernelEvent; diff --git a/include/sce/types/pad.h b/include/sce/types/pad.h new file mode 100644 index 0000000..88f6396 --- /dev/null +++ b/include/sce/types/pad.h @@ -0,0 +1,40 @@ +#pragma once + +#include + +typedef struct vec_float3 +{ + float x; + float y; + float z; +}vec_float3; + +typedef struct vec_float4 +{ + float x; + float y; + float z; + float w; +}vec_float4; + +typedef struct ScePadData { + unsigned int buttons; + uint8_t lx; + uint8_t ly; + uint8_t rx; + uint8_t ry; + uint8_t l2; + uint8_t r2; + uint16_t padding; + vec_float4 quat; + vec_float3 vel; + vec_float3 acell; + uint8_t touch[24]; + uint8_t connected; + uint64_t timestamp; + uint8_t ext[16]; + uint8_t count; + uint8_t unknown[15]; +}ScePadData; + + diff --git a/include/sce/types/userservice.h b/include/sce/types/userservice.h new file mode 100644 index 0000000..88daca9 --- /dev/null +++ b/include/sce/types/userservice.h @@ -0,0 +1,6 @@ +#pragma once + +#include + + +typedef int SceUserServiceUserId; diff --git a/include/sce/types/videoout.h b/include/sce/types/videoout.h new file mode 100644 index 0000000..5725270 --- /dev/null +++ b/include/sce/types/videoout.h @@ -0,0 +1,27 @@ +#pragma once + +#include + + +typedef struct SceVideoOutBufferAttribute { + int32_t format; + int32_t tmode; + int32_t aspect; + uint32_t width; + uint32_t height; + uint32_t pixelPitch; + uint64_t reserved[2]; +} SceVideoOutBufferAttribute; + +typedef struct SceVideoOutFlipStatus { + uint64_t num; + uint64_t ptime; + uint64_t stime; + int64_t flipArg; + uint64_t reserved[2]; + int32_t numGpuFlipPending; + int32_t numFlipPending; + int32_t currentBuffer; + uint32_t reserved1; +} SceVideoOutFlipStatus; + diff --git a/include/sce/userservice.h b/include/sce/userservice.h new file mode 100644 index 0000000..651a6ac --- /dev/null +++ b/include/sce/userservice.h @@ -0,0 +1,7 @@ +#pragma once + +#include +#include +int sceUserServiceInitialize(int *params); +int sceUserServiceTerminate(); +int sceUserServiceGetInitialUser(SceUserServiceUserId *userId); diff --git a/include/sce/videoout.h b/include/sce/videoout.h new file mode 100644 index 0000000..a8f8347 --- /dev/null +++ b/include/sce/videoout.h @@ -0,0 +1,18 @@ +#pragma once + +#include +#include +#include +#include + + + +int sceVideoOutOpen(SceUserServiceUserId userId, int type, int index, const void *param); +int sceVideoOutClose(int handle); +int sceVideoOutRegisterBuffers(int handle, int initialIndex, void * const *addr, int numBuf, const SceVideoOutBufferAttribute *attr); +int sceVideoOutUnregisterBuffers(int handle, int indexAttr); +int sceVideoOutSubmitFlip(int handle, int indexBuf, unsigned int flipMode, int64_t flipArg); +void sceVideoOutSetBufferAttribute(SceVideoOutBufferAttribute *attr, unsigned int format, unsigned int tmode,unsigned int aspect, unsigned int width, unsigned int height, unsigned int pixelPitch); +int sceVideoOutSetFlipRate(int handle, int flipRate); +int sceVideoOutAddFlipEvent(SceKernelEqueue eq, int handle, void *data); +int sceVideoOutGetFlipStatus(int handle, SceVideoOutFlipStatus *status);