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

📄 makev16b.asm

📁 linux下的任天堂模拟器代码。供大家参考。
💻 ASM
📖 第 1 页 / 共 5 页
字号:
    xor dh,[curbgpr]    test dh,20h    jnz near .hprior    inc byte[drawn]    and eax,03FFh                ; filter out tile #    mov ebx,[tempcach]    shl eax,6    add ebx,eax    cmp ebx,[bgofwptr]    jb .noclip    sub ebx,[bgsubby].noclip    test dh,80h    jz .normadd    add ebx,[yrevadder]    jmp .skipadd.normadd    add ebx,[yadder].skipadd    test dh,40h    jnz near .rloop    ; Begin Normal Loop    mov cl,[bshifter]    and dh,1Ch    shl dh,cl                    ; process palette # (bits 10-12)    add dh,[bgcoloradder]    xor eax,eax    ; Start loop    cmp dword[ebx],0    je .loopd4    Draw8x816bwinmacro 0    Draw8x816bwinmacro 1    Draw8x816bwinmacro 2    Draw8x816bwinmacro 3.loopd4    cmp dword[ebx+4],0    je .loopd8    Draw8x816bwinmacro 4    Draw8x816bwinmacro 5    Draw8x816bwinmacro 6    Draw8x816bwinmacro 7.loopd8.hprior    add esi,16    add ebp,8    inc dl    cmp dl,20h    jne .loopc2    mov edi,[temptile].loopc2    dec byte[tileleft16b]    jnz near .loopa    cmp byte[drawn],0    je .nodraw    mov dh,[curmosaicsz]    cmp dh,1    jne near domosaic16b.nodraw    ret    ; reversed loop.rloop    mov cl,[bshifter]    and dh,1Ch    shl dh,cl                    ; process palette # (bits 10-12)    add dh,[bgcoloradder]    xor eax,eax    cmp dword[ebx+4],0    je .loopd4b    Draw8x816bwinflipmacro 0    Draw8x816bwinflipmacro 1    Draw8x816bwinflipmacro 2    Draw8x816bwinflipmacro 3.loopd4b    cmp dword[ebx],0    je .loopd8b    Draw8x816bwinflipmacro 4    Draw8x816bwinflipmacro 5    Draw8x816bwinflipmacro 6    Draw8x816bwinflipmacro 7.loopd8b    add esi,16    add ebp,8    inc dl    cmp dl,20h    jne .loopc    mov edi,[temptile].loopc    dec byte[tileleft16b]    jnz near .loopa    cmp byte[drawn],0    je .nodraw2    mov dh,[curmosaicsz]    cmp dh,1    jne near domosaic16b.nodraw2    retNEWSYM draw16x816    push eax    xor eax,eax    mov al,[curypos]    mov byte[hirestiledat+eax],1    pop eax    mov [temp],al    mov [bshifter],ah    mov eax,esi    mov [yadder],ecx    mov [tempcach],ebx    mov ebx,56    sub ebx,ecx    mov [yrevadder],ebx    ; esi = pointer to video buffer    mov esi,[cwinptr]    sub esi,eax    mov [winptrref],esi    mov esi,[curvidoffset]    sub esi,eax           ; esi = [vidbuffer] + curypos * 288 + 16 - HOfs    sub esi,eax    cmp byte[curmosaicsz],1    je .nomosaic    mov esi,xtravbuf+32    mov ecx,128.clearnext    mov dword[esi],0    add esi,4    dec ecx    jnz .clearnext    mov esi,xtravbuf+32    sub esi,eax    sub esi,eax.nomosaic    mov [temptile],edx    push ecx    mov dword[bgsubby],262144    mov ecx,[vcache2b]    add ecx,262144    mov [bgofwptr],ecx    cmp dword[tempcach],ecx    jb .nobit    mov dword[bgsubby],131072    mov ecx,[vcache4b]    add ecx,131072    mov [bgofwptr],ecx    cmp dword[tempcach],ecx    jb .nobit    mov ecx,[vcache8b]    add ecx,65536    mov [bgofwptr],ecx    mov dword[bgsubby],65536.nobit    pop ecx; tile value : bit 15 = flipy, bit 14 = flipx, bit 13 = priority value;              bit 10-12 = palette, 0-9=tile#    cmp byte[curmosaicsz],1    jne .domosaic    cmp byte[winon],0    jne near draw16x816bwinon.domosaic    cmp byte[res512switch],0    jne near draw16x816b    mov byte[tileleft16b],33    mov byte[drawn],0    mov dl,[temp].loopa    mov ax,[edi]    mov dh,ah    add edi,2    xor dh,[curbgpr]    test dh,20h    jnz near .hprior    inc byte[drawn]    and eax,03FFh                ; filter out tile #    mov ebx,[tempcach]    shl eax,6    add ebx,eax    cmp ebx,[bgofwptr]    jb .noclip    sub ebx,[bgsubby].noclip    test dh,80h    jz .normadd    add ebx,[yrevadder]    jmp .skipadd.normadd    add ebx,[yadder].skipadd    test dh,40h    jnz near .rloop    ; Begin Normal Loop    mov cl,[bshifter]    and dh,1Ch    shl dh,cl                    ; process palette # (bits 10-12)    add dh,[bgcoloradder]    xor eax,eax    ; Start loop    drawpixel16b8x8 0, .loopd1, 0    drawpixel16b8x8 2, .loopd3, 2    drawpixel16b8x8 4, .loopd5, 4    drawpixel16b8x8 6, .loopd7, 6    add ebx,64    ; Start loop    drawpixel16b8x8 0, .loopd1c, 8    drawpixel16b8x8 2, .loopd3c, 10    drawpixel16b8x8 4, .loopd5c, 12    drawpixel16b8x8 6, .loopd7c, 14.hprior    add esi,16    inc dl    cmp dl,20h    jne .loopc2    mov edi,[temptile].loopc2    dec byte[tileleft16b]    jnz near .loopa    cmp byte[drawn],0    je .nodraw    mov dh,[curmosaicsz]    cmp dh,1    jne near domosaic16b.nodraw    ret    ; reversed loop.rloop    ; Begin Normal Loop    mov cl,[bshifter]    and dh,1Ch    shl dh,cl                    ; process palette # (bits 10-12)    add dh,[bgcoloradder]    xor eax,eax    ; Start loop    drawpixel16b8x8 1, .loopd1b, 14    drawpixel16b8x8 3, .loopd3b, 12    drawpixel16b8x8 5, .loopd5b, 10    drawpixel16b8x8 7, .loopd7b, 8    add ebx,64    ; Start loop    drawpixel16b8x8 1, .loopd1d, 6    drawpixel16b8x8 3, .loopd3d, 4    drawpixel16b8x8 5, .loopd5d, 2    drawpixel16b8x8 7, .loopd7d, 0    add esi,16    inc dl    cmp dl,20h    jne .loopc    mov edi,[temptile].loopc    dec byte[tileleft16b]    jnz near .loopa    cmp byte[drawn],0    je .nodraw2    mov dh,[curmosaicsz]    cmp dh,1    jne near domosaic16b.nodraw2    retNEWSYM draw16x816b    mov byte[tileleft16b],33    mov byte[drawn],0    mov dl,[temp].loopa    mov ax,[edi]    mov dh,ah    add edi,2    xor dh,[curbgpr]    test dh,20h    jnz near .hprior    inc byte[drawn]    and eax,03FFh                ; filter out tile #    mov ebx,[tempcach]    shl eax,6    add ebx,eax    cmp ebx,[bgofwptr]    jb .noclip    sub ebx,[bgsubby].noclip    test dh,80h    jz .normadd    add ebx,[yrevadder]    jmp .skipadd.normadd    add ebx,[yadder].skipadd    test dh,40h    jnz near .rloop    ; Begin Normal Loop    mov cl,[bshifter]    and dh,1Ch    shl dh,cl                    ; process palette # (bits 10-12)    add dh,[bgcoloradder]    xor eax,eax    ; Start loop    drawpixel16b8x8 1, .loopd1, 0    drawpixel16b8x8 3, .loopd3, 2    drawpixel16b8x8 5, .loopd5, 4    drawpixel16b8x8 7, .loopd7, 6    add ebx,64    ; Start loop    drawpixel16b8x8 1, .loopd1c, 8    drawpixel16b8x8 3, .loopd3c, 10    drawpixel16b8x8 5, .loopd5c, 12    drawpixel16b8x8 7, .loopd7c, 14.hprior    add esi,16    inc dl    cmp dl,20h    jne .loopc2    mov edi,[temptile].loopc2    dec byte[tileleft16b]    jnz near .loopa    cmp byte[drawn],0    je .nodraw    mov dh,[curmosaicsz]    cmp dh,1    jne near domosaic16b.nodraw    ret    ; reversed loop.rloop    ; Begin Normal Loop    mov cl,[bshifter]    and dh,1Ch    shl dh,cl                    ; process palette # (bits 10-12)    add dh,[bgcoloradder]    xor eax,eax    ; Start loop    drawpixel16b8x8 0, .loopd1b, 14    drawpixel16b8x8 2, .loopd3b, 12    drawpixel16b8x8 4, .loopd5b, 10    drawpixel16b8x8 6, .loopd7b, 8    add ebx,64    ; Start loop    drawpixel16b8x8 0, .loopd1d, 6    drawpixel16b8x8 2, .loopd3d, 4    drawpixel16b8x8 4, .loopd5d, 2    drawpixel16b8x8 6, .loopd7d, 0    add esi,16    inc dl    cmp dl,20h    jne .loopc    mov edi,[temptile].loopc    dec byte[tileleft16b]    jnz near .loopa    cmp byte[drawn],0    je .nodraw2    mov dh,[curmosaicsz]    cmp dh,1    jne near domosaic16b.nodraw2    retNEWSYM draw16x816bwinon    cmp byte[res512switch],0    jne near draw16x816winonb    mov ebp,[winptrref]    mov byte[tileleft16b],33    mov byte[drawn],0    mov dl,[temp].loopa    mov ax,[edi]    mov dh,ah    add edi,2    xor dh,[curbgpr]    test dh,20h    jnz near .hprior    inc byte[drawn]    and eax,03FFh                ; filter out tile #    mov ebx,[tempcach]    shl eax,6    add ebx,eax    cmp ebx,[bgofwptr]    jb .noclip    sub ebx,[bgsubby].noclip    test dh,80h    jz .normadd    add ebx,[yrevadder]    jmp .skipadd.normadd    add ebx,[yadder].skipadd    test dh,40h    jnz near .rloop    ; Begin Normal Loop    mov cl,[bshifter]    and dh,1Ch    shl dh,cl                    ; process palette # (bits 10-12)    add dh,[bgcoloradder]    xor eax,eax    ; Start loop    drawpixel16b8x8winon 0, .loopd1, 0, 0    drawpixel16b8x8winon 2, .loopd3, 2, 1    drawpixel16b8x8winon 4, .loopd5, 4, 2    drawpixel16b8x8winon 6, .loopd7, 6, 3    add ebx,64    ; Start loop    drawpixel16b8x8winon 0, .loopd1c, 8, 4    drawpixel16b8x8winon 2, .loopd3c, 10, 5    drawpixel16b8x8winon 4, .loopd5c, 12, 6    drawpixel16b8x8winon 6, .loopd7c, 14, 7.hprior    add esi,16    add ebp,8    inc dl    cmp dl,20h    jne .loopc2    mov edi,[temptile].loopc2    dec byte[tileleft16b]    jnz near .loopa    cmp byte[drawn],0    je .nodraw    mov dh,[curmosaicsz]    cmp dh,1    jne near domosaic16b.nodraw    ret    ; reversed loop.rloop    ; Begin Normal Loop    mov cl,[bshifter]    and dh,1Ch    shl dh,cl                    ; process palette # (bits 10-12)    add dh,[bgcoloradder]    xor eax,eax    ; Start loop    drawpixel16b8x8winon 1, .loopd1b, 14, 0    drawpixel16b8x8winon 3, .loopd3b, 12, 1    drawpixel16b8x8winon 5, .loopd5b, 10, 2    drawpixel16b8x8winon 7, .loopd7b, 8, 3    add ebx,64    ; Start loop    drawpixel16b8x8winon 1, .loopd1d, 6, 4    drawpixel16b8x8winon 3, .loopd3d, 4, 5    drawpixel16b8x8winon 5, .loopd5d, 2, 6    drawpixel16b8x8winon 7, .loopd7d, 0, 7    add esi,16    add ebp,8    inc dl    cmp dl,20h    jne .loopc    mov edi,[temptile].loopc    dec byte[tileleft16b]    jnz near .loopa    cmp byte[drawn],0    je .nodraw2    mov dh,[curmosaicsz]    cmp dh,1    jne near domosaic16b.nodraw2    retNEWSYM draw16x816winonb    mov ebp,[winptrref]    mov byte[tileleft16b],33    mov byte[drawn],0    mov dl,[temp].loopa    mov ax,[edi]    mov dh,ah    add edi,2    xor dh,[curbgpr]    test dh,20h    jnz near .hprior    inc byte[drawn]    and eax,03FFh                ; filter out tile #    mov ebx,[tempcach]    shl eax,6    add ebx,eax    cmp ebx,[bgofwptr]    jb .noclip    sub ebx,[bgsubby].noclip    test dh,80h    jz .normadd    add ebx,[yrevadder]    jmp .skipadd.normadd    add ebx,[yadder].skipadd    test dh,40h    jnz near .rloop    ; Begin Normal Loop    mov cl,[bshifter]    and dh,1Ch    shl dh,cl                    ; process palette # (bits 10-12)    add dh,[bgcoloradder]    xor eax,eax    ; Start loop    drawpixel16b8x8winon 1, .loopd1, 0, 0    drawpixel16b8x8winon 3, .loopd3, 2, 1    drawpixel16b8x8winon 5, .loopd5, 4, 2    drawpixel16b8x8winon 7, .loopd7, 6, 3    add ebx,64    ; Start loop    drawpixel16b8x8winon 1, .loopd1c, 8, 4    drawpixel16b8x8winon 3, .loopd3c, 10, 5    drawpixel16b8x8winon 5, .loopd5c, 12, 6    drawpixel16b8x8winon 7, .loopd7c, 14, 7.hprior    add esi,16    add ebp,8    inc dl    cmp dl,20h    jne .loopc2    mov edi,[temptile].loopc2    dec byte[tileleft16b]    jnz near .loopa    cmp byte[drawn],0    je .nodraw    mov dh,[curmosaicsz]    cmp dh,1    jne near domosaic16b.nodraw    ret    ; reversed loop.rloop    ; Begin Normal Loop    mov cl,[bshifter]    and dh,1Ch    shl dh,cl                    ; process palette # (bits 10-12)    add dh,[bgcoloradder]    xor eax,eax    ; Start loop    drawpixel16b8x8winon 0, .loopd1b, 14, 0    drawpixel16b8x8winon 2, .loopd3b, 12, 1    drawpixel16b8x8winon 4, .loopd5b, 10, 2    drawpixel16b8x8winon 6, .loopd7b, 8, 3    add ebx,64    ; Start loop    drawpixel16b8x8winon 0, .loopd1d, 6, 4    drawpixel16b8x8winon 2, .loopd3d, 4, 5    drawpixel16b8x8winon 4, .loopd5d, 2, 6    drawpixel16b8x8winon 6, .loopd7d, 0, 7    add esi,16    add ebp,8    inc dl    cmp dl,20h    jne .loopc    mov edi,[temptile].loopc    dec byte[tileleft16b]    jnz near .loopa    cmp byte[drawn],0    je .nodraw2    mov dh,[curmosaicsz]    cmp dh,1    jne near domosaic16b.nodraw2    retNEWSYM domosaic16b    mov esi,xtravbuf+32    mov edi,[curvidoffset]    mov dl,dh    mov cl,0    mov ax,[esi]    cmp byte[winon],0    jne near domosaicwin16b    test ax,0FFFFh    jz .zeroloop.loopm    mov [edi],ax    add esi,2    add edi,2    dec cl    jz .doneloop    dec dl    jnz .loopm    mov ax,[esi]    mov dl,dh    test ax,0FFFFh    jnz .loopm.zeroloop    add esi,2    add edi,2    dec cl    jz .doneloop    dec dl    jnz .zeroloop    mov ax,[esi]    mov dl,dh    test ax,0FFFFh    jnz .loopm    jmp .zeroloop.doneloop    retNEWSYM domosaicwin16b    mov ebp,[winptrref]    test ax,0FFFFh    jz .zeroloop.loopm    cmp byte[ebp],0    jne .nozero    mov [edi],ax.nozero    add esi,2    add edi,2    inc ebp    dec cl    jz .doneloop    dec dl    jnz .loopm    mov ax,[esi]    mov dl,dh    test ax,0FFFFh    jnz .loopm.zeroloop    add esi,2    add edi,2    inc ebp

⌨️ 快捷键说明

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