home *** CD-ROM | disk | FTP | other *** search
/ CD-X 1 / cdx_01.iso / demodisc / tyrant / polydraw / gpoly.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1995-03-17  |  5.2 KB  |  207 lines

  1. { Ez egy régi, de nem olyan rossz polygon rajzoló by TyRaNT / MurmidoneS }
  2. Var
  3.                 Fe,Fv           : Array[0..199] Of Word;
  4.  
  5. Begin
  6. asm
  7.  
  8.         mov ax,013h
  9.         int 10h
  10.         mov ax,0a000h
  11.         mov es,ax
  12.  
  13.         mov cs:word ptr @GpdX1,160                      { X1 }
  14.         mov cs:word ptr @GpdY1,40                       { Y1 }
  15.         mov cs:word ptr @GpdX2,20                       { X2 }
  16.         mov cs:word ptr @GpdY2,90                       { Y2 }
  17.         mov cs:word ptr @GpdX3,290                      { X3 }
  18.         mov cs:word ptr @GpdY3,140                      { Y3 }
  19.         mov cs:byte ptr @PCol,2                         { Szín }
  20.         call @GPoly
  21.         jmp @Ki
  22.  
  23. @gpoly:
  24. {*********************** Fe Fv torles *******************}
  25.         mov ax,320
  26.         Lea bx,fe
  27.         mov cx,200
  28. @gto1:  mov ds:[bx],ax
  29.         add bx,2
  30.         loop @gto1
  31.         xor  ax,ax
  32.         Lea bx,fv
  33.         mov cx,200
  34. @gto2:  mov ds:[bx],ax
  35.         add bx,2
  36.         loop @gto2
  37. {*********************** 3 pont tablaban ****************}
  38.         lea si,fe
  39.         lea di,fv
  40.         mov ax,cs:word ptr @Gpdx1
  41.         mov bx,cs:word ptr @Gpdy1
  42.         shl bx,1
  43.         cmp ds:[bx+si],ax
  44.         jb  @rtv1
  45.         mov ds:[bx+si],ax
  46. @rtv1:  cmp ds:[bx+di],ax
  47.         ja  @rtv2
  48.         mov ds:[bx+di],ax
  49. @rtv2:  mov ax,cs:word ptr @Gpdx2
  50.         mov bx,cs:word ptr @Gpdy2
  51.         shl bx,1
  52.         cmp ds:[bx+si],ax
  53.         jb  @rtv3
  54.         mov ds:[bx+si],ax
  55. @rtv3:  cmp ds:[bx+di],ax
  56.         ja  @rtv4
  57.         mov ds:[bx+di],ax
  58. @rtv4:  mov ax,cs:word ptr @Gpdx3
  59.         mov bx,cs:word ptr @Gpdy3
  60.         shl bx,1
  61.         cmp ds:[bx+si],ax
  62.         jb  @rtv5
  63.         mov ds:[bx+si],ax
  64. @rtv5:  cmp ds:[bx+di],ax
  65.         ja  @rtv6
  66.         mov ds:[bx+di],ax
  67. @rtv6:
  68. {*********************** Vonalhuzasok *******************}
  69.         call @Gline
  70.         mov si,cs:word ptr @GpdX1
  71.         mov di,cs:word ptr @GpdX3
  72.         mov cs:word ptr @GpdX1,di
  73.         mov cs:word ptr @GpdX3,si
  74.         mov si,cs:word ptr @GpdY1
  75.         mov di,cs:word ptr @GpdY3
  76.         mov cs:word ptr @GpdY1,di
  77.         mov cs:word ptr @GpdY3,si
  78.         call @Gline
  79.         mov si,cs:word ptr @GpdX2
  80.         mov di,cs:word ptr @GpdX3
  81.         mov cs:word ptr @GpdX2,di
  82.         mov cs:word ptr @GpdX3,si
  83.         mov si,cs:word ptr @GpdY2
  84.         mov di,cs:word ptr @GpdY3
  85.         mov cs:word ptr @GpdY2,di
  86.         mov cs:word ptr @GpdY3,si
  87.         call @Gline
  88.         call @gfil
  89.         ret
  90. @Gline: mov ax,cs:word ptr @GpdY1
  91.         mov cs:word ptr @GpY1,ax
  92.         mov ax,cs:word ptr @GpdY2
  93.         cmp ax,cs:word ptr @GpdY1
  94.         jne @Gtp1
  95.         ret
  96. @Gtp1:  mov cs:word ptr @GpY2,ax
  97.         mov ax,cs:word ptr @GpdX1
  98.         mov cs:word ptr @GpX1,ax
  99.         mov ax,cs:word ptr @GpdX2
  100.         mov cs:word ptr @GpX2,ax
  101.         xor dx,dx
  102.         mov bx,cs:word ptr @GpY2
  103.         sub bx,cs:word ptr @GpY1
  104.         cmp bx,0
  105.         jge @gpt1
  106.         mov si,cs:word ptr @GpY1
  107.         mov di,cs:word ptr @GpY2
  108.         mov cs:word ptr @GpY1,di
  109.         mov cs:word ptr @GpY2,si
  110. @gpt1:  xor cx,cx
  111.         cmp ax,cs:word ptr @GpX1
  112.         ja  @g1
  113.         sub ax,cs:word ptr @GpX1
  114.         neg ax
  115.         inc cx
  116.         jmp @g2
  117. @g1:    sub ax,cs:word ptr @GpX1
  118. @g2:    shl ax,7
  119.         idiv bx
  120.         cmp cx,0
  121.         je @gyo
  122.         neg ax
  123. @gyo:   mov cs:word ptr @Gph1,ax
  124.         mov ax,cs:word ptr @GpdY1
  125.         cmp ax,cs:word ptr @GpdY2
  126.         ja @gpc3
  127.         mov dx,cs:word ptr @GpX1
  128.         shl dx,7
  129.         jmp @gpc2
  130. @gpc3:  mov dx,cs:word ptr @GpX2
  131.         shl dx,7
  132. @Gpc2:  mov di,cs:word ptr @GpY1
  133. @Gpc1:  shl di,1
  134.         mov si,dx
  135.         shr si,7
  136.         lea bx,fe
  137.         cmp ds:[bx+di],si
  138.         jb  @gtv1
  139.         mov ds:[bx+di],si
  140. @gtv1:  lea bx,fv
  141.         cmp ds:[bx+di],si
  142.         ja  @gtv2
  143.         mov ds:[bx+di],si
  144. @gtv2:  shr di,1
  145.         add dx,cs:word ptr @Gph1
  146.         inc di
  147.         cmp di,cs:word ptr @GpY2
  148.         jne @Gpc1
  149.         ret
  150. @gfil:
  151.         push    bp
  152.         lea     si,fe
  153.         mov     bx,0
  154. @gfc1:  mov     bp,bx
  155.         mov     cx,[si+bx+400]
  156.         mov     di,[si+bx]
  157.         cmp     cx,di
  158.         jb      @gfc2
  159.         shr     bx,1
  160.         mov     ax,320
  161.         mul     bx
  162.         mov     bx,ax
  163. {************************************** mov eax,01010101h **********}
  164.         mov     al,cs:byte ptr @PCol
  165.         mov     ah,al
  166.         push    ax
  167. db 066h
  168.         shl     ax,16
  169.         pop     ax
  170. {************ --- ***************}
  171.         sub     cx,di
  172.         add     di,bx
  173.         shr     cx,1
  174.         jnc     @tvb
  175.         stosb
  176. @tvb:   shr     cx,1
  177.         jnc     @tva
  178.         stosw
  179. @tva:
  180. {************ stosd ***************}
  181. db 066h
  182. rep     stosw
  183. {************ --- ***************}
  184. @gfc2:
  185.         mov     bx,bp
  186.         add     bx,2
  187.         cmp     bx,400
  188.         jne     @gfc1
  189.         pop     bp
  190.         ret
  191.  
  192. @GpX1:    Dw    0
  193. @GpY1:    Dw    0
  194. @GpX2:    Dw    0
  195. @GpY2:    Dw    0
  196. @GpdX1:   Dw    0
  197. @GpdY1:   Dw    0
  198. @GpdX2:   Dw    0
  199. @GpdY2:   Dw    0
  200. @GpdX3:   Dw    0
  201. @GpdY3:   Dw    0
  202. @Gph1:    Dw    0
  203. @pcol:    Db    0
  204. @Ki:
  205. end;
  206. readln;
  207. End.