(c)  騭, ᪢

ZXNet : 500:95/462.53
E-mail: bestview@mtu-net.ru
WWW   : http://www.ivr.da.ru

        VGA-  묨 室 梥⮢
       

(".  " 9/2003)




     ணࠬ஢ ᪨ 䥪⮢, ࠡ
 256-梥 ०  VGA,  
室 ⠪ ८।     ,
⮡ 稫  室   梥  㣮.
। ᯮ짮  ᫥ RGB-
८।塞 ⪠  ਢ  ணࠬ,
ᠭ  Turbo C.
      (।⢥  ⥪ ணࠬ - .
ਨ)  ८।塞 ⪠ , 
梥 ( 묨  㤥 ந室  室),
㪠뢠, 㤥  横   (᫨  -
, ᫥ ᫥ 梥 㤥  室  ࢮ),
।  䠩,   㤥 ᠭ ᫥
ଠ,  ଠ,  ஬  㤥 ᠭ (,
  ⥪⮢ -  ᫥饣 祭   ணࠬ
 ᥬ).  㪠,  ⮡ ଠ  
뢠  䠩 - ਬ, ᫨   ᭠砫 
  室饥 ⠭ 梥⮢.
    ᫥ ᪠ ணࠬ 뢠  ࠭  ᫥
梥  (. . 1, 2),  ᫥    -
뢠 (᫨ 㦭) 䠩 c ⠬  梥⮢ 
蠥 ᢮ ࠡ.
     梥 (   ந쭮 ⢮)
।  㪠  RGB-,   
    0-63. 祭  ᪮쪨
"᭮" 梥⮢ ਢ  ⠡. 1.

              Ŀ
                        R     G     B   
              Ĵ
                      0     0     0   
               ᨭ        0     0     63  
                     0     63    0   
               㡮      0     63    63  
                     63    0     0   
               䨮⮢   63    0     63  
                      63    63    0   
                       63    63    63  
              
                           . 1.


 ணࠬ


/* ணࠬ ନ஢ VGA-
     室  묨 梥⠬.
   ()  騭, ᪢, 2002. */

#include <dos.h>
#include <stdio.h>

#define pal_len  256  /*   (1-256). */
#define pal_loop 0    /* 0 - 横 , 1 - 横. */

/*  梥 ( 묨 㤥  室): */
int base_colors[]={0,0,0, 63,63,63};

#define save_mode 0  /* 0 -  뢠 ,
                        1 -    䠩,
                        2 -   ⥪⮢ 䠩 (asm). */

char *save_name="";      /*  뢠 䠩. */

void main ()
{
 int palette_r [pal_len]; /*  ନ㥬 . */
 int palette_g [pal_len];
 int palette_b [pal_len];
 int n=sizeof(base_colors)/(sizeof(int)*3); /* ⢮  梥⮢. */
 int i,j;
 int base;
 float part;
 union REGS rg;
 unsigned char mode;
 FILE *f_dst;

/* ନ㥬 . */

#if (pal_loop==0)
 /*   横. */
 /*   ⮢ , ஬ ᫥: */
 for (i=0; i<(pal_len-1); i++)
 {
  base=i/(((float)(pal_len-1))/(n-1));
  part=i/(((float)(pal_len-1))/(n-1))-base;
  palette_r[i]=base_colors[base*3]*(1-part)+base_colors[base*3+3]*part+0.5;
  palette_g[i]=base_colors[base*3+1]*(1-part)+base_colors[base*3+4]*part+0.5;
  palette_b[i]=base_colors[base*3+2]*(1-part)+base_colors[base*3+5]*part+0.5;
 }
 /*  ᫥  
    ࠢ ᫥  梥: */
 palette_r[pal_len-1]=base_colors[(n-1)*3];
 palette_g[pal_len-1]=base_colors[(n-1)*3+1];
 palette_b[pal_len-1]=base_colors[(n-1)*3+2];
#else
 /*  横. */
 for (i=0; i<pal_len; i++)
 {
  base=i/(((float)pal_len)/n);
  part=i/(((float)pal_len)/n)-base;
  if (base<(n-1))
  {
   palette_r[i]=base_colors[base*3]*(1-part)+base_colors[base*3+3]*part+0.5;
   palette_g[i]=base_colors[base*3+1]*(1-part)+base_colors[base*3+4]*part+0.5;
   palette_b[i]=base_colors[base*3+2]*(1-part)+base_colors[base*3+5]*part+0.5;
  }
  else /* base=n-1 */
  {
   palette_r[i]=base_colors[(n-1)*3]*(1-part)+base_colors[0]*part+0.5;
   palette_g[i]=base_colors[(n-1)*3+1]*(1-part)+base_colors[1]*part+0.5;
   palette_b[i]=base_colors[(n-1)*3+2]*(1-part)+base_colors[2]*part+0.5;
  }
 }
#endif

/* ।塞   ⥪騩 ० ࠡ : */

 rg.h.ah=0x0f;
 int86 (0x10, &rg, &rg);
 mode=rg.h.al;

/* 砥 ० 320*200*256: */

 rg.x.ax=0x0013;
 int86 (0x10, &rg, &rg);

/* 뢮  業 ࠭ אַ㣮쭨,  ஬ ।⠢  梥
   ନ஢ . ᫨ ନ஢  ᮤন  256
   ⮢,    ⥪饩    ஭; ⠪
   ࠧ, 䮭 ⠭ .  䮭 㤥 ⠪,  梥 ࢮ
    . */

 for (i=0; i<pal_len; i++)
 {
  rg.h.ah=0x10;              /* ⠭  祭 */
  rg.h.al=0x10;              /*  .            */
  rg.h.bh=0;
  rg.h.bl=i+(256-pal_len);
  rg.h.dh=palette_r[i];
  rg.h.ch=palette_g[i];
  rg.h.cl=palette_b[i];
  int86 (0x10, &rg, &rg);

  for (j=90; j<110; j++)     /* ࠦ ⨪  */
  {                          /* ᮮ⢥饣 梥. */
   rg.h.ah=0x0c;
   rg.h.al=i+(256-pal_len);
   rg.h.bh=0;
   rg.x.cx=i+((320-pal_len)/2);
   rg.x.dx=j;
   int86 (0x10, &rg, &rg);
  }
 }

/*     ⠭ ० ०
   ࠡ : */

 while (bioskey(1)==0);
 rg.h.ah=0;
 rg.h.al=mode;
 int86 (0x10, &rg, &rg);

/* ᫨ , 뢠   䠩: */

#if (save_mode==1)
 f_dst=fopen(save_name,"wb");
 for (i=0; i<pal_len; i++)
 {
  fputc(palette_r[i],f_dst);
  fputc(palette_g[i],f_dst);
  fputc(palette_b[i],f_dst);
 }
 fclose(f_dst);
#endif

#if (save_mode==2)
 f_dst=fopen(save_name,"wt");
 for (i=0; i<pal_len; i++)
 {
  fprintf (f_dst,"%s","        db ");
  fprintf (f_dst,"%u%c",palette_r[i],',');
  fprintf (f_dst,"%u%c",palette_g[i],',');
  fprintf (f_dst,"%u%c",palette_b[i],'\n');
 }
 fclose(f_dst);
#endif
}


ਬ ᯮ짮 ணࠬ


    ਬ 1. 㦭  RGB-  240 梥⮢
, ।⠢ ᮡ  室  ⮣ 
᭮,      䠩   primer_1.bin.
    ⠭  ⥪ ணࠬ ᫥騥 祭:

#define pal_len  240
#define pal_loop 0
int base_colors[]={63,63,0, 63,0,0};
#define save_mode 1
char *save_name="primer_1.bin";

    ᫥ 樨  ᪠  ࠭  ࠦ
ॡ㥬 240 梥⮢ (. 1).

                    Ŀ
                    1.gif                 
                                          
                                          
                                          
                                          
                                          
                    
                             . 1

    ᫥      ᠭ 
 䠩.    뤥  ,
冷 ᫥ - r1,g1,b1,r2,g2,b2,...,r240,g240,b240:

    0000: 3F 3F 00 3F 3F 00 3F 3E 00 3F 3E 00 3F 3E 00 3F
    0010: 3E 00 3F 3D 00 3F 3D 00 3F 3D 00 3F 3D 00 3F 3C
    0020: 00 3F 3C 00 3F 3C 00 3F 3C 00 3F 3B 00 3F 3B 00
    .....................................................
    02C0: 00 3F 01 00 3F 01 00 3F 01 00 3F 00 00 3F 00 00

    ਬ 2. 㦭  RGB-  200 梥⮢
   室  ᫥騬 梥⠬: ,
, , 䨮⮢ ( ᫥ 梥  
室  ). 祭  㦭  
⥪⮢ 䠩   primer_2.txt.
    ⠭  ⥪ ணࠬ ᫥騥 祭:

#define pal_len  200
#define pal_loop 1
int base_colors[]={63,0,0, 63,63,0, 0,63,0, 63,0,63};
#define save_mode 2
char *save_name="primer_2.txt";

    ᫥ 樨  ᪠  ࠭  ࠦ
ॡ㥬 200 梥⮢ (. 2).

                    Ŀ
                    2.gif                 
                                          
                                          
                                          
                                          
                                          
                    
                             . 2

    ᫥      ᠭ 
⥪⮢ 䠩:

        db 63,0,0
        db 63,1,0
        db 63,3,0
        .........
        db 63,0,1





1. .஫, .஫. "ணࠬ஢ ஢ CGA, EGA
    VGA". .: -, 1992.
