home *** CD-ROM | disk | FTP | other *** search
- { Ez egy régi, de nem olyan rossz polygon rajzoló by TyRaNT / MurmidoneS }
- Var
- Fe,Fv : Array[0..199] Of Word;
-
- Begin
- asm
-
- mov ax,013h
- int 10h
- mov ax,0a000h
- mov es,ax
-
- mov cs:word ptr @GpdX1,160 { X1 }
- mov cs:word ptr @GpdY1,40 { Y1 }
- mov cs:word ptr @GpdX2,20 { X2 }
- mov cs:word ptr @GpdY2,90 { Y2 }
- mov cs:word ptr @GpdX3,290 { X3 }
- mov cs:word ptr @GpdY3,140 { Y3 }
- mov cs:byte ptr @PCol,2 { Szín }
- call @GPoly
- jmp @Ki
-
- @gpoly:
- {*********************** Fe Fv torles *******************}
- mov ax,320
- Lea bx,fe
- mov cx,200
- @gto1: mov ds:[bx],ax
- add bx,2
- loop @gto1
- xor ax,ax
- Lea bx,fv
- mov cx,200
- @gto2: mov ds:[bx],ax
- add bx,2
- loop @gto2
- {*********************** 3 pont tablaban ****************}
- lea si,fe
- lea di,fv
- mov ax,cs:word ptr @Gpdx1
- mov bx,cs:word ptr @Gpdy1
- shl bx,1
- cmp ds:[bx+si],ax
- jb @rtv1
- mov ds:[bx+si],ax
- @rtv1: cmp ds:[bx+di],ax
- ja @rtv2
- mov ds:[bx+di],ax
- @rtv2: mov ax,cs:word ptr @Gpdx2
- mov bx,cs:word ptr @Gpdy2
- shl bx,1
- cmp ds:[bx+si],ax
- jb @rtv3
- mov ds:[bx+si],ax
- @rtv3: cmp ds:[bx+di],ax
- ja @rtv4
- mov ds:[bx+di],ax
- @rtv4: mov ax,cs:word ptr @Gpdx3
- mov bx,cs:word ptr @Gpdy3
- shl bx,1
- cmp ds:[bx+si],ax
- jb @rtv5
- mov ds:[bx+si],ax
- @rtv5: cmp ds:[bx+di],ax
- ja @rtv6
- mov ds:[bx+di],ax
- @rtv6:
- {*********************** Vonalhuzasok *******************}
- call @Gline
- mov si,cs:word ptr @GpdX1
- mov di,cs:word ptr @GpdX3
- mov cs:word ptr @GpdX1,di
- mov cs:word ptr @GpdX3,si
- mov si,cs:word ptr @GpdY1
- mov di,cs:word ptr @GpdY3
- mov cs:word ptr @GpdY1,di
- mov cs:word ptr @GpdY3,si
- call @Gline
- mov si,cs:word ptr @GpdX2
- mov di,cs:word ptr @GpdX3
- mov cs:word ptr @GpdX2,di
- mov cs:word ptr @GpdX3,si
- mov si,cs:word ptr @GpdY2
- mov di,cs:word ptr @GpdY3
- mov cs:word ptr @GpdY2,di
- mov cs:word ptr @GpdY3,si
- call @Gline
- call @gfil
- ret
- @Gline: mov ax,cs:word ptr @GpdY1
- mov cs:word ptr @GpY1,ax
- mov ax,cs:word ptr @GpdY2
- cmp ax,cs:word ptr @GpdY1
- jne @Gtp1
- ret
- @Gtp1: mov cs:word ptr @GpY2,ax
- mov ax,cs:word ptr @GpdX1
- mov cs:word ptr @GpX1,ax
- mov ax,cs:word ptr @GpdX2
- mov cs:word ptr @GpX2,ax
- xor dx,dx
- mov bx,cs:word ptr @GpY2
- sub bx,cs:word ptr @GpY1
- cmp bx,0
- jge @gpt1
- mov si,cs:word ptr @GpY1
- mov di,cs:word ptr @GpY2
- mov cs:word ptr @GpY1,di
- mov cs:word ptr @GpY2,si
- @gpt1: xor cx,cx
- cmp ax,cs:word ptr @GpX1
- ja @g1
- sub ax,cs:word ptr @GpX1
- neg ax
- inc cx
- jmp @g2
- @g1: sub ax,cs:word ptr @GpX1
- @g2: shl ax,7
- idiv bx
- cmp cx,0
- je @gyo
- neg ax
- @gyo: mov cs:word ptr @Gph1,ax
- mov ax,cs:word ptr @GpdY1
- cmp ax,cs:word ptr @GpdY2
- ja @gpc3
- mov dx,cs:word ptr @GpX1
- shl dx,7
- jmp @gpc2
- @gpc3: mov dx,cs:word ptr @GpX2
- shl dx,7
- @Gpc2: mov di,cs:word ptr @GpY1
- @Gpc1: shl di,1
- mov si,dx
- shr si,7
- lea bx,fe
- cmp ds:[bx+di],si
- jb @gtv1
- mov ds:[bx+di],si
- @gtv1: lea bx,fv
- cmp ds:[bx+di],si
- ja @gtv2
- mov ds:[bx+di],si
- @gtv2: shr di,1
- add dx,cs:word ptr @Gph1
- inc di
- cmp di,cs:word ptr @GpY2
- jne @Gpc1
- ret
- @gfil:
- push bp
- lea si,fe
- mov bx,0
- @gfc1: mov bp,bx
- mov cx,[si+bx+400]
- mov di,[si+bx]
- cmp cx,di
- jb @gfc2
- shr bx,1
- mov ax,320
- mul bx
- mov bx,ax
- {************************************** mov eax,01010101h **********}
- mov al,cs:byte ptr @PCol
- mov ah,al
- push ax
- db 066h
- shl ax,16
- pop ax
- {************ --- ***************}
- sub cx,di
- add di,bx
- shr cx,1
- jnc @tvb
- stosb
- @tvb: shr cx,1
- jnc @tva
- stosw
- @tva:
- {************ stosd ***************}
- db 066h
- rep stosw
- {************ --- ***************}
- @gfc2:
- mov bx,bp
- add bx,2
- cmp bx,400
- jne @gfc1
- pop bp
- ret
-
- @GpX1: Dw 0
- @GpY1: Dw 0
- @GpX2: Dw 0
- @GpY2: Dw 0
- @GpdX1: Dw 0
- @GpdY1: Dw 0
- @GpdX2: Dw 0
- @GpdY2: Dw 0
- @GpdX3: Dw 0
- @GpdY3: Dw 0
- @Gph1: Dw 0
- @pcol: Db 0
- @Ki:
- end;
- readln;
- End.