home *** CD-ROM | disk | FTP | other *** search
/ CD-ROM Magazin 1997 January / CD_01_97.ISO / game / movbloc2.asm < prev    next >
Assembly Source File  |  1994-11-10  |  2KB  |  142 lines

  1. ;  32-bit  moveblock rutiinit
  2. ;
  3. ;  MOVE_BLOCK_SCREEN siirtää SCR:stä SCREEN:iin
  4.  
  5.  
  6.  
  7. data segment word public
  8.  
  9.     LANG EQU PASCAL
  10.     MODEL   TPASCAL
  11.  
  12. assume ds:data
  13.      extrn  SCR:dword
  14.  
  15. data ends
  16.  
  17. GLOBAL  LANG  MOVE_BLOCK_SCREEN : FAR
  18. GLOBAL  LANG  MOVE_BLOCK        : FAR
  19.  
  20.  
  21. CODESEG
  22.  
  23. assume cs:code
  24. .386
  25.  frametime  DW  ?
  26.  
  27.  
  28. MOVE_BLOCK_SCREEN PROC FAR x1:word, y1:word, lev:word, kork:word, x2:word, Y2:word
  29. ;public MOVE_BLOCK_SCREEN
  30.  
  31.     PUSH DS
  32.     add LEV,3
  33.  
  34.     mov ax,x1
  35.     mov bx,ax
  36.     and ax,1111111111111100b
  37.     cmp ax,bx      ;kun laitetaan 4:lla jaolliseen paikkaan niin
  38.     jnl tero1      ;offsetti tulee pienemmäksi eli täytyy lisätä LEVeyttä
  39.     add LEV,4
  40.   tero1:
  41.  
  42.     mov ax,0a000h
  43.     mov es,ax
  44.  
  45.     mov ax,320      ;lasketaan DEST offsetti
  46.     mul Y2
  47.     add ax,X2
  48.     mov di,ax
  49.  
  50.     LDS SI,SCR      ;lasketaan SOURCE offsetti
  51.     mov ax,320
  52.     mul Y1
  53.     add ax,X1
  54.     mov SI,AX
  55.  
  56.  
  57.     and si,1111111111111100b ;offsetti 4:n tarkkudella
  58.     and di,1111111111111100b
  59.  
  60.     mov dx,LEV               ;LEV/4
  61.     shr dx,2
  62.  
  63.     mov bx,320               ;paljonko plussataan rivin perässä
  64.     mov cx,DX
  65.     shl CX,2
  66.     sub bx,cx                ;BX= riviadd
  67.  
  68.     mov cx,KORK
  69.  YLOOP:
  70.     mov ax,cx
  71.     mov cx,dx
  72.     REP MOVSD
  73.     add si,BX                ;RIVIADD
  74.     add di,BX
  75.     mov cx,ax
  76.     LOOP YLOOP
  77.  
  78.     pop DS
  79.     ret
  80. MOVE_BLOCK_SCREEN ENDP
  81.  
  82. ;-----------------------------------------------------------------------
  83.  
  84. MOVE_BLOCK PROC FAR FROM:DWORD, TOB:DWORD, x1:word, y1:word, lev:word, kork:word, x2:word, Y2:word
  85. ;public MOVE_BLOCK
  86.  
  87.     PUSH DS
  88.     add LEV,3
  89.  
  90.     mov ax,x1
  91.     mov bx,ax
  92.     and ax,1111111111111100b
  93.     cmp ax,bx      ;kun laitetaan 4:lla jaolliseen paikkaan niin
  94.     jnl tero2      ;offsetti tulee pienemmäksi eli täytyy lisätä LEVeyttä
  95.     add LEV,4
  96.   tero2:
  97.  
  98.     LES DI,TOB
  99.  
  100.     mov ax,320      ;lasketaan DEST offsetti
  101.     mul Y2
  102.     add ax,X2
  103.     mov di,ax
  104.  
  105.     LDS SI,FROM     ;lasketaan SOURCE offsetti
  106.     mov ax,320
  107.     mul Y1
  108.     add ax,X1
  109.     mov SI,AX
  110.  
  111.  
  112.     and si,1111111111111100b ;offsetti 4:n tarkkudella
  113.     and di,1111111111111100b
  114.  
  115.     mov dx,LEV               ;LEV/4
  116.     shr dx,2
  117.  
  118.     mov bx,320               ;paljonko plussataan rivin perässä
  119.     mov cx,DX
  120.     shl CX,2
  121.     sub bx,cx                ;BX= riviadd
  122.  
  123.     mov cx,KORK
  124.  YLOOP2:
  125.     mov ax,cx
  126.     mov cx,dx
  127.     REP MOVSD
  128.     add si,BX                ;RIVIADD
  129.     add di,BX
  130.     mov cx,ax
  131.     LOOP YLOOP2
  132.  
  133.     pop DS
  134.     ret
  135. MOVE_BLOCK ENDP
  136.  
  137.  
  138. code    ENDS
  139.     END
  140.  
  141.  
  142.