newg162.mac

来自「linux下的任天堂模拟器代码。供大家参考。」· MAC 代码 · 共 890 行 · 第 1/2 页

MAC
890
字号
;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.; Finish up parttile%macro procpixels16x8 3    mov bl,[esi+%2]    mov cl,[esi+%1]    add bl,dl    add cl,dl    mov bx,[eax+ebx*2]    mov [edi+%3+75036*4],bx    mov bx,[eax+ecx*2]    mov [edi+%3],bx    xor ebx,ebx%endmacro%macro procpixelst16x8 3    mov bl,[esi+%1]    add bl,dl    test bl,%3    jz %%nodraw    mov cx,[eax+ebx*2]    mov [edi+%2],cx%%nodraw%endmacro%macro procpixelstr16x8 3    mov bl,[esi+%2]    mov cl,[esi+%1]    add bl,dl    add cl,dl    mov bx,[eax+ebx*2+512]    mov [edi+%3+75036*4],bx    mov bx,[eax+ecx*2+512]    mov [edi+%3],bx    xor ebx,ebx%endmacro%macro procpixelstt16x8 3    mov bl,[esi+%1]    add bl,dl    test bl,%3    jz %%nodraw    mov cx,[eax+ebx*2+512]    mov [edi+%2],cx%%nodraw%endmacro%macro procpixelsmst16x8 3    mov bl,[esi+%2]    mov cl,[esi+%1]    add bl,dl    add cl,dl    mov bx,[eax+ebx*2+512]    mov [edi+%3+75036*4],bx    and ebx,[UnusedBitXor]    mov [edi+%3+75036*6],bx    mov bx,[eax+ecx*2+512]    mov [edi+%3],bx    and ebx,[UnusedBitXor]    mov [edi+%3+75036*2],bx    xor ebx,ebx%endmacro%macro procpixelstmst16x8 3    mov bl,[esi+%1]    add bl,dl    test bl,%3    jz %%nodraw    mov cx,[eax+ebx*2+512]    mov [edi+%2],cx    and cx,[UnusedBitXor]    mov [edi+%2+75036*2],cx%%nodraw%endmacro%macro procpixelsmsnt16x8 3    mov bl,[esi+%2]    mov cl,[esi+%1]    add bl,dl    add cl,dl    mov bx,[eax+ebx*2]    mov [edi+%3+75036*4],bx    mov [edi+%3+75036*6],bx    mov bx,[eax+ecx*2]    mov [edi+%3],bx    mov [edi+%3+75036*2],bx    xor ebx,ebx%endmacro%macro procpixelstmsnt16x8 3    mov bl,[esi+%1]    add bl,dl    test bl,%3    jz %%nodraw    mov cx,[eax+ebx*2]    mov [edi+%2],cx    mov [edi+%2+75036*2],cx%%nodraw%endmacro%macro procpixels16x8b 3    mov bl,[esi+%2]    add bl,dl    mov cx,[eax+ebx*2]    mov [edi+%3],cx%endmacro%macro procpixelst16x8b 3  %if %2<8    mov bl,[esi+%1]    add bl,dl    test bl,%3    jz %%nodraw    mov cx,[eax+ebx*2]    mov [edi+%2],cx%%nodraw  %endif%endmacro%macro procpixelstr16x8b 3    mov bl,[esi+%2]    add bl,dl    mov cx,[eax+ebx*2+512]    mov [edi+%3],cx%endmacro%macro procpixelstt16x8b 3  %if %2<8    mov bl,[esi+%1]    add bl,dl    test bl,%3    jz %%nodraw    mov cx,[eax+ebx*2+512]    mov [edi+%2],cx%%nodraw  %endif%endmacro%macro procpixelsmst16x8b 3    mov bl,[esi+%2]    add bl,dl    mov cx,[eax+ebx*2+512]    mov [edi+%3],cx    and ecx,[UnusedBitXor]    mov [edi+%3+75036*2],cx%endmacro%macro procpixelstmst16x8b 3  %if %2<8    mov bl,[esi+%1]    add bl,dl    test bl,%3    jz %%nodraw    mov cx,[eax+ebx*2+512]    mov [edi+%2],cx    and cx,[UnusedBitXor]    mov [edi+%2+75036*2],cx%%nodraw  %endif%endmacro%macro procpixelsmsnt16x8b 3    mov bl,[esi+%2]    add bl,dl    mov cx,[eax+ebx*2]    mov [edi+%3],cx    mov [edi+%3+75036*2],cx%endmacro%macro procpixelstmsnt16x8b 3  %if %2<8    mov bl,[esi+%1]    add bl,dl    test bl,%3    jz %%nodraw    mov cx,[eax+ebx*2]    mov [edi+%2],cx    mov [edi+%2+75036*2],cx%%nodraw  %endif%endmacro%macro drawlineng16x816b 10    ; 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]    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 %%done    cmp byte[%1+ecx],0    je near %%parttile    %2    ; start drawing from ecx    test dword[vrama+eax],8000h    jz %%notflipyfull    add ecx,[flipyposng]    jmp %%yesflipyfull%%notflipyfull    add ecx,[yposng]%%yesflipyfull    test dword[vrama+eax],4000h    jnz near %%flipxfull    push eax    mov esi,ecx    xor ecx,ecx    xor ebx,ebx    mov eax,[CPalPtrng]    %9 0,1,0    %9 2,3,2    %9 4,5,4    %9 6,7,6    pop eax    jmp %%done%%flipxfull    push eax    mov esi,ecx    xor ecx,ecx    xor ebx,ebx    mov eax,[CPalPtrng]    %9 7,6,0    %9 5,4,2    %9 3,2,4    %9 1,0,6    pop eax    jmp %%done%%parttile    %2    ; start drawing from ecx to edi    test dword[vrama+eax],8000h    jz %%notflipypart    add ecx,[flipyposng]    jmp %%yesflipypart%%notflipypart    add ecx,[yposng]%%yesflipypart    test word[vrama+eax],4000h    jnz near %%flipxpart    push eax    mov eax,[CPalPtrng]    mov esi,ecx    xor ebx,ebx    %10 0,0,%8    %10 1,0+75036*4,%8    %10 2,2,%8    %10 3,2+75036*4,%8    %10 4,4,%8    %10 5,4+75036*4,%8    %10 6,6,%8    %10 7,6+75036*4,%8    pop eax    jmp %%done%%flipxpart    push eax    mov eax,[CPalPtrng]    mov esi,ecx    xor ebx,ebx    %10 7,0,%8    %10 6,0+75036*4,%8    %10 5,2,%8    %10 4,2+75036*4,%8    %10 3,4,%8    %10 2,4+75036*4,%8    %10 1,6,%8    %10 0,6+75036*4,%8    pop eax%%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,[cbgval]    add ax,2    inc dword[bg1totng+ebx*4]    test eax,03Fh    jz %%tileadd%%next    dec byte[tleftn]    jnz near %4    pop ebx    cmp byte[curmosaicsz],1    jne near domosaicng16b    ret%5    add edi,16    jmp %%ntile%%docache    call %3    jmp %%returnfromcache%%tileadd    add ax,[bgtxadd]    jmp %%next%endmacro%macro drawlinengom216b 9    ; tile value : bit 15 = flipy, bit 14 = flipx, bit 13 = priority value    ;              bit 10-12 = palette, 0-9=tile#    mov dl,ch    inc dword[bg1drwng+%9*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    jz %%notflipyfull    add ecx,[flipyposng]    jmp %%yesflipyfull%%notflipyfull    add ecx,[yposng]%%yesflipyfull    test dword[vrama+eax],4000h    jnz near %%flipxfull    push eax    mov esi,ecx    xor ecx,ecx    xor ebx,ebx    mov eax,[CPalPtrng]    procpixels 0,1,0    procpixels 2,3,4    procpixels 4,5,8    procpixels 6,7,12    pop eax    jmp %5%%flipxfull    push eax    mov esi,ecx    xor ecx,ecx    xor ebx,ebx    mov eax,[CPalPtrng]    procpixels 7,6,0    procpixels 5,4,4    procpixels 3,2,8    procpixels 1,0,12    pop eax    jmp %5%%parttile    %2    ; start drawing from ecx to edi    test dword[vrama+eax],8000h    jz %%notflipypart    add ecx,[flipyposng]    jmp %%yesflipypart%%notflipypart    add ecx,[yposng]%%yesflipypart    test word[vrama+eax],4000h    jnz near %%flipxpart    push eax    mov eax,[CPalPtrng]    mov esi,ecx    xor ebx,ebx    procpixelst 0,0,%8    procpixelst 1,2,%8    procpixelst 2,4,%8    procpixelst 3,6,%8    procpixelst 4,8,%8    procpixelst 5,10,%8    procpixelst 6,12,%8    procpixelst 7,14,%8    pop eax    jmp %5%%flipxpart    push eax    mov eax,[CPalPtrng]    mov esi,ecx    xor ebx,ebx    procpixelst 7,0,%8    procpixelst 6,2,%8    procpixelst 5,4,%8    procpixelst 4,6,%8    procpixelst 3,8,%8    procpixelst 2,10,%8    procpixelst 1,12,%8    procpixelst 0,14,%8    pop eax%5    inc dword[bg1totng+%9*4]    add word[ofsmmptr],2    add word[ofsmtptr],2    mov ax,[ofsmmptr]    mov ebx,[yposngom]    mov edx,[flipyposngom]    mov [yposng],ebx    mov [flipyposng],edx    add edi,16    test eax,03Fh    jz near %%tileadd

⌨️ 快捷键说明

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