Diff for /np2/io/gdc.c between versions 1.15 and 1.20

version 1.15, 2004/02/11 04:22:18 version 1.20, 2004/02/19 03:04:02
Line 30  static const GDCCLK gdcclk[] = { Line 30  static const GDCCLK gdcclk[] = {
 static const UINT8 defdegpal[4] = {0x04,0x15,0x26,0x37};  static const UINT8 defdegpal[4] = {0x04,0x15,0x26,0x37};
   
 static const UINT8 defsyncm15[8] = {0x10,0x4e,0x07,0x25,0x0d,0x0f,0xc8,0x94};  static const UINT8 defsyncm15[8] = {0x10,0x4e,0x07,0x25,0x0d,0x0f,0xc8,0x94};
 static const UINT8 defsyncs15[8] = {0x06,0x26,0x03,0x11,0x86,0x0f,0xc8,0x84};  static const UINT8 defsyncs15[8] = {0x06,0x26,0x03,0x11,0x86,0x0f,0xc8,0x94};
   
 static const UINT8 defsyncm24[8] = {0x10,0x4e,0x07,0x25,0x07,0x07,0x90,0x65};  static const UINT8 defsyncm24[8] = {0x10,0x4e,0x07,0x25,0x07,0x07,0x90,0x65};
 static const UINT8 defsyncs24[8] = {0x06,0x26,0x03,0x11,0x83,0x07,0x90,0x65};  static const UINT8 defsyncs24[8] = {0x06,0x26,0x03,0x11,0x83,0x07,0x90,0x65};
Line 115  void gdc_paletteinit(void) { Line 115  void gdc_paletteinit(void) {
   
 static void vectdraw(void) {  static void vectdraw(void) {
   
         UINT32  csrw;          UINT32          csrw;
         UINT16  textw;  const GDCVECT   *vect;
           REG16           textw;
           REG8            ope;
   
         csrw = LOADINTELDWORD(gdc.s.para + GDC_CSRW);          csrw = LOADINTELDWORD(gdc.s.para + GDC_CSRW);
           vect = (GDCVECT *)(gdc.s.para + GDC_VECTW);
         textw = LOADINTELWORD(gdc.s.para + GDC_TEXTW);          textw = LOADINTELWORD(gdc.s.para + GDC_TEXTW);
           ope = gdc.s.para[GDC_WRITE];
   
         if (gdc.s.para[GDC_VECTW] & 0x08) {          if (vect->ope & 0x08) {
                 gdcsub_line(csrw, (GDCVECT *)(gdc.s.para + GDC_VECTW),                  gdcsub_vectl(csrw, vect, textw, ope);
                                                                                         textw, gdc.s.para[GDC_WRITE]);          }
         }          if (vect->ope & 0x10) {         // undocumented
         if (gdc.s.para[GDC_VECTW] & 0x20) {                  gdcsub_vectt(csrw, vect, textw, ope);
                 gdcsub_circle(csrw, (GDCVECT *)(gdc.s.para + GDC_VECTW),          }
                                                                                         textw, gdc.s.para[GDC_WRITE]);          if (vect->ope & 0x20) {
         }                  gdcsub_vectc(csrw, vect, textw, ope);
         if (gdc.s.para[GDC_VECTW] & 0x40) {          }
                 gdcsub_box(csrw, (GDCVECT *)(gdc.s.para + GDC_VECTW),          if (vect->ope & 0x40) {
                                                                                         textw, gdc.s.para[GDC_WRITE]);                  gdcsub_vectr(csrw, vect, textw, ope);
         }          }
 }  }
   
 static void textdraw(void) {  static void textdraw(void) {
   
         UINT32  csrw;          UINT32          csrw;
   const GDCVECT   *vect;
           REG16           textw;
           REG8            ope;
   
         if (gdc.s.para[GDC_VECTW] & 0x10) {          csrw = LOADINTELDWORD(gdc.s.para + GDC_CSRW);
                 csrw = LOADINTELDWORD(gdc.s.para + GDC_CSRW);          vect = (GDCVECT *)(gdc.s.para + GDC_VECTW);
                 gdcsub_text(csrw, (GDCVECT *)(gdc.s.para + GDC_VECTW),          textw = gdc.s.para[GDC_TEXTW + 7];
                                                                                         gdc.s.para + GDC_TEXTW,          textw = (textw << 8) + textw;
                                                                                         gdc.s.para[GDC_WRITE]);          ope = gdc.s.para[GDC_WRITE];
   
           if (vect->ope & 0x08) {         // undocumented
                   gdcsub_vectl(csrw, vect, textw, ope);
           }
           if (vect->ope & 0x10) {
                   gdcsub_text(csrw, vect, gdc.s.para + GDC_TEXTW, ope);
           }
           if (vect->ope & 0x20) {         // undocumented
                   gdcsub_vectc(csrw, vect, textw, ope);
           }
           if (vect->ope & 0x40) {         // undocumented
                   gdcsub_vectr(csrw, vect, textw, ope);
         }          }
 }  }
   
Line 152  void gdc_work(int id) { Line 171  void gdc_work(int id) {
         GDCDATA         item;          GDCDATA         item;
         UINT8           *dispflag;          UINT8           *dispflag;
         UINT            i;          UINT            i;
         BYTE            data;          UINT8           data;
   
         item = (id==GDCWORK_MASTER)?&gdc.m:&gdc.s;          item = (id == GDCWORK_MASTER)?&gdc.m:&gdc.s;
         dispflag = (id==GDCWORK_MASTER)?&gdcs.textdisp:&gdcs.grphdisp;          dispflag = (id == GDCWORK_MASTER)?&gdcs.textdisp:&gdcs.grphdisp;
   
         for (i=0; i<item->cnt; i++) {          for (i=0; i<item->cnt; i++) {
                 data = (BYTE)item->fifo[i];                  data = (UINT8)item->fifo[i];
                 if (item->fifo[i] & 0xff00) {                  if (item->fifo[i] & 0xff00) {
                         item->cmd = data;                                                                               // ver0.29                          item->cmd = data;
                         item->paracb = 0;                          item->paracb = 0;
                         if ((data & 0x60) == 0x20) {                          if ((data & 0x60) == 0x20) {
                                 item->para[GDC_WRITE] = data;                                  item->para[GDC_WRITE] = data;
Line 189  void gdc_work(int id) { Line 208  void gdc_work(int id) {
                                 case CMD_START:                                  case CMD_START:
                                 case CMD_SYNC_ON:                                  case CMD_SYNC_ON:
                                         (*dispflag) |= GDCSCRN_ENABLE | GDCSCRN_ALLDRAW2;                                          (*dispflag) |= GDCSCRN_ENABLE | GDCSCRN_ALLDRAW2;
                                         screenupdate |= 2;                                                              // ver0.28                                          screenupdate |= 2;
                                         break;                                          break;
   
                                 case CMD_STOP_:                                  case CMD_STOP_:
Line 197  void gdc_work(int id) { Line 216  void gdc_work(int id) {
                                 case CMD_SYNC_OFF:                                  case CMD_SYNC_OFF:
                                         (*dispflag) &= (~GDCSCRN_ENABLE);                                          (*dispflag) &= (~GDCSCRN_ENABLE);
 //                                      (*dispflag) |= GDCSCRN_ALLDRAW2;  //                                      (*dispflag) |= GDCSCRN_ALLDRAW2;
                                         screenupdate |= 2;                                                              // ver0.28                                          screenupdate |= 2;
                                         break;                                          break;
   
                                 case CMD_VECTE:                                  case CMD_VECTE:
Line 206  void gdc_work(int id) { Line 225  void gdc_work(int id) {
                                         }                                          }
                                         break;                                          break;
   
                                 case CMD_TEXTE:                                                                         // ver0.30                                  case CMD_TEXTE:
                                         if (id != GDCWORK_MASTER) {                                          if (id != GDCWORK_MASTER) {
                                                 textdraw();                                                  textdraw();
                                         }                                          }
Line 233  void gdc_work(int id) { Line 252  void gdc_work(int id) {
                                 (*dispflag) |= gdc_dirtyflag[id][item->ptr];                                  (*dispflag) |= gdc_dirtyflag[id][item->ptr];
                         }                          }
                         (item->ptr)++;                          (item->ptr)++;
                         (item->rcv)--;                                  // ver0.29                          (item->rcv)--;
                         if ((!(item->rcv)) && (id == GDCWORK_SLAVE) &&                          if ((!(item->rcv)) && (id == GDCWORK_SLAVE) &&
                                 (((item->cmd) & 0xe4) == 0x20)) {                                  (((item->cmd) & 0xe4) == 0x20)) {
                                 gdcsub_write();                                  gdcsub_write();
                                 item->paracb = 0;                       // ver0.29                                  item->paracb = 0;
                         }                          }
                 }                  }
         }          }
Line 359  static void IOOUTCALL gdc_o68(UINT port, Line 378  static void IOOUTCALL gdc_o68(UINT port,
   
         REG8    bit;          REG8    bit;
   
         if (!(dat & 0xf0)) {                                                                    // ver0.28          if (!(dat & 0xf0)) {
                 bit = 1 << ((dat >> 1) & 7);                  bit = 1 << ((dat >> 1) & 7);
                 if (dat & 1) {                  if (dat & 1) {
                         gdc.mode1 |= bit;                          gdc.mode1 |= bit;
Line 370  static void IOOUTCALL gdc_o68(UINT port, Line 389  static void IOOUTCALL gdc_o68(UINT port,
                 if (bit & (0x01 | 0x04 | 0x10)) {                  if (bit & (0x01 | 0x04 | 0x10)) {
                         gdcs.grphdisp |= GDCSCRN_ALLDRAW2;                          gdcs.grphdisp |= GDCSCRN_ALLDRAW2;
                 }                  }
                 else if (bit == 0x02) {                                                         // ver0.28                  else if (bit == 0x02) {
                         gdcs.grphdisp |= GDCSCRN_ALLDRAW2;                          gdcs.grphdisp |= GDCSCRN_ALLDRAW2;
                         gdcs.palchange = GDCSCRN_REDRAW;                          gdcs.palchange = GDCSCRN_REDRAW;
                 }                  }
Line 561  static void IOOUTCALL gdc_oa0(UINT port, Line 580  static void IOOUTCALL gdc_oa0(UINT port,
                 gdc.s.fifo[gdc.s.cnt++] = dat;                  gdc.s.fifo[gdc.s.cnt++] = dat;
         }          }
 //      TRACEOUT(("GDC-B %.2x", dat));  //      TRACEOUT(("GDC-B %.2x", dat));
         if (gdc.s.paracb) {                                             // ver0.29          if (gdc.s.paracb) {
                 gdc_work(GDCWORK_SLAVE);                  gdc_work(GDCWORK_SLAVE);
         }          }
         (void)port;          (void)port;
Line 778  void gdc_reset(void) { Line 797  void gdc_reset(void) {
                 gdc.display = 2;                  gdc.display = 2;
         }          }
         gdc.bitac = 0xff;          gdc.bitac = 0xff;
   
 #if 0   // bind で計算される筈  
         gdc.rasterclock = pccore.realclock / 24816;  
         gdc.hsyncclock = (gdc.rasterclock * 4) / 5;  
         gdc.dispclock = pccore.realclock * 50 / 3102;  
         gdc.vsyncclock = pccore.realclock * 5 / 3102;  
 #endif  
 }  }
   
 void gdc_bind(void) {  void gdc_bind(void) {

Removed from v.1.15  
changed lines
  Added in v.1.20


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