📄 mv16tms.asm
字号:
pop edi
add esi,16
add ebp,16
test byte[a16x16xinc],01h
jnz .noincrb2
inc dl
.noincrb2
cmp dl,20h
jne .loopc2
xor dl,dl
mov edi,[temptile]
.loopc2
dec byte[tileleft16b]
jnz near .loopa
mov dh,byte[curmosaicsz]
cmp dh,1
jne near domosaic16b
ret
; reversed loop
.rloop
mov cl,[bshifter]
and dh,1Ch
shl dh,cl ; process palette # (bits 10-12)
add dh,[bgcoloradder]
xor eax,eax
xor ecx,ecx
drawtilegrpfullf draw8x816tbms
pop edi
add esi,16
add ebp,16
test byte[a16x16xinc],01h
jnz .noincrb
inc dl
.noincrb
cmp dl,20h
jne .loopc
xor dl,dl
mov edi,[temptile]
.loopc
dec byte[tileleft16b]
jnz near .loopa
mov dh,byte[curmosaicsz]
cmp dh,1
jne near domosaic16b
ret
NEWSYM draw16x1616tsms
mov byte[tileleft16b],33
mov dl,[temp]
.loopa
mov ax,[edi]
mov dh,ah
xor byte[a16x16xinc],1
test dh,40h
jnz .noxflip
test byte[a16x16xinc],01h
jnz .noincr2
inc ax
add edi,2
.noincr2
jmp .yesxflip
.noxflip
test byte[a16x16xinc],01h
jnz .noincr
add edi,2
jmp .yesincr
.noincr
inc ax
.yesincr
.yesxflip
xor dh,[curbgpr]
push edi
test dh,20h
jnz near .hprior
inc byte[drawn]
test dh,80h
jnz .noyflip
add ax,word[yadd]
jmp .yesyflip
.noyflip
add ax,word[yflipadd]
.yesyflip
and ax,03FFh ; filter out tile #
mov edi,[tempcach]
shl ax,6
add edi,eax
cmp edi,[bgofwptr]
jb .noclip
sub edi,[bgsubby]
.noclip
test dh,80h
jz .normadd
add edi,[yrevadder]
jmp .skipadd
.normadd
add edi,[yadder]
.skipadd
test dh,40h
jnz near .rloop
mov cl,[bshifter]
and dh,1Ch
shl dh,cl ; process palette # (bits 10-12)
add dh,[bgcoloradder]
xor eax,eax
xor ecx,ecx
; Start loop
drawtilegrpfull draw8x816tcms
.hprior
pop edi
add esi,16
add ebp,16
test byte[a16x16xinc],01h
jnz .noincrb2
inc dl
.noincrb2
cmp dl,20h
jne .loopc2
xor dl,dl
mov edi,[temptile]
.loopc2
dec byte[tileleft16b]
jnz near .loopa
mov dh,byte[curmosaicsz]
cmp dh,1
jne near domosaic16b
ret
; reversed loop
.rloop
mov cl,[bshifter]
and dh,1Ch
shl dh,cl ; process palette # (bits 10-12)
add dh,[bgcoloradder]
xor eax,eax
xor ecx,ecx
drawtilegrpfullf draw8x816tcms
pop edi
add esi,16
add ebp,16
test byte[a16x16xinc],01h
jnz .noincrb
inc dl
.noincrb
cmp dl,20h
jne .loopc
xor dl,dl
mov edi,[temptile]
.loopc
dec byte[tileleft16b]
jnz near .loopa
mov dh,byte[curmosaicsz]
cmp dh,1
jne near domosaic16b
ret
NEWSYM draw16x1616twinonms
mov ebp,transpbuf+32
sub ebp,eax
sub ebp,eax
test byte[scaddtype],80h
jnz near draw16x1616tswinonms
test byte[scaddtype],40h
jz near draw16x16fulladdwinonms
cmp byte[scrnon+1],0
je near draw16x16fulladdwinonms
mov byte[tileleft16b],33
mov edx,[winptrref]
.loopa
mov ax,[edi]
mov cl,ah
xor byte[a16x16xinc],1
test cl,40h
jnz .noxflip
test byte[a16x16xinc],01h
jnz .noincr2
inc ax
add edi,2
.noincr2
jmp .yesxflip
.noxflip
test byte[a16x16xinc],01h
jnz .noincr
add edi,2
jmp .yesincr
.noincr
inc ax
.yesincr
.yesxflip
xor cl,[curbgpr]
test cl,20h
jnz near .hprior
inc byte[drawn]
test cl,80h
jnz .noyflip
add ax,word[yadd]
jmp .yesyflip
.noyflip
add ax,word[yflipadd]
.yesyflip
and ax,03FFh ; filter out tile #
mov ebx,[tempcach]
shl ax,6
add ebx,eax
cmp ebx,[bgofwptr]
jb .noclip
sub ebx,[bgsubby]
.noclip
test cl,80h
jz .normadd
add ebx,[yrevadder]
jmp .skipadd
.normadd
add ebx,[yadder]
.skipadd
test cl,40h
jnz near .rloop
mov al,cl
mov cl,[bshifter]
and al,1Ch
shl al,cl ; process palette # (bits 10-12)
add al,[bgcoloradder]
mov [coadder16],al
xor eax,eax
xor ecx,ecx
; Start loop
drawtilegrp draw8x816tawinonms
.hprior
add esi,16
add edx,8
add ebp,16
test byte[a16x16xinc],01h
jnz .noincrb2
inc byte[temp]
.noincrb2
cmp byte[temp],20h
jne .loopc2
mov byte[temp],0
mov edi,[temptile]
.loopc2
dec byte[tileleft16b]
jnz near .loopa
ret
; reversed loop
.rloop
mov al,cl
mov cl,[bshifter]
and al,1Ch
shl al,cl ; process palette # (bits 10-12)
add al,[bgcoloradder]
mov [coadder16],al
xor eax,eax
xor ecx,ecx
; Start loop
drawtilegrpf draw8x816tawinonbms
.skiploop2b
add esi,16
add edx,8
add ebp,16
test byte[a16x16xinc],01h
jnz .noincrb
inc byte[temp]
.noincrb
cmp byte[temp],20h
jne near .loopc2
mov byte[temp],0
mov edi,[temptile]
.loopc
dec byte[tileleft16b]
jnz near .loopa
ret
NEWSYM draw16x16fulladdwinonms
mov byte[tileleft16b],33
mov edx,[winptrref]
.loopa
mov ax,[edi]
mov cl,ah
xor byte[a16x16xinc],1
test cl,40h
jnz .noxflip
test byte[a16x16xinc],01h
jnz .noincr2
inc ax
add edi,2
.noincr2
jmp .yesxflip
.noxflip
test byte[a16x16xinc],01h
jnz .noincr
add edi,2
jmp .yesincr
.noincr
inc ax
.yesincr
.yesxflip
xor cl,[curbgpr]
push edi
test cl,20h
jnz near .hprior
inc byte[drawn]
test cl,80h
jnz .noyflip
add ax,word[yadd]
jmp .yesyflip
.noyflip
add ax,word[yflipadd]
.yesyflip
and ax,03FFh ; filter out tile #
mov edi,[tempcach]
shl ax,6
add edi,eax
cmp edi,[bgofwptr]
jb .noclip
sub edi,[bgsubby]
.noclip
test cl,80h
jz .normadd
add edi,[yrevadder]
jmp .skipadd
.normadd
add edi,[yadder]
.skipadd
test cl,40h
jnz near .rloop
mov al,cl
mov cl,[bshifter]
and al,1Ch
shl al,cl ; process palette # (bits 10-12)
add al,[bgcoloradder]
mov [coadder16],al
xor eax,eax
xor ecx,ecx
; Start loop
drawtilegrpfull draw8x816tbwinonms
.hprior
pop edi
add esi,16
add edx,8
add ebp,16
test byte[a16x16xinc],01h
jnz .noincrb2
inc byte[temp]
.noincrb2
cmp byte[temp],20h
jne .loopc2
mov byte[temp],0
mov edi,[temptile]
.loopc2
dec byte[tileleft16b]
jnz near .loopa
ret
; reversed loop
.rloop
mov al,cl
mov cl,[bshifter]
and al,1Ch
shl al,cl ; process palette # (bits 10-12)
add al,[bgcoloradder]
mov [coadder16],al
xor eax,eax
xor ecx,ecx
drawtilegrpfullf draw8x816tbwinonbms
pop edi
add esi,16
add edx,8
add ebp,16
test byte[a16x16xinc],01h
jnz .noincrb
inc byte[temp]
.noincrb
cmp byte[temp],20h
jne near .loopc2
mov byte[temp],0
mov edi,[temptile]
.loopc
dec byte[tileleft16b]
jnz near .loopa
ret
NEWSYM draw16x1616tswinonms
mov byte[tileleft16b],33
mov edx,[winptrref]
.loopa
mov ax,[edi]
mov cl,ah
xor byte[a16x16xinc],1
test cl,40h
jnz .noxflip
test byte[a16x16xinc],01h
jnz .noincr2
inc ax
add edi,2
.noincr2
jmp .yesxflip
.noxflip
test byte[a16x16xinc],01h
jnz .noincr
add edi,2
jmp .yesincr
.noincr
inc ax
.yesincr
.yesxflip
xor cl,[curbgpr]
push edi
test cl,20h
jnz near .hprior
inc byte[drawn]
test cl,80h
jnz .noyflip
add ax,word[yadd]
jmp .yesyflip
.noyflip
add ax,word[yflipadd]
.yesyflip
and ax,03FFh ; filter out tile #
mov edi,[tempcach]
shl ax,6
add edi,eax
cmp edi,[bgofwptr]
jb .noclip
sub edi,[bgsubby]
.noclip
test cl,80h
jz .normadd
add edi,[yrevadder]
jmp .skipadd
.normadd
add edi,[yadder]
.skipadd
test cl,40h
jnz near .rloop
mov al,cl
mov cl,[bshifter]
and al,1Ch
shl al,cl ; process palette # (bits 10-12)
add al,[bgcoloradder]
mov [coadder16],al
xor eax,eax
xor ecx,ecx
; Start loop
drawtilegrpfull draw8x816tcwinonms
.hprior
pop edi
add esi,16
add edx,8
add ebp,16
test byte[a16x16xinc],01h
jnz .noincrb2
inc byte[temp]
.noincrb2
cmp byte[temp],20h
jne .loopc2
mov byte[temp],0
mov edi,[temptile]
.loopc2
dec byte[tileleft16b]
jnz near .loopa
ret
; reversed loop
.rloop
mov al,cl
mov cl,[bshifter]
and al,1Ch
shl al,cl ; process palette # (bits 10-12)
add al,[bgcoloradder]
mov [coadder16],al
xor eax,eax
xor ecx,ecx
drawtilegrpfullf draw8x816tcwinonbms
pop edi
add esi,16
add edx,8
add ebp,16
test byte[a16x16xinc],01h
jnz .noincrb
inc byte[temp]
.noincrb
cmp byte[temp],20h
jne near .loopc2
mov byte[temp],0
mov edi,[temptile]
.loopc
dec byte[tileleft16b]
jnz near .loopa
ret
NEWSYM MV16TMSAsmEnd
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -