home *** CD-ROM | disk | FTP | other *** search
/ The Equalizer BBS / equalizer-bbs-collection_2004.zip / equalizer-bbs-collection / DEMOSCENE-STUFF / HQ_WATER.ZIP / ASMFX.ASM next >
Assembly Source File  |  1993-12-13  |  4KB  |  192 lines

  1. ;
  2. ;  ASMFX.ASM  //  ARM 12/93
  3. ;
  4.  
  5.         Ideal
  6.         Model TPascal
  7.         P286
  8.         Radix 10
  9.  
  10. ; Constants:
  11.  
  12. INCLUDE "meshsize.inc"
  13.  
  14.         DATASEG
  15.  
  16. EXTRN   U      : DWord
  17. EXTRN   CT     : Word
  18.  
  19.         CODESEG
  20.  
  21. PUBLIC SquareSplash   ; (X,Y,S,D : word);
  22. PUBLIC BitLift        ; (P : Pointer; L : integer);
  23. PUBLIC IntLift        ; (X,Y,L : word; P : Pointer); (P->SX,SY;[X,Y])
  24.  
  25. ; // SquareSplash
  26.  
  27.         PROC SquareSplash NEAR
  28.         ARG X : Word, Y : Word, S : Word, D : Word
  29.           mov si, [word ptr U]
  30.           test [CT], 1
  31.           jz @@0
  32.           add si, NX*NY*2
  33.         @@0:                ; si -> U[CT]
  34.  
  35.           push ds
  36.           mov ax, [word ptr U+2]
  37.           mov ds, ax
  38.  
  39.           mov ax, NY*2
  40.           mul [X]
  41.           add si, ax        ; si -> U[CT,X]
  42.  
  43.           mov ax, [Y]
  44.           shl ax,1
  45.           add si, ax        ; si -> U[b,X,Y]
  46.  
  47.           mov ax, [D]       ; depth
  48.           mov dx, [S]       ; size (S*S square)
  49.           mov bx, [X]
  50.  
  51.           @@LX:
  52.             push bx
  53.             push si
  54.             mov bx, [Y]
  55.             mov cx, [S]
  56.             @@LY:
  57.               mov [si], ax
  58.               add si,2
  59.               inc bx
  60.               cmp bx, NY-2
  61.               jge @@1
  62.               dec cx
  63.             jnz @@LY
  64.           @@1:
  65.             pop si
  66.             pop bx
  67.             add si, NY*2
  68.             inc bx
  69.             cmp bx, NX-2
  70.             jge @@2
  71.             dec dx
  72.           jnz @@LX
  73.           @@2:
  74.  
  75.           pop ds
  76.         ret
  77.         ENDP
  78.  
  79.  
  80. ; // BitLift
  81.  
  82.         PROC BitLift NEAR
  83.         ARG P : DWord, L : Word
  84. P386
  85.           mov si, [word ptr U]
  86.           test [CT], 1
  87.           jz @@0
  88.           add si, NX*NY*2
  89.         @@0:                ; si -> U[CT]
  90.  
  91.           push ds
  92.           mov ax, [word ptr U+2]
  93.           mov ds, ax
  94.  
  95.           les di, [P]
  96.           mov ax, [L]
  97.           mov cx, NX*NY
  98.           xor dx, dx
  99.  
  100.         @@1:
  101.           test dx,31
  102.           jnz @@3
  103.           mov ebx, [es:di]
  104.           add di,4
  105.         @@3:
  106.           rcr ebx,1
  107.           jnc @@2
  108.           mov [si], ax
  109.         @@2:
  110.           inc dx
  111.           add si, 2
  112.           dec cx
  113.           jnz @@1
  114.  
  115. P286
  116.           pop ds
  117.         ret
  118.         ENDP
  119.  
  120.  
  121. ; // IntLift
  122.  
  123.         PROC IntLift NEAR
  124.         ARG X : Word, Y : Word, L : Word, P : DWord
  125.         LOCAL SX : Word, SY : Word
  126.           mov si, [word ptr U]
  127.           test [CT], 1
  128.           jz @@0
  129.           add si, NX*NY*2
  130.         @@0:                ; si -> U[CT]
  131.  
  132.           push ds
  133.           mov ax, [word ptr U+2]
  134.           mov ds, ax
  135.  
  136.           mov ax, NY*2
  137.           mul [X]
  138.           add si, ax        ; si -> U[CT,X]
  139.  
  140.           mov ax, [Y]
  141.           shl ax,1
  142.           add si, ax        ; si -> U[CT,X,Y]
  143.  
  144.           les di, [P]
  145.           mov ax, [es:di]
  146.           mov [SX], ax   ; X size
  147.           mov ax, [es:di+2]
  148.           mov [SY], ax   ; Y size (SX*SY square)
  149.           add di, 4
  150.  
  151.           mov dx, [SX]
  152.           mov bx, [X]
  153.  
  154.           @@LX:
  155.             push bx
  156.             push si
  157.             mov bx, [Y]
  158.             mov cx, [SY]
  159.             @@LY:
  160.               mov ax, [es:di]   ; depth
  161.               test ax,ax
  162.               js @@hollow
  163.               add ax, [L]
  164.               mov [si], ax
  165.           @@hollow:
  166.               add di,2
  167.               add si,2
  168.               inc bx
  169.               cmp bx, NY-2
  170.               jge @@1
  171.               dec cx
  172.             jnz @@LY
  173.           @@1:
  174.             pop si
  175.             pop bx
  176.             add si, NY*2
  177.             inc bx
  178.             cmp bx, NX-2
  179.             jge @@2
  180.             dec dx
  181.           jnz @@LX
  182.           @@2:
  183.  
  184.           pop ds
  185.         ret
  186.         ENDP
  187.  
  188.  
  189.  
  190.        END
  191.  
  192.