Diff for /np2/lio/gcircle.c between versions 1.1 and 1.4

version 1.1, 2004/06/03 13:35:28 version 1.4, 2005/02/07 14:46:12
Line 2 Line 2
 #include        "cpucore.h"  #include        "cpucore.h"
 #include        "lio.h"  #include        "lio.h"
   
   typedef struct {
           UINT8   cx[2];
           UINT8   cy[2];
           UINT8   rx[2];
           UINT8   ry[2];
           UINT8   pal;
           UINT8   flag;
           UINT8   sx[2];
           UINT8   sy[2];
           UINT8   ex[2];
           UINT8   ey[2];
           UINT8   pat;
           UINT8   off[2];
           UINT8   seg[2];
   } GCIRCLE;
   
   
   // ---- GCIRCLE
   
   static void draw4(const _GLIO *lio, SINT16 x, SINT16 y,
                                                                                           SINT16 d1, SINT16 d2, REG8 pal) {
   
           SINT16  x1;
           SINT16  x2;
           SINT16  y1;
           SINT16  y2;
   
           x1 = x - d1;
           x2 = x + d1;
           y1 = y - d2;
           y2 = y + d2;
           lio_pset(lio, x1, y1, pal);
           lio_pset(lio, x1, y2, pal);
           lio_pset(lio, x2, y1, pal);
           lio_pset(lio, x2, y2, pal);
   }
   
   REG8 lio_gcircle(GLIO lio) {
   
           GCIRCLE dat;
           SINT16  cx;
           SINT16  cy;
           SINT16  rx;
           SINT16  ry;
           REG8    pal;
           SINT16  d1;
           SINT16  d2;
           SINT16  d3;
   
           lio_updatedraw(lio);
           MEML_READSTR(CPU_DS, CPU_BX, &dat, sizeof(dat));
   
           // チェック
           if (dat.flag & 0x7f) {
                   TRACEOUT(("LIO GCIRCLE not support flags: %.2x", dat.flag));
           }
           cx = (SINT16)LOADINTELWORD(dat.cx);
           cy = (SINT16)LOADINTELWORD(dat.cy);
           rx = (SINT16)LOADINTELWORD(dat.rx);
           ry = (SINT16)LOADINTELWORD(dat.ry);
           pal = dat.pal;
           if (pal == 0xff) {
                   pal = lio->work.fgcolor;
           }
   
           if (rx != ry) {
                   TRACEOUT(("LIO GCIRCLE not support ellipse"));
                   return(LIO_SUCCESS);
           }
   
           // 単純な円の描画
           d1 = 0;
           d2 = ry;
           d3 = 0 - ry;
           while(d1 <= d2) {
                   draw4(lio, cx, cy, d1, d2, pal);
                   draw4(lio, cx, cy, d2, d1, pal);
                   lio->wait += 8 * (10 + 10 + 10);
                   d1++;
                   d3 += (d1 * 2) - 1;
                   if (d3 >= 0) {
                           d2--;
                           d3 -= d2 * 2;
                   }
           }
           return(LIO_SUCCESS);
   }
   

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


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