Re-wrote scanlines in 320x480x16B in the DOS port.
This commit is contained in:
@@ -3176,43 +3176,41 @@ NEWSYM copyvesa2320x480x16b
|
|||||||
.quartscanlines
|
.quartscanlines
|
||||||
;cmp byte[MMXSupport],1
|
;cmp byte[MMXSupport],1
|
||||||
;je .qsloopb
|
;je .qsloopb
|
||||||
|
|
||||||
push edx
|
|
||||||
mov dh,0
|
|
||||||
push ebp
|
|
||||||
|
|
||||||
.qsloopa
|
.qsloopa
|
||||||
mov ecx,256/4*2
|
mov ecx,256/4*2
|
||||||
rep movsd
|
rep movsd
|
||||||
sub esi,256*2
|
sub esi,256*2
|
||||||
add edi,32*2+32*2
|
add edi,32*2+32*2
|
||||||
|
mov ecx,256/2
|
||||||
.qsloopa3
|
jmp .qsloopa3
|
||||||
mov eax,[esi]
|
|
||||||
mov ebx,[esi+4]
|
|
||||||
mov ecx,eax
|
|
||||||
mov ebp,ebx
|
|
||||||
shr ecx,byte 2
|
|
||||||
and ebp,39e739e7h * 4
|
|
||||||
shr ebp,byte 2
|
|
||||||
and ecx,39e739e7h * 4
|
|
||||||
sub eax,ecx
|
|
||||||
sub ebx,ebp
|
|
||||||
mov [es:edi],eax
|
|
||||||
mov [es:edi+4],ebx
|
|
||||||
add esi,byte 8
|
|
||||||
add edi,byte 8
|
|
||||||
sub dh,4
|
|
||||||
jnz .qsloopa3
|
|
||||||
.qsloopa2
|
.qsloopa2
|
||||||
add esi,16*2+16*2
|
add esi,16*2+16*2
|
||||||
add edi,32*2+32*2
|
add edi,32*2+32*2
|
||||||
dec dl
|
dec dl
|
||||||
jnz .qsloopa
|
jnz .qsloopa
|
||||||
pop ebp
|
|
||||||
pop edx
|
|
||||||
mov dl,0
|
|
||||||
jmp .done
|
jmp .done
|
||||||
|
.qsloopa3
|
||||||
|
push ecx
|
||||||
|
push edx
|
||||||
|
mov ax,[esi]
|
||||||
|
mov bx,[esi+2]
|
||||||
|
mov cx,ax
|
||||||
|
mov dx,bx
|
||||||
|
shr cx,byte 2
|
||||||
|
shr dx,byte 2
|
||||||
|
and cx,39e7h
|
||||||
|
and dx,39e7h
|
||||||
|
sub ax,cx
|
||||||
|
sub bx,dx
|
||||||
|
mov [es:edi],ax
|
||||||
|
mov [es:edi+2],bx
|
||||||
|
pop edx
|
||||||
|
pop ecx
|
||||||
|
add esi,byte 4
|
||||||
|
add edi,byte 4
|
||||||
|
dec ecx
|
||||||
|
jnz .qsloopa3
|
||||||
|
jmp .qsloopa2
|
||||||
|
|
||||||
.fullscreen
|
.fullscreen
|
||||||
sub edi,32*2
|
sub edi,32*2
|
||||||
@@ -3220,6 +3218,8 @@ NEWSYM copyvesa2320x480x16b
|
|||||||
je .fsloopa2
|
je .fsloopa2
|
||||||
cmp byte[scanlines],3
|
cmp byte[scanlines],3
|
||||||
je .fsloopa3
|
je .fsloopa3
|
||||||
|
cmp byte[scanlines],2
|
||||||
|
je .fsloopa4
|
||||||
.fsloopa
|
.fsloopa
|
||||||
mov ecx,256/4
|
mov ecx,256/4
|
||||||
call .fsloopb
|
call .fsloopb
|
||||||
@@ -3248,6 +3248,16 @@ NEWSYM copyvesa2320x480x16b
|
|||||||
dec dl
|
dec dl
|
||||||
jnz .fsloopa3
|
jnz .fsloopa3
|
||||||
jmp .done
|
jmp .done
|
||||||
|
.fsloopa4
|
||||||
|
mov ecx,256/4
|
||||||
|
call .fsloopb
|
||||||
|
sub esi,256*2
|
||||||
|
mov ecx,256/4
|
||||||
|
call .fsloopb3
|
||||||
|
add esi,16*2+16*2
|
||||||
|
dec dl
|
||||||
|
jnz .fsloopa4
|
||||||
|
jmp .done
|
||||||
.fsloopb
|
.fsloopb
|
||||||
mov eax,[esi]
|
mov eax,[esi]
|
||||||
mov [es:edi],ax
|
mov [es:edi],ax
|
||||||
@@ -3259,30 +3269,67 @@ NEWSYM copyvesa2320x480x16b
|
|||||||
jnz .fsloopb
|
jnz .fsloopb
|
||||||
ret
|
ret
|
||||||
.fsloopb2
|
.fsloopb2
|
||||||
|
push ecx
|
||||||
|
push edx
|
||||||
mov ax,[esi]
|
mov ax,[esi]
|
||||||
mov bx,[esi+2]
|
mov bx,[esi+2]
|
||||||
|
mov cx,[esi+4]
|
||||||
|
mov dx,[esi+6]
|
||||||
shr ax,byte 1
|
shr ax,byte 1
|
||||||
shr bx,byte 1
|
shr bx,byte 1
|
||||||
|
shr cx,byte 1
|
||||||
|
shr dx,byte 1
|
||||||
and ax,7befh
|
and ax,7befh
|
||||||
and bx,7befh
|
and bx,7befh
|
||||||
|
and cx,7befh
|
||||||
|
and dx,7befh
|
||||||
mov [es:edi],ax
|
mov [es:edi],ax
|
||||||
mov [es:edi+2],ax
|
mov [es:edi+2],ax
|
||||||
mov [es:edi+4],bx
|
mov [es:edi+4],bx
|
||||||
add esi,byte 4
|
mov [es:edi+6],cx
|
||||||
add edi,byte 6
|
mov [es:edi+8],dx
|
||||||
mov ax,[esi]
|
pop edx
|
||||||
mov bx,[esi+2]
|
pop ecx
|
||||||
shr ax,byte 1
|
add esi,byte 8
|
||||||
shr bx,byte 1
|
add edi,byte 8+2
|
||||||
and ax,7befh
|
|
||||||
and bx,7befh
|
|
||||||
mov [es:edi],ax
|
|
||||||
mov [es:edi+2],bx
|
|
||||||
add esi,byte 4
|
|
||||||
add edi,byte 4
|
|
||||||
dec ecx
|
dec ecx
|
||||||
jnz .fsloopb2
|
jnz .fsloopb2
|
||||||
ret
|
ret
|
||||||
|
.fsloopb3
|
||||||
|
push ecx
|
||||||
|
push edx
|
||||||
|
mov ax,[esi]
|
||||||
|
mov bx,[esi+2]
|
||||||
|
mov cx,ax
|
||||||
|
mov dx,bx
|
||||||
|
shr cx,byte 2
|
||||||
|
shr dx,byte 2
|
||||||
|
and cx,39e7h
|
||||||
|
and dx,39e7h
|
||||||
|
sub ax,cx
|
||||||
|
sub bx,dx
|
||||||
|
mov [es:edi],ax
|
||||||
|
mov [es:edi+2],ax
|
||||||
|
mov [es:edi+4],bx
|
||||||
|
mov ax,[esi+4]
|
||||||
|
mov bx,[esi+6]
|
||||||
|
mov cx,ax
|
||||||
|
mov dx,bx
|
||||||
|
shr cx,byte 2
|
||||||
|
shr dx,byte 2
|
||||||
|
and cx,39e7h
|
||||||
|
and dx,39e7h
|
||||||
|
sub ax,cx
|
||||||
|
sub bx,dx
|
||||||
|
mov [es:edi+6],ax
|
||||||
|
mov [es:edi+8],bx
|
||||||
|
pop edx
|
||||||
|
pop ecx
|
||||||
|
add esi,byte 8
|
||||||
|
add edi,byte 8+2
|
||||||
|
dec ecx
|
||||||
|
jnz .fsloopb3
|
||||||
|
ret
|
||||||
|
|
||||||
.interpolate
|
.interpolate
|
||||||
cmp byte[scanlines],1
|
cmp byte[scanlines],1
|
||||||
|
|||||||
Reference in New Issue
Block a user