kopia lustrzana https://github.com/Jean-MarcHarvengt/MCUME
49 wiersze
1.8 KiB
C
Executable File
49 wiersze
1.8 KiB
C
Executable File
// ****************************************************************************
|
|
//
|
|
// VGA output
|
|
//
|
|
// file derived from the PicoVGA project
|
|
// https://github.com/Panda381/PicoVGA
|
|
// by Miroslav Nemecek
|
|
//
|
|
// ****************************************************************************
|
|
|
|
#ifndef _VGA_H
|
|
#define _VGA_H
|
|
|
|
// scanline type
|
|
#define LINE_VSYNC 0 // long vertical sync
|
|
#define LINE_DARK 1 // dark line
|
|
#define LINE_IMG 2 // progressive image 0, 1, 2,...
|
|
|
|
extern u8 ScanlineType[MAXLINE];
|
|
|
|
extern sVmode CurVmode; // copy of current videomode table
|
|
extern volatile int ScanLine; // current scan line 1...
|
|
extern volatile u32 Frame; // frame counter
|
|
extern volatile int BufInx; // current buffer set (0..1)
|
|
extern volatile Bool VSync; // current scan line is vsync or dark
|
|
|
|
// line buffers
|
|
extern u32 LineBufHsBp[4]; // HSYNC ... back porch-1 ... IRQ command ... image command
|
|
extern u32 LineBufFp; // front porch+1
|
|
extern u32 LineBufDark[2]; // HSYNC ... dark line
|
|
extern u32 LineBufSync[10]; // vertical synchronization
|
|
|
|
// control buffers
|
|
extern u32 CtrlBuf1[CBUF_MAX]; // control pairs: u32 count, read address (must be terminated with [0,0])
|
|
extern u32 CtrlBuf2[CBUF_MAX]; // control pairs: u32 count, read address (must be terminated with [0,0])
|
|
|
|
|
|
// initialize scanline type table
|
|
void ScanlineTypeInit(const sVmode* v);
|
|
|
|
// initialize videomode (returns False on bad configuration)
|
|
// - All layer modes must use same layer program (LAYERMODE_BASE = overlapped layers are OFF)
|
|
void VgaInit(const sVmode* vmode, u8* buf, int width, int height, int stride); //, u8 layer1mode=LAYERMODE_BASE, u8 layer2mode=LAYERMODE_BASE, u8 layer3mode=LAYERMODE_BASE);
|
|
|
|
// wait for VSync scanline
|
|
void WaitVSync();
|
|
|
|
#endif // _VGA_H
|