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

📄 spr8x8_32.s

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 S
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************//*                                                                            *//*                          RAINE 8x8 TILE DRAWING                            *//*                                                                            *//******************************************************************************//*MappedTransparent MappedDirect-MappedTransparent Direct-Mapped*/#include "asmdefs.inc"CODE_SEG#define DEST_0		0#define DEST_1		4#define DEST_2		8#define DEST_3		12#define DEST_4		16#define DEST_5		20#define DEST_6		24#define DEST_7		28FUNC(Draw8x8_Mapped_32)	pushl	%ebp	pushl	%edi	pushl	%esi	pushl	%ebx	movl	20(%esp),%esi			// source	movl	28(%esp),%eax			// y	movl	%esi,%edx	sall	$2,%eax	addl	$8*8,%edx			// tile end	movl	0xDEADBEEF(%eax),%ediblin_00:	movl	%edx,endc_00-4	movl	32(%esp),%ebp			// cmap	addl	24(%esp),%edi			// x	addl	24(%esp),%edi			// x	addl	24(%esp),%edi			// x	addl	24(%esp),%edi			// x	xorl	%edx,%edx	xorl	%ecx,%ecx	xorl	%ebx,%ebx	xorl	%eax,%eax9:	movb	(%edi),%dl	movb	(%esi),%al	movb	15(%edi),%cl	movb	4(%esi),%bl	movl	(%ebp,%eax,4),%ecx	movl	(%ebp,%ebx,4),%edx	movl	%ecx,DEST_0(%edi)	movl	%edx,DEST_4(%edi)	movb	1(%esi),%al	movb	5(%esi),%bl	movl	(%ebp,%eax,4),%ecx	movl	(%ebp,%ebx,4),%edx	movl	%ecx,DEST_1(%edi)	movl	%edx,DEST_5(%edi)	movb	2(%esi),%al	movb	6(%esi),%bl	movl	(%ebp,%eax,4),%ecx	movl	(%ebp,%ebx,4),%edx	movl	%ecx,DEST_2(%edi)	movl	%edx,DEST_6(%edi)	movb	3(%esi),%al	movb	7(%esi),%bl	movl	(%ebp,%eax,4),%ecx	movl	(%ebp,%ebx,4),%edx	movl	%ecx,DEST_3(%edi)	movl	%edx,DEST_7(%edi)	addl	$8,%esi			// Next Tile Line	addl	$0xDEADBEEF,%edi	// Next Screen Linebitw_00:	cmp	$0xDEADBEEF,%esiendc_00:	jne	9b		popl	%ebx	popl	%esi	popl	%edi	popl	%ebp	retFUNC(Draw8x8_Mapped_32_FlipY)	pushl	%ebp	pushl	%edi	pushl	%esi	pushl	%ebx	movl	20(%esp),%esi			// source	movl	28(%esp),%eax			// y	movl	%esi,%edx	sall	$2,%eax	addl	$8*8,%edx			// tile end	movl	0xDEADBEEF(%eax),%ediblin_01:	movl	%edx,endc_01-4	movl	32(%esp),%ebp			// cmap	addl	24(%esp),%edi			// x	addl	24(%esp),%edi			// x	addl	24(%esp),%edi			// x	addl	24(%esp),%edi			// x	xorl	%edx,%edx	xorl	%ecx,%ecx	xorl	%ebx,%ebx	xorl	%eax,%eax9:	movb	(%edi),%dl	movb	(%esi),%al	movb	15(%edi),%cl	movb	4(%esi),%bl	movl	(%ebp,%eax,4),%ecx	movl	(%ebp,%ebx,4),%edx	movl	%ecx,DEST_7(%edi)	movl	%edx,DEST_3(%edi)	movb	1(%esi),%al	movb	5(%esi),%bl	movl	(%ebp,%eax,4),%ecx	movl	(%ebp,%ebx,4),%edx	movl	%ecx,DEST_6(%edi)	movl	%edx,DEST_2(%edi)	movb	2(%esi),%al	movb	6(%esi),%bl	movl	(%ebp,%eax,4),%ecx	movl	(%ebp,%ebx,4),%edx	movl	%ecx,DEST_5(%edi)	movl	%edx,DEST_1(%edi)	movb	3(%esi),%al	movb	7(%esi),%bl	movl	(%ebp,%eax,4),%ecx	movl	(%ebp,%ebx,4),%edx	movl	%ecx,DEST_4(%edi)	movl	%edx,DEST_0(%edi)	addl	$8,%esi			// Next Tile Line	addl	$0xDEADBEEF,%edi	// Next Screen Linebitw_01:	cmp	$0xDEADBEEF,%esiendc_01:	jne	9b		popl	%ebx	popl	%esi	popl	%edi	popl	%ebp	retFUNC(Draw8x8_Mapped_32_FlipX)	pushl	%ebp	pushl	%edi	pushl	%esi	pushl	%ebx	movl	20(%esp),%esi			// source	movl	28(%esp),%eax			// y	movl	%esi,%edx	sall	$2,%eax	addl	$8*8,%edx			// tile end	movl	0xDEADBEEF(%eax),%ediblin_02:	movl	%edx,endc_02-4	movl	32(%esp),%ebp			// cmap	addl	24(%esp),%edi			// x	addl	24(%esp),%edi			// x	addl	24(%esp),%edi			// x	addl	24(%esp),%edi			// x	xorl	%edx,%edx	xorl	%ecx,%ecx	xorl	%ebx,%ebx	xorl	%eax,%eax9:	movb	(%edi),%dl	movb	(%esi),%al	movb	15(%edi),%cl	movb	4(%esi),%bl	movl	(%ebp,%eax,4),%ecx	movl	(%ebp,%ebx,4),%edx	movl	%ecx,DEST_0(%edi)	movl	%edx,DEST_4(%edi)	movb	1(%esi),%al	movb	5(%esi),%bl	movl	(%ebp,%eax,4),%ecx	movl	(%ebp,%ebx,4),%edx	movl	%ecx,DEST_1(%edi)	movl	%edx,DEST_5(%edi)	movb	2(%esi),%al	movb	6(%esi),%bl	movl	(%ebp,%eax,4),%ecx	movl	(%ebp,%ebx,4),%edx	movl	%ecx,DEST_2(%edi)	movl	%edx,DEST_6(%edi)	movb	3(%esi),%al	movb	7(%esi),%bl	movl	(%ebp,%eax,4),%ecx	movl	(%ebp,%ebx,4),%edx	movl	%ecx,DEST_3(%edi)	movl	%edx,DEST_7(%edi)	addl	$8,%esi			// Next Tile Line	subl	$0xDEADBEEF,%edi	// Next Screen Linebitw_02:	cmp	$0xDEADBEEF,%esiendc_02:	jne	9b		popl	%ebx	popl	%esi	popl	%edi	popl	%ebp	retFUNC(Draw8x8_Mapped_32_FlipXY)	pushl	%ebp	pushl	%edi	pushl	%esi	pushl	%ebx	movl	20(%esp),%esi			// source	movl	28(%esp),%eax			// y	movl	%esi,%edx	sall	$2,%eax	addl	$8*8,%edx			// tile end	movl	0xDEADBEEF(%eax),%ediblin_03:	movl	%edx,endc_03-4	movl	32(%esp),%ebp			// cmap	addl	24(%esp),%edi			// x	addl	24(%esp),%edi			// x	addl	24(%esp),%edi			// x	addl	24(%esp),%edi			// x	xorl	%edx,%edx	xorl	%ecx,%ecx	xorl	%ebx,%ebx	xorl	%eax,%eax9:	movb	(%edi),%dl	movb	(%esi),%al	movb	15(%edi),%cl	movb	4(%esi),%bl	movl	(%ebp,%eax,4),%ecx	movl	(%ebp,%ebx,4),%edx	movl	%ecx,DEST_7(%edi)	movl	%edx,DEST_3(%edi)	movb	1(%esi),%al	movb	5(%esi),%bl	movl	(%ebp,%eax,4),%ecx	movl	(%ebp,%ebx,4),%edx	movl	%ecx,DEST_6(%edi)	movl	%edx,DEST_2(%edi)	movb	2(%esi),%al	movb	6(%esi),%bl	movl	(%ebp,%eax,4),%ecx	movl	(%ebp,%ebx,4),%edx	movl	%ecx,DEST_5(%edi)	movl	%edx,DEST_1(%edi)	movb	3(%esi),%al	movb	7(%esi),%bl	movl	(%ebp,%eax,4),%ecx	movl	(%ebp,%ebx,4),%edx	movl	%ecx,DEST_4(%edi)	movl	%edx,DEST_0(%edi)	addl	$8,%esi			// Next Tile Line	subl	$0xDEADBEEF,%edi	// Next Screen Linebitw_03:	cmp	$0xDEADBEEF,%esiendc_03:	jne	9b		popl	%ebx	popl	%esi	popl	%edi	popl	%ebp	retFUNC(Draw8x8_Trans_Mapped_32)	pushl	%ebp	pushl	%edi	pushl	%esi	pushl	%ebx	movl	20(%esp),%esi			// source	movl	28(%esp),%eax			// y	movl	%esi,%edx	sall	$2,%eax	addl	$8*8,%edx			// tile end	movl	0xDEADBEEF(%eax),%ediblin_04:	movl	%edx,endc_04-4	movl	32(%esp),%ebp			// cmap	addl	24(%esp),%edi			// x	addl	24(%esp),%edi			// x	addl	24(%esp),%edi			// x	addl	24(%esp),%edi			// x	xorl	%edx,%edx	xorl	%ecx,%ecx	xorl	%ebx,%ebx	xorl	%eax,%eax9:	movw	(%edi),%dx	movb	(%esi),%al	movw	14(%edi),%cx	movb	4(%esi),%bl	testb	%al,%al	jz	7f	movl	(%ebp,%eax,4),%ecx	movl	%ecx,DEST_0(%edi)7:	testb	%bl,%bl	jz	7f	movl	(%ebp,%ebx,4),%edx	movl	%edx,DEST_4(%edi)7:	movb	1(%esi),%al	movb	5(%esi),%bl	testb	%al,%al	jz	7f	movl	(%ebp,%eax,4),%ecx	movl	%ecx,DEST_1(%edi)7:	testb	%bl,%bl	jz	7f	movl	(%ebp,%ebx,4),%edx	movl	%edx,DEST_5(%edi)7:	movb	2(%esi),%al	movb	6(%esi),%bl	testb	%al,%al	jz	7f	movl	(%ebp,%eax,4),%ecx	movl	%ecx,DEST_2(%edi)7:	testb	%bl,%bl	jz	7f	movl	(%ebp,%ebx,4),%edx	movl	%edx,DEST_6(%edi)7:	movb	3(%esi),%al	movb	7(%esi),%bl	testb	%al,%al	jz	7f	movl	(%ebp,%eax,4),%ecx	movl	%ecx,DEST_3(%edi)7:	testb	%bl,%bl	jz	7f	movl	(%ebp,%ebx,4),%edx	movl	%edx,DEST_7(%edi)7:	addl	$8,%esi			// Next Tile Line	addl	$0xDEADBEEF,%edi	// Next Screen Linebitw_04:	cmp	$0xDEADBEEF,%esiendc_04:	jne	9b		popl	%ebx	popl	%esi	popl	%edi	popl	%ebp	retFUNC(Draw8x8_Trans_Mapped_32_FlipY)	pushl	%ebp	pushl	%edi	pushl	%esi	pushl	%ebx	movl	20(%esp),%esi			// source	movl	28(%esp),%eax			// y	movl	%esi,%edx	sall	$2,%eax	addl	$8*8,%edx			// tile end	movl	0xDEADBEEF(%eax),%ediblin_05:	movl	%edx,endc_05-4	movl	32(%esp),%ebp			// cmap	addl	24(%esp),%edi			// x	addl	24(%esp),%edi			// x	addl	24(%esp),%edi			// x	addl	24(%esp),%edi			// x	xorl	%edx,%edx	xorl	%ecx,%ecx	xorl	%ebx,%ebx	xorl	%eax,%eax9:	movw	(%edi),%dx	movb	(%esi),%al	movw	14(%edi),%cx	movb	4(%esi),%bl	testb	%al,%al	jz	7f	movl	(%ebp,%eax,4),%ecx	movl	%ecx,DEST_7(%edi)7:	testb	%bl,%bl	jz	7f	movl	(%ebp,%ebx,4),%edx	movl	%edx,DEST_3(%edi)7:	movb	1(%esi),%al	movb	5(%esi),%bl	testb	%al,%al	jz	7f	movl	(%ebp,%eax,4),%ecx	movl	%ecx,DEST_6(%edi)7:	testb	%bl,%bl	jz	7f	movl	(%ebp,%ebx,4),%edx	movl	%edx,DEST_2(%edi)7:	movb	2(%esi),%al	movb	6(%esi),%bl	testb	%al,%al	jz	7f	movl	(%ebp,%eax,4),%ecx	movl	%ecx,DEST_5(%edi)7:	testb	%bl,%bl	jz	7f	movl	(%ebp,%ebx,4),%edx	movl	%edx,DEST_1(%edi)7:	movb	3(%esi),%al	movb	7(%esi),%bl	testb	%al,%al	jz	7f	movl	(%ebp,%eax,4),%ecx	movl	%ecx,DEST_4(%edi)7:	testb	%bl,%bl	jz	7f	movl	(%ebp,%ebx,4),%edx	movl	%edx,DEST_0(%edi)7:	addl	$8,%esi			// Next Tile Line	addl	$0xDEADBEEF,%edi	// Next Screen Linebitw_05:	cmp	$0xDEADBEEF,%esiendc_05:	jne	9b		popl	%ebx	popl	%esi	popl	%edi	popl	%ebp	retFUNC(Draw8x8_Trans_Mapped_32_FlipX)	pushl	%ebp	pushl	%edi	pushl	%esi	pushl	%ebx	movl	20(%esp),%esi			// source	movl	28(%esp),%eax			// y	movl	%esi,%edx	sall	$2,%eax	addl	$8*8,%edx			// tile end	movl	0xDEADBEEF(%eax),%ediblin_06:	movl	%edx,endc_06-4	movl	32(%esp),%ebp			// cmap	addl	24(%esp),%edi			// x	addl	24(%esp),%edi			// x	addl	24(%esp),%edi			// x	addl	24(%esp),%edi			// x	xorl	%edx,%edx	xorl	%ecx,%ecx	xorl	%ebx,%ebx	xorl	%eax,%eax9:	movw	(%edi),%dx	movb	(%esi),%al	movw	14(%edi),%cx	movb	4(%esi),%bl	testb	%al,%al	jz	7f	movl	(%ebp,%eax,4),%ecx	movl	%ecx,DEST_0(%edi)7:	testb	%bl,%bl	jz	7f	movl	(%ebp,%ebx,4),%edx	movl	%edx,DEST_4(%edi)7:	movb	1(%esi),%al	movb	5(%esi),%bl	testb	%al,%al	jz	7f	movl	(%ebp,%eax,4),%ecx	movl	%ecx,DEST_1(%edi)7:	testb	%bl,%bl	jz	7f	movl	(%ebp,%ebx,4),%edx	movl	%edx,DEST_5(%edi)7:	movb	2(%esi),%al	movb	6(%esi),%bl	testb	%al,%al	jz	7f	movl	(%ebp,%eax,4),%ecx	movl	%ecx,DEST_2(%edi)7:	testb	%bl,%bl	jz	7f	movl	(%ebp,%ebx,4),%edx	movl	%edx,DEST_6(%edi)7:	movb	3(%esi),%al	movb	7(%esi),%bl	testb	%al,%al	jz	7f	movl	(%ebp,%eax,4),%ecx	movl	%ecx,DEST_3(%edi)7:	testb	%bl,%bl	jz	7f	movl	(%ebp,%ebx,4),%edx	movl	%edx,DEST_7(%edi)7:	addl	$8,%esi			// Next Tile Line	subl	$0xDEADBEEF,%edi	// Next Screen Linebitw_06:	cmp	$0xDEADBEEF,%esiendc_06:	jne	9b		popl	%ebx	popl	%esi	popl	%edi	popl	%ebp	retFUNC(Draw8x8_Trans_Mapped_32_FlipXY)	pushl	%ebp	pushl	%edi	pushl	%esi	pushl	%ebx	movl	20(%esp),%esi			// source	movl	28(%esp),%eax			// y	movl	%esi,%edx	sall	$2,%eax	addl	$8*8,%edx			// tile end	movl	0xDEADBEEF(%eax),%ediblin_07:	movl	%edx,endc_07-4	movl	32(%esp),%ebp			// cmap	addl	24(%esp),%edi			// x	addl	24(%esp),%edi			// x	addl	24(%esp),%edi			// x	addl	24(%esp),%edi			// x	xorl	%edx,%edx	xorl	%ecx,%ecx	xorl	%ebx,%ebx	xorl	%eax,%eax9:	movw	(%edi),%dx	movb	(%esi),%al	movw	14(%edi),%cx	movb	4(%esi),%bl	testb	%al,%al	jz	7f	movl	(%ebp,%eax,4),%ecx	movl	%ecx,DEST_7(%edi)7:	testb	%bl,%bl	jz	7f	movl	(%ebp,%ebx,4),%edx	movl	%edx,DEST_3(%edi)7:	movb	1(%esi),%al	movb	5(%esi),%bl	testb	%al,%al	jz	7f	movl	(%ebp,%eax,4),%ecx	movl	%ecx,DEST_6(%edi)7:	testb	%bl,%bl	jz	7f	movl	(%ebp,%ebx,4),%edx	movl	%edx,DEST_2(%edi)7:	movb	2(%esi),%al	movb	6(%esi),%bl	testb	%al,%al	jz	7f	movl	(%ebp,%eax,4),%ecx	movl	%ecx,DEST_5(%edi)7:	testb	%bl,%bl	jz	7f	movl	(%ebp,%ebx,4),%edx	movl	%edx,DEST_1(%edi)7:	movb	3(%esi),%al	movb	7(%esi),%bl	testb	%al,%al	jz	7f	movl	(%ebp,%eax,4),%ecx	movl	%ecx,DEST_4(%edi)7:	testb	%bl,%bl	jz	7f	movl	(%ebp,%ebx,4),%edx	movl	%edx,DEST_0(%edi)7:	addl	$8,%esi			// Next Tile Line	subl	$0xDEADBEEF,%edi	// Next Screen Linebitw_07:	cmp	$0xDEADBEEF,%esiendc_07:	jne	9b		popl	%ebx	popl	%esi	popl	%edi	popl	%ebp	retFUNC(Draw8x8_32)	pushl	%edi	pushl	%esi	pushl	%ebx	movl	16(%esp),%esi			// source	movl	24(%esp),%ebx			// y	movl	28(%esp),%eax			// cmap	sall	$2,%ebx	movb	%al,%ah				// cmap	movl	0xDEADBEEF(%ebx),%ediblin_08:	mov	%ax,%cx				// cmap	addl	20(%esp),%edi			// x	shll	$16,%ecx			// cmap	movl	$0xDEADBEEF,%edx		// screen widthbitw_08:	mov	%ax,%cx				// cmap/*	// This is an mmx version... It is faster? Not really :(	movl	%ecx,DEST_0(%edi)	movl	%ecx,DEST_2(%edi)	movq	(%edi),%mm4	movq	(%esi),%mm0	movq	8(%esi),%mm1	por	%mm4,%mm0

⌨️ 快捷键说明

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