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

📄 newgfxwn.mac

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 MAC
📖 第 1 页 / 共 2 页
字号:
    add bl,dl
    mov [edi+288*2],bl
    mov bl,[ecx+8*4]
    add bl,dl
    mov [edi+288*3],bl
    mov bl,[ecx+8*3]
    add bl,dl
    mov [edi+288*4],bl
    mov bl,[ecx+8*2]
    add bl,dl
    mov [edi+288*5],bl
    mov bl,[ecx+8]
    add bl,dl
    mov [edi+288*6],bl
    mov bl,[ecx]
    add bl,dl
    mov [edi+288*7],bl
%%nodrawc
    inc ecx
    inc edi
    dec dword[tleftnb]
    jnz near %%loopfc
    sub edi,8
    jmp %%end
%%flipxyfull
    mov dword[tleftnb],8
    add ecx,7
%%loopfd
    dec dword[ngcpixleft]
    jnz %%notzerod
    call Nextwinmode
%%notzerod
    cmp dword[ngcwinmode],1
    je %%nodrawd
    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]
    add bl,dl
    mov [edi+288*2],bl
    mov bl,[ecx+8*4]
    add bl,dl
    mov [edi+288*3],bl
    mov bl,[ecx+8*3]
    add bl,dl
    mov [edi+288*4],bl
    mov bl,[ecx+8*2]
    add bl,dl
    mov [edi+288*5],bl
    mov bl,[ecx+8]
    add bl,dl
    mov [edi+288*6],bl
    mov bl,[ecx]
    add bl,dl
    mov [edi+288*7],bl
%%nodrawd
    dec ecx
    inc edi
    dec dword[tleftnb]
    jnz near %%loopfd
    sub edi,8
    jmp %%end
%%parttile
    %2
    ; start drawing from ecx
    test dword[vrama+eax],8000h
    jnz near %%flipyfullp
    test dword[vrama+eax],4000h
    jnz near %%flipxfullp
    mov dword[tleftnb],8
%%loopfap
    dec dword[ngcpixleft]
    jnz %%notzerop
    call Nextwinmode
%%notzerop
    parttilewin 0,0
    parttilewin 1,1
    parttilewin 2,2
    parttilewin 3,3
    parttilewin 4,4
    parttilewin 5,5
    parttilewin 6,6
    parttilewin 7,7
    inc ecx
    inc edi
    dec dword[tleftnb]
    jnz near %%loopfap
    sub edi,8
    jmp %%end
%%flipxfullp
    mov dword[tleftnb],8
    add ecx,7
%%loopfbp
    dec dword[ngcpixleft]
    jnz %%notzerobp
    call Nextwinmode
%%notzerobp
    parttilewin 0,0
    parttilewin 1,1
    parttilewin 2,2
    parttilewin 3,3
    parttilewin 4,4
    parttilewin 5,5
    parttilewin 6,6
    parttilewin 7,7
    dec ecx
    inc edi
    dec dword[tleftnb]
    jnz near %%loopfbp
    sub edi,8
    jmp %%end
%%flipyfullp
    test word[vrama+eax],4000h
    jnz near %%flipxyfullp
    mov dword[tleftnb],8
%%loopfcp
    dec dword[ngcpixleft]
    jnz %%notzerocp
    call Nextwinmode
%%notzerocp
    parttilewin 7,0
    parttilewin 6,1
    parttilewin 5,2
    parttilewin 4,3
    parttilewin 3,4
    parttilewin 2,5
    parttilewin 1,6
    parttilewin 0,7
    inc ecx
    inc edi
    dec dword[tleftnb]
    jnz near %%loopfcp
    sub edi,8
    jmp %%end
%%flipxyfullp
    mov dword[tleftnb],8
    add ecx,7
%%loopfdp
    dec dword[ngcpixleft]
    jnz %%notzerodp
    call Nextwinmode
%%notzerodp
    parttilewin 7,0
    parttilewin 6,1
    parttilewin 5,2
    parttilewin 4,3
    parttilewin 3,4
    parttilewin 2,5
    parttilewin 1,6
    parttilewin 0,7
    dec ecx
    inc edi
    dec dword[tleftnb]
    jnz near %%loopfdp
    sub edi,8
    jmp %%end
%5
    processwinpixel
    processwinpixel
    processwinpixel
    processwinpixel
%%end
    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
    ret
%%docache
    call %3
    jmp %%returnfromcache
%%tileadd
    add ax,[bgtxadd]
    jmp %%next
%endmacro

%macro drawtileng16x16win 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
    cmp byte[%1+ecx],2
    je near %%skip
    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]
    add bl,dl
    mov [edi+288*2],bl
    mov bl,[ecx+8*4]
    add bl,dl
    mov [edi+288*3],bl
    mov bl,[ecx+8*3]
    add bl,dl
    mov [edi+288*4],bl
    mov bl,[ecx+8*2]
    add bl,dl
    mov [edi+288*5],bl
    mov bl,[ecx+8]
    add bl,dl
    mov [edi+288*6],bl
    mov bl,[ecx]
    add bl,dl
    mov [edi+288*7],bl
%%nodrawc
    inc ecx
    inc edi
    dec dword[tleftnb]
    jnz near %%loopfc
    sub edi,8
    jmp %%end
%%flipxyfull
    mov dword[tleftnb],8
    add ecx,7
%%loopfd
    dec dword[ngcpixleft]
    jnz %%notzerod
    call Nextwinmode
%%notzerod
    cmp dword[ngcwinmode],1
    je %%nodrawd
    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]
    add bl,dl
    mov [edi+288*2],bl
    mov bl,[ecx+8*4]
    add bl,dl
    mov [edi+288*3],bl
    mov bl,[ecx+8*3]
    add bl,dl
    mov [edi+288*4],bl
    mov bl,[ecx+8*2]
    add bl,dl
    mov [edi+288*5],bl
    mov bl,[ecx+8]
    add bl,dl
    mov [edi+288*6],bl
    mov bl,[ecx]
    add bl,dl
    mov [edi+288*7],bl
%%nodrawd
    dec ecx
    inc edi
    dec dword[tleftnb]
    jnz near %%loopfd
    sub edi,8
    jmp %%end
%%parttile
    %2
    ; start drawing from ecx
    test dword[vrama+eax],8000h
    jnz near %%flipyfullp
    test dword[vrama+eax],4000h
    jnz near %%flipxfullp
    mov dword[tleftnb],8
%%loopfap
    dec dword[ngcpixleft]
    jnz %%notzerop
    call Nextwinmode
%%notzerop
    parttilewin 0,0
    parttilewin 1,1
    parttilewin 2,2
    parttilewin 3,3
    parttilewin 4,4
    parttilewin 5,5
    parttilewin 6,6
    parttilewin 7,7
    inc ecx
    inc edi
    dec dword[tleftnb]
    jnz near %%loopfap
    sub edi,8
    jmp %%end
%%flipxfullp
    mov dword[tleftnb],8
    add ecx,7
%%loopfbp
    dec dword[ngcpixleft]
    jnz %%notzerobp
    call Nextwinmode
%%notzerobp
    parttilewin 0,0
    parttilewin 1,1
    parttilewin 2,2
    parttilewin 3,3
    parttilewin 4,4
    parttilewin 5,5
    parttilewin 6,6
    parttilewin 7,7
    dec ecx
    inc edi
    dec dword[tleftnb]
    jnz near %%loopfbp
    sub edi,8
    jmp %%end
%%flipyfullp
    test word[vrama+eax],4000h
    jnz near %%flipxyfullp
    mov dword[tleftnb],8
%%loopfcp
    dec dword[ngcpixleft]
    jnz %%notzerocp
    call Nextwinmode
%%notzerocp
    parttilewin 7,0
    parttilewin 6,1
    parttilewin 5,2
    parttilewin 4,3
    parttilewin 3,4
    parttilewin 2,5
    parttilewin 1,6
    parttilewin 0,7
    inc ecx
    inc edi
    dec dword[tleftnb]
    jnz near %%loopfcp
    sub edi,8
    jmp %%end
%%flipxyfullp
    mov dword[tleftnb],8
    add ecx,7
%%loopfdp
    dec dword[ngcpixleft]
    jnz %%notzerodp
    call Nextwinmode
%%notzerodp
    parttilewin 7,0
    parttilewin 6,1
    parttilewin 5,2
    parttilewin 4,3
    parttilewin 3,4
    parttilewin 2,5
    parttilewin 1,6
    parttilewin 0,7
    dec ecx
    inc edi
    dec dword[tleftnb]
    jnz near %%loopfdp
    sub edi,8
    jmp %%end
%%skip
    processwinpixel
    processwinpixel
    processwinpixel
    processwinpixel
%%end
    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
    ret
%%done
%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

⌨️ 快捷键说明

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