Add hooks to manipulate the DRC and TV colorbuffer

This commit is contained in:
Maschell 2019-03-01 19:16:20 +01:00
parent 94fe01eaf7
commit e9ea643f19

View File

@ -43,10 +43,12 @@ typedef enum wups_loader_hook_type_t {
WUPS_LOADER_HOOK_ENDING_APPLICATION, /* Called when an application ends */ WUPS_LOADER_HOOK_ENDING_APPLICATION, /* Called when an application ends */
WUPS_LOADER_HOOK_VSYNC, /* Called when an application calls GX2WaitForVsync (most times each frame) */ WUPS_LOADER_HOOK_VSYNC, /* Called when an application calls GX2WaitForVsync (most times each frame) */
WUPS_LOADER_HOOK_APP_STATUS_CHANGED, /* Called when the app status changes (foreground, background, closing) */ WUPS_LOADER_HOOK_APP_STATUS_CHANGED, /* Called when the app status changes (foreground, background, closing) */
WUPS_LOADER_HOOK_INIT_KERNEL, /* Only for internal usage */ WUPS_LOADER_HOOK_INIT_KERNEL, /* Only for internal usage */
WUPS_LOADER_HOOK_GET_CONFIG, /* Called when the config-menu will be loaded */ WUPS_LOADER_HOOK_GET_CONFIG, /* Called when the config-menu will be loaded */
WUPS_LOADER_HOOK_INIT_VID_MEM, /* Only for internal usage */ WUPS_LOADER_HOOK_INIT_VID_MEM, /* Only for internal usage */
WUPS_LOADER_HOOK_VID_DRC_DRAW, /* Called when the DRC was rendered */
WUPS_LOADER_HOOK_VID_TV_DRAW, /* Called when the TV was rendered */
} wups_loader_hook_type_t; } wups_loader_hook_type_t;
typedef struct wups_loader_hook_t { typedef struct wups_loader_hook_t {
@ -61,6 +63,13 @@ typedef enum wups_loader_app_status_t {
WUPS_APP_STATUS_UNKNOWN, /* Unknown status _should_ never happen.*/ WUPS_APP_STATUS_UNKNOWN, /* Unknown status _should_ never happen.*/
} wups_loader_app_status_t; } wups_loader_app_status_t;
typedef struct wups_loader_vid_buffer_t {
const void * color_buffer_ptr;
const void * tv_texture_ptr;
const void * drc_texture_ptr;
const void * sampler_ptr;
} wups_loader_vid_buffer_t;
typedef struct wups_loader_app_started_args_t { typedef struct wups_loader_app_started_args_t {
bool sd_mounted; bool sd_mounted;
bool usb_mounted; bool usb_mounted;
@ -80,21 +89,21 @@ typedef struct wups_loader_app_started_args_t {
void init_overlay(wups_loader_init_overlay_args_t args){ \ void init_overlay(wups_loader_init_overlay_args_t args){ \
WUPS_InitOverlay(args);\ WUPS_InitOverlay(args);\
} }
#define WUPS_USE_VIDEO_MEMORY() \ #define WUPS_USE_VIDEO_MEMORY() \
void init_vid_mem(wups_loader_init_vid_mem_args_t);\ void init_vid_mem(wups_loader_init_vid_mem_args_t);\
WUPS_HOOK_EX(WUPS_LOADER_HOOK_INIT_VID_MEM,init_vid_mem); \ WUPS_HOOK_EX(WUPS_LOADER_HOOK_INIT_VID_MEM,init_vid_mem); \
void init_vid_mem(wups_loader_init_vid_mem_args_t args){ \ void init_vid_mem(wups_loader_init_vid_mem_args_t args){ \
WUPS_InitVidMem(args);\ WUPS_InitVidMem(args);\
} }
#define WUPS_ALLOW_KERNEL() \ #define WUPS_ALLOW_KERNEL() \
void init_kernel(wups_loader_init_kernel_args_t);\ void init_kernel(wups_loader_init_kernel_args_t);\
WUPS_HOOK_EX(WUPS_LOADER_HOOK_INIT_KERNEL,init_kernel); \ WUPS_HOOK_EX(WUPS_LOADER_HOOK_INIT_KERNEL,init_kernel); \
void init_kernel(wups_loader_init_kernel_args_t args){ \ void init_kernel(wups_loader_init_kernel_args_t args){ \
WUPS_InitKernel(args);\ WUPS_InitKernel(args);\
} }
#define INITIALIZE_PLUGIN() \ #define INITIALIZE_PLUGIN() \
void init_plugin(void);\ void init_plugin(void);\
WUPS_HOOK_EX(WUPS_LOADER_HOOK_INIT_PLUGIN,init_plugin); \ WUPS_HOOK_EX(WUPS_LOADER_HOOK_INIT_PLUGIN,init_plugin); \
@ -130,6 +139,16 @@ typedef struct wups_loader_app_started_args_t {
WUPS_HOOK_EX(WUPS_LOADER_HOOK_APP_STATUS_CHANGED,on_app_status_changed); \ WUPS_HOOK_EX(WUPS_LOADER_HOOK_APP_STATUS_CHANGED,on_app_status_changed); \
void on_app_status_changed(wups_loader_app_status_t status) void on_app_status_changed(wups_loader_app_status_t status)
#define ON_DRC_TO_SCAN_BUFFER(myargs) \
void on_drc_to_scan_buf(wups_loader_vid_buffer_t);\
WUPS_HOOK_EX(WUPS_LOADER_HOOK_VID_DRC_DRAW,on_drc_to_scan_buf); \
void on_drc_to_scan_buf(wups_loader_vid_buffer_t myargs)
#define ON_TV_TO_SCAN_BUFFER(myargs) \
void on_tv_to_scan_buf(wups_loader_vid_buffer_t);\
WUPS_HOOK_EX(WUPS_LOADER_HOOK_VID_TV_DRAW,on_tv_to_scan_buf); \
void on_tv_to_scan_buf(wups_loader_vid_buffer_t myargs)
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif