Should fix problems with register saving/restoring
This commit is contained in:
@@ -15,6 +15,8 @@
|
|||||||
;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.
|
||||||
|
|
||||||
|
ALIGN 32
|
||||||
|
|
||||||
%include "macros.mac"
|
%include "macros.mac"
|
||||||
|
|
||||||
EXTSYM vesa2selec,vidbuffer,GUIOn,MMXSupport,resolutn,En2xSaI,antienab,scanlines
|
EXTSYM vesa2selec,vidbuffer,GUIOn,MMXSupport,resolutn,En2xSaI,antienab,scanlines
|
||||||
@@ -28,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)
|
||||||
@@ -35,13 +38,12 @@ NEWSYM WinVidMemStart, resd 1
|
|||||||
SECTION .text
|
SECTION .text
|
||||||
|
|
||||||
NEWSYM copy640x480x16bwin
|
NEWSYM copy640x480x16bwin
|
||||||
|
pushad
|
||||||
cmp byte[curblank],40h
|
cmp byte[curblank],40h
|
||||||
jne .startcopy
|
jne .startcopy
|
||||||
|
popad
|
||||||
ret
|
ret
|
||||||
.startcopy
|
.startcopy
|
||||||
push es
|
|
||||||
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
|
||||||
@@ -118,13 +120,14 @@ NEWSYM copy640x480x16bwin
|
|||||||
inc ebx
|
inc ebx
|
||||||
dec dl
|
dec dl
|
||||||
jnz near .loopa
|
jnz near .loopa
|
||||||
pop es
|
|
||||||
xor byte[res512switch],1
|
xor byte[res512switch],1
|
||||||
cmp byte[MMXSupport],1
|
cmp byte[MMXSupport],1
|
||||||
je .mmx2
|
je .mmx2
|
||||||
|
popad
|
||||||
ret
|
ret
|
||||||
.mmx2
|
.mmx2
|
||||||
emms
|
emms
|
||||||
|
popad
|
||||||
ret
|
ret
|
||||||
.yeshires
|
.yeshires
|
||||||
mov byte[ebx],0
|
mov byte[ebx],0
|
||||||
@@ -258,10 +261,10 @@ NEWSYM copy640x480x16bwin
|
|||||||
inc ebx
|
inc ebx
|
||||||
dec dl
|
dec dl
|
||||||
jnz .loopab
|
jnz .loopab
|
||||||
pop es
|
|
||||||
xor byte[res512switch],1
|
xor byte[res512switch],1
|
||||||
cmp byte[MMXSupport],1
|
cmp byte[MMXSupport],1
|
||||||
je near .mmx2
|
je near .mmx2
|
||||||
|
popad
|
||||||
ret
|
ret
|
||||||
.yeshiresb
|
.yeshiresb
|
||||||
mov byte[ebx],0
|
mov byte[ebx],0
|
||||||
@@ -345,9 +348,9 @@ NEWSYM copy640x480x16bwin
|
|||||||
inc ebx
|
inc ebx
|
||||||
dec dl
|
dec dl
|
||||||
jnz near .loopabh
|
jnz near .loopabh
|
||||||
pop es
|
|
||||||
cmp byte[MMXSupport],1
|
cmp byte[MMXSupport],1
|
||||||
je near .mmx2
|
je near .mmx2
|
||||||
|
popad
|
||||||
ret
|
ret
|
||||||
.mmxslh
|
.mmxslh
|
||||||
mov eax,[spritetablea]
|
mov eax,[spritetablea]
|
||||||
@@ -445,9 +448,9 @@ NEWSYM copy640x480x16bwin
|
|||||||
inc ebx
|
inc ebx
|
||||||
dec byte[lineleft]
|
dec byte[lineleft]
|
||||||
jnz near .loopabh2
|
jnz near .loopabh2
|
||||||
pop es
|
|
||||||
cmp byte[MMXSupport],1
|
cmp byte[MMXSupport],1
|
||||||
je near .mmx2
|
je near .mmx2
|
||||||
|
popad
|
||||||
ret
|
ret
|
||||||
.mmxslh2
|
.mmxslh2
|
||||||
mov eax,[spritetablea]
|
mov eax,[spritetablea]
|
||||||
@@ -526,6 +529,7 @@ HighResProc:
|
|||||||
jnz .nofielde
|
jnz .nofielde
|
||||||
add edi,[NumBytesPerLine]
|
add edi,[NumBytesPerLine]
|
||||||
.nofielde
|
.nofielde
|
||||||
|
popad
|
||||||
ret
|
ret
|
||||||
.hiresmode7
|
.hiresmode7
|
||||||
cmp byte[MMXSupport],1
|
cmp byte[MMXSupport],1
|
||||||
@@ -553,6 +557,7 @@ HighResProc:
|
|||||||
dec ecx
|
dec ecx
|
||||||
jnz .a2b
|
jnz .a2b
|
||||||
sub esi,75036*4
|
sub esi,75036*4
|
||||||
|
popad
|
||||||
ret
|
ret
|
||||||
.yeshiresngmmxmode7
|
.yeshiresngmmxmode7
|
||||||
mov ecx,64
|
mov ecx,64
|
||||||
@@ -585,6 +590,7 @@ HighResProc:
|
|||||||
dec ecx
|
dec ecx
|
||||||
jnz .mmxrb
|
jnz .mmxrb
|
||||||
sub esi,75036*4
|
sub esi,75036*4
|
||||||
|
popad
|
||||||
ret
|
ret
|
||||||
.hires
|
.hires
|
||||||
cmp byte[MMXSupport],1
|
cmp byte[MMXSupport],1
|
||||||
@@ -605,6 +611,7 @@ HighResProc:
|
|||||||
jnz .lowerfield
|
jnz .lowerfield
|
||||||
add edi,[NumBytesPerLine]
|
add edi,[NumBytesPerLine]
|
||||||
.lowerfield
|
.lowerfield
|
||||||
|
popad
|
||||||
ret
|
ret
|
||||||
.nofieldb
|
.nofieldb
|
||||||
cmp byte[scanlines],1
|
cmp byte[scanlines],1
|
||||||
@@ -624,8 +631,10 @@ HighResProc:
|
|||||||
add edi,4
|
add edi,4
|
||||||
dec ecx
|
dec ecx
|
||||||
jnz .bngb
|
jnz .bngb
|
||||||
|
popad
|
||||||
ret
|
ret
|
||||||
.scanlines
|
.scanlines
|
||||||
|
popad
|
||||||
ret
|
ret
|
||||||
.yeshiresngmmx
|
.yeshiresngmmx
|
||||||
mov eax,[spritetablea]
|
mov eax,[spritetablea]
|
||||||
@@ -654,6 +663,7 @@ HighResProc:
|
|||||||
jnz .lowerfieldb
|
jnz .lowerfieldb
|
||||||
add edi,[NumBytesPerLine]
|
add edi,[NumBytesPerLine]
|
||||||
.lowerfieldb
|
.lowerfieldb
|
||||||
|
popad
|
||||||
ret
|
ret
|
||||||
.nofieldc
|
.nofieldc
|
||||||
cmp byte[scanlines],1
|
cmp byte[scanlines],1
|
||||||
@@ -686,6 +696,7 @@ HighResProc:
|
|||||||
add edi,32
|
add edi,32
|
||||||
dec ecx
|
dec ecx
|
||||||
jnz .mmxr2
|
jnz .mmxr2
|
||||||
|
popad
|
||||||
ret
|
ret
|
||||||
.antialias
|
.antialias
|
||||||
add edi,[AddEndBytes]
|
add edi,[AddEndBytes]
|
||||||
@@ -719,6 +730,7 @@ HighResProc:
|
|||||||
add esi,8
|
add esi,8
|
||||||
dec ecx
|
dec ecx
|
||||||
jnz .mmxr2aa
|
jnz .mmxr2aa
|
||||||
|
popad
|
||||||
ret
|
ret
|
||||||
.halfscanlines
|
.halfscanlines
|
||||||
add edi,[AddEndBytes]
|
add edi,[AddEndBytes]
|
||||||
@@ -735,6 +747,7 @@ HighResProc:
|
|||||||
add edi,4
|
add edi,4
|
||||||
dec ecx
|
dec ecx
|
||||||
jnz .abhs
|
jnz .abhs
|
||||||
|
popad
|
||||||
ret
|
ret
|
||||||
.quartscanlines
|
.quartscanlines
|
||||||
add edi,[AddEndBytes]
|
add edi,[AddEndBytes]
|
||||||
@@ -754,6 +767,7 @@ HighResProc:
|
|||||||
add edi,4
|
add edi,4
|
||||||
dec ecx
|
dec ecx
|
||||||
jnz .abhs2
|
jnz .abhs2
|
||||||
|
popad
|
||||||
ret
|
ret
|
||||||
.halfscanlinesmmx
|
.halfscanlinesmmx
|
||||||
mov eax,[spritetablea]
|
mov eax,[spritetablea]
|
||||||
@@ -782,6 +796,7 @@ HighResProc:
|
|||||||
add edi,32
|
add edi,32
|
||||||
dec ecx
|
dec ecx
|
||||||
jnz .mmxr2h
|
jnz .mmxr2h
|
||||||
|
popad
|
||||||
ret
|
ret
|
||||||
.quartscanlinesmmx
|
.quartscanlinesmmx
|
||||||
mov eax,[spritetablea]
|
mov eax,[spritetablea]
|
||||||
@@ -810,6 +825,7 @@ HighResProc:
|
|||||||
add edi,16
|
add edi,16
|
||||||
dec ecx
|
dec ecx
|
||||||
jnz .mmxr2h2
|
jnz .mmxr2h2
|
||||||
|
popad
|
||||||
ret
|
ret
|
||||||
|
|
||||||
Process2xSaIwin:
|
Process2xSaIwin:
|
||||||
@@ -901,8 +917,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
|
||||||
@@ -912,7 +928,7 @@ Process2xSaIwin:
|
|||||||
dec byte[lineleft]
|
dec byte[lineleft]
|
||||||
jnz near .next
|
jnz near .next
|
||||||
emms
|
emms
|
||||||
pop es
|
popad
|
||||||
ret
|
ret
|
||||||
|
|
||||||
MMXInterpolwin:
|
MMXInterpolwin:
|
||||||
@@ -1050,7 +1066,7 @@ MMXInterpolwin:
|
|||||||
dec byte[lineleft]
|
dec byte[lineleft]
|
||||||
jnz near .a5
|
jnz near .a5
|
||||||
emms
|
emms
|
||||||
pop es
|
popad
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.scanlines
|
.scanlines
|
||||||
@@ -1103,7 +1119,7 @@ MMXInterpolwin:
|
|||||||
dec byte[lineleft]
|
dec byte[lineleft]
|
||||||
jnz near .asl
|
jnz near .asl
|
||||||
emms
|
emms
|
||||||
pop es
|
popad
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.scanlineshalf
|
.scanlineshalf
|
||||||
@@ -1167,7 +1183,7 @@ MMXInterpolwin:
|
|||||||
dec byte[lineleft]
|
dec byte[lineleft]
|
||||||
jnz near .ahb
|
jnz near .ahb
|
||||||
emms
|
emms
|
||||||
pop es
|
popad
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.scanlinesquart
|
.scanlinesquart
|
||||||
@@ -1243,7 +1259,7 @@ MMXInterpolwin:
|
|||||||
dec byte[lineleft]
|
dec byte[lineleft]
|
||||||
jnz near .ahb2
|
jnz near .ahb2
|
||||||
emms
|
emms
|
||||||
pop es
|
popad
|
||||||
ret
|
ret
|
||||||
|
|
||||||
NEWSYM interpolate640x480x16bwin
|
NEWSYM interpolate640x480x16bwin
|
||||||
@@ -1339,7 +1355,7 @@ NEWSYM interpolate640x480x16bwin
|
|||||||
add edi,4
|
add edi,4
|
||||||
dec byte[lineleft]
|
dec byte[lineleft]
|
||||||
jnz near .loopb
|
jnz near .loopb
|
||||||
pop es
|
popad
|
||||||
ret
|
ret
|
||||||
.returninterp
|
.returninterp
|
||||||
add esi,64
|
add esi,64
|
||||||
@@ -1347,7 +1363,7 @@ NEWSYM interpolate640x480x16bwin
|
|||||||
add edi,[AddEndBytes]
|
add edi,[AddEndBytes]
|
||||||
dec byte[lineleft]
|
dec byte[lineleft]
|
||||||
jnz near .loopb
|
jnz near .loopb
|
||||||
pop es
|
popad
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.scanlines
|
.scanlines
|
||||||
@@ -1398,8 +1414,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
|
||||||
@@ -1435,7 +1451,7 @@ NEWSYM interpolate640x480x16bwin
|
|||||||
add edi,[AddEndBytes]
|
add edi,[AddEndBytes]
|
||||||
dec byte[lineleft]
|
dec byte[lineleft]
|
||||||
jnz near .loopab
|
jnz near .loopab
|
||||||
pop es
|
popad
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.scanlineshalf
|
.scanlineshalf
|
||||||
@@ -1486,7 +1502,7 @@ NEWSYM interpolate640x480x16bwin
|
|||||||
add edi,[AddEndBytes]
|
add edi,[AddEndBytes]
|
||||||
dec byte[lineleft]
|
dec byte[lineleft]
|
||||||
jnz near .loopab2
|
jnz near .loopab2
|
||||||
pop es
|
popad
|
||||||
ret
|
ret
|
||||||
.returninterphs
|
.returninterphs
|
||||||
add esi,64
|
add esi,64
|
||||||
@@ -1494,7 +1510,7 @@ NEWSYM interpolate640x480x16bwin
|
|||||||
add edi,[AddEndBytes]
|
add edi,[AddEndBytes]
|
||||||
dec byte[lineleft]
|
dec byte[lineleft]
|
||||||
jnz near .loopab2
|
jnz near .loopab2
|
||||||
pop es
|
popad
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.scanlinesquart
|
.scanlinesquart
|
||||||
@@ -1549,7 +1565,7 @@ NEWSYM interpolate640x480x16bwin
|
|||||||
add edi,[AddEndBytes]
|
add edi,[AddEndBytes]
|
||||||
dec byte[lineleft]
|
dec byte[lineleft]
|
||||||
jnz near .loopab3
|
jnz near .loopab3
|
||||||
pop es
|
popad
|
||||||
ret
|
ret
|
||||||
.returninterpqs
|
.returninterpqs
|
||||||
add esi,64
|
add esi,64
|
||||||
@@ -1557,7 +1573,7 @@ NEWSYM interpolate640x480x16bwin
|
|||||||
add edi,[AddEndBytes]
|
add edi,[AddEndBytes]
|
||||||
dec byte[lineleft]
|
dec byte[lineleft]
|
||||||
jnz near .loopab3
|
jnz near .loopab3
|
||||||
pop es
|
popad
|
||||||
ret
|
ret
|
||||||
|
|
||||||
SECTION .bss
|
SECTION .bss
|
||||||
|
|||||||
Reference in New Issue
Block a user