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

  1. {   More PCX Shit Source file                  }
  2. {   PHRO!                                      }
  3. {   Phred/OTM                                  }
  4. {   achalfin@uceng.uc.edu                      }
  5. {   DO NOT DISTRIBUTE THIS SOURCE FILE         }
  6. Unit PCX;
  7.  
  8. Interface
  9.  
  10. Procedure DeCompressPCX(Var Buffer, Orig);
  11.  
  12. Implementation
  13.  
  14. {$L FirePcx.Obj}
  15. Procedure PhirePcx; External;
  16.  
  17. Procedure DeCompressPCX(Var Buffer, Orig);
  18.  
  19. Var
  20.   Size : Word;
  21.   TextureOffset : Word;
  22.   RunLen : Byte;
  23.   Value : Byte;
  24.   PCXOffset : Word;
  25.   PCXSeg : Word;
  26.  
  27. Begin
  28.   PCXSeg := Seg(Orig);
  29.   PCXOffset := Ofs(Orig);
  30.   TextureOffset := 0;
  31.   Size := 65535;
  32.   While TextureOffset < Size do
  33.     Begin
  34.       RunLen := Mem[PcxSeg:PcxOffset];
  35.       Inc(PcxOffset);
  36.       If (RunLen and $C0) = $C0
  37.         Then Begin
  38.           RunLen := RunLen And $3f;
  39.           Value := Mem[PCXSeg:PcxOffset];
  40.           Inc(PcxOffset);
  41.         End
  42.         Else Begin
  43.           Value := RunLen;
  44.           RunLen := 1;
  45.         End;
  46.       While (RunLen >= 1) and (TextureOffset < Size) do
  47.         Begin
  48.           Mem[Seg(Buffer):Ofs(Buffer)+TextureOffset] := Value;
  49.           TextureOffset := TextureOffset + 1;
  50.           RunLen := RunLen - 1;
  51.         End;
  52.     End;
  53. End;
  54.  
  55. End.