📄 newgfx.asm
字号:
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]
sprdrawaf sprdrawpra
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
pop ebx
pop esi
ret
.clearcsprmem
xor eax,eax
mov ecx,64
mov edi,sprpriodata+16
rep stosd
pop ebx
pop esi
ret
.drawsingle
push esi
push ebx
mov edi,esi
mov esi,[sprtbng+ebx*4]
mov edx,ecx
and edx,0FFh
shl edx,3
sub edx,8
add edx,esi
mov esi,edx
xor ebx,ebx
.loopobj2
test byte[esi+7],20h
jnz near .drawspriteflipx2
mov bx,[esi]
mov ch,[esi+6]
mov esi,[esi+2]
sprdrawa sprdrawprb
sub edx,8
mov esi,edx
dec cl
jnz near .loopobj2
pop ebx
pop esi
ret
.drawspriteflipx2
mov bx,[esi]
mov ch,[esi+6]
mov esi,[esi+2]
sprdrawaf sprdrawprb
sub edx,8
mov esi,edx
dec cl
jnz near .loopobj2
pop ebx
pop esi
ret
NEWSYM drawsprngm7h
cmp byte[winbg1enval+ebx+4*256],0
jne near drawsprngm7w
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
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]
sprdrawaf sprdrawpra
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
pop ebx
pop esi
ret
.clearcsprmem
xor eax,eax
mov ecx,64
mov edi,sprpriodata+16
rep stosd
pop ebx
pop esi
ret
.drawsingle
push esi
push ebx
mov edi,esi
mov esi,[sprtbng+ebx*4]
mov edx,ecx
and edx,0FFh
shl edx,3
sub edx,8
add edx,esi
mov esi,edx
xor ebx,ebx
.loopobj2
test byte[esi+7],20h
jnz near .drawspriteflipx2
mov bx,[esi]
mov ch,[esi+6]
mov esi,[esi+2]
sprdrawa sprdrawprb
sub edx,8
mov esi,edx
dec cl
jnz near .loopobj2
pop ebx
pop esi
ret
.drawspriteflipx2
mov bx,[esi]
mov ch,[esi+6]
mov esi,[esi+2]
sprdrawaf sprdrawprb
sub edx,8
mov esi,edx
dec cl
jnz near .loopobj2
pop ebx
pop esi
ret
NEWSYM NGNumSpr, db 0
; cmp byte[winbg1enval+eax+4*256],0
; je near .skipobjw
;NEWSYM objclineptr, times 256 dd 0 ; l1,r1,l2,r2,en,log,ptr
NEWSYM drawsprngw
mov [NGNumSpr],cl
mov ecx,[objclineptr+ebx*4]
add ecx,[ngwinptr]
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 dl,[esi+7]
and edx,03h
cmp edx,[csprival]
jne near .notprio
mov dh,[esi+6]
mov esi,[esi+2]
mov dl,[csprbit]
sprdrawa sprdrawprawb
pop edx
.nodrawspr
add edx,8
mov esi,edx
dec byte[NGNumSpr]
jnz near .loopobj
rol byte[csprbit],1
cmp byte[csprbit],1
je near .clearcsprmem
pop ebx
pop esi
xor ecx,ecx
ret
.notprio
mov esi,[esi+2]
mov dl,[csprbit]
sprdrawa sprdrawpra2
pop edx
add edx,8
mov esi,edx
dec byte[NGNumSpr]
jnz near .loopobj
rol byte[csprbit],1
cmp byte[csprbit],1
je near .clearcsprmem
pop ebx
pop esi
xor ecx,ecx
ret
.drawspriteflipx
mov bx,[esi]
push edx
mov dl,[esi+7]
and edx,03h
cmp edx,[csprival]
jne near .notpriof
mov dh,[esi+6]
mov esi,[esi+2]
mov dl,[csprbit]
sprdrawaf sprdrawprawb
pop edx
add edx,8
mov esi,edx
dec byte[NGNumSpr]
jnz near .loopobj
rol byte[csprbit],1
cmp byte[csprbit],1
je near .clearcsprmem
.endobj
pop ebx
pop esi
xor ecx,ecx
ret
.notpriof
mov esi,[esi+2]
mov dl,[csprbit]
sprdrawaf sprdrawpra2
pop edx
add edx,8
mov esi,edx
dec byte[NGNumSpr]
jnz near .loopobj
rol byte[csprbit],1
cmp byte[csprbit],1
je near .clearcsprmem
pop ebx
pop esi
xor ecx,ecx
xor ecx,ecx
ret
.clearcsprmem
xor eax,eax
mov ecx,64
mov edi,sprpriodata+16
rep stosd
pop ebx
pop esi
ret
.drawsingle
push esi
push ebx
mov edi,esi
mov esi,[sprtbng+ebx*4]
xor edx,edx
mov dl,[NGNumSpr]
and edx,0FFh
shl edx,3
sub edx,8
add edx,esi
mov esi,edx
xor ebx,ebx
.loopobj2
test byte[esi+7],20h
jnz near .drawspriteflipx2
push edx
mov bx,[esi]
mov dh,[esi+6]
mov esi,[esi+2]
sprdrawa sprdrawprbwb
pop edx
sub edx,8
mov esi,edx
dec byte[NGNumSpr]
jnz near .loopobj2
pop ebx
pop esi
xor ecx,ecx
ret
.drawspriteflipx2
push edx
mov bx,[esi]
mov dh,[esi+6]
mov esi,[esi+2]
sprdrawaf sprdrawprbwb
pop edx
sub edx,8
mov esi,edx
dec byte[NGNumSpr]
jnz near .loopobj2
pop ebx
pop esi
xor ecx,ecx
ret
NEWSYM drawsprngm7w
mov [NGNumSpr],cl
mov ecx,[objclineptr+ebx*4]
add ecx,[ngwinptr]
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 dl,[esi+7]
and edx,03h
cmp edx,[csprival]
jne near .notprio
mov dh,[esi+6]
mov esi,[esi+2]
mov dl,[csprbit]
sprdrawa sprdrawprawb
pop edx
.nodrawspr
add edx,8
mov esi,edx
dec byte[NGNumSpr]
jnz near .loopobj
rol byte[csprbit],1
cmp byte[csprbit],1
je near .clearcsprmem
pop ebx
pop esi
xor ecx,ecx
ret
.notprio
mov esi,[esi+2]
mov dl,[csprbit]
sprdrawa sprdrawpra2
pop edx
add edx,8
mov esi,edx
dec byte[NGNumSpr]
jnz near .loopobj
rol byte[csprbit],1
cmp byte[csprbit],1
je near .clearcsprmem
pop ebx
pop esi
xor ecx,ecx
ret
.drawspriteflipx
mov bx,[esi]
push edx
mov dl,[esi+7]
and edx,03h
cmp edx,[csprival]
jne near .notpriof
mov dh,[esi+6]
mov esi,[esi+2]
mov dl,[csprbit]
sprdrawaf sprdrawprawb
pop edx
add edx,8
mov esi,edx
dec byte[NGNumSpr]
jnz near .loopobj
rol byte[csprbit],1
cmp byte[csprbit],1
je near .clearcsprmem
.endobj
pop ebx
pop esi
xor ecx,ecx
ret
.notpriof
mov esi,[esi+2]
mov dl,[csprbit]
sprdrawaf sprdrawpra2
pop edx
add edx,8
mov esi,edx
dec byte[NGNumSpr]
jnz near .loopobj
rol byte[csprbit],1
cmp byte[csprbit],1
je near .clearcsprmem
pop ebx
pop esi
xor ecx,ecx
ret
.clearcsprmem
xor eax,eax
mov ecx,64
mov edi,sprpriodata+16
rep stosd
pop ebx
pop esi
ret
.drawsingle
push esi
push ebx
mov edi,esi
mov esi,[sprtbng+ebx*4]
xor edx,edx
mov dl,[NGNumSpr]
and edx,0FFh
shl edx,3
sub edx,8
add edx,esi
mov esi,edx
xor ebx,ebx
.loopobj2
test byte[esi+7],20h
jnz near .drawspriteflipx2
push edx
mov bx,[esi]
mov dh,[esi+6]
mov esi,[esi+2]
sprdrawa sprdrawprbwb
pop edx
sub edx,8
mov esi,edx
dec byte[NGNumSpr]
jnz near .loopobj2
pop ebx
pop esi
xor ecx,ecx
ret
.drawspriteflipx2
push edx
mov bx,[esi]
mov dh,[esi+6]
mov esi,[esi+2]
sprdrawaf sprdrawprbwb
pop edx
sub edx,8
mov esi,edx
dec byte[NGNumSpr]
jnz near .loopobj2
pop ebx
pop esi
xor ecx,ecx
ret
;*******************************************************
; Prepare Sprite Priorities
;*******************************************************
NEWSYM makesprprtable
ret
NEWSYM preparesprpr
xor ebx,ebx
mov bl,[curypos]
mov eax,dword[sprleftpr+ebx*4]
mov [sprclprio],eax
cmp eax,00000001h
je .single
cmp eax,00000100h
je .single
cmp eax,00010000h
je .single
cmp eax,01000000h
je .single
mov dword[sprsingle],0
ret
.single
mov dword[sprsingle],1
ret
ALIGN32
NEWSYM sprclprio, dd 0
NEWSYM sprsingle, dd 0
NEWSYM NewGfxAsmEnd
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -