2021-09-25 09:31:44 +02:00
|
|
|
|
|
|
|
/*====================================================================
|
|
|
|
* os_vi.h
|
|
|
|
*
|
|
|
|
* Copyright 1995, Silicon Graphics, Inc.
|
|
|
|
* All Rights Reserved.
|
|
|
|
*
|
|
|
|
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
|
|
|
|
* Inc.; the contents of this file may not be disclosed to third
|
|
|
|
* parties, copied or duplicated in any form, in whole or in part,
|
|
|
|
* without the prior written permission of Silicon Graphics, Inc.
|
|
|
|
*
|
|
|
|
* RESTRICTED RIGHTS LEGEND:
|
|
|
|
* Use, duplication or disclosure by the Government is subject to
|
|
|
|
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
|
|
|
|
* in Technical Data and Computer Software clause at DFARS
|
|
|
|
* 252.227-7013, and/or in similar or successor clauses in the FAR,
|
|
|
|
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
|
|
|
|
* Copyright Laws of the United States.
|
|
|
|
*====================================================================*/
|
|
|
|
|
|
|
|
/*---------------------------------------------------------------------*
|
|
|
|
Copyright (C) 1998 Nintendo. (Originated by SGI)
|
|
|
|
|
|
|
|
$RCSfile: os_vi.h,v $
|
|
|
|
$Revision: 1.1 $
|
|
|
|
$Date: 1998/10/09 08:01:20 $
|
|
|
|
*---------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
#ifndef _OS_VI_H_
|
|
|
|
#define _OS_VI_H_
|
|
|
|
|
|
|
|
#ifdef _LANGUAGE_C_PLUS_PLUS
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <PR/ultratypes.h>
|
|
|
|
#include "os_thread.h"
|
|
|
|
#include "os_message.h"
|
|
|
|
|
|
|
|
|
|
|
|
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
*
|
|
|
|
* Type definitions
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Structure to store VI register values that remain the same between 2 fields
|
|
|
|
*/
|
|
|
|
typedef struct {
|
|
|
|
u32 ctrl;
|
|
|
|
u32 width;
|
|
|
|
u32 burst;
|
|
|
|
u32 vSync;
|
|
|
|
u32 hSync;
|
|
|
|
u32 leap;
|
|
|
|
u32 hStart;
|
|
|
|
u32 xScale;
|
|
|
|
u32 vCurrent;
|
|
|
|
} OSViCommonRegs;
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Structure to store VI register values that change between fields
|
|
|
|
*/
|
|
|
|
typedef struct {
|
|
|
|
u32 origin;
|
|
|
|
u32 yScale;
|
|
|
|
u32 vStart;
|
|
|
|
u32 vBurst;
|
|
|
|
u32 vIntr;
|
|
|
|
} OSViFieldRegs;
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Structure for VI mode
|
|
|
|
*/
|
|
|
|
typedef struct {
|
|
|
|
u8 type; /* Mode type */
|
|
|
|
OSViCommonRegs comRegs; /* Common registers for both fields */
|
|
|
|
OSViFieldRegs fldRegs[2]; /* Registers for Field 1 & 2 */
|
|
|
|
} OSViMode;
|
|
|
|
|
|
|
|
|
|
|
|
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
*
|
|
|
|
* Global definitions
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Video Interface (VI) mode type
|
|
|
|
*/
|
|
|
|
#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 - mainly Brazil */
|
|
|
|
#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 - Full screen PAL */
|
|
|
|
#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
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Video Interface (VI) special features
|
|
|
|
*/
|
|
|
|
#define OS_VI_GAMMA_ON 0x0001
|
|
|
|
#define OS_VI_GAMMA_OFF 0x0002
|
|
|
|
#define OS_VI_GAMMA_DITHER_ON 0x0004
|
|
|
|
#define OS_VI_GAMMA_DITHER_OFF 0x0008
|
|
|
|
#define OS_VI_DIVOT_ON 0x0010
|
|
|
|
#define OS_VI_DIVOT_OFF 0x0020
|
|
|
|
#define OS_VI_DITHER_FILTER_ON 0x0040
|
|
|
|
#define OS_VI_DITHER_FILTER_OFF 0x0080
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Video Interface (VI) mode attribute bit
|
|
|
|
*/
|
|
|
|
#define OS_VI_BIT_NONINTERLACE 0x0001 /* lo-res */
|
|
|
|
#define OS_VI_BIT_INTERLACE 0x0002 /* lo-res */
|
|
|
|
#define OS_VI_BIT_NORMALINTERLACE 0x0004 /* hi-res */
|
|
|
|
#define OS_VI_BIT_DEFLICKINTERLACE 0x0008 /* hi-res */
|
|
|
|
#define OS_VI_BIT_ANTIALIAS 0x0010
|
|
|
|
#define OS_VI_BIT_POINTSAMPLE 0x0020
|
|
|
|
#define OS_VI_BIT_16PIXEL 0x0040
|
|
|
|
#define OS_VI_BIT_32PIXEL 0x0080
|
|
|
|
#define OS_VI_BIT_LORES 0x0100
|
|
|
|
#define OS_VI_BIT_HIRES 0x0200
|
|
|
|
#define OS_VI_BIT_NTSC 0x0400
|
|
|
|
#define OS_VI_BIT_PAL 0x0800
|
|
|
|
|
|
|
|
|
|
|
|
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
*
|
|
|
|
* Macro definitions
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
*
|
|
|
|
* Extern variables
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
extern OSViMode osViModeTable[]; /* Global VI mode table */
|
|
|
|
|
|
|
|
extern OSViMode osViModeNtscLpn1; /* Individual VI NTSC modes */
|
|
|
|
extern OSViMode osViModeNtscLpf1;
|
|
|
|
extern OSViMode osViModeNtscLan1;
|
|
|
|
extern OSViMode osViModeNtscLaf1;
|
|
|
|
extern OSViMode osViModeNtscLpn2;
|
|
|
|
extern OSViMode osViModeNtscLpf2;
|
|
|
|
extern OSViMode osViModeNtscLan2;
|
|
|
|
extern OSViMode osViModeNtscLaf2;
|
|
|
|
extern OSViMode osViModeNtscHpn1;
|
|
|
|
extern OSViMode osViModeNtscHpf1;
|
|
|
|
extern OSViMode osViModeNtscHan1;
|
|
|
|
extern OSViMode osViModeNtscHaf1;
|
|
|
|
extern OSViMode osViModeNtscHpn2;
|
|
|
|
extern OSViMode osViModeNtscHpf2;
|
|
|
|
|
|
|
|
extern OSViMode osViModePalLpn1; /* Individual VI PAL modes */
|
|
|
|
extern OSViMode osViModePalLpf1;
|
|
|
|
extern OSViMode osViModePalLan1;
|
|
|
|
extern OSViMode osViModePalLaf1;
|
|
|
|
extern OSViMode osViModePalLpn2;
|
|
|
|
extern OSViMode osViModePalLpf2;
|
|
|
|
extern OSViMode osViModePalLan2;
|
|
|
|
extern OSViMode osViModePalLaf2;
|
|
|
|
extern OSViMode osViModePalHpn1;
|
|
|
|
extern OSViMode osViModePalHpf1;
|
|
|
|
extern OSViMode osViModePalHan1;
|
|
|
|
extern OSViMode osViModePalHaf1;
|
|
|
|
extern OSViMode osViModePalHpn2;
|
|
|
|
extern OSViMode osViModePalHpf2;
|
|
|
|
|
|
|
|
extern OSViMode osViModeMpalLpn1; /* Individual VI MPAL modes */
|
|
|
|
extern OSViMode osViModeMpalLpf1;
|
|
|
|
extern OSViMode osViModeMpalLan1;
|
|
|
|
extern OSViMode osViModeMpalLaf1;
|
|
|
|
extern OSViMode osViModeMpalLpn2;
|
|
|
|
extern OSViMode osViModeMpalLpf2;
|
|
|
|
extern OSViMode osViModeMpalLan2;
|
|
|
|
extern OSViMode osViModeMpalLaf2;
|
|
|
|
extern OSViMode osViModeMpalHpn1;
|
|
|
|
extern OSViMode osViModeMpalHpf1;
|
|
|
|
extern OSViMode osViModeMpalHan1;
|
|
|
|
extern OSViMode osViModeMpalHaf1;
|
|
|
|
extern OSViMode osViModeMpalHpn2;
|
|
|
|
extern OSViMode osViModeMpalHpf2;
|
|
|
|
|
|
|
|
extern OSViMode osViModeFpalLpn1; /* Individual VI FPAL modes */
|
|
|
|
extern OSViMode osViModeFpalLpf1;
|
|
|
|
extern OSViMode osViModeFpalLan1;
|
|
|
|
extern OSViMode osViModeFpalLaf1;
|
|
|
|
extern OSViMode osViModeFpalLpn2;
|
|
|
|
extern OSViMode osViModeFpalLpf2;
|
|
|
|
extern OSViMode osViModeFpalLan2;
|
|
|
|
extern OSViMode osViModeFpalLaf2;
|
|
|
|
extern OSViMode osViModeFpalHpn1;
|
|
|
|
extern OSViMode osViModeFpalHpf1;
|
|
|
|
extern OSViMode osViModeFpalHan1;
|
|
|
|
extern OSViMode osViModeFpalHaf1;
|
|
|
|
extern OSViMode osViModeFpalHpn2;
|
|
|
|
extern OSViMode osViModeFpalHpf2;
|
|
|
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
*
|
|
|
|
* Function prototypes
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
/* Video interface (Vi) */
|
|
|
|
extern u32 osViGetStatus(void);
|
|
|
|
extern u32 osViGetCurrentMode(void);
|
|
|
|
extern u32 osViGetCurrentLine(void);
|
|
|
|
extern u32 osViGetCurrentField(void);
|
|
|
|
extern void *osViGetCurrentFramebuffer(void);
|
|
|
|
extern void *osViGetNextFramebuffer(void);
|
|
|
|
extern void osViSetXScale(f32);
|
|
|
|
extern void osViSetYScale(f32);
|
|
|
|
extern void osViExtendVStart(u32);
|
|
|
|
extern void osViSetSpecialFeatures(u32);
|
|
|
|
extern void osViSetMode(OSViMode *);
|
|
|
|
extern void osViSetEvent(OSMesgQueue *, OSMesg, u32);
|
|
|
|
extern void osViSwapBuffer(void *);
|
|
|
|
extern void osViBlack(u8);
|
|
|
|
extern void osViFade(u8, u16);
|
|
|
|
extern void osViRepeatLine(u8);
|
|
|
|
extern void osCreateViManager(OSPri);
|
|
|
|
|
|
|
|
|
|
|
|
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
|
|
|
|
|
|
|
|
#ifdef _LANGUAGE_C_PLUS_PLUS
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif /* !_OS_VI_H_ */
|