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

📄 makev16t.asm

📁 linux下的任天堂模拟器代码。供大家参考。
💻 ASM
📖 第 1 页 / 共 5 页
字号:
.loopa    mov ebx,[ebp]    or bx,bx    jz .noadd    and bx,[vesa2_clbit]    shr bx,1    add bx,ax    mov [esi],bx    jmp .skip.noadd    mov [esi],dx.skip    shr ebx,16    or bx,bx    je .noadd2    and bx,word[vesa2_clbit]    shr bx,1    add bx,ax    mov [esi+2],bx    jmp .skip2.noadd2    mov [esi+2],dx.skip2    add ebp,4    add esi,4    dec ecx    jnz .loopa    xor eax,eax    ret.fulladd    cmp eax,0    je .subcopy    mov ecx,256    xor ebx,ebx.loopc    mov ebx,[ebp]    and ebx,[vesa2_clbit]    shr ebx,1    add ebx,eax    add ebp,2    mov ebx,[fulladdtab+ebx*2]    mov [esi],bx    add esi,2    dec ecx    jnz .loopc    xor eax,eax    ret.subcopy    cmp byte[MMXSupport],1    je .dommxcopy    mov ecx,128    xor ebx,ebx    mov edi,esi    mov esi,ebp    rep movsd    xor eax,eax    ret.dommxcopy    mov ecx,32    xor ebx,ebx    mov edi,esi    mov esi,ebp.mmxloop2    movq mm0,[esi]    movq mm1,[esi+8]    movq [edi],mm0    movq [edi+8],mm1    add esi,16    add edi,16    dec ecx    jnz .mmxloop2    emms    xor eax,eax    ret.backcopy    mov edi,[curvidoffset]    mov ecx,128    mov ax,[pal16b]    shl eax,16    mov ax,[pal16b]    cmp byte[MMXSupport],1    je .dommxclear    rep stosd    xor eax,eax    ret.dommxclear    mov [mmxtempdat],eax    mov [mmxtempdat+4],eax    mov ecx,32    movq mm0,[mmxtempdat].mmxloop    movq [edi],mm0    movq [edi+8],mm0    add edi,16    dec ecx    jnz .mmxloop    emms    xor eax,eax    retNEWSYM clearback16ts    mov eax,[pal16b]    mov esi,[curvidoffset]    mov ebp,transpbuf+32    xor eax,0FFFFh    and eax,[vesa2_clbit]    shr eax,1    mov ecx,256    xor ebx,ebx.loopc    mov ebx,[ebp]    and ebx,[vesa2_clbit]    shr ebx,1    add ebx,eax    add ebp,2    mov ebx,[fulladdtab+ebx*2]    xor ebx,0FFFFh    mov [esi],bx    add esi,2    dec ecx    jnz .loopc    xor eax,eax    retNEWSYM drawsprites16bt    cmp byte[sprprifix],1    je near drawsprites16btprio    test byte[cwinenabm],10h    jz .drawnowin    cmp byte[winonsp],0    jne near drawsprites16btwinon.drawnowin    mov esi,[currentobjptr]    xor ebx,ebx    xor eax,eax.loopobj    mov edi,[curvidoffset]    test byte[esi+7],20h    jnz near .drawspriteflipx    push esi    mov bx,[esi]    mov ch,[esi+6]    shl bx,1    mov esi,[esi+2]    mov ebp,ebx    add edi,ebx    add ebp,transpbuf+32    drawspr16bt 0, 16    drawspr16bt 1, 14    drawspr16bt 2, 12    drawspr16bt 3, 10    drawspr16bt 4, 8    drawspr16bt 5, 6    drawspr16bt 6, 4    drawspr16bt 7, 2    pop esi    add esi,8    dec cl    jnz near .loopobj    mov [currentobjptr],esi    ret.drawspriteflipx    push esi    mov bx,[esi]    mov ch,[esi+6]    shl bx,1    mov esi,[esi+2]    mov ebp,ebx    add edi,ebx    add ebp,transpbuf+32    drawspr16bt 7, 16    drawspr16bt 6, 14    drawspr16bt 5, 12    drawspr16bt 4, 10    drawspr16bt 3, 8    drawspr16bt 2, 6    drawspr16bt 1, 4    drawspr16bt 0, 2    pop esi    add esi,8    dec cl    jnz near .loopobj    mov [currentobjptr],esi    retNEWSYM drawsprites16btwinon    mov esi,[currentobjptr]    xor ebx,ebx    xor eax,eax.loopobj    mov edi,[curvidoffset]    test byte[esi+7],20h    jnz near .drawspriteflipx    push esi    mov bx,[esi]    mov ch,[esi+6]    shl bx,1    mov esi,[esi+2]    mov ebp,ebx    add edi,ebx    shr ebx,1    add ebp,transpbuf+32    drawspr16btwo 0, 16, 0    drawspr16btwo 1, 14, 1    drawspr16btwo 2, 12, 2    drawspr16btwo 3, 10, 3    drawspr16btwo 4, 8, 4    drawspr16btwo 5, 6, 5    drawspr16btwo 6, 4, 6    drawspr16btwo 7, 2, 7    pop esi    add esi,8    dec cl    jnz near .loopobj    mov [currentobjptr],esi    ret.drawspriteflipx    push esi    mov bx,[esi]    mov ch,[esi+6]    shl bx,1    mov esi,[esi+2]    mov ebp,ebx    add edi,ebx    shr ebx,1    add ebp,transpbuf+32    drawspr16btwo 7, 16, 0    drawspr16btwo 6, 14, 1    drawspr16btwo 5, 12, 2    drawspr16btwo 4, 10, 3    drawspr16btwo 3, 8, 4    drawspr16btwo 2, 6, 5    drawspr16btwo 1, 4, 6    drawspr16btwo 0, 2, 7    pop esi    add esi,8    dec cl    jnz near .loopobj    mov [currentobjptr],esi    retNEWSYM drawsprites16btprio    sprpriorityinit drawsprites16btpriow    sprprioritydrawbt sprdrawpra16bt, sprdrawprb16btNEWSYM drawsprites16btpriow    sprprioritydrawbt sprdrawpra16bt, sprdrawprb16btNEWSYM drawsprites16t    cmp byte[sprprifix],1    je near drawsprites16tprio    test byte[cwinenabm],10h    jz .drawnowin    cmp byte[winonsp],0    jne near drawsprites16twinon.drawnowin    test byte[scaddtype],40h    jz near drawspritesfulladd    cmp byte[scrnon+1],0    je near drawspritesfulladd    test byte[scaddtype],80h    jnz near drawspritesfulladd    mov esi,[currentobjptr]    mov edi,[curvidoffset]    xor ebx,ebx    xor eax,eax.loopobj    test byte[esi+7],20h    jnz near .drawspriteflipx    push esi    mov bx,[esi]    mov ch,[esi+6]    shl bx,1    mov esi,[esi+2]    cmp ch,12*16    jae near .transparentobjnf    drawsprgrp drawspr16ta    pop esi    add esi,8    dec cl    jnz near .loopobj    mov [currentobjptr],esi    ret.drawspriteflipx    push esi    mov bx,[esi]    mov ch,[esi+6]    shl bx,1    mov esi,[esi+2]    cmp ch,12*16    jae near .transparentobj    drawsprgrpf drawspr16ta    pop esi    add esi,8    dec cl    jnz near .loopobj    mov [currentobjptr],esi    ret.transparentobjnf    mov ebp,ebx    add edi,ebx    xor edx,edx    add ebp,transpbuf+32    drawsprgrp drawspr16tb    pop esi    mov edi,[curvidoffset]    xor edx,edx    xor ebx,ebx    add esi,8    dec cl    jnz near .loopobj    mov [currentobjptr],esi    ret.transparentobj    mov ebp,ebx    add edi,ebx    xor edx,edx    add ebp,transpbuf+32    drawsprgrpf drawspr16tb    pop esi    mov edi,[curvidoffset]    xor edx,edx    xor ebx,ebx    add esi,8    dec cl    jnz near .loopobj    mov [currentobjptr],esi    retdrawspritesfulladd:    mov esi,[currentobjptr]    mov edi,[curvidoffset]    xor ebx,ebx    xor eax,eax.loopobj    test byte[esi+7],20h    jnz near .drawspriteflipx    push esi    mov bx,[esi]    mov ch,[esi+6]    shl bx,1    mov esi,[esi+2]    cmp ch,12*16    jae near .transparentobjnf    drawsprgrp drawspr16ta    pop esi    xor edx,edx    xor ebx,ebx    add esi,8    dec cl    jnz near .loopobj    mov [currentobjptr],esi    ret.drawspriteflipx    push esi    mov bx,[esi]    mov ch,[esi+6]    shl bx,1    mov esi,[esi+2]    cmp ch,12*16    jae near .transparentobj    drawsprgrpf drawspr16ta    pop esi    xor edx,edx    xor ebx,ebx    add esi,8    dec cl    jnz near .loopobj    mov [currentobjptr],esi    ret.transparentobjnf    test byte[scaddtype],80h    jnz near .transparentobjnfs    mov ebp,ebx    add edi,ebx    xor edx,edx    add ebp,transpbuf+32    drawsprgrp drawspr16tc    pop esi    mov edi,[curvidoffset]    xor edx,edx    xor ebx,ebx    add esi,8    dec cl    jnz near .loopobj    mov [currentobjptr],esi    ret.transparentobjnfs    mov ebp,ebx    add edi,ebx    xor edx,edx    add ebp,transpbuf+32    drawsprgrp drawspr16td    pop esi    mov edi,[curvidoffset]    xor edx,edx    xor ebx,ebx    add esi,8    dec cl    jnz near .loopobj    mov [currentobjptr],esi    ret.transparentobj    test byte[scaddtype],80h    jnz near .transparentobjs    mov ebp,ebx    add edi,ebx    xor edx,edx    add ebp,transpbuf+32    drawsprgrpf drawspr16tc    pop esi    mov edi,[curvidoffset]    xor edx,edx    xor ebx,ebx    add esi,8    dec cl    jnz near .loopobj    mov [currentobjptr],esi    ret.transparentobjs    mov ebp,ebx    add edi,ebx    xor edx,edx    add ebp,transpbuf+32    drawsprgrpf drawspr16td    pop esi    mov edi,[curvidoffset]    xor edx,edx    xor ebx,ebx    add esi,8    dec cl    jnz near .loopobj    mov [currentobjptr],esi    retNEWSYM drawsprites16twinon    test byte[scaddtype],40h    jz near drawspritesfulladdwinon    cmp byte[scrnon+1],0    je near drawspritesfulladdwinon    test byte[scaddtype],80h    jnz near drawspritesfulladdwinon    mov esi,[currentobjptr]    mov edi,[curvidoffset]    xor ebx,ebx    xor eax,eax.loopobj    test byte[esi+7],20h    jnz near .drawspriteflipx    push esi    mov bx,[esi]    mov ch,[esi+6]    mov esi,[esi+2]    cmp ch,12*16    jae near .transparentobjnf    drawsprgrpwin drawspr16tawinon    pop esi    add esi,8    dec cl    jnz near .loopobj    mov [currentobjptr],esi    ret.drawspriteflipx    push esi    mov bx,[esi]    mov ch,[esi+6]    mov esi,[esi+2]    cmp ch,12*16    jae near .transparentobj    drawsprgrpfwin drawspr16tawinon    pop esi    add esi,8    dec cl    jnz near .loopobj    mov [currentobjptr],esi    ret.transparentobjnf    mov ebp,ebx    add edi,ebx    mov ebp,ebx    add edi,ebx    xor edx,edx    add ebp,transpbuf+32    drawsprgrpwin drawspr16tbwinon    pop esi    mov edi,[curvidoffset]    xor edx,edx    xor ebx,ebx    add esi,8    dec cl    jnz near .loopobj    mov [currentobjptr],esi    ret.transparentobj    mov ebp,ebx    add edi,ebx    mov ebp,ebx    add edi,ebx    xor edx,edx    add ebp,transpbuf+32    drawsprgrpfwin drawspr16tbwinon    pop esi    mov edi,[curvidoffset]    xor edx,edx    xor ebx,ebx    add esi,8    dec cl    jnz near .loopobj    mov [currentobjptr],esi    retNEWSYM drawspritesfulladdwinon    mov esi,[currentobjptr]    mov edi,[curvidoffset]    xor ebx,ebx    xor eax,eax.loopobj    test byte[esi+7],20h    jnz near .drawspriteflipx    push esi    mov bx,[esi]    mov ch,[esi+6]    mov esi,[esi+2]    cmp ch,12*16    jae near .transparentobjnf    drawsprgrpwin drawspr16tawinon    pop esi    xor edx,edx    xor ebx,ebx    add esi,8    dec cl    jnz near .loopobj    mov [currentobjptr],esi    ret.drawspriteflipx    push esi    mov bx,[esi]    mov ch,[esi+6]    mov esi,[esi+2]    cmp ch,12*16    jae near .transparentobj    drawsprgrpfwin drawspr16tawinon    pop esi    xor edx,edx    xor ebx,ebx    add esi,8    dec cl    jnz near .loopobj    mov [currentobjptr],esi    ret.transparentobjnf    test byte[scaddtype],80h    jnz near .transparentobjnfs    mov ebp,ebx    add edi,ebx    mov ebp,ebx    add edi,ebx    xor edx,edx    add ebp,transpbuf+32    drawsprgrpwin drawspr16tcwinon    pop esi    mov edi,[curvidoffset]    xor edx,edx    xor ebx,ebx    add esi,8    dec cl    jnz near .loopobj    mov [currentobjptr],esi    ret.transparentobjnfs    mov ebp,ebx    add edi,ebx    mov ebp,ebx    add edi,ebx    xor edx,edx    add ebp,transpbuf+32    drawsprgrpwin drawspr16tdwinon    pop esi    mov edi,[curvidoffset]    xor edx,edx    xor ebx,ebx    add esi,8    dec cl    jnz near .loopobj    mov [currentobjptr],esi    ret.transparentobj    test byte[scaddtype],80h    jnz near .transparentobjs    mov ebp,ebx    add edi,ebx    mov ebp,ebx    add edi,ebx    xor edx,edx    add ebp,transpbuf+32    drawsprgrpfwin drawspr16tcwinon    pop esi    mov edi,[curvidoffset]    xor edx,edx    xor ebx,ebx    add esi,8    dec cl    jnz near .loopobj    mov [currentobjptr],esi    ret.transparentobjs    mov ebp,ebx    add edi,ebx    mov ebp,ebx    add edi,ebx    xor edx,edx    add ebp,transpbuf+32    drawsprgrpfwin drawspr16tdwinon    pop esi    mov edi,[curvidoffset]    xor edx,edx    xor ebx,ebx    add esi,8    dec cl    jnz near .loopobj    mov [currentobjptr],esi    retNEWSYM drawsprites16tprio    test byte[scaddtype],40h    jz near drawspritesfulladdprio    cmp byte[scrnon+1],0    je near drawspritesfulladdprio    test byte[scaddtype],80h    jnz near drawspritesfulladdprio    ; half add    sprpriorityinit drawsprites16tpriow    sprprioritydrawt16b sprdrawpra16bha, sprdrawprb16bha, sprdrawpra16b, sprdrawprb16bNEWSYM drawsprites16tpriow    sprprioritydrawt16b sprdrawpraw16bha, sprdrawprbw16bha, sprdrawpraw16b, sprdrawprbw16bNEWSYM drawspritesfulladdprio    test byte[scaddtype],80h    jnz near drawspritesfullsubprio    ; full add    sprpriorityinit drawspritesfulladdpriow    sprprioritydrawt16b sprdrawpra16bfa, sprdrawprb16bfa, sprdrawpra16b, sprdrawprb16b

⌨️ 快捷键说明

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