Some optimisations / restructured code
This commit is contained in:
@@ -3415,107 +3415,45 @@ NEWSYM HalfTransC, dd 11110111100111101111011110011110b,111101111001111011110111
|
|||||||
NEWSYM NGNoTransp, dd 0
|
NEWSYM NGNoTransp, dd 0
|
||||||
NEWSYM NewGfx16AsmEnd
|
NEWSYM NewGfx16AsmEnd
|
||||||
|
|
||||||
MainScreenClip:
|
%macro SCMainA 0
|
||||||
mov esi,[vidbuffer]
|
%endmacro
|
||||||
add esi,16*2+288*2
|
|
||||||
mov ebx,1
|
|
||||||
.nextline
|
|
||||||
mov al,byte[scadsng+ebx]
|
|
||||||
test al,0C0h
|
|
||||||
jz near .notthisone
|
|
||||||
push esi
|
|
||||||
push ebx
|
|
||||||
and al,0C0h
|
|
||||||
cmp al,0C0h
|
|
||||||
jne .notentire
|
|
||||||
mov ebx,[UnusedBit]
|
|
||||||
mov ecx,256
|
|
||||||
mov edx,256
|
|
||||||
jmp .startclipping
|
|
||||||
.notentire
|
|
||||||
|
|
||||||
mov dword[ngwinen],0
|
%macro SCSubA 0
|
||||||
test byte[winbg1enval+ebx+5*256],0Ah
|
shl al,2
|
||||||
jz .nowindowing
|
%endmacro
|
||||||
push eax
|
|
||||||
push ebx
|
|
||||||
mov al,[winlogicaval+ebx*2+1]
|
|
||||||
shr al,2
|
|
||||||
and al,03h
|
|
||||||
mov [nglogicval],al
|
|
||||||
mov eax,ebx
|
|
||||||
add ebx,5*256
|
|
||||||
call BuildWindow
|
|
||||||
;ngwintable
|
|
||||||
pop ebx
|
|
||||||
pop eax
|
|
||||||
.nowindowing
|
|
||||||
|
|
||||||
mov ebx,[UnusedBit]
|
%macro SCMainB 0
|
||||||
mov edx,256
|
|
||||||
cmp dword[ngwinen],0
|
|
||||||
jne .windowenabled
|
|
||||||
cmp al,80h
|
|
||||||
je near .finclipping
|
|
||||||
mov ecx,256
|
|
||||||
jmp .startclipping
|
|
||||||
.windowenabled
|
|
||||||
cmp al,80h
|
|
||||||
je near .outsideclipping
|
|
||||||
mov edi,ngwintable
|
|
||||||
mov ecx,[edi]
|
|
||||||
add edi,4
|
|
||||||
or ecx,ecx
|
|
||||||
jnz near .startclipping
|
|
||||||
mov ecx,[edi]
|
|
||||||
add edi,4
|
|
||||||
jmp .noclipping
|
|
||||||
.outsideclipping
|
|
||||||
mov edi,ngwintable
|
|
||||||
mov ecx,[edi]
|
|
||||||
add edi,4
|
|
||||||
or ecx,ecx
|
|
||||||
jnz .noclipping
|
|
||||||
mov ecx,[edi]
|
|
||||||
add edi,4
|
|
||||||
jmp .startclipping
|
|
||||||
|
|
||||||
.startclipping
|
|
||||||
and word[esi],bx
|
and word[esi],bx
|
||||||
or word[esi+75036*2],bx
|
or word[esi+75036*2],bx
|
||||||
add esi,2
|
%endmacro
|
||||||
dec edx
|
|
||||||
jz .finclipping
|
|
||||||
dec ecx
|
|
||||||
jnz .startclipping
|
|
||||||
mov ecx,[edi]
|
|
||||||
add edi,4
|
|
||||||
.noclipping
|
|
||||||
sub edx,ecx
|
|
||||||
jz .finclipping
|
|
||||||
jc .finclipping
|
|
||||||
add ecx,ecx
|
|
||||||
add esi,ecx
|
|
||||||
mov ecx,[edi]
|
|
||||||
add edi,4
|
|
||||||
jmp .startclipping
|
|
||||||
|
|
||||||
.finclipping
|
%macro SCSubB 0
|
||||||
pop ebx
|
and word[esi],bx
|
||||||
pop esi
|
%endmacro
|
||||||
.notthisone
|
|
||||||
inc ebx
|
|
||||||
add esi,288*2
|
|
||||||
cmp [resolutn],bx
|
|
||||||
jne near .nextline
|
|
||||||
|
|
||||||
SubScreenClip:
|
%macro SCMainC 0
|
||||||
|
%endmacro
|
||||||
|
|
||||||
|
%macro SCSubC 0
|
||||||
|
xor ebx,0FFFFFFFFh
|
||||||
|
%endmacro
|
||||||
|
|
||||||
|
%macro SCMainD 0
|
||||||
|
and dword[esi],ebx
|
||||||
|
or dword[esi+75036*2],ebx
|
||||||
|
%endmacro
|
||||||
|
|
||||||
|
%macro SCSubD 0
|
||||||
|
and dword[esi],ebx
|
||||||
|
%endmacro
|
||||||
|
|
||||||
|
%macro ScreenClip 4
|
||||||
mov esi,[vidbuffer]
|
mov esi,[vidbuffer]
|
||||||
add esi,16*2+288*2
|
add esi,16*2+288*2
|
||||||
mov ebx,1
|
mov ebx,1
|
||||||
.nextline
|
.nextline
|
||||||
mov al,byte[scadsng+ebx]
|
mov al,byte[scadsng+ebx]
|
||||||
shl al,2
|
%1
|
||||||
test al,0C0h
|
test al,0C0h
|
||||||
jz near .notthisone
|
jz near .notthisone
|
||||||
push esi
|
push esi
|
||||||
@@ -3524,10 +3462,10 @@ SubScreenClip:
|
|||||||
cmp al,0C0h
|
cmp al,0C0h
|
||||||
jne .notentire
|
jne .notentire
|
||||||
mov ebx,[UnusedBit]
|
mov ebx,[UnusedBit]
|
||||||
xor ebx,0FFFFFFFFh
|
%3
|
||||||
mov ecx,256
|
mov ecx,256
|
||||||
mov edx,256
|
mov edx,256
|
||||||
jmp .startclipping
|
jmp .startclippingfull
|
||||||
.notentire
|
.notentire
|
||||||
|
|
||||||
mov dword[ngwinen],0
|
mov dword[ngwinen],0
|
||||||
@@ -3548,14 +3486,14 @@ SubScreenClip:
|
|||||||
.nowindowing
|
.nowindowing
|
||||||
|
|
||||||
mov ebx,[UnusedBit]
|
mov ebx,[UnusedBit]
|
||||||
xor ebx,0FFFFFFFFh
|
%3
|
||||||
mov edx,256
|
mov edx,256
|
||||||
cmp dword[ngwinen],0
|
cmp dword[ngwinen],0
|
||||||
jne .windowenabled
|
jne .windowenabled
|
||||||
cmp al,80h
|
cmp al,80h
|
||||||
je near .finclipping
|
je near .finclipping
|
||||||
mov ecx,256
|
mov ecx,256
|
||||||
jmp .startclipping
|
jmp .startclippingfull
|
||||||
.windowenabled
|
.windowenabled
|
||||||
cmp al,80h
|
cmp al,80h
|
||||||
je near .outsideclipping
|
je near .outsideclipping
|
||||||
@@ -3563,7 +3501,7 @@ SubScreenClip:
|
|||||||
mov ecx,[edi]
|
mov ecx,[edi]
|
||||||
add edi,4
|
add edi,4
|
||||||
or ecx,ecx
|
or ecx,ecx
|
||||||
jnz near .startclipping
|
jnz near .startclippingb
|
||||||
mov ecx,[edi]
|
mov ecx,[edi]
|
||||||
add edi,4
|
add edi,4
|
||||||
jmp .noclipping
|
jmp .noclipping
|
||||||
@@ -3575,10 +3513,12 @@ SubScreenClip:
|
|||||||
jnz .noclipping
|
jnz .noclipping
|
||||||
mov ecx,[edi]
|
mov ecx,[edi]
|
||||||
add edi,4
|
add edi,4
|
||||||
jmp .startclipping
|
jmp .startclippingb
|
||||||
|
.startclippingb
|
||||||
|
cmp ecx,256
|
||||||
|
jae near .startclippingfull
|
||||||
.startclipping
|
.startclipping
|
||||||
and word[esi],bx
|
%2
|
||||||
add esi,2
|
add esi,2
|
||||||
dec edx
|
dec edx
|
||||||
jz .finclipping
|
jz .finclipping
|
||||||
@@ -3595,7 +3535,12 @@ SubScreenClip:
|
|||||||
mov ecx,[edi]
|
mov ecx,[edi]
|
||||||
add edi,4
|
add edi,4
|
||||||
jmp .startclipping
|
jmp .startclipping
|
||||||
|
.startclippingfull
|
||||||
|
mov ecx,128
|
||||||
|
.loopclipfull
|
||||||
|
%4
|
||||||
|
add esi,4
|
||||||
|
loop .loopclipfull
|
||||||
.finclipping
|
.finclipping
|
||||||
pop ebx
|
pop ebx
|
||||||
pop esi
|
pop esi
|
||||||
@@ -3604,6 +3549,12 @@ SubScreenClip:
|
|||||||
add esi,288*2
|
add esi,288*2
|
||||||
cmp [resolutn],bx
|
cmp [resolutn],bx
|
||||||
jne near .nextline
|
jne near .nextline
|
||||||
|
%endmacro
|
||||||
|
|
||||||
|
MainScreenClip:
|
||||||
|
ScreenClip SCMainA,SCMainB,SCMainC,SCMainD
|
||||||
|
SubScreenClip:
|
||||||
|
ScreenClip SCSubA,SCSubB,SCSubC,SCSubD
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user