home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PROG_PAS / XLIB_TP5.ZIP / DEMO / PAL_DEMO.PAS < prev    next >
Pascal/Delphi Source File  |  1993-12-19  |  2KB  |  96 lines

  1. (* All these Compiler-directives make the EXE smaler , but the error would
  2.    be more invisible . *)
  3. {$D-,Y-,R-,S-,O-}
  4.  
  5. uses X_Const,X_Main,X_Text,X_Keys,crt,X_Mouse,X_Pal,X_Bitmap;
  6.  
  7. (* Make a BackGround with insive help of palettenrotate. *)
  8.  
  9.  
  10. type Trippel = Array[0..2] of Byte;
  11.  
  12. var Bild:Array[0..14,0..14] of Trippel;
  13.     Pal:Palette;
  14.     i,j,l,k:Integer;
  15.     x,y:Integer;
  16.     R:Word;
  17.     SinF,CosF:Array[0..359] of Byte;
  18.     Pbm_Bild:Array[0..241] of Byte;
  19. begin;
  20.   for r:=0 to 359 do
  21.   begin;
  22.     SinF[r]:=trunc(sin(r*Pi/180)*50)+100;
  23.     CosF[r]:=trunc(cos(r*Pi/180)*50)+100;
  24.   end;
  25.   fillchar(Pal,256*3,0);
  26.   (* create some Gray-colors for Text *)
  27.   for j:=250 to 255 do fillchar(Pal[j],3,(j-250)*12);
  28.  
  29.   x:=0;y:=0;r:=0;
  30.   (* Init Bild True-Color Pictures ! *)
  31.   for i:=0 to 14 do
  32.     for j:=0 to 14 do
  33.     begin;
  34.       Bild[i,j][0]:=0;
  35.       Bild[i,j][1]:=0;
  36.       Bild[i,j][2]:=63-trunc(4*sqrt((7.5-i)*(7.5-i)+(7.5-j)*(7.5-j)));
  37.     end;
  38.  
  39.   (* Init Mode X *)
  40.   x_set_mode(3,380);
  41.   x_text_init;
  42.  
  43.   (* create Sprite *)
  44.   for i:=0 to 14 do for j:=0 to 14 do
  45.     Pbm_Bild[2+((i mod 4)*60+i div 4)+j*4]:=i+j*15+1;
  46.   Pbm_Bild[0]:=4;
  47.   Pbm_Bild[1]:=15;
  48.   (* fill screen with sprite *)
  49.   for l:=0 to 22 do for k:=0 to 15 do x_put_pbm(l*15,k*15,Pbm_Bild);
  50.  
  51.   x_set_font(1);x_put_pal_raw(Pal,256,0,false);
  52.  
  53.   for i:=1 to 7 do for j:=2 to 10 do
  54.     E_Write(i*x_Length('Moin '),j*x_font_height,255,253,'Moin ');
  55.  
  56.   X_Write(10,GetMaxY-x_font_height,255,'German >Hallo<');
  57.  
  58.   repeat
  59.     r:=r+1;
  60.     if r>359 then r:=0;
  61.     x:=sinF[r];
  62.     y:=cosF[r];
  63.     for i:=0 to 225 do
  64.       begin;
  65.         asm
  66.           mov ax,i
  67.           mov bl,15
  68.           div bl
  69.           mov cl,al            (* cl = i div 15 *)
  70.           mov al,ah
  71.           xor ah,ah
  72.           add ax,x
  73.           div bl
  74.           mov Byte(l),ah     (* l:=(x+(i mod 15)) mod 15; *)
  75.           mov al,cl
  76.           xor ah,ah
  77.           add ax,y
  78.           div bl
  79.           mov Byte(k),ah     (* k:=((i div 15)+y)mod 15;  *)
  80.         end;
  81.  
  82.         move(Bild[l,k],Pal[i+1,0],3);
  83.       end;
  84.     WaitVsyncStart;
  85.     x_put_pal_raw(Pal,226,0,false);
  86.  
  87.  
  88.   until keyspressed;
  89.  
  90.  
  91.   x_Pal2Dark(Pal);
  92.   x_text_mode;
  93.  
  94.   Clear_Buffer;
  95. end.
  96.