newg162.mac

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

MAC
890
字号
%%next    mov ebx,[ofsmcptr]    add ebx,[ofsmcptr2]    add dword[ofshvaladd],8    test dword[ebx-40h],8000h    jz near %%noofsm    test dword[ebx-40h],2000h << %9    jz %%noofsm    mov ebx,[ebx-40h]    mov ax,[ofsmtptr]    and ebx,3FFh    add ebx,[ofsmcyps]    test ebx,100h    jz %%noupper    add ax,[ofsmady]%%noupper    and ebx,0FFh    mov edx,ebx    shr ebx,3    and edx,07h    shl ebx,6    shl edx,3    add ax,bx    mov [yposng],edx    xor edx,38h    mov [flipyposng],edx%%noofsm    mov ebx,[ofsmcptr]    add ebx,[ofsmcptr2]    add dword[ofsmcptr2],2    and dword[ofsmcptr2],3Fh    test dword[ofsmcptr2],3Fh    jnz %%notzeroed    mov bx,[bgtxadd2]    add word[ofsmcptr],bx%%notzeroed    test dword[ebx-40h],8000h    jnz near %%noofsmh    test dword[ebx-40h],2000h << %9    jz %%noofsmh    mov ebx,[ebx-40h]    sub ax,[ofsmtptr]    add ax,[ofsmtptrs]    add ebx,[ofshvaladd]    test ebx,100h    jz %%noleft    add ax,[ofsmadx]%%noleft    and ebx,0F8h    shr ebx,2    add ax,bx%%noofsmh    dec byte[tleftn]    jnz near %4%%fin    pop ebx    cmp byte[curmosaicsz],1    jne near domosaicng16b    ret%%docache    call %3    jmp %%returnfromcache%%tileadd    mov bx,[bgtxadd]    add ax,bx    add [ofsmmptr],bx    add word[ofsmtptr],bx    jmp %%next%endmacro%macro drawlinengom16b 10    ; tile value : bit 15 = flipy, bit 14 = flipx, bit 13 = priority value    ;              bit 10-12 = palette, 0-9=tile#    mov ebx,[cbgval]    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    jz %%notflipyfull    add ecx,[flipyposng]    jmp %%yesflipyfull%%notflipyfull    add ecx,[yposng]%%yesflipyfull    test dword[vrama+eax],4000h    jnz near %%flipxfull    push eax    mov esi,ecx    xor ecx,ecx    xor ebx,ebx    mov eax,[CPalPtrng]    %9 0,1,0    %9 2,3,4    %9 4,5,8    %9 6,7,12    pop eax    jmp %5%%flipxfull    push eax    mov esi,ecx    xor ecx,ecx    xor ebx,ebx    mov eax,[CPalPtrng]    %9 7,6,0    %9 5,4,4    %9 3,2,8    %9 1,0,12    pop eax    jmp %5%%parttile    %2    ; start drawing from ecx to edi    test dword[vrama+eax],8000h    jz %%notflipypart    add ecx,[flipyposng]    jmp %%yesflipypart%%notflipypart    add ecx,[yposng]%%yesflipypart    test word[vrama+eax],4000h    jnz near %%flipxpart    push eax    mov eax,[CPalPtrng]    mov esi,ecx    xor ebx,ebx    %10 0,0,%8    %10 1,2,%8    %10 2,4,%8    %10 3,6,%8    %10 4,8,%8    %10 5,10,%8    %10 6,12,%8    %10 7,14,%8    pop eax    jmp %5%%flipxpart    push eax    mov eax,[CPalPtrng]    mov esi,ecx    xor ebx,ebx    %10 7,0,%8    %10 6,2,%8    %10 5,4,%8    %10 4,6,%8    %10 3,8,%8    %10 2,10,%8    %10 1,12,%8    %10 0,14,%8    pop eax%5    mov ebx,[cbgval]    add word[ofsmmptr],2    inc dword[bg1totng+ebx*4]    add word[ofsmtptr],2    mov ax,[ofsmmptr]    mov ebx,[yposngom]    mov edx,[flipyposngom]    mov [yposng],ebx    mov [flipyposng],edx    add edi,16    test eax,03Fh    jz near %%tileadd%%next    mov ebx,[ofsmcptr]    add ebx,[ofsmcptr2]    mov ecx,[ofsmval]    add dword[ofshvaladd],8    test dword[ebx],ecx    jz %%noofsm    mov ebx,[ebx]    mov ax,[ofsmtptr]    and ebx,3FFh    add ebx,[ofsmcyps]    test ebx,100h    jz %%noupper    add ax,[ofsmady]%%noupper    and ebx,0FFh    mov edx,ebx    shr ebx,3    and edx,07h    shl ebx,6    shl edx,3    add ax,bx    mov [yposng],edx    xor edx,38h    mov [flipyposng],edx%%noofsm    mov ebx,[ofsmcptr]    add ebx,[ofsmcptr2]    add dword[ofsmcptr2],2    mov ecx,[ofsmvalh]    and dword[ofsmcptr2],3Fh    test dword[ofsmcptr2],3Fh    jnz %%notzeroed    mov bx,[bgtxadd2]    add word[ofsmcptr],bx%%notzeroed    test dword[ebx-40h],ecx    jz %%noofsmh    mov ebx,[ebx-40h]    sub ax,[ofsmtptr]    add ax,[ofsmtptrs]    add ebx,[ofshvaladd]    test ebx,100h    jz %%noleft    add ax,[ofsmadx]%%noleft    and ebx,0F8h    shr ebx,2    add ax,bx%%noofsmh    dec byte[tleftn]    jnz near %4%%fin    pop ebx    cmp byte[curmosaicsz],1    jne near domosaicng16b    ret%%docache    call %3    jmp %%returnfromcache%%tileadd    mov bx,[bgtxadd]    add ax,bx    add [ofsmmptr],bx    add word[ofsmtptr],bx    jmp %%next%endmacro%macro drawlinengom16b16x16 10    ; 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    test byte[switch16x16],1    jz %%noflipxb    inc cx    test dword[vrama+eax],4000h    jz %%noflipxb    sub cx,2%%noflipxb%%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 word[vrama+eax],8000h    jz %%noflipyfull    add ecx,[flipyposng]    jmp %%yesflipyfull%%noflipyfull    add ecx,[yposng]%%yesflipyfull    test dword[vrama+eax],4000h    jnz near %%flipxfull    push eax    mov esi,ecx    xor ecx,ecx    xor ebx,ebx    mov eax,[CPalPtrng]    %9 0,1,0    %9 2,3,4    %9 4,5,8    %9 6,7,12    pop eax    jmp %%done%%flipxfull    push eax    mov esi,ecx    xor ecx,ecx    xor ebx,ebx    mov eax,[CPalPtrng]    %9 7,6,0    %9 5,4,4    %9 3,2,8    %9 1,0,12    pop eax    jmp %%done%%parttile    %2    ; start drawing from ecx to edi    test word[vrama+eax],8000h    jz %%noflipypart    add ecx,[flipyposng]    jmp %%yesflipypart%%noflipypart    add ecx,[yposng]%%yesflipypart    test word[vrama+eax],4000h    jnz near %%flipxpart    push eax    mov eax,[CPalPtrng]    mov esi,ecx    xor ebx,ebx    %10 0,0,%8    %10 1,2,%8    %10 2,4,%8    %10 3,6,%8    %10 4,8,%8    %10 5,10,%8    %10 6,12,%8    %10 7,14,%8    pop eax    jmp %%done%%flipxpart    push eax    mov eax,[CPalPtrng]    mov esi,ecx    xor ebx,ebx    %10 7,0,%8    %10 6,2,%8    %10 5,4,%8    %10 4,6,%8    %10 3,8,%8    %10 2,10,%8    %10 1,12,%8    %10 0,14,%8    pop eax%%done    pop edx    pop ecx    test byte[switch16x16],1    jz %%nextb    add word[ofsmmptr],2    add word[ofsmtptr],2    mov ax,[ofsmmptr]    test eax,03Fh    jz near %%tileaddb%%nextb    mov ebx,[cbgval]    inc dword[bg1totng+ebx*4]    mov ebx,[yposngom]    mov edx,[flipyposngom]    mov [yposng],ebx    mov [flipyposng],edx    mov ebx,[ofsmcptr]    add ebx,[ofsmcptr2]    mov ecx,[ofsmval]    add dword[ofshvaladd],8    test dword[ebx],ecx    jz %%noofsm    mov ebx,[ebx]    mov ax,[ofsmtptr]    and ebx,3FFh    add ebx,[ofsmcyps]    test ebx,200h    jz %%noupper    add ax,[ofsmady]%%noupper    and ebx,01FFh    mov dword[taddnfy16x16],0    mov dword[taddfy16x16],16    test ebx,8    jz %%noflipy16x16    mov dword[taddnfy16x16],16    mov dword[taddfy16x16],-16%%noflipy16x16    mov edx,ebx    shr ebx,4    and edx,07h    shl ebx,6    shl edx,3    add ax,bx    mov [yposng],edx    xor edx,38h    mov [flipyposng],edx%%noofsm    add dword[ofsmcptr2],2    and dword[ofsmcptr2],3Fh    test dword[ofsmcptr2],3Fh    jnz %%notzeroed    mov bx,[bgtxadd2]    add word[ofsmcptr],bx%%notzeroed    add edi,16    xor dword[switch16x16],1    jnz near %4%%ntile    mov ebx,[ng16bbgval];    add ax,2    inc dword[bg1totng+ebx*4];    test eax,03Fh;    jz %%tileadd%%next    dec byte[tleftn]    jnz near %4    pop ebx    cmp byte[curmosaicsz],1    jne near domosaicng16b    ret%5    add edi,32    jmp %%ntile%%docache    call %3    jmp %%returnfromcache%%tileadd    add ax,[bgtxadd]    jmp %%next%%tileaddb    mov bx,[bgtxadd]    add ax,bx    add [ofsmmptr],bx    add word[ofsmtptr],bx    jmp %%nextb%endmacro

⌨️ 快捷键说明

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