📄 blit_x2_8.s
字号:
/******************************************************************************//* *//* RAINE DOUBLE SIZE BLITTING *//* *//******************************************************************************/#include "asmdefs.inc"CODE_SEG.lcomm GLOBL(src_add),4.lcomm GLOBL(dest_add),4/*double width and height*/FUNC(raine_blit_x2_y2) pushl %ebp pushl %edi pushl %esi pushl %ebx movl 20(%esp),%ebx movl 24(%esp),%edi movl 44(%esp),%ecx movl 48(%esp),%ebp addl %ebp,%ebp movl (%ebx),%eax movl %eax,GLOBL(src_add) movl 64(%edi),%eax movl 68(%edi),%edx subl %eax,%edx leal (%ecx,%ecx),%eax subl %eax,%edx movl %edx,GLOBL(dest_add) movl 60(%edi),%edx movl 32(%esp),%eax sall $2,%eax sarl $2,%ecx movl 64(%eax,%ebx),%esi movl 40(%esp),%eax sall $2,%eax addl 28(%esp),%esi movl 64(%eax,%edi),%edi addl 36(%esp),%edi movl %ebp,%eax/APP pushal pushw %es movw %dx,%es movl %eax,%ebp movl %ecx,shit_03 - 4 movl GLOBL(src_add),%eax movl GLOBL(dest_add),%ebx movl %eax,shit_00 - 4 movl %ebx,shit_01 - 4 jmp 1f .align 41: movl $0xDEADBEEF,%ecxshit_03: pushl %esi0: movl (%esi),%eax movl %eax,%ebx bswap %eax xchgw %ax,%bx roll $8,%eax rorl $8,%ebx movl %eax,%es:(%edi) addl $4,%esi movl %ebx,%es:4(%edi) addl $8,%edi decl %ecx jnz 0b popl %esi testl $0x01,%ebp jz 3f addl $0xDEADBEEF,%esi3:shit_00: addl $0xDEADBEEF,%edishit_01: decl %ebp jne 1b popw %es popal /NO_APP popl %ebx popl %esi popl %edi popl %ebp ret/*double width only*/FUNC(raine_blit_x2_y1) pushl %edi pushl %esi pushl %ebx movl 16(%esp),%ebx movl 20(%esp),%edi movl 40(%esp),%ecx movl (%ebx),%eax movl %eax,GLOBL(src_add) movl 64(%edi),%eax movl 68(%edi),%edx subl %eax,%edx leal (%ecx,%ecx),%eax subl %eax,%edx movl %edx,GLOBL(dest_add) movl 60(%edi),%edx movl 28(%esp),%eax sall $2,%eax sarl $2,%ecx movl 64(%eax,%ebx),%esi movl 36(%esp),%eax sall $2,%eax addl 24(%esp),%esi movl 64(%eax,%edi),%edi movl 44(%esp),%eax addl 32(%esp),%edi/APP pushal pushw %es movw %dx,%es movl %eax,%ebp movl %ecx,poop_03 - 4 movl GLOBL(src_add),%eax movl GLOBL(dest_add),%ebx movl %eax,poop_00 - 4 movl %ebx,poop_01 - 4 jmp 1f .align 41: movl $0xDEADBEEF,%ecxpoop_03: pushl %esi0: movl (%esi),%eax movl %eax,%ebx bswap %eax xchgw %ax,%bx roll $8,%eax rorl $8,%ebx movl %eax,%es:(%edi) addl $4,%esi movl %ebx,%es:4(%edi) addl $8,%edi decl %ecx jnz 0b popl %esi addl $0xDEADBEEF,%esipoop_00: addl $0xDEADBEEF,%edipoop_01: decl %ebp jne 1b popw %es popal /NO_APP popl %ebx popl %esi popl %edi ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -