home *** CD-ROM | disk | FTP | other *** search
/ The Equalizer BBS / equalizer-bbs-collection_2004.zip / equalizer-bbs-collection / DEMOSCENE-STUFF / PHRO.ZIP / TEXT.PAS < prev    next >
Pascal/Delphi Source File  |  1995-12-30  |  3KB  |  109 lines

  1. {   Text Mode Routines Source File             }
  2. {   PHRO!                                      }
  3. {   Phred/OTM                                  }
  4. {   achalfin@uceng.uc.edu                      }
  5. {   DO NOT DISTRIBUTE THIS SOURCE FILE         }
  6. Unit TEXT;
  7.  
  8. Interface
  9.  
  10. Procedure TextFade;
  11. Procedure ReFadeText;
  12.  
  13. Implementation
  14.  
  15. Uses Crt;
  16.  
  17. Type
  18.   RGBType = Record
  19.     r, g, b : Byte;
  20.   End;
  21.   TextPalette = Array[0..255] of RGBType;
  22.  
  23. Var
  24.   OrigPalette : TextPalette;
  25.   FadePalette : TextPalette;
  26.   DummyPalette : TextPalette;
  27.  
  28. Procedure FadeOut(Pal1, Pal2 : TextPalette; DelayVal : Word);
  29.  
  30. Var
  31.   Count, Count2 : Integer;
  32.  
  33. Begin
  34.   For Count := 63 downto 0 do
  35.     Begin
  36.       For Count2 := 0 to 255 do
  37.         Begin
  38.           If Pal1[Count2].r < Pal2[Count2].r
  39.             Then Inc(Pal1[Count2].r);
  40.           If Pal1[Count2].r > Pal2[Count2].r
  41.             Then Dec(Pal1[Count2].r);
  42.           If Pal1[Count2].g < Pal2[Count2].g
  43.             Then Inc(Pal1[Count2].g);
  44.           If Pal1[Count2].g > Pal2[Count2].g
  45.             Then Dec(Pal1[Count2].g);
  46.           If Pal1[Count2].b < Pal2[Count2].b
  47.             Then Inc(Pal1[Count2].b);
  48.           If Pal1[Count2].b > Pal2[Count2].b
  49.             Then Dec(Pal1[Count2].b);
  50.         End;
  51.       For Count2 := 0 to 255 do
  52.         Begin
  53.           Port[$3c8] := Count2;
  54.           Port[$3c9] := Pal1[Count2].r;
  55.           Port[$3c9] := Pal1[Count2].g;
  56.           Port[$3c9] := Pal1[Count2].b;
  57.         End;
  58.       Delay(DelayVal);
  59.     End;
  60. End;
  61.  
  62. Procedure TextFade;
  63.  
  64. Var
  65.   Count : Integer;
  66.  
  67. Begin
  68.   For Count := 0 to 255 do
  69.     Begin
  70.       Port[$3c7] := Count;
  71.       OrigPalette[Count].r := Port[$3c9];
  72.       OrigPalette[Count].g := Port[$3c9];
  73.       OrigPalette[Count].b := Port[$3c9];
  74.     End;
  75.   Move(OrigPalette, FadePalette, Sizeof(FadePalette));
  76.   FillChar(DummyPalette, Sizeof(DummyPalette), 0);
  77.   FadeOut(FadePalette, DummyPalette, 50);
  78. End;
  79.  
  80. Procedure ReFadeText;
  81.  
  82. Var
  83.   Count : Integer;
  84.  
  85. Begin
  86.   Asm
  87.     Mov  ax,3
  88.     Int  10h
  89.   End;
  90.   FillChar(DummyPalette, Sizeof(DummyPalette), 0);
  91.   For Count := 0 to 255 do
  92.     Begin
  93.       Port[$3c8] := Count;
  94.       Port[$3c9] := DummyPalette[Count].r;
  95.       Port[$3c9] := DummyPalette[Count].g;
  96.       Port[$3c9] := DummyPalette[Count].b;
  97.     End;
  98.   Writeln;
  99.   Writeln;
  100.   Writeln('You have just seen PHRO.');
  101.   Writeln('  Code            : Phred');
  102.   Writeln('  Music Rountines : Zilym');
  103.   Writeln('  Music           : Stalker ');
  104.   Writeln;
  105.   Writeln;
  106.   FadeOut(DummyPalette, OrigPalette, 50);
  107. End;
  108.  
  109. End.