📄 vidmacro.mac
字号:
xor eax,eax mov ecx,64 mov edi,sprpriodata+16 rep stosd ret.drawsingle mov esi,[currentobjptr] mov edi,[curvidoffset] mov edx,ecx and edx,0FFh xor eax,eax 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] push esi mov ch,[esi+6] mov esi,[esi+2] cmp ch,12*16 jae near .transpobj2 sprdrawa16b %4 pop esi sub esi,8 dec cl jnz near .loopobj2 ret.transpobj2 sprdrawa16b %2 pop esi sub esi,8 dec cl jnz near .loopobj2 ret.drawspriteflipx2 mov bx,[esi] push esi mov ch,[esi+6] mov esi,[esi+2] cmp ch,12*16 jae near .transpobj2f sprdrawaf16b %4 pop esi sub esi,8 dec cl jnz near .loopobj2 ret.transpobj2f sprdrawaf16b %2 pop esi sub esi,8 dec cl jnz near .loopobj2 ret%endmacro%macro sprdrawpra16bha 1 or eax,eax jz %%skip test byte[sprpriodata+ebx-%1+16],cl jnz %%skip add al,ch mov edx,[transpbuf+32+ebx*2-%1*2] mov eax,[pal16b+eax*4] cmp dx,0 je %%noadd and edx,[vesa2_clbit] and eax,[vesa2_clbit] add eax,edx shr eax,1%%noadd mov [edi+ebx*2-%1*2],ax or byte[sprpriodata+ebx-%1+16],cl xor eax,eax%%skip%endmacro%macro sprdrawprb16bha 1 or eax,eax jz %%skip add al,ch mov edx,[transpbuf+32+ebx*2-%1*2] mov eax,[pal16b+eax*4] cmp dx,0 je %%noadd and edx,[vesa2_clbit] and eax,[vesa2_clbit] add eax,edx shr eax,1%%noadd mov [edi+ebx*2-%1*2],ax xor eax,eax%%skip%endmacro%macro sprdrawpraw16bha 1 or eax,eax jz %%skip test byte[sprpriodata+ebx-%1+16],cl jnz %%skip cmp byte[winspdata+ebx-%1+16],0 jne %%skip add al,ch mov edx,[transpbuf+32+ebx*2-%1*2] mov eax,[pal16b+eax*4] cmp dx,0 je %%noadd and edx,[vesa2_clbit] and eax,[vesa2_clbit] add eax,edx shr eax,1%%noadd mov [edi+ebx*2-%1*2],ax or byte[sprpriodata+ebx-%1+16],cl xor eax,eax%%skip%endmacro%macro sprdrawprbw16bha 1 or eax,eax jz %%skip cmp byte[winspdata+ebx-%1+16],0 jne %%skip add al,ch mov edx,[transpbuf+32+ebx*2-%1*2] mov eax,[pal16b+eax*4] cmp dx,0 je %%noadd and edx,[vesa2_clbit] and eax,[vesa2_clbit] add eax,edx shr eax,1%%noadd mov [edi+ebx*2-%1*2],ax xor eax,eax%%skip%endmacro%macro sprdrawpra16bfa 1 or eax,eax jz %%skip test byte[sprpriodata+ebx-%1+16],cl jnz %%skip add al,ch mov edx,[transpbuf+32+ebx*2-%1*2] mov eax,[pal16bcl+eax*4] and edx,[vesa2_clbit] add edx,eax shr edx,1 xor eax,eax mov edx,[fulladdtab+edx*2] mov [edi+ebx*2-%1*2],dx or byte[sprpriodata+ebx-%1+16],cl%%skip%endmacro%macro sprdrawprb16bfa 1 or eax,eax jz %%skip add al,ch mov edx,[transpbuf+32+ebx*2-%1*2] mov eax,[pal16bcl+eax*4] and edx,[vesa2_clbit] add edx,eax shr edx,1 xor eax,eax mov edx,[fulladdtab+edx*2] mov [edi+ebx*2-%1*2],dx%%skip%endmacro%macro sprdrawpraw16bfa 1 or eax,eax jz %%skip test byte[sprpriodata+ebx-%1+16],cl jnz %%skip cmp byte[winspdata+ebx-%1+16],0 jne %%skip add al,ch mov edx,[transpbuf+32+ebx*2-%1*2] mov eax,[pal16bcl+eax*4] and edx,[vesa2_clbit] add edx,eax shr edx,1 xor eax,eax mov edx,[fulladdtab+edx*2] mov [edi+ebx*2-%1*2],dx or byte[sprpriodata+ebx-%1+16],cl%%skip%endmacro%macro sprdrawprbw16bfa 1 or eax,eax jz %%skip cmp byte[winspdata+ebx-%1+16],0 jne %%skip add al,ch mov edx,[transpbuf+32+ebx*2-%1*2] mov eax,[pal16bcl+eax*4] and edx,[vesa2_clbit] add edx,eax shr edx,1 xor eax,eax mov edx,[fulladdtab+edx*2] mov [edi+ebx*2-%1*2],dx%%skip%endmacro%macro sprdrawpra16bfs 1 or eax,eax jz %%skip test byte[sprpriodata+ebx-%1+16],cl jnz %%skip add al,ch mov edx,[transpbuf+32+ebx*2-%1*2] mov eax,[pal16bxcl+eax*4] and edx,[vesa2_clbit] add edx,eax shr edx,1 xor eax,eax mov edx,[fulladdtab+edx*2] xor edx,0FFFFh mov [edi+ebx*2-%1*2],dx or byte[sprpriodata+ebx-%1+16],cl%%skip%endmacro%macro sprdrawprb16bfs 1 or eax,eax jz %%skip add al,ch mov edx,[transpbuf+32+ebx*2-%1*2] mov eax,[pal16bxcl+eax*4] and edx,[vesa2_clbit] add edx,eax shr edx,1 xor eax,eax mov edx,[fulladdtab+edx*2] xor edx,0FFFFh mov [edi+ebx*2-%1*2],dx%%skip%endmacro%macro sprdrawpraw16bfs 1 or eax,eax jz %%skip test byte[sprpriodata+ebx-%1+16],cl jnz %%skip cmp byte[winspdata+ebx-%1+16],0 jne %%skip add al,ch mov edx,[transpbuf+32+ebx*2-%1*2] mov eax,[pal16bxcl+eax*4] and edx,[vesa2_clbit] add edx,eax shr edx,1 xor eax,eax mov edx,[fulladdtab+edx*2] xor edx,0FFFFh mov [edi+ebx*2-%1*2],dx or byte[sprpriodata+ebx-%1+16],cl%%skip%endmacro%macro sprdrawprbw16bfs 1 or eax,eax jz %%skip cmp byte[winspdata+ebx-%1+16],0 jne %%skip add al,ch mov edx,[transpbuf+32+ebx*2-%1*2] mov eax,[pal16bxcl+eax*4] and edx,[vesa2_clbit] add edx,eax shr edx,1 xor eax,eax mov edx,[fulladdtab+edx*2] xor edx,0FFFFh mov [edi+ebx*2-%1*2],dx%%skip%endmacro;*******************************************************; Processes & Draws 8x8 tiles for both main & sub screen;*******************************************************%macro draw8x816bta 2 mov al,[ebx+%1] or al,al jz %%loop add al,dh mov ecx,[pal16b+eax*4] mov [esi+%2],cx mov [ebp+%2],cx%%loop%endmacro%macro draw8x816btawinon 2 mov al,[ebx+%1] or al,al jz %%loop test byte[ecx+%1],0FFh jnz %%loop add al,dh mov eax,[pal16b+eax*4] mov [esi+%2],ax mov [ebp+%2],ax xor eax,eax%%loop%endmacro%macro draw8x816btawinonb 2 mov al,[ebx+%1] or al,al jz %%loop test byte[ecx+7-%1],0FFh jnz %%loop add al,dh mov eax,[pal16b+eax*4] mov [esi+%2],ax mov [ebp+%2],ax xor eax,eax%%loop%endmacro%macro drawtilegrp 1 cmp dword[ebx],0 je near %%loop %1 0, 0 %1 1, 2 %1 2, 4 %1 3, 6%%loop cmp dword[ebx+4],0 je near %%loop2 %1 4, 8 %1 5, 10 %1 6, 12 %1 7, 14%%loop2%endmacro%macro drawtilegrpf 1 cmp dword[ebx+4],0 je near %%loop %1 7, 0 %1 6, 2 %1 5, 4 %1 4, 6%%loop cmp dword[ebx],0 je near %%loop2 %1 3, 8 %1 2, 10 %1 1, 12 %1 0, 14%%loop2%endmacro%macro drawtilegrpfull 1 cmp dword[edi],0 je near %%loop %1 0, 0 %1 1, 2 %1 2, 4 %1 3, 6%%loop cmp dword[edi+4],0 je near %%loop2 %1 4, 8 %1 5, 10 %1 6, 12 %1 7, 14%%loop2%endmacro%macro drawtilegrpfullf 1 cmp dword[edi+4],0 je near %%loop %1 7, 0 %1 6, 2 %1 5, 4 %1 4, 6%%loop cmp dword[edi],0 je near %%loop2 %1 3, 8 %1 2, 10 %1 1, 12 %1 0, 14%%loop2%endmacro;*******************************************************; Processes & Draws 8x8 tiles in 2, 4, & 8 bit mode;*******************************************************%macro draw8x816ta 2 mov al,[ebx+%1] or al,al jz %%loop add al,dh mov ecx,[ebp+%2] mov eax,[pal16b+eax*4] test ecx,0FFFFh je %%noadd and eax,1111011111011110b ; [vesa2_clbit] and ecx,1111011111011110b ; [vesa2_clbit] add eax,ecx shr eax,1%%noadd mov [esi+%2],ax xor eax,eax%%loop%endmacro%macro draw8x816ta2 2 mov al,[edi+%1] or al,al jz %%loop add al,dh mov ebx,[ebp+%2] mov ecx,[pal16b+eax*4] test ebx,0FFFFh je %%noadd and ecx,1111011111011110b ; [vesa2_clbit] and ebx,1111011111011110b ; [vesa2_clbit] add ecx,ebx shr ecx,1%%noadd mov [esi+%2],cx%%loop%endmacro%macro draw8x816tb 2 mov al,[edi+%1] or al,al jz %%loop add al,dh mov ebx,[ebp+%2] mov ecx,[pal16bcl+eax*4] and ebx,1111011111011110b ; [vesa2_clbit] add ecx,ebx shr ecx,1 mov ecx,[fulladdtab+ecx*2] mov [esi+%2],cx%%loop%endmacro%macro draw8x816tc 2 mov al,[edi+%1] or al,al jz %%loop add al,dh mov ebx,[ebp+%2] mov ecx,[pal16bxcl+eax*4] and ebx,1111011111011110b ; [vesa2_clbit] add ecx,ebx shr ecx,1 mov ecx,[fulladdtab+ecx*2] xor ecx,0FFFFh mov [esi+%2],cx%%loop%endmacro%macro draw8x816tawinon 2 mov al,[ebx+%1] or al,al jz %%loop test byte[edx+%1],0FFh jnz %%loop add al,[coadder16] mov ecx,[ebp+%2] mov eax,[pal16b+eax*4] test ecx,0FFFFh je %%noadd and eax,1111011111011110b ; [vesa2_clbit] and ecx,1111011111011110b ; [vesa2_clbit] add eax,ecx shr eax,1%%noadd mov [esi+%2],ax xor eax,eax%%loop%endmacro%macro draw8x816tbwinon 2 mov al,[edi+%1] or al,al jz %%loop test byte[edx+%1],0FFh jnz %%loop add al,[coadder16] mov ebx,[ebp+%2] mov ecx,[pal16bcl+eax*4] and ebx,1111011111011110b ; [vesa2_clbit] add ecx,ebx shr ecx,1 mov ecx,[fulladdtab+ecx*2] mov [esi+%2],cx%%loop%endmacro%macro draw8x816tcwinon 2 mov al,[edi+%1] or al,al jz %%loop test byte[edx+%1],0FFh jnz %%loop add al,[coadder16] mov ebx,[ebp+%2] mov ecx,[pal16bxcl+eax*4] and ebx,1111011111011110b ; [vesa2_clbit] add ecx,ebx shr ecx,1 mov ecx,[fulladdtab+ecx*2] xor ecx,0FFFFh mov [esi+%2],cx%%loop%endmacro%macro draw8x816tawinon2 3 mov al,[edi+%1] or al,al jz %%loop test byte[edx+%3],0FFh jnz %%loop add al,[coadder16] mov ecx,[ebp+%2] mov ebx,[pal16b+eax*4] test ecx,0FFFFh je %%noadd and ebx,1111011111011110b ; [vesa2_clbit] and ecx,1111011111011110b ; [vesa2_clbit] add ebx,ecx shr ebx,1%%noadd mov [esi+%2],bx%%loop%endmacro%macro draw8x816tbwinon2 3 mov al,[edi+%1] or al,al jz %%loop test byte[edx+%3],0FFh jnz %%loop add al,[coadder16] mov ebx,[ebp+%2] mov ecx,[pal16bcl+eax*4] and ebx,1111011111011110b ; [vesa2_clbit] add ecx,ebx shr ecx,1 mov ecx,[fulladdtab+ecx*2] mov [esi+%2],cx%%loop%endmacro%macro draw8x816tcwinon2 3 mov al,[edi+%1] or al,al jz %%loop test byte[edx+%3],0FFh jnz %%loop add al,[coadder16] mov ebx,[ebp+%2] mov ecx,[pal16bxcl+eax*4]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -