⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gfx.s

📁 LTris a tetris clone for Linux
💻 S
📖 第 1 页 / 共 2 页
字号:
	movw	(%esi), %cx	movw	%cx, (%edi)nopixel:	addl	$2, %esi	addl	$2, %edi	popl	%ecx	decl	%ecx	jnz		innerl2	addl	%eax, %edi	addl	%ebx, %esi	decl	%edx	jnz		outerl24:	popl	%esi	popl	%edi	DelStack	ret.globl	SC_Trp_11SC_Trp_11:	CrtStack	pushl	%edi	pushl	%esi	//x < lx ?	movl	clp_lx, %eax	cmpl	%eax, 16(%ebp)	jge     0f	movl	16(%ebp), %ebx	subl	%ebx, %eax	subl	%eax, 40(%ebp)	addl	%eax, 32(%ebp)	movl	clp_lx, %eax	movl	%eax, 16(%ebp)0:	//y < ty ?	movl	clp_ty, %eax	cmp		%eax, 20(%ebp)	jge     1f	movl	20(%ebp), %ebx	subl	%ebx, %eax	subl	%eax, 44(%ebp)	addl	%eax, 36(%ebp)	movl	clp_ty, %eax	movl	%eax, 20(%ebp)1:	//x > rx    movl	clp_rx, %eax    movl	16(%ebp), %ebx    addl	40(%ebp), %ebx    subl	$1, %ebx    cmp		%eax, %ebx    jle		2f    movl	clp_rx, %ebx    movl	16(%ebp), %eax    subl	%eax, %ebx    addl	$1, %ebx    movl	%ebx, 40(%ebp)2:	//y > ty    movl	clp_by, %eax    movl	20(%ebp), %ebx    addl	44(%ebp), %ebx    subl	$1, %ebx    cmp		%eax, %ebx    jle		3f    movl	clp_by, %ebx    movl	20(%ebp), %eax    subl	%eax, %ebx    addl	$1, %ebx    movl	%ebx, 44(%ebp)3:		//valid w?	movl	40(%ebp), %eax	cmpl	$0, %eax	jle		4f    //valid h?	movl	44(%ebp), %eax	cmpl	$0, %eax	jle		4f	xorl	%edi, %edi	xorl	%esi, %esi	xorl	%eax, %eax	//esi source	movl	36(%ebp), %eax //sy	mull	28(%ebp) //dw	addl	32(%ebp), %eax //sx	shll	$1, %eax	addl 	24(%ebp), %eax	movl	%eax, %esi //source offset in esi	//edi destination	pushl	%ds	popl	%es	movl	20(%ebp), %eax	mull	12(%ebp)	addl	16(%ebp), %eax	shll	$1, %eax	addl	8(%ebp), %eax	movl	%eax, %edi //dest offset in edi	movl	44(%ebp), %edxouterl:	movl	40(%ebp), %ecxinnerl:	movw	(%esi), %bx	cmpw	$0, %bx	jz		7f	movl	(%esi), %eax	andl	rMask, %eax	movl	(%edi), %ebx	andl	rMask, %ebx	addl	%ebx, %eax	shrl	$1, %eax	andl	rMask, %eax	pushl	%eax	movl	(%esi), %eax	andl	gMask, %eax	movl	(%edi), %ebx	andl	gMask, %ebx	addl	%ebx, %eax	shrl	$1, %eax	andl	gMask, %eax	pushl	%eax	movl	(%esi), %eax	andl	bMask, %eax	movl	(%edi), %ebx	andl	bMask, %ebx	addl	%ebx, %eax	shrl	$1, %eax	andl	bMask, %eax	popl	%ebx	orl		%ebx, %eax	popl	%ebx	orl		%ebx, %eax	movw	%ax, (%edi)7:	addl	$2, %esi	addl	$2, %edi	decl	%ecx	jnz		innerl	movl	12(%ebp), %ebx	subl	40(%ebp), %ebx	shll	$1, %ebx	addl	%ebx, %edi	movl	28(%ebp), %ebx	subl	40(%ebp), %ebx	shll	$1, %ebx	addl	%ebx, %esi	decl	%edx	jnz		outerl4:	popl	%esi	popl	%edi	DelStack	ret.globl	SC_Trp_XSC_Trp_X:	CrtStack	pushl	%edi	pushl	%esi	//x < lx ?	movl	clp_lx, %eax	cmpl	%eax, 16(%ebp)	jge     0f	movl	16(%ebp), %ebx	subl	%ebx, %eax	subl	%eax, 40(%ebp)	addl	%eax, 32(%ebp)	movl	clp_lx, %eax	movl	%eax, 16(%ebp)0:	//y < ty ?	movl	clp_ty, %eax	cmp		%eax, 20(%ebp)	jge     1f	movl	20(%ebp), %ebx	subl	%ebx, %eax	subl	%eax, 44(%ebp)	addl	%eax, 36(%ebp)	movl	clp_ty, %eax	movl	%eax, 20(%ebp)1:	//x > rx    movl	clp_rx, %eax    movl	16(%ebp), %ebx    addl	40(%ebp), %ebx    subl	$1, %ebx    cmp		%eax, %ebx    jle		2f    movl	clp_rx, %ebx    movl	16(%ebp), %eax    subl	%eax, %ebx    addl	$1, %ebx    movl	%ebx, 40(%ebp)2:	//y > ty    movl	clp_by, %eax    movl	20(%ebp), %ebx    addl	44(%ebp), %ebx    subl	$1, %ebx    cmp		%eax, %ebx    jle		3f    movl	clp_by, %ebx    movl	20(%ebp), %eax    subl	%eax, %ebx    addl	$1, %ebx    movl	%ebx, 44(%ebp)3:		//valid w?	movl	40(%ebp), %eax	cmpl	$0, %eax	jle		4f    //valid h?	movl	44(%ebp), %eax	cmpl	$0, %eax	jle		4f	xorl	%edi, %edi	xorl	%esi, %esi	xorl	%eax, %eax	//esi source	movl	36(%ebp), %eax //sy	mull	28(%ebp) //dw	addl	32(%ebp), %eax //sx	shll	$1, %eax	addl 	24(%ebp), %eax	movl	%eax, %esi //source offset in esi	//edi destination	pushl	%ds	popl	%es	movl	20(%ebp), %eax	mull	12(%ebp)	addl	16(%ebp), %eax	shll	$1, %eax	addl	8(%ebp), %eax	movl	%eax, %edi //dest offset in edi	movl	44(%ebp), %edxouterl4:	movl	40(%ebp), %ecx	pushl	%edxinnerl4:	pushl	%ecx	movw	(%esi), %bx	cmpw	$0, %bx	jz		7f	movl	(%esi), %eax	andl	rMask, %eax	movb	rlShft, %cl	shrl	%cl, %eax	mull	48(%ebp)	shll	%cl, %eax		pushl	%eax //relative red source part	movl	(%edi), %eax	andl	rMask, %eax	shrl	%cl, %eax	movl	$100, %ebx	subl	48(%ebp), %ebx	mull	%ebx	shll	%cl, %eax //relative green dest part	popl	%ebx	addl	%ebx, %eax	movl	$100, %ebx	divl	%ebx	andl	rMask, %eax	pushl	%eax	movl	(%esi), %eax	andl	gMask, %eax	movb	glShft, %cl	shrl	%cl, %eax	mull	48(%ebp)	shll	%cl, %eax		pushl	%eax //relative red source part	movl	(%edi), %eax	andl	gMask, %eax	shrl	%cl, %eax	movl	$100, %ebx	subl	48(%ebp), %ebx	mull	%ebx	shll	%cl, %eax //relative green dest part	popl	%ebx	addl	%ebx, %eax	movl	$100, %ebx	divl	%ebx	andl	gMask, %eax	pushl	%eax	movl	(%esi), %eax	andl	bMask, %eax	movb	blShft, %cl	shrl	%cl, %eax	mull	48(%ebp)	shll	%cl, %eax		pushl	%eax //relative blue source part	movl	(%edi), %eax	andl	bMask, %eax	shrl	%cl, %eax	movl	$100, %ebx	subl	48(%ebp), %ebx	mull	%ebx	shll	%cl, %eax //relative blue dest part	popl	%ebx	addl	%ebx, %eax	movl	$100, %ebx	divl	%ebx	andl	bMask, %eax	popl	%ebx	orl		%ebx, %eax	popl	%ebx	orl		%ebx, %eax	movw	%ax, (%edi)7:	addl	$2, %esi	addl	$2, %edi	popl	%ecx	decl	%ecx	jnz		innerl4	popl	%edx	movl	12(%ebp), %ebx	subl	40(%ebp), %ebx	shll	$1, %ebx	addl	%ebx, %edi	movl	28(%ebp), %ebx	subl	40(%ebp), %ebx	shll	$1, %ebx	addl	%ebx, %esi	decl	%edx	jnz		outerl44:	popl	%esi	popl	%edi	DelStack	ret.globl	SC_Clr_11SC_Clr_11:	CrtStack	pushl	%edi	pushl	%esi	//x < lx ?	movl	clp_lx, %eax	cmpl	%eax, 16(%ebp)	jge     0f	movl	16(%ebp), %ebx	subl	%ebx, %eax	subl	%eax, 40(%ebp)	addl	%eax, 32(%ebp)	movl	clp_lx, %eax	movl	%eax, 16(%ebp)0:	//y < ty ?	movl	clp_ty, %eax 	cmp		%eax, 20(%ebp)	jge     1f	movl	20(%ebp), %ebx	subl	%ebx, %eax	subl	%eax, 44(%ebp)	addl	%eax, 36(%ebp)	movl	clp_ty, %eax	movl	%eax, 20(%ebp)1:	//x > rx    movl	clp_rx, %eax    movl	16(%ebp), %ebx    addl	40(%ebp), %ebx    subl	$1, %ebx    cmp		%eax, %ebx    jle		2f    movl	clp_rx, %ebx    movl	16(%ebp), %eax    subl	%eax, %ebx    addl	$1, %ebx    movl	%ebx, 40(%ebp)2:	//y > ty    movl	clp_by, %eax    movl	20(%ebp), %ebx    addl	44(%ebp), %ebx    subl	$1, %ebx    cmp		%eax, %ebx    jle		3f    movl	clp_by, %ebx    movl	20(%ebp), %eax    subl	%eax, %ebx    addl	$1, %ebx    movl	%ebx, 44(%ebp)3:		//valid w?	movl	40(%ebp), %eax	cmpl	$0, %eax	jle		4f    //valid h?	movl	44(%ebp), %eax	cmpl	$0, %eax	jle		4f	xorl	%edi, %edi	xorl	%esi, %esi	xorl	%eax, %eax	//esi source	movl	36(%ebp), %eax //sy	mull	28(%ebp) //dw	addl	32(%ebp), %eax //sx	shll	$1, %eax	addl 	24(%ebp), %eax	movl	%eax, %esi //source offset in esi	//edi destination	pushl	%ds	popl	%es	movl	20(%ebp), %eax	mull	12(%ebp)	addl	16(%ebp), %eax	shll	$1, %eax	addl	8(%ebp), %eax	movl	%eax, %edi //dest offset in edi	movl	44(%ebp), %edx //heightouterl7:	movl	40(%ebp), %ecx //width	pushl	%edxinnerl7:	pushl	%ecx	movw	(%esi), %bx	cmpw	$0, %bx	jz		7f	xor		%ebx, %ebx	movb	46(%ebp), %bl	movb	rrShft, %cl	shrb	%cl, %bl	movb	rlShft, %cl	shll	%cl, %ebx //relative red sourve value	movl	(%edi), %eax	andl	rMask, %eax	addl	%ebx, %eax	shrl	$1, %eax	andl	rMask, %eax	pushl	%eax	xor		%ebx, %ebx	movb	45(%ebp), %bl	movb	grShft, %cl	shrb	%cl, %bl	movb	glShft, %cl	shll	%cl, %ebx //relative green sourve value	movl	(%edi), %eax	andl	gMask, %eax	addl	%ebx, %eax	shrl	$1, %eax	andl	gMask, %eax	pushl	%eax	xor		%ebx, %ebx	movb	44(%ebp), %bl	movb	brShft, %cl	shrb	%cl, %bl	movb	blShft, %cl	shll	%cl, %ebx //relative blue sourve value	movl	(%edi), %eax	andl	bMask, %eax	addl	%ebx, %eax	shrl	$1, %eax	andl	bMask, %eax	popl	%ebx	orl		%ebx, %eax	popl	%ebx	orl		%ebx, %eax	movw	%ax, (%edi)7:	addl	$2, %edi	addl	$2, %esi	popl	%ecx	decl	%ecx	jnz		innerl7	movl	28(%ebp), %eax	subl	40(%ebp), %eax	shll	$1, %eax	addl	%eax, %esi	movl	12(%ebp), %ebx	subl	40(%ebp), %ebx	shll	$1, %ebx	addl	%ebx, %edi	popl	%edx	decl	%edx	jnz		outerl74:	popl	%esi	popl	%edi	DelStack	ret.globl	SC_Clr_XSC_Clr_X:	CrtStack	pushl	%edi	pushl	%esi	//x < lx ?	movl	clp_lx, %eax	cmpl	%eax, 16(%ebp)	jge     0f	movl	16(%ebp), %ebx	subl	%ebx, %eax	subl	%eax, 40(%ebp)	addl	%eax, 32(%ebp)	movl	clp_lx, %eax	movl	%eax, 16(%ebp)0:	//y < ty ?	movl	clp_ty, %eax	cmp		%eax, 20(%ebp)	jge     1f	movl	20(%ebp), %ebx	subl	%ebx, %eax	subl	%eax, 44(%ebp)	addl	%eax, 36(%ebp)	movl	clp_ty, %eax	movl	%eax, 20(%ebp)1:	//x > rx    movl	clp_rx, %eax    movl	16(%ebp), %ebx    addl	40(%ebp), %ebx    subl	$1, %ebx    cmp		%eax, %ebx    jle		2f    movl	clp_rx, %ebx    movl	16(%ebp), %eax    subl	%eax, %ebx    addl	$1, %ebx    movl	%ebx, 40(%ebp)2:	//y > ty    movl	clp_by, %eax    movl	20(%ebp), %ebx    addl	44(%ebp), %ebx    subl	$1, %ebx    cmp		%eax, %ebx    jle		3f    movl	clp_by, %ebx    movl	20(%ebp), %eax    subl	%eax, %ebx    addl	$1, %ebx    movl	%ebx, 44(%ebp)3:		//valid w?	movl	40(%ebp), %eax	cmpl	$0, %eax	jle		4f    //valid h?	movl	44(%ebp), %eax	cmpl	$0, %eax	jle		4f	xorl	%edi, %edi	xorl	%esi, %esi	xorl	%eax, %eax	//esi source	movl	36(%ebp), %eax //sy	mull	28(%ebp) //dw	addl	32(%ebp), %eax //sx	shll	$1, %eax	addl 	24(%ebp), %eax	movl	%eax, %esi //source offset in esi	//edi destination	pushl	%ds	popl	%es	movl	20(%ebp), %eax	mull	12(%ebp)	addl	16(%ebp), %eax	shll	$1, %eax	addl	8(%ebp), %eax	movl	%eax, %edi //dest offset in edi	movl	44(%ebp), %edx //heightouterl6:	movl	40(%ebp), %ecx //width	pushl	%edxinnerl6:	pushl	%ecx	movw	(%esi), %bx	cmpw	$0, %bx	jz		7f	xor		%eax, %eax	movb	50(%ebp), %al	movb	rrShft, %cl	shrb	%cl, %al	mull	52(%ebp)	movb	rlShft, %cl	shll	%cl, %eax	pushl	%eax //relative red source part	movl	(%edi), %eax	andl	rMask, %eax	shrl	%cl, %eax	movl	$100, %ebx	subl	52(%ebp), %ebx	mull	%ebx	shll	%cl, %eax //relative red dest part	popl	%ebx	addl	%ebx, %eax	movl	$100, %ebx	divl	%ebx	andl	rMask, %eax	pushl	%eax	xor		%eax, %eax	movb	49(%ebp), %al	movb	grShft, %cl	shrb	%cl, %al	mull	52(%ebp)	movb	glShft, %cl	shll	%cl, %eax	pushl	%eax //relative green source part	movl	(%edi), %eax	andl	gMask, %eax	shrl	%cl, %eax	movl	$100, %ebx	subl	52(%ebp), %ebx	mull	%ebx	shll	%cl, %eax //relative green dest part	popl	%ebx	addl	%ebx, %eax	movl	$100, %ebx	divl	%ebx	andl	gMask, %eax	pushl	%eax	xor		%eax, %eax	movb	48(%ebp), %al	movb	brShft, %cl	shrb	%cl, %al	mull	52(%ebp)	movb	blShft, %cl	shll	%cl, %eax	pushl	%eax //relative blue source part	movl	(%edi), %eax	andl	bMask, %eax	shrl	%cl, %eax	movl	$100, %ebx	subl	52(%ebp), %ebx	mull	%ebx	shll	%cl, %eax //relative blue dest part	popl	%ebx	addl	%ebx, %eax	movl	$100, %ebx	divl	%ebx	andl	bMask, %eax	popl	%ebx	orl		%ebx, %eax	popl	%ebx	orl		%ebx, %eax	movw	%ax, (%edi)7:	addl	$2, %edi	addl	$2, %esi	popl	%ecx	decl	%ecx	jnz		innerl6	movl	28(%ebp), %eax	subl	40(%ebp), %eax	shll	$1, %eax	addl	%eax, %esi	movl	12(%ebp), %ebx	subl	40(%ebp), %ebx	shll	$1, %ebx	addl	%ebx, %edi	popl	%edx	decl	%edx	jnz		outerl64:	popl	%esi	popl	%edi	DelStack	ret.globl Gfx_SetClipRgnGfx_SetClipRgn:	CrtStack	movl	8(%ebp), %eax	movl	%eax, clp_lx 		//left x	movl	12(%ebp), %eax	movl	%eax, clp_ty 		//top y	movl	8(%ebp), %eax	addl	16(%ebp), %eax	subl	$1, %eax	movl	%eax, clp_rx		//right x	movl	12(%ebp), %eax	addl	20(%ebp), %eax	subl	$1, %eax	movl	%eax, clp_by		//bottom y		DelStack	ret

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -