⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newgfx16.mac

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 MAC
📖 第 1 页 / 共 5 页
字号:
;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 + -