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

📄 newgfx16.asm

📁 linux下的任天堂模拟器代码。供大家参考。
💻 ASM
📖 第 1 页 / 共 5 页
字号:
%macro mosaic3 1    mov [esi+%1],ax    mov [esi+%1+2],ax    mov [esi+%1+4],ax%endmacro%macro mosaic4 1    mov [esi+%1],ax    mov [esi+%1+2],ax    mov [esi+%1+4],ax    mov [esi+%1+6],ax%endmacro%macro mosaic5 1    mov [esi+%1],ax    mov [esi+%1+2],ax    mov [esi+%1+4],ax    mov [esi+%1+6],ax    mov [esi+%1+8],ax%endmacro%macro mosaic6 1    mov [esi+%1],ax    mov [esi+%1+2],ax    mov [esi+%1+4],ax    mov [esi+%1+6],ax    mov [esi+%1+8],ax    mov [esi+%1+10],ax%endmacro%macro mosaic7 1    mov [esi+%1],ax    mov [esi+%1+2],ax    mov [esi+%1+4],ax    mov [esi+%1+6],ax    mov [esi+%1+8],ax    mov [esi+%1+10],ax    mov [esi+%1+12],ax%endmacro%macro mosaic8 1    mov [esi+%1],ax    mov [esi+%1+2],ax    mov [esi+%1+4],ax    mov [esi+%1+6],ax    mov [esi+%1+8],ax    mov [esi+%1+10],ax    mov [esi+%1+12],ax    mov [esi+%1+14],ax%endmacro%macro mosaic9 1    mov [esi+%1],ax    mov [esi+%1+2],ax    mov [esi+%1+4],ax    mov [esi+%1+6],ax    mov [esi+%1+8],ax    mov [esi+%1+10],ax    mov [esi+%1+12],ax    mov [esi+%1+14],ax    mov [esi+%1+16],ax%endmacro%macro mosaic10 1    mov [esi+%1],ax    mov [esi+%1+2],ax    mov [esi+%1+4],ax    mov [esi+%1+6],ax    mov [esi+%1+8],ax    mov [esi+%1+10],ax    mov [esi+%1+12],ax    mov [esi+%1+14],ax    mov [esi+%1+16],ax    mov [esi+%1+18],ax%endmacro%macro mosaic11 1    mov [esi+%1],ax    mov [esi+%1+2],ax    mov [esi+%1+4],ax    mov [esi+%1+6],ax    mov [esi+%1+8],ax    mov [esi+%1+10],ax    mov [esi+%1+12],ax    mov [esi+%1+14],ax    mov [esi+%1+16],ax    mov [esi+%1+18],ax    mov [esi+%1+20],ax%endmacro%macro mosaic12 1    mov [esi+%1],ax    mov [esi+%1+2],ax    mov [esi+%1+4],ax    mov [esi+%1+6],ax    mov [esi+%1+8],ax    mov [esi+%1+10],ax    mov [esi+%1+12],ax    mov [esi+%1+14],ax    mov [esi+%1+16],ax    mov [esi+%1+18],ax    mov [esi+%1+20],ax    mov [esi+%1+22],ax%endmacro%macro mosaic13 1    mov [esi+%1],ax    mov [esi+%1+2],ax    mov [esi+%1+4],ax    mov [esi+%1+6],ax    mov [esi+%1+8],ax    mov [esi+%1+10],ax    mov [esi+%1+12],ax    mov [esi+%1+14],ax    mov [esi+%1+16],ax    mov [esi+%1+18],ax    mov [esi+%1+20],ax    mov [esi+%1+22],ax    mov [esi+%1+24],ax%endmacro%macro mosaic14 1    mov [esi+%1],ax    mov [esi+%1+2],ax    mov [esi+%1+4],ax    mov [esi+%1+6],ax    mov [esi+%1+8],ax    mov [esi+%1+10],ax    mov [esi+%1+12],ax    mov [esi+%1+14],ax    mov [esi+%1+16],ax    mov [esi+%1+18],ax    mov [esi+%1+20],ax    mov [esi+%1+22],ax    mov [esi+%1+24],ax    mov [esi+%1+26],ax%endmacro%macro mosaic15 1    mov [esi+%1],ax    mov [esi+%1+2],ax    mov [esi+%1+4],ax    mov [esi+%1+6],ax    mov [esi+%1+8],ax    mov [esi+%1+10],ax    mov [esi+%1+12],ax    mov [esi+%1+14],ax    mov [esi+%1+16],ax    mov [esi+%1+18],ax    mov [esi+%1+20],ax    mov [esi+%1+22],ax    mov [esi+%1+24],ax    mov [esi+%1+26],ax    mov [esi+%1+28],ax%endmacro%macro mosaic16 1    mov [esi+%1],ax    mov [esi+%1+2],ax    mov [esi+%1+4],ax    mov [esi+%1+6],ax    mov [esi+%1+8],ax    mov [esi+%1+10],ax    mov [esi+%1+12],ax    mov [esi+%1+14],ax    mov [esi+%1+16],ax    mov [esi+%1+18],ax    mov [esi+%1+20],ax    mov [esi+%1+22],ax    mov [esi+%1+24],ax    mov [esi+%1+26],ax    mov [esi+%1+28],ax    mov [esi+%1+30],ax%endmacro%macro mosaicproc 3    mov ecx,%1.next    mov ax,[edi]    cmp ax,0FFFFh    je .nodraw    %2 0    mosender %3%endmacro%macro mosaicproct 3    mov ecx,%1.next    mov ax,[edi]    cmp ax,0FFFFh    je .nodraw    or ax,[UnusedBit]    %2 0    mosender %3%endmacro%macro mosaicprocntms 3    mov ecx,%1.next    mov ax,[edi]    cmp ax,0FFFFh    je near .nodraw    %2 0    %2 75036*2    mosender %3%endmacro%macro mosaicproctms 3    mov ecx,%1.next    mov ax,[edi]    cmp ax,0FFFFh    je near .nodraw    or ax,[UnusedBit]    %2 0    and ax,[UnusedBit]    %2 75036*2    mosender %3%endmacroNEWSYM mosdraw216b    mosaicproc 128,mosaic2,2NEWSYM mosdraw316b    mosaicproc 86,mosaic3,3NEWSYM mosdraw416b    mosaicproc 64,mosaic4,4NEWSYM mosdraw516b    mosaicproc 52,mosaic5,5NEWSYM mosdraw616b    mosaicproc 43,mosaic6,6NEWSYM mosdraw716b    mosaicproc 37,mosaic7,7NEWSYM mosdraw816b    mosaicproc 32,mosaic8,8NEWSYM mosdraw916b    mosaicproc 29,mosaic9,9NEWSYM mosdraw1016b    mosaicproc 26,mosaic10,10NEWSYM mosdraw1116b    mosaicproc 24,mosaic11,11NEWSYM mosdraw1216b    mosaicproc 22,mosaic12,12NEWSYM mosdraw1316b    mosaicproc 20,mosaic13,13NEWSYM mosdraw1416b    mosaicproc 19,mosaic14,14NEWSYM mosdraw1516b    mosaicproc 18,mosaic15,15NEWSYM mosdraw1616b    mosaicproc 16,mosaic16,16NEWSYM mosdraw216bt    mosaicproct 128,mosaic2,2NEWSYM mosdraw316bt    mosaicproct 86,mosaic3,3NEWSYM mosdraw416bt    mosaicproct 64,mosaic4,4NEWSYM mosdraw516bt    mosaicproct 52,mosaic5,5NEWSYM mosdraw616bt    mosaicproct 43,mosaic6,6NEWSYM mosdraw716bt    mosaicproct 37,mosaic7,7NEWSYM mosdraw816bt    mosaicproct 32,mosaic8,8NEWSYM mosdraw916bt    mosaicproct 29,mosaic9,9NEWSYM mosdraw1016bt    mosaicproct 26,mosaic10,10NEWSYM mosdraw1116bt    mosaicproct 24,mosaic11,11NEWSYM mosdraw1216bt    mosaicproct 22,mosaic12,12NEWSYM mosdraw1316bt    mosaicproct 20,mosaic13,13NEWSYM mosdraw1416bt    mosaicproct 19,mosaic14,14NEWSYM mosdraw1516bt    mosaicproct 18,mosaic15,15NEWSYM mosdraw1616bt    mosaicproct 16,mosaic16,16NEWSYM mosdraw216btms    mosaicproctms 128,mosaic2,2NEWSYM mosdraw316btms    mosaicproctms 86,mosaic3,3NEWSYM mosdraw416btms    mosaicproctms 64,mosaic4,4NEWSYM mosdraw516btms    mosaicproctms 52,mosaic5,5NEWSYM mosdraw616btms    mosaicproctms 43,mosaic6,6NEWSYM mosdraw716btms    mosaicproctms 37,mosaic7,7NEWSYM mosdraw816btms    mosaicproctms 32,mosaic8,8NEWSYM mosdraw916btms    mosaicproctms 29,mosaic9,9NEWSYM mosdraw1016btms    mosaicproctms 26,mosaic10,10NEWSYM mosdraw1116btms    mosaicproctms 24,mosaic11,11NEWSYM mosdraw1216btms    mosaicproctms 22,mosaic12,12NEWSYM mosdraw1316btms    mosaicproctms 20,mosaic13,13NEWSYM mosdraw1416btms    mosaicproctms 19,mosaic14,14NEWSYM mosdraw1516btms    mosaicproctms 18,mosaic15,15NEWSYM mosdraw1616btms    mosaicproctms 16,mosaic16,16NEWSYM mosdraw216bntms    mosaicprocntms 128,mosaic2,2NEWSYM mosdraw316bntms    mosaicprocntms 86,mosaic3,3NEWSYM mosdraw416bntms    mosaicprocntms 64,mosaic4,4NEWSYM mosdraw516bntms    mosaicprocntms 52,mosaic5,5NEWSYM mosdraw616bntms    mosaicprocntms 43,mosaic6,6NEWSYM mosdraw716bntms    mosaicprocntms 37,mosaic7,7NEWSYM mosdraw816bntms    mosaicprocntms 32,mosaic8,8NEWSYM mosdraw916bntms    mosaicprocntms 29,mosaic9,9NEWSYM mosdraw1016bntms    mosaicprocntms 26,mosaic10,10NEWSYM mosdraw1116bntms    mosaicprocntms 24,mosaic11,11NEWSYM mosdraw1216bntms    mosaicprocntms 22,mosaic12,12NEWSYM mosdraw1316bntms    mosaicprocntms 20,mosaic13,13NEWSYM mosdraw1416bntms    mosaicprocntms 19,mosaic14,14NEWSYM mosdraw1516bntms    mosaicprocntms 18,mosaic15,15NEWSYM mosdraw1616bntms    mosaicprocntms 16,mosaic16,16NEWSYM drawbg1tile16b    mov byte[prdatb+ebx],1    drawbgtileng16b 0,0    retNEWSYM drawbg2tile16b    mov byte[prdata+ebx],1    drawbgtileng16b 1,1    retNEWSYM drawbg3tile16b    mov byte[prdatc+ebx],1    drawbgtileng16b 2,2    retNEWSYM drawbg4tile16b    mov byte[prdata+ebx],1    drawbgtileng16b 3,3    retNEWSYM drawbg1tilepr116b    drawbgtilengpr116b 0,0    retNEWSYM drawbg2tilepr116b    drawbgtilengpr116b 1,1    retNEWSYM drawbg3tilepr116b    drawbgtilengpr116b 2,2    retNEWSYM drawbg4tilepr116b    drawbgtilengpr116b 3,3    retNEWSYM drawbg1line16b    mov byte[prdatb+ebx],0    drawbglineng16b 0,0NEWSYM drawbg2line16b    mov byte[prdata+ebx],0    drawbglineng16b 1,1NEWSYM drawbg3line16b    mov byte[prdatc+ebx],0    drawbglineng16b 2,2NEWSYM drawbg4line16b    mov byte[prdata+ebx],0    drawbglineng16b 3,3NEWSYM drawbg1linepr116b    drawbglinengpr116b 0,0NEWSYM drawbg2linepr116b    drawbglinengpr116b 1,1NEWSYM drawbg3linepr116b    drawbglinengpr116b 2,2NEWSYM drawbg4linepr116b    drawbglinengpr116b 3,3%macro normalsprng16b 2    test dword[sprleftpr+ebx*4],80000000h    jnz near .drawsingle    push esi    push ebx    add edi,esi    mov esi,[sprtbng+ebx*4]    mov edx,esi    xor ebx,ebx.loopobj    test byte[esi+7],20h    jnz near .drawspriteflipx    mov bx,[esi]    push edx    mov ch,[esi+6]    mov dl,[esi+7]    and edx,03h    cmp edx,[csprival]    jne near .notprio    mov esi,[esi+2]    mov dl,[csprbit]    sprdrawa16b %1    pop edx.nodrawspr    add edx,8    mov esi,edx    dec cl    jnz near .loopobj    rol byte[csprbit],1    cmp byte[csprbit],1    je near .clearcsprmem    pop ebx    pop esi    ret.notprio    mov esi,[esi+2]    mov dl,[csprbit]    sprdrawa sprdrawpra2    pop edx    add edx,8    mov esi,edx    dec cl    jnz near .loopobj    rol byte[csprbit],1    cmp byte[csprbit],1    je near .clearcsprmem    pop ebx    pop esi    ret.drawspriteflipx    mov bx,[esi]    push edx    mov ch,[esi+6]    mov dl,[esi+7]    and edx,03h    cmp edx,[csprival]    jne near .notpriof    mov esi,[esi+2]    mov dl,[csprbit]    sprdrawaf16b %1    pop edx    add edx,8    mov esi,edx    dec cl    jnz near .loopobj    rol byte[csprbit],1    cmp byte[csprbit],1    je near .clearcsprmem.endobj    pop ebx    pop esi    ret.notpriof    mov esi,[esi+2]    mov dl,[csprbit]    sprdrawaf sprdrawpra2    pop edx    add edx,8    mov esi,edx    dec cl    jnz near .loopobj    rol byte[csprbit],1    cmp byte[csprbit],1    je near .clearcsprmem    pop ebx    pop esi    ret.clearcsprmem    xor eax,eax    mov ecx,64    mov edi,sprpriodata+16    rep stosd    pop ebx    pop esi    ret.drawsingle    push esi    push ebx    mov edi,esi    mov esi,[sprtbng+ebx*4]    mov edx,ecx    and edx,0FFh    shl edx,3    sub edx,8    add edx,esi    mov esi,edx    xor ebx,ebx.loopobj2    test byte[esi+7],20h    jnz near .drawspriteflipx2    or byte[esi+4],0        ;this prevents some games from crashing    jz near .exitnow    mov bx,[esi]    mov ch,[esi+6]    mov esi,[esi+2]    sprdrawa16b %2    sub edx,8    mov esi,edx    dec cl    jnz near .loopobj2.exitnow    pop ebx    pop esi    ret.drawspriteflipx2    mov bx,[esi]    mov ch,[esi+6]    mov esi,[esi+2]    sprdrawaf16b %2    sub edx,8    mov esi,edx    dec cl    jnz near .loopobj2    pop ebx    pop esi    ret%endmacro%macro normalwsprng16b 2;    cmp byte[winbg1enval+eax+4*256],0;    je near .skipobjw    xor eax,eax    mov [NGNumSpr],cl    mov ecx,[objclineptr+ebx*4]    add ecx,[ngwinptr]    test dword[sprleftpr+ebx*4],80000000h    jnz near .drawsingle    push esi    push ebx    add edi,esi    mov esi,[sprtbng+ebx*4]    mov edx,esi    xor ebx,ebx.loopobj    test byte[esi+7],20h    jnz near .drawspriteflipx    mov bx,[esi]    push edx    mov dl,[esi+7]    and edx,03h    cmp edx,[csprival]    jne near .notprio    mov dh,[esi+6]    mov esi,[esi+2]    mov dl,[csprbit]    sprdrawa16b %1    pop edx.nodrawspr    add edx,8    mov esi,edx    dec byte[NGNumSpr]    jnz near .loopobj    rol byte[csprbit],1    cmp byte[csprbit],1    je near .clearcsprmem    pop ebx    pop esi    xor ecx,ecx    ret.notprio    mov esi,[esi+2]    mov dl,[csprbit]    sprdrawa sprdrawpra2    pop edx    add edx,8    mov esi,edx    dec byte[NGNumSpr]    jnz near .loopobj    rol byte[csprbit],1    cmp byte[csprbit],1    je near .clearcsprmem    pop ebx    pop esi    xor ecx,ecx    ret.drawspriteflipx    mov bx,[esi]    push edx    mov dl,[esi+7]    and edx,03h    cmp edx,[csprival]    jne near .notpriof    mov dh,[esi+6]    mov esi,[esi+2]    mov dl,[csprbit]    sprdrawaf16b %1    pop edx    add edx,8    mov esi,edx    dec byte[NGNumSpr]    jnz near .loopobj    rol byte[csprbit],1    cmp byte[csprbit],1    je near .clearcsprmem.endobj    pop ebx    pop esi    xor ecx,ecx    ret.notpriof    mov esi,[esi+2]    mov dl,[csprbit]    sprdrawaf sprdrawpra2

⌨️ 快捷键说明

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