📄 newgfx16.asm
字号:
%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 + -