home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / X3MDMO01.ZIP / PLASMEFF.ASM < prev    next >
Assembly Source File  |  1994-11-28  |  3KB  |  212 lines

  1.  
  2. ; ████       ████▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3. ; ▀███▄     ▄███▀  Project: Plasma Effect [ASM]
  4. ;   ▀███▄ ▄███▀    File   : PLASMEFF.ASM
  5. ;     ▀█████▀      Version: 1.00        Created: 261194   Modified: 261194
  6. ;    ▄███▀███▄
  7. ;  ▄███▀   ▀███▄   Nice and fast plasma effect by X3M Productions.
  8. ; ████       ████  If you have any questions, e-mail: srs@alkymi.unit.no
  9. ; ████       ████▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  10.  
  11.  
  12. .MODEL SMALL
  13. .STACK 400
  14.  
  15. DOSSEG
  16. LOCALS
  17.  
  18. PAL_DIVIDER = 2
  19.  
  20.  
  21. .DATA
  22.  
  23.  
  24. CosTable LABEL BYTE
  25. INCLUDE COSTBL.INC
  26.  
  27.  
  28. Palette LABEL BYTE
  29.     i = 0
  30.     REPT 128 SHR PAL_DIVIDER
  31.                 DB      63, i, 63-i
  32.         i = i + (1 SHL (PAL_DIVIDER-1))
  33.     ENDM
  34.     i = 0
  35.     REPT 128 SHR PAL_DIVIDER
  36.         DB    63-i, 63, i
  37.         i = i + (1 SHL (PAL_DIVIDER-1))
  38.     ENDM
  39.     i = 0
  40.     REPT 128 SHR PAL_DIVIDER
  41.         DB    0, 63-i, 63
  42.         i = i + (1 SHL (PAL_DIVIDER-1))
  43.     ENDM
  44.     i = 0
  45.     REPT 128 SHR PAL_DIVIDER
  46.         DB    i, 0, 63
  47.         i = i + (1 SHL (PAL_DIVIDER-1))
  48.     ENDM
  49.  
  50.  
  51. VTime1  DB 2
  52. VTime2  DB 1
  53. VTime3  DB 3
  54. VTime4  DB 4
  55.  
  56.  
  57. UDATASEG
  58.  
  59. PlasmaPal DB (256 SHR (PAL_DIVIDER-1))*3 DUP (?)
  60.  
  61. Time1    DB ?
  62. Time2    DB ?
  63. Time3    DB ?
  64. Time4    DB ?
  65.  
  66.  
  67. .CODE
  68. .STARTUP
  69.  
  70.     CLD
  71.     MOV        AX,13h
  72.     INT   10h
  73.     CLI
  74.     MOV        DX,3c4h
  75.     MOV        AX,604h
  76.     OUT        DX,AX
  77.     MOV     AX,0F02h
  78.     OUT        DX,AX
  79.     MOV   DX,3D4h
  80.     MOV   AX,14h
  81.     OUT   DX,AX
  82.     MOV   AX,0E317h
  83.     OUT   DX,AX
  84.     MOV   AL,9
  85.     OUT   DX,AL
  86.     INC   DX
  87.     IN    AL,DX
  88.     AND   AL,0E0h
  89.     ADD   AL,7
  90.     OUT   DX,AL
  91.     MOV   DX,3c8h
  92.     MOV   AL,256-(256 SHR (PAL_DIVIDER-1))
  93.     OUT   DX,AL
  94.     INC   DX
  95.     MOV   CX,(256 SHR (PAL_DIVIDER-1))*3
  96.     MOV   SI,OFFSET Palette
  97.  
  98. @@pl1:
  99.     LODSB
  100.     OUT   DX,AL
  101.     LOOP  @@pl1
  102.     MOV   AX,0A000h
  103.     MOV   ES,AX
  104.     MOV   SI,OFFSET CosTable
  105.  
  106. MainLoop:
  107.     MOV   DX,3DAh
  108.  
  109. @@vs1:
  110.     IN        AL,DX
  111.     TEST  AL,8
  112.     JZ    @@vs1
  113.  
  114. @@vs2:
  115.     IN    AL,DX
  116.     TEST  AL,8
  117.     JNZ   @@vs2
  118.     XOR   DI,DI
  119.     MOV   AH,50
  120.     MOV   CL,Time3
  121.     MOV   CH,Time4
  122.  
  123. @@lv:
  124.     PUSH  AX
  125.         MOV   AH,80
  126.     MOV   DL,Time1
  127.     MOV   DH,Time2
  128.  
  129. @@lh:
  130.     MOV        BX,BP
  131.     MOV   AL,BL
  132. ; ADD   AL,AH                  ; Could make for more perturbations.
  133.     XOR   BH,BH
  134.     MOV   BL,DL
  135.     ADD   AL,[SI+BX]
  136.     MOV   BL,DH
  137.     ADD   AL,[SI+BX]
  138.     MOV   BL,CL
  139.     ADD   AL,[SI+BX]
  140.     MOV   BL,CH
  141.     ADD   AL,[SI+BX]
  142.  
  143.     IFDIF %PAL_DIVIDER,<1>
  144.         OR        AL, (0FFh SHL (9-PAL_DIVIDER)) AND 0FFh
  145.     ENDIF
  146.  
  147.     STOSB
  148.     ADD   DL,1
  149.     ADD   DH,3
  150.     DEC   AH
  151.     JNZ   @@lh
  152.     ADD   CL,2
  153.     ADD   CH,1
  154.     POP   AX
  155.     DEC   AH
  156.     JNZ   @@lv
  157.  
  158.     DEC   BP
  159.     MOV   BX,BP
  160.     XOR   BL,BH
  161.     XOR   BL,-1[DI]
  162.     XOR   BL,CL
  163.     XOR   BL,DL
  164.     ADD   BL,CH
  165.     ADD   BL,DH
  166.  
  167.     XOR   BH,BH
  168.     MOV   DI,OFFSET VTime1
  169.     TEST  BL,8
  170.     JNZ   @@dec
  171.     AND   BL,3
  172.     CMP   BYTE PTR [DI+BX],3
  173.     JG    @@sum
  174.     INC   BYTE PTR [DI+BX]
  175.     JMP   @@sum
  176.  
  177. @@dec:
  178.     AND   BL,3
  179.     CMP   BYTE PTR [DI+BX],-3
  180.     JL    @@sum
  181.     DEC   BYTE PTR [DI+BX]
  182.  
  183. @@sum:
  184.     MOV   DL,VTime1
  185.     MOV   DH,VTime2
  186.     MOV   CL,VTime3
  187.     MOV   CH,VTime4
  188.     ADD   Time1,DL
  189.     SUB   Time2,DH
  190.     ADD   Time3,CL
  191.     SUB   Time4,CH
  192.     MOV   AH,1
  193.     INT   16h
  194.     JNZ   Bye
  195.     JMP   MainLoop
  196.  
  197. Bye:
  198.     XOR   AH,AH
  199.     INT   16h
  200.     MOV   AX,3
  201.     INT   10h
  202.     XOR   BH,BH
  203.     MOV   DX,1700h
  204.     MOV   AH,2
  205.     INT   10h
  206.     MOV   AX,4C00h
  207.     INT   21h
  208.  
  209. END
  210.  
  211.  
  212.