📄 newgfx2.mac
字号:
test bh,%8
jz %%drawd2f
mov [edi],bh
%%drawd2f
jmp %5
%%flipypart
add ecx,[flipyposng]
test word[vrama+eax],4000h
jnz near %%flipxypart
mov ebx,[ecx]
or ebx,ebx
jz %%drawdm
add ebx,edx
test bl,%8
jz %%drawam
mov [edi],bl
%%drawam
test bh,%8
jz %%drawbm
mov [edi+1],bh
%%drawbm
shr ebx,16
test bl,%8
jz %%drawcm
mov [edi+2],bl
%%drawcm
test bh,%8
jz %%drawdm
mov [edi+3],bh
%%drawdm
mov ebx,[ecx+4]
or ebx,ebx
jz %%drawd2m
add ebx,edx
test bl,%8
jz %%drawa2m
mov [edi+4],bl
%%drawa2m
test bh,%8
jz %%drawb2m
mov [edi+5],bh
%%drawb2m
shr ebx,16
test bl,%8
jz %%drawc2m
mov [edi+6],bl
%%drawc2m
test bh,%8
jz %%drawd2m
mov [edi+7],bh
%%drawd2m
jmp %5
%%flipxypart
mov ebx,[ecx]
or ebx,ebx
jz %%drawdfm
add ebx,edx
test bl,%8
jz %%drawafm
mov [edi+7],bl
%%drawafm
test bh,%8
jz %%drawbfm
mov [edi+6],bh
%%drawbfm
shr ebx,16
test bl,%8
jz %%drawcfm
mov [edi+5],bl
%%drawcfm
test bh,%8
jz %%drawdfm
mov [edi+4],bh
%%drawdfm
mov ebx,[ecx+4]
or ebx,ebx
jz %%drawd2fm
add ebx,edx
test bl,%8
jz %%drawa2fm
mov [edi+3],bl
%%drawa2fm
test bh,%8
jz %%drawb2fm
mov [edi+2],bh
%%drawb2fm
shr ebx,16
test bl,%8
jz %%drawc2fm
mov [edi+1],bl
%%drawc2fm
test bh,%8
jz %%drawd2fm
mov [edi],bh
%%drawd2fm
%5
inc dword[bg1totng+%9*4]
add word[ofsmmptr],2
add word[ofsmtptr],2
mov ax,[ofsmmptr]
mov ebx,[yposngom]
mov edx,[flipyposngom]
mov [yposng],ebx
mov [flipyposng],edx
add edi,8
test eax,03Fh
jz near %%tileadd
%%next
mov ebx,[ofsmcptr]
add ebx,[ofsmcptr2]
add dword[ofshvaladd],8
test dword[ebx-40h],8000h
jz near %%noofsm
test dword[ebx-40h],2000h << %9
jz %%noofsm
mov ebx,[ebx-40h]
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
and dword[ofsmcptr2],3Fh
test dword[ebx-40h],8000h
jnz near %%noofsmh
test dword[ebx-40h],2000h << %9
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 domosaicng
ret
%%docache
call %3
jmp %%returnfromcache
%%tileadd
mov bx,[bgtxadd]
add ax,bx
add [ofsmmptr],bx
add word[ofsmtptr],bx
jmp %%next
%endmacro
%macro drawlinengom 8
; 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
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],8000h
jnz near %%flipyfull
add ecx,[yposng]
test dword[vrama+eax],4000h
jnz near %%flipxfull
mov ebx,[ecx]
add ebx,edx
mov [edi],ebx
mov ebx,[ecx+4]
add ebx,edx
mov [edi+4],ebx
jmp %5
%%flipxfull
mov ebx,[ecx+4]
bswap ebx
add ebx,edx
mov [edi],ebx
mov ebx,[ecx]
bswap ebx
add ebx,edx
mov [edi+4],ebx
jmp %5
%%flipyfull
add ecx,[flipyposng]
test word[vrama+eax],4000h
jnz near %%flipxyfull
mov ebx,[ecx]
add ebx,edx
mov [edi],ebx
mov ebx,[ecx+4]
add ebx,edx
mov [edi+4],ebx
jmp %5
%%flipxyfull
mov ebx,[ecx+4]
bswap ebx
add ebx,edx
mov [edi],ebx
mov ebx,[ecx]
bswap ebx
add ebx,edx
mov [edi+4],ebx
jmp %5
%%parttile
%2
; start drawing from ecx to edi
test word[vrama+eax],8000h
jnz near %%flipypart
add ecx,[yposng]
test word[vrama+eax],4000h
jnz near %%flipxpart
mov ebx,[ecx]
or ebx,ebx
jz %%drawd
add ebx,edx
test bl,%8
jz %%drawa
mov [edi],bl
%%drawa
test bh,%8
jz %%drawb
mov [edi+1],bh
%%drawb
shr ebx,16
test bl,%8
jz %%drawc
mov [edi+2],bl
%%drawc
test bh,%8
jz %%drawd
mov [edi+3],bh
%%drawd
mov ebx,[ecx+4]
or ebx,ebx
jz %%drawd2
add ebx,edx
test bl,%8
jz %%drawa2
mov [edi+4],bl
%%drawa2
test bh,%8
jz %%drawb2
mov [edi+5],bh
%%drawb2
shr ebx,16
test bl,%8
jz %%drawc2
mov [edi+6],bl
%%drawc2
test bh,%8
jz %%drawd2
mov [edi+7],bh
%%drawd2
jmp %5
%%flipxpart
mov ebx,[ecx]
or ebx,ebx
jz %%drawdf
add ebx,edx
test bl,%8
jz %%drawaf
mov [edi+7],bl
%%drawaf
test bh,%8
jz %%drawbf
mov [edi+6],bh
%%drawbf
shr ebx,16
test bl,%8
jz %%drawcf
mov [edi+5],bl
%%drawcf
test bh,%8
jz %%drawdf
mov [edi+4],bh
%%drawdf
mov ebx,[ecx+4]
or ebx,ebx
jz %%drawd2f
add ebx,edx
test bl,%8
jz %%drawa2f
mov [edi+3],bl
%%drawa2f
test bh,%8
jz %%drawb2f
mov [edi+2],bh
%%drawb2f
shr ebx,16
test bl,%8
jz %%drawc2f
mov [edi+1],bl
%%drawc2f
test bh,%8
jz %%drawd2f
mov [edi],bh
%%drawd2f
jmp %5
%%flipypart
add ecx,[flipyposng]
test word[vrama+eax],4000h
jnz near %%flipxypart
mov ebx,[ecx]
or ebx,ebx
jz %%drawdm
add ebx,edx
test bl,%8
jz %%drawam
mov [edi],bl
%%drawam
test bh,%8
jz %%drawbm
mov [edi+1],bh
%%drawbm
shr ebx,16
test bl,%8
jz %%drawcm
mov [edi+2],bl
%%drawcm
test bh,%8
jz %%drawdm
mov [edi+3],bh
%%drawdm
mov ebx,[ecx+4]
or ebx,ebx
jz %%drawd2m
add ebx,edx
test bl,%8
jz %%drawa2m
mov [edi+4],bl
%%drawa2m
test bh,%8
jz %%drawb2m
mov [edi+5],bh
%%drawb2m
shr ebx,16
test bl,%8
jz %%drawc2m
mov [edi+6],bl
%%drawc2m
test bh,%8
jz %%drawd2m
mov [edi+7],bh
%%drawd2m
jmp %5
%%flipxypart
mov ebx,[ecx]
or ebx,ebx
jz %%drawdfm
add ebx,edx
test bl,%8
jz %%drawafm
mov [edi+7],bl
%%drawafm
test bh,%8
jz %%drawbfm
mov [edi+6],bh
%%drawbfm
shr ebx,16
test bl,%8
jz %%drawcfm
mov [edi+5],bl
%%drawcfm
test bh,%8
jz %%drawdfm
mov [edi+4],bh
%%drawdfm
mov ebx,[ecx+4]
or ebx,ebx
jz %%drawd2fm
add ebx,edx
test bl,%8
jz %%drawa2fm
mov [edi+3],bl
%%drawa2fm
test bh,%8
jz %%drawb2fm
mov [edi+2],bh
%%drawb2fm
shr ebx,16
test bl,%8
jz %%drawc2fm
mov [edi+1],bl
%%drawc2fm
test bh,%8
jz %%drawd2fm
mov [edi],bh
%%drawd2fm
%5
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,8
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,[ofsmvalh]
and dword[ofsmcptr2],3Fh
test dword[ofsmcptr2],3Fh
jnz %%notzeroed
mov bx,[bgtxadd2]
add word[ofsmcptr],bx
%%notzeroed
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 domosaicng
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 + -