📄 spr32x32_8.s
字号:
shr $16,%eax shr $16,%ebx testb %al,%al jz 7f movb %al,%dl movb (%ecx,%edx),%al movb %al,31-2(%edi)7: testb %bl,%bl jz 7f movb %bl,%dl movb (%ecx,%edx),%al movb %al,31-6(%edi)7: testb %ah,%ah jz 7f movb %ah,%dl movb (%ecx,%edx),%al movb %al,31-3(%edi)7: testb %bh,%bh jz 7f movb %bh,%dl movb (%ecx,%edx),%al movb %al,31-7(%edi)7: movl 8(%esi),%eax movl 12(%esi),%ebx testb %al,%al jz 7f movb %al,%dl movb (%ecx,%edx),%al movb %al,31-8(%edi)7: testb %bl,%bl jz 7f movb %bl,%dl movb (%ecx,%edx),%al movb %al,31-12(%edi)7: testb %ah,%ah jz 7f movb %ah,%dl movb (%ecx,%edx),%al movb %al,31-9(%edi)7: testb %bh,%bh jz 7f movb %bh,%dl movb (%ecx,%edx),%al movb %al,31-13(%edi)7: shr $16,%eax shr $16,%ebx testb %al,%al jz 7f movb %al,%dl movb (%ecx,%edx),%al movb %al,31-10(%edi)7: testb %bl,%bl jz 7f movb %bl,%dl movb (%ecx,%edx),%al movb %al,31-14(%edi)7: testb %ah,%ah jz 7f movb %ah,%dl movb (%ecx,%edx),%al movb %al,31-11(%edi)7: testb %bh,%bh jz 7f movb %bh,%dl movb (%ecx,%edx),%al movb %al,31-15(%edi)7:// Pfff ! movl 16(%esi),%eax movl 16+4(%esi),%ebx testb %al,%al jz 7f movb %al,%dl movb (%ecx,%edx),%al movb %al,15(%edi)7: testb %bl,%bl jz 7f movb %bl,%dl movb (%ecx,%edx),%al movb %al,15-4(%edi)7: testb %ah,%ah jz 7f movb %ah,%dl movb (%ecx,%edx),%al movb %al,15-1(%edi)7: testb %bh,%bh jz 7f movb %bh,%dl movb (%ecx,%edx),%al movb %al,15-5(%edi)7: shr $16,%eax shr $16,%ebx testb %al,%al jz 7f movb %al,%dl movb (%ecx,%edx),%al movb %al,15-2(%edi)7: testb %bl,%bl jz 7f movb %bl,%dl movb (%ecx,%edx),%al movb %al,15-6(%edi)7: testb %ah,%ah jz 7f movb %ah,%dl movb (%ecx,%edx),%al movb %al,15-3(%edi)7: testb %bh,%bh jz 7f movb %bh,%dl movb (%ecx,%edx),%al movb %al,15-7(%edi)7: movl 16+8(%esi),%eax movl 16+12(%esi),%ebx testb %al,%al jz 7f movb %al,%dl movb (%ecx,%edx),%al movb %al,15-8(%edi)7: testb %bl,%bl jz 7f movb %bl,%dl movb (%ecx,%edx),%al movb %al,15-12(%edi)7: testb %ah,%ah jz 7f movb %ah,%dl movb (%ecx,%edx),%al movb %al,15-9(%edi)7: testb %bh,%bh jz 7f movb %bh,%dl movb (%ecx,%edx),%al movb %al,15-13(%edi)7: shr $16,%eax shr $16,%ebx testb %al,%al jz 7f movb %al,%dl movb (%ecx,%edx),%al movb %al,15-10(%edi)7: testb %bl,%bl jz 7f movb %bl,%dl movb (%ecx,%edx),%al movb %al,15-14(%edi)7: testb %ah,%ah jz 7f movb %ah,%dl movb (%ecx,%edx),%al movb %al,15-11(%edi)7: testb %bh,%bh jz 7f movb %bh,%dl movb (%ecx,%edx),%al movb %al,(%edi)7: addl $32,%esi // Next Tile Line subl $0xDEADBEEF,%edi // Next Screen Linebitw_07: decl %ebp jne 9b popl %ebx popl %esi popl %edi popl %ebp ret#define HANDLE_32 \ movl (%esi),%eax ;\ movl 4(%esi),%ebx ;\ orl %ecx,%eax ;\ orl %ecx,%ebx ;\ movl %eax,(%edi) ;\ movl %ebx,4(%edi) ;\ movl 8(%esi),%eax ;\ movl 12(%esi),%ebx ;\ orl %ecx,%eax ;\ orl %ecx,%ebx ;\ movl %eax,8(%edi) ;\ movl %ebx,12(%edi) ;\ ;\ movl 16(%esi),%eax ;\ movl 20(%esi),%ebx ;\ orl %ecx,%eax ;\ orl %ecx,%ebx ;\ movl %eax,16(%edi) ;\ movl %ebx,20(%edi) ;\ movl 16+8(%esi),%eax ;\ movl 16+12(%esi),%ebx ;\ orl %ecx,%eax ;\ orl %ecx,%ebx ;\ movl %eax,16+8(%edi) ;\ movl %ebx,16+12(%edi) FUNC(Draw32x32) 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 HANDLE_32 addl $32,%esi addl %edx,%edi HANDLE_32 addl $32,%esi addl %edx,%edi HANDLE_32 addl $32,%esi addl %edx,%edi HANDLE_32 addl $32,%esi addl %edx,%edi HANDLE_32 addl $32,%esi addl %edx,%edi HANDLE_32 addl $32,%esi addl %edx,%edi HANDLE_32 addl $32,%esi addl %edx,%edi HANDLE_32 addl $32,%esi addl %edx,%edi HANDLE_32 addl $32,%esi addl %edx,%edi HANDLE_32 addl $32,%esi addl %edx,%edi HANDLE_32 addl $32,%esi addl %edx,%edi HANDLE_32 addl $32,%esi addl %edx,%edi HANDLE_32 addl $32,%esi addl %edx,%edi HANDLE_32 addl $32,%esi addl %edx,%edi HANDLE_32 addl $32,%esi addl %edx,%edi HANDLE_32 popl %ebx popl %esi popl %edi ret#define HANDLE_32_FlipY ;\ movl 12(%esi),%eax ;\ movl 8(%esi),%ebx ;\ orl %ecx,%eax ;\ orl %ecx,%ebx ;\ bswap %eax ;\ bswap %ebx ;\ movl %eax,16(%edi) ;\ movl %ebx,16+4(%edi) ;\ movl 4(%esi),%eax ;\ movl (%esi),%ebx ;\ orl %ecx,%eax ;\ orl %ecx,%ebx ;\ bswap %eax ;\ bswap %ebx ;\ movl %eax,16+8(%edi) ;\ movl %ebx,16+12(%edi) ;\ ;\ movl 16+12(%esi),%eax ;\ movl 16+8(%esi),%ebx ;\ orl %ecx,%eax ;\ orl %ecx,%ebx ;\ bswap %eax ;\ bswap %ebx ;\ movl %eax,(%edi) ;\ movl %ebx,4(%edi) ;\ movl 16+4(%esi),%eax ;\ movl 16(%esi),%ebx ;\ orl %ecx,%eax ;\ orl %ecx,%ebx ;\ bswap %eax ;\ bswap %ebx ;\ movl %eax,8(%edi) ;\ movl %ebx,12(%edi) FUNC(Draw32x32_FlipY) 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_09: mov %ax,%cx // cmap addl 20(%esp),%edi // x shll $16,%ecx // cmap movl $0xDEADBEEF,%edx // screen widthbitw_09: mov %ax,%cx // cmap HANDLE_32_FlipY addl $32,%esi addl %edx,%edi HANDLE_32_FlipY addl $32,%esi addl %edx,%edi HANDLE_32_FlipY addl $32,%esi addl %edx,%edi HANDLE_32_FlipY addl $32,%esi addl %edx,%edi HANDLE_32_FlipY addl $32,%esi addl %edx,%edi HANDLE_32_FlipY addl $32,%esi addl %edx,%edi HANDLE_32_FlipY addl $32,%esi addl %edx,%edi HANDLE_32_FlipY addl $32,%esi addl %edx,%edi HANDLE_32_FlipY addl $32,%esi addl %edx,%edi HANDLE_32_FlipY addl $32,%esi addl %edx,%edi HANDLE_32_FlipY addl $32,%esi addl %edx,%edi HANDLE_32_FlipY addl $32,%esi addl %edx,%edi HANDLE_32_FlipY addl $32,%esi addl %edx,%edi HANDLE_32_FlipY addl $32,%esi addl %edx,%edi HANDLE_32_FlipY addl $32,%esi addl %edx,%edi HANDLE_32_FlipY popl %ebx popl %esi popl %edi ret#define HANDLE_32_FlipX ;\ movl (%esi),%eax ;\ movl 4(%esi),%ebx ;\ orl %ecx,%eax ;\ orl %ecx,%ebx ;\ movl %eax,(%edi) ;\ movl %ebx,4(%edi) ;\ movl 8(%esi),%eax ;\ movl 12(%esi),%ebx ;\ orl %ecx,%eax ;\ orl %ecx,%ebx ;\ movl %eax,8(%edi) ;\ movl %ebx,12(%edi) ;\ ;\ movl 16(%esi),%eax ;\ movl 16+4(%esi),%ebx ;\ orl %ecx,%eax ;\ orl %ecx,%ebx ;\ movl %eax,16(%edi) ;\ movl %ebx,16+4(%edi) ;\ movl 16+8(%esi),%eax ;\ movl 16+12(%esi),%ebx ;\ orl %ecx,%eax ;\ orl %ecx,%ebx ;\ movl %eax,16+8(%edi) ;\ movl %ebx,16+12(%edi) FUNC(Draw32x32_FlipX) 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_10: mov %ax,%cx // cmap addl 20(%esp),%edi // x shll $16,%ecx // cmap movl $0xDEADBEEF,%edx // screen widthbitw_10: mov %ax,%cx // cmap HANDLE_32_FlipX addl $32,%esi subl %edx,%edi HANDLE_32_FlipX addl $32,%esi subl %edx,%edi HANDLE_32_FlipX addl $32,%esi subl %edx,%edi HANDLE_32_FlipX addl $32,%esi subl %edx,%edi HANDLE_32_FlipX addl $32,%esi subl %edx,%edi HANDLE_32_FlipX addl $32,%esi subl %edx,%edi HANDLE_32_FlipX addl $32,%esi subl %edx,%edi HANDLE_32_FlipX addl $32,%esi subl %edx,%edi HANDLE_32_FlipX addl $32,%esi subl %edx,%edi HANDLE_32_FlipX addl $32,%esi subl %edx,%edi HANDLE_32_FlipX addl $32,%esi subl %edx,%edi HANDLE_32_FlipX addl $32,%esi subl %edx,%edi HANDLE_32_FlipX addl $32,%esi subl %edx,%edi HANDLE_32_FlipX addl $32,%esi subl %edx,%edi HANDLE_32_FlipX addl $32,%esi subl %edx,%edi HANDLE_32_FlipX popl %ebx popl %esi popl %edi ret#define HANDLE_32_FlipXY ;\ movl 16+12(%esi),%eax ;\ movl 16+8(%esi),%ebx ;\ orl %ecx,%eax ;\ orl %ecx,%ebx ;\ bswap %eax ;\ bswap %ebx ;\ movl %eax,(%edi) ;\ movl %ebx,4(%edi) ;\ movl 16+4(%esi),%eax ;\ movl 16(%esi),%ebx ;\ orl %ecx,%eax ;\ orl %ecx,%ebx ;\ bswap %eax ;\ bswap %ebx ;\ movl %eax,8(%edi) ;\ movl %ebx,12(%edi) ;\ ;\ movl 12(%esi),%eax ;\ movl 8(%esi),%ebx ;\ orl %ecx,%eax ;\ orl %ecx,%ebx ;\ bswap %eax ;\ bswap %ebx ;\ movl %eax,16(%edi) ;\ movl %ebx,16+4(%edi) ;\ movl 4(%esi),%eax ;\ movl (%esi),%ebx ;\ orl %ecx,%eax ;\ orl %ecx,%ebx ;\ bswap %eax ;\ bswap %ebx ;\ movl %eax,16+8(%edi) ;\ movl %ebx,16+12(%edi) FUNC(Draw32x32_FlipXY) 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_11: mov %ax,%cx // cmap addl 20(%esp),%edi // x shll $16,%ecx // cmap movl $0xDEADBEEF,%edx // screen widthbitw_11: mov %ax,%cx // cmap HANDLE_32_FlipXY addl $32,%esi subl %edx,%edi HANDLE_32_FlipXY addl $32,%esi subl %edx,%edi HANDLE_32_FlipXY addl $32,%esi subl %edx,%edi HANDLE_32_FlipXY addl $32,%esi subl %edx,%edi HANDLE_32_FlipXY addl $32,%esi subl %edx,%edi HANDLE_32_FlipXY addl $32,%esi subl %edx,%edi HANDLE_32_FlipXY addl $32,%esi subl %edx,%edi HANDLE_32_FlipXY addl $32,%esi subl %edx,%edi HANDLE_32_FlipXY addl $32,%esi subl %edx,%edi HANDLE_32_FlipXY addl $32,%esi subl %edx,%edi HANDLE_32_FlipXY addl $32,%esi subl %edx,%edi HANDLE_32_FlipXY addl $32,%esi subl %edx,%edi HANDLE_32_FlipXY addl $32,%esi subl %edx,%edi HANDLE_32_FlipXY addl $32,%esi subl %edx,%edi HANDLE_32_FlipXY addl $32,%esi subl %edx,%edi HANDLE_32_FlipXY popl %ebx popl %esi popl %edi ret// I leave the Draw32x32_Trans functions for now... Probably useless anyway FUNC(init_spr32x32asm) movl GLOBL(GameBitmap),%eax movl (%eax),%eax // Width movl %eax,bitw_00-4 movl %eax,bitw_01-4 movl %eax,bitw_02-4 movl %eax,bitw_03-4 movl %eax,bitw_04-4 movl %eax,bitw_05-4 movl %eax,bitw_06-4 movl %eax,bitw_07-4 movl %eax,bitw_08-4 movl %eax,bitw_09-4 movl %eax,bitw_10-4 movl %eax,bitw_11-4 movl GLOBL(GameBitmap),%eax addl $64,%eax // Line 0 movl %eax,blin_00-4 movl %eax,blin_01-4 movl %eax,blin_04-4 movl %eax,blin_05-4 movl %eax,blin_08-4 movl %eax,blin_09-4 addl $31*4,%eax // Last line movl %eax,blin_02-4 movl %eax,blin_03-4 movl %eax,blin_06-4 movl %eax,blin_07-4 movl %eax,blin_10-4 movl %eax,blin_11-4 ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -