Fixed MMX interpolation bug with scanlines
This commit is contained in:
@@ -40,6 +40,7 @@ NEWSYM copy640x480x16bwin
|
||||
cmp byte[curblank],40h
|
||||
jne .startcopy
|
||||
ret
|
||||
ALIGN4
|
||||
.startcopy
|
||||
push es
|
||||
mov ax,ds
|
||||
@@ -57,35 +58,36 @@ NEWSYM copy640x480x16bwin
|
||||
cmp byte[MMXSupport],1
|
||||
jne .nommx
|
||||
cmp byte[En2xSaI],0
|
||||
jne near Process2xSaIwin
|
||||
jne Process2xSaIwin
|
||||
.nommx
|
||||
cmp byte[antienab],1
|
||||
je near interpolate640x480x16bwin
|
||||
je interpolate640x480x16bwin
|
||||
.nointerp
|
||||
mov dl,[resolutn]
|
||||
sub dl,2
|
||||
cmp byte[scanlines],1
|
||||
je near .scanlines
|
||||
je .scanlines
|
||||
cmp byte[scanlines],3
|
||||
je near .halfscanlines
|
||||
je .halfscanlines
|
||||
cmp byte[scanlines],2
|
||||
je near .quartscanlines
|
||||
je .quartscanlines
|
||||
|
||||
mov ebx,hirestiledat+1
|
||||
cmp byte[newengen],0
|
||||
je .loopa
|
||||
mov ebx,SpecialLine+1
|
||||
ALIGN4
|
||||
.loopa
|
||||
mov ecx,256
|
||||
cmp byte[ebx],1
|
||||
je near .yeshires
|
||||
je .yeshires
|
||||
cmp byte[GUIOn],1
|
||||
je .ignorehr
|
||||
cmp byte[ebx],1
|
||||
ja near .yeshiresng
|
||||
ja .yeshiresng
|
||||
.ignorehr
|
||||
cmp byte[MMXSupport],1
|
||||
je near .mmx
|
||||
je .mmx
|
||||
.a
|
||||
mov ax,[esi]
|
||||
shl eax,16
|
||||
@@ -112,15 +114,17 @@ NEWSYM copy640x480x16bwin
|
||||
add edi,[AddEndBytes]
|
||||
inc ebx
|
||||
dec dl
|
||||
jnz near .loopa
|
||||
jnz .loopa
|
||||
pop es
|
||||
xor byte[res512switch],1
|
||||
cmp byte[MMXSupport],1
|
||||
je .mmx2
|
||||
ret
|
||||
ALIGN4
|
||||
.mmx2
|
||||
emms
|
||||
ret
|
||||
ALIGN4
|
||||
.yeshires
|
||||
mov byte[ebx],0
|
||||
test byte[res512switch],1
|
||||
@@ -138,6 +142,7 @@ NEWSYM copy640x480x16bwin
|
||||
pop ebx
|
||||
add edi,[NumBytesPerLine]
|
||||
jmp .return
|
||||
ALIGN4
|
||||
.rightside
|
||||
push ebx
|
||||
mov ebx,[NumBytesPerLine]
|
||||
@@ -152,6 +157,7 @@ NEWSYM copy640x480x16bwin
|
||||
pop ebx
|
||||
add edi,[NumBytesPerLine]
|
||||
jmp .return
|
||||
ALIGN4
|
||||
.mmx
|
||||
mov eax,[spritetablea]
|
||||
mov ecx,64
|
||||
@@ -188,10 +194,12 @@ NEWSYM copy640x480x16bwin
|
||||
dec ecx
|
||||
jnz .mmxr2
|
||||
jmp .return
|
||||
ALIGN4
|
||||
.yeshiresng
|
||||
call HighResProc
|
||||
jmp .return
|
||||
|
||||
ALIGN4
|
||||
.bng
|
||||
mov eax,[esi+75036*4-2]
|
||||
mov ax,[esi]
|
||||
@@ -213,6 +221,7 @@ NEWSYM copy640x480x16bwin
|
||||
jnz .bngb
|
||||
jmp .return
|
||||
|
||||
ALIGN4
|
||||
.scanlines
|
||||
mov ebx,hirestiledat+1
|
||||
cmp byte[GUIOn],1
|
||||
@@ -220,6 +229,7 @@ NEWSYM copy640x480x16bwin
|
||||
cmp byte[newengen],0
|
||||
je .loopab
|
||||
mov ebx,SpecialLine+1
|
||||
ALIGN4
|
||||
.loopab
|
||||
mov ecx,256
|
||||
cmp byte[ebx],1
|
||||
@@ -228,9 +238,10 @@ NEWSYM copy640x480x16bwin
|
||||
jbe .ignorehrb
|
||||
call HighResProc
|
||||
jmp .returnb
|
||||
ALIGN4
|
||||
.ignorehrb
|
||||
cmp byte[MMXSupport],1
|
||||
je near .mmxsl
|
||||
je .mmxsl
|
||||
.ab
|
||||
mov ax,[esi]
|
||||
shl eax,16
|
||||
@@ -244,6 +255,7 @@ NEWSYM copy640x480x16bwin
|
||||
add esi,64
|
||||
add edi,[AddEndBytes]
|
||||
mov ecx,256
|
||||
ALIGN4
|
||||
.fslloop
|
||||
mov dword[edi],0
|
||||
add edi,4
|
||||
@@ -256,8 +268,9 @@ NEWSYM copy640x480x16bwin
|
||||
pop es
|
||||
xor byte[res512switch],1
|
||||
cmp byte[MMXSupport],1
|
||||
je near .mmx2
|
||||
je .mmx2
|
||||
ret
|
||||
ALIGN4
|
||||
.yeshiresb
|
||||
mov byte[ebx],0
|
||||
test byte[res512switch],1
|
||||
@@ -270,6 +283,7 @@ NEWSYM copy640x480x16bwin
|
||||
dec ecx
|
||||
jnz .bb
|
||||
jmp .returnb
|
||||
ALIGN4
|
||||
.rightsideb
|
||||
.cb
|
||||
mov ax,[esi]
|
||||
@@ -279,6 +293,7 @@ NEWSYM copy640x480x16bwin
|
||||
dec ecx
|
||||
jnz .cb
|
||||
jmp .returnb
|
||||
ALIGN4
|
||||
.mmxsl
|
||||
mov ecx,64
|
||||
.mmxrsl
|
||||
@@ -295,6 +310,7 @@ NEWSYM copy640x480x16bwin
|
||||
jnz .mmxrsl
|
||||
jmp .returnb
|
||||
|
||||
ALIGN4
|
||||
.halfscanlines
|
||||
mov ebx,hirestiledat+1
|
||||
cmp byte[GUIOn],1
|
||||
@@ -302,14 +318,16 @@ NEWSYM copy640x480x16bwin
|
||||
cmp byte[newengen],0
|
||||
je .loopabh
|
||||
mov ebx,SpecialLine+1
|
||||
ALIGN4
|
||||
.loopabh
|
||||
cmp byte[ebx],1
|
||||
jbe .ignorehrbh
|
||||
call HighResProc
|
||||
jmp .returnbh
|
||||
ALIGN4
|
||||
.ignorehrbh
|
||||
cmp byte[MMXSupport],1
|
||||
je near .mmxslh
|
||||
je .mmxslh
|
||||
mov ecx,256
|
||||
.abh
|
||||
mov ax,[esi]
|
||||
@@ -339,11 +357,12 @@ NEWSYM copy640x480x16bwin
|
||||
add edi,[AddEndBytes]
|
||||
inc ebx
|
||||
dec dl
|
||||
jnz near .loopabh
|
||||
jnz .loopabh
|
||||
pop es
|
||||
cmp byte[MMXSupport],1
|
||||
je near .mmx2
|
||||
je .mmx2
|
||||
ret
|
||||
ALIGN4
|
||||
.mmxslh
|
||||
mov eax,[spritetablea]
|
||||
mov ecx,64
|
||||
@@ -390,6 +409,7 @@ NEWSYM copy640x480x16bwin
|
||||
jnz .mmxr2h
|
||||
jmp .returnbh
|
||||
|
||||
ALIGN4
|
||||
.quartscanlines
|
||||
mov [lineleft],dl
|
||||
mov ebx,hirestiledat+1
|
||||
@@ -398,14 +418,16 @@ NEWSYM copy640x480x16bwin
|
||||
cmp byte[newengen],0
|
||||
je .loopabh2
|
||||
mov ebx,SpecialLine+1
|
||||
ALIGN4
|
||||
.loopabh2
|
||||
cmp byte[ebx],1
|
||||
jbe .ignorehrbh2
|
||||
call HighResProc
|
||||
jmp .returnbh2
|
||||
ALIGN4
|
||||
.ignorehrbh2
|
||||
cmp byte[MMXSupport],1
|
||||
je near .mmxslh2
|
||||
je .mmxslh2
|
||||
mov ecx,256
|
||||
.abh2
|
||||
mov ax,[esi]
|
||||
@@ -439,11 +461,12 @@ NEWSYM copy640x480x16bwin
|
||||
add edi,[AddEndBytes]
|
||||
inc ebx
|
||||
dec byte[lineleft]
|
||||
jnz near .loopabh2
|
||||
jnz .loopabh2
|
||||
pop es
|
||||
cmp byte[MMXSupport],1
|
||||
je near .mmx2
|
||||
je .mmx2
|
||||
ret
|
||||
ALIGN4
|
||||
.mmxslh2
|
||||
mov eax,[spritetablea]
|
||||
mov ecx,64
|
||||
@@ -490,12 +513,13 @@ NEWSYM copy640x480x16bwin
|
||||
jnz .mmxr2h2
|
||||
jmp .returnbh2
|
||||
|
||||
ALIGN4
|
||||
HighResProc:
|
||||
mov ecx,256
|
||||
cmp byte[ebx],3
|
||||
je near .hiresmode7
|
||||
je .hiresmode7
|
||||
cmp byte[ebx],7
|
||||
je near .hiresmode7
|
||||
je .hiresmode7
|
||||
test byte[ebx],4
|
||||
jz .nofield
|
||||
cmp byte[scanlines],0
|
||||
@@ -505,7 +529,7 @@ HighResProc:
|
||||
add edi,[NumBytesPerLine]
|
||||
.nofield
|
||||
test byte[ebx],3
|
||||
jnz near .hires
|
||||
jnz .hires
|
||||
.a
|
||||
mov ax,[esi]
|
||||
shl eax,16
|
||||
@@ -522,6 +546,7 @@ HighResProc:
|
||||
add edi,[NumBytesPerLine]
|
||||
.nofielde
|
||||
ret
|
||||
ALIGN4
|
||||
.hiresmode7
|
||||
cmp byte[MMXSupport],1
|
||||
je .yeshiresngmmxmode7
|
||||
@@ -549,6 +574,7 @@ HighResProc:
|
||||
jnz .a2b
|
||||
sub esi,75036*4
|
||||
ret
|
||||
ALIGN4
|
||||
.yeshiresngmmxmode7
|
||||
mov ecx,64
|
||||
.mmxr
|
||||
@@ -581,9 +607,10 @@ HighResProc:
|
||||
jnz .mmxrb
|
||||
sub esi,75036*4
|
||||
ret
|
||||
ALIGN4
|
||||
.hires
|
||||
cmp byte[MMXSupport],1
|
||||
je near .yeshiresngmmx
|
||||
je .yeshiresngmmx
|
||||
.bng
|
||||
mov eax,[esi+75036*4-2]
|
||||
mov ax,[esi]
|
||||
@@ -601,13 +628,14 @@ HighResProc:
|
||||
add edi,[NumBytesPerLine]
|
||||
.lowerfield
|
||||
ret
|
||||
ALIGN4
|
||||
.nofieldb
|
||||
cmp byte[scanlines],1
|
||||
je near .scanlines
|
||||
je .scanlines
|
||||
cmp byte[scanlines],3
|
||||
je near .halfscanlines
|
||||
je .halfscanlines
|
||||
cmp byte[scanlines],2
|
||||
je near .quartscanlines
|
||||
je .quartscanlines
|
||||
add edi,[AddEndBytes]
|
||||
sub esi,256*2
|
||||
mov ecx,256
|
||||
@@ -620,8 +648,10 @@ HighResProc:
|
||||
dec ecx
|
||||
jnz .bngb
|
||||
ret
|
||||
ALIGN4
|
||||
.scanlines
|
||||
ret
|
||||
ALIGN4
|
||||
.yeshiresngmmx
|
||||
mov eax,[spritetablea]
|
||||
mov ecx,64
|
||||
@@ -650,19 +680,20 @@ HighResProc:
|
||||
add edi,[NumBytesPerLine]
|
||||
.lowerfieldb
|
||||
ret
|
||||
ALIGN4
|
||||
.nofieldc
|
||||
cmp byte[scanlines],1
|
||||
je near .scanlines
|
||||
je .scanlines
|
||||
cmp byte[scanlines],3
|
||||
je near .halfscanlinesmmx
|
||||
je .halfscanlinesmmx
|
||||
cmp byte[scanlines],2
|
||||
je near .quartscanlinesmmx
|
||||
je .quartscanlinesmmx
|
||||
test byte[ebx+1],3
|
||||
jz .noaa
|
||||
cmp byte[En2xSaI],0
|
||||
jne near .antialias
|
||||
jne .antialias
|
||||
cmp byte[antienab],0
|
||||
jne near .antialias
|
||||
jne .antialias
|
||||
.noaa
|
||||
add edi,[AddEndBytes]
|
||||
mov eax,[spritetablea]
|
||||
@@ -682,6 +713,7 @@ HighResProc:
|
||||
dec ecx
|
||||
jnz .mmxr2
|
||||
ret
|
||||
ALIGN4
|
||||
.antialias
|
||||
add edi,[AddEndBytes]
|
||||
mov eax,[spritetablea]
|
||||
@@ -715,6 +747,7 @@ HighResProc:
|
||||
dec ecx
|
||||
jnz .mmxr2aa
|
||||
ret
|
||||
ALIGN4
|
||||
.halfscanlines
|
||||
add edi,[AddEndBytes]
|
||||
sub esi,256*2
|
||||
@@ -731,6 +764,7 @@ HighResProc:
|
||||
dec ecx
|
||||
jnz .abhs
|
||||
ret
|
||||
ALIGN4
|
||||
.quartscanlines
|
||||
add edi,[AddEndBytes]
|
||||
sub esi,256*2
|
||||
@@ -750,6 +784,7 @@ HighResProc:
|
||||
dec ecx
|
||||
jnz .abhs2
|
||||
ret
|
||||
ALIGN4
|
||||
.halfscanlinesmmx
|
||||
mov eax,[spritetablea]
|
||||
mov ecx,32
|
||||
@@ -778,6 +813,7 @@ HighResProc:
|
||||
dec ecx
|
||||
jnz .mmxr2h
|
||||
ret
|
||||
ALIGN4
|
||||
.quartscanlinesmmx
|
||||
mov eax,[spritetablea]
|
||||
mov ecx,64
|
||||
@@ -807,6 +843,7 @@ HighResProc:
|
||||
jnz .mmxr2h2
|
||||
ret
|
||||
|
||||
ALIGN4
|
||||
Process2xSaIwin:
|
||||
mov ebx,hirestiledat+1
|
||||
cmp byte[GUIOn],1
|
||||
@@ -814,6 +851,7 @@ Process2xSaIwin:
|
||||
cmp byte[newengen],0
|
||||
je .loopabi
|
||||
mov ebx,SpecialLine+1
|
||||
ALIGN4
|
||||
.loopabi
|
||||
mov [InterPtr],ebx
|
||||
|
||||
@@ -845,6 +883,7 @@ Process2xSaIwin:
|
||||
jnz .nextb
|
||||
pop ebx
|
||||
jmp .returninterp
|
||||
ALIGN4
|
||||
.ignorehr
|
||||
|
||||
;srcPtr equ 8
|
||||
@@ -874,9 +913,11 @@ Process2xSaIwin:
|
||||
je .super2xSaI
|
||||
call _2xSaILineW
|
||||
jmp .normal
|
||||
ALIGN4
|
||||
.supereagle
|
||||
call _2xSaISuperEagleLineW
|
||||
jmp .normal
|
||||
ALIGN4
|
||||
.super2xSaI
|
||||
call _2xSaISuper2xSaILineW
|
||||
.normal
|
||||
@@ -888,9 +929,10 @@ Process2xSaIwin:
|
||||
add ebx,576
|
||||
inc dword[InterPtr]
|
||||
dec dword[lineleft]
|
||||
jnz near .next
|
||||
jnz .next
|
||||
mov ecx,256
|
||||
sub edi,[NumBytesPerLine]
|
||||
ALIGN4
|
||||
.loop
|
||||
mov dword[es:edi],0
|
||||
add edi,4
|
||||
@@ -899,17 +941,19 @@ Process2xSaIwin:
|
||||
pop es
|
||||
emms
|
||||
ret
|
||||
ALIGN4
|
||||
.returninterp
|
||||
add esi,64
|
||||
inc dword[InterPtr]
|
||||
add edi,[AddEndBytes]
|
||||
add ebx,576
|
||||
dec byte[lineleft]
|
||||
jnz near .next
|
||||
jnz .next
|
||||
emms
|
||||
pop es
|
||||
ret
|
||||
|
||||
ALIGN4
|
||||
MMXInterpolwin:
|
||||
mov ebx,hirestiledat+1
|
||||
cmp byte[GUIOn],1
|
||||
@@ -917,17 +961,18 @@ MMXInterpolwin:
|
||||
cmp byte[newengen],0
|
||||
je .loopab
|
||||
mov ebx,SpecialLine+1
|
||||
ALIGN4
|
||||
.loopab
|
||||
|
||||
mov dl,[resolutn]
|
||||
sub dl,3
|
||||
movq mm2,[HalfTransC]
|
||||
cmp byte[scanlines],1
|
||||
je near .scanlines
|
||||
je .scanlines
|
||||
cmp byte[scanlines],2
|
||||
je near .scanlinesquart
|
||||
je .scanlinesquart
|
||||
cmp byte[scanlines],3
|
||||
je near .scanlineshalf
|
||||
je .scanlineshalf
|
||||
inc ebx
|
||||
mov [lineleft],dl
|
||||
; do scanlines
|
||||
@@ -970,6 +1015,7 @@ MMXInterpolwin:
|
||||
call HighResProc
|
||||
movq mm2,[HalfTransC]
|
||||
jmp .returninterp
|
||||
ALIGN4
|
||||
.ignorehr
|
||||
mov eax,[esi+510]
|
||||
mov ecx,64
|
||||
@@ -1022,7 +1068,7 @@ MMXInterpolwin:
|
||||
add edi,16
|
||||
add edx,16
|
||||
dec ecx
|
||||
jnz near .a3
|
||||
jnz .a3
|
||||
add edi,[AddEndBytes]
|
||||
mov edx,[spritetablea]
|
||||
add edx,512
|
||||
@@ -1041,11 +1087,12 @@ MMXInterpolwin:
|
||||
add edi,[AddEndBytes]
|
||||
inc ebx
|
||||
dec byte[lineleft]
|
||||
jnz near .a5
|
||||
jnz .a5
|
||||
emms
|
||||
pop es
|
||||
ret
|
||||
|
||||
ALIGN4
|
||||
.scanlines
|
||||
inc dl
|
||||
mov [lineleft],dl
|
||||
@@ -1059,6 +1106,7 @@ MMXInterpolwin:
|
||||
call HighResProc
|
||||
movq mm2,[HalfTrans]
|
||||
jmp .returninterps
|
||||
ALIGN4
|
||||
.ignorehrs
|
||||
.a
|
||||
movq mm0,[esi]
|
||||
@@ -1079,12 +1127,13 @@ MMXInterpolwin:
|
||||
add edi,16
|
||||
dec ecx
|
||||
jnz .a
|
||||
mov eax,[esi+510]
|
||||
mov [esi+512],eax
|
||||
; mov eax,[esi+510]
|
||||
; mov [esi+512],eax
|
||||
.returninterps
|
||||
add esi,64
|
||||
add edi,[AddEndBytes]
|
||||
mov ecx,256
|
||||
ALIGN4
|
||||
.fslloop
|
||||
mov dword[edi],0
|
||||
add edi,4
|
||||
@@ -1094,11 +1143,12 @@ MMXInterpolwin:
|
||||
inc ebx
|
||||
mov ecx,64
|
||||
dec byte[lineleft]
|
||||
jnz near .asl
|
||||
jnz .asl
|
||||
emms
|
||||
pop es
|
||||
ret
|
||||
|
||||
ALIGN4
|
||||
.scanlineshalf
|
||||
inc dl
|
||||
mov [lineleft],dl
|
||||
@@ -1109,6 +1159,7 @@ MMXInterpolwin:
|
||||
call HighResProc
|
||||
movq mm2,[HalfTrans]
|
||||
jmp .returninterphs
|
||||
ALIGN4
|
||||
.ignorehrhs
|
||||
mov eax,[esi+510]
|
||||
mov ecx,64
|
||||
@@ -1158,11 +1209,12 @@ MMXInterpolwin:
|
||||
add esi,64
|
||||
inc ebx
|
||||
dec byte[lineleft]
|
||||
jnz near .ahb
|
||||
jnz .ahb
|
||||
emms
|
||||
pop es
|
||||
ret
|
||||
|
||||
ALIGN4
|
||||
.scanlinesquart
|
||||
inc dl
|
||||
mov [lineleft],dl
|
||||
@@ -1173,6 +1225,7 @@ MMXInterpolwin:
|
||||
call HighResProc
|
||||
movq mm2,[HalfTransC]
|
||||
jmp .returninterpqs
|
||||
ALIGN4
|
||||
.ignorehrqs
|
||||
mov eax,[esi+510]
|
||||
mov ecx,64
|
||||
@@ -1208,6 +1261,8 @@ MMXInterpolwin:
|
||||
add edi,[AddEndBytes]
|
||||
sub edx,16*64
|
||||
mov ecx,64
|
||||
movq mm3,mm2
|
||||
|
||||
.ahc2
|
||||
movq mm0,[edx]
|
||||
movq mm1,[edx+8]
|
||||
@@ -1234,14 +1289,15 @@ MMXInterpolwin:
|
||||
add edi,[AddEndBytes]
|
||||
inc ebx
|
||||
dec byte[lineleft]
|
||||
jnz near .ahb2
|
||||
jnz .ahb2
|
||||
emms
|
||||
pop es
|
||||
ret
|
||||
|
||||
ALIGN4
|
||||
NEWSYM interpolate640x480x16bwin
|
||||
cmp byte[MMXSupport],1
|
||||
je near MMXInterpolwin
|
||||
je MMXInterpolwin
|
||||
|
||||
mov ebx,hirestiledat+1
|
||||
cmp byte[GUIOn],1
|
||||
@@ -1249,17 +1305,18 @@ NEWSYM interpolate640x480x16bwin
|
||||
cmp byte[newengen],0
|
||||
je .loopabi
|
||||
mov ebx,SpecialLine+1
|
||||
ALIGN4
|
||||
.loopabi
|
||||
mov [InterPtr],ebx
|
||||
|
||||
mov dl,[resolutn]
|
||||
sub dl,3
|
||||
cmp byte[scanlines],1
|
||||
je near .scanlines
|
||||
je .scanlines
|
||||
cmp byte[scanlines],2
|
||||
je near .scanlinesquart
|
||||
je .scanlinesquart
|
||||
cmp byte[scanlines],3
|
||||
je near .scanlineshalf
|
||||
je .scanlineshalf
|
||||
inc dword[InterPtr]
|
||||
mov [lineleft],dl
|
||||
; do first line
|
||||
@@ -1283,12 +1340,14 @@ NEWSYM interpolate640x480x16bwin
|
||||
add esi,66
|
||||
add edi,[AddEndBytes]
|
||||
add edi,4
|
||||
ALIGN4
|
||||
.loopb
|
||||
mov ebx,[InterPtr]
|
||||
cmp byte[ebx],1
|
||||
jbe .ignorehr
|
||||
call HighResProc
|
||||
jmp .returninterp
|
||||
ALIGN4
|
||||
.ignorehr
|
||||
mov ecx,255
|
||||
mov edx,[spritetablea]
|
||||
@@ -1329,18 +1388,20 @@ NEWSYM interpolate640x480x16bwin
|
||||
add edi,[AddEndBytes]
|
||||
add edi,4
|
||||
dec byte[lineleft]
|
||||
jnz near .loopb
|
||||
jnz .loopb
|
||||
pop es
|
||||
ret
|
||||
ALIGN4
|
||||
.returninterp
|
||||
add esi,64
|
||||
inc dword[InterPtr]
|
||||
add edi,[AddEndBytes]
|
||||
dec byte[lineleft]
|
||||
jnz near .loopb
|
||||
jnz .loopb
|
||||
pop es
|
||||
ret
|
||||
|
||||
ALIGN4
|
||||
.scanlines
|
||||
xor eax,eax
|
||||
mov ebx,hirestiledat+1
|
||||
@@ -1349,6 +1410,7 @@ NEWSYM interpolate640x480x16bwin
|
||||
cmp byte[newengen],0
|
||||
je .loopabis
|
||||
mov ebx,SpecialLine+1
|
||||
ALIGN4
|
||||
.loopabis
|
||||
.loopab
|
||||
mov ecx,255
|
||||
@@ -1356,6 +1418,7 @@ NEWSYM interpolate640x480x16bwin
|
||||
jbe .ignorehrs
|
||||
call HighResProc
|
||||
jmp .returninterps
|
||||
ALIGN4
|
||||
.ignorehrs
|
||||
cmp byte[ebx],1
|
||||
je .yeshiresb
|
||||
@@ -1380,6 +1443,7 @@ NEWSYM interpolate640x480x16bwin
|
||||
add edi,4
|
||||
add edi,[AddEndBytes]
|
||||
mov ecx,256
|
||||
ALIGN4
|
||||
.fslloop
|
||||
mov dword[edi],0
|
||||
add edi,4
|
||||
@@ -1392,6 +1456,7 @@ NEWSYM interpolate640x480x16bwin
|
||||
pop es
|
||||
xor byte[res512switch],1
|
||||
ret
|
||||
ALIGN4
|
||||
.yeshiresb
|
||||
mov byte[ebx],0
|
||||
test byte[res512switch],1
|
||||
@@ -1404,6 +1469,7 @@ NEWSYM interpolate640x480x16bwin
|
||||
dec ecx
|
||||
jnz .bb
|
||||
jmp .returnb
|
||||
ALIGN4
|
||||
.rightsideb
|
||||
.cb
|
||||
mov ax,[esi]
|
||||
@@ -1413,11 +1479,13 @@ NEWSYM interpolate640x480x16bwin
|
||||
dec ecx
|
||||
jnz .cb
|
||||
jmp .returnb
|
||||
ALIGN4
|
||||
.returninterps
|
||||
add esi,64
|
||||
inc dword[InterPtr]
|
||||
add edi,[AddEndBytes]
|
||||
mov ecx,256
|
||||
ALIGN4
|
||||
.fslloop2
|
||||
mov dword[edi],0
|
||||
add edi,4
|
||||
@@ -1425,19 +1493,22 @@ NEWSYM interpolate640x480x16bwin
|
||||
jnz .fslloop2
|
||||
add edi,[AddEndBytes]
|
||||
dec byte[lineleft]
|
||||
jnz near .loopab
|
||||
jnz .loopab
|
||||
pop es
|
||||
ret
|
||||
|
||||
ALIGN4
|
||||
.scanlineshalf
|
||||
xor eax,eax
|
||||
mov [lineleft],dl
|
||||
ALIGN4
|
||||
.loopab2
|
||||
mov ebx,[InterPtr]
|
||||
cmp byte[ebx],1
|
||||
jbe .ignorehrhs
|
||||
call HighResProc
|
||||
jmp .returninterphs
|
||||
ALIGN4
|
||||
.ignorehrhs
|
||||
mov ecx,255
|
||||
mov edx,[spritetablea]
|
||||
@@ -1476,27 +1547,31 @@ NEWSYM interpolate640x480x16bwin
|
||||
add edi,4
|
||||
add edi,[AddEndBytes]
|
||||
dec byte[lineleft]
|
||||
jnz near .loopab2
|
||||
jnz .loopab2
|
||||
pop es
|
||||
ret
|
||||
ALIGN4
|
||||
.returninterphs
|
||||
add esi,64
|
||||
inc dword[InterPtr]
|
||||
add edi,[AddEndBytes]
|
||||
dec byte[lineleft]
|
||||
jnz near .loopab2
|
||||
jnz .loopab2
|
||||
pop es
|
||||
ret
|
||||
|
||||
ALIGN4
|
||||
.scanlinesquart
|
||||
xor eax,eax
|
||||
mov [lineleft],dl
|
||||
ALIGN4
|
||||
.loopab3
|
||||
mov ebx,[InterPtr]
|
||||
cmp byte[ebx],1
|
||||
jbe .ignorehrqs
|
||||
call HighResProc
|
||||
jmp .returninterpqs
|
||||
ALIGN4
|
||||
.ignorehrqs
|
||||
mov ecx,255
|
||||
mov edx,[spritetablea]
|
||||
@@ -1539,15 +1614,16 @@ NEWSYM interpolate640x480x16bwin
|
||||
add edi,4
|
||||
add edi,[AddEndBytes]
|
||||
dec byte[lineleft]
|
||||
jnz near .loopab3
|
||||
jnz .loopab3
|
||||
pop es
|
||||
ret
|
||||
ALIGN4
|
||||
.returninterpqs
|
||||
add esi,64
|
||||
inc dword[InterPtr]
|
||||
add edi,[AddEndBytes]
|
||||
dec byte[lineleft]
|
||||
jnz near .loopab3
|
||||
jnz .loopab3
|
||||
pop es
|
||||
ret
|
||||
|
||||
|
||||
Reference in New Issue
Block a user