From 87d9e058889cabb01b72b60b6c7c8115a2e8bfc8 Mon Sep 17 00:00:00 2001 From: Maschell Date: Tue, 20 Feb 2018 23:43:14 +0100 Subject: [PATCH] Added some GX2 functions --- source/gx2_functions.c | 13 +++++++++++++ source/gx2_functions.h | 8 +++++++- source/os_functions.c | 7 +++++++ source/os_functions.h | 3 +++ 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/source/gx2_functions.c b/source/gx2_functions.c index 3644153..e63e145 100644 --- a/source/gx2_functions.c +++ b/source/gx2_functions.c @@ -93,6 +93,13 @@ EXPORT_DECL(s32, GX2GetSystemDRCScanMode, void); EXPORT_DECL(void, GX2RSetAllocator, void * (* allocFunc)(u32, u32, u32), void (* freeFunc)(u32, void*)); EXPORT_DECL(void, GX2CopySurface, GX2Surface * srcSurface,u32 srcMip,u32 srcSlice,GX2Surface * dstSurface,u32 dstMip,u32 dstSlice ); +EXPORT_DECL(s32, GX2GetLastFrame, s32 target, GX2Texture * texture); +EXPORT_DECL(void, GX2BeginDisplayListEx,void * displayList,u32 size,s32 unkwn); +EXPORT_DECL(u32, GX2EndDisplayList, void * list); +EXPORT_DECL(void, GX2CallDisplayList, void * list, u32 size); +EXPORT_DECL(void, GX2ExpandAAColorBuffer,GX2ColorBuffer * buffer); +EXPORT_DECL(void, GX2ResolveAAColorBuffer, const GX2ColorBuffer * srcBuffer, GX2Surface * dstSurface,u32 dstMip,u32 dstSlice); + EXPORT_DECL(void, GX2ClearBuffersEx, GX2ColorBuffer * colorBuffer,GX2DepthBuffer * depthBuffer,f32 r, f32 g, f32 b, f32 a,f32 depthValue,u8 stencilValue,s32 clearFlags); void InitAcquireGX2(void){ @@ -167,6 +174,12 @@ void InitGX2FunctionPointers(void){ OS_FIND_EXPORT(gx2_handle, GX2GetSystemDRCScanMode); OS_FIND_EXPORT(gx2_handle, GX2RSetAllocator); OS_FIND_EXPORT(gx2_handle, GX2CopySurface); + OS_FIND_EXPORT(gx2_handle, GX2GetLastFrame); OS_FIND_EXPORT(gx2_handle, GX2ClearBuffersEx); + OS_FIND_EXPORT(gx2_handle, GX2BeginDisplayListEx); + OS_FIND_EXPORT(gx2_handle, GX2EndDisplayList); + OS_FIND_EXPORT(gx2_handle, GX2CallDisplayList); + OS_FIND_EXPORT(gx2_handle, GX2ExpandAAColorBuffer); + OS_FIND_EXPORT(gx2_handle, GX2ResolveAAColorBuffer); OS_FIND_EXPORT(gx2_handle, GX2SetClearDepthStencil); } diff --git a/source/gx2_functions.h b/source/gx2_functions.h index e104d15..e8ac5b5 100644 --- a/source/gx2_functions.h +++ b/source/gx2_functions.h @@ -103,7 +103,13 @@ extern s32 (* GX2GetSystemDRCScanMode)(void); extern void (* GX2RSetAllocator)(void * (*allocFunc)(u32, u32, u32), void (*freeFunc)(u32, void*)); extern void (* GX2CopySurface)(GX2Surface * srcSurface,u32 srcMip,u32 srcSlice,GX2Surface * dstSurface,u32 dstMip,u32 dstSlice ); extern void (* GX2ClearBuffersEx)(GX2ColorBuffer * colorBuffer,GX2DepthBuffer * depthBuffer,f32 r, f32 g, f32 b, f32 a,f32 depthValue,u8 stencilValue,s32 clearFlags); - +extern s32 (* GX2GetLastFrame)(s32 target, GX2Texture * texture); +extern void (* GX2BeginDisplayListEx)(void * displayList,u32 size,s32 unkwn); +extern u32 (*GX2EndDisplayList)(void * list); +extern void (*GX2CallDisplayList)(void * list, u32 size); +extern void (*GX2ExpandAAColorBuffer)(GX2ColorBuffer * buffer); +extern void (*GX2ResolveAAColorBuffer)(const GX2ColorBuffer * srcBuffer, GX2Surface * dstSurface,u32 dstMip,u32 dstSlice); + static inline void GX2InitDepthBuffer(GX2DepthBuffer *depthBuffer, s32 dimension, u32 width, u32 height, u32 depth, s32 format, s32 aa) { depthBuffer->surface.dimension = dimension; diff --git a/source/os_functions.c b/source/os_functions.c index 33272c7..05d27a9 100644 --- a/source/os_functions.c +++ b/source/os_functions.c @@ -125,6 +125,8 @@ EXPORT_VAR(u32 *, pMEMAllocFromDefaultHeapEx); EXPORT_VAR(u32 *, pMEMAllocFromDefaultHeap); EXPORT_VAR(u32 *, pMEMFreeToDefaultHeap); +EXPORT_DECL(void *, MEMAllocFromAllocator, void * allocator, u32 size); +EXPORT_DECL(void, MEMFreeToAllocator, void * allocator, void* address); EXPORT_DECL(s32, MEMGetBaseHeapHandle, s32 mem_arena); EXPORT_DECL(u32, MEMGetAllocatableSizeForFrmHeapEx, s32 heap, s32 align); EXPORT_DECL(void *, MEMAllocFromFrmHeapEx, s32 heap, u32 size, s32 align); @@ -165,6 +167,8 @@ EXPORT_DECL(void, addr_PrepareTitle_hook, void); EXPORT_DECL(void, DCInvalidateRange, void *buffer, u32 length); EXPORT_DECL(s32, OSDynLoad_GetModuleName, s32 handle, char *name_buffer, s32 *name_buffer_size); EXPORT_DECL(s32, OSIsHomeButtonMenuEnabled, void); +EXPORT_DECL(s32, OSSetScreenCapturePermissionEx, s32 tvEnabled, s32 drcEnabled); + //!---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- //! Energy Saver functions @@ -336,6 +340,8 @@ void InitOSFunctionPointers(void){ OSDynLoad_FindExport(coreinit_handle, 1, "MEMAllocFromDefaultHeap", &pMEMAllocFromDefaultHeap); OSDynLoad_FindExport(coreinit_handle, 1, "MEMFreeToDefaultHeap", &pMEMFreeToDefaultHeap); + OS_FIND_EXPORT(coreinit_handle, MEMAllocFromAllocator); + OS_FIND_EXPORT(coreinit_handle, MEMFreeToAllocator); OS_FIND_EXPORT(coreinit_handle, MEMGetBaseHeapHandle); OS_FIND_EXPORT(coreinit_handle, MEMGetAllocatableSizeForFrmHeapEx); OS_FIND_EXPORT(coreinit_handle, MEMAllocFromFrmHeapEx); @@ -354,6 +360,7 @@ void InitOSFunctionPointers(void){ OS_FIND_EXPORT(coreinit_handle, DCInvalidateRange); OS_FIND_EXPORT(coreinit_handle, OSDynLoad_GetModuleName); OS_FIND_EXPORT(coreinit_handle, OSIsHomeButtonMenuEnabled); + OS_FIND_EXPORT(coreinit_handle, OSSetScreenCapturePermissionEx); //!---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- //! Energy Saver functions diff --git a/source/os_functions.h b/source/os_functions.h index 8869bca..ec4f6af 100644 --- a/source/os_functions.h +++ b/source/os_functions.h @@ -208,6 +208,8 @@ extern u32 *pMEMAllocFromDefaultHeapEx; extern u32 *pMEMAllocFromDefaultHeap; extern u32 *pMEMFreeToDefaultHeap; +extern void* (* MEMAllocFromAllocator) (void * allocator, u32 size); +extern void (* MEMFreeToAllocator) (void * allocator, void* address); extern s32 (* MEMGetBaseHeapHandle)(s32 mem_arena); extern u32 (* MEMGetAllocatableSizeForFrmHeapEx)(s32 heap, s32 align); extern void* (* MEMAllocFromFrmHeapEx)(s32 heap, u32 size, s32 align); @@ -248,6 +250,7 @@ extern void (* addr_PrepareTitle_hook)(void); extern void (*DCInvalidateRange)(void *buffer, u32 length); extern s32 (*OSDynLoad_GetModuleName)(s32 handle, char *name_buffer, s32 *name_buffer_size); extern s32 (*OSIsHomeButtonMenuEnabled) (void); +extern s32 (*OSSetScreenCapturePermissionEx) (s32 tvEnabled, s32 drcEnabled); //!---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- //! Energy Saver functions