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

version 1.1, 2004/06/03 13:35:28 version 1.2, 2004/06/03 15:53:40
Line 2 Line 2
 #include        "cpucore.h"  #include        "cpucore.h"
 #include        "lio.h"  #include        "lio.h"
   
   typedef struct {
           BYTE    cx[2];
           BYTE    cy[2];
           BYTE    rx[2];
           BYTE    ry[2];
           BYTE    pal;
           BYTE    flag;
           BYTE    sx[2];
           BYTE    sy[2];
           BYTE    ex[2];
           BYTE    ey[2];
           BYTE    pat;
           BYTE    off[2];
           BYTE    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);
                   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.2


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