newgfx.mac

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

MAC
3,357
字号
    mov [mode7set],bl%endmacro%macro preparet4ba 0    shl cx,5    add ecx,ecx    add ecx,[vcache4b]%endmacro%macro preparet2ba 0    shl cx,4    shl ecx,2    add ecx,[vcache2b]%endmacro%macro preparet8ba 0    shl cx,6    add ecx,[vcache8b]%endmacro%macro test4ba 0    and ecx,2047    test dword[vidmemch4+ecx*2],0FFFFh%endmacro%macro test2ba 0    and ecx,4095    add edx,dword[mode0add]    test dword[vidmemch2+ecx],0FFh%endmacro%macro test8ba 0    and ecx,1023    test dword[vidmemch8+ecx*4],0FFFFFFFFh%endmacro%macro drawtileng 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 ebx,[ecx]    add ebx,edx    mov [edi],ebx    mov ebx,[ecx+4]    add ebx,edx    mov [edi+4],ebx    mov ebx,[ecx+8]    add ebx,edx    mov [edi+288],ebx    mov ebx,[ecx+12]    add ebx,edx    mov [edi+288+4],ebx    mov ebx,[ecx+16]    add ebx,edx    mov [edi+288*2],ebx    mov ebx,[ecx+20]    add ebx,edx    mov [edi+288*2+4],ebx    mov ebx,[ecx+24]    add ebx,edx    mov [edi+288*3],ebx    mov ebx,[ecx+28]    add ebx,edx    mov [edi+288*3+4],ebx    mov ebx,[ecx+32]    add ebx,edx    mov [edi+288*4],ebx    mov ebx,[ecx+36]    add ebx,edx    mov [edi+288*4+4],ebx    mov ebx,[ecx+40]    add ebx,edx    mov [edi+288*5],ebx    mov ebx,[ecx+44]    add ebx,edx    mov [edi+288*5+4],ebx    mov ebx,[ecx+48]    add ebx,edx    mov [edi+288*6],ebx    mov ebx,[ecx+52]    add ebx,edx    mov [edi+288*6+4],ebx    mov ebx,[ecx+56]    add ebx,edx    mov [edi+288*7],ebx    mov ebx,[ecx+60]    add ebx,edx    mov [edi+288*7+4],ebx    jmp %5%%flipxfull    mov ebx,[ecx+4]    bswap ebx    add ebx,edx    mov [edi],ebx    mov ebx,[ecx]    bswap ebx    add ebx,edx    mov [edi+4],ebx    mov ebx,[ecx+12]    bswap ebx    add ebx,edx    mov [edi+288],ebx    mov ebx,[ecx+8]    bswap ebx    add ebx,edx    mov [edi+288+4],ebx    mov ebx,[ecx+20]    bswap ebx    add ebx,edx    mov [edi+288*2],ebx    mov ebx,[ecx+16]    bswap ebx    add ebx,edx    mov [edi+288*2+4],ebx    mov ebx,[ecx+28]    bswap ebx    add ebx,edx    mov [edi+288*3],ebx    mov ebx,[ecx+24]    bswap ebx    add ebx,edx    mov [edi+288*3+4],ebx    mov ebx,[ecx+36]    bswap ebx    add ebx,edx    mov [edi+288*4],ebx    mov ebx,[ecx+32]    bswap ebx    add ebx,edx    mov [edi+288*4+4],ebx    mov ebx,[ecx+44]    bswap ebx    add ebx,edx    mov [edi+288*5],ebx    mov ebx,[ecx+40]    bswap ebx    add ebx,edx    mov [edi+288*5+4],ebx    mov ebx,[ecx+52]    bswap ebx    add ebx,edx    mov [edi+288*6],ebx    mov ebx,[ecx+48]    bswap ebx    add ebx,edx    mov [edi+288*6+4],ebx    mov ebx,[ecx+60]    bswap ebx    add ebx,edx    mov [edi+288*7],ebx    mov ebx,[ecx+56]    bswap ebx    add ebx,edx    mov [edi+288*7+4],ebx    jmp %5%%flipyfull    test word[vrama+eax],4000h    jnz near %%flipxyfull    mov ebx,[ecx]    add ebx,edx    mov [edi+288*7],ebx    mov ebx,[ecx+4]    add ebx,edx    mov [edi+288*7+4],ebx    mov ebx,[ecx+8]    add ebx,edx    mov [edi+288*6],ebx    mov ebx,[ecx+12]    add ebx,edx    mov [edi+288*6+4],ebx    mov ebx,[ecx+16]    add ebx,edx    mov [edi+288*5],ebx    mov ebx,[ecx+20]    add ebx,edx    mov [edi+288*5+4],ebx    mov ebx,[ecx+24]    add ebx,edx    mov [edi+288*4],ebx    mov ebx,[ecx+28]    add ebx,edx    mov [edi+288*4+4],ebx    mov ebx,[ecx+32]    add ebx,edx    mov [edi+288*3],ebx    mov ebx,[ecx+36]    add ebx,edx    mov [edi+288*3+4],ebx    mov ebx,[ecx+40]    add ebx,edx    mov [edi+288*2],ebx    mov ebx,[ecx+44]    add ebx,edx    mov [edi+288*2+4],ebx    mov ebx,[ecx+48]    add ebx,edx    mov [edi+288],ebx    mov ebx,[ecx+52]    add ebx,edx    mov [edi+288+4],ebx    mov ebx,[ecx+56]    add ebx,edx    mov [edi],ebx    mov ebx,[ecx+60]    add ebx,edx    mov [edi+4],ebx    jmp %5%%flipxyfull    mov ebx,[ecx+4]    bswap ebx    add ebx,edx    mov [edi+288*7],ebx    mov ebx,[ecx]    bswap ebx    add ebx,edx    mov [edi+288*7+4],ebx    mov ebx,[ecx+12]    bswap ebx    add ebx,edx    mov [edi+288*6],ebx    mov ebx,[ecx+8]    bswap ebx    add ebx,edx    mov [edi+288*6+4],ebx    mov ebx,[ecx+20]    bswap ebx    add ebx,edx    mov [edi+288*5],ebx    mov ebx,[ecx+16]    bswap ebx    add ebx,edx    mov [edi+288*5+4],ebx    mov ebx,[ecx+28]    bswap ebx    add ebx,edx    mov [edi+288*4],ebx    mov ebx,[ecx+24]    bswap ebx    add ebx,edx    mov [edi+288*4+4],ebx    mov ebx,[ecx+36]    bswap ebx    add ebx,edx    mov [edi+288*3],ebx    mov ebx,[ecx+32]    bswap ebx    add ebx,edx    mov [edi+288*3+4],ebx    mov ebx,[ecx+44]    bswap ebx    add ebx,edx    mov [edi+288*2],ebx    mov ebx,[ecx+40]    bswap ebx    add ebx,edx    mov [edi+288*2+4],ebx    mov ebx,[ecx+52]    bswap ebx    add ebx,edx    mov [edi+288],ebx    mov ebx,[ecx+48]    bswap ebx    add ebx,edx    mov [edi+288+4],ebx    mov ebx,[ecx+60]    bswap ebx    add ebx,edx    mov [edi],ebx    mov ebx,[ecx+56]    bswap ebx    add ebx,edx    mov [edi+4],ebx    jmp %5%%parttile    %2    ; start drawing from ecx to edi    test word[vrama+eax],8000h    jnz near %%flipypart    test word[vrama+eax],4000h    jnz near %%flipxpart    mov dword[tleftnb],8%%nextb    mov ebx,[ecx]    or ebx,ebx    jz %%drawd    add ebx,edx    test bl,%8    jz %%drawa    mov [edi],bl%%drawa    test bh,%8    jz %%drawb    mov [edi+1],bh%%drawb    shr ebx,16    test bl,%8    jz %%drawc    mov [edi+2],bl%%drawc    test bh,%8    jz %%drawd    mov [edi+3],bh%%drawd    mov ebx,[ecx+4]    or ebx,ebx    jz %%drawd2    add ebx,edx    test bl,%8    jz %%drawa2    mov [edi+4],bl%%drawa2    test bh,%8    jz %%drawb2    mov [edi+5],bh%%drawb2    shr ebx,16    test bl,%8    jz %%drawc2    mov [edi+6],bl%%drawc2    test bh,%8    jz %%drawd2    mov [edi+7],bh%%drawd2    add ecx,8    add edi,288    dec dword[tleftnb]    jnz %%nextb    sub edi,288*8    jmp %5%%flipxpart    mov dword[tleftnb],8%%nextbf    mov ebx,[ecx]    or ebx,ebx    jz %%drawdf    add ebx,edx    test bl,%8    jz %%drawaf    mov [edi+7],bl%%drawaf    test bh,%8    jz %%drawbf    mov [edi+6],bh%%drawbf    shr ebx,16    test bl,%8    jz %%drawcf    mov [edi+5],bl%%drawcf    test bh,%8    jz %%drawdf    mov [edi+4],bh%%drawdf    mov ebx,[ecx+4]    or ebx,ebx    jz %%drawd2f    add ebx,edx    test bl,%8    jz %%drawa2f    mov [edi+3],bl%%drawa2f    test bh,%8    jz %%drawb2f    mov [edi+2],bh%%drawb2f    shr ebx,16    test bl,%8    jz %%drawc2f    mov [edi+1],bl%%drawc2f    test bh,%8    jz %%drawd2f    mov [edi],bh%%drawd2f    add ecx,8    add edi,288    dec dword[tleftnb]    jnz %%nextbf    sub edi,288*8    jmp %5%%flipypart    add edi,288*7    test word[vrama+eax],4000h    jnz near %%flipxypart    mov dword[tleftnb],8%%nextbm    mov ebx,[ecx]    or ebx,ebx    jz %%drawdm    add ebx,edx    test bl,%8    jz %%drawam    mov [edi],bl%%drawam    test bh,%8    jz %%drawbm    mov [edi+1],bh%%drawbm    shr ebx,16    test bl,%8    jz %%drawcm    mov [edi+2],bl%%drawcm    test bh,%8    jz %%drawdm    mov [edi+3],bh%%drawdm    mov ebx,[ecx+4]    or ebx,ebx    jz %%drawd2m    add ebx,edx    test bl,%8    jz %%drawa2m    mov [edi+4],bl%%drawa2m    test bh,%8    jz %%drawb2m    mov [edi+5],bh%%drawb2m    shr ebx,16    test bl,%8    jz %%drawc2m    mov [edi+6],bl%%drawc2m    test bh,%8    jz %%drawd2m    mov [edi+7],bh%%drawd2m    add ecx,8    sub edi,288    dec dword[tleftnb]    jnz %%nextbm    add edi,288    jmp %5%%flipxypart    mov dword[tleftnb],8%%nextbfm    mov ebx,[ecx]    or ebx,ebx    jz %%drawdfm    add ebx,edx    test bl,%8    jz %%drawafm    mov [edi+7],bl%%drawafm    test bh,%8    jz %%drawbfm    mov [edi+6],bh%%drawbfm    shr ebx,16    test bl,%8    jz %%drawcfm    mov [edi+5],bl%%drawcfm    test bh,%8    jz %%drawdfm    mov [edi+4],bh%%drawdfm    mov ebx,[ecx+4]    or ebx,ebx    jz %%drawd2fm    add ebx,edx    test bl,%8    jz %%drawa2fm    mov [edi+3],bl%%drawa2fm    test bh,%8    jz %%drawb2fm    mov [edi+2],bh%%drawb2fm    shr ebx,16    test bl,%8    jz %%drawc2fm    mov [edi+1],bl%%drawc2fm    test bh,%8    jz %%drawd2fm    mov [edi],bh%%drawd2fm    add ecx,8    sub edi,288    dec dword[tleftnb]    jnz %%nextbfm    add edi,288%5    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 drawtileng16x16 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 %%done    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    push eax    mov ebx,[ecx]    mov eax,[ecx+4]    add ebx,edx    add eax,edx    mov [edi],ebx    mov [edi+4],eax    mov ebx,[ecx+8]    mov eax,[ecx+12]    add ebx,edx    add eax,edx    mov [edi+288],ebx    mov [edi+288+4],eax    mov ebx,[ecx+16]    mov eax,[ecx+20]    add ebx,edx    add eax,edx    mov [edi+288*2],ebx    mov [edi+288*2+4],eax    mov ebx,[ecx+24]    mov eax,[ecx+28]    add ebx,edx    add eax,edx    mov [edi+288*3],ebx    mov [edi+288*3+4],eax    mov ebx,[ecx+32]    mov eax,[ecx+36]    add ebx,edx    add eax,edx    mov [edi+288*4],ebx    mov [edi+288*4+4],eax    mov ebx,[ecx+40]    mov eax,[ecx+44]    add ebx,edx    add eax,edx    mov [edi+288*5],ebx    mov [edi+288*5+4],eax    mov ebx,[ecx+48]    mov eax,[ecx+52]    add ebx,edx    add eax,edx    mov [edi+288*6],ebx    mov [edi+288*6+4],eax    mov ebx,[ecx+56]    mov eax,[ecx+60]    add ebx,edx    add eax,edx    mov [edi+288*7],ebx    mov [edi+288*7+4],eax    pop eax    jmp %%done%%flipxfull    push eax    mov ebx,[ecx+4]    mov eax,[ecx]    bswap ebx    bswap eax    add ebx,edx    add eax,edx    mov [edi],ebx    mov [edi+4],eax    mov ebx,[ecx+12]    mov eax,[ecx+8]    bswap ebx    bswap eax    add ebx,edx    add eax,edx    mov [edi+288],ebx    mov [edi+288+4],eax    mov ebx,[ecx+20]    mov eax,[ecx+16]    bswap ebx    bswap eax    add ebx,edx    add eax,edx    mov [edi+288*2],ebx    mov [edi+288*2+4],eax    mov ebx,[ecx+28]    mov eax,[ecx+24]    bswap ebx    bswap eax    add ebx,edx    add eax,edx    mov [edi+288*3],ebx    mov [edi+288*3+4],eax    mov ebx,[ecx+36]    mov eax,[ecx+32]    bswap ebx    bswap eax    add ebx,edx    add eax,edx    mov [edi+288*4],ebx    mov [edi+288*4+4],eax    mov ebx,[ecx+44]    mov eax,[ecx+40]    bswap ebx    bswap eax    add ebx,edx    add eax,edx    mov [edi+288*5],ebx    mov [edi+288*5+4],eax    mov ebx,[ecx+52]    mov eax,[ecx+48]    bswap ebx    bswap eax    add ebx,edx    add eax,edx    mov [edi+288*6],ebx    mov [edi+288*6+4],eax    mov ebx,[ecx+60]    mov eax,[ecx+56]    bswap ebx    bswap eax

⌨️ 快捷键说明

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