newgfx.asm

来自「linux下的任天堂模拟器代码。供大家参考。」· 汇编 代码 · 共 2,349 行 · 第 1/4 页

ASM
2,349
字号
    sprdrawa sprdrawpra    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]    sprdrawaf sprdrawpra    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    mov bx,[esi]    mov ch,[esi+6]    mov esi,[esi+2]    sprdrawa sprdrawprb    sub edx,8    mov esi,edx    dec cl    jnz near .loopobj2    pop ebx    pop esi    ret.drawspriteflipx2    mov bx,[esi]    mov ch,[esi+6]    mov esi,[esi+2]    sprdrawaf sprdrawprb    sub edx,8    mov esi,edx    dec cl    jnz near .loopobj2    pop ebx    pop esi    retNEWSYM drawsprngm7h    cmp byte[winbg1enval+ebx+4*256],0    jne near drawsprngm7w    test dword[sprleftpr+ebx*4],80000000h    jnz near .drawsingle    push esi    push ebx    mov 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]    sprdrawa sprdrawpra    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]    sprdrawaf sprdrawpra    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    mov bx,[esi]    mov ch,[esi+6]    mov esi,[esi+2]    sprdrawa sprdrawprb    sub edx,8    mov esi,edx    dec cl    jnz near .loopobj2    pop ebx    pop esi    ret.drawspriteflipx2    mov bx,[esi]    mov ch,[esi+6]    mov esi,[esi+2]    sprdrawaf sprdrawprb    sub edx,8    mov esi,edx    dec cl    jnz near .loopobj2    pop ebx    pop esi    retSECTION .bssNEWSYM NGNumSpr, resb 1SECTION .textNEWSYM drawsprngw    mov [NGNumSpr],cl    mov ecx,[objclineptr+ebx*4]    add ecx,[ngwinptr]    test dword[sprleftpr+ebx*4],80000000h    jnz near .drawsingle    push esi    push ebx    mov 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]    sprdrawa sprdrawprawb    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]    sprdrawaf sprdrawprawb    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    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    xor ecx,ecx    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]    xor edx,edx    mov dl,[NGNumSpr]    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    push edx    mov bx,[esi]    mov dh,[esi+6]    mov esi,[esi+2]    sprdrawa sprdrawprbwb    pop edx    sub edx,8    mov esi,edx    dec byte[NGNumSpr]    jnz near .loopobj2    pop ebx    pop esi    xor ecx,ecx    ret.drawspriteflipx2    push edx    mov bx,[esi]    mov dh,[esi+6]    mov esi,[esi+2]    sprdrawaf sprdrawprbwb    pop edx    sub edx,8    mov esi,edx    dec byte[NGNumSpr]    jnz near .loopobj2    pop ebx    pop esi    xor ecx,ecx    retNEWSYM drawsprngm7w    mov [NGNumSpr],cl    mov ecx,[objclineptr+ebx*4]    add ecx,[ngwinptr]    test dword[sprleftpr+ebx*4],80000000h    jnz near .drawsingle    push esi    push ebx    mov 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]    sprdrawa sprdrawprawb    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]    sprdrawaf sprdrawprawb    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    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.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]    xor edx,edx    mov dl,[NGNumSpr]    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    push edx    mov bx,[esi]    mov dh,[esi+6]    mov esi,[esi+2]    sprdrawa sprdrawprbwb    pop edx    sub edx,8    mov esi,edx    dec byte[NGNumSpr]    jnz near .loopobj2    pop ebx    pop esi    xor ecx,ecx    ret.drawspriteflipx2    push edx    mov bx,[esi]    mov dh,[esi+6]    mov esi,[esi+2]    sprdrawaf sprdrawprbwb    pop edx    sub edx,8    mov esi,edx    dec byte[NGNumSpr]    jnz near .loopobj2    pop ebx    pop esi    xor ecx,ecx    ret;*******************************************************; Prepare Sprite Priorities;*******************************************************NEWSYM makesprprtable    retNEWSYM preparesprpr    xor ebx,ebx    mov bl,[curypos]    mov eax,[sprleftpr+ebx*4]    mov [sprclprio],eax    cmp eax,00000001h    je .single    cmp eax,00000100h    je .single    cmp eax,00010000h    je .single    cmp eax,01000000h    je .single    mov dword[sprsingle],0    ret.single    mov dword[sprsingle],1    retSECTION .bssNEWSYM sprclprio,  resd 1NEWSYM sprsingle,  resd 1SECTION .text

⌨️ 快捷键说明

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