5#include <revolution/GX.h>
11#define VI_TVMODE(format, scanMode) (((format) << 2) + (scanMode))
14#define VI_TVMODE_FORMAT(mode) ((mode) >> 2)
16#define VI_TVMODE_SCANMODE(mode) ((mode) & 0b00000011)
18#define VI_VIRTUAL_WIDTH_STD (608.0f)
19#define VI_VIRTUAL_WIDTH_WIDE (832.0f)
20#define VI_VIRTUAL_HEIGHT (456.0f)
22#define VI_VIRTUAL_HALF_WIDTH_STD (VI_VIRTUAL_WIDTH_STD / 2)
23#define VI_VIRTUAL_HALF_WIDTH_WIDE (VI_VIRTUAL_WIDTH_WIDE / 2)
24#define VI_VIRTUAL_HALF_HEIGHT (VI_VIRTUAL_HEIGHT / 2)
31 VI_TVFORMAT_DEBUG_PAL,
35typedef enum VIScanMode {
41typedef enum VIXFBMode {
46typedef enum VITVMode {
47 VI_TVMODE_NTSC_INT = VI_TVMODE(VI_TVFORMAT_NTSC, VI_SCANMODE_INT),
48 VI_TVMODE_NTSC_DS = VI_TVMODE(VI_TVFORMAT_NTSC, VI_SCANMODE_DS),
49 VI_TVMODE_NTSC_PROG = VI_TVMODE(VI_TVFORMAT_NTSC, VI_SCANMODE_PROG),
51 VI_TVMODE_PAL_INT = VI_TVMODE(VI_TVFORMAT_PAL, VI_SCANMODE_INT),
52 VI_TVMODE_PAL_DS = VI_TVMODE(VI_TVFORMAT_PAL, VI_SCANMODE_DS),
54 VI_TVMODE_EURGB60_INT = VI_TVMODE(VI_TVFORMAT_EURGB60, VI_SCANMODE_INT),
55 VI_TVMODE_EURGB60_DS = VI_TVMODE(VI_TVFORMAT_EURGB60, VI_SCANMODE_DS),
56 VI_TVMODE_EURGB60_PROG = VI_TVMODE(VI_TVFORMAT_EURGB60, VI_SCANMODE_PROG),
58 VI_TVMODE_MPAL_INT = VI_TVMODE(VI_TVFORMAT_MPAL, VI_SCANMODE_INT),
59 VI_TVMODE_MPAL_DS = VI_TVMODE(VI_TVFORMAT_MPAL, VI_SCANMODE_DS),
60 VI_TVMODE_MPAL_PROG = VI_TVMODE(VI_TVFORMAT_MPAL, VI_SCANMODE_PROG),
62 VI_TVMODE_DEBUG_INT = VI_TVMODE(VI_TVFORMAT_DEBUG, VI_SCANMODE_INT),
64 VI_TVMODE_DEBUG_PAL_INT = VI_TVMODE(VI_TVFORMAT_DEBUG_PAL, VI_SCANMODE_INT),
65 VI_TVMODE_DEBUG_PAL_DS = VI_TVMODE(VI_TVFORMAT_DEBUG_PAL, VI_SCANMODE_DS),
68typedef void (*VIRetraceCallback)(u32 retraceCount);
69typedef void (*VIPositionCallback)(s16 displayX, s16 displayY);
71VIRetraceCallback VISetPreRetraceCallback(VIRetraceCallback callback);
72VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback callback);
75void VIWaitForRetrace(
void);
77void VIConfigure(
const GXRenderModeObj* rmo);
78void VIConfigurePan(u16 x, u16 y, u16 w, u16 h);
81void VISetNextFrameBuffer(
void* fb);
82void* VIGetCurrentFrameBuffer(
void);
84void VISetBlack(BOOL black);
85s32 VIGetRetraceCount(
void);
87VITVFormat VIGetTvFormat(
void);
88VIScanMode VIGetScanMode(
void);
89u32 VIGetDTVStatus(
void);