mirror of
https://github.com/ZDoom/raze-gles.git
synced 2025-01-27 09:20:51 +00:00
Port non-pow2 ysize texture mapping routines to MASM, untested.
It's mostly taking over the NASM code, with a couple of changes: - declarations for externals and globals are slightly different - the masm seems to have e.g. "dword ptr [...]" where the nasm has only "dword [...]", though the masm also has a couple of the latter. The "ptr" modifier seems kinda redundant to me, but I added it to every indirection anyway. git-svn-id: https://svn.eduke32.com/eduke32@3033 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
ddc22ee395
commit
beb47f47b5
1 changed files with 111 additions and 0 deletions
|
@ -39,6 +39,7 @@ EXTRN _espbak : dword
|
||||||
EXTRN _pow2char : near
|
EXTRN _pow2char : near
|
||||||
EXTRN _pow2long : near
|
EXTRN _pow2long : near
|
||||||
|
|
||||||
|
EXTRN _globaltilesizy : dword
|
||||||
|
|
||||||
; Some macros to help make cdecl calling easier to manage
|
; Some macros to help make cdecl calling easier to manage
|
||||||
CDECLBEGIN MACRO noi:=<0>
|
CDECLBEGIN MACRO noi:=<0>
|
||||||
|
@ -188,6 +189,12 @@ ALIGN 16
|
||||||
PUBLIC _setvlinebpl
|
PUBLIC _setvlinebpl
|
||||||
_setvlinebpl:
|
_setvlinebpl:
|
||||||
CDECLBEGINSET 1
|
CDECLBEGINSET 1
|
||||||
|
mov dword ptr [np2_fixchain1a+2], eax
|
||||||
|
mov dword ptr [np2_fixchain1b+2], eax
|
||||||
|
|
||||||
|
mov dword ptr [mnp2_fixchain1b+2], eax
|
||||||
|
mov dword ptr [tnp2_fixchain1b+2], eax
|
||||||
|
|
||||||
mov dword ptr [fixchain1a+2], eax
|
mov dword ptr [fixchain1a+2], eax
|
||||||
mov dword ptr [fixchain1b+2], eax
|
mov dword ptr [fixchain1b+2], eax
|
||||||
mov dword ptr [fixchain1m+2], eax
|
mov dword ptr [fixchain1m+2], eax
|
||||||
|
@ -585,6 +592,35 @@ fixchain1b: add edi, 320
|
||||||
CDECLENDSET 6
|
CDECLENDSET 6
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
ALIGN 16
|
||||||
|
PUBLIC _vlineasm1nonpow2
|
||||||
|
_vlineasm1nonpow2:
|
||||||
|
CDECLBEGINSET 6
|
||||||
|
mov dword ptr [np2_do_palookup+2], ebx
|
||||||
|
push ebp
|
||||||
|
mov ebp, edx ; ebp: vertical place
|
||||||
|
mov ebx, eax ; ebx: vertical increment
|
||||||
|
mov eax, dword ptr [globaltilesizy]
|
||||||
|
mov dword ptr [np2_beginvline+1], eax
|
||||||
|
inc ecx
|
||||||
|
np2_fixchain1a: sub edi, 320
|
||||||
|
np2_beginvline: ; +1: y tile size
|
||||||
|
mov eax, 0x00000123
|
||||||
|
mul ebp
|
||||||
|
np2_fixchain1b: add edi, 320
|
||||||
|
and eax, 0x000000ff
|
||||||
|
mov al, byte ptr [esi+edx]
|
||||||
|
add ebp, ebx
|
||||||
|
dec ecx
|
||||||
|
np2_do_palookup: ; +2: addr
|
||||||
|
mov al, byte ptr [0xbeeff00d+eax]
|
||||||
|
mov byte ptr [edi], al
|
||||||
|
jnz short np2_beginvline
|
||||||
|
mov eax, ebp
|
||||||
|
pop ebp
|
||||||
|
CDECLENDSET 6
|
||||||
|
ret
|
||||||
|
|
||||||
ALIGN 16
|
ALIGN 16
|
||||||
PUBLIC _mvlineasm1 ;Masked vline
|
PUBLIC _mvlineasm1 ;Masked vline
|
||||||
_mvlineasm1:
|
_mvlineasm1:
|
||||||
|
@ -610,6 +646,36 @@ fixchain1m: add edi, 320
|
||||||
CDECLENDSET 6
|
CDECLENDSET 6
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
ALIGN 16
|
||||||
|
PUBLIC _mvlineasm1nonpow2
|
||||||
|
_mvlineasm1nonpow2:
|
||||||
|
CDECLBEGINSET 6
|
||||||
|
mov dword ptr [mnp2_do_palookup+2], ebx
|
||||||
|
push ebp
|
||||||
|
mov ebp, edx ; ebp: vertical place
|
||||||
|
mov ebx, eax ; ebx: vertical increment
|
||||||
|
mov eax, dword ptr [globaltilesizy]
|
||||||
|
mov dword ptr [mnp2_beginvline+1], eax
|
||||||
|
mnp2_beginvline: ; +1: y tile size
|
||||||
|
mov eax, 0x00000123
|
||||||
|
mul ebp
|
||||||
|
and eax, 0x000000ff
|
||||||
|
mov al, byte ptr [esi+edx]
|
||||||
|
cmp al, 255
|
||||||
|
je short mskipmask1
|
||||||
|
mnp2_do_palookup: ; +2: addr
|
||||||
|
mov al, byte ptr [0xbeeff00d+eax]
|
||||||
|
mov byte ptr [edi], al
|
||||||
|
mskipmask1:
|
||||||
|
add ebp, ebx
|
||||||
|
mnp2_fixchain1b: add edi, 320
|
||||||
|
sub ecx, 1
|
||||||
|
jnc short mnp2_beginvline
|
||||||
|
mov eax, ebp
|
||||||
|
pop ebp
|
||||||
|
CDECLENDSET 6
|
||||||
|
ret
|
||||||
|
|
||||||
ALIGN 16
|
ALIGN 16
|
||||||
PUBLIC _fixtransluscence
|
PUBLIC _fixtransluscence
|
||||||
_fixtransluscence:
|
_fixtransluscence:
|
||||||
|
@ -623,6 +689,8 @@ CDECLBEGINSET 1
|
||||||
mov dword ptr [tran2trab+2], eax
|
mov dword ptr [tran2trab+2], eax
|
||||||
mov dword ptr [tran2trac+2], eax
|
mov dword ptr [tran2trac+2], eax
|
||||||
mov dword ptr [tran2trad+2], eax
|
mov dword ptr [tran2trad+2], eax
|
||||||
|
|
||||||
|
mov dword ptr [tnmach4+2], eax
|
||||||
CDECLENDSET 1
|
CDECLENDSET 1
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
@ -647,6 +715,10 @@ _settransnormal:
|
||||||
mov byte ptr [transrev15+1], 9ah
|
mov byte ptr [transrev15+1], 9ah
|
||||||
mov byte ptr [transrev16+1], 0a7h
|
mov byte ptr [transrev16+1], 0a7h
|
||||||
mov byte ptr [transrev17+1], 82h
|
mov byte ptr [transrev17+1], 82h
|
||||||
|
|
||||||
|
mov byte ptr [ntransrev0+1], 80h
|
||||||
|
mov byte ptr [ntransrev1+1], 27h
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
ALIGN 16
|
ALIGN 16
|
||||||
|
@ -670,6 +742,10 @@ _settransreverse:
|
||||||
mov byte ptr [transrev15+1], 0bah
|
mov byte ptr [transrev15+1], 0bah
|
||||||
mov byte ptr [transrev16+1], 87h
|
mov byte ptr [transrev16+1], 87h
|
||||||
mov byte ptr [transrev17+1], 0a2h
|
mov byte ptr [transrev17+1], 0a2h
|
||||||
|
|
||||||
|
mov byte ptr [ntransrev0+1], 0a0h
|
||||||
|
mov byte ptr [ntransrev1+1], 7h
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
ALIGN 16
|
ALIGN 16
|
||||||
|
@ -706,6 +782,41 @@ fixchain1t: add edi, 320
|
||||||
CDECLENDSET 6
|
CDECLENDSET 6
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
ALIGN 16
|
||||||
|
PUBLIC _tvlineasm1nonpow2
|
||||||
|
_tvlineasm1nonpow2:
|
||||||
|
CDECLBEGINSET 6
|
||||||
|
mov dword ptr [tnp2_do_palookup+2], ebx
|
||||||
|
push ebp
|
||||||
|
mov ebp, edx ; ebp: vertical place
|
||||||
|
mov ebx, eax ; ebx: vertical increment
|
||||||
|
inc ecx
|
||||||
|
mov eax, dword ptr [globaltilesizy]
|
||||||
|
mov dword ptr [tnp2_beginvline+1], eax
|
||||||
|
tnp2_beginvline: ; +1: y tile size
|
||||||
|
mov eax, 0x00000123
|
||||||
|
mul ebp
|
||||||
|
and eax, 0x000000ff
|
||||||
|
mov al, byte ptr [esi+edx]
|
||||||
|
cmp al, 255
|
||||||
|
je short tskipmask1
|
||||||
|
ntransrev0:
|
||||||
|
tnp2_do_palookup: ; +2: addr
|
||||||
|
mov al, byte ptr [0xbeeff00d+eax]
|
||||||
|
ntransrev1:
|
||||||
|
mov ah, byte ptr [edi]
|
||||||
|
tnmach4: mov al, byte ptr [eax+88888888h] ;_luc[eax]
|
||||||
|
mov byte ptr [edi], al
|
||||||
|
tskipmask1:
|
||||||
|
add ebp, ebx
|
||||||
|
tnp2_fixchain1b: add edi, 320
|
||||||
|
dec ecx
|
||||||
|
jnz short tnp2_beginvline
|
||||||
|
mov eax, ebp
|
||||||
|
pop ebp
|
||||||
|
CDECLENDSET 6
|
||||||
|
ret
|
||||||
|
|
||||||
;eax: -------temp1-------
|
;eax: -------temp1-------
|
||||||
;ebx: -------temp2-------
|
;ebx: -------temp2-------
|
||||||
;ecx: dat dat dat dat
|
;ecx: dat dat dat dat
|
||||||
|
|
Loading…
Reference in a new issue