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

📄 newgfx16.mac

📁 linux下的任天堂模拟器代码。供大家参考。
💻 MAC
📖 第 1 页 / 共 5 页
字号:
%%skip%endmacro%macro sprdrawprbwb16bngmsthr 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    and eax,[UnusedBitXor]    mov [edi+ebx*2-%1*2+75036*2],ax    mov [edi+ebx*2-%1*2+75036*6],ax    xor eax,eax%%skip%endmacro%macro sprdrawprawb16bngsthr 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    mov [edi+ebx*2-%1*2+75036*4],ax    cmp byte[ecx+ebx-%1],1    je %%skip    and eax,[UnusedBitXor]    mov [edi+ebx*2-%1*2+75036*2],ax    mov [edi+ebx*2-%1*2+75036*6],ax%%skip    xor eax,eax%endmacro%macro sprdrawprbwb16bngsthr 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    mov [edi+ebx*2-%1*2+75036*4],ax    cmp byte[ecx+ebx-%1],1    je %%skip    and eax,[UnusedBitXor]    mov [edi+ebx*2-%1*2+75036*2],ax    mov [edi+ebx*2-%1*2+75036*6],ax%%skip    xor eax,eax%endmacro%macro sprdrawprawb16bngmthr 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    mov [edi+ebx*2-%1*2+75036*6],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    mov [edi+ebx*2-%1*2+75036*4],ax%%skip    xor eax,eax%endmacro%macro sprdrawprbwb16bngmthr 1    or al,al    jz %%skip    add al,dh    mov ax,[ebp+eax*2]    mov [edi+ebx*2-%1*2+75036*2],ax    mov [edi+ebx*2-%1*2+75036*6],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    mov [edi+ebx*2-%1*2+75036*4],ax%%skip    xor eax,eax%endmacro%macro sprdrawpra16bngnthr 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 sprdrawprb16bngnthr 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*4],ax    xor eax,eax%%skip%endmacro%macro sprdrawprawb16bngnthr 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*4],ax    xor eax,eax%%skip%endmacro%macro sprdrawprbwb16bngnthr 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*4],ax    xor eax,eax%%skip%endmacro%macro sprdrawpra16bngmsnthr 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    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 sprdrawprb16bngmsnthr 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*4],ax    mov [edi+ebx*2-%1*2+75036*2],ax    mov [edi+ebx*2-%1*2+75036*6],ax    xor eax,eax%%skip%endmacro%macro sprdrawprawb16bngmsnthr 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*4],ax    mov [edi+ebx*2-%1*2+75036*2],ax    mov [edi+ebx*2-%1*2+75036*6],ax    xor eax,eax%%skip%endmacro%macro sprdrawprbwb16bngmsnthr 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*4],ax    mov [edi+ebx*2-%1*2+75036*2],ax    mov [edi+ebx*2-%1*2+75036*6],ax    xor eax,eax%%skip%endmacro%macro sprdrawprawb16bngsnthr 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    mov [edi+ebx*2-%1*2+75036*4],ax    cmp byte[ecx+ebx-%1],1    je %%skip    mov [edi+ebx*2-%1*2+75036*2],ax    mov [edi+ebx*2-%1*2+75036*6],ax%%skip    xor eax,eax%endmacro%macro sprdrawprbwb16bngsnthr 1    or al,al    jz %%skip    add al,dh    mov ax,[ebp+eax*2]    mov [edi+ebx*2-%1*2],ax    mov [edi+ebx*2-%1*2+75036*4],ax    cmp byte[ecx+ebx-%1],1    je %%skip    mov [edi+ebx*2-%1*2+75036*2],ax    mov [edi+ebx*2-%1*2+75036*6],ax%%skip    xor eax,eax%endmacro%macro sprdrawprawb16bngmnthr 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    mov [edi+ebx*2-%1*2+75036*6],ax    cmp byte[ecx+ebx-%1],1    je %%skip    mov [edi+ebx*2-%1*2],ax    mov [edi+ebx*2-%1*2+75036*4],ax%%skip    xor eax,eax%endmacro%macro sprdrawprbwb16bngmnthr 1    or al,al    jz %%skip    add al,dh    mov ax,[ebp+eax*2]    mov [edi+ebx*2-%1*2+75036*2],ax    mov [edi+ebx*2-%1*2+75036*6],ax    cmp byte[ecx+ebx-%1],1    je %%skip    mov [edi+ebx*2-%1*2],ax    mov [edi+ebx*2-%1*2+75036*4],ax%%skip    xor eax,eax%endmacro%macro sprdrawpra216bnghr 1    or al,al    jz %%skip    or byte[sprpriodata+ebx-%1+16],dl%%skip%endmacro%macro Procbgpr016b 5    ; Draw BG 2    ; Start line by line drawing/check    mov esi,[vidbuffer]    add esi,16*2;    add esi,16*2+288*2    xor ebx,ebx%%nextline    cmp byte[BGFB+ebx],0    jne %%nogo    %4 %5, %%nogo    ; Check if at a tile alignment    mov ecx,[BG1SYl+ebx*2+%1*512]    and ecx,0FFFFh    add ecx,ebx    test ecx,07h    jz %%tilecheck%%proclinebyline    ; process line by line    push esi    mov eax,[cpalval+ebx*4]    mov [CPalPtrng],eax    call %2    pop esi%%nogo    inc ebx    add esi,288*2    cmp [resolutn],bx    jne %%nextline    jmp %%donextbg%%tilecheck    cmp dword[startlinet],ebx    jae %%proclinebyline    cmp dword[endlinet],ebx    jbe %%proclinebyline    test dword[bgwinchange+ebx],0FFFFFF00h    jnz %%linebyline    test dword[bgwinchange+ebx+4],0FFFFFFFFh    jz %%tilebytile%%linebyline    test dword[winbg1enval+ebx+%1*256],0A0A0A0Ah    jnz %%proclinebyline    test dword[winbg1enval+ebx+%1*256+4],0A0A0A0Ah    jnz %%proclinebyline%%tilebytile    cmp ebx,[reslbyl]    jae %%proclinebyline    test dword[bgallchange+ebx],0FFFFFF00h    jnz %%proclinebyline    test dword[bgallchange+ebx+4],0FFFFFFFFh    jnz near %%proclinebyline    test dword[bg1change+ebx+%1*256],0FFFFFF00h    jnz near %%proclinebyline    test dword[bg1change+ebx+%1*256+4],0FFFFFFFFh    jnz near %%proclinebyline    cmp byte[BGMA+ebx],5    jae near %%proclinebyline    cmp byte[BGMA+ebx],2    je near %%proclinebyline    test byte[mosenng+ebx],1 << %1    jnz %%mosaic%%nomosaic    mov ax,[resolutn]    sub ax,8    cmp bx,ax    jae near %%proclinebyline    push esi    call %3    pop esi    add ebx,8    add esi,288*2*8    cmp [resolutn],bx    ja near %%nextline    jmp %%donextbg%%mosaic    cmp byte[mosszng+ebx],0    je %%nomosaic    jmp %%proclinebyline%%donextbg%endmacro%macro Procbg3pr016b 5    ; Draw BG 2    ; Start line by line drawing/check    mov esi,[vidbuffer]    add esi,16*2;    add esi,16+288    xor ebx,ebx%%nextline    cmp byte[BGFB+ebx],0    jne %%nogo    %4 %5, %%nogo    ; Check if at a tile alignment    mov ecx,[BG1SYl+ebx*2+%1*512]    and ecx,0FFFFh    add ecx,ebx    test ecx,07h    jz %%tilecheck%%proclinebyline    ; process line by line    push esi    mov eax,[cpalval+ebx*4]    mov [CPalPtrng],eax    call %2    pop esi%%nogo    inc ebx    add esi,288*2    cmp [resolutn],bx    jne %%nextline    jmp %%donextbg%%tilecheck    cmp dword[startlinet],ebx    jae %%proclinebyline    cmp dword[endlinet],ebx    jbe %%proclinebyline    test dword[bgwinchange+ebx],0FFFFFF00h    jnz %%linebyline    test dword[bgwinchange+ebx+4],0FFFFFFFFh    jz %%tilebytile%%linebyline    test dword[winbg1enval+ebx+%1*256],0A0A0A0Ah    jnz %%proclinebyline    test dword[winbg1enval+ebx+%1*256+4],0A0A0A0Ah    jnz %%proclinebyline%%tilebytile    cmp ebx,[reslbyl]    jae %%proclinebyline    test dword[bgallchange+ebx],0FFFFFF00h    jnz %%proclinebyline    test dword[bgallchange+ebx+4],0FFFFFFFFh    jnz near %%proclinebyline    test dword[bg1change+ebx+%1*256],0FFFFFF00h    jnz near %%proclinebyline    test dword[bg1change+ebx+%1*256+4],0FFFFFFFFh    jnz near %%proclinebyline    mov eax,[BG3PRI+ebx]    cmp eax,[BG3PRI+ebx+4]    jne near %%proclinebyline    test byte[mosenng+ebx],1 << %1    jnz %%mosaic%%nomosaic    mov ax,[resolutn]    sub ax,8    cmp bx,ax    jae near %%proclinebyline    push esi    call %3    pop esi    add ebx,8    add esi,288*8*2    cmp [resolutn],bx    ja near %%nextline    jmp %%donextbg%%mosaic    cmp byte[mosszng+ebx],0    je %%nomosaic    jmp %%proclinebyline%%donextbg%endmacro%macro Procbgpr116b 6    ; Draw BG    ; Start line by line drawing/check    mov esi,[vidbuffer]    add esi,16*2;    add esi,16*2+288*2    xor ebx,ebx%%nextline    cmp byte[BGFB+ebx],0    jne %%nogo    %5 %6, %%nogo    ; Check if at a tile alignment    cmp byte[%4+ebx],1    je %%tile%%proclinebyline    ; process line by line    push esi    mov eax,[cpalval+ebx*4]    mov [CPalPtrng],eax    call %2    pop esi%%nogo    inc ebx    add esi,288*2    cmp [resolutn],bx    jne %%nextline    jmp %%donextbg%%tile    push esi    mov eax,[cpalval+ebx*4]    mov [CPalPtrng],eax    call %3    pop esi    add ebx,8    add esi,288*2*8    cmp [resolutn],bx    ja near %%nextline%%donextbg%endmacro%macro Procbg3pr116b 6    ; Draw BG 2    ; Start line by line drawing/check    mov esi,[vidbuffer]    add esi,16*2    xor ebx,ebx%%nextline    cmp byte[BGFB+ebx],0    jne near %%nogo    %5 %6, %%nogo    cmp byte[BGMA+ebx],1    jne %%nomode1    cmp byte[BG3PRI+ebx],0    jne %%nogo%%nomode1    ; Check if at a tile alignment    cmp byte[%4+ebx],1    je %%tile%%proclinebyline    ; process line by line    push esi    mov eax,[cpalval+ebx*4]    mov [CPalPtrng],eax    call %2    pop esi%%nogo    inc ebx    add esi,288*2    cmp [resolutn],bx    jne %%nextline    jmp %%donextbg%%tile    push esi    mov eax,[cpalval+ebx*4]    mov [CPalPtrng],eax    call %3    pop esi    add ebx,8    add esi,288*2*8    cmp [resolutn],bx    ja near %%nextline%%donextbg%endmacro%macro Procbg3pr1b16b 6    ; Draw BG 2    ; Start line by line drawing/check    mov esi,[vidbuffer]    add esi,16*2    xor ebx,ebx%%nextline    cmp byte[BGFB+ebx],0    jne near %%nogo    %5 %6, %%nogo    cmp byte[BGMA+ebx],1    jne %%nogo    cmp byte[BG3PRI+ebx],0    je %%nogo    ; Check if at a tile alignment    cmp byte[%4+ebx],1    je %%tile%%proclinebyline    ; process line by line    push esi    mov eax,[cpalval+ebx*4]    mov [CPalPtrng],eax    call %2    pop esi%%nogo    inc ebx    add esi,288*2    cmp [resolutn],bx    jne %%nextline    jmp %%donextbg%%tile    push esi    mov eax,[cpalval+ebx*4]    mov [CPalPtrng],eax    call %3    pop esi    add ebx,8    add esi,288*2*8    cmp [resolutn],bx    ja near %%nextline%%donextbg%endmacro%macro Procsprng16b 2    ; Draw BG 2    ; Start line by line drawing/check    mov esi,[vidbuffer]    add esi,16*2+288*2    mov ebx,1%%nextline    cmp byte[BGFB+ebx],0    jne near %%nogo    %1 %2, %%nogo    xor eax,eax    mov al,[sprtlng+ebx]    mov cl,[sprlefttot+ebx]    mov [csprival],eax    inc byte[sprtlng+ebx]    test byte[sprleftpr+ebx*4+eax],1    jz %%nogo    or cl,cl    jz %%nogo    test byte[SpecialLine+ebx],2    jnz %%hires    push esi    call drawsprng16b    pop esi    jmp %%nogo%%hires    mov cl,[sprlefttot+ebx]    push esi    call drawsprng16bhr    pop esi%%nogo    inc ebx    add esi,288*2    cmp [resolutn],bx    jne near %%nextline%endmacro%macro Procsprng0116b 2    ; Draw BG 2    ; Start line by line drawing/check    mov esi,[vidbuffer]    add esi,16*2+288*2    mov ebx,1%%nextline    cmp byte[BGFB+ebx],0    jne near %%nogo    %1 %2, %%nogo    cmp byte[BGMA+ebx],1    ja %%nogo    xor eax,eax    mov al,[sprtlng+ebx]    mov cl,[sprlefttot+ebx]    mov [csprival],eax    inc byte[sprtlng+ebx]    test byte[sprleftpr+ebx*4+eax],1    jz %%nogo    or cl,cl    jz %%nogo    test byte[SpecialLine+ebx],2    jnz %%hires    push esi    call drawsprng16b    pop esi    jmp %%nogo%%hires    mov cl,[sprlefttot+ebx]    push esi    call drawsprng16bhr    pop esi%%nogo    inc ebx    add esi,288*2    cmp [resolutn],bx    jne near %%nextline%endmacro

⌨️ 快捷键说明

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