Fix for video code again

This commit is contained in:
pagefault
2003-03-16 22:26:59 +00:00
parent 34b8e2dd3a
commit 2d67154926
2 changed files with 154 additions and 152 deletions

View File

@@ -15,7 +15,7 @@
;along with this program; if not, write to the Free Software ;along with this program; if not, write to the Free Software
;Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ;Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
ALIGN32 ALIGN 32
%include "macros.mac" %include "macros.mac"
@@ -30,6 +30,7 @@ EXTSYM HalfTransB,HalfTransC
NEWSYM CopyVWinAsmStart NEWSYM CopyVWinAsmStart
SECTION .bss SECTION .bss
NEWSYM AddEndBytes, resd 1 ; Number of bytes between each line NEWSYM AddEndBytes, resd 1 ; Number of bytes between each line
NEWSYM NumBytesPerLine, resd 1 ; Total number of bytes per line (1024+AddEndBytes) NEWSYM NumBytesPerLine, resd 1 ; Total number of bytes per line (1024+AddEndBytes)
@@ -41,12 +42,16 @@ NEWSYM copy640x480x16bwin
jne .startcopy jne .startcopy
ret ret
.startcopy .startcopy
push es pushad
mov ax,ds
mov es,ax
mov esi,[vidbuffer] mov esi,[vidbuffer]
mov edi,[WinVidMemStart] mov edi,[WinVidMemStart]
add esi,16*2+256*2+32*2 add esi,16*2+256*2+32*2
cmp byte[GUIOn],1
je .not239
cmp byte[resolutn],239
jne .not239
add esi,8*288*2
.not239
xor eax,eax xor eax,eax
; Check if interpolation mode ; Check if interpolation mode
cmp byte[FilteredGUI],0 cmp byte[FilteredGUI],0
@@ -57,19 +62,20 @@ NEWSYM copy640x480x16bwin
cmp byte[MMXSupport],1 cmp byte[MMXSupport],1
jne .nommx jne .nommx
cmp byte[En2xSaI],0 cmp byte[En2xSaI],0
jne Process2xSaIwin jne near Process2xSaIwin
.nommx .nommx
cmp byte[antienab],1 cmp byte[antienab],1
je interpolate640x480x16bwin je near interpolate640x480x16bwin
.nointerp .nointerp
mov dl,[resolutn] mov dl,224
sub dl,2 dec dl
dec dl
cmp byte[scanlines],1 cmp byte[scanlines],1
je .scanlines je near .scanlines
cmp byte[scanlines],3 cmp byte[scanlines],3
je .halfscanlines je near .halfscanlines
cmp byte[scanlines],2 cmp byte[scanlines],2
je .quartscanlines je near .quartscanlines
mov ebx,hirestiledat+1 mov ebx,hirestiledat+1
cmp byte[newengen],0 cmp byte[newengen],0
@@ -78,14 +84,14 @@ NEWSYM copy640x480x16bwin
.loopa .loopa
mov ecx,256 mov ecx,256
cmp byte[ebx],1 cmp byte[ebx],1
je .yeshires je near .yeshires
cmp byte[GUIOn],1 cmp byte[GUIOn],1
je .ignorehr je .ignorehr
cmp byte[ebx],1 cmp byte[ebx],1
ja .yeshiresng ja near .yeshiresng
.ignorehr .ignorehr
cmp byte[MMXSupport],1 cmp byte[MMXSupport],1
je .mmx je near .mmx
.a .a
mov ax,[esi] mov ax,[esi]
shl eax,16 shl eax,16
@@ -112,8 +118,8 @@ NEWSYM copy640x480x16bwin
add edi,[AddEndBytes] add edi,[AddEndBytes]
inc ebx inc ebx
dec dl dec dl
jnz .loopa jnz near .loopa
pop es popad
xor byte[res512switch],1 xor byte[res512switch],1
cmp byte[MMXSupport],1 cmp byte[MMXSupport],1
je .mmx2 je .mmx2
@@ -223,14 +229,14 @@ NEWSYM copy640x480x16bwin
.loopab .loopab
mov ecx,256 mov ecx,256
cmp byte[ebx],1 cmp byte[ebx],1
je .yeshiresb je near .yeshiresb
cmp byte[ebx],1 cmp byte[ebx],1
jbe .ignorehrb jbe .ignorehrb
call HighResProc call HighResProc
jmp .returnb jmp .returnb
.ignorehrb .ignorehrb
cmp byte[MMXSupport],1 cmp byte[MMXSupport],1
je .mmxsl je near .mmxsl
.ab .ab
mov ax,[esi] mov ax,[esi]
shl eax,16 shl eax,16
@@ -253,12 +259,11 @@ NEWSYM copy640x480x16bwin
inc ebx inc ebx
dec dl dec dl
jnz .loopab jnz .loopab
pop es popad
xor byte[res512switch],1 xor byte[res512switch],1
cmp byte[MMXSupport],1 cmp byte[MMXSupport],1
je .mmx2 je near .mmx2
ret ret
.yeshiresb .yeshiresb
mov byte[ebx],0 mov byte[ebx],0
test byte[res512switch],1 test byte[res512switch],1
@@ -310,7 +315,7 @@ NEWSYM copy640x480x16bwin
jmp .returnbh jmp .returnbh
.ignorehrbh .ignorehrbh
cmp byte[MMXSupport],1 cmp byte[MMXSupport],1
je .mmxslh je near .mmxslh
mov ecx,256 mov ecx,256
.abh .abh
mov ax,[esi] mov ax,[esi]
@@ -340,10 +345,10 @@ NEWSYM copy640x480x16bwin
add edi,[AddEndBytes] add edi,[AddEndBytes]
inc ebx inc ebx
dec dl dec dl
jnz .loopabh jnz near .loopabh
pop es popad
cmp byte[MMXSupport],1 cmp byte[MMXSupport],1
je .mmx2 je near .mmx2
ret ret
.mmxslh .mmxslh
mov eax,[spritetablea] mov eax,[spritetablea]
@@ -406,7 +411,7 @@ NEWSYM copy640x480x16bwin
jmp .returnbh2 jmp .returnbh2
.ignorehrbh2 .ignorehrbh2
cmp byte[MMXSupport],1 cmp byte[MMXSupport],1
je .mmxslh2 je near .mmxslh2
mov ecx,256 mov ecx,256
.abh2 .abh2
mov ax,[esi] mov ax,[esi]
@@ -440,10 +445,10 @@ NEWSYM copy640x480x16bwin
add edi,[AddEndBytes] add edi,[AddEndBytes]
inc ebx inc ebx
dec byte[lineleft] dec byte[lineleft]
jnz .loopabh2 jnz near .loopabh2
pop es popad
cmp byte[MMXSupport],1 cmp byte[MMXSupport],1
je .mmx2 je near .mmx2
ret ret
.mmxslh2 .mmxslh2
mov eax,[spritetablea] mov eax,[spritetablea]
@@ -494,9 +499,9 @@ NEWSYM copy640x480x16bwin
HighResProc: HighResProc:
mov ecx,256 mov ecx,256
cmp byte[ebx],3 cmp byte[ebx],3
je .hiresmode7 je near .hiresmode7
cmp byte[ebx],7 cmp byte[ebx],7
je .hiresmode7 je near .hiresmode7
test byte[ebx],4 test byte[ebx],4
jz .nofield jz .nofield
cmp byte[scanlines],0 cmp byte[scanlines],0
@@ -506,7 +511,7 @@ HighResProc:
add edi,[NumBytesPerLine] add edi,[NumBytesPerLine]
.nofield .nofield
test byte[ebx],3 test byte[ebx],3
jnz .hires jnz near .hires
.a .a
mov ax,[esi] mov ax,[esi]
shl eax,16 shl eax,16
@@ -584,7 +589,7 @@ HighResProc:
ret ret
.hires .hires
cmp byte[MMXSupport],1 cmp byte[MMXSupport],1
je .yeshiresngmmx je near .yeshiresngmmx
.bng .bng
mov eax,[esi+75036*4-2] mov eax,[esi+75036*4-2]
mov ax,[esi] mov ax,[esi]
@@ -604,11 +609,11 @@ HighResProc:
ret ret
.nofieldb .nofieldb
cmp byte[scanlines],1 cmp byte[scanlines],1
je .scanlines je near .scanlines
cmp byte[scanlines],3 cmp byte[scanlines],3
je .halfscanlines je near .halfscanlines
cmp byte[scanlines],2 cmp byte[scanlines],2
je .quartscanlines je near .quartscanlines
add edi,[AddEndBytes] add edi,[AddEndBytes]
sub esi,256*2 sub esi,256*2
mov ecx,256 mov ecx,256
@@ -653,17 +658,17 @@ HighResProc:
ret ret
.nofieldc .nofieldc
cmp byte[scanlines],1 cmp byte[scanlines],1
je .scanlines je near .scanlines
cmp byte[scanlines],3 cmp byte[scanlines],3
je .halfscanlinesmmx je near .halfscanlinesmmx
cmp byte[scanlines],2 cmp byte[scanlines],2
je .quartscanlinesmmx je near .quartscanlinesmmx
test byte[ebx+1],3 test byte[ebx+1],3
jz .noaa jz .noaa
cmp byte[En2xSaI],0 cmp byte[En2xSaI],0
jne .antialias jne near .antialias
cmp byte[antienab],0 cmp byte[antienab],0
jne .antialias jne near .antialias
.noaa .noaa
add edi,[AddEndBytes] add edi,[AddEndBytes]
mov eax,[spritetablea] mov eax,[spritetablea]
@@ -806,6 +811,7 @@ HighResProc:
add edi,16 add edi,16
dec ecx dec ecx
jnz .mmxr2h2 jnz .mmxr2h2
popad
ret ret
Process2xSaIwin: Process2xSaIwin:
@@ -819,7 +825,7 @@ Process2xSaIwin:
mov [InterPtr],ebx mov [InterPtr],ebx
; add edi,[VESAAddr] ; add edi,[VESAAddr]
mov dl,[resolutn] mov dl,224
sub dl,2 ; Compensate for top/bottom line + 2 lines in 2xSaI sub dl,2 ; Compensate for top/bottom line + 2 lines in 2xSaI
mov byte[lineleft],dl mov byte[lineleft],dl
mov dword[esi+512],0 mov dword[esi+512],0
@@ -889,7 +895,7 @@ Process2xSaIwin:
add ebx,576 add ebx,576
inc dword[InterPtr] inc dword[InterPtr]
dec dword[lineleft] dec dword[lineleft]
jnz .next jnz near .next
mov ecx,256 mov ecx,256
sub edi,[NumBytesPerLine] sub edi,[NumBytesPerLine]
.loop .loop
@@ -897,8 +903,8 @@ Process2xSaIwin:
add edi,4 add edi,4
dec ecx dec ecx
jnz .loop jnz .loop
pop es
emms emms
popad
ret ret
.returninterp .returninterp
add esi,64 add esi,64
@@ -906,9 +912,9 @@ Process2xSaIwin:
add edi,[AddEndBytes] add edi,[AddEndBytes]
add ebx,576 add ebx,576
dec byte[lineleft] dec byte[lineleft]
jnz .next jnz near .next
emms emms
pop es popad
ret ret
MMXInterpolwin: MMXInterpolwin:
@@ -920,15 +926,17 @@ MMXInterpolwin:
mov ebx,SpecialLine+1 mov ebx,SpecialLine+1
.loopab .loopab
mov dl,[resolutn] mov dl,224
sub dl,3 dec dl
dec dl
dec dl
movq mm2,[HalfTransC] movq mm2,[HalfTransC]
cmp byte[scanlines],1 cmp byte[scanlines],1
je .scanlines je near .scanlines
cmp byte[scanlines],2 cmp byte[scanlines],2
je .scanlinesquart je near .scanlinesquart
cmp byte[scanlines],3 cmp byte[scanlines],3
je .scanlineshalf je near .scanlineshalf
inc ebx inc ebx
mov [lineleft],dl mov [lineleft],dl
; do scanlines ; do scanlines
@@ -942,7 +950,7 @@ MMXInterpolwin:
movq mm3,mm0 movq mm3,mm0
movq mm4,mm0 movq mm4,mm0
movq mm1,[esi+2] movq mm1,[esi+2]
por mm3,mm1 pand mm3,mm1
pand mm0,mm2 pand mm0,mm2
pand mm1,mm2 pand mm1,mm2
psrlw mm0,1 psrlw mm0,1
@@ -983,7 +991,7 @@ MMXInterpolwin:
movq mm3,mm0 movq mm3,mm0
movq mm4,mm0 movq mm4,mm0
movq mm1,[esi+2] movq mm1,[esi+2]
por mm3,mm1 pand mm3,mm1
pand mm0,mm2 pand mm0,mm2
pand mm1,mm2 pand mm1,mm2
psrlw mm0,1 psrlw mm0,1
@@ -999,8 +1007,8 @@ MMXInterpolwin:
punpckhwd mm5,mm0 punpckhwd mm5,mm0
movq [edx],mm4 movq [edx],mm4
movq [edx+8],mm5 movq [edx+8],mm5
pand mm0,mm4
movq mm0,mm6 movq mm0,mm6
por mm0,mm4
pand mm4,mm2 pand mm4,mm2
pand mm6,mm2 pand mm6,mm2
psrlw mm4,1 psrlw mm4,1
@@ -1009,7 +1017,7 @@ MMXInterpolwin:
paddd mm4,mm6 paddd mm4,mm6
paddw mm4,mm0 paddw mm4,mm0
movq mm0,mm5 movq mm0,mm5
por mm0,mm7 pand mm0,mm7
pand mm5,mm2 pand mm5,mm2
pand mm7,mm2 pand mm7,mm2
psrlw mm5,1 psrlw mm5,1
@@ -1023,7 +1031,7 @@ MMXInterpolwin:
add edi,16 add edi,16
add edx,16 add edx,16
dec ecx dec ecx
jnz .a3 jnz near .a3
add edi,[AddEndBytes] add edi,[AddEndBytes]
mov edx,[spritetablea] mov edx,[spritetablea]
add edx,512 add edx,512
@@ -1042,9 +1050,9 @@ MMXInterpolwin:
add edi,[AddEndBytes] add edi,[AddEndBytes]
inc ebx inc ebx
dec byte[lineleft] dec byte[lineleft]
jnz .a5 jnz near .a5
emms emms
pop es popad
ret ret
.scanlines .scanlines
@@ -1080,8 +1088,8 @@ MMXInterpolwin:
add edi,16 add edi,16
dec ecx dec ecx
jnz .a jnz .a
; mov eax,[esi+510] mov eax,[esi+510]
; mov [esi+512],eax mov [esi+512],eax
.returninterps .returninterps
add esi,64 add esi,64
add edi,[AddEndBytes] add edi,[AddEndBytes]
@@ -1095,9 +1103,9 @@ MMXInterpolwin:
inc ebx inc ebx
mov ecx,64 mov ecx,64
dec byte[lineleft] dec byte[lineleft]
jnz .asl jnz near .asl
emms emms
pop es popad
ret ret
.scanlineshalf .scanlineshalf
@@ -1159,9 +1167,9 @@ MMXInterpolwin:
add esi,64 add esi,64
inc ebx inc ebx
dec byte[lineleft] dec byte[lineleft]
jnz .ahb jnz near .ahb
emms emms
pop es popad
ret ret
.scanlinesquart .scanlinesquart
@@ -1185,7 +1193,7 @@ MMXInterpolwin:
movq mm3,mm0 movq mm3,mm0
movq mm4,mm0 movq mm4,mm0
movq mm1,[esi+2] movq mm1,[esi+2]
por mm3,mm1 pand mm3,mm1
pand mm0,mm2 pand mm0,mm2
pand mm1,mm2 pand mm1,mm2
psrlw mm0,1 psrlw mm0,1
@@ -1210,7 +1218,6 @@ MMXInterpolwin:
sub edx,16*64 sub edx,16*64
mov ecx,64 mov ecx,64
movq mm3,mm2 movq mm3,mm2
.ahc2 .ahc2
movq mm0,[edx] movq mm0,[edx]
movq mm1,[edx+8] movq mm1,[edx+8]
@@ -1237,14 +1244,14 @@ MMXInterpolwin:
add edi,[AddEndBytes] add edi,[AddEndBytes]
inc ebx inc ebx
dec byte[lineleft] dec byte[lineleft]
jnz .ahb2 jnz near .ahb2
emms emms
pop es popad
ret ret
NEWSYM interpolate640x480x16bwin NEWSYM interpolate640x480x16bwin
cmp byte[MMXSupport],1 cmp byte[MMXSupport],1
je MMXInterpolwin je near MMXInterpolwin
mov ebx,hirestiledat+1 mov ebx,hirestiledat+1
cmp byte[GUIOn],1 cmp byte[GUIOn],1
@@ -1255,14 +1262,16 @@ NEWSYM interpolate640x480x16bwin
.loopabi .loopabi
mov [InterPtr],ebx mov [InterPtr],ebx
mov dl,[resolutn] mov dl,224
sub dl,3 dec dl
dec dl
dec dl
cmp byte[scanlines],1 cmp byte[scanlines],1
je .scanlines je near .scanlines
cmp byte[scanlines],2 cmp byte[scanlines],2
je .scanlinesquart je near .scanlinesquart
cmp byte[scanlines],3 cmp byte[scanlines],3
je .scanlineshalf je near .scanlineshalf
inc dword[InterPtr] inc dword[InterPtr]
mov [lineleft],dl mov [lineleft],dl
; do first line ; do first line
@@ -1332,16 +1341,16 @@ NEWSYM interpolate640x480x16bwin
add edi,[AddEndBytes] add edi,[AddEndBytes]
add edi,4 add edi,4
dec byte[lineleft] dec byte[lineleft]
jnz .loopb jnz near .loopb
pop es popad
ret ret
.returninterp .returninterp
add esi,64 add esi,64
inc dword[InterPtr] inc dword[InterPtr]
add edi,[AddEndBytes] add edi,[AddEndBytes]
dec byte[lineleft] dec byte[lineleft]
jnz .loopb jnz near .loopb
pop es popad
ret ret
.scanlines .scanlines
@@ -1361,7 +1370,7 @@ NEWSYM interpolate640x480x16bwin
jmp .returninterps jmp .returninterps
.ignorehrs .ignorehrs
cmp byte[ebx],1 cmp byte[ebx],1
je .yeshiresb je near .yeshiresb
.ignorehrb .ignorehrb
push ebx push ebx
.ab .ab
@@ -1392,8 +1401,8 @@ NEWSYM interpolate640x480x16bwin
inc ebx inc ebx
dec dl dec dl
jnz .loopab jnz .loopab
pop es
xor byte[res512switch],1 xor byte[res512switch],1
popad
ret ret
.yeshiresb .yeshiresb
mov byte[ebx],0 mov byte[ebx],0
@@ -1421,7 +1430,6 @@ NEWSYM interpolate640x480x16bwin
inc dword[InterPtr] inc dword[InterPtr]
add edi,[AddEndBytes] add edi,[AddEndBytes]
mov ecx,256 mov ecx,256
.fslloop2 .fslloop2
mov dword[edi],0 mov dword[edi],0
add edi,4 add edi,4
@@ -1429,8 +1437,8 @@ NEWSYM interpolate640x480x16bwin
jnz .fslloop2 jnz .fslloop2
add edi,[AddEndBytes] add edi,[AddEndBytes]
dec byte[lineleft] dec byte[lineleft]
jnz .loopab jnz near .loopab
pop es popad
ret ret
.scanlineshalf .scanlineshalf
@@ -1480,22 +1488,21 @@ NEWSYM interpolate640x480x16bwin
add edi,4 add edi,4
add edi,[AddEndBytes] add edi,[AddEndBytes]
dec byte[lineleft] dec byte[lineleft]
jnz .loopab2 jnz near .loopab2
pop es popad
ret ret
.returninterphs .returninterphs
add esi,64 add esi,64
inc dword[InterPtr] inc dword[InterPtr]
add edi,[AddEndBytes] add edi,[AddEndBytes]
dec byte[lineleft] dec byte[lineleft]
jnz .loopab2 jnz near .loopab2
pop es popad
ret ret
.scanlinesquart .scanlinesquart
xor eax,eax xor eax,eax
mov [lineleft],dl mov [lineleft],dl
.loopab3 .loopab3
mov ebx,[InterPtr] mov ebx,[InterPtr]
cmp byte[ebx],1 cmp byte[ebx],1
@@ -1544,22 +1551,21 @@ NEWSYM interpolate640x480x16bwin
add edi,4 add edi,4
add edi,[AddEndBytes] add edi,[AddEndBytes]
dec byte[lineleft] dec byte[lineleft]
jnz .loopab3 jnz near .loopab3
pop es popad
ret ret
.returninterpqs .returninterpqs
add esi,64 add esi,64
inc dword[InterPtr] inc dword[InterPtr]
add edi,[AddEndBytes] add edi,[AddEndBytes]
dec byte[lineleft] dec byte[lineleft]
jnz .loopab3 jnz near .loopab3
pop es popad
ret ret
SECTION .bss SECTION .bss
;ALIGN32
InterPtr resd 1 InterPtr resd 1
SECTION .text SECTION .text
NEWSYM CopyVWinAsmEnd NEWSYM CopyVWinAsmEnd

View File

@@ -15,8 +15,6 @@
;along with this program; if not, write to the Free Software ;along with this program; if not, write to the Free Software
;Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ;Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
ALIGN32
%include "macros.mac" %include "macros.mac"
EXTSYM vesa2selec,vidbuffer,GUIOn,MMXSupport,resolutn,En2xSaI,antienab,scanlines EXTSYM vesa2selec,vidbuffer,GUIOn,MMXSupport,resolutn,En2xSaI,antienab,scanlines
@@ -59,19 +57,19 @@ NEWSYM copy640x480x16bwin
cmp byte[MMXSupport],1 cmp byte[MMXSupport],1
jne .nommx jne .nommx
cmp byte[En2xSaI],0 cmp byte[En2xSaI],0
jne Process2xSaIwin jne near Process2xSaIwin
.nommx .nommx
cmp byte[antienab],1 cmp byte[antienab],1
je interpolate640x480x16bwin je near interpolate640x480x16bwin
.nointerp .nointerp
mov dl,[resolutn] mov dl,[resolutn]
sub dl,2 sub dl,2
cmp byte[scanlines],1 cmp byte[scanlines],1
je .scanlines je near .scanlines
cmp byte[scanlines],3 cmp byte[scanlines],3
je .halfscanlines je near .halfscanlines
cmp byte[scanlines],2 cmp byte[scanlines],2
je .quartscanlines je near .quartscanlines
mov ebx,hirestiledat+1 mov ebx,hirestiledat+1
cmp byte[newengen],0 cmp byte[newengen],0
@@ -80,14 +78,14 @@ NEWSYM copy640x480x16bwin
.loopa .loopa
mov ecx,256 mov ecx,256
cmp byte[ebx],1 cmp byte[ebx],1
je .yeshires je near .yeshires
cmp byte[GUIOn],1 cmp byte[GUIOn],1
je .ignorehr je .ignorehr
cmp byte[ebx],1 cmp byte[ebx],1
ja .yeshiresng ja near .yeshiresng
.ignorehr .ignorehr
cmp byte[MMXSupport],1 cmp byte[MMXSupport],1
je .mmx je near .mmx
.a .a
mov ax,[esi] mov ax,[esi]
shl eax,16 shl eax,16
@@ -114,7 +112,7 @@ NEWSYM copy640x480x16bwin
add edi,[AddEndBytes] add edi,[AddEndBytes]
inc ebx inc ebx
dec dl dec dl
jnz .loopa jnz near .loopa
pop es pop es
xor byte[res512switch],1 xor byte[res512switch],1
cmp byte[MMXSupport],1 cmp byte[MMXSupport],1
@@ -232,7 +230,7 @@ NEWSYM copy640x480x16bwin
jmp .returnb jmp .returnb
.ignorehrb .ignorehrb
cmp byte[MMXSupport],1 cmp byte[MMXSupport],1
je .mmxsl je near .mmxsl
.ab .ab
mov ax,[esi] mov ax,[esi]
shl eax,16 shl eax,16
@@ -258,9 +256,8 @@ NEWSYM copy640x480x16bwin
pop es pop es
xor byte[res512switch],1 xor byte[res512switch],1
cmp byte[MMXSupport],1 cmp byte[MMXSupport],1
je .mmx2 je near .mmx2
ret ret
.yeshiresb .yeshiresb
mov byte[ebx],0 mov byte[ebx],0
test byte[res512switch],1 test byte[res512switch],1
@@ -312,7 +309,7 @@ NEWSYM copy640x480x16bwin
jmp .returnbh jmp .returnbh
.ignorehrbh .ignorehrbh
cmp byte[MMXSupport],1 cmp byte[MMXSupport],1
je .mmxslh je near .mmxslh
mov ecx,256 mov ecx,256
.abh .abh
mov ax,[esi] mov ax,[esi]
@@ -342,10 +339,10 @@ NEWSYM copy640x480x16bwin
add edi,[AddEndBytes] add edi,[AddEndBytes]
inc ebx inc ebx
dec dl dec dl
jnz .loopabh jnz near .loopabh
pop es pop es
cmp byte[MMXSupport],1 cmp byte[MMXSupport],1
je .mmx2 je near .mmx2
ret ret
.mmxslh .mmxslh
mov eax,[spritetablea] mov eax,[spritetablea]
@@ -408,7 +405,7 @@ NEWSYM copy640x480x16bwin
jmp .returnbh2 jmp .returnbh2
.ignorehrbh2 .ignorehrbh2
cmp byte[MMXSupport],1 cmp byte[MMXSupport],1
je .mmxslh2 je near .mmxslh2
mov ecx,256 mov ecx,256
.abh2 .abh2
mov ax,[esi] mov ax,[esi]
@@ -442,10 +439,10 @@ NEWSYM copy640x480x16bwin
add edi,[AddEndBytes] add edi,[AddEndBytes]
inc ebx inc ebx
dec byte[lineleft] dec byte[lineleft]
jnz .loopabh2 jnz near .loopabh2
pop es pop es
cmp byte[MMXSupport],1 cmp byte[MMXSupport],1
je .mmx2 je near .mmx2
ret ret
.mmxslh2 .mmxslh2
mov eax,[spritetablea] mov eax,[spritetablea]
@@ -496,9 +493,9 @@ NEWSYM copy640x480x16bwin
HighResProc: HighResProc:
mov ecx,256 mov ecx,256
cmp byte[ebx],3 cmp byte[ebx],3
je .hiresmode7 je near .hiresmode7
cmp byte[ebx],7 cmp byte[ebx],7
je .hiresmode7 je near .hiresmode7
test byte[ebx],4 test byte[ebx],4
jz .nofield jz .nofield
cmp byte[scanlines],0 cmp byte[scanlines],0
@@ -508,7 +505,7 @@ HighResProc:
add edi,[NumBytesPerLine] add edi,[NumBytesPerLine]
.nofield .nofield
test byte[ebx],3 test byte[ebx],3
jnz .hires jnz near .hires
.a .a
mov ax,[esi] mov ax,[esi]
shl eax,16 shl eax,16
@@ -586,7 +583,7 @@ HighResProc:
ret ret
.hires .hires
cmp byte[MMXSupport],1 cmp byte[MMXSupport],1
je .yeshiresngmmx je near .yeshiresngmmx
.bng .bng
mov eax,[esi+75036*4-2] mov eax,[esi+75036*4-2]
mov ax,[esi] mov ax,[esi]
@@ -606,11 +603,11 @@ HighResProc:
ret ret
.nofieldb .nofieldb
cmp byte[scanlines],1 cmp byte[scanlines],1
je .scanlines je near .scanlines
cmp byte[scanlines],3 cmp byte[scanlines],3
je .halfscanlines je near .halfscanlines
cmp byte[scanlines],2 cmp byte[scanlines],2
je .quartscanlines je near .quartscanlines
add edi,[AddEndBytes] add edi,[AddEndBytes]
sub esi,256*2 sub esi,256*2
mov ecx,256 mov ecx,256
@@ -655,17 +652,17 @@ HighResProc:
ret ret
.nofieldc .nofieldc
cmp byte[scanlines],1 cmp byte[scanlines],1
je .scanlines je near .scanlines
cmp byte[scanlines],3 cmp byte[scanlines],3
je .halfscanlinesmmx je near .halfscanlinesmmx
cmp byte[scanlines],2 cmp byte[scanlines],2
je .quartscanlinesmmx je near .quartscanlinesmmx
test byte[ebx+1],3 test byte[ebx+1],3
jz .noaa jz .noaa
cmp byte[En2xSaI],0 cmp byte[En2xSaI],0
jne .antialias jne near .antialias
cmp byte[antienab],0 cmp byte[antienab],0
jne .antialias jne near .antialias
.noaa .noaa
add edi,[AddEndBytes] add edi,[AddEndBytes]
mov eax,[spritetablea] mov eax,[spritetablea]
@@ -891,7 +888,7 @@ Process2xSaIwin:
add ebx,576 add ebx,576
inc dword[InterPtr] inc dword[InterPtr]
dec dword[lineleft] dec dword[lineleft]
jnz .next jnz near .next
mov ecx,256 mov ecx,256
sub edi,[NumBytesPerLine] sub edi,[NumBytesPerLine]
.loop .loop
@@ -908,7 +905,7 @@ Process2xSaIwin:
add edi,[AddEndBytes] add edi,[AddEndBytes]
add ebx,576 add ebx,576
dec byte[lineleft] dec byte[lineleft]
jnz .next jnz near .next
emms emms
pop es pop es
ret ret
@@ -926,11 +923,11 @@ MMXInterpolwin:
sub dl,3 sub dl,3
movq mm2,[HalfTransC] movq mm2,[HalfTransC]
cmp byte[scanlines],1 cmp byte[scanlines],1
je .scanlines je near .scanlines
cmp byte[scanlines],2 cmp byte[scanlines],2
je .scanlinesquart je near .scanlinesquart
cmp byte[scanlines],3 cmp byte[scanlines],3
je .scanlineshalf je near .scanlineshalf
inc ebx inc ebx
mov [lineleft],dl mov [lineleft],dl
; do scanlines ; do scanlines
@@ -1025,7 +1022,7 @@ MMXInterpolwin:
add edi,16 add edi,16
add edx,16 add edx,16
dec ecx dec ecx
jnz .a3 jnz near .a3
add edi,[AddEndBytes] add edi,[AddEndBytes]
mov edx,[spritetablea] mov edx,[spritetablea]
add edx,512 add edx,512
@@ -1044,7 +1041,7 @@ MMXInterpolwin:
add edi,[AddEndBytes] add edi,[AddEndBytes]
inc ebx inc ebx
dec byte[lineleft] dec byte[lineleft]
jnz .a5 jnz near .a5
emms emms
pop es pop es
ret ret
@@ -1082,8 +1079,8 @@ MMXInterpolwin:
add edi,16 add edi,16
dec ecx dec ecx
jnz .a jnz .a
; mov eax,[esi+510] mov eax,[esi+510]
; mov [esi+512],eax mov [esi+512],eax
.returninterps .returninterps
add esi,64 add esi,64
add edi,[AddEndBytes] add edi,[AddEndBytes]
@@ -1097,7 +1094,7 @@ MMXInterpolwin:
inc ebx inc ebx
mov ecx,64 mov ecx,64
dec byte[lineleft] dec byte[lineleft]
jnz .asl jnz near .asl
emms emms
pop es pop es
ret ret
@@ -1161,7 +1158,7 @@ MMXInterpolwin:
add esi,64 add esi,64
inc ebx inc ebx
dec byte[lineleft] dec byte[lineleft]
jnz .ahb jnz near .ahb
emms emms
pop es pop es
ret ret
@@ -1212,7 +1209,6 @@ MMXInterpolwin:
sub edx,16*64 sub edx,16*64
mov ecx,64 mov ecx,64
movq mm3,mm2 movq mm3,mm2
.ahc2 .ahc2
movq mm0,[edx] movq mm0,[edx]
movq mm1,[edx+8] movq mm1,[edx+8]
@@ -1239,14 +1235,14 @@ MMXInterpolwin:
add edi,[AddEndBytes] add edi,[AddEndBytes]
inc ebx inc ebx
dec byte[lineleft] dec byte[lineleft]
jnz .ahb2 jnz near .ahb2
emms emms
pop es pop es
ret ret
NEWSYM interpolate640x480x16bwin NEWSYM interpolate640x480x16bwin
cmp byte[MMXSupport],1 cmp byte[MMXSupport],1
je MMXInterpolwin je near MMXInterpolwin
mov ebx,hirestiledat+1 mov ebx,hirestiledat+1
cmp byte[GUIOn],1 cmp byte[GUIOn],1
@@ -1260,11 +1256,11 @@ NEWSYM interpolate640x480x16bwin
mov dl,[resolutn] mov dl,[resolutn]
sub dl,3 sub dl,3
cmp byte[scanlines],1 cmp byte[scanlines],1
je .scanlines je near .scanlines
cmp byte[scanlines],2 cmp byte[scanlines],2
je .scanlinesquart je near .scanlinesquart
cmp byte[scanlines],3 cmp byte[scanlines],3
je .scanlineshalf je near .scanlineshalf
inc dword[InterPtr] inc dword[InterPtr]
mov [lineleft],dl mov [lineleft],dl
; do first line ; do first line
@@ -1334,7 +1330,7 @@ NEWSYM interpolate640x480x16bwin
add edi,[AddEndBytes] add edi,[AddEndBytes]
add edi,4 add edi,4
dec byte[lineleft] dec byte[lineleft]
jnz .loopb jnz near .loopb
pop es pop es
ret ret
.returninterp .returninterp
@@ -1342,7 +1338,7 @@ NEWSYM interpolate640x480x16bwin
inc dword[InterPtr] inc dword[InterPtr]
add edi,[AddEndBytes] add edi,[AddEndBytes]
dec byte[lineleft] dec byte[lineleft]
jnz .loopb jnz near .loopb
pop es pop es
ret ret
@@ -1423,7 +1419,6 @@ NEWSYM interpolate640x480x16bwin
inc dword[InterPtr] inc dword[InterPtr]
add edi,[AddEndBytes] add edi,[AddEndBytes]
mov ecx,256 mov ecx,256
.fslloop2 .fslloop2
mov dword[edi],0 mov dword[edi],0
add edi,4 add edi,4
@@ -1431,7 +1426,7 @@ NEWSYM interpolate640x480x16bwin
jnz .fslloop2 jnz .fslloop2
add edi,[AddEndBytes] add edi,[AddEndBytes]
dec byte[lineleft] dec byte[lineleft]
jnz .loopab jnz near .loopab
pop es pop es
ret ret
@@ -1482,7 +1477,7 @@ NEWSYM interpolate640x480x16bwin
add edi,4 add edi,4
add edi,[AddEndBytes] add edi,[AddEndBytes]
dec byte[lineleft] dec byte[lineleft]
jnz .loopab2 jnz near .loopab2
pop es pop es
ret ret
.returninterphs .returninterphs
@@ -1490,14 +1485,13 @@ NEWSYM interpolate640x480x16bwin
inc dword[InterPtr] inc dword[InterPtr]
add edi,[AddEndBytes] add edi,[AddEndBytes]
dec byte[lineleft] dec byte[lineleft]
jnz .loopab2 jnz near .loopab2
pop es pop es
ret ret
.scanlinesquart .scanlinesquart
xor eax,eax xor eax,eax
mov [lineleft],dl mov [lineleft],dl
.loopab3 .loopab3
mov ebx,[InterPtr] mov ebx,[InterPtr]
cmp byte[ebx],1 cmp byte[ebx],1
@@ -1546,7 +1540,7 @@ NEWSYM interpolate640x480x16bwin
add edi,4 add edi,4
add edi,[AddEndBytes] add edi,[AddEndBytes]
dec byte[lineleft] dec byte[lineleft]
jnz .loopab3 jnz near .loopab3
pop es pop es
ret ret
.returninterpqs .returninterpqs
@@ -1554,7 +1548,7 @@ NEWSYM interpolate640x480x16bwin
inc dword[InterPtr] inc dword[InterPtr]
add edi,[AddEndBytes] add edi,[AddEndBytes]
dec byte[lineleft] dec byte[lineleft]
jnz .loopab3 jnz near .loopab3
pop es pop es
ret ret
@@ -1562,6 +1556,8 @@ SECTION .bss
InterPtr resd 1 InterPtr resd 1
SECTION .text SECTION .text
%ifdef __MINGW__ %ifdef __MINGW__
NEWSYM CopyVWinAsmEnd NEWSYM CopyVWinAsmEnd
%endif %endif