📄 spr32x32_32.s
字号:
#include "asmdefs.inc"CODE_SEG/******************************************************************************//* *//* RAINE 32x32 TILE DRAWING *//* *//******************************************************************************//*MappedTransparent MappedDirect-MappedTransparent Direct-MappedThis one is directly built from the 16bit version, with some strategicsearch/replace :)Hummm... Finally there were 128*4 of them... Maybe it would have been fasterby hand... */FUNC(Draw32x32_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 $32*32,%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: // I suppose the reads from di are some weird cache initialisation... // Message for the guy who wrote that : do u know about comments ??? movb (%edi),%dl movb (%esi),%al movb 63(%edi),%cl movb 4(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,(%edi) movl %edx,16(%edi) movb 1(%esi),%al movb 5(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,4(%edi) movl %edx,20(%edi) movb 2(%esi),%al movb 6(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,8(%edi) movl %edx,24(%edi) movb 3(%esi),%al movb 7(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,12(%edi) movl %edx,28(%edi) movb 8(%esi),%al movb 8+4(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,32(%edi) movl %edx,48(%edi) movb 8+1(%esi),%al movb 8+5(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,36(%edi) movl %edx,52(%edi) movb 8+2(%esi),%al movb 8+6(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,40(%edi) movl %edx,56(%edi) movb 8+3(%esi),%al movb 8+7(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,44(%edi) movl %edx,60(%edi)// Let's play to copy & paste movb 16(%esi),%al movb 16+4(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,64(%edi) movl %edx,64+16(%edi) movb 16+1(%esi),%al movb 16+5(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,64+4(%edi) movl %edx,64+20(%edi) movb 16+2(%esi),%al movb 16+6(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,64+8(%edi) movl %edx,64+24(%edi) movb 16+3(%esi),%al movb 16+7(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,64+12(%edi) movl %edx,64+28(%edi) movb 16+8(%esi),%al movb 16+8+4(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,64+32(%edi) movl %edx,64+48(%edi) movb 16+8+1(%esi),%al movb 16+8+5(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,64+36(%edi) movl %edx,64+52(%edi) movb 16+8+2(%esi),%al movb 16+8+6(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,64+40(%edi) movl %edx,64+56(%edi) movb 16+8+3(%esi),%al movb 16+8+7(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,64+44(%edi) movl %edx,64+60(%edi) addl $32,%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(Draw32x32_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 $32*32,%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 (%esi),%al movb 4(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,124(%edi) movl %edx,124-16(%edi) movb 1(%esi),%al movb 5(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,124-4(%edi) movl %edx,124-20(%edi) movb 2(%esi),%al movb 6(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,124-8(%edi) movl %edx,124-24(%edi) movb 3(%esi),%al movb 7(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,124-12(%edi) movl %edx,124-28(%edi) movb 8(%esi),%al movb 8+4(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,124-32(%edi) movl %edx,124-48(%edi) movb 8+1(%esi),%al movb 8+5(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,124-36(%edi) movl %edx,124-52(%edi) movb 8+2(%esi),%al movb 8+6(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,124-40(%edi) movl %edx,124-56(%edi) movb 8+3(%esi),%al movb 8+7(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,124-44(%edi) movl %edx,124-60(%edi) // The copy /paste thing... movb 16(%esi),%al movb 16+4(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,60(%edi) movl %edx,60-16(%edi) movb 16+1(%esi),%al movb 16+5(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,60-4(%edi) movl %edx,60-20(%edi) movb 16+2(%esi),%al movb 16+6(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,60-8(%edi) movl %edx,60-24(%edi) movb 16+3(%esi),%al movb 16+7(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,60-12(%edi) movl %edx,60-28(%edi) movb 16+8(%esi),%al movb 16+8+4(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,60-32(%edi) movl %edx,60-48(%edi) movb 16+8+1(%esi),%al movb 16+8+5(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,60-36(%edi) movl %edx,60-52(%edi) movb 16+8+2(%esi),%al movb 16+8+6(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,60-40(%edi) movl %edx,60-56(%edi) movb 16+8+3(%esi),%al movb 16+8+7(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,60-44(%edi) movl %edx,60-60(%edi) addl $32,%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(Draw32x32_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 $32*32,%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 (%esi),%al movb 4(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,(%edi) movl %edx,16(%edi) movb 1(%esi),%al movb 5(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,4(%edi) movl %edx,20(%edi) movb 2(%esi),%al movb 6(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,8(%edi) movl %edx,24(%edi) movb 3(%esi),%al movb 7(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,12(%edi) movl %edx,28(%edi) movb 8(%esi),%al movb 8+4(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,32(%edi) movl %edx,48(%edi) movb 8+1(%esi),%al movb 8+5(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,36(%edi) movl %edx,52(%edi) movb 8+2(%esi),%al movb 8+6(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,40(%edi) movl %edx,56(%edi) movb 8+3(%esi),%al movb 8+7(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,44(%edi) movl %edx,60(%edi)// Let's play to copy & paste (from the non flipping version) movb 16(%esi),%al movb 16+4(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,64(%edi) movl %edx,64+16(%edi) movb 16+1(%esi),%al movb 16+5(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,64+4(%edi) movl %edx,64+20(%edi) movb 16+2(%esi),%al movb 16+6(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,64+8(%edi) movl %edx,64+24(%edi) movb 16+3(%esi),%al movb 16+7(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,64+12(%edi) movl %edx,64+28(%edi) movb 16+8(%esi),%al movb 16+8+4(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,64+32(%edi) movl %edx,64+48(%edi) movb 16+8+1(%esi),%al movb 16+8+5(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,64+36(%edi) movl %edx,64+52(%edi) movb 16+8+2(%esi),%al movb 16+8+6(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,64+40(%edi) movl %edx,64+56(%edi) movb 16+8+3(%esi),%al movb 16+8+7(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,64+44(%edi) movl %edx,64+60(%edi) addl $32,%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(Draw32x32_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 $32*32,%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:// Copy this whole thing from the FlipX function... Cool... movb (%esi),%al movb 4(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,124(%edi) movl %edx,124-16(%edi) movb 1(%esi),%al movb 5(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,124-4(%edi) movl %edx,124-20(%edi) movb 2(%esi),%al movb 6(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,124-8(%edi) movl %edx,124-24(%edi) movb 3(%esi),%al movb 7(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,124-12(%edi) movl %edx,124-28(%edi) movb 8(%esi),%al movb 8+4(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,124-32(%edi) movl %edx,124-48(%edi) movb 8+1(%esi),%al movb 8+5(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,124-36(%edi) movl %edx,124-52(%edi) movb 8+2(%esi),%al movb 8+6(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,124-40(%edi) movl %edx,124-56(%edi) movb 8+3(%esi),%al movb 8+7(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,124-44(%edi) movl %edx,124-60(%edi) // The copy /paste thing... movb 16(%esi),%al movb 16+4(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,60(%edi) movl %edx,60-16(%edi) movb 16+1(%esi),%al movb 16+5(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,60-4(%edi) movl %edx,60-20(%edi) movb 16+2(%esi),%al movb 16+6(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,60-8(%edi) movl %edx,60-24(%edi) movb 16+3(%esi),%al movb 16+7(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,60-12(%edi) movl %edx,60-28(%edi) movb 16+8(%esi),%al movb 16+8+4(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,60-32(%edi) movl %edx,60-48(%edi) movb 16+8+1(%esi),%al movb 16+8+5(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,60-36(%edi) movl %edx,60-52(%edi) movb 16+8+2(%esi),%al movb 16+8+6(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,60-40(%edi) movl %edx,60-56(%edi) movb 16+8+3(%esi),%al movb 16+8+7(%esi),%bl movl (%ebp,%eax,4),%ecx movl (%ebp,%ebx,4),%edx movl %ecx,60-44(%edi) movl %edx,60-60(%edi) addl $32,%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(Draw32x32_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 $32*32,%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: movb (%esi),%al movb 4(%esi),%bl testb %al,%al jz 7f movl (%ebp,%eax,4),%ecx movl %ecx,(%edi)7: testb %bl,%bl jz 7f movl (%ebp,%ebx,4),%edx movl %edx,16(%edi)7: movb 1(%esi),%al movb 5(%esi),%bl testb %al,%al jz 7f movl (%ebp,%eax,4),%ecx movl %ecx,4(%edi)7: testb %bl,%bl jz 7f movl (%ebp,%ebx,4),%edx movl %edx,20(%edi)7: movb 2(%esi),%al movb 6(%esi),%bl testb %al,%al jz 7f movl (%ebp,%eax,4),%ecx movl %ecx,8(%edi)7: testb %bl,%bl jz 7f movl (%ebp,%ebx,4),%edx movl %edx,24(%edi)7: movb 3(%esi),%al movb 7(%esi),%bl testb %al,%al jz 7f movl (%ebp,%eax,4),%ecx movl %ecx,12(%edi)7: testb %bl,%bl jz 7f movl (%ebp,%ebx,4),%edx movl %edx,28(%edi)7: movb 8(%esi),%al movb 8+4(%esi),%bl testb %al,%al jz 7f movl (%ebp,%eax,4),%ecx movl %ecx,32(%edi)7: testb %bl,%bl jz 7f movl (%ebp,%ebx,4),%edx movl %edx,48(%edi)7: movb 8+1(%esi),%al movb 8+5(%esi),%bl testb %al,%al jz 7f movl (%ebp,%eax,4),%ecx movl %ecx,36(%edi)7: testb %bl,%bl jz 7f movl (%ebp,%ebx,4),%edx movl %edx,52(%edi)7: movb 8+2(%esi),%al movb 8+6(%esi),%bl testb %al,%al jz 7f movl (%ebp,%eax,4),%ecx movl %ecx,40(%edi)7: testb %bl,%bl jz 7f movl (%ebp,%ebx,4),%edx movl %edx,56(%edi)7: movb 8+3(%esi),%al movb 8+7(%esi),%bl testb %al,%al jz 7f movl (%ebp,%eax,4),%ecx movl %ecx,44(%edi)7: testb %bl,%bl jz 7f movl (%ebp,%ebx,4),%edx movl %edx,60(%edi)7:// Copy... paste... movb 16(%esi),%al movb 16+4(%esi),%bl testb %al,%al jz 7f movl (%ebp,%eax,4),%ecx movl %ecx,64(%edi)7: testb %bl,%bl jz 7f movl (%ebp,%ebx,4),%edx movl %edx,64+16(%edi)7: movb 16+1(%esi),%al movb 16+5(%esi),%bl testb %al,%al jz 7f movl (%ebp,%eax,4),%ecx movl %ecx,64+4(%edi)7: testb %bl,%bl jz 7f movl (%ebp,%ebx,4),%edx movl %edx,64+20(%edi)7:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -