Diff for /np2/lio/gpset.c between versions 1.4 and 1.13

version 1.4, 2004/02/20 08:32:23 version 1.13, 2005/05/20 13:59:47
Line 4 Line 4
   
   
 typedef struct {  typedef struct {
         BYTE    x[2];          UINT8   x[2];
         BYTE    y[2];          UINT8   y[2];
         BYTE    pal;          UINT8   pal;
 } LIOGPSET;  } GPSET;
   
   typedef struct {
 REG8 lio_gpset(void) {          UINT8   x[2];
           UINT8   y[2];
         LIOGPSET        gpset;  } GPOINT2;
         SINT16          x;  
         SINT16          y;  
   // ---- PSET
         i286_memstr_read(CPU_DS, CPU_BX, &gpset, sizeof(gpset));  
         if (gpset.pal >= lio.gcolor1.palmax) {  REG8 lio_gpset(GLIO lio) {
                 if (CPU_AH == 2) {  
                         gpset.pal = lio.gcolor1.bgcolor;          GPSET   dat;
           SINT16  x;
           SINT16  y;
   
           lio_updatedraw(lio);
           MEMR_READS(CPU_DS, CPU_BX, &dat, sizeof(dat));
           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);
   }
   
   
   // ---- GPOINT2
   
   REG8 lio_gpoint2(GLIO lio) {
   
           GPOINT2 dat;
           SINT16  x;
           SINT16  y;
           REG8    ret;
           UINT32  addr;
           UINT    sft;
           UINT    pl;
   const UINT8     *ptr;
   
           lio_updatedraw(lio);
           MEMR_READS(CPU_DS, CPU_BX, &dat, sizeof(dat));
           x = (SINT16)LOADINTELWORD(dat.x);
           y = (SINT16)LOADINTELWORD(dat.y);
           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 {
                         gpset.pal = lio.gcolor1.fgcolor;                          ptr = mem + addr + lioplaneadrs[lio->draw.flag & LIODRAW_PMASK];
                           ret = ((*ptr) >> sft) & 1;
                 }                  }
         }          }
         x = (SINT16)LOADINTELWORD(gpset.x);          CPU_AL = ret;
         y = (SINT16)LOADINTELWORD(gpset.y);  
         lio_pset(x, y, gpset.pal);  
         return(LIO_SUCCESS);          return(LIO_SUCCESS);
 }  }
   

Removed from v.1.4  
changed lines
  Added in v.1.13


RetroPC.NET-CVS <cvs@retropc.net>