Diff for /np2/io/gdc.c between versions 1.29 and 1.30

version 1.29, 2004/03/14 23:45:44 version 1.30, 2004/03/21 11:47:20
Line 45  static const UINT8 defsyncs31[8] = {0x06 Line 45  static const UINT8 defsyncs31[8] = {0x06
   
   
 static const UINT8 defdegpal[4] = {0x04,0x15,0x26,0x37};  static const UINT8 defdegpal[4] = {0x04,0x15,0x26,0x37};
   static const UINT16 defanapal[16] = {
                                   0x000,0x007,0x070,0x077,0x700,0x707,0x770,0x777,
                                   0x444,0x00f,0x0f0,0x0ff,0xf00,0xf0f,0xff0,0xfff};
   
   
 void gdc_setdegitalpal(int color, REG8 value) {  void gdc_setdegitalpal(int color, REG8 value) {
Line 71  void gdc_setdegitalpal(int color, REG8 v Line 72  void gdc_setdegitalpal(int color, REG8 v
         }          }
 }  }
   
   void gdc_setdegpalpack(int color, REG8 value) {
   
           if ((gdc.degpal[color] ^ value) & 0x77) {
                   gdcs.palchange = GDCSCRN_REDRAW;
           }
           gdc.degpal[color] = (UINT8)value;
   }
   
 void gdc_setanalogpal(int color, int rgb, REG8 value) {  void gdc_setanalogpal(int color, int rgb, REG8 value) {
   
         UINT8           *ptr;          UINT8           *ptr;
Line 96  void gdc_setanalogpal(int color, int rgb Line 105  void gdc_setanalogpal(int color, int rgb
         *ptr = value;          *ptr = value;
 }  }
   
 void gdc_setdegpalpack(int color, REG8 value) {  void gdc_setanalogpalall(const UINT16 *paltbl) {
   
         if ((gdc.degpal[color] ^ value) & 0x77) {          UINT    c;
                 gdcs.palchange = GDCSCRN_REDRAW;          UINT    pal;
   
           for (c=0; c<16; c++) {
                   pal = *paltbl++;
   #if defined(SUPPORT_PC9821)
                   gdc.anareg[(c * 3) + 0] = (pal >> 8) & 15;
                   gdc.anareg[(c * 3) + 1] = (pal >> 4) & 15;
                   gdc.anareg[(c * 3) + 2] = (pal >> 0) & 15;
   #endif
                   gdc_setanalogpal(c, offsetof(RGB32, p.g), (pal >> 8) & 15);
                   gdc_setanalogpal(c, offsetof(RGB32, p.r), (pal >> 4) & 15);
                   gdc_setanalogpal(c, offsetof(RGB32, p.b), (pal >> 0) & 15);
         }          }
         gdc.degpal[color] = (UINT8)value;  
 }  }
   
   
 void gdc_paletteinit(void) {  void gdc_paletteinit(void) {
   
         int             c;          int             c;
Line 808  static void IOOUTCALL gdc_oaa(UINT port, Line 828  static void IOOUTCALL gdc_oaa(UINT port,
 #endif  #endif
         if (gdc.analog & (1 << GDCANALOG_16)) {          if (gdc.analog & (1 << GDCANALOG_16)) {
 #if defined(SUPPORT_PC9821)  #if defined(SUPPORT_PC9821)
                 gdc.anareg[(gdc.palnum * 3) + 2] = dat;                  gdc.anareg[(gdc.palnum * 3) + 0] = dat;
 #endif  #endif
                 gdc_setanalogpal(gdc.palnum & 15, offsetof(RGB32, p.g), dat);                  gdc_setanalogpal(gdc.palnum & 15, offsetof(RGB32, p.g), dat);
         }          }
Line 829  static void IOOUTCALL gdc_oac(UINT port, Line 849  static void IOOUTCALL gdc_oac(UINT port,
 #endif  #endif
         if (gdc.analog & (1 << GDCANALOG_16)) {          if (gdc.analog & (1 << GDCANALOG_16)) {
 #if defined(SUPPORT_PC9821)  #if defined(SUPPORT_PC9821)
                 gdc.anareg[(gdc.palnum * 3) + 2] = dat;                  gdc.anareg[(gdc.palnum * 3) + 1] = dat;
 #endif  #endif
                 gdc_setanalogpal(gdc.palnum & 15, offsetof(RGB32, p.r), dat);                  gdc_setanalogpal(gdc.palnum & 15, offsetof(RGB32, p.r), dat);
         }          }
Line 876  static REG8 IOINPCALL gdc_iaa(UINT port) Line 896  static REG8 IOINPCALL gdc_iaa(UINT port)
                 return(gdc.anareg[(16 * 3) + (gdc.palnum * 4) + 0]);                  return(gdc.anareg[(16 * 3) + (gdc.palnum * 4) + 0]);
         }          }
         if (gdc.analog & (1 << GDCANALOG_16)) {          if (gdc.analog & (1 << GDCANALOG_16)) {
                 return(gdc.anareg[(gdc.palnum * 3) + 2]);                  return(gdc.anareg[(gdc.palnum * 3) + 0]);
         }          }
         (void)port;          (void)port;
         return(gdc.degpal[1]);          return(gdc.degpal[1]);
Line 888  static REG8 IOINPCALL gdc_iac(UINT port) Line 908  static REG8 IOINPCALL gdc_iac(UINT port)
                 return(gdc.anareg[(16 * 3) + (gdc.palnum * 4) + 1]);                  return(gdc.anareg[(16 * 3) + (gdc.palnum * 4) + 1]);
         }          }
         if (gdc.analog & (1 << GDCANALOG_16)) {          if (gdc.analog & (1 << GDCANALOG_16)) {
                 return(gdc.anareg[(gdc.palnum * 3) + 2]);                  return(gdc.anareg[(gdc.palnum * 3) + 1]);
         }          }
         (void)port;          (void)port;
         return(gdc.degpal[2]);          return(gdc.degpal[2]);
Line 969  static const IOINP gdcia0[8] = { Line 989  static const IOINP gdcia0[8] = {
   
 void gdc_biosreset(void) {  void gdc_biosreset(void) {
   
   #if defined(SUPPORT_PC9821)
           UINT    i, j;
           UINT8   tmp;
           UINT8   *pal;
   #endif
   
         if (!(np2cfg.dipsw[0] & 0x01)) {          if (!(np2cfg.dipsw[0] & 0x01)) {
                 gdc.mode1 = 0x98;                  gdc.mode1 = 0x98;
                 gdc.m.para[GDC_CSRFORM + 0] = 0x0f;                  gdc.m.para[GDC_CSRFORM + 0] = 0x0f;
Line 1013  void gdc_biosreset(void) { Line 1039  void gdc_biosreset(void) {
 #endif  #endif
         i286_vram_dispatch(vramop.operate);          i286_vram_dispatch(vramop.operate);
   
           // palette
           CopyMemory(gdc.degpal, defdegpal, 4);
           if (gdc.display & (1 << GDCDISP_ANALOG)) {
                   gdc_setanalogpalall(defanapal);
           }
   #if defined(SUPPORT_PC9821)
           pal = gdc.anareg + (16 * 3);
           for (i=0; i<256; i+=8) {
                   tmp = (UINT8)((i)?(i - 4):0);
                   pal[0] = tmp;
                   pal[1] = tmp;
                   pal[2] = tmp;
                   pal += 4;
                   for (j=1; j<8; j++) {
                           pal[0] = (UINT8)((i + 7) * ((j >> 2) & 1));
                           pal[1] = (UINT8)((i + 7) * ((j >> 1) & 1));
                           pal[2] = (UINT8)((i + 7) * ((j >> 0) & 1));
                           pal += 4;
                   }
           }
   #endif
         gdcs.textdisp = GDCSCRN_ALLDRAW2 | GDCSCRN_EXT;          gdcs.textdisp = GDCSCRN_ALLDRAW2 | GDCSCRN_EXT;
         gdcs.grphdisp = GDCSCRN_ALLDRAW2 | GDCSCRN_EXT;          gdcs.grphdisp = GDCSCRN_ALLDRAW2 | GDCSCRN_EXT;
           gdcs.palchange = GDCSCRN_REDRAW;
         screenupdate |= 2;          screenupdate |= 2;
 }  }
   
Line 1023  void gdc_reset(void) { Line 1071  void gdc_reset(void) {
         ZeroMemory(&gdc, sizeof(gdc));          ZeroMemory(&gdc, sizeof(gdc));
         ZeroMemory(&gdcs, sizeof(gdcs));          ZeroMemory(&gdcs, sizeof(gdcs));
   
   #if defined(SUPPORT_PC9821)
           gdc.display |= (1 << GDCDISP_ANALOG);
   #else
         if (np2cfg.color16 & 1) {          if (np2cfg.color16 & 1) {
                 gdc.display = (1 << GDCDISP_ANALOG);                  gdc.display |= (1 << GDCDISP_ANALOG);
         }          }
   #endif
         if (!(np2cfg.dipsw[0] & 0x04)) {                        // dipsw1-3 on          if (!(np2cfg.dipsw[0] & 0x04)) {                        // dipsw1-3 on
                 gdc.display |= (1 << GDCDISP_PLAZMA2);                  gdc.display |= (1 << GDCDISP_PLAZMA2);
         }          }
   
         gdc_biosreset();          gdc_biosreset();
         gdc_paletteinit();  
 }  }
   
 void gdc_bind(void) {  void gdc_bind(void) {

Removed from v.1.29  
changed lines
  Added in v.1.30


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