📄 newg16wn.mac
字号:
mov [edi+%1],bx
%%nodraw
%endmacro
%macro tilenormalwmst 2
cmp dword[ngcwinmode],1
je %%nodraw
mov bx,[ecx+%2]
mov [edi+%1+75036*2],bx
or bx,[UnusedBit]
mov [edi+%1],bx
%%nodraw
%endmacro
%macro tilenormalwbmst 2
cmp dword[ngcwinmode],1
je %%nodraw
mov bx,[ecx+%2]
cmp bx,0FFFFh
je %%nodraw
mov [edi+%1+75036*2],bx
or bx,[UnusedBit]
mov [edi+%1],bx
%%nodraw
%endmacro
%macro tilenormalwmsnt 2
cmp dword[ngcwinmode],1
je %%nodraw
mov bx,[ecx+%2]
mov [edi+%1+75036*2],bx
mov [edi+%1],bx
%%nodraw
%endmacro
%macro tilenormalwbmsnt 2
cmp dword[ngcwinmode],1
je %%nodraw
mov bx,[ecx+%2]
cmp bx,0FFFFh
je %%nodraw
mov [edi+%1+75036*2],bx
mov [edi+%1],bx
%%nodraw
%endmacro
%macro tilenormalwmsbt 2
mov bx,[ecx+%2]
or bx,[UnusedBit]
mov [edi+%1],bx
cmp dword[ngcwinmode],1
je %%nodraw
and bx,[UnusedBitXor]
mov [edi+%1+75036*2],bx
%%nodraw
%endmacro
%macro tilenormalwbmsbt 2
mov bx,[ecx+%2]
cmp bx,0FFFFh
je %%nodraw
or bx,[UnusedBit]
mov [edi+%1],bx
cmp dword[ngcwinmode],1
je %%nodraw
and bx,[UnusedBitXor]
mov [edi+%1+75036*2],bx
%%nodraw
%endmacro
%macro tilenormalwmsbnt 2
mov bx,[ecx+%2]
mov [edi+%1],bx
cmp dword[ngcwinmode],1
je %%nodraw
mov [edi+%1+75036*2],bx
%%nodraw
%endmacro
%macro tilenormalwbmsbnt 2
cmp bx,0FFFFh
je %%nodraw
mov bx,[ecx+%2]
mov [edi+%1],bx
cmp dword[ngcwinmode],1
je %%nodraw
mov [edi+%1+75036*2],bx
%%nodraw
%endmacro
%macro tilenormalwsmt 2
mov bx,[ecx+%2]
mov [edi+%1+75036*2],bx
cmp dword[ngcwinmode],1
je %%nodraw
or bx,[UnusedBit]
mov [edi+%1],bx
%%nodraw
%endmacro
%macro tilenormalwbsmt 2
mov bx,[ecx+%2]
cmp bx,0FFFFh
je %%nodraw
mov [edi+%1+75036*2],bx
cmp dword[ngcwinmode],1
je %%nodraw
or bx,[UnusedBit]
mov [edi+%1],bx
%%nodraw
%endmacro
%macro tilenormalwsmnt 2
mov bx,[ecx+%2]
mov [edi+%1+75036*2],bx
cmp dword[ngcwinmode],1
je %%nodraw
mov [edi+%1],bx
%%nodraw
%endmacro
%macro tilenormalwbsmnt 2
mov bx,[ecx+%2]
cmp bx,0FFFFh
je %%nodraw
mov [edi+%1+75036*2],bx
cmp dword[ngcwinmode],1
je %%nodraw
mov [edi+%1],bx
%%nodraw
%endmacro
%macro drawtilengwin16b 12
; 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]
mov edx,[%6+edx*4]
%7
jnz near %%docache
cmp byte[%9+ecx],dl
je %%returnfromcache
mov byte[%9+ecx],dl
call %10
%%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],4000h
jz %%notflipxfull
add ecx,128
%%notflipxfull
test dword[vrama+eax],8000h
jnz near %%flipyfull
mov dword[tleftnb],8
%%loopfa
dec dword[ngcpixleft]
jnz %%notzero
call Nextwinmode
%%notzero
%11 0,0
%11 288*2,16
%11 288*4,16*2
%11 288*6,16*3
%11 288*8,16*4
%11 288*10,16*5
%11 288*12,16*6
%11 288*14,16*7
add ecx,2
add edi,2
dec dword[tleftnb]
jnz near %%loopfa
sub edi,16
jmp %%end
%%flipyfull
mov dword[tleftnb],8
%%loopfc
dec dword[ngcpixleft]
jnz %%notzeroc
call Nextwinmode
%%notzeroc
%11 0,16*7
%11 288*2,16*6
%11 288*4,16*5
%11 288*6,16*4
%11 288*8,16*3
%11 288*10,16*2
%11 288*12,16*1
%11 288*14,0
add ecx,2
add edi,2
dec dword[tleftnb]
jnz near %%loopfc
sub edi,16
jmp %%end
%%parttile
%2
; start drawing from ecx
test dword[vrama+eax],4000h
jz %%notflipxpart
add ecx,128
%%notflipxpart
test dword[vrama+eax],8000h
jnz near %%flipyfullp
mov dword[tleftnb],8
%%loopfap
dec dword[ngcpixleft]
jnz %%notzerop
call Nextwinmode
%%notzerop
%12 0,0
%12 288*2,16
%12 288*4,16*2
%12 288*6,16*3
%12 288*8,16*4
%12 288*10,16*5
%12 288*12,16*6
%12 288*14,16*7
add ecx,2
add edi,2
dec dword[tleftnb]
jnz near %%loopfap
sub edi,16
jmp %%end
%%flipyfullp
mov dword[tleftnb],8
%%loopfcp
dec dword[ngcpixleft]
jnz %%notzerocp
call Nextwinmode
%%notzerocp
%12 0,16*7
%12 288*2,16*6
%12 288*4,16*5
%12 288*6,16*4
%12 288*8,16*3
%12 288*10,16*2
%12 288*12,16*1
%12 288*14,0
add ecx,2
add edi,2
dec dword[tleftnb]
jnz near %%loopfcp
sub edi,16
jmp %%end
%5
processwinpixel
processwinpixel
processwinpixel
processwinpixel
%%end
mov ebx,[ng16bbgval]
add ax,2
inc dword[bg1totng+ebx*4]
add edi,16
test eax,03Fh
jz %%tileadd
%%next
dec byte[tleftn]
jnz near %4
pop ebx
ret
%%docache
call %3
mov byte[%9+ecx],dl
call %10
jmp %%returnfromcache
%%tileadd
add ax,[bgtxadd]
jmp %%next
%endmacro
%macro drawtileng16x16win16b 12
; 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
%%nexttile
push ecx
push edx
mov edx,[%6+edx*4]
%7
jnz near %%docache
cmp byte[%9+ecx],dl
je %%returnfromcache
mov byte[%9+ecx],dl
call %10
%%returnfromcache
cmp byte[%1+ecx],2
je near %%skip
cmp byte[%1+ecx],0
je near %%parttile
%2
; start drawing from ecx
test dword[vrama+eax],4000h
jz %%notflipxfull
add ecx,128
%%notflipxfull
test dword[vrama+eax],8000h
jnz near %%flipyfull
mov dword[tleftnb],8
%%loopfa
dec dword[ngcpixleft]
jnz %%notzero
call Nextwinmode
%%notzero
%11 0,0
%11 288*2,16
%11 288*4,16*2
%11 288*6,16*3
%11 288*8,16*4
%11 288*10,16*5
%11 288*12,16*6
%11 288*14,16*7
add ecx,2
add edi,2
dec dword[tleftnb]
jnz near %%loopfa
sub edi,16
jmp %%end
%%flipyfull
mov dword[tleftnb],8
%%loopfc
dec dword[ngcpixleft]
jnz %%notzeroc
call Nextwinmode
%%notzeroc
%11 0,16*7
%11 288*2,16*6
%11 288*4,16*5
%11 288*6,16*4
%11 288*8,16*3
%11 288*10,16*2
%11 288*12,16*1
%11 288*14,0
add ecx,2
add edi,2
dec dword[tleftnb]
jnz near %%loopfc
sub edi,16
jmp %%end
%%parttile
%2
; start drawing from ecx
test dword[vrama+eax],4000h
jz %%notflipxpart
add ecx,128
%%notflipxpart
test dword[vrama+eax],8000h
jnz near %%flipyfullp
mov dword[tleftnb],8
%%loopfap
dec dword[ngcpixleft]
jnz %%notzerop
call Nextwinmode
%%notzerop
%12 0,0
%12 288*2,16
%12 288*4,16*2
%12 288*6,16*3
%12 288*8,16*4
%12 288*10,16*5
%12 288*12,16*6
%12 288*14,16*7
add ecx,2
add edi,2
dec dword[tleftnb]
jnz near %%loopfap
sub edi,16
jmp %%end
%%flipyfullp
mov dword[tleftnb],8
%%loopfcp
dec dword[ngcpixleft]
jnz %%notzerocp
call Nextwinmode
%%notzerocp
%12 0,16*7
%12 288*2,16*6
%12 288*4,16*5
%12 288*6,16*4
%12 288*8,16*3
%12 288*10,16*2
%12 288*12,16*1
%12 288*14,0
add ecx,2
add edi,2
dec dword[tleftnb]
jnz near %%loopfcp
sub edi,16
jmp %%end
%%skip
processwinpixel
processwinpixel
processwinpixel
processwinpixel
%%end
pop edx
pop ecx
inc cx
test dword[vrama+eax],4000h
jz %%noflipxb
sub cx,2
%%noflipxb
add edi,16
xor dword[switch16x16],1
jnz near %%nexttile
%%ntile
mov ebx,[ng16bbgval]
add ax,2
inc dword[bg1totng+ebx*4]
test eax,03Fh
jz near %%tileadd
%%next
dec byte[tleftn]
jnz near %4
pop ebx
ret
%%done
%5
processwinpixel
processwinpixel
processwinpixel
processwinpixel
processwinpixel
processwinpixel
processwinpixel
processwinpixel
add edi,32
jmp %%ntile
%%docache
call %3
mov byte[%9+ecx],dl
call %10
jmp %%returnfromcache
%%tileadd
add ax,[bgtxadd]
jmp %%next
%endmacro
%macro drawlinengomwin16b16x16 9
; 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
jmp %%endokay
%2
; start drawing from ecx to edi
test word[vrama+eax],8000h
jnz near %%flipypart
add ecx,[yposng]
jmp %%notflipypart
%%flipypart
add ecx,[flipyposng]
%%notflipypart
test word[vrama+eax],4000h
jnz near %%flipxpart
push eax
xor ebx,ebx
mov esi,ecx
mov eax,[CPalPtrng]
%9 0,0,%8
%9 1,2,%8
%9 2,4,%8
%9 3,6,%8
%9 4,8,%8
%9 5,10,%8
%9 6,12,%8
%9 7,14,%8
pop eax
jmp %%endokay
%%flipxpart
push eax
xor ebx,ebx
mov esi,ecx
mov eax,[CPalPtrng]
%9 7,0,%8
%9 6,2,%8
%9 5,4,%8
%9 4,6,%8
%9 3,8,%8
%9 2,10,%8
%9 1,12,%8
%9 0,14,%8
pop eax
jmp %%endokay
%5
processwinpixel
processwinpixel
processwinpixel
processwinpixel
%%endokay
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,[ofsmval]
and dword[ofsmcptr2],3Fh
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -