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

📄 vidmacro.mac

📁 linux下的任天堂模拟器代码。供大家参考。
💻 MAC
📖 第 1 页 / 共 3 页
字号:
    xor eax,eax    mov ecx,64    mov edi,sprpriodata+16    rep stosd    ret.drawsingle    mov esi,[currentobjptr]    mov edi,[curvidoffset]    mov edx,ecx    and edx,0FFh    xor eax,eax    shl edx,3    sub edx,8    add edx,esi    mov esi,edx    xor ebx,ebx.loopobj2    test byte[esi+7],20h    jnz near .drawspriteflipx2    mov bx,[esi]    push esi    mov ch,[esi+6]    mov esi,[esi+2]    cmp ch,12*16    jae near .transpobj2    sprdrawa16b %4    pop esi    sub esi,8    dec cl    jnz near .loopobj2    ret.transpobj2    sprdrawa16b %2    pop esi    sub esi,8    dec cl    jnz near .loopobj2    ret.drawspriteflipx2    mov bx,[esi]    push esi    mov ch,[esi+6]    mov esi,[esi+2]    cmp ch,12*16    jae near .transpobj2f    sprdrawaf16b %4    pop esi    sub esi,8    dec cl    jnz near .loopobj2    ret.transpobj2f    sprdrawaf16b %2    pop esi    sub esi,8    dec cl    jnz near .loopobj2    ret%endmacro%macro sprdrawpra16bha 1    or eax,eax    jz %%skip    test byte[sprpriodata+ebx-%1+16],cl    jnz %%skip    add al,ch    mov edx,[transpbuf+32+ebx*2-%1*2]    mov eax,[pal16b+eax*4]    cmp dx,0    je %%noadd    and edx,[vesa2_clbit]    and eax,[vesa2_clbit]    add eax,edx    shr eax,1%%noadd    mov [edi+ebx*2-%1*2],ax    or byte[sprpriodata+ebx-%1+16],cl    xor eax,eax%%skip%endmacro%macro sprdrawprb16bha 1    or eax,eax    jz %%skip    add al,ch    mov edx,[transpbuf+32+ebx*2-%1*2]    mov eax,[pal16b+eax*4]    cmp dx,0    je %%noadd    and edx,[vesa2_clbit]    and eax,[vesa2_clbit]    add eax,edx    shr eax,1%%noadd    mov [edi+ebx*2-%1*2],ax    xor eax,eax%%skip%endmacro%macro sprdrawpraw16bha 1    or eax,eax    jz %%skip    test byte[sprpriodata+ebx-%1+16],cl    jnz %%skip    cmp byte[winspdata+ebx-%1+16],0    jne %%skip    add al,ch    mov edx,[transpbuf+32+ebx*2-%1*2]    mov eax,[pal16b+eax*4]    cmp dx,0    je %%noadd    and edx,[vesa2_clbit]    and eax,[vesa2_clbit]    add eax,edx    shr eax,1%%noadd    mov [edi+ebx*2-%1*2],ax    or byte[sprpriodata+ebx-%1+16],cl    xor eax,eax%%skip%endmacro%macro sprdrawprbw16bha 1    or eax,eax    jz %%skip    cmp byte[winspdata+ebx-%1+16],0    jne %%skip    add al,ch    mov edx,[transpbuf+32+ebx*2-%1*2]    mov eax,[pal16b+eax*4]    cmp dx,0    je %%noadd    and edx,[vesa2_clbit]    and eax,[vesa2_clbit]    add eax,edx    shr eax,1%%noadd    mov [edi+ebx*2-%1*2],ax    xor eax,eax%%skip%endmacro%macro sprdrawpra16bfa 1    or eax,eax    jz %%skip    test byte[sprpriodata+ebx-%1+16],cl    jnz %%skip    add al,ch    mov edx,[transpbuf+32+ebx*2-%1*2]    mov eax,[pal16bcl+eax*4]    and edx,[vesa2_clbit]    add edx,eax    shr edx,1    xor eax,eax    mov edx,[fulladdtab+edx*2]    mov [edi+ebx*2-%1*2],dx    or byte[sprpriodata+ebx-%1+16],cl%%skip%endmacro%macro sprdrawprb16bfa 1    or eax,eax    jz %%skip    add al,ch    mov edx,[transpbuf+32+ebx*2-%1*2]    mov eax,[pal16bcl+eax*4]    and edx,[vesa2_clbit]    add edx,eax    shr edx,1    xor eax,eax    mov edx,[fulladdtab+edx*2]    mov [edi+ebx*2-%1*2],dx%%skip%endmacro%macro sprdrawpraw16bfa 1    or eax,eax    jz %%skip    test byte[sprpriodata+ebx-%1+16],cl    jnz %%skip    cmp byte[winspdata+ebx-%1+16],0    jne %%skip    add al,ch    mov edx,[transpbuf+32+ebx*2-%1*2]    mov eax,[pal16bcl+eax*4]    and edx,[vesa2_clbit]    add edx,eax    shr edx,1    xor eax,eax    mov edx,[fulladdtab+edx*2]    mov [edi+ebx*2-%1*2],dx    or byte[sprpriodata+ebx-%1+16],cl%%skip%endmacro%macro sprdrawprbw16bfa 1    or eax,eax    jz %%skip    cmp byte[winspdata+ebx-%1+16],0    jne %%skip    add al,ch    mov edx,[transpbuf+32+ebx*2-%1*2]    mov eax,[pal16bcl+eax*4]    and edx,[vesa2_clbit]    add edx,eax    shr edx,1    xor eax,eax    mov edx,[fulladdtab+edx*2]    mov [edi+ebx*2-%1*2],dx%%skip%endmacro%macro sprdrawpra16bfs 1    or eax,eax    jz %%skip    test byte[sprpriodata+ebx-%1+16],cl    jnz %%skip    add al,ch    mov edx,[transpbuf+32+ebx*2-%1*2]    mov eax,[pal16bxcl+eax*4]    and edx,[vesa2_clbit]    add edx,eax    shr edx,1    xor eax,eax    mov edx,[fulladdtab+edx*2]    xor edx,0FFFFh    mov [edi+ebx*2-%1*2],dx    or byte[sprpriodata+ebx-%1+16],cl%%skip%endmacro%macro sprdrawprb16bfs 1    or eax,eax    jz %%skip    add al,ch    mov edx,[transpbuf+32+ebx*2-%1*2]    mov eax,[pal16bxcl+eax*4]    and edx,[vesa2_clbit]    add edx,eax    shr edx,1    xor eax,eax    mov edx,[fulladdtab+edx*2]    xor edx,0FFFFh    mov [edi+ebx*2-%1*2],dx%%skip%endmacro%macro sprdrawpraw16bfs 1    or eax,eax    jz %%skip    test byte[sprpriodata+ebx-%1+16],cl    jnz %%skip    cmp byte[winspdata+ebx-%1+16],0    jne %%skip    add al,ch    mov edx,[transpbuf+32+ebx*2-%1*2]    mov eax,[pal16bxcl+eax*4]    and edx,[vesa2_clbit]    add edx,eax    shr edx,1    xor eax,eax    mov edx,[fulladdtab+edx*2]    xor edx,0FFFFh    mov [edi+ebx*2-%1*2],dx    or byte[sprpriodata+ebx-%1+16],cl%%skip%endmacro%macro sprdrawprbw16bfs 1    or eax,eax    jz %%skip    cmp byte[winspdata+ebx-%1+16],0    jne %%skip    add al,ch    mov edx,[transpbuf+32+ebx*2-%1*2]    mov eax,[pal16bxcl+eax*4]    and edx,[vesa2_clbit]    add edx,eax    shr edx,1    xor eax,eax    mov edx,[fulladdtab+edx*2]    xor edx,0FFFFh    mov [edi+ebx*2-%1*2],dx%%skip%endmacro;*******************************************************; Processes & Draws 8x8 tiles for both main & sub screen;*******************************************************%macro draw8x816bta 2    mov al,[ebx+%1]    or al,al    jz %%loop    add al,dh    mov ecx,[pal16b+eax*4]    mov [esi+%2],cx    mov [ebp+%2],cx%%loop%endmacro%macro draw8x816btawinon 2    mov al,[ebx+%1]    or al,al    jz %%loop    test byte[ecx+%1],0FFh    jnz %%loop    add al,dh    mov eax,[pal16b+eax*4]    mov [esi+%2],ax    mov [ebp+%2],ax    xor eax,eax%%loop%endmacro%macro draw8x816btawinonb 2    mov al,[ebx+%1]    or al,al    jz %%loop    test byte[ecx+7-%1],0FFh    jnz %%loop    add al,dh    mov eax,[pal16b+eax*4]    mov [esi+%2],ax    mov [ebp+%2],ax    xor eax,eax%%loop%endmacro%macro drawtilegrp 1    cmp dword[ebx],0    je near %%loop    %1 0, 0    %1 1, 2    %1 2, 4    %1 3, 6%%loop    cmp dword[ebx+4],0    je near %%loop2    %1 4, 8    %1 5, 10    %1 6, 12    %1 7, 14%%loop2%endmacro%macro drawtilegrpf 1    cmp dword[ebx+4],0    je near %%loop    %1 7, 0    %1 6, 2    %1 5, 4    %1 4, 6%%loop    cmp dword[ebx],0    je near %%loop2    %1 3, 8    %1 2, 10    %1 1, 12    %1 0, 14%%loop2%endmacro%macro drawtilegrpfull 1    cmp dword[edi],0    je near %%loop    %1 0, 0    %1 1, 2    %1 2, 4    %1 3, 6%%loop    cmp dword[edi+4],0    je near %%loop2    %1 4, 8    %1 5, 10    %1 6, 12    %1 7, 14%%loop2%endmacro%macro drawtilegrpfullf 1    cmp dword[edi+4],0    je near %%loop    %1 7, 0    %1 6, 2    %1 5, 4    %1 4, 6%%loop    cmp dword[edi],0    je near %%loop2    %1 3, 8    %1 2, 10    %1 1, 12    %1 0, 14%%loop2%endmacro;*******************************************************; Processes & Draws 8x8 tiles in 2, 4, & 8 bit mode;*******************************************************%macro draw8x816ta 2    mov al,[ebx+%1]    or al,al    jz %%loop    add al,dh    mov ecx,[ebp+%2]    mov eax,[pal16b+eax*4]    test ecx,0FFFFh    je %%noadd    and eax,1111011111011110b  ; [vesa2_clbit]    and ecx,1111011111011110b  ; [vesa2_clbit]    add eax,ecx    shr eax,1%%noadd    mov [esi+%2],ax    xor eax,eax%%loop%endmacro%macro draw8x816ta2 2    mov al,[edi+%1]    or al,al    jz %%loop    add al,dh    mov ebx,[ebp+%2]    mov ecx,[pal16b+eax*4]    test ebx,0FFFFh    je %%noadd    and ecx,1111011111011110b  ; [vesa2_clbit]    and ebx,1111011111011110b  ; [vesa2_clbit]    add ecx,ebx    shr ecx,1%%noadd    mov [esi+%2],cx%%loop%endmacro%macro draw8x816tb 2    mov al,[edi+%1]    or al,al    jz %%loop    add al,dh    mov ebx,[ebp+%2]    mov ecx,[pal16bcl+eax*4]    and ebx,1111011111011110b  ; [vesa2_clbit]    add ecx,ebx    shr ecx,1    mov ecx,[fulladdtab+ecx*2]    mov [esi+%2],cx%%loop%endmacro%macro draw8x816tc 2    mov al,[edi+%1]    or al,al    jz %%loop    add al,dh    mov ebx,[ebp+%2]    mov ecx,[pal16bxcl+eax*4]    and ebx,1111011111011110b  ; [vesa2_clbit]    add ecx,ebx    shr ecx,1    mov ecx,[fulladdtab+ecx*2]    xor ecx,0FFFFh    mov [esi+%2],cx%%loop%endmacro%macro draw8x816tawinon 2    mov al,[ebx+%1]    or al,al    jz %%loop    test byte[edx+%1],0FFh    jnz %%loop    add al,[coadder16]    mov ecx,[ebp+%2]    mov eax,[pal16b+eax*4]    test ecx,0FFFFh    je %%noadd    and eax,1111011111011110b  ; [vesa2_clbit]    and ecx,1111011111011110b  ; [vesa2_clbit]    add eax,ecx    shr eax,1%%noadd    mov [esi+%2],ax    xor eax,eax%%loop%endmacro%macro draw8x816tbwinon 2    mov al,[edi+%1]    or al,al    jz %%loop    test byte[edx+%1],0FFh    jnz %%loop    add al,[coadder16]    mov ebx,[ebp+%2]    mov ecx,[pal16bcl+eax*4]    and ebx,1111011111011110b  ; [vesa2_clbit]    add ecx,ebx    shr ecx,1    mov ecx,[fulladdtab+ecx*2]    mov [esi+%2],cx%%loop%endmacro%macro draw8x816tcwinon 2    mov al,[edi+%1]    or al,al    jz %%loop    test byte[edx+%1],0FFh    jnz %%loop    add al,[coadder16]    mov ebx,[ebp+%2]    mov ecx,[pal16bxcl+eax*4]    and ebx,1111011111011110b  ; [vesa2_clbit]    add ecx,ebx    shr ecx,1    mov ecx,[fulladdtab+ecx*2]    xor ecx,0FFFFh    mov [esi+%2],cx%%loop%endmacro%macro draw8x816tawinon2 3    mov al,[edi+%1]    or al,al    jz %%loop    test byte[edx+%3],0FFh    jnz %%loop    add al,[coadder16]    mov ecx,[ebp+%2]    mov ebx,[pal16b+eax*4]    test ecx,0FFFFh    je %%noadd    and ebx,1111011111011110b  ; [vesa2_clbit]    and ecx,1111011111011110b  ; [vesa2_clbit]    add ebx,ecx    shr ebx,1%%noadd    mov [esi+%2],bx%%loop%endmacro%macro draw8x816tbwinon2 3    mov al,[edi+%1]    or al,al    jz %%loop    test byte[edx+%3],0FFh    jnz %%loop    add al,[coadder16]    mov ebx,[ebp+%2]    mov ecx,[pal16bcl+eax*4]    and ebx,1111011111011110b  ; [vesa2_clbit]    add ecx,ebx    shr ecx,1    mov ecx,[fulladdtab+ecx*2]    mov [esi+%2],cx%%loop%endmacro%macro draw8x816tcwinon2 3    mov al,[edi+%1]    or al,al    jz %%loop    test byte[edx+%3],0FFh    jnz %%loop    add al,[coadder16]    mov ebx,[ebp+%2]    mov ecx,[pal16bxcl+eax*4]

⌨️ 快捷键说明

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