--- xmil/io/crtc.h 2004/08/12 20:09:42 1.7 +++ xmil/io/crtc.h 2004/08/17 14:46:37 1.12 @@ -7,7 +7,9 @@ enum { CRTC_PALB = 0, CRTC_PALR = 1, CRTC_PALG = 2, - CRTC_PLY = 3 + CRTC_PLY = 3, + CRTC_BLACK = 4, + CRTC_RGBPMAX = 5 }; #define PAL_NORMAL 0x00 @@ -74,60 +76,72 @@ enum { CRTCREG_VDISP = 6, CRTCREG_VSYNC = 7, CRTCREG_CHRCY = 9, - CRTCREG_POSL = 12, - CRTCREG_POSH = 13, + CRTCREG_POSH = 12, + CRTCREG_POSL = 13, CRTCREG_MAX = 18 }; typedef struct { - UINT8 rgbp[4]; UINT8 SCRN_BITS; + UINT8 width40; UINT8 regnum; + UINT8 padding; + UINT8 rgbp[6]; UINT8 reg[CRTCREG_MAX]; - UINT8 BLACKPAL; +#if defined(SUPPORT_TURBOZ) UINT8 EXTPALMODE; UINT8 EXTGRPHPAL; UINT8 ZPRY; UINT8 lastpal; +#endif } CRTCSTAT; typedef struct { + SINT32 rasterclock8; + SINT32 rasterdisp8; + UINT fonty; + UINT yl; + SINT32 frameclock; + UINT8 *gram; // curvram UINT updatemask; // updatemsk UINT8 updatebit; // curupdt UINT8 dispmode; +#if defined(SUPPORT_TURBOZ) UINT8 pal_bank; UINT8 pal_disp; +#endif UINT pos; - UINT fonty; - UINT yl; SINT32 dispclock; SINT32 vsyncstart; SINT32 vpulseclock; - UINT vl; } CRTCEXT; +#if defined(SUPPORT_TURBOZ) typedef struct { UINT8 text[8]; UINT16 grph[2][64]; UINT16 grph4096[4096]; } CRTCPAL; +#endif typedef struct { CRTCSTAT s; CRTCEXT e; +#if defined(SUPPORT_TURBOZ) CRTCPAL p; +#endif } CRTC; // ---- -void crtc_bankupdate(void); // vrambank_patch -void crtc_regupdate(void); +void crtc_setwidth(REG8 width40); +void crtc_update(void); void IOOUTCALL crtc_o(UINT port, REG8 value); // x1_crtc_w @@ -135,27 +149,32 @@ void IOOUTCALL scrn_o(UINT port, REG8 va REG8 IOINPCALL scrn_i(UINT port); // x1_scrn_r void IOOUTCALL ply_o(UINT port, REG8 value); // x1_ply_w -REG8 IOINPCALL ply_i(UINT port); // x1_ply_r - void IOOUTCALL palette_o(UINT port, REG8 value); // x1_palet_w + +void IOOUTCALL blackctrl_o(UINT port, REG8 value); // x1_blackctrl_w +REG8 IOINPCALL blackctrl_i(UINT port); // x1_blackctrl_r + + +#if defined(SUPPORT_TURBOZ) +REG8 IOINPCALL ply_i(UINT port); // x1_ply_r REG8 IOINPCALL palette_i(UINT port); // x1_palet_r void IOOUTCALL extpal_o(UINT port, REG8 value); // x1_extpal_w REG8 IOINPCALL extpal_i(UINT port); // x1_extpal_r - void IOOUTCALL extgrphpal_o(UINT port, REG8 value); // x1_extgrphpal_w REG8 IOINPCALL extgrphpal_i(UINT port); // x1_extgrphpal_r - void IOOUTCALL exttextpal_o(UINT port, REG8 value); // x1_exttextpal_w REG8 IOINPCALL exttextpal_i(UINT port); // x1_exttextpal_r - void IOOUTCALL exttextdisp_o(UINT port, REG8 value); // x1_exttextdisp_w REG8 IOINPCALL exttextdisp_i(UINT port); // x1_exttextdisp_r +#endif -void IOOUTCALL blackctrl_o(UINT port, REG8 value); // x1_blackctrl_w -REG8 IOINPCALL blackctrl_i(UINT port); // x1_blackctrl_r +#if defined(SUPPORT_TURBOZ) void crtc_initialize(void); +#else +#define crtc_initialize() +#endif void crtc_reset(void); void crtc_forcesetwidth(REG8 width);