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