--- np2/lio/lio.h 2004/02/20 08:32:23 1.2 +++ np2/lio/lio.h 2004/02/21 04:48:35 1.6 @@ -7,86 +7,81 @@ enum { typedef struct { - BYTE mode; - BYTE sw; - BYTE act; - BYTE disp; -} LIOGSCREEN; + UINT8 scrnmode; + UINT8 pos; + UINT8 plane; + UINT8 fgcolor; + UINT8 bgcolor; + UINT8 padding; + UINT8 color[8]; + BYTE viewx1[2]; + BYTE viewy1[2]; + BYTE viewx2[2]; + BYTE viewy2[2]; + UINT8 disp; + UINT8 access; +} LIOMEM; + +enum { + LIODRAW_PMASK = 0x03, + LIODRAW_MONO = 0x04, + LIODRAW_UPPER = 0x20, + LIODRAW_4BPP = 0x40 +}; typedef struct { SINT16 x1; SINT16 y1; SINT16 x2; SINT16 y2; - BYTE vdraw_bg; - BYTE vdraw_ln; -} LIOGVIEW; - -typedef struct { + UINT32 base; + UINT8 flag; UINT8 palmax; - UINT8 bgcolor; - UINT8 bdcolor; - UINT8 fgcolor; - UINT8 palmode; -} LIOGCOLOR1; - + UINT8 bank; + UINT8 sbit; +} LIODRAW; -// ---- typedef struct { - UINT16 top; - UINT16 lines; - BYTE bank; - BYTE plane; - BYTE disp; - BYTE dbit; -} LIO_SCRN; - - -typedef struct { - SINT16 x1; - SINT16 y1; - SINT16 x2; - SINT16 y2; - BYTE degcol[8]; + LIOMEM mem; + UINT8 palmode; - LIO_SCRN scrn; - LIOGSCREEN gscreen; - LIOGVIEW gview; - LIOGCOLOR1 gcolor1; -} LIO_TABLE; + // ---- work + UINT32 wait; + LIODRAW draw; +} _LIOWORK, *LIOWORK; #ifdef __cplusplus extern "C" { #endif -extern LIO_TABLE lio; +extern const UINT32 lioplaneadrs[4]; void lio_initialize(void); void bios_lio(REG8 cmd); -void lio_makeviewmask(void); -void lio_pset(SINT16 x, SINT16 y, BYTE pal); -void lio_line(SINT16 x1, SINT16 x2, SINT16 y, BYTE pal); - -BYTE lio_ginit(void); -BYTE lio_gscreen(void); -REG8 lio_gview(void); -REG8 lio_gcolor1(void); -REG8 lio_gcolor2(void); -BYTE lio_gcls(void); -REG8 lio_gpset(void); -BYTE lio_gline(void); -BYTE lio_gcircle(void); -BYTE lio_gpaint1(void); -BYTE lio_gpaint2(void); -BYTE lio_gget(void); -BYTE lio_gput1(void); -REG8 lio_gput2(void); -BYTE lio_groll(void); -BYTE lio_gpoint2(void); -BYTE lio_gcopy(void); +void lio_updatedraw(LIOWORK lio); +void lio_pset(const _LIOWORK *lio, SINT16 x, SINT16 y, REG8 pal); +void lio_line(const _LIOWORK *lio, SINT16 x1, SINT16 x2, SINT16 y, REG8 pal); + +REG8 lio_ginit(LIOWORK lio); +REG8 lio_gscreen(LIOWORK lio); +REG8 lio_gview(LIOWORK lio); +REG8 lio_gcolor1(LIOWORK lio); +REG8 lio_gcolor2(LIOWORK lio); +REG8 lio_gcls(LIOWORK lio); +REG8 lio_gpset(LIOWORK lio); +REG8 lio_gline(LIOWORK lio); +REG8 lio_gcircle(LIOWORK lio); +REG8 lio_gpaint1(LIOWORK lio); +REG8 lio_gpaint2(LIOWORK lio); +REG8 lio_gget(LIOWORK lio); +REG8 lio_gput1(LIOWORK lio); +REG8 lio_gput2(LIOWORK lio); +REG8 lio_groll(LIOWORK lio); +REG8 lio_gpoint2(LIOWORK lio); +REG8 lio_gcopy(LIOWORK lio); #ifdef __cplusplus }