PCem
view src/vid_svga.h @ 121:173e1f058566
Fixed cursor in interlaced modes on S3 Vision864/Trio32/Trio64.
| author | TomW |
|---|---|
| date | Wed Jul 09 22:12:59 2014 +0100 |
| parents | 036dc3a418ac |
| children | 24b744b9a632 |
line source
1 typedef struct svga_t
2 {
3 mem_mapping_t mapping;
5 uint8_t crtcreg;
6 uint8_t crtc[128];
7 uint8_t gdcreg[16];
8 int gdcaddr;
9 uint8_t attrregs[32];
10 int attraddr, attrff;
11 uint8_t seqregs[64];
12 int seqaddr;
14 uint8_t miscout;
15 int vidclock;
17 uint32_t vram_limit;
19 uint8_t la, lb, lc, ld;
21 uint8_t dac_mask, dac_status;
22 int dac_read, dac_write, dac_pos;
24 uint8_t cgastat;
26 uint8_t plane_mask;
28 int fb_only;
30 int fast;
31 uint8_t colourcompare, colournocare;
32 int readmode, writemode, readplane;
33 int chain4;
34 uint8_t writemask;
35 uint32_t charseta, charsetb;
37 uint8_t egapal[16];
38 uint32_t pallook[256];
39 PALETTE vgapal;
41 int vtotal, dispend, vsyncstart, split, vblankstart;
42 int hdisp, hdisp_old, htotal, hdisp_time, rowoffset;
43 int lowres, interlace;
44 int linedbl, rowcount;
45 double clock;
46 uint32_t ma_latch;
47 int bpp;
49 int dispontime, dispofftime;
50 int vidtime;
52 uint8_t scrblank;
54 int dispon;
55 int hdisp_on;
57 uint32_t ma, maback, ca;
58 int vc;
59 int sc;
60 int linepos, vslines, linecountff, oddeven;
61 int con, cursoron, blink;
62 int scrollcache;
64 int firstline, lastline;
65 int firstline_draw, lastline_draw;
66 int displine;
68 uint8_t *vram;
69 uint8_t *changedvram;
70 int vrammask;
71 uint32_t banked_mask;
73 uint32_t write_bank, read_bank;
75 int fullchange;
77 int video_res_x, video_res_y, video_bpp;
78 int frames, fps;
80 struct
81 {
82 int ena;
83 int x, y;
84 int xoff, yoff;
85 int ysize;
86 uint32_t addr;
87 int v_acc, h_acc;
88 } hwcursor, hwcursor_latch, overlay, overlay_latch;
90 int hwcursor_on;
91 int overlay_on;
93 int hwcursor_oddeven;
94 int overlay_oddeven;
96 void (*render)(struct svga_t *svga);
97 void (*recalctimings_ex)(struct svga_t *svga);
99 void (*video_out)(uint16_t addr, uint8_t val, void *p);
100 uint8_t (*video_in) (uint16_t addr, void *p);
102 void (*hwcursor_draw)(struct svga_t *svga, int displine);
104 void (*overlay_draw)(struct svga_t *svga, int displine);
106 void *p;
107 } svga_t;
109 extern int svga_init(svga_t *svga, void *p, int memsize,
110 void (*recalctimings_ex)(struct svga_t *svga),
111 uint8_t (*video_in) (uint16_t addr, void *p),
112 void (*video_out)(uint16_t addr, uint8_t val, void *p),
113 void (*hwcursor_draw)(struct svga_t *svga, int displine),
114 void (*overlay_draw)(struct svga_t *svga, int displine));
115 extern void svga_recalctimings(svga_t *svga);
118 uint8_t svga_read(uint32_t addr, void *p);
119 uint16_t svga_readw(uint32_t addr, void *p);
120 uint32_t svga_readl(uint32_t addr, void *p);
121 void svga_write(uint32_t addr, uint8_t val, void *p);
122 void svga_writew(uint32_t addr, uint16_t val, void *p);
123 void svga_writel(uint32_t addr, uint32_t val, void *p);
124 uint8_t svga_read_linear(uint32_t addr, void *p);
125 uint16_t svga_readw_linear(uint32_t addr, void *p);
126 uint32_t svga_readl_linear(uint32_t addr, void *p);
127 void svga_write_linear(uint32_t addr, uint8_t val, void *p);
128 void svga_writew_linear(uint32_t addr, uint16_t val, void *p);
129 void svga_writel_linear(uint32_t addr, uint32_t val, void *p);
131 int svga_add_status_info(char *s, int max_len, void *p);
133 extern uint8_t svga_rotate[8][256];
135 void svga_out(uint16_t addr, uint8_t val, void *p);
136 uint8_t svga_in(uint16_t addr, void *p);
