Optimized 320x240x16B VESA2 interpolation in the DOS port.
This commit is contained in:
@@ -1162,12 +1162,11 @@ NEWSYM copyvesa2320x480x8b
|
|||||||
jnz .fsloopa2
|
jnz .fsloopa2
|
||||||
jmp .done
|
jmp .done
|
||||||
.fsloopb
|
.fsloopb
|
||||||
movsd
|
mov eax,[esi]
|
||||||
dec esi
|
|
||||||
mov al,[esi]
|
|
||||||
mov [es:edi],al
|
mov [es:edi],al
|
||||||
inc esi
|
mov [es:edi+1],eax
|
||||||
inc edi
|
add esi,byte 4
|
||||||
|
add edi,byte 5
|
||||||
dec ecx
|
dec ecx
|
||||||
jnz .fsloopb
|
jnz .fsloopb
|
||||||
ret
|
ret
|
||||||
@@ -2631,51 +2630,51 @@ NEWSYM copyvesa2320x240x16b
|
|||||||
jnz .fsloopa
|
jnz .fsloopa
|
||||||
jmp .done
|
jmp .done
|
||||||
.fsloopb
|
.fsloopb
|
||||||
movsd
|
mov eax,[esi]
|
||||||
movsd
|
|
||||||
sub esi,2
|
|
||||||
mov ax,[esi]
|
|
||||||
mov [es:edi],ax
|
mov [es:edi],ax
|
||||||
add esi,2
|
mov [es:edi+2],eax
|
||||||
add edi,2
|
add esi,byte 4
|
||||||
|
add edi,byte 6
|
||||||
|
movsd
|
||||||
dec ecx
|
dec ecx
|
||||||
jnz .fsloopb
|
jnz .fsloopb
|
||||||
jmp .fsloopa2
|
jmp .fsloopa2
|
||||||
|
|
||||||
; by stainless & TRAC
|
|
||||||
.interpolate
|
.interpolate
|
||||||
;cmp byte[ScreenScale],1
|
;cmp byte[ScreenScale],1
|
||||||
;je .infsloopa
|
;je .infsloopa
|
||||||
.inloopa
|
.inloopa
|
||||||
add edi,byte 2
|
mov bx,[esi]
|
||||||
|
mov ecx,254
|
||||||
|
mov ax,[esi+2]
|
||||||
add esi,byte 2
|
add esi,byte 2
|
||||||
mov ecx,255
|
mov [es:edi],bx
|
||||||
|
add edi,byte 2
|
||||||
.inloopb
|
.inloopb
|
||||||
mov ax,[esi]
|
push eax
|
||||||
mov bx,[esi-2]
|
mov ebp,[esi+2]
|
||||||
cmp ax,bx
|
|
||||||
jne .inloopb2
|
|
||||||
mov [es:edi],ax
|
|
||||||
mov [es:edi-2],bx
|
|
||||||
add esi,byte 2
|
|
||||||
add edi,byte 2
|
|
||||||
dec ecx
|
|
||||||
jnz .inloopb
|
|
||||||
jmp .inloopa2
|
|
||||||
.inloopb2
|
|
||||||
shr eax,byte 1
|
shr eax,byte 1
|
||||||
shr ebx,byte 1
|
push ebp
|
||||||
|
shr ebx,byte 2
|
||||||
and eax,7befh
|
and eax,7befh
|
||||||
and ebx,7befh
|
shr ebp,byte 2
|
||||||
|
and ebx,39e7h
|
||||||
add eax,ebx
|
add eax,ebx
|
||||||
|
and ebp,39e7h
|
||||||
|
add eax,ebp
|
||||||
mov [es:edi],ax
|
mov [es:edi],ax
|
||||||
mov [es:edi-2],ax
|
pop eax
|
||||||
|
pop ebx
|
||||||
.inloopb3
|
.inloopb3
|
||||||
add esi,byte 2
|
add esi,byte 2
|
||||||
add edi,byte 2
|
add edi,byte 2
|
||||||
dec ecx
|
dec ecx
|
||||||
jnz .inloopb
|
jnz .inloopb
|
||||||
.inloopa2
|
.inloopa2
|
||||||
|
mov ax,[esi]
|
||||||
|
add esi,byte 2
|
||||||
|
mov [es:edi],ax
|
||||||
|
add edi,byte 2
|
||||||
add esi,byte 32*2
|
add esi,byte 32*2
|
||||||
sub edi,byte -64*2
|
sub edi,byte -64*2
|
||||||
dec dl
|
dec dl
|
||||||
@@ -3244,13 +3243,12 @@ NEWSYM copyvesa2320x480x16b
|
|||||||
jnz .fsloopa2
|
jnz .fsloopa2
|
||||||
jmp .done
|
jmp .done
|
||||||
.fsloopb
|
.fsloopb
|
||||||
movsd
|
mov eax,[esi]
|
||||||
movsd
|
|
||||||
sub esi,2
|
|
||||||
mov ax,[esi]
|
|
||||||
mov [es:edi],ax
|
mov [es:edi],ax
|
||||||
add esi,2
|
mov [es:edi+2],eax
|
||||||
add edi,2
|
add esi,byte 4
|
||||||
|
add edi,byte 6
|
||||||
|
movsd
|
||||||
dec ecx
|
dec ecx
|
||||||
jnz .fsloopb
|
jnz .fsloopb
|
||||||
ret
|
ret
|
||||||
|
|||||||
Reference in New Issue
Block a user