📄 newgfx16.mac
字号:
;Copyright (C) 1997-2001 ZSNES Team ( zsknight@zsnes.com / _demo_@zsnes.com )
;
;This program is free software; you can redistribute it and/or
;modify it under the terms of the GNU General Public License
;as published by the Free Software Foundation; either
;version 2 of the License, or (at your option) any later
;version.
;
;This program is distributed in the hope that it will be useful,
;but WITHOUT ANY WARRANTY; without even the implied warranty of
;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;GNU General Public License for more details.
;
;You should have received a copy of the GNU General Public License
;along with this program; if not, write to the Free Software
;Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
EXTSYM mode7B, mode7D, processmode7hires16b, processmode7hires16bd
EXTSYM drawmode7ngextbg16b,drawmode7ngextbg216b
EXTSYM osm2dis
; drawtileng16b
%macro ngsub 2
test dword[BGMS1+ebx*2+1],%1
jz near %2
test dword[BGMS1+ebx*2],%1
jnz near %2
test byte[FillSubScr+ebx],1
jnz near %2
%endmacro
%macro ngmain 2
test dword[BGMS1+ebx*2],%1
jnz %%yesmain
test byte[FillSubScr+ebx],1
jz near %2
test dword[BGMS1+ebx*2+1],%1
jz near %2
%%yesmain
%endmacro
%macro sprdrawpra16bng 1
or al,al
jz %%skip
add al,ch
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
xor eax,eax
or byte[sprpriodata+ebx-%1+16],dl
%%skip
%endmacro
%macro sprdrawprb16bng 1
or al,al
jz %%skip
add al,ch
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprawb16bng 1
or al,al
jz %%skip
add al,dh
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
cmp byte[ecx+ebx-%1],1
je %%skip
or byte[sprpriodata+ebx-%1+16],dl
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprbwb16bng 1
or al,al
jz %%skip
add al,dh
cmp byte[ecx+ebx-%1],1
je %%skip
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawpra16bngt 1
or al,al
jz %%skip
add al,ch
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
mov ax,[ebp+eax*2+512]
or byte[sprpriodata+ebx-%1+16],dl
cmp ch,128+64
jae %%yestransp
and eax,[UnusedBitXor]
%%yestransp
mov [edi+ebx*2-%1*2],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprb16bngt 1
or al,al
jz %%skip
add al,ch
mov ax,[ebp+eax*2+512]
cmp ch,128+64
jae %%yestransp
and eax,[UnusedBitXor]
%%yestransp
mov [edi+ebx*2-%1*2],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprawb16bngt 1
or al,al
jz %%skip
add al,dh
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
cmp byte[ecx+ebx-%1],1
je %%skip
or byte[sprpriodata+ebx-%1+16],dl
mov ax,[ebp+eax*2+512]
cmp dh,128+64
jae %%yestransp
and eax,[UnusedBitXor]
%%yestransp
mov [edi+ebx*2-%1*2],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprbwb16bngt 1
or al,al
jz %%skip
add al,dh
cmp byte[ecx+ebx-%1],1
je %%skip
mov ax,[ebp+eax*2+512]
cmp dh,128+64
jae %%yestransp
and eax,[UnusedBitXor]
%%yestransp
mov [edi+ebx*2-%1*2],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawpra16bngmst 1
or al,al
jz %%skip
add al,ch
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
mov ax,[ebp+eax*2+512]
cmp ch,128+64
jae %%yestransp
and eax,[UnusedBitXor]
%%yestransp
mov [edi+ebx*2-%1*2],ax
and eax,[UnusedBitXor]
mov [edi+ebx*2-%1*2+75036*2],ax
xor eax,eax
or byte[sprpriodata+ebx-%1+16],dl
%%skip
%endmacro
%macro sprdrawprb16bngmst 1
or al,al
jz %%skip
add al,ch
mov ax,[ebp+eax*2+512]
cmp ch,128+64
jae %%yestransp
and eax,[UnusedBitXor]
%%yestransp
mov [edi+ebx*2-%1*2],ax
and eax,[UnusedBitXor]
mov [edi+ebx*2-%1*2+75036*2],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprawb16bngmst 1
or al,al
jz %%skip
add al,dh
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
cmp byte[ecx+ebx-%1],1
je %%skip
or byte[sprpriodata+ebx-%1+16],dl
mov ax,[ebp+eax*2+512]
cmp dh,128+64
jae %%yestransp
and eax,[UnusedBitXor]
%%yestransp
mov [edi+ebx*2-%1*2],ax
and eax,[UnusedBitXor]
mov [edi+ebx*2-%1*2+75036*2],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprbwb16bngmst 1
or al,al
jz %%skip
add al,dh
cmp byte[ecx+ebx-%1],1
je %%skip
mov ax,[ebp+eax*2+512]
cmp dh,128+64
jae %%yestransp
and eax,[UnusedBitXor]
%%yestransp
mov [edi+ebx*2-%1*2],ax
and eax,[UnusedBitXor]
mov [edi+ebx*2-%1*2+75036*2],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprawb16bngst 1
or al,al
jz %%skip
add al,dh
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
or byte[sprpriodata+ebx-%1+16],dl
mov ax,[ebp+eax*2+512]
cmp dh,128+64
jae %%yestransp
and eax,[UnusedBitXor]
%%yestransp
mov [edi+ebx*2-%1*2],ax
cmp byte[ecx+ebx-%1],1
je %%skip
and eax,[UnusedBitXor]
mov [edi+ebx*2-%1*2+75036*2],ax
%%skip
xor eax,eax
%endmacro
%macro sprdrawprbwb16bngst 1
or al,al
jz %%skip
add al,dh
mov ax,[ebp+eax*2+512]
cmp dh,128+64
jae %%yestransp
and eax,[UnusedBitXor]
%%yestransp
mov [edi+ebx*2-%1*2],ax
cmp byte[ecx+ebx-%1],1
je %%skip
and eax,[UnusedBitXor]
mov [edi+ebx*2-%1*2+75036*2],ax
%%skip
xor eax,eax
%endmacro
%macro sprdrawprawb16bngmt 1
or al,al
jz %%skip
add al,dh
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
or byte[sprpriodata+ebx-%1+16],dl
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2+75036*2],ax
cmp byte[ecx+ebx-%1],1
je %%skip
cmp dh,128+64
jae %%yestransp
and eax,[UnusedBitXor]
%%yestransp
or ax,[UnusedBit]
mov [edi+ebx*2-%1*2],ax
%%skip
xor eax,eax
%endmacro
%macro sprdrawprbwb16bngmt 1
or al,al
jz %%skip
add al,dh
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2+75036*2],ax
cmp byte[ecx+ebx-%1],1
je %%skip
or ax,[UnusedBit]
cmp dh,128+64
jae %%yestransp
and eax,[UnusedBitXor]
%%yestransp
mov [edi+ebx*2-%1*2],ax
%%skip
xor eax,eax
%endmacro
%macro sprdrawpra16bngnt 1
or al,al
jz %%skip
add al,ch
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
xor eax,eax
or byte[sprpriodata+ebx-%1+16],dl
%%skip
%endmacro
%macro sprdrawprb16bngnt 1
or al,al
jz %%skip
add al,ch
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprawb16bngnt 1
or al,al
jz %%skip
add al,dh
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
or byte[sprpriodata+ebx-%1+16],dl
cmp byte[ecx+ebx-%1],1
je %%skip
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprbwb16bngnt 1
or al,al
jz %%skip
add al,dh
cmp byte[ecx+ebx-%1],1
je %%skip
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawpra16bngmsnt 1
or al,al
jz %%skip
add al,ch
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*2],ax
xor eax,eax
or byte[sprpriodata+ebx-%1+16],dl
%%skip
%endmacro
%macro sprdrawprb16bngmsnt 1
or al,al
jz %%skip
add al,ch
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*2],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprawb16bngmsnt 1
or al,al
jz %%skip
add al,dh
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
or byte[sprpriodata+ebx-%1+16],dl
cmp byte[ecx+ebx-%1],1
je %%skip
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*2],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprbwb16bngmsnt 1
or al,al
jz %%skip
add al,dh
cmp byte[ecx+ebx-%1],1
je %%skip
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*2],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprawb16bngsnt 1
or al,al
jz %%skip
add al,dh
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
or byte[sprpriodata+ebx-%1+16],dl
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
cmp byte[ecx+ebx-%1],1
je %%skip
mov [edi+ebx*2-%1*2+75036*2],ax
%%skip
xor eax,eax
%endmacro
%macro sprdrawprbwb16bngsnt 1
or al,al
jz %%skip
add al,dh
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
cmp byte[ecx+ebx-%1],1
je %%skip
mov [edi+ebx*2-%1*2+75036*2],ax
%%skip
xor eax,eax
%endmacro
%macro sprdrawprawb16bngmnt 1
or al,al
jz %%skip
add al,dh
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
or byte[sprpriodata+ebx-%1+16],dl
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2+75036*2],ax
cmp byte[ecx+ebx-%1],1
je %%skip
mov [edi+ebx*2-%1*2],ax
%%skip
xor eax,eax
%endmacro
%macro sprdrawprbwb16bngmnt 1
or al,al
jz %%skip
add al,dh
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2+75036*2],ax
cmp byte[ecx+ebx-%1],1
je %%skip
mov [edi+ebx*2-%1*2],ax
%%skip
xor eax,eax
%endmacro
%macro sprdrawpra216bng 1
or al,al
jz %%skip
or byte[sprpriodata+ebx-%1+16],dl
%%skip
%endmacro
%macro sprdrawpra16bnghr 1
or al,al
jz %%skip
add al,ch
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
xor eax,eax
or byte[sprpriodata+ebx-%1+16],dl
%%skip
%endmacro
%macro sprdrawprb16bnghr 1
or al,al
jz %%skip
add al,ch
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2+75036*4],ax
mov [edi+ebx*2-%1*2],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprawb16bnghr 1
or al,al
jz %%skip
add al,dh
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
cmp byte[ecx+ebx-%1],1
je %%skip
or byte[sprpriodata+ebx-%1+16],dl
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2+75036*4],ax
mov [edi+ebx*2-%1*2],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprbwb16bnghr 1
or al,al
jz %%skip
add al,dh
cmp byte[ecx+ebx-%1],1
je %%skip
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2+75036*4],ax
mov [edi+ebx*2-%1*2],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawpra16bngthr 1
or al,al
jz %%skip
add al,ch
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
mov ax,[ebp+eax*2+512]
or byte[sprpriodata+ebx-%1+16],dl
cmp ch,128+64
jae %%yestransp
and eax,[UnusedBitXor]
%%yestransp
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprb16bngthr 1
or al,al
jz %%skip
add al,ch
mov ax,[ebp+eax*2+512]
cmp ch,128+64
jae %%yestransp
and eax,[UnusedBitXor]
%%yestransp
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprawb16bngthr 1
or al,al
jz %%skip
add al,dh
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
cmp byte[ecx+ebx-%1],1
je %%skip
or byte[sprpriodata+ebx-%1+16],dl
mov ax,[ebp+eax*2+512]
cmp dh,128+64
jae %%yestransp
and eax,[UnusedBitXor]
%%yestransp
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprbwb16bngthr 1
or al,al
jz %%skip
add al,dh
cmp byte[ecx+ebx-%1],1
je %%skip
mov ax,[ebp+eax*2+512]
cmp dh,128+64
jae %%yestransp
and eax,[UnusedBitXor]
%%yestransp
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawpra16bngmsthr 1
or al,al
jz %%skip
add al,ch
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
mov ax,[ebp+eax*2+512]
cmp ch,128+64
jae %%yestransp
and eax,[UnusedBitXor]
%%yestransp
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
and eax,[UnusedBitXor]
mov [edi+ebx*2-%1*2+75036*2],ax
mov [edi+ebx*2-%1*2+75036*6],ax
xor eax,eax
or byte[sprpriodata+ebx-%1+16],dl
%%skip
%endmacro
%macro sprdrawprb16bngmsthr 1
or al,al
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -