|
|
| version 1.5, 2004/02/20 15:20:30 | version 1.10, 2004/02/22 00:05:56 |
|---|---|
| Line 9 typedef struct { | Line 9 typedef struct { |
| BYTE pal; | BYTE pal; |
| } GPSET; | } GPSET; |
| typedef struct { | |
| BYTE x[2]; | |
| BYTE y[2]; | |
| } GPOINT2; | |
| // ---- CLS | |
| REG8 lio_gcls(LIOWORK lio) { | // ---- PSET |
| REG8 lio_gpset(GLIO lio) { | |
| GPSET dat; | |
| SINT16 x; | |
| SINT16 y; | SINT16 y; |
| lio_updaterange(lio); | lio_updatedraw(lio); |
| for (y=lio->range.y1; y<=lio->range.y2; y++) { | i286_memstr_read(CPU_DS, CPU_BX, &dat, sizeof(dat)); |
| lio_line(lio, lio->range.x1, lio->range.x2, y, lio->gcolor1.bgcolor); | x = (SINT16)LOADINTELWORD(dat.x); |
| y = (SINT16)LOADINTELWORD(dat.y); | |
| if (dat.pal == 0xff) { | |
| if (CPU_AH == 1) { | |
| dat.pal = lio->work.fgcolor; | |
| } | |
| else { | |
| dat.pal = lio->work.bgcolor; | |
| } | |
| } | } |
| lio_pset(lio, x, y, dat.pal); | |
| return(LIO_SUCCESS); | return(LIO_SUCCESS); |
| } | } |
| // ---- PSET | // ---- GPOINT2 |
| REG8 lio_gpset(LIOWORK lio) { | REG8 lio_gpoint2(GLIO lio) { |
| GPSET dat; | GPOINT2 dat; |
| SINT16 x; | SINT16 x; |
| SINT16 y; | SINT16 y; |
| REG8 ret; | |
| UINT32 addr; | |
| UINT sft; | |
| UINT pl; | |
| const BYTE *ptr; | |
| lio_updaterange(lio); | lio_updatedraw(lio); |
| i286_memstr_read(CPU_DS, CPU_BX, &dat, sizeof(dat)); | i286_memstr_read(CPU_DS, CPU_BX, &dat, sizeof(dat)); |
| if (dat.pal >= lio->gcolor1.palmax) { | x = (SINT16)LOADINTELWORD(dat.x); |
| if (CPU_AH == 2) { | y = (SINT16)LOADINTELWORD(dat.y); |
| dat.pal = lio->gcolor1.bgcolor; | if ((lio->draw.x1 > x) || (lio->draw.x2 < x) || |
| (lio->draw.y1 > y) || (lio->draw.y2 < y)) { | |
| ret = 0xff; | |
| } | |
| else { | |
| ret = 0; | |
| addr = (x >> 3) + (y * 80); | |
| if (lio->draw.flag & LIODRAW_UPPER) { | |
| addr += 16000; | |
| } | |
| addr += lio->draw.base; | |
| sft = (~x) & 7; | |
| if (!(lio->draw.flag & LIODRAW_MONO)) { | |
| for (pl=0; pl<3; pl++) { | |
| ptr = mem + addr + lioplaneadrs[pl]; | |
| ret += (((*ptr) >> sft) & 1) << pl; | |
| } | |
| if (lio->draw.flag & LIODRAW_4BPP) { | |
| ptr = mem + addr + lioplaneadrs[3]; | |
| ret += (((*ptr) >> sft) & 1) << 3; | |
| } | |
| } | } |
| else { | else { |
| dat.pal = lio->gcolor1.fgcolor; | ptr = mem + addr + lioplaneadrs[lio->draw.flag & LIODRAW_PMASK]; |
| ret = ((*ptr) >> sft) & 1; | |
| } | } |
| } | } |
| x = (SINT16)LOADINTELWORD(dat.x); | CPU_AL = ret; |
| y = (SINT16)LOADINTELWORD(dat.y); | |
| lio_pset(lio, x, y, dat.pal); | |
| return(LIO_SUCCESS); | return(LIO_SUCCESS); |
| } | } |