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

📄 newgfxwn.mac

📁 linux下的任天堂模拟器代码。供大家参考。
💻 MAC
📖 第 1 页 / 共 2 页
字号:
;Copyright (C) 1997-2007 ZSNES Team ( zsKnight, _Demo_, pagefault, Nach );;http://www.zsnes.com;http://sourceforge.net/projects/zsnes;https://zsnes.bountysource.com;;This program is free software; you can redistribute it and/or;modify it under the terms of the GNU General Public License;version 2 as published by the Free Software Foundation.;;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.SECTION .textNextwinmode:    push ebx    mov ebx,[ngcwinptr]    xor dword[ngcwinmode],1    mov ebx,[ebx+4]    add dword[ngcwinptr],4    mov [ngcpixleft],ebx    pop ebx    ret%macro processnextdrawwin 3    dec dword[ngcpixleft]    jnz %%notzero    call Nextwinmode%%notzero    cmp dword[ngcwinmode],1    je %%nodraw    test %1,%3    jz %%nodraw    mov [edi+%2],%1%%nodraw%endmacro%macro processwinpixel 0    dec dword[ngcpixleft]    jnz %%notzero    call Nextwinmode%%notzero    dec dword[ngcpixleft]    jnz %%notzero2    call Nextwinmode%%notzero2%endmacro%macro drawlinengwin 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]    mov edx,[%6+edx*4]    %7    jnz near %%docache%%returnfromcache    %2    ; start drawing from ecx to edi    test word[vrama+eax],8000h    jz %%noflipypart    add ecx,[flipyposng]    jmp %%flipypart%%noflipypart    add ecx,[yposng]%%flipypart    test word[vrama+eax],4000h    jnz near %%flipxpart    mov ebx,[ecx]    add ebx,edx    processnextdrawwin bl,0,%8    processnextdrawwin bh,1,%8    shr ebx,16    processnextdrawwin bl,2,%8    processnextdrawwin bh,3,%8    mov ebx,[ecx+4]    add ebx,edx    processnextdrawwin bl,4,%8    processnextdrawwin bh,5,%8    shr ebx,16    processnextdrawwin bl,6,%8    processnextdrawwin bh,7,%8    jmp .fin%%flipxpart    mov ebx,[ecx+4]    add ebx,edx    rol ebx,16    processnextdrawwin bh,0,%8    processnextdrawwin bl,1,%8    shr ebx,16    processnextdrawwin bh,2,%8    processnextdrawwin bl,3,%8    mov ebx,[ecx]    add ebx,edx    rol ebx,16    processnextdrawwin bh,4,%8    processnextdrawwin bl,5,%8    shr ebx,16    processnextdrawwin bh,6,%8    processnextdrawwin bl,7,%8    jmp .fin%5    processwinpixel    processwinpixel    processwinpixel    processwinpixel.fin    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    cmp byte[curmosaicsz],1    jne near domosaicng    ret%%docache    call %3    jmp %%returnfromcache%%tileadd    add ax,[bgtxadd]    jmp %%next%endmacro%macro drawlineng16x16win 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    %2    ; start drawing from ecx to edi    test word[vrama+eax],8000h    jnz %%flipypart    add ecx,[yposng]    jmp %%noflipypart%%flipypart    add ecx,[flipyposng]%%noflipypart    test word[vrama+eax],4000h    jnz near %%flipxpart    mov ebx,[ecx]    add ebx,edx    processnextdrawwin bl,0,%8    processnextdrawwin bh,1,%8    shr ebx,16    processnextdrawwin bl,2,%8    processnextdrawwin bh,3,%8    mov ebx,[ecx+4]    add ebx,edx    processnextdrawwin bl,4,%8    processnextdrawwin bh,5,%8    shr ebx,16    processnextdrawwin bl,6,%8    processnextdrawwin bh,7,%8    jmp %%done%%flipxpart    mov ebx,[ecx+4]    add ebx,edx    rol ebx,16    processnextdrawwin bh,0,%8    processnextdrawwin bl,1,%8    shr ebx,16    processnextdrawwin bh,2,%8    processnextdrawwin bl,3,%8    mov ebx,[ecx]    add ebx,edx    rol ebx,16    processnextdrawwin bh,4,%8    processnextdrawwin bl,5,%8    shr ebx,16    processnextdrawwin bh,6,%8    processnextdrawwin bl,7,%8%%done    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    cmp byte[curmosaicsz],1    jne near domosaicng    ret%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%macro drawlinengomwin 8    ; tile value : bit 15 = flipy, bit 14 = flipx, bit 13 = priority value    ;              bit 10-12 = palette, 0-9=tile#    mov ebx,[cbgval]    mov dl,ch    inc dword[bg1drwng+ebx*4]    and ecx,3FFh    and edx,1Fh    add ecx,[ngptrdat2]    mov edx,[%6+edx*4]    %7    jnz near %%docache%%returnfromcache    %2    ; start drawing from ecx to edi    test word[vrama+eax],8000h    jnz near %%flipypart    add ecx,[yposng]    jmp %%notflipypart%%flipypart    add ecx,[flipyposng]%%notflipypart    test word[vrama+eax],4000h    jnz near %%flipxpart    mov ebx,[ecx]    add ebx,edx    processnextdrawwin bl,0,%8    processnextdrawwin bh,1,%8    shr ebx,16    processnextdrawwin bl,2,%8    processnextdrawwin bh,3,%8    mov ebx,[ecx+4]    add ebx,edx    processnextdrawwin bl,4,%8    processnextdrawwin bh,5,%8    shr ebx,16    processnextdrawwin bl,6,%8    processnextdrawwin bh,7,%8    jmp %%endokay%%flipxpart    mov ebx,[ecx+4]    add ebx,edx    rol ebx,16    processnextdrawwin bh,0,%8    processnextdrawwin bl,1,%8    shr ebx,16    processnextdrawwin bh,2,%8    processnextdrawwin bl,3,%8    mov ebx,[ecx]    add ebx,edx    rol ebx,16    processnextdrawwin bh,4,%8    processnextdrawwin bl,5,%8    shr ebx,16    processnextdrawwin bh,6,%8    processnextdrawwin bl,7,%8    jmp %%endokay%5    processwinpixel    processwinpixel    processwinpixel    processwinpixel%%endokay    mov ebx,[cbgval]    add word[ofsmmptr],2    inc dword[bg1totng+ebx*4]    add word[ofsmtptr],2    mov ax,[ofsmmptr]    mov ebx,[yposngom]    mov edx,[flipyposngom]    mov [yposng],ebx    mov [flipyposng],edx    add edi,8    test eax,03Fh    jz near %%tileadd%%next    mov ebx,[ofsmcptr]    add ebx,[ofsmcptr2]    mov ecx,[ofsmval]    add dword[ofshvaladd],8    test dword[ebx],ecx    jz .noofsm    mov ebx,[ebx]    mov ax,[ofsmtptr]    and ebx,3FFh    add ebx,[ofsmcyps]    test ebx,100h    jz .noupper    add ax,[ofsmady].noupper    and ebx,0FFh    mov edx,ebx    shr ebx,3    and edx,07h    shl ebx,6    shl edx,3    add ax,bx    mov [yposng],edx    xor edx,38h    mov [flipyposng],edx.noofsm    mov ebx,[ofsmcptr]    add ebx,[ofsmcptr2]    add dword[ofsmcptr2],2    mov ecx,[ofsmval]    and dword[ofsmcptr2],3Fh    test dword[ebx-40h],ecx    jz %%noofsmh    mov ebx,[ebx-40h]    sub ax,[ofsmtptr]    add ax,[ofsmtptrs]    add ebx,[ofshvaladd]    test ebx,100h    jz %%noleft    add ax,[ofsmadx]%%noleft    and ebx,0F8h    shr ebx,2    add ax,bx%%noofsmh    dec byte[tleftn]    jnz near %4%%fin    pop ebx    cmp byte[curmosaicsz],1    jne near domosaicng    ret%%docache    call %3    jmp %%returnfromcache%%tileadd    mov bx,[bgtxadd]    add ax,bx    add [ofsmmptr],bx    add word[ofsmtptr],bx    jmp %%next%endmacro%macro parttilewin 2    cmp dword[ngcwinmode],1    je %%nodraw    mov bl,[ecx+%1*8]    or bl,bl    jz %%nodraw    add bl,dl    mov [edi+%2*288],bl%%nodraw%endmacro%macro drawtilengwin 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]    mov edx,[%6+edx*4]    %7    jnz near %%docache%%returnfromcache    cmp byte[%1+ecx],2    je near %5    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]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -