151 lines
4.8 KiB
C
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
|
|
|
|
|