Cxbx-Reloaded/import/OpenXDK/include/xhal/xvga_def.h

151 lines
4.8 KiB
C

// ******************************************************************
// *
// * proj : OpenXDK
// *
// * desc : Open Source XBox Development Kit
// *
// * file : xvga_def.h
// *
// * note : XBox VGA (#defines)
// *
// ******************************************************************
#ifndef XVGA_DEF_H
#define XVGA_DEF_H
#ifdef __cplusplus
extern "C" {
#endif
extern u8 SystemFont[]; // handy to use system font
extern u8 *pFont; // point to the system Font by default. You can change it to your own
extern u32 pScreenBuffer[]; // Our screen (software emulated for LOW res just now)
extern u32 FrontBuffer; // Current screen address (visible)
extern u32 BackBuffer; // Current back buffer
extern u32 _FrontBuffer; // Current screen address (visible)
extern u32 _BackBuffer; // Current back buffer
extern u32 _Framebuffer;
// ******************************************************************
// * Internal
// ******************************************************************
#define XBV_BASE 0xfd601000
#define XBV_ATTR_REG_INDEX 0xfd6013c0
#define XBV_ATTR_REG_DATA 0xfd6013c1
#define XBV_ATTR_REG_INDEX2 0xfd6013c2
#define XBV_ATTR_REG_INDEX3 0xfd6013c3
#define XBV_CRTC_REG_INDEX 0xfd6013d4
#define XBV_CRTC_REG_DATA 0xfd6013d5
#define XBV_GRA_REG_INDEX 0xfd0C03ce
#define XBV_GRA_REG_DATA 0xfd0C03cf
#define XBV_SEQ_REG_INDEX 0xfd0C03c4
#define XBV_SEQ_REG_DATA 0xfd0C03c5
#define XBV_MISC_REG 0xfd0C03c2
#define VBL 0xfd6013da
#define XBV_COLOUR_REG 0xfd6013c8
#define XBV_COLOUR_DATA 0xfd6013c9
#define XBOX_SCREENRAM 0x8003d000 // Xbox screen RAM starts here (power on default)
// ******************************************************************
// * System flags
// ******************************************************************
#define XHAL_320SCREEN (1) // Software emulation of 320x??? mode
#define YHAL_200SCREEN (2) // Center 200 screen inside a 240 one
// This might be able to be safely removed now
extern int _fltused;
// ******************************************************************
// * Register
// ******************************************************************
typedef struct
{
short port;
unsigned char index;
unsigned char value;
}
Register;
#define ATTRCON_ADDR 0x3c0
#define MISC_ADDR 0x3c2
#define VGAENABLE_ADDR 0x3c3
#define SEQ_ADDR 0x3c4
#define GRACON_ADDR 0x3ce
#define CRTC_ADDR 0x3d4
#define STATUS_ADDR 0x3da
/*
xxxxADDR defines the base port number used to access VGA component xxxx,
and is defined for xxxx =
ATTRCON - Attribute Controller
MISC - Miscellaneous Register
VGAENABLE - VGA Enable Register
SEQ - Sequencer
GRACON - Graphics Controller
CRTC - Cathode Ray Tube Controller
STATUS - Status Register
*/
// ******************************************************************
// * VGA Registers
// ******************************************************************
#define VGAREG_ACTL_ADDRESS 0x3c0
#define VGAREG_ACTL_WRITE_DATA 0x3c0
#define VGAREG_ACTL_READ_DATA 0x3c1
#define VGAREG_INPUT_STATUS 0x3c2
#define VGAREG_WRITE_MISC_OUTPUT 0x3c2
#define VGAREG_VIDEO_ENABLE 0x3c3
#define VGAREG_SEQU_ADDRESS 0x3c4
#define VGAREG_SEQU_DATA 0x3c5
#define VGAREG_PEL_MASK 0x3c6
#define VGAREG_DAC_STATE 0x3c7
#define VGAREG_DAC_READ_ADDRESS 0x3c7
#define VGAREG_DAC_WRITE_ADDRESS 0x3c8
#define VGAREG_DAC_DATA 0x3c9
#define VGAREG_READ_FEATURE_CTL 0x3ca
#define VGAREG_READ_MISC_OUTPUT 0x3cc
#define VGAREG_GRDC_ADDRESS 0x3ce
#define VGAREG_GRDC_DATA 0x3cf
#define VGAREG_MDA_CRTC_ADDRESS 0x3b4
#define VGAREG_MDA_CRTC_DATA 0x3b5
#define VGAREG_VGA_CRTC_ADDRESS 0x3d4
#define VGAREG_VGA_CRTC_DATA 0x3d5
#define VGAREG_MDA_WRITE_FEATURE_CTL 0x3ba
#define VGAREG_VGA_WRITE_FEATURE_CTL 0x3da
#define VGAREG_ACTL_RESET 0x3da
#define VGAREG_MDA_MODECTL 0x3b8
#define VGAREG_CGA_MODECTL 0x3d8
#define VGAREG_CGA_PALETTE 0x3d9
/* Video memory */
#define VGAMEM_GRAPH 0xA000
#define VGAMEM_CTEXT 0xB800
#define VGAMEM_MTEXT 0xB000
Register Mode320x200[];
// ******************************************************************
// * functions needed for xvga.c
// ******************************************************************
void outportb(int port, unsigned char data);
void readyVgaRegs(void);
void outReg(Register r);
void vga_set_reg( int port, int reg, int data );
void vga_set_color( int reg, int R, int G, int B );
#ifdef __cplusplus
}
#endif
#endif // XVGA_DEF_H