diff --git a/zsnes/src/video/copyvid.inc b/zsnes/src/video/copyvid.inc index 4d0336dc..592eea46 100644 --- a/zsnes/src/video/copyvid.inc +++ b/zsnes/src/video/copyvid.inc @@ -19,6 +19,50 @@ SECTION .text +%macro FilterTest 1 + cmp byte[GUIOn],1 + jne %%nogui + cmp byte[FilteredGUI],1 + jne %%nofilter +%%nogui + cmp byte[antienab],1 + je near %1 +%%nofilter +%endmacro + +%macro SSInterpLine 0 + mov ax,[esi] + mov [es:edi],ax + add esi,byte 2 + add edi,byte 2 + mov ecx,254 +%%loopb + mov ax,[esi] + mov bx,[esi-2] + cmp ax,bx + jne %%loopb2 + mov [es:edi],ax + mov [es:edi-2],bx + jmp %%loopb3 +%%loopb2 + shr ax,byte 1 + shr bx,byte 1 + and ax,7befh + and bx,7befh + add ax,bx + mov [es:edi],ax + mov [es:edi-2],ax +%%loopb3 + add esi,byte 2 + add edi,byte 2 + dec ecx + jnz %%loopb + mov ax,[esi] + mov [es:edi],ax + add esi,byte 2 + add edi,byte 2 +%endmacro + %macro FlipCheck 0 cmp byte[FlipWait],0 je %%noflip @@ -310,54 +354,54 @@ ScreenShow: .startcopy jmp copymodeq256 -NEWSYM dosvidpastecopyscr - cmp byte[curblank],40h - je .nocopy - call GUITripleBuffer -.nocopy - call ScreenShowGUI - ret +;NEWSYM dosvidpastecopyscr +; cmp byte[curblank],40h +; je .nocopy +; call GUITripleBuffer +;.nocopy +; call ScreenShowGUI +; ret -ScreenShowGUI: - cmp byte[cvidmode],0 - je near copymodeq224 - cmp byte[cvidmode],1 - je near copymodeq240 - cmp byte[cvidmode],2 - je near copymodeq256 - cmp byte[cvidmode],3 - je near copymodex224 - cmp byte[cvidmode],4 - je near copymodex240 - cmp byte[cvidmode],5 - je near copymodex256 - cmp byte[cvidmode],6 - je near copyvesa12640x480x16bgui - cmp byte[cvidmode],7 - je near copyvesa2320x240x8b - cmp byte[cvidmode],8 - je near copyvesa2320x240x16bgui - cmp byte[cvidmode],9 - je near copyvesa2320x480x8bgui - cmp byte[cvidmode],10 - je near copyvesa2320x480x16bgui - cmp byte[cvidmode],11 - je near copyvesa2512x384x8b - cmp byte[cvidmode],12 - je near copyvesa2512x384x16bgui - cmp byte[cvidmode],13 - je near copyvesa2640x400x8b - cmp byte[cvidmode],14 - je near copyvesa2640x400x16b - cmp byte[cvidmode],15 - je near copyvesa2640x480x8bgui - cmp byte[cvidmode],16 - je near copyvesa2640x480x16bgui - cmp byte[cvidmode],17 - je near copyvesa2800x600x8b - cmp byte[cvidmode],18 - je near copyvesa2800x600x16b - jmp copymodeq256 +;ScreenShowGUI: +; cmp byte[cvidmode],0 +; je near copymodeq224 +; cmp byte[cvidmode],1 +; je near copymodeq240 +; cmp byte[cvidmode],2 +; je near copymodeq256 +; cmp byte[cvidmode],3 +; je near copymodex224 +; cmp byte[cvidmode],4 +; je near copymodex240 +; cmp byte[cvidmode],5 +; je near copymodex256 +; cmp byte[cvidmode],6 +; je near copyvesa12640x480x16bgui +; cmp byte[cvidmode],7 +; je near copyvesa2320x240x8b +; cmp byte[cvidmode],8 +; je near copyvesa2320x240x16bgui +; cmp byte[cvidmode],9 +; je near copyvesa2320x480x8bgui +; cmp byte[cvidmode],10 +; je near copyvesa2320x480x16bgui +; cmp byte[cvidmode],11 +; je near copyvesa2512x384x8b +; cmp byte[cvidmode],12 +; je near copyvesa2512x384x16bgui +; cmp byte[cvidmode],13 +; je near copyvesa2640x400x8b +; cmp byte[cvidmode],14 +; je near copyvesa2640x400x16b +; cmp byte[cvidmode],15 +; je near copyvesa2640x480x8bgui +; cmp byte[cvidmode],16 +; je near copyvesa2640x480x16bgui +; cmp byte[cvidmode],17 +; je near copyvesa2800x600x8b +; cmp byte[cvidmode],18 +; je near copyvesa2800x600x16b +; jmp copymodeq256 %endif @@ -717,7 +761,8 @@ NEWSYM copyvesa2320x240x8b add esi,16+256+16+16 xor eax,eax mov dl,[resolutn] - sub dl,2 + dec dl + dec dl cmp byte[ScreenScale],1 je .fullscreen @@ -746,11 +791,6 @@ NEWSYM copyvesa2320x240x8b .fsloopa mov ecx,256/4 jmp .fsloopb -.fsloopa2 - add esi,16+16 - dec dl - jnz .fsloopa - jmp .done .fsloopb mov eax,[esi] mov [es:edi],al @@ -759,7 +799,9 @@ NEWSYM copyvesa2320x240x8b add edi,byte 5 dec ecx jnz .fsloopb - jmp .fsloopa2 + add esi,16+16 + dec dl + jnz .fsloopa .done pop es @@ -770,8 +812,8 @@ NEWSYM copyvesa2320x240x8b ; Copy VESA2 320x480x8b Copies buffer to 320x480x8bVBE2 ;******************************************************* -NEWSYM copyvesa2320x480x8bgui - jmp copyvesa2320x480x8b +;NEWSYM copyvesa2320x480x8bgui +; jmp copyvesa2320x480x8b ; mov byte[CurrentGUIOn],1 ; jmp copyvesa2320x480x8b.nogui @@ -796,7 +838,8 @@ NEWSYM copyvesa2320x480x8b add esi,16+256+16+16 xor eax,eax mov dl,[resolutn] - sub dl,2 + dec dl + dec dl cmp byte[ScreenScale],1 je near .fullscreen cmp byte[scanlines],1 @@ -1012,7 +1055,8 @@ NEWSYM copyvesa2800x600x8b add esi,16+256+16+16 xor eax,eax mov dl,[resolutn] - sub dl,2 + dec dl + dec dl cmp byte[ScreenScale],1 je near .fullscreen cmp byte[smallscreenon],1 @@ -1151,7 +1195,8 @@ NEWSYM copyvesa2800x600x16b add esi,16*2+256*2+16*2+16*2 xor eax,eax mov dl,[resolutn] - sub dl,2 + dec dl + dec dl cmp byte[ScreenScale],1 je near .fullscreen cmp byte[smallscreenon],1 @@ -1294,7 +1339,8 @@ NEWSYM copyvesa2640x400x8b add esi,16+256+16+16 xor eax,eax mov dl,[resolutn] - sub dl,2 + dec dl + dec dl cmp byte[ScreenScale],1 je near .fullscreen cmp byte[smallscreenon],1 @@ -1313,14 +1359,15 @@ NEWSYM copyvesa2640x400x8b call .loopa2 add esi,16+16 add edi,64+64 - sub dl,2 + dec dl + dec dl jnz .loopa jmp .done .loopa2 mov al,[esi] mov [es:edi],al - inc esi mov [es:edi+1],al + inc esi add edi,byte 2 dec ecx jnz .loopa2 @@ -1360,7 +1407,8 @@ NEWSYM copyvesa2640x400x8b mov ecx,256/4 call .fsloopb add esi,16+16 - sub dl,2 + dec dl + dec dl jnz .fsloopa jmp .done .fsloopb @@ -1406,7 +1454,8 @@ NEWSYM copyvesa2640x400x16b add esi,16*2+256*2+16*2+16*2 xor eax,eax mov dl,[resolutn] - sub dl,2 + dec dl + dec dl cmp byte[ScreenScale],1 je near .fullscreen cmp byte[smallscreenon],1 @@ -1425,7 +1474,8 @@ NEWSYM copyvesa2640x400x16b call .loopa2 add esi,16*2+16*2 add edi,64*2+64*2 - sub dl,2 + dec dl + dec dl jnz .loopa jmp .done .loopa2 @@ -1472,7 +1522,8 @@ NEWSYM copyvesa2640x400x16b mov ecx,256/4 call .fsloopb add esi,16*2+16*2 - sub dl,2 + dec dl + dec dl jnz .fsloopa jmp .done .fsloopb @@ -1538,14 +1589,9 @@ NEWSYM copyvesa2640x480x8b je near smallscreen640x480x8b cmp byte[ScreenScale],1 je near smallscreen640x480x8b.fullscreen - cmp byte[GUIOn],1 - jne .nogui - cmp byte[FilteredGUI],1 - jne .noeagle -.nogui - cmp byte[antienab],1 - je near proceagle -.noeagle + + FilterTest proceagle + cmp byte[scanlines],1 je near copyvesa2640x480x8bs mov byte[res640],1 @@ -1575,7 +1621,8 @@ NEWSYM copyvesa2640x480x8b xor eax,eax mov ebx,hirestiledat+1 mov dl,[resolutn] - sub dl,2 + dec dl + dec dl .loopa cmp byte[Triplebufen],1 je .ignorehr @@ -1663,7 +1710,8 @@ NEWSYM copyvesa2640x480x8ng xor eax,eax mov ebx,1 mov dl,[resolutn] - sub dl,2 + dec dl + dec dl .loopa mov ecx,256 cmp dword[ignor512],0 @@ -1896,7 +1944,8 @@ NEWSYM smallscreen640x480x8b xor eax,eax mov ebx,hirestiledat+1 mov dl,[resolutn] - sub dl,2 + dec dl + dec dl .loopa mov ecx,64 rep movsd @@ -1927,7 +1976,8 @@ NEWSYM smallscreen640x480x8b xor eax,eax mov ebx,hirestiledat+1 mov dl,[resolutn] - sub dl,2 + dec dl + dec dl cmp byte[scanlines],1 je near .scanlines .loopa3 @@ -2000,7 +2050,8 @@ NEWSYM copyvesa2640x480x8bs xor eax,eax mov ebx,hirestiledat+1 mov dl,[resolutn] - sub dl,2 + dec dl + dec dl cmp byte[CurrentGUIOn],1 je .loopa cmp byte[ForceNewGfxOff],0 @@ -2350,7 +2401,8 @@ NEWSYM copyvesa2512x384x8b xor eax,eax mov ebx,hirestiledat+1 mov dl,[resolutn] - sub dl,2 + dec dl + dec dl xor dh,dh .loopa mov al,[ebx] @@ -2436,7 +2488,8 @@ NEWSYM copyvesa2512x384x8b .ssres239 xor eax,eax mov dl,[resolutn] - sub dl,2 + dec dl + dec dl cmp byte[MMXSupport],1 je .ssloopb .ssloopa @@ -2481,7 +2534,8 @@ NEWSYM copyvesa2512x384x8ng xor eax,eax mov ebx,1 mov dl,[resolutn] - sub dl,2 + dec dl + dec dl xor dh,dh .loopa cmp dword[ignor512],0 @@ -2549,8 +2603,7 @@ SECTION .text ;******************************************************* -copyvesa2320x240x16bgui: - jmp copyvesa2320x240x16b +;copyvesa2320x240x16bgui: ; cmp byte[curblank],40h ; jne .startcopy ; ret @@ -2654,17 +2707,12 @@ NEWSYM copyvesa2320x240x16b add esi,16*2+256*2+16*2+16*2 xor eax,eax mov dl,[resolutn] - sub dl,2 + dec dl + dec dl cmp byte[ScreenScale],1 je near .fullscreen - cmp byte[GUIOn],1 - jne .nogui - cmp byte[FilteredGUI],1 - jne .nointerp -.nogui - cmp byte[antienab],1 - je near .interpolate -.nointerp + + FilterTest .interpolate cmp byte[MMXSupport],1 je near .loopb @@ -2690,12 +2738,6 @@ NEWSYM copyvesa2320x240x16b sub edi,32*2 .fsloopa mov ecx,256/4 - jmp .fsloopb -.fsloopa2 - add esi,16*2+16*2 - dec dl - jnz .fsloopa - jmp .done .fsloopb mov eax,[esi] mov [es:edi],ax @@ -2705,69 +2747,37 @@ NEWSYM copyvesa2320x240x16b movsd dec ecx jnz .fsloopb - jmp .fsloopa2 + add esi,16*2+16*2 + dec dl + jnz .fsloopa + jmp .done .interpolate - ;cmp byte[ScreenScale],1 - ;je .infsloopa -.inloopa - mov ax,[esi] - mov [es:edi],ax - add esi,byte 2 - add edi,byte 2 - mov ecx,254 - jmp .inloopb -.inloopa2 - mov ax,[esi] - mov [es:edi],ax - add esi,32*2+2 - add edi,64*2+2 + SSInterpLine + add esi,16*2+16*2 + add edi,32*2+32*2 dec dl - jnz .inloopa - jmp .done -.inloopb - mov ax,[esi] - mov bx,[esi-2] - cmp ax,bx - jne .inloopb2 - mov [es:edi],ax - mov [es:edi-2],bx - jmp .inloopb3 -.inloopb2 - shr ax,byte 1 - shr bx,byte 1 - and ax,7befh - and bx,7befh - add ax,bx - mov [es:edi],ax - mov [es:edi-2],ax - jmp .inloopb3 -.inloopb3 - add esi,byte 2 - add edi,byte 2 - dec ecx - jnz .inloopb - jmp .inloopa2 + jnz .interpolate .done pop es ret -SECTION .bss -NEWSYM palresvalng, resd 2 -NEWSYM palresvalngb, resd 2 -SECTION .text +;SECTION .bss +;NEWSYM palresvalng, resd 2 +;NEWSYM palresvalngb, resd 2 +;SECTION .text -%macro copya320x240 0 - mov [es:edi],dx -%endmacro +;%macro copya320x240 0 +; mov [es:edi],dx +;%endmacro -%macro copyb320x240 0 - mov [es:edi+2],dx -%endmacro +;%macro copyb320x240 0 +; mov [es:edi+2],dx +;%endmacro %endif -SECTION .bss ALIGN = 32 +SECTION .bss ;ALIGN = 32 NEWSYM rescompareng, resd 1 NEWSYM nextdrawallng, resd 1 NEWSYM prevcol0ng, resd 1 @@ -2782,8 +2792,7 @@ SECTION .text ; Copy VESA2 320x480x16b Copies buffer to 320x480x16bVB2 ;******************************************************* -NEWSYM copyvesa2320x480x16bgui - jmp copyvesa2320x480x16b +;NEWSYM copyvesa2320x480x16bgui ; cmp byte[curblank],40h ; jne .startcopy ; ret @@ -2951,7 +2960,8 @@ NEWSYM ConvertToAFormat mov esi,[vidbuffer] add esi,16*2+256*2+32*2 mov dl,[resolutn] - sub dl,2 + dec dl + dec dl cmp byte[MMXSupport],1 je near .mmxconv .crgbloop @@ -2998,7 +3008,8 @@ NEWSYM UnConvertToAFormat mov esi,[vidbuffer] add esi,16*2+256*2+32*2 mov dl,[resolutn] - sub dl,2 + dec dl + dec dl .crgbloop mov ecx,128 .crgbloop2 @@ -3022,6 +3033,7 @@ NEWSYM copyvesa2320x480x16b cmp byte[curblank],40h jne .startcopy ret + .startcopy ; mov eax,[vesa2_clbitng2] ; mov [vesavaland],eax @@ -3043,17 +3055,13 @@ NEWSYM copyvesa2320x480x16b add esi,16*2+256*2+16*2+16*2 xor eax,eax mov dl,[resolutn] - sub dl,2 + dec dl + dec dl cmp byte[ScreenScale],1 je near .fullscreen - cmp byte[GUIOn],1 - jne .nogui - cmp byte[FilteredGUI],1 - jne .nointerp -.nogui - cmp byte[antienab],1 - je near .interpolate -.nointerp + + FilterTest .interpolate + cmp byte[scanlines],1 je near .scanlines cmp byte[scanlines],3 @@ -3111,47 +3119,32 @@ NEWSYM copyvesa2320x480x16b jmp .done .halfscanlines - ;cmp byte[MMXSupport],1 - ;je .hsloopb + ;cmp byte[MMXSupport] + ;je near .hsloopb .hsloopa mov ecx,256/4*2 rep movsd sub esi,256*2 add edi,32*2+32*2 - mov ecx,256/4 - jmp .hsloopa3 + mov ecx,256/2 .hsloopa2 + mov ax,[esi] + mov bx,[esi+2] + shr ax,byte 1 + shr bx,byte 1 + 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 + jnz .hsloopa2 add esi,16*2+16*2 add edi,32*2+32*2 dec dl jnz .hsloopa jmp .done -.hsloopa3 - push ecx - push edx - mov ax,[esi] - mov bx,[esi+2] - mov cx,[esi+4] - mov dx,[esi+6] - shr ax,byte 1 - shr bx,byte 1 - shr cx,byte 1 - shr dx,byte 1 - and ax,7befh - and bx,7befh - and cx,7befh - and dx,7befh - mov [es:edi],ax - mov [es:edi+2],bx - mov [es:edi+4],cx - mov [es:edi+6],dx - pop edx - pop ecx - add esi,byte 8 - add edi,byte 8 - dec ecx - jnz .hsloopa3 - jmp .hsloopa2 .quartscanlines ;cmp byte[MMXSupport],1 @@ -3162,14 +3155,7 @@ NEWSYM copyvesa2320x480x16b sub esi,256*2 add edi,32*2+32*2 mov ecx,256/2 - jmp .qsloopa3 .qsloopa2 - add esi,16*2+16*2 - add edi,32*2+32*2 - dec dl - jnz .qsloopa - jmp .done -.qsloopa3 push ecx push edx mov ax,[esi] @@ -3189,8 +3175,12 @@ NEWSYM copyvesa2320x480x16b add esi,byte 4 add edi,byte 4 dec ecx - jnz .qsloopa3 - jmp .qsloopa2 + jnz .qsloopa2 + add esi,16*2+16*2 + add edi,32*2+32*2 + dec dl + jnz .qsloopa + jmp .done .fullscreen sub edi,32*2 @@ -3249,29 +3239,27 @@ NEWSYM copyvesa2320x480x16b jnz .fsloopb ret .fsloopb2 - push ecx - push edx mov ax,[esi] mov bx,[esi+2] - mov cx,[esi+4] - mov dx,[esi+6] shr ax,byte 1 shr bx,byte 1 - shr cx,byte 1 - shr dx,byte 1 and ax,7befh and bx,7befh - and cx,7befh - and dx,7befh mov [es:edi],ax mov [es:edi+2],ax mov [es:edi+4],bx - mov [es:edi+6],cx - mov [es:edi+8],dx - pop edx - pop ecx - add esi,byte 8 - add edi,byte 8+2 + add esi,byte 4 + add edi,byte 6 + mov ax,[esi] + mov bx,[esi+2] + shr ax,byte 1 + shr bx,byte 1 + 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 jnz .fsloopb2 ret @@ -3291,8 +3279,10 @@ NEWSYM copyvesa2320x480x16b mov [es:edi],ax mov [es:edi+2],ax mov [es:edi+4],bx - mov ax,[esi+4] - mov bx,[esi+6] + add esi,byte 4 + add edi,byte 6 + mov ax,[esi] + mov bx,[esi+2] mov cx,ax mov dx,bx shr cx,byte 2 @@ -3301,77 +3291,35 @@ NEWSYM copyvesa2320x480x16b and dx,39e7h sub ax,cx sub bx,dx - mov [es:edi+6],ax - mov [es:edi+8],bx + mov [es:edi],ax + mov [es:edi+2],bx + add esi,byte 4 + add edi,byte 4 pop edx pop ecx - add esi,byte 8 - add edi,byte 8+2 dec ecx jnz .fsloopb3 ret .interpolate cmp byte[scanlines],1 - je .inloopa2 + je near .inloopa2 .inloopa - mov ax,[esi] - mov [es:edi],ax - add esi,byte 2 - add edi,byte 2 - mov ecx,254 - call .inloopb - mov ax,[esi] - mov [es:edi],ax - sub esi,256*2-2 - add edi,64*2+2 - mov ax,[esi] - mov [es:edi],ax - add esi,byte 2 - add edi,byte 2 - mov ecx,254 - call .inloopb - add esi,32*2+2 - add edi,64*2+2 + SSInterpLine + sub esi,256*2 + add edi,32*2+32*2 + SSInterpLine + add esi,16*2+16*2 + add edi,32*2+32*2 dec dl - jnz .inloopa + jnz near .inloopa jmp .done .inloopa2 - mov ax,[esi] - mov [es:edi],ax - add esi,byte 2 - add edi,byte 2 - mov ecx,254 - call .inloopb - mov ax,[esi] - mov [es:edi],ax - add esi,16*2+16*2+2 - add edi,32*2+320*2+32*2+2 + SSInterpLine + add esi,16*2+16*2 + add edi,32*2+320*2+32*2 dec dl jnz .inloopa2 - jmp .done -.inloopb - mov ax,[esi] - mov bx,[esi-2] - cmp ax,bx - jne .inloopb2 - mov [es:edi],ax - mov [es:edi-2],bx - jmp .inloopb3 -.inloopb2 - shr ax,byte 1 - shr bx,byte 1 - and ax,7befh - and bx,7befh - add ax,bx - mov [es:edi],ax - mov [es:edi-2],ax -.inloopb3 - add esi,byte 2 - add edi,byte 2 - dec ecx - jnz .inloopb - ret .done pop es @@ -3431,8 +3379,7 @@ NEWSYM copyvesa2320x480x16b %%nobankswitch %endmacro -NEWSYM copyvesa12640x480x16bgui - jmp copyvesa12640x480x16b +;NEWSYM copyvesa12640x480x16bgui ; cmp byte[curblank],40h ; jne .startcopy ; ret @@ -3553,8 +3500,7 @@ VESA12Bankswitch: sub edi,65536 ret -NEWSYM copyvesa2640x480x16bgui - jmp copyvesa2640x480x16b +;NEWSYM copyvesa2640x480x16bgui ; je near smallscreen640x480x16bgui.fullscreen ; cmp byte[curblank],40h ; jne .startcopy @@ -3878,7 +3824,8 @@ NEWSYM copyvesa2640x480x16b je near interpolate640x480x16b .nointerp mov dl,[resolutn] - sub dl,2 + dec dl + dec dl cmp byte[scanlines],1 je near .scanlines cmp byte[scanlines],3 @@ -4610,7 +4557,8 @@ Process2xSaI: ; add edi,[VESAAddr] mov dl,[resolutn] - sub dl,2 ; Compensate for top/bottom line + 2 lines in 2xSaI + dec dl + dec dl ; Compensate for top/bottom line + 2 lines in 2xSaI mov byte[lineleft],dl mov dword[esi+512],0 mov dword[esi+512+576*2],0 @@ -4763,7 +4711,8 @@ NEWSYM smallscreen640x480x16b xor eax,eax mov ebx,hirestiledat+1 mov dl,[resolutn] - sub dl,2 + dec dl + dec dl .loopa mov ecx,128 rep movsd @@ -4800,7 +4749,8 @@ NEWSYM smallscreen640x480x16b add esi,16*2+256*2+32*2 xor eax,eax mov dl,[resolutn] - sub dl,2 + dec dl + dec dl cmp byte[scanlines],1 je near .scanlines .loopa2 @@ -5713,8 +5663,7 @@ SECTION .text ; Copy VESA2 512x384x16b Copies buffer to 512x384x16bV2 ;******************************************************* -NEWSYM copyvesa2512x384x16bgui - jmp copyvesa2512x384x16b +;NEWSYM copyvesa2512x384x16bgui ; cmp byte[curblank],40h ; jne .startcopy ; ret @@ -5797,7 +5746,8 @@ NEWSYM copyvesa2512x384x16b xor eax,eax mov ebx,hirestiledat+1 mov dl,[resolutn] - sub dl,2 + dec dl + dec dl xor dh,dh .loopa mov al,[ebx] @@ -5881,7 +5831,8 @@ NEWSYM copyvesa2512x384x16b .ssres239 xor eax,eax mov dl,[resolutn] - sub dl,2 + dec dl + dec dl cmp byte[MMXSupport],1 je .ssloopb .ssloopa @@ -6202,7 +6153,8 @@ NEWSYM copyvesa12640x480x16b ; Check if interpolation mode .nommx mov dl,[resolutn] - sub dl,2 + dec dl + dec dl mov [lineleft],dl mov edx,65536 sub edx,edi