📄 makev16t.asm
字号:
NEWSYM drawspritesfulladdpriow sprprioritydrawt16b sprdrawpraw16bfa, sprdrawprbw16bfa, sprdrawpraw16b, sprdrawprbw16bNEWSYM drawspritesfullsubprio ; full sub sprpriorityinit drawspritesfullsubpriow sprprioritydrawt16b sprdrawpra16bfs, sprdrawprb16bfs, sprdrawpra16b, sprdrawprb16bNEWSYM drawspritesfullsubpriow sprprioritydrawt16b sprdrawpraw16bfs, sprdrawprbw16bfs, sprdrawpraw16b, sprdrawprbw16bNEWSYM draw8x816bt cmp byte[bgmode],2 je near draw8x816boffset cmp byte[bgmode],5 je near draw16x816t mov [temp],al mov [bshifter],ah mov eax,esi mov [yadder],ecx mov [tempcach],ebx mov ebx,56 sub ebx,ecx mov [yrevadder],ebx ; esi = pointer to video buffer mov esi,[cwinptr] sub esi,eax mov [winptrref],esi mov esi,[curvidoffset] sub esi,eax ; esi = [vidbuffer] + curypos * 288 + 16 - HOfs sub esi,eax cmp byte[curmosaicsz],1 je .nomosaic mov esi,xtravbuf+32 mov ecx,128.clearnext mov dword[esi],0 add esi,4 dec ecx jnz .clearnext mov esi,xtravbuf+32 sub esi,eax sub esi,eax.nomosaic mov [temptile],edx push ecx mov dword[bgsubby],262144 mov ecx,[vcache2b] add ecx,262144 mov [bgofwptr],ecx cmp dword[tempcach],ecx jb .nobit mov dword[bgsubby],131072 mov ecx,[vcache4b] add ecx,131072 mov [bgofwptr],ecx cmp dword[tempcach],ecx jb .nobit mov ecx,[vcache8b] add ecx,65536 mov [bgofwptr],ecx mov dword[bgsubby],65536.nobit pop ecx; tile value : bit 15 = flipy, bit 14 = flipx, bit 13 = priority value; bit 10-12 = palette, 0-9=tile# cmp byte[curmosaicsz],1 jne .domosaic cmp byte[winon],0 jne near draw8x816btwinon.domosaic mov ebp,transpbuf+32 sub ebp,eax sub ebp,eax mov byte[tileleft16b],33 mov byte[drawn],0 mov dl,[temp].loopa mov ax,[edi] mov dh,ah add edi,2 xor dh,[curbgpr] test dh,20h jnz near .hprior inc byte[drawn] and eax,03FFh ; filter out tile # mov ebx,[tempcach] shl eax,6 add ebx,eax cmp ebx,[bgofwptr] jb .noclip sub ebx,[bgsubby].noclip test dh,80h jz .normadd add ebx,[yrevadder] jmp .skipadd.normadd add ebx,[yadder].skipadd test dh,40h jnz near .rloop ; Begin Normal Loop mov cl,[bshifter] and dh,1Ch shl dh,cl ; process palette # (bits 10-12) add dh,[bgcoloradder] xor eax,eax ; Start loop drawtilegrp draw8x816bta.hprior add esi,16 add ebp,16 inc dl cmp dl,20h jne .loopc2 mov edi,[temptile].loopc2 dec byte[tileleft16b] jnz near .loopa cmp byte[drawn],0 je .nodraw mov dh,[curmosaicsz] cmp dh,1 jne near domosaic16b.nodraw ret ; reversed loop.rloop mov cl,[bshifter] and dh,1Ch shl dh,cl ; process palette # (bits 10-12) add dh,[bgcoloradder] xor eax,eax drawtilegrpf draw8x816bta add esi,16 add ebp,16 inc dl cmp dl,20h jne .loopc mov edi,[temptile].loopc dec byte[tileleft16b] jnz near .loopa cmp byte[drawn],0 je .nodraw2 mov dh,[curmosaicsz] cmp dh,1 jne near domosaic16b.nodraw2 retNEWSYM draw8x816btwinon mov ebp,transpbuf+32 sub ebp,eax sub ebp,eax mov byte[tileleft16b],33 mov ecx,[winptrref] mov byte[drawn],0 mov dl,[temp].loopa mov ax,[edi] mov dh,ah add edi,2 xor dh,[curbgpr] test dh,20h jnz near .hprior inc byte[drawn] and eax,03FFh ; filter out tile # mov ebx,[tempcach] shl eax,6 add ebx,eax cmp ebx,[bgofwptr] jb .noclip sub ebx,[bgsubby].noclip test dh,80h jz .normadd add ebx,[yrevadder] jmp .skipadd.normadd add ebx,[yadder].skipadd test dh,40h jnz near .rloop ; Begin Normal Loop mov eax,ecx mov cl,[bshifter] and dh,1Ch shl dh,cl ; process palette # (bits 10-12) add dh,[bgcoloradder] mov ecx,eax xor eax,eax ; Start loop drawtilegrp draw8x816btawinon.hprior add esi,16 add ecx,8 add ebp,16 inc dl cmp dl,20h jne .loopc2 mov edi,[temptile].loopc2 dec byte[tileleft16b] jnz near .loopa ret ; reversed loop.rloop mov eax,ecx mov cl,[bshifter] and dh,1Ch shl dh,cl ; process palette # (bits 10-12) add dh,[bgcoloradder] mov ecx,eax xor eax,eax drawtilegrpf draw8x816btawinonb add esi,16 add ecx,8 add ebp,16 inc dl cmp dl,20h jne .loopc mov edi,[temptile].loopc dec byte[tileleft16b] jnz near .loopa retNEWSYM draw8x816t cmp byte[osm2dis],1 je .osm2dis cmp byte[bgmode],2 je near draw8x816toffset.osm2dis cmp byte[bgmode],5 je near draw16x816t mov [temp],al mov [bshifter],ah mov eax,esi mov [yadder],ecx mov [tempcach],ebx mov ebx,56 sub ebx,ecx mov [yrevadder],ebx ; esi = pointer to video buffer mov esi,[cwinptr] sub esi,eax mov [winptrref],esi mov esi,[curvidoffset] sub esi,eax ; esi = [vidbuffer] + curypos * 288 + 16 - HOfs sub esi,eax cmp byte[curmosaicsz],1 je .nomosaic mov esi,xtravbuf+32 mov ecx,128.clearnext mov dword[esi],0 add esi,4 dec ecx jnz .clearnext mov esi,xtravbuf+32 sub esi,eax sub esi,eax.nomosaic mov [temptile],edx push ecx mov dword[bgsubby],262144 mov ecx,[vcache2b] add ecx,262144 mov [bgofwptr],ecx cmp dword[tempcach],ecx jb .nobit mov dword[bgsubby],131072 mov ecx,[vcache4b] add ecx,131072 mov [bgofwptr],ecx cmp dword[tempcach],ecx jb .nobit mov ecx,[vcache8b] add ecx,65536 mov [bgofwptr],ecx mov dword[bgsubby],65536.nobit pop ecx; tile value : bit 15 = flipy, bit 14 = flipx, bit 13 = priority value; bit 10-12 = palette, 0-9=tile# cmp byte[curmosaicsz],1 jne .domosaic cmp byte[winon],0 jne near draw8x816twinon.domosaic mov ebp,transpbuf+32 sub ebp,eax sub ebp,eax test byte[scaddtype],80h jnz near draw8x816ts test byte[scaddtype],40h jz near draw8x8fulladd cmp byte[scrnon+1],0 jz near draw8x8fulladd mov byte[tileleft16b],33 mov byte[drawn],0 mov dl,[temp].loopa mov ax,[edi] mov dh,ah add edi,2 xor dh,[curbgpr] test dh,20h jnz near .hprior inc byte[drawn] and eax,03FFh ; filter out tile # mov ebx,[tempcach] shl eax,6 add ebx,eax cmp ebx,[bgofwptr] jb .noclip sub ebx,[bgsubby].noclip test dh,80h jz .normadd add ebx,[yrevadder] jmp .skipadd.normadd add ebx,[yadder].skipadd test dh,40h jnz near .rloop ; Begin Normal Loop mov cl,[bshifter] and dh,1Ch shl dh,cl ; process palette # (bits 10-12) add dh,[bgcoloradder] xor eax,eax xor ecx,ecx ; Start loop drawtilegrp draw8x816ta.hprior add esi,16 add ebp,16 inc dl cmp dl,20h jne .loopc2 mov edi,[temptile].loopc2 dec byte[tileleft16b] jnz near .loopa cmp byte[drawn],0 je .nodraw mov dh,[curmosaicsz] cmp dh,1 jne near domosaic16b.nodraw ret ; reversed loop.rloop mov cl,[bshifter] and dh,1Ch shl dh,cl ; process palette # (bits 10-12) add dh,[bgcoloradder] xor eax,eax xor ecx,ecx drawtilegrpf draw8x816ta add esi,16 add ebp,16 inc dl cmp dl,20h jne .loopc mov edi,[temptile].loopc dec byte[tileleft16b] jnz near .loopa cmp byte[drawn],0 je .nodraw2 mov dh,[curmosaicsz] cmp dh,1 jne near domosaic16b.nodraw2 retNEWSYM draw8x8fulladd mov byte[tileleft16b],33 mov byte[drawn],0 mov dl,[temp].loopa mov ax,[edi] mov dh,ah add edi,2 push edi xor dh,[curbgpr] test dh,20h jnz near .hprior inc byte[drawn] and eax,03FFh ; filter out tile # mov edi,[tempcach] shl eax,6 add edi,eax cmp edi,[bgofwptr] jb .noclip sub edi,[bgsubby].noclip test dh,80h jz .normadd add edi,[yrevadder] jmp .skipadd.normadd add edi,[yadder].skipadd test dh,40h jnz near .rloop ; Begin Normal Loop mov cl,[bshifter] and dh,1Ch shl dh,cl ; process palette # (bits 10-12) add dh,[bgcoloradder] xor eax,eax xor ecx,ecx ; Start loop drawtilegrpfull draw8x816tb.hprior pop edi add esi,16 add ebp,16 inc dl cmp dl,20h jne .loopc2 mov edi,[temptile].loopc2 dec byte[tileleft16b] jnz near .loopa cmp byte[drawn],0 je .nodraw mov dh,[curmosaicsz] cmp dh,1 jne near domosaic16b.nodraw ret ; reversed loop.rloop mov cl,[bshifter] and dh,1Ch shl dh,cl ; process palette # (bits 10-12) add dh,[bgcoloradder] xor eax,eax xor ecx,ecx drawtilegrpfullf draw8x816tb pop edi add esi,16 add ebp,16 inc dl cmp dl,20h jne .loopc mov edi,[temptile].loopc dec byte[tileleft16b] jnz near .loopa cmp byte[drawn],0 je .nodraw2 mov dh,[curmosaicsz] cmp dh,1 jne near domosaic16b.nodraw2 retNEWSYM draw8x816ts mov byte[tileleft16b],33 mov byte[drawn],0 mov dl,[temp].loopa mov ax,[edi] mov dh,ah add edi,2 push edi xor dh,[curbgpr] test dh,20h jnz near .hprior inc byte[drawn] and eax,03FFh ; filter out tile # mov edi,[tempcach] shl eax,6 add edi,eax cmp edi,[bgofwptr] jb .noclip sub edi,[bgsubby].noclip test dh,80h jz .normadd add edi,[yrevadder] jmp .skipadd.normadd add edi,[yadder].skipadd test dh,40h jnz near .rloop ; Begin Normal Loop mov cl,[bshifter] and dh,1Ch shl dh,cl ; process palette # (bits 10-12) add dh,[bgcoloradder] xor eax,eax xor ecx,ecx ; Start loop drawtilegrpfull draw8x816tc.hprior pop edi add esi,16 add ebp,16 inc dl cmp dl,20h jne .loopc2 mov edi,[temptile].loopc2 dec byte[tileleft16b] jnz near .loopa ret ; reversed loop.rloop mov cl,[bshifter] and dh,1Ch shl dh,cl ; process palette # (bits 10-12) add dh,[bgcoloradder] xor eax,eax xor ecx,ecx drawtilegrpfullf draw8x816tc pop edi add esi,16 add ebp,16 inc dl cmp dl,20h jne .loopc mov edi,[temptile].loopc dec byte[tileleft16b] jnz near .loopa retALIGN32SECTION .bssNEWSYM coadder16, resd 1SECTION .textNEWSYM draw8x816twinon mov ebp,transpbuf+32 sub ebp,eax sub ebp,eax test byte[scaddtype],80h jnz near draw8x816tswinon test byte[scaddtype],40h jz near draw8x8fulladdwinon cmp byte[scrnon+1],0 jz near draw8x8fulladdwinon mov byte[tileleft16b],33 mov edx,[winptrref] mov byte[drawn],0.loopa mov ax,[edi] mov cl,ah add edi,2 xor cl,[curbgpr] test cl,20h jnz near .hprior inc byte[drawn] and eax,03FFh ; filter out tile # mov ebx,[tempcach] shl eax,6 add ebx,eax cmp ebx,[bgofwptr] jb .noclip sub ebx,[bgsubby].noclip test cl,80h jz .normadd add ebx,[yrevadder] jmp .skipadd.normadd add ebx,[yadder].skipadd test cl,40h jnz near .rloop ; Begin Normal Loop mov al,cl mov cl,[bshifter] and al,1Ch shl al,cl ; process palette # (bits 10-12) add al,[bgcoloradder] mov [coadder16],al xor eax,eax xor ecx,ecx ; Start loop drawtilegrp draw8x816tawinon.hprior add esi,16 add edx,8 add ebp,16 inc byte[temp] cmp byte[temp],20h jne .loopc2 mov edi,[temptile].loopc2 dec byte[tileleft16b] jnz near .loopa ret ; reversed loop.rloop mov al,cl mov cl,[bshifter] and al,1Ch shl al,cl ; process palette # (bits 10-12) add al,[bgcoloradder] mov [coadder16],al xor eax,eax xor ecx,ecx drawtilegrpf draw8x816tawinonb add esi,16 add edx,8 add ebp,16 inc byte[temp] cmp byte[temp],20h jne .loopc mov edi,[temptile].loopc dec byte[tileleft16b] jnz near .loopa retNEWSYM draw8x8fulladdwinon mov byte[tileleft16b],33 mov edx,[winptrref] mov byte[drawn],0.loopa mov ax,[edi] mov cl,ah add edi,2 push edi xor cl,[curbgpr] test cl,20h jnz near .hprior inc byte[drawn] and eax,03FFh ; filter out tile # mov edi,[tempcach] shl eax,6 add edi,eax cmp edi,[bgofwptr] jb .noclip sub edi,[bgsubby].nocl
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -