📄 newgfx.asm
字号:
jnz near .nodobg3sb2
cmp byte[modeused+1],0
je near .nodobg3sb2
test dword[bgcmsung],400h
jz near .nodobg3sb2
mov eax,[bg3totng]
cmp eax,[bg3drwng]
je near .nodobg3sb2
mov dword[mode0ads],40404040h
Procbg3pr1b 2, drawbg3linepr1, drawbg3tilepr1, prdatc, 400h, 4h
.nodobg3sb2
mov dword[bg1totng],0
mov dword[bg2totng],0
mov dword[bg3totng],0
mov dword[bg4totng],0
mov dword[bg1drwng],0
mov dword[bg2drwng],0
mov dword[bg3drwng],0
mov dword[bg4drwng],0
; Draw MainScreens
test byte[scrndis],8h
jnz near .nodobg4m
test dword[bgcmsung],8h
jz near .nodobg4m
mov dword[mode0ads],60606060h
Procbgpr0 3, drawbg4line, drawbg4tile, 8h, 0
.nodobg4m
test byte[scrndis],4h
jnz near .nodobg3m
test dword[bgcmsung],4h
jz near .nodobg3m
mov dword[mode0ads],40404040h
Procbg3pr0 2, drawbg3line, drawbg3tile, 4h, 0
.nodobg3m
; draw sprites mode 0-1
test byte[scrndis],10h
jnz near .nosprprma
test dword[modeused],00000101h
jz near .nosprprma
test dword[bgcmsung],10h
jz near .nosprprma
Procsprng01 10h, 0
.nosprprma
test byte[scrndis],8h
jnz near .nodobg4mb
test dword[bgcmsung],8h
jz near .nodobg4mb
mov eax,[bg4totng]
cmp eax,[bg4drwng]
je near .nodobg4mb
mov dword[mode0ads],60606060h
Procbgpr1 3, drawbg4linepr1, drawbg4tilepr1, prdata, 8h, 0
.nodobg4mb
test byte[scrndis],4h
jnz near .nodobg3mb
test dword[bgcmsung],4h
jz near .nodobg3mb
mov eax,[bg3totng]
cmp eax,[bg3drwng]
je near .nodobg3mb
mov dword[mode0ads],40404040h
Procbg3pr1 2, drawbg3linepr1, drawbg3tilepr1, prdatc, 4h, 0
.nodobg3mb
; draw sprites mode 0-1
test byte[scrndis],10h
jnz near .nosprprmb
test dword[modeused],00000101h
jz near .nosprprmb
test dword[bgcmsung],10h
jz near .nosprprmb
Procsprng01 10h, 0
.nosprprmb
test byte[scrndis],2h
jnz near .nodobg2m
test dword[bgcmsung],2h
jz near .nodobg2m
mov dword[mode0ads],20202020h
Procbgpr0 1, drawbg2line, drawbg2tile, 2h, 0
.nodobg2m
; draw mode 7 extbg pr 0
cmp byte[ngextbg],0
je near .noextbgmn
test dword[bgcmsung],3h
jz near .noextbgmn
ProcMode7ngextbg 3h, 0
.noextbgmn
; draw sprites mode 2-7
test byte[scrndis],10h
jnz near .nosprprmc
test dword[modeused],01010000h
jnz near .yessprprmc
test dword[modeused+4],01010101h
jz near .nosprprmc
.yessprprmc
test dword[bgcmsung],10h
jz near .nosprprmc
Procsprng234567 10h, 0h
.nosprprmc
test byte[scrndis],1h
jnz near .nodobg1m
test dword[bgcmsung],1h
jz near .nodobg1m
mov dword[mode0ads],00000000h
Procbgpr0 0, drawbg1line, drawbg1tile, 1h, 0
.nodobg1m
; draw mode 7, priority 0
cmp byte[modeused+7],0
je near .nomode7m
test dword[bgcmsung],1h
jz near .nomode7m
ProcMode7ng 1h, 0
.nomode7m
; draw sprites mode 0-7
test byte[scrndis],10h
jnz near .nosprprmd
test dword[bgcmsung],10h
jz near .nosprprmd
Procsprng 10h, 0
.nosprprmd
; draw mode 7 extbg pr 1
cmp byte[ngextbg],0
je near .noextbgmn2
test dword[bgcmsung],3h
jz near .noextbgmn2
ProcMode7ngextbg2 2h, 0
.noextbgmn2
test byte[scrndis],2h
jnz near .nodobg2mb
test dword[bgcmsung],2h
jz near .nodobg2mb
mov eax,[bg2totng]
cmp eax,[bg2drwng]
je near .nodobg2mb
mov dword[mode0ads],20202020h
Procbgpr1 1, drawbg2linepr1, drawbg2tilepr1, prdata, 2h, 0
.nodobg2mb
; draw sprites mode 2-7
test byte[scrndis],10h
jnz near .nosprprme
test dword[modeused],01010000h
jnz near .yessprprme
test dword[modeused+4],01010101h
jz near .nosprprme
.yessprprme
test dword[bgcmsung],10h
jz near .nosprprme
Procsprng234567 10h, 0
.nosprprme
test byte[scrndis],1h
jnz near .nodobg1mb
test dword[bgcmsung],1h
jz near .nodobg1mb
mov eax,[bg1totng]
cmp eax,[bg1drwng]
je near .nodobg1mb
mov dword[mode0ads],00000000h
Procbgpr1 0, drawbg1linepr1, drawbg1tilepr1, prdatb, 1h, 0
.nodobg1mb
; draw sprites mode 0-7
test byte[scrndis],10h
jnz near .nosprprmf
test dword[bgcmsung],10h
jz near .nosprprmf
Procsprng 10h, 0
.nosprprmf
test byte[scrndis],4h
jnz near .nodobg3mb2
cmp byte[modeused+1],0
je near .nodobg3mb2
test dword[bgcmsung],4h
jz near .nodobg3mb2
mov eax,[bg3totng]
cmp eax,[bg3drwng]
je near .nodobg3mb2
mov dword[mode0ads],40404040h
Procbg3pr1b 2, drawbg3linepr1, drawbg3tilepr1, prdatc, 4h, 0
.nodobg3mb2
.dontdraw
xor ebx,ebx
xor ecx,ecx
pop ebp
pop edi
pop esi
pop edx
ret
NEWSYM drawbg1tile
mov byte[prdatb+ebx],1
drawbgtileng 0,0
ret
NEWSYM drawbg2tile
mov byte[prdata+ebx],1
drawbgtileng 1,1
ret
NEWSYM drawbg3tile
mov byte[prdatc+ebx],1
drawbgtileng 2,2
ret
NEWSYM drawbg4tile
mov byte[prdata+ebx],1
drawbgtileng 3,1
ret
NEWSYM drawbg1tilepr1
drawbgtilengpr1 0,0
ret
NEWSYM drawbg2tilepr1
drawbgtilengpr1 1,1
ret
NEWSYM drawbg3tilepr1
drawbgtilengpr1 2,2
ret
NEWSYM drawbg4tilepr1
drawbgtilengpr1 3,1
ret
NEWSYM drawbg1line
mov byte[prdatb+ebx],0
drawbglineng 0,0
NEWSYM drawbg2line
mov byte[prdata+ebx],0
drawbglineng 1,1
NEWSYM drawbg3line
mov byte[prdatc+ebx],0
drawbglineng 2,2
NEWSYM drawbg4line
mov byte[prdata+ebx],0
drawbglineng 3,1
NEWSYM domosaicng
mov esi,[pesimpng]
xor eax,eax
mov edi,xtravbuf+16
mov al,[curmosaicsz]
cmp al,16
ja .notokay
cmp al,1
jbe .notokay
push esi
jmp [mosjmptab+eax*4-8]
.notokay
ret
NEWSYM mosdraw2
mov ecx,128
.next
mov al,[edi]
or al,al
jz .nodraw
mov [esi],al
mov [esi+1],al
mosender 2
NEWSYM mosdraw3
mov ecx,86
.next
mov al,[edi]
or al,al
jz .nodraw
mov [esi],al
mov [esi+1],al
mov [esi+2],al
mosender 3
NEWSYM mosdraw4
mov ecx,64
.next
mov al,[edi]
or al,al
jz .nodraw
mov [esi],al
mov [esi+1],al
mov [esi+2],al
mov [esi+3],al
mosender 4
NEWSYM mosdraw5
mov ecx,52
.next
mov al,[edi]
or al,al
jz .nodraw
mov [esi],al
mov [esi+1],al
mov [esi+2],al
mov [esi+3],al
mov [esi+4],al
mosender 5
NEWSYM mosdraw6
mov ecx,43
.next
mov al,[edi]
or al,al
jz .nodraw
mov [esi],al
mov [esi+1],al
mov [esi+2],al
mov [esi+3],al
mov [esi+4],al
mov [esi+5],al
mosender 6
NEWSYM mosdraw7
mov ecx,37
.next
mov al,[edi]
or al,al
jz .nodraw
mov [esi],al
mov [esi+1],al
mov [esi+2],al
mov [esi+3],al
mov [esi+4],al
mov [esi+5],al
mov [esi+6],al
mosender 7
NEWSYM mosdraw8
mov ecx,32
.next
mov al,[edi]
or al,al
jz .nodraw
mov [esi],al
mov [esi+1],al
mov [esi+2],al
mov [esi+3],al
mov [esi+4],al
mov [esi+5],al
mov [esi+6],al
mov [esi+7],al
mosender 8
NEWSYM mosdraw9
mov ecx,29
.next
mov al,[edi]
or al,al
jz .nodraw
mov [esi],al
mov [esi+1],al
mov [esi+2],al
mov [esi+3],al
mov [esi+4],al
mov [esi+5],al
mov [esi+6],al
mov [esi+7],al
mov [esi+8],al
mosender 9
NEWSYM mosdraw10
mov ecx,26
.next
mov al,[edi]
or al,al
jz .nodraw
mov [esi],al
mov [esi+1],al
mov [esi+2],al
mov [esi+3],al
mov [esi+4],al
mov [esi+5],al
mov [esi+6],al
mov [esi+7],al
mov [esi+8],al
mov [esi+9],al
mosender 10
NEWSYM mosdraw11
mov ecx,24
.next
mov al,[edi]
or al,al
jz .nodraw
mov [esi],al
mov [esi+1],al
mov [esi+2],al
mov [esi+3],al
mov [esi+4],al
mov [esi+5],al
mov [esi+6],al
mov [esi+7],al
mov [esi+8],al
mov [esi+9],al
mov [esi+10],al
mosender 11
NEWSYM mosdraw12
mov ecx,22
.next
mov al,[edi]
or al,al
jz .nodraw
mov [esi],al
mov [esi+1],al
mov [esi+2],al
mov [esi+3],al
mov [esi+4],al
mov [esi+5],al
mov [esi+6],al
mov [esi+7],al
mov [esi+8],al
mov [esi+9],al
mov [esi+10],al
mov [esi+11],al
mosender 12
NEWSYM mosdraw13
mov ecx,20
.next
mov al,[edi]
or al,al
jz .nodraw
mov [esi],al
mov [esi+1],al
mov [esi+2],al
mov [esi+3],al
mov [esi+4],al
mov [esi+5],al
mov [esi+6],al
mov [esi+7],al
mov [esi+8],al
mov [esi+9],al
mov [esi+10],al
mov [esi+11],al
mov [esi+12],al
mosender 13
NEWSYM mosdraw14
mov ecx,19
.next
mov al,[edi]
or al,al
jz .nodraw
mov [esi],al
mov [esi+1],al
mov [esi+2],al
mov [esi+3],al
mov [esi+4],al
mov [esi+5],al
mov [esi+6],al
mov [esi+7],al
mov [esi+8],al
mov [esi+9],al
mov [esi+10],al
mov [esi+11],al
mov [esi+12],al
mov [esi+13],al
mosender 14
NEWSYM mosdraw15
mov ecx,18
.next
mov al,[edi]
or al,al
jz .nodraw
mov [esi],al
mov [esi+1],al
mov [esi+2],al
mov [esi+3],al
mov [esi+4],al
mov [esi+5],al
mov [esi+6],al
mov [esi+7],al
mov [esi+8],al
mov [esi+9],al
mov [esi+10],al
mov [esi+11],al
mov [esi+12],al
mov [esi+13],al
mov [esi+14],al
mosender 15
NEWSYM mosdraw16
mov ecx,16
.next
mov al,[edi]
or al,al
jz .nodraw
mov [esi],al
mov [esi+1],al
mov [esi+2],al
mov [esi+3],al
mov [esi+4],al
mov [esi+5],al
mov [esi+6],al
mov [esi+7],al
mov [esi+8],al
mov [esi+9],al
mov [esi+10],al
mov [esi+11],al
mov [esi+12],al
mov [esi+13],al
mov [esi+14],al
mov [esi+15],al
mosender 16
NEWSYM drawbg1linepr1
drawbglinengpr1 0,0
NEWSYM drawbg2linepr1
drawbglinengpr1 1,1
NEWSYM drawbg3linepr1
drawbglinengpr1 2,2
NEWSYM drawbg4linepr1
drawbglinengpr1 3,1
ALIGN32
NEWSYM bgtxadd, dd 0
NEWSYM bgcyval, dd 0
NEWSYM bgcxval, dd 0
NEWSYM tleftn, dd 0
NEWSYM tleftnb, dd 0
NEWSYM bg1totng, dd 0
NEWSYM bg2totng, dd 0
NEWSYM bg3totng, dd 0
NEWSYM bg4totng, dd 0
NEWSYM bg1drwng, dd 0
NEWSYM bg2drwng, dd 0
NEWSYM bg3drwng, dd 0
NEWSYM bg4drwng, dd 0
NEWSYM sprcurng, dd 0
NEWSYM scfbl, dd 0
NEWSYM mode0ads, dd 0
NEWSYM mode0add, dd 0
NEWSYM taddnfy16x16, dd 0
NEWSYM taddfy16x16, dd 0
NEWSYM switch16x16, dd 0
NEWSYM yposng, dd 0
NEWSYM flipyposng, dd 0
NEWSYM yposngom, dd 0
NEWSYM flipyposngom, dd 0
NEWSYM drawsprng
cmp byte[winbg1enval+ebx+4*256],0
jne near drawsprngw
test dword[sprleftpr+ebx*4],80000000h
jnz near .drawsingle
push esi
push ebx
mov 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]
sprdrawa sprdrawpra
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -