📄 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 retNEWSYM drawbg1tile mov byte[prdatb+ebx],1 drawbgtileng 0,0 retNEWSYM drawbg2tile mov byte[prdata+ebx],1 drawbgtileng 1,1 retNEWSYM drawbg3tile mov byte[prdatc+ebx],1 drawbgtileng 2,2 retNEWSYM drawbg4tile mov byte[prdata+ebx],1 drawbgtileng 3,1 retNEWSYM drawbg1tilepr1 drawbgtilengpr1 0,0 retNEWSYM drawbg2tilepr1 drawbgtilengpr1 1,1 retNEWSYM drawbg3tilepr1 drawbgtilengpr1 2,2 retNEWSYM drawbg4tilepr1 drawbgtilengpr1 3,1 retNEWSYM drawbg1line mov byte[prdatb+ebx],0 drawbglineng 0,0NEWSYM drawbg2line mov byte[prdata+ebx],0 drawbglineng 1,1NEWSYM drawbg3line mov byte[prdatc+ebx],0 drawbglineng 2,2NEWSYM drawbg4line mov byte[prdata+ebx],0 drawbglineng 3,1NEWSYM 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 retNEWSYM mosdraw2 mov ecx,128.next mov al,[edi] or al,al jz .nodraw mov [esi],al mov [esi+1],al mosender 2NEWSYM 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 3NEWSYM 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 4NEWSYM 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 5NEWSYM 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 6NEWSYM 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 7NEWSYM 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 8NEWSYM 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 9NEWSYM 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 10NEWSYM 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 11NEWSYM 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 12NEWSYM 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 13NEWSYM 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 14NEWSYM 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 15NEWSYM 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 16NEWSYM drawbg1linepr1 drawbglinengpr1 0,0NEWSYM drawbg2linepr1 drawbglinengpr1 1,1NEWSYM drawbg3linepr1 drawbglinengpr1 2,2NEWSYM drawbg4linepr1 drawbglinengpr1 3,1SECTION .bssNEWSYM bgtxadd, resd 1NEWSYM bgcyval, resd 1NEWSYM bgcxval, resd 1NEWSYM tleftn, resd 1NEWSYM tleftnb, resd 1NEWSYM bg1totng, resd 1NEWSYM bg2totng, resd 1NEWSYM bg3totng, resd 1NEWSYM bg4totng, resd 1NEWSYM bg1drwng, resd 1NEWSYM bg2drwng, resd 1NEWSYM bg3drwng, resd 1NEWSYM bg4drwng, resd 1NEWSYM sprcurng, resd 1NEWSYM scfbl, resd 1NEWSYM mode0ads, resd 1NEWSYM mode0add, resd 1NEWSYM taddnfy16x16, resd 1NEWSYM taddfy16x16, resd 1NEWSYM switch16x16, resd 1NEWSYM yposng, resd 1NEWSYM flipyposng, resd 1NEWSYM yposngom, resd 1NEWSYM flipyposngom, resd 1SECTION .textNEWSYM 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]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -