mirror of https://github.com/zeldaret/mm.git
139 lines
3.8 KiB
C
139 lines
3.8 KiB
C
#ifndef PR_OS_VI_H
|
|
#define PR_OS_VI_H
|
|
|
|
#include "PR/ultratypes.h"
|
|
#include "PR/os_message.h"
|
|
|
|
/* Special Features */
|
|
#define OS_VI_GAMMA_ON (1 << 0)
|
|
#define OS_VI_GAMMA_OFF (1 << 1)
|
|
#define OS_VI_GAMMA_DITHER_ON (1 << 2)
|
|
#define OS_VI_GAMMA_DITHER_OFF (1 << 3)
|
|
#define OS_VI_DIVOT_ON (1 << 4)
|
|
#define OS_VI_DIVOT_OFF (1 << 5)
|
|
#define OS_VI_DITHER_FILTER_ON (1 << 6)
|
|
#define OS_VI_DITHER_FILTER_OFF (1 << 7)
|
|
|
|
#define OS_VI_GAMMA 0x08
|
|
#define OS_VI_GAMMA_DITHER 0x04
|
|
#define OS_VI_DIVOT 0x10
|
|
#define OS_VI_DITHER_FILTER 0x10000
|
|
#define OS_VI_UNK1 0x1
|
|
#define OS_VI_UNK2 0x2
|
|
#define OS_VI_UNK40 0x40
|
|
#define OS_VI_UNK100 0x100
|
|
#define OS_VI_UNK200 0x200
|
|
#define OS_VI_UNK1000 0x1000
|
|
#define OS_VI_UNK2000 0x2000
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u32 ctrl;
|
|
/* 0x04 */ u32 width;
|
|
/* 0x08 */ u32 burst;
|
|
/* 0x0C */ u32 vSync;
|
|
/* 0x10 */ u32 hSync;
|
|
/* 0x14 */ u32 leap;
|
|
/* 0x18 */ u32 hStart;
|
|
/* 0x1C */ u32 xScale;
|
|
/* 0x20 */ u32 vCurrent;
|
|
} OSViCommonRegs; // size = 0x20
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u32 origin;
|
|
/* 0x04 */ u32 yScale;
|
|
/* 0x08 */ u32 vStart;
|
|
/* 0x0C */ u32 vBurst;
|
|
/* 0x10 */ u32 vIntr;
|
|
} OSViFieldRegs; // size = 0x14
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 type;
|
|
/* 0x04 */ OSViCommonRegs comRegs;
|
|
/* 0x24 */ OSViFieldRegs fldRegs[2];
|
|
} OSViMode; // size = 0x4C
|
|
|
|
|
|
#define OS_VI_NTSC_LPN1 0 /* NTSC */
|
|
#define OS_VI_NTSC_LPF1 1
|
|
#define OS_VI_NTSC_LAN1 2
|
|
#define OS_VI_NTSC_LAF1 3
|
|
#define OS_VI_NTSC_LPN2 4
|
|
#define OS_VI_NTSC_LPF2 5
|
|
#define OS_VI_NTSC_LAN2 6
|
|
#define OS_VI_NTSC_LAF2 7
|
|
#define OS_VI_NTSC_HPN1 8
|
|
#define OS_VI_NTSC_HPF1 9
|
|
#define OS_VI_NTSC_HAN1 10
|
|
#define OS_VI_NTSC_HAF1 11
|
|
#define OS_VI_NTSC_HPN2 12
|
|
#define OS_VI_NTSC_HPF2 13
|
|
|
|
#define OS_VI_PAL_LPN1 14 /* PAL */
|
|
#define OS_VI_PAL_LPF1 15
|
|
#define OS_VI_PAL_LAN1 16
|
|
#define OS_VI_PAL_LAF1 17
|
|
#define OS_VI_PAL_LPN2 18
|
|
#define OS_VI_PAL_LPF2 19
|
|
#define OS_VI_PAL_LAN2 20
|
|
#define OS_VI_PAL_LAF2 21
|
|
#define OS_VI_PAL_HPN1 22
|
|
#define OS_VI_PAL_HPF1 23
|
|
#define OS_VI_PAL_HAN1 24
|
|
#define OS_VI_PAL_HAF1 25
|
|
#define OS_VI_PAL_HPN2 26
|
|
#define OS_VI_PAL_HPF2 27
|
|
|
|
#define OS_VI_MPAL_LPN1 28 /* MPAL */
|
|
#define OS_VI_MPAL_LPF1 29
|
|
#define OS_VI_MPAL_LAN1 30
|
|
#define OS_VI_MPAL_LAF1 31
|
|
#define OS_VI_MPAL_LPN2 32
|
|
#define OS_VI_MPAL_LPF2 33
|
|
#define OS_VI_MPAL_LAN2 34
|
|
#define OS_VI_MPAL_LAF2 35
|
|
#define OS_VI_MPAL_HPN1 36
|
|
#define OS_VI_MPAL_HPF1 37
|
|
#define OS_VI_MPAL_HAN1 38
|
|
#define OS_VI_MPAL_HAF1 39
|
|
#define OS_VI_MPAL_HPN2 40
|
|
#define OS_VI_MPAL_HPF2 41
|
|
|
|
#define OS_VI_FPAL_LPN1 42 /* FPAL */
|
|
#define OS_VI_FPAL_LPF1 43
|
|
#define OS_VI_FPAL_LAN1 44
|
|
#define OS_VI_FPAL_LAF1 45
|
|
#define OS_VI_FPAL_LPN2 46
|
|
#define OS_VI_FPAL_LPF2 47
|
|
#define OS_VI_FPAL_LAN2 48
|
|
#define OS_VI_FPAL_LAF2 49
|
|
#define OS_VI_FPAL_HPN1 50
|
|
#define OS_VI_FPAL_HPF1 51
|
|
#define OS_VI_FPAL_HAN1 52
|
|
#define OS_VI_FPAL_HAF1 53
|
|
#define OS_VI_FPAL_HPN2 54
|
|
#define OS_VI_FPAL_HPF2 55
|
|
|
|
#define OS_VI_UNK28 28
|
|
|
|
|
|
extern OSViMode osViModeNtscHpf1;
|
|
extern OSViMode osViModePalLan1;
|
|
extern OSViMode osViModeNtscHpn1;
|
|
extern OSViMode osViModeNtscLan1;
|
|
extern OSViMode osViModeMpalLan1;
|
|
extern OSViMode osViModeFpalLan1;
|
|
|
|
void* osViGetCurrentFramebuffer(void);
|
|
void* osViGetNextFramebuffer(void);
|
|
void osViSetXScale(f32 value);
|
|
void osViSetYScale(f32 value);
|
|
void osViExtendVStart(u32 a0);
|
|
void osViSetSpecialFeatures(u32 func);
|
|
void osViSetMode(OSViMode* modep);
|
|
void osViSetEvent(OSMesgQueue* mq, OSMesg m, u32 retraceCount);
|
|
void osViSwapBuffer(void* frameBufPtr);
|
|
void osViBlack(u8 active);
|
|
void osCreateViManager(OSPri pri);
|
|
|
|
#endif
|