home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 9 / CD_ASCQ_09_1193.iso / news / 557 / animate / animage.pas < prev    next >
Pascal/Delphi Source File  |  1993-09-03  |  6KB  |  283 lines

  1. {┌───────────────────────────────────────────────────────────────────────────┐
  2.  │ ANIMAGE: Unité pour Turbo Pascal permettant d'animer des sprites, de faire│
  3.  │          des scrolls, zooms, cyclages, splits, en VGA 256 couleurs.       │
  4.  │                                                                           │
  5.  │ Info...: Ce package est un produit shareware qui ne doit pas être modifié.│
  6.  │          Si vous en obtenez  entière satisfaction  ou si vous  l'utilisez │
  7.  │          souvent, effectuez donc votre contrat moral en envoyant un chèque│
  8.  │          de 50FF (vous recevrez une licence d'utilisation) à l'adresse:   │
  9.  │                                                                           │
  10.  │          Patrick RUELLE                                                   │
  11.  │          163 rue de Charonne                                              │
  12.  │          75011 Paris                                                      │
  13.  │          (France)                                                         │
  14.  │                                                                           │
  15.  │ CE FICHIER CONTIENT L'UNITE "ANIMAGE" PROPREMENT DITE.                    │
  16.  └───────────────────────────────────────────────────────────────────────────┘}
  17.  
  18. UNIT ANIMAGE;
  19.  
  20. INTERFACE
  21.  
  22. FUNCTION  Activation_MCGA:Boolean;
  23. PROCEDURE Activation_Texte;
  24. PROCEDURE Attente_Synchro;
  25. PROCEDURE Ecriture_Palette(Var palette;debut,quantite:Word);
  26. PROCEDURE Ecriture_Couleur(couleur,rouge,vert,bleu:Byte);
  27. PROCEDURE Ecriture_Pixel(x,y:Word;couleur:Byte);
  28. PROCEDURE Defilement_Ecran(decalage:Byte);
  29. PROCEDURE Dedoublement_Ecran(ligne:Word);
  30. PROCEDURE Zoom_Vertical(resolution_y:Byte);
  31. PROCEDURE Copie_Bloc_Normal(x1,y1,largeur:Word;hauteur:Byte;x2,y2,origine,
  32.                 destination:Word);
  33. PROCEDURE Copie_Bloc_Masque(x1,y1,largeur:Word;hauteur:Byte;x2,y2,origine,
  34.                 destination:Word);
  35.  
  36. IMPLEMENTATION
  37.  
  38.  FUNCTION  Activation_MCGA:Boolean;
  39.   BEGIN
  40.     ASM
  41.       MOV   AH, 0
  42.       MOV   AL, 13h
  43.       INT   10h
  44.       MOV   AH, 0Fh
  45.       INT   10h
  46.       CMP   AL, 13h
  47.       JE    @ok
  48.       MOV   AL, 0
  49.       JMP   @fin
  50.      @ok:
  51.       MOV   AL, 1
  52.      @fin:
  53.       MOV   @result, AL
  54.     END;
  55.   END;
  56.  
  57.  PROCEDURE Activation_Texte;ASSEMBLER;
  58.   ASM
  59.     MOV   AH, 0
  60.     MOV   AL, 3
  61.     INT   10h
  62.   END;
  63.  
  64.  PROCEDURE Attente_Synchro;ASSEMBLER;
  65.   ASM
  66.     MOV   DX, 3DAh
  67.    @deb1:
  68.     IN    AL, DX
  69.     TEST  AL, 8
  70.     JNE   @deb1
  71.    @deb2:
  72.     IN    AL, DX
  73.     TEST  AL, 8
  74.     JE    @deb2
  75.   END;
  76.  
  77.  PROCEDURE Ecriture_Palette(VAR palette;debut,quantite:Word);
  78.   BEGIN
  79.     ASM
  80.       PUSH  DS
  81.       LDS   SI, palette
  82.       MOV   DX, 3C8h
  83.       CLD
  84.       MOV   CX, quantite
  85.       MOV   BX, debut
  86.      @deb1:
  87.       MOV   AL, BL
  88.       OUT   DX, AL
  89.       INC   DX
  90.       LODSB
  91.       OUT   DX, AL
  92.       LODSB
  93.       OUT   DX, AL
  94.       LODSB
  95.       OUT   DX, AL
  96.       DEC   DX
  97.       INC   BL
  98.       LOOP  @deb1
  99.       POP   DS
  100.     END;
  101.   END;
  102.  
  103.  PROCEDURE Ecriture_Couleur(couleur,rouge,vert,bleu:Byte);ASSEMBLER;
  104.   ASM
  105.     MOV   DX, 3C8h
  106.     MOV   AL, couleur
  107.     OUT   DX, AL
  108.     INC   DL
  109.     MOV   AL, rouge
  110.     OUT   DX, AL
  111.     MOV   AL, vert
  112.     OUT   DX, AL
  113.     MOV   AL, bleu
  114.     OUT   DX, AL
  115.   END;
  116.  
  117.  PROCEDURE Ecriture_Pixel(x,y:Word;couleur:Byte);ASSEMBLER;
  118.   ASM
  119.     MOV   AX, y
  120.     MOV   BX, x
  121.     MOV   CL, couleur
  122.     XCHG  AH, AL
  123.     ADD   BX, AX
  124.     SHR   AX, 1
  125.     SHR   AX, 1
  126.     ADD   BX, AX
  127.     MOV   AX, 0A00h
  128.     MOV   ES, AX
  129.     MOV   ES:[BX], CL
  130.   END;
  131.  
  132.  PROCEDURE Defilement_Ecran(decalage:Byte);ASSEMBLER;
  133.   ASM
  134.     MOV   DX, 3D4h
  135.     MOV   AL, 0Dh
  136.     OUT   DX, AL
  137.     INC   DL
  138.     MOV   AL, decalage
  139.     OUT   DX, AL
  140.   END;
  141.  
  142.  PROCEDURE Dedoublement_Ecran(ligne:Word);ASSEMBLER;
  143.   ASM
  144.     PUSH  DS
  145.     MOV   DX, 3D4h
  146.     MOV   AX, ligne
  147.     MOV   BH, AH
  148.     MOV   BL, BH
  149.     AND   BX, 0201h
  150.     MOV   CL, 4
  151.     SHL   BX, CL
  152.     SHL   BH, 1
  153.     MOV   AH, AL
  154.     MOV   AL, 18h
  155.     OUT   DX, AX
  156.     MOV   AL, 7
  157.     OUT   DX, AX
  158.     INC   DL
  159.     IN    AL, DX
  160.     DEC   DL
  161.     MOV   AH, AL
  162.     AND   AH, 11101111b
  163.     OR    AH, BL
  164.     MOV   AL, 7
  165.     OUT   DX, AX
  166.     MOV   AL, 9
  167.     OUT   DX, AL
  168.     INC   DL
  169.     IN    AL, DX
  170.     DEC   DL
  171.     MOV   AH, AL
  172.     AND   AH, 10111111b
  173.     OR    AH, BH
  174.     MOV   AL, 9
  175.     OUT   DX, AX
  176.     POP   DS
  177.   END;
  178.  
  179.  PROCEDURE Zoom_Vertical(resolution_y:Byte);ASSEMBLER;
  180.   ASM
  181.     MOV   DX, 3D4h
  182.     MOV   AL, 09h
  183.     OUT   DX, AL
  184.     INC   DL
  185.     MOV   AL, resolution_y
  186.     OUT   DX, AL
  187.   END;
  188.  
  189.  PROCEDURE Copie_Bloc_Normal(x1,y1,largeur:Word;hauteur:Byte;x2,y2,origine,
  190.                 destination:Word);ASSEMBLER;
  191.   ASM
  192.     PUSH  DS
  193.     MOV   DS, origine
  194.     MOV   ES, destination
  195.     MOV   BX, x1
  196.     MOV   AX, y1
  197.     XCHG  AH, AL
  198.     ADD   BX, AX
  199.     SHR   AX, 1
  200.     SHR   AX, 1
  201.     ADD   BX, AX
  202.     MOV   SI, BX
  203.     MOV   BX, x2
  204.     MOV   AX, y2
  205.     XCHG  AH, AL
  206.     ADD   BX, AX
  207.     SHR   AX, 1
  208.     SHR   AX, 1
  209.     ADD   BX, AX
  210.     MOV   DI, BX
  211.     MOV   DL, 0
  212.     MOV   DH, hauteur
  213.     MOV   AX, largeur
  214.     MOV   BX, 320
  215.     SUB   BX, AX
  216.     SHR   AX, 1
  217.     CLD
  218.    @boucle:
  219.     INC   DL
  220.     MOV   CX, AX
  221.     REP   MOVSW
  222.     ADD   SI, BX
  223.     ADD   DI, BX
  224.     CMP   DL, DH
  225.     JNE   @boucle
  226.     POP   DS
  227.   END;
  228.  
  229.  PROCEDURE Copie_Bloc_Masque(x1,y1,largeur:Word;hauteur:Byte;x2,y2,origine,
  230.                 destination:Word);ASSEMBLER;
  231.   ASM
  232.     PUSH  DS
  233.     MOV   DS, origine
  234.     MOV   ES, destination
  235.     MOV   BX, x1
  236.     MOV   AX, y1
  237.     XCHG  AH, AL
  238.     ADD   BX, AX
  239.     SHR   AX, 1
  240.     SHR   AX, 1
  241.     ADD   BX, AX
  242.     MOV   SI, BX
  243.     MOV   BX, x2
  244.     MOV   AX, y2
  245.     XCHG  AH, AL
  246.     ADD   BX, AX
  247.     SHR   AX, 1
  248.     SHR   AX, 1
  249.     ADD   BX, AX
  250.     MOV   DI, BX
  251.     MOV   DX, 0
  252.     MOV   AX, largeur
  253.     MOV   BX, 320
  254.     SUB   BX, AX
  255.     CLD
  256.    @boucle1:
  257.     INC   DH
  258.     MOV   CX, AX
  259.    @boucle2:
  260.     MOV   DL, [SI]
  261.     AND   DL, DL
  262.     JZ    @Suite
  263.     MOVSB
  264.     LOOP  @boucle2
  265.     ADD   SI, BX
  266.     ADD   DI, BX
  267.     CMP   DH, hauteur
  268.     JNE   @boucle1
  269.     JMP   @Fin
  270.    @Suite:
  271.     INC   SI
  272.     INC   DI
  273.     LOOP  @boucle2
  274.     ADD   SI, BX
  275.     ADD   DI, BX
  276.     CMP   DH, hauteur
  277.     JNE   @boucle1
  278.    @Fin:
  279.     POP   DS
  280.   END;
  281.  
  282. END.
  283.