📄 newgfx16.asm
字号:
test dword[bgcmsung],1010h
jz near .nosprprme
Procsprng23456716b ngmain ,10h
.nosprprme
test byte[scrndis],1h
jnz near .nodobg1mb
test dword[bgcmsung],101h
jz near .nodobg1mb
mov eax,[bg1totng]
cmp eax,[bg1drwng]
je near .nodobg1mb
mov dword[mode0ads],00000000h
Procbgpr116b 0, drawbg1linepr116b, drawbg1tilepr116b, prdatb, ngmain, 1h
.nodobg1mb
; draw sprites mode 0-7
test byte[scrndis],10h
jnz near .nosprprmf
test dword[bgcmsung],1010h
jz near .nosprprmf
Procsprng16b ngmain, 10h
.nosprprmf
test byte[scrndis],4h
jnz near .nodobg3mb2
cmp byte[modeused+1],0
je near .nodobg3mb2
test dword[bgcmsung],404h
jz near .nodobg3mb2
mov eax,[bg3totng]
cmp eax,[bg3drwng]
je near .nodobg3mb2
mov dword[mode0ads],40404040h
Procbg3pr1b16b 2, drawbg3linepr116b, drawbg3tilepr116b, prdatc, ngmain, 4h
.nodobg3mb2
call MainScreenClip
call ProcessTransparencies
.dontdraw
xor ebx,ebx
xor ecx,ecx
xor eax,eax
pop ebp
pop edi
pop esi
pop edx
ret
NEWSYM domosaicng16b
mov esi,[pesimpng]
xor eax,eax
mov edi,xtravbuf+32
mov al,[curmosaicsz]
cmp al,16
ja .notokay
cmp al,1
jbe .notokay
push esi
push ebx
mov ebx,[mosclineval]
mov cl,[mostranspval]
cmp byte[BGMA+ebx],7
je .main
test byte[BGMS1+ebx*2],cl
jz .nosubmain
test byte[FillSubScr+ebx],1
jnz .transpstuff
jmp .main
.nosubmain
test byte[FillSubScr+ebx],1
jz .main
add esi,75036*2
.main
pop ebx
jmp [mosjmptab16b+eax*4-8]
pop esi
.notokay
ret
.transpstuff
test byte[BGMS1+ebx*2+1],cl
jnz near .mosaicms
test byte[scadtng+ebx],cl
jz near .main
pop ebx
jmp [mosjmptab16bt+eax*4-8]
pop esi
ret
.mosaicms
test byte[scadtng+ebx],cl
jz near .mosaicmsnt
pop ebx
jmp [mosjmptab16btms+eax*4-8]
pop esi
ret
.mosaicmsnt
pop ebx
jmp [mosjmptab16bntms+eax*4-8]
pop esi
ret
%macro mosaic2 1
mov [esi+%1],ax
mov [esi+%1+2],ax
%endmacro
%macro mosaic3 1
mov [esi+%1],ax
mov [esi+%1+2],ax
mov [esi+%1+4],ax
%endmacro
%macro mosaic4 1
mov [esi+%1],ax
mov [esi+%1+2],ax
mov [esi+%1+4],ax
mov [esi+%1+6],ax
%endmacro
%macro mosaic5 1
mov [esi+%1],ax
mov [esi+%1+2],ax
mov [esi+%1+4],ax
mov [esi+%1+6],ax
mov [esi+%1+8],ax
%endmacro
%macro mosaic6 1
mov [esi+%1],ax
mov [esi+%1+2],ax
mov [esi+%1+4],ax
mov [esi+%1+6],ax
mov [esi+%1+8],ax
mov [esi+%1+10],ax
%endmacro
%macro mosaic7 1
mov [esi+%1],ax
mov [esi+%1+2],ax
mov [esi+%1+4],ax
mov [esi+%1+6],ax
mov [esi+%1+8],ax
mov [esi+%1+10],ax
mov [esi+%1+12],ax
%endmacro
%macro mosaic8 1
mov [esi+%1],ax
mov [esi+%1+2],ax
mov [esi+%1+4],ax
mov [esi+%1+6],ax
mov [esi+%1+8],ax
mov [esi+%1+10],ax
mov [esi+%1+12],ax
mov [esi+%1+14],ax
%endmacro
%macro mosaic9 1
mov [esi+%1],ax
mov [esi+%1+2],ax
mov [esi+%1+4],ax
mov [esi+%1+6],ax
mov [esi+%1+8],ax
mov [esi+%1+10],ax
mov [esi+%1+12],ax
mov [esi+%1+14],ax
mov [esi+%1+16],ax
%endmacro
%macro mosaic10 1
mov [esi+%1],ax
mov [esi+%1+2],ax
mov [esi+%1+4],ax
mov [esi+%1+6],ax
mov [esi+%1+8],ax
mov [esi+%1+10],ax
mov [esi+%1+12],ax
mov [esi+%1+14],ax
mov [esi+%1+16],ax
mov [esi+%1+18],ax
%endmacro
%macro mosaic11 1
mov [esi+%1],ax
mov [esi+%1+2],ax
mov [esi+%1+4],ax
mov [esi+%1+6],ax
mov [esi+%1+8],ax
mov [esi+%1+10],ax
mov [esi+%1+12],ax
mov [esi+%1+14],ax
mov [esi+%1+16],ax
mov [esi+%1+18],ax
mov [esi+%1+20],ax
%endmacro
%macro mosaic12 1
mov [esi+%1],ax
mov [esi+%1+2],ax
mov [esi+%1+4],ax
mov [esi+%1+6],ax
mov [esi+%1+8],ax
mov [esi+%1+10],ax
mov [esi+%1+12],ax
mov [esi+%1+14],ax
mov [esi+%1+16],ax
mov [esi+%1+18],ax
mov [esi+%1+20],ax
mov [esi+%1+22],ax
%endmacro
%macro mosaic13 1
mov [esi+%1],ax
mov [esi+%1+2],ax
mov [esi+%1+4],ax
mov [esi+%1+6],ax
mov [esi+%1+8],ax
mov [esi+%1+10],ax
mov [esi+%1+12],ax
mov [esi+%1+14],ax
mov [esi+%1+16],ax
mov [esi+%1+18],ax
mov [esi+%1+20],ax
mov [esi+%1+22],ax
mov [esi+%1+24],ax
%endmacro
%macro mosaic14 1
mov [esi+%1],ax
mov [esi+%1+2],ax
mov [esi+%1+4],ax
mov [esi+%1+6],ax
mov [esi+%1+8],ax
mov [esi+%1+10],ax
mov [esi+%1+12],ax
mov [esi+%1+14],ax
mov [esi+%1+16],ax
mov [esi+%1+18],ax
mov [esi+%1+20],ax
mov [esi+%1+22],ax
mov [esi+%1+24],ax
mov [esi+%1+26],ax
%endmacro
%macro mosaic15 1
mov [esi+%1],ax
mov [esi+%1+2],ax
mov [esi+%1+4],ax
mov [esi+%1+6],ax
mov [esi+%1+8],ax
mov [esi+%1+10],ax
mov [esi+%1+12],ax
mov [esi+%1+14],ax
mov [esi+%1+16],ax
mov [esi+%1+18],ax
mov [esi+%1+20],ax
mov [esi+%1+22],ax
mov [esi+%1+24],ax
mov [esi+%1+26],ax
mov [esi+%1+28],ax
%endmacro
%macro mosaic16 1
mov [esi+%1],ax
mov [esi+%1+2],ax
mov [esi+%1+4],ax
mov [esi+%1+6],ax
mov [esi+%1+8],ax
mov [esi+%1+10],ax
mov [esi+%1+12],ax
mov [esi+%1+14],ax
mov [esi+%1+16],ax
mov [esi+%1+18],ax
mov [esi+%1+20],ax
mov [esi+%1+22],ax
mov [esi+%1+24],ax
mov [esi+%1+26],ax
mov [esi+%1+28],ax
mov [esi+%1+30],ax
%endmacro
%macro mosaicproc 3
mov ecx,%1
.next
mov ax,[edi]
cmp ax,0FFFFh
je .nodraw
%2 0
mosender %3
%endmacro
%macro mosaicproct 3
mov ecx,%1
.next
mov ax,[edi]
cmp ax,0FFFFh
je .nodraw
or ax,[UnusedBit]
%2 0
mosender %3
%endmacro
%macro mosaicprocntms 3
mov ecx,%1
.next
mov ax,[edi]
cmp ax,0FFFFh
je near .nodraw
%2 0
%2 75036*2
mosender %3
%endmacro
%macro mosaicproctms 3
mov ecx,%1
.next
mov ax,[edi]
cmp ax,0FFFFh
je near .nodraw
or ax,[UnusedBit]
%2 0
and ax,[UnusedBit]
%2 75036*2
mosender %3
%endmacro
NEWSYM mosdraw216b
mosaicproc 128,mosaic2,2
NEWSYM mosdraw316b
mosaicproc 86,mosaic3,3
NEWSYM mosdraw416b
mosaicproc 64,mosaic4,4
NEWSYM mosdraw516b
mosaicproc 52,mosaic5,5
NEWSYM mosdraw616b
mosaicproc 43,mosaic6,6
NEWSYM mosdraw716b
mosaicproc 37,mosaic7,7
NEWSYM mosdraw816b
mosaicproc 32,mosaic8,8
NEWSYM mosdraw916b
mosaicproc 29,mosaic9,9
NEWSYM mosdraw1016b
mosaicproc 26,mosaic10,10
NEWSYM mosdraw1116b
mosaicproc 24,mosaic11,11
NEWSYM mosdraw1216b
mosaicproc 22,mosaic12,12
NEWSYM mosdraw1316b
mosaicproc 20,mosaic13,13
NEWSYM mosdraw1416b
mosaicproc 19,mosaic14,14
NEWSYM mosdraw1516b
mosaicproc 18,mosaic15,15
NEWSYM mosdraw1616b
mosaicproc 16,mosaic16,16
NEWSYM mosdraw216bt
mosaicproct 128,mosaic2,2
NEWSYM mosdraw316bt
mosaicproct 86,mosaic3,3
NEWSYM mosdraw416bt
mosaicproct 64,mosaic4,4
NEWSYM mosdraw516bt
mosaicproct 52,mosaic5,5
NEWSYM mosdraw616bt
mosaicproct 43,mosaic6,6
NEWSYM mosdraw716bt
mosaicproct 37,mosaic7,7
NEWSYM mosdraw816bt
mosaicproct 32,mosaic8,8
NEWSYM mosdraw916bt
mosaicproct 29,mosaic9,9
NEWSYM mosdraw1016bt
mosaicproct 26,mosaic10,10
NEWSYM mosdraw1116bt
mosaicproct 24,mosaic11,11
NEWSYM mosdraw1216bt
mosaicproct 22,mosaic12,12
NEWSYM mosdraw1316bt
mosaicproct 20,mosaic13,13
NEWSYM mosdraw1416bt
mosaicproct 19,mosaic14,14
NEWSYM mosdraw1516bt
mosaicproct 18,mosaic15,15
NEWSYM mosdraw1616bt
mosaicproct 16,mosaic16,16
NEWSYM mosdraw216btms
mosaicproctms 128,mosaic2,2
NEWSYM mosdraw316btms
mosaicproctms 86,mosaic3,3
NEWSYM mosdraw416btms
mosaicproctms 64,mosaic4,4
NEWSYM mosdraw516btms
mosaicproctms 52,mosaic5,5
NEWSYM mosdraw616btms
mosaicproctms 43,mosaic6,6
NEWSYM mosdraw716btms
mosaicproctms 37,mosaic7,7
NEWSYM mosdraw816btms
mosaicproctms 32,mosaic8,8
NEWSYM mosdraw916btms
mosaicproctms 29,mosaic9,9
NEWSYM mosdraw1016btms
mosaicproctms 26,mosaic10,10
NEWSYM mosdraw1116btms
mosaicproctms 24,mosaic11,11
NEWSYM mosdraw1216btms
mosaicproctms 22,mosaic12,12
NEWSYM mosdraw1316btms
mosaicproctms 20,mosaic13,13
NEWSYM mosdraw1416btms
mosaicproctms 19,mosaic14,14
NEWSYM mosdraw1516btms
mosaicproctms 18,mosaic15,15
NEWSYM mosdraw1616btms
mosaicproctms 16,mosaic16,16
NEWSYM mosdraw216bntms
mosaicprocntms 128,mosaic2,2
NEWSYM mosdraw316bntms
mosaicprocntms 86,mosaic3,3
NEWSYM mosdraw416bntms
mosaicprocntms 64,mosaic4,4
NEWSYM mosdraw516bntms
mosaicprocntms 52,mosaic5,5
NEWSYM mosdraw616bntms
mosaicprocntms 43,mosaic6,6
NEWSYM mosdraw716bntms
mosaicprocntms 37,mosaic7,7
NEWSYM mosdraw816bntms
mosaicprocntms 32,mosaic8,8
NEWSYM mosdraw916bntms
mosaicprocntms 29,mosaic9,9
NEWSYM mosdraw1016bntms
mosaicprocntms 26,mosaic10,10
NEWSYM mosdraw1116bntms
mosaicprocntms 24,mosaic11,11
NEWSYM mosdraw1216bntms
mosaicprocntms 22,mosaic12,12
NEWSYM mosdraw1316bntms
mosaicprocntms 20,mosaic13,13
NEWSYM mosdraw1416bntms
mosaicprocntms 19,mosaic14,14
NEWSYM mosdraw1516bntms
mosaicprocntms 18,mosaic15,15
NEWSYM mosdraw1616bntms
mosaicprocntms 16,mosaic16,16
NEWSYM drawbg1tile16b
mov byte[prdatb+ebx],1
drawbgtileng16b 0,0
ret
NEWSYM drawbg2tile16b
mov byte[prdata+ebx],1
drawbgtileng16b 1,1
ret
NEWSYM drawbg3tile16b
mov byte[prdatc+ebx],1
drawbgtileng16b 2,2
ret
NEWSYM drawbg4tile16b
mov byte[prdata+ebx],1
drawbgtileng16b 3,3
ret
NEWSYM drawbg1tilepr116b
drawbgtilengpr116b 0,0
ret
NEWSYM drawbg2tilepr116b
drawbgtilengpr116b 1,1
ret
NEWSYM drawbg3tilepr116b
drawbgtilengpr116b 2,2
ret
NEWSYM drawbg4tilepr116b
drawbgtilengpr116b 3,3
ret
NEWSYM drawbg1line16b
mov byte[prdatb+ebx],0
drawbglineng16b 0,0
NEWSYM drawbg2line16b
mov byte[prdata+ebx],0
drawbglineng16b 1,1
NEWSYM drawbg3line16b
mov byte[prdatc+ebx],0
drawbglineng16b 2,2
NEWSYM drawbg4line16b
mov byte[prdata+ebx],0
drawbglineng16b 3,3
NEWSYM drawbg1linepr116b
drawbglinengpr116b 0,0
NEWSYM drawbg2linepr116b
drawbglinengpr116b 1,1
NEWSYM drawbg3linepr116b
drawbglinengpr116b 2,2
NEWSYM drawbg4linepr116b
drawbglinengpr116b 3,3
%macro normalsprng16b 2
test dword[sprleftpr+ebx*4],80000000h
jnz near .drawsingle
push esi
push ebx
add edi,esi
mov esi,[sprtbng+ebx*4]
mov edx,esi
xor ebx,ebx
.loopobj
test byte[esi+7],20h
jnz near .drawspriteflipx
mov bx,[esi]
push edx
mov ch,[esi+6]
mov dl,[esi+7]
and edx,03h
cmp edx,[csprival]
jne near .notprio
mov esi,[esi+2]
mov dl,[csprbit]
sprdrawa16b %1
pop edx
.nodrawspr
add edx,8
mov esi,edx
dec cl
jnz near .loopobj
rol byte[csprbit],1
cmp byte[csprbit],1
je near .clearcsprmem
pop ebx
pop esi
ret
.notprio
mov esi,[esi+2]
mov dl,[csprbit]
sprdrawa sprdrawpra2
pop edx
add edx,8
mov esi,edx
dec cl
jnz near .loopobj
rol byte[csprbit],1
cmp byte[csprbit],1
je near .clearcsprmem
pop ebx
pop esi
ret
.drawspriteflipx
mov bx,[esi]
push edx
mov ch,[esi+6]
mov dl,[esi+7]
and edx,03h
cmp edx,[csprival]
jne near .notpriof
mov esi,[esi+2]
mov dl,[csprbit]
sprdrawaf16b %1
pop edx
add edx,8
mov esi,edx
dec cl
jnz near .loopobj
rol byte[csprbit],1
cmp byte[csprbit],1
je near .clearcsprmem
.endobj
pop ebx
pop esi
ret
.notpriof
mov esi,[esi+2]
mov dl,[csprbit]
sprdrawaf sprdrawpra2
pop edx
add edx,8
mov esi,edx
dec cl
jnz near .loopobj
rol byte[csprbit],1
cmp byte[csprbit],1
je near .clearcsprmem
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -