📄 newgfxwn.mac
字号:
add bl,dl
mov [edi+288*2],bl
mov bl,[ecx+8*4]
add bl,dl
mov [edi+288*3],bl
mov bl,[ecx+8*3]
add bl,dl
mov [edi+288*4],bl
mov bl,[ecx+8*2]
add bl,dl
mov [edi+288*5],bl
mov bl,[ecx+8]
add bl,dl
mov [edi+288*6],bl
mov bl,[ecx]
add bl,dl
mov [edi+288*7],bl
%%nodrawc
inc ecx
inc edi
dec dword[tleftnb]
jnz near %%loopfc
sub edi,8
jmp %%end
%%flipxyfull
mov dword[tleftnb],8
add ecx,7
%%loopfd
dec dword[ngcpixleft]
jnz %%notzerod
call Nextwinmode
%%notzerod
cmp dword[ngcwinmode],1
je %%nodrawd
mov bl,[ecx+8*7]
add bl,dl
mov [edi],bl
mov bl,[ecx+8*6]
add bl,dl
mov [edi+288],bl
mov bl,[ecx+8*5]
add bl,dl
mov [edi+288*2],bl
mov bl,[ecx+8*4]
add bl,dl
mov [edi+288*3],bl
mov bl,[ecx+8*3]
add bl,dl
mov [edi+288*4],bl
mov bl,[ecx+8*2]
add bl,dl
mov [edi+288*5],bl
mov bl,[ecx+8]
add bl,dl
mov [edi+288*6],bl
mov bl,[ecx]
add bl,dl
mov [edi+288*7],bl
%%nodrawd
dec ecx
inc edi
dec dword[tleftnb]
jnz near %%loopfd
sub edi,8
jmp %%end
%%parttile
%2
; start drawing from ecx
test dword[vrama+eax],8000h
jnz near %%flipyfullp
test dword[vrama+eax],4000h
jnz near %%flipxfullp
mov dword[tleftnb],8
%%loopfap
dec dword[ngcpixleft]
jnz %%notzerop
call Nextwinmode
%%notzerop
parttilewin 0,0
parttilewin 1,1
parttilewin 2,2
parttilewin 3,3
parttilewin 4,4
parttilewin 5,5
parttilewin 6,6
parttilewin 7,7
inc ecx
inc edi
dec dword[tleftnb]
jnz near %%loopfap
sub edi,8
jmp %%end
%%flipxfullp
mov dword[tleftnb],8
add ecx,7
%%loopfbp
dec dword[ngcpixleft]
jnz %%notzerobp
call Nextwinmode
%%notzerobp
parttilewin 0,0
parttilewin 1,1
parttilewin 2,2
parttilewin 3,3
parttilewin 4,4
parttilewin 5,5
parttilewin 6,6
parttilewin 7,7
dec ecx
inc edi
dec dword[tleftnb]
jnz near %%loopfbp
sub edi,8
jmp %%end
%%flipyfullp
test word[vrama+eax],4000h
jnz near %%flipxyfullp
mov dword[tleftnb],8
%%loopfcp
dec dword[ngcpixleft]
jnz %%notzerocp
call Nextwinmode
%%notzerocp
parttilewin 7,0
parttilewin 6,1
parttilewin 5,2
parttilewin 4,3
parttilewin 3,4
parttilewin 2,5
parttilewin 1,6
parttilewin 0,7
inc ecx
inc edi
dec dword[tleftnb]
jnz near %%loopfcp
sub edi,8
jmp %%end
%%flipxyfullp
mov dword[tleftnb],8
add ecx,7
%%loopfdp
dec dword[ngcpixleft]
jnz %%notzerodp
call Nextwinmode
%%notzerodp
parttilewin 7,0
parttilewin 6,1
parttilewin 5,2
parttilewin 4,3
parttilewin 3,4
parttilewin 2,5
parttilewin 1,6
parttilewin 0,7
dec ecx
inc edi
dec dword[tleftnb]
jnz near %%loopfdp
sub edi,8
jmp %%end
%5
processwinpixel
processwinpixel
processwinpixel
processwinpixel
%%end
mov ebx,[ng16bbgval]
add ax,2
inc dword[bg1totng+ebx*4]
add edi,8
test eax,03Fh
jz %%tileadd
%%next
dec byte[tleftn]
jnz near %4
pop ebx
ret
%%docache
call %3
jmp %%returnfromcache
%%tileadd
add ax,[bgtxadd]
jmp %%next
%endmacro
%macro drawtileng16x16win 8
; tile value : bit 15 = flipy, bit 14 = flipx, bit 13 = priority value
; bit 10-12 = palette, 0-9=tile#
mov ebx,[ng16bbgval]
mov dl,ch
inc dword[bg1drwng+ebx*4]
and ecx,3FFh
and edx,1Fh
add ecx,[ngptrdat2]
add cx,[taddnfy16x16]
test dword[vrama+eax],8000h
jz %%noflipy
add cx,[taddfy16x16]
%%noflipy
test dword[vrama+eax],4000h
jz %%noflipx
inc cx
%%noflipx
%%nexttile
push ecx
push edx
mov edx,[%6+edx*4]
%7
jnz near %%docache
%%returnfromcache
cmp byte[%1+ecx],2
je near %%skip
cmp byte[%1+ecx],0
je near %%parttile
%2
; start drawing from ecx
test dword[vrama+eax],8000h
jnz near %%flipyfull
test dword[vrama+eax],4000h
jnz near %%flipxfull
mov dword[tleftnb],8
%%loopfa
dec dword[ngcpixleft]
jnz %%notzero
call Nextwinmode
%%notzero
cmp dword[ngcwinmode],1
je %%nodraw
mov bl,[ecx]
add bl,dl
mov [edi],bl
mov bl,[ecx+8]
add bl,dl
mov [edi+288],bl
mov bl,[ecx+8*2]
add bl,dl
mov [edi+288*2],bl
mov bl,[ecx+8*3]
add bl,dl
mov [edi+288*3],bl
mov bl,[ecx+8*4]
add bl,dl
mov [edi+288*4],bl
mov bl,[ecx+8*5]
add bl,dl
mov [edi+288*5],bl
mov bl,[ecx+8*6]
add bl,dl
mov [edi+288*6],bl
mov bl,[ecx+8*7]
add bl,dl
mov [edi+288*7],bl
%%nodraw
inc ecx
inc edi
dec dword[tleftnb]
jnz near %%loopfa
sub edi,8
jmp %%end
%%flipxfull
mov dword[tleftnb],8
add ecx,7
%%loopfb
dec dword[ngcpixleft]
jnz %%notzerob
call Nextwinmode
%%notzerob
cmp dword[ngcwinmode],1
je %%nodrawb
mov bl,[ecx]
add bl,dl
mov [edi],bl
mov bl,[ecx+8]
add bl,dl
mov [edi+288],bl
mov bl,[ecx+8*2]
add bl,dl
mov [edi+288*2],bl
mov bl,[ecx+8*3]
add bl,dl
mov [edi+288*3],bl
mov bl,[ecx+8*4]
add bl,dl
mov [edi+288*4],bl
mov bl,[ecx+8*5]
add bl,dl
mov [edi+288*5],bl
mov bl,[ecx+8*6]
add bl,dl
mov [edi+288*6],bl
mov bl,[ecx+8*7]
add bl,dl
mov [edi+288*7],bl
%%nodrawb
dec ecx
inc edi
dec dword[tleftnb]
jnz near %%loopfb
sub edi,8
jmp %%end
%%flipyfull
test word[vrama+eax],4000h
jnz near %%flipxyfull
mov dword[tleftnb],8
%%loopfc
dec dword[ngcpixleft]
jnz %%notzeroc
call Nextwinmode
%%notzeroc
cmp dword[ngcwinmode],1
je %%nodrawc
mov bl,[ecx+8*7]
add bl,dl
mov [edi],bl
mov bl,[ecx+8*6]
add bl,dl
mov [edi+288],bl
mov bl,[ecx+8*5]
add bl,dl
mov [edi+288*2],bl
mov bl,[ecx+8*4]
add bl,dl
mov [edi+288*3],bl
mov bl,[ecx+8*3]
add bl,dl
mov [edi+288*4],bl
mov bl,[ecx+8*2]
add bl,dl
mov [edi+288*5],bl
mov bl,[ecx+8]
add bl,dl
mov [edi+288*6],bl
mov bl,[ecx]
add bl,dl
mov [edi+288*7],bl
%%nodrawc
inc ecx
inc edi
dec dword[tleftnb]
jnz near %%loopfc
sub edi,8
jmp %%end
%%flipxyfull
mov dword[tleftnb],8
add ecx,7
%%loopfd
dec dword[ngcpixleft]
jnz %%notzerod
call Nextwinmode
%%notzerod
cmp dword[ngcwinmode],1
je %%nodrawd
mov bl,[ecx+8*7]
add bl,dl
mov [edi],bl
mov bl,[ecx+8*6]
add bl,dl
mov [edi+288],bl
mov bl,[ecx+8*5]
add bl,dl
mov [edi+288*2],bl
mov bl,[ecx+8*4]
add bl,dl
mov [edi+288*3],bl
mov bl,[ecx+8*3]
add bl,dl
mov [edi+288*4],bl
mov bl,[ecx+8*2]
add bl,dl
mov [edi+288*5],bl
mov bl,[ecx+8]
add bl,dl
mov [edi+288*6],bl
mov bl,[ecx]
add bl,dl
mov [edi+288*7],bl
%%nodrawd
dec ecx
inc edi
dec dword[tleftnb]
jnz near %%loopfd
sub edi,8
jmp %%end
%%parttile
%2
; start drawing from ecx
test dword[vrama+eax],8000h
jnz near %%flipyfullp
test dword[vrama+eax],4000h
jnz near %%flipxfullp
mov dword[tleftnb],8
%%loopfap
dec dword[ngcpixleft]
jnz %%notzerop
call Nextwinmode
%%notzerop
parttilewin 0,0
parttilewin 1,1
parttilewin 2,2
parttilewin 3,3
parttilewin 4,4
parttilewin 5,5
parttilewin 6,6
parttilewin 7,7
inc ecx
inc edi
dec dword[tleftnb]
jnz near %%loopfap
sub edi,8
jmp %%end
%%flipxfullp
mov dword[tleftnb],8
add ecx,7
%%loopfbp
dec dword[ngcpixleft]
jnz %%notzerobp
call Nextwinmode
%%notzerobp
parttilewin 0,0
parttilewin 1,1
parttilewin 2,2
parttilewin 3,3
parttilewin 4,4
parttilewin 5,5
parttilewin 6,6
parttilewin 7,7
dec ecx
inc edi
dec dword[tleftnb]
jnz near %%loopfbp
sub edi,8
jmp %%end
%%flipyfullp
test word[vrama+eax],4000h
jnz near %%flipxyfullp
mov dword[tleftnb],8
%%loopfcp
dec dword[ngcpixleft]
jnz %%notzerocp
call Nextwinmode
%%notzerocp
parttilewin 7,0
parttilewin 6,1
parttilewin 5,2
parttilewin 4,3
parttilewin 3,4
parttilewin 2,5
parttilewin 1,6
parttilewin 0,7
inc ecx
inc edi
dec dword[tleftnb]
jnz near %%loopfcp
sub edi,8
jmp %%end
%%flipxyfullp
mov dword[tleftnb],8
add ecx,7
%%loopfdp
dec dword[ngcpixleft]
jnz %%notzerodp
call Nextwinmode
%%notzerodp
parttilewin 7,0
parttilewin 6,1
parttilewin 5,2
parttilewin 4,3
parttilewin 3,4
parttilewin 2,5
parttilewin 1,6
parttilewin 0,7
dec ecx
inc edi
dec dword[tleftnb]
jnz near %%loopfdp
sub edi,8
jmp %%end
%%skip
processwinpixel
processwinpixel
processwinpixel
processwinpixel
%%end
pop edx
pop ecx
inc cx
test dword[vrama+eax],4000h
jz %%noflipxb
sub cx,2
%%noflipxb
add edi,8
xor dword[switch16x16],1
jnz near %%nexttile
%%ntile
mov ebx,[ng16bbgval]
add ax,2
inc dword[bg1totng+ebx*4]
test eax,03Fh
jz near %%tileadd
%%next
dec byte[tleftn]
jnz near %4
pop ebx
ret
%%done
%5
processwinpixel
processwinpixel
processwinpixel
processwinpixel
processwinpixel
processwinpixel
processwinpixel
processwinpixel
add edi,16
jmp %%ntile
%%docache
call %3
jmp %%returnfromcache
%%tileadd
add ax,[bgtxadd]
jmp %%next
%endmacro
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -