📄 newgfx16.mac
字号:
jz %%skip
add al,ch
mov ax,[ebp+eax*2+512]
cmp ch,128+64
jae %%yestransp
and eax,[UnusedBitXor]
%%yestransp
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
and eax,[UnusedBitXor]
mov [edi+ebx*2-%1*2+75036*2],ax
mov [edi+ebx*2-%1*2+75036*6],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprawb16bngmsthr 1
or al,al
jz %%skip
add al,dh
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
cmp byte[ecx+ebx-%1],1
je %%skip
or byte[sprpriodata+ebx-%1+16],dl
mov ax,[ebp+eax*2+512]
cmp dh,128+64
jae %%yestransp
and eax,[UnusedBitXor]
%%yestransp
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
and eax,[UnusedBitXor]
mov [edi+ebx*2-%1*2+75036*2],ax
mov [edi+ebx*2-%1*2+75036*6],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprbwb16bngmsthr 1
or al,al
jz %%skip
add al,dh
cmp byte[ecx+ebx-%1],1
je %%skip
mov ax,[ebp+eax*2+512]
cmp dh,128+64
jae %%yestransp
and eax,[UnusedBitXor]
%%yestransp
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
and eax,[UnusedBitXor]
mov [edi+ebx*2-%1*2+75036*2],ax
mov [edi+ebx*2-%1*2+75036*6],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprawb16bngsthr 1
or al,al
jz %%skip
add al,dh
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
or byte[sprpriodata+ebx-%1+16],dl
mov ax,[ebp+eax*2+512]
cmp dh,128+64
jae %%yestransp
and eax,[UnusedBitXor]
%%yestransp
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
cmp byte[ecx+ebx-%1],1
je %%skip
and eax,[UnusedBitXor]
mov [edi+ebx*2-%1*2+75036*2],ax
mov [edi+ebx*2-%1*2+75036*6],ax
%%skip
xor eax,eax
%endmacro
%macro sprdrawprbwb16bngsthr 1
or al,al
jz %%skip
add al,dh
mov ax,[ebp+eax*2+512]
cmp dh,128+64
jae %%yestransp
and eax,[UnusedBitXor]
%%yestransp
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
cmp byte[ecx+ebx-%1],1
je %%skip
and eax,[UnusedBitXor]
mov [edi+ebx*2-%1*2+75036*2],ax
mov [edi+ebx*2-%1*2+75036*6],ax
%%skip
xor eax,eax
%endmacro
%macro sprdrawprawb16bngmthr 1
or al,al
jz %%skip
add al,dh
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
or byte[sprpriodata+ebx-%1+16],dl
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2+75036*2],ax
mov [edi+ebx*2-%1*2+75036*6],ax
cmp byte[ecx+ebx-%1],1
je %%skip
cmp dh,128+64
jae %%yestransp
and eax,[UnusedBitXor]
%%yestransp
or ax,[UnusedBit]
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
%%skip
xor eax,eax
%endmacro
%macro sprdrawprbwb16bngmthr 1
or al,al
jz %%skip
add al,dh
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2+75036*2],ax
mov [edi+ebx*2-%1*2+75036*6],ax
cmp byte[ecx+ebx-%1],1
je %%skip
or ax,[UnusedBit]
cmp dh,128+64
jae %%yestransp
and eax,[UnusedBitXor]
%%yestransp
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
%%skip
xor eax,eax
%endmacro
%macro sprdrawpra16bngnthr 1
or al,al
jz %%skip
add al,ch
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
xor eax,eax
or byte[sprpriodata+ebx-%1+16],dl
%%skip
%endmacro
%macro sprdrawprb16bngnthr 1
or al,al
jz %%skip
add al,ch
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprawb16bngnthr 1
or al,al
jz %%skip
add al,dh
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
or byte[sprpriodata+ebx-%1+16],dl
cmp byte[ecx+ebx-%1],1
je %%skip
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprbwb16bngnthr 1
or al,al
jz %%skip
add al,dh
cmp byte[ecx+ebx-%1],1
je %%skip
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawpra16bngmsnthr 1
or al,al
jz %%skip
add al,ch
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
mov [edi+ebx*2-%1*2+75036*2],ax
mov [edi+ebx*2-%1*2+75036*6],ax
xor eax,eax
or byte[sprpriodata+ebx-%1+16],dl
%%skip
%endmacro
%macro sprdrawprb16bngmsnthr 1
or al,al
jz %%skip
add al,ch
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
mov [edi+ebx*2-%1*2+75036*2],ax
mov [edi+ebx*2-%1*2+75036*6],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprawb16bngmsnthr 1
or al,al
jz %%skip
add al,dh
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
or byte[sprpriodata+ebx-%1+16],dl
cmp byte[ecx+ebx-%1],1
je %%skip
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
mov [edi+ebx*2-%1*2+75036*2],ax
mov [edi+ebx*2-%1*2+75036*6],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprbwb16bngmsnthr 1
or al,al
jz %%skip
add al,dh
cmp byte[ecx+ebx-%1],1
je %%skip
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
mov [edi+ebx*2-%1*2+75036*2],ax
mov [edi+ebx*2-%1*2+75036*6],ax
xor eax,eax
%%skip
%endmacro
%macro sprdrawprawb16bngsnthr 1
or al,al
jz %%skip
add al,dh
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
or byte[sprpriodata+ebx-%1+16],dl
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
cmp byte[ecx+ebx-%1],1
je %%skip
mov [edi+ebx*2-%1*2+75036*2],ax
mov [edi+ebx*2-%1*2+75036*6],ax
%%skip
xor eax,eax
%endmacro
%macro sprdrawprbwb16bngsnthr 1
or al,al
jz %%skip
add al,dh
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
cmp byte[ecx+ebx-%1],1
je %%skip
mov [edi+ebx*2-%1*2+75036*2],ax
mov [edi+ebx*2-%1*2+75036*6],ax
%%skip
xor eax,eax
%endmacro
%macro sprdrawprawb16bngmnthr 1
or al,al
jz %%skip
add al,dh
test byte[sprpriodata+ebx-%1+16],dl
jnz %%skip
or byte[sprpriodata+ebx-%1+16],dl
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2+75036*2],ax
mov [edi+ebx*2-%1*2+75036*6],ax
cmp byte[ecx+ebx-%1],1
je %%skip
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
%%skip
xor eax,eax
%endmacro
%macro sprdrawprbwb16bngmnthr 1
or al,al
jz %%skip
add al,dh
mov ax,[ebp+eax*2]
mov [edi+ebx*2-%1*2+75036*2],ax
mov [edi+ebx*2-%1*2+75036*6],ax
cmp byte[ecx+ebx-%1],1
je %%skip
mov [edi+ebx*2-%1*2],ax
mov [edi+ebx*2-%1*2+75036*4],ax
%%skip
xor eax,eax
%endmacro
%macro sprdrawpra216bnghr 1
or al,al
jz %%skip
or byte[sprpriodata+ebx-%1+16],dl
%%skip
%endmacro
%macro Procbgpr016b 5
; Draw BG 2
; Start line by line drawing/check
mov esi,[vidbuffer]
add esi,16*2
; add esi,16*2+288*2
xor ebx,ebx
%%nextline
cmp byte[BGFB+ebx],0
jne %%nogo
%4 %5, %%nogo
; Check if at a tile alignment
mov ecx,[BG1SYl+ebx*2+%1*512]
and ecx,0FFFFh
add ecx,ebx
test ecx,07h
jz %%tilecheck
%%proclinebyline
; process line by line
push esi
mov eax,[cpalval+ebx*4]
mov [CPalPtrng],eax
call %2
pop esi
%%nogo
inc ebx
add esi,288*2
cmp [resolutn],bx
jne %%nextline
jmp %%donextbg
%%tilecheck
cmp dword[startlinet],ebx
jae %%proclinebyline
cmp dword[endlinet],ebx
jbe %%proclinebyline
test dword[bgwinchange+ebx],0FFFFFF00h
jnz %%linebyline
test dword[bgwinchange+ebx+4],0FFFFFFFFh
jz %%tilebytile
%%linebyline
test dword[winbg1enval+ebx+%1*256],0A0A0A0Ah
jnz %%proclinebyline
test dword[winbg1enval+ebx+%1*256+4],0A0A0A0Ah
jnz %%proclinebyline
%%tilebytile
cmp ebx,[reslbyl]
jae %%proclinebyline
test dword[bgallchange+ebx],0FFFFFF00h
jnz %%proclinebyline
test dword[bgallchange+ebx+4],0FFFFFFFFh
jnz near %%proclinebyline
test dword[bg1change+ebx+%1*256],0FFFFFF00h
jnz near %%proclinebyline
test dword[bg1change+ebx+%1*256+4],0FFFFFFFFh
jnz near %%proclinebyline
cmp byte[BGMA+ebx],5
jae near %%proclinebyline
cmp byte[BGMA+ebx],2
je near %%proclinebyline
test byte[mosenng+ebx],1 << %1
jnz %%mosaic
%%nomosaic
mov ax,[resolutn]
sub ax,8
cmp bx,ax
jae near %%proclinebyline
push esi
call %3
pop esi
add ebx,8
add esi,288*2*8
cmp [resolutn],bx
ja near %%nextline
jmp %%donextbg
%%mosaic
cmp byte[mosszng+ebx],0
je %%nomosaic
jmp %%proclinebyline
%%donextbg
%endmacro
%macro Procbg3pr016b 5
; Draw BG 2
; Start line by line drawing/check
mov esi,[vidbuffer]
add esi,16*2
; add esi,16+288
xor ebx,ebx
%%nextline
cmp byte[BGFB+ebx],0
jne %%nogo
%4 %5, %%nogo
; Check if at a tile alignment
mov ecx,[BG1SYl+ebx*2+%1*512]
and ecx,0FFFFh
add ecx,ebx
test ecx,07h
jz %%tilecheck
%%proclinebyline
; process line by line
push esi
mov eax,[cpalval+ebx*4]
mov [CPalPtrng],eax
call %2
pop esi
%%nogo
inc ebx
add esi,288*2
cmp [resolutn],bx
jne %%nextline
jmp %%donextbg
%%tilecheck
cmp dword[startlinet],ebx
jae %%proclinebyline
cmp dword[endlinet],ebx
jbe %%proclinebyline
test dword[bgwinchange+ebx],0FFFFFF00h
jnz %%linebyline
test dword[bgwinchange+ebx+4],0FFFFFFFFh
jz %%tilebytile
%%linebyline
test dword[winbg1enval+ebx+%1*256],0A0A0A0Ah
jnz %%proclinebyline
test dword[winbg1enval+ebx+%1*256+4],0A0A0A0Ah
jnz %%proclinebyline
%%tilebytile
cmp ebx,[reslbyl]
jae %%proclinebyline
test dword[bgallchange+ebx],0FFFFFF00h
jnz %%proclinebyline
test dword[bgallchange+ebx+4],0FFFFFFFFh
jnz near %%proclinebyline
test dword[bg1change+ebx+%1*256],0FFFFFF00h
jnz near %%proclinebyline
test dword[bg1change+ebx+%1*256+4],0FFFFFFFFh
jnz near %%proclinebyline
mov eax,[BG3PRI+ebx]
cmp eax,[BG3PRI+ebx+4]
jne near %%proclinebyline
test byte[mosenng+ebx],1 << %1
jnz %%mosaic
%%nomosaic
mov ax,[resolutn]
sub ax,8
cmp bx,ax
jae near %%proclinebyline
push esi
call %3
pop esi
add ebx,8
add esi,288*8*2
cmp [resolutn],bx
ja near %%nextline
jmp %%donextbg
%%mosaic
cmp byte[mosszng+ebx],0
je %%nomosaic
jmp %%proclinebyline
%%donextbg
%endmacro
%macro Procbgpr116b 6
; Draw BG
; Start line by line drawing/check
mov esi,[vidbuffer]
add esi,16*2
; add esi,16*2+288*2
xor ebx,ebx
%%nextline
cmp byte[BGFB+ebx],0
jne %%nogo
%5 %6, %%nogo
; Check if at a tile alignment
cmp byte[%4+ebx],1
je %%tile
%%proclinebyline
; process line by line
push esi
mov eax,[cpalval+ebx*4]
mov [CPalPtrng],eax
call %2
pop esi
%%nogo
inc ebx
add esi,288*2
cmp [resolutn],bx
jne %%nextline
jmp %%donextbg
%%tile
push esi
mov eax,[cpalval+ebx*4]
mov [CPalPtrng],eax
call %3
pop esi
add ebx,8
add esi,288*2*8
cmp [resolutn],bx
ja near %%nextline
%%donextbg
%endmacro
%macro Procbg3pr116b 6
; Draw BG 2
; Start line by line drawing/check
mov esi,[vidbuffer]
add esi,16*2
xor ebx,ebx
%%nextline
cmp byte[BGFB+ebx],0
jne near %%nogo
%5 %6, %%nogo
cmp byte[BGMA+ebx],1
jne %%nomode1
cmp byte[BG3PRI+ebx],0
jne %%nogo
%%nomode1
; Check if at a tile alignment
cmp byte[%4+ebx],1
je %%tile
%%proclinebyline
; process line by line
push esi
mov eax,[cpalval+ebx*4]
mov [CPalPtrng],eax
call %2
pop esi
%%nogo
inc ebx
add esi,288*2
cmp [resolutn],bx
jne %%nextline
jmp %%donextbg
%%tile
push esi
mov eax,[cpalval+ebx*4]
mov [CPalPtrng],eax
call %3
pop esi
add ebx,8
add esi,288*2*8
cmp [resolutn],bx
ja near %%nextline
%%donextbg
%endmacro
%macro Procbg3pr1b16b 6
; Draw BG 2
; Start line by line drawing/check
mov esi,[vidbuffer]
add esi,16*2
xor ebx,ebx
%%nextline
cmp byte[BGFB+ebx],0
jne near %%nogo
%5 %6, %%nogo
cmp byte[BGMA+ebx],1
jne %%nogo
cmp byte[BG3PRI+ebx],0
je %%nogo
; Check if at a tile alignment
cmp byte[%4+ebx],1
je %%tile
%%proclinebyline
; process line by line
push esi
mov eax,[cpalval+ebx*4]
mov [CPalPtrng],eax
call %2
pop esi
%%nogo
inc ebx
add esi,288*2
cmp [resolutn],bx
jne %%nextline
jmp %%donextbg
%%tile
push esi
mov eax,[cpalval+ebx*4]
mov [CPalPtrng],eax
call %3
pop esi
add ebx,8
add esi,288*2*8
cmp [resolutn],bx
ja near %%nextline
%%donextbg
%endmacro
%macro Procsprng16b 2
; Draw BG 2
; Start line by line drawing/check
mov esi,[vidbuffer]
add esi,16*2+288*2
mov ebx,1
%%nextline
cmp byte[BGFB+ebx],0
jne near %%nogo
%1 %2, %%nogo
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -