--- np2/win9x/x64/makegrph.x64 2006/12/30 16:43:14 1.1.2.1 +++ np2/win9x/x64/makegrph.x64 2007/01/08 06:28:58 1.1.2.3 @@ -112,12 +112,12 @@ makegrph: sub rsp, byte 40 lea rbx, [vramupdate] mov ecx, 8000h/32 -.dirtyfilllp: movapd xmm2, [rbx] - movapd xmm3, [rbx+16] +.dirtyfilllp: movdqa xmm2, [rbx] + movdqa xmm3, [rbx+16] por xmm2, xmm1 por xmm3, xmm1 - movapd [rbx], xmm2 - movapd [rbx+16], xmm3 + movdqa [rbx], xmm2 + movdqa [rbx+16], xmm3 add rbx, byte 32 loop .dirtyfilllp @@ -126,36 +126,32 @@ makegrph: sub rsp, byte 40 mov [GRP_LR], eax mov ebx, [dsync + dsync_t.grph_vbp] -.drawlp: movzx esi, word [GDC_S_SCROLL+ 0+0] - movzx ecx, word [GDC_S_SCROLL+ 0+2] +.drawlp: mov esi, [GDC_S_SCROLL+ 0] call .grphputlines - movzx esi, word [GDC_S_SCROLL+ 4+0] - movzx ecx, word [GDC_S_SCROLL+ 4+2] + mov esi, [GDC_S_SCROLL+ 4] call .grphputlines cmp byte [np2cfg + np2cfg_t.uPD72020], 0 jne short .drawlp - movzx esi, word [GDC_S_SCROLL+ 8+0] - movzx ecx, word [GDC_S_SCROLL+ 8+2] + mov esi, [GDC_S_SCROLL+ 8] call .grphputlines - movzx esi, word [GDC_S_SCROLL+12+0] - movzx ecx, word [GDC_S_SCROLL+12+2] + mov esi, [GDC_S_SCROLL+12] call .grphputlines jmp short .drawlp .grphputlines: movzx eax, byte [GDC_S_PITCH] - test ecx, 4000h + test esi, 40000000h jne short .storewidth add eax, eax -.storewidth: and eax, 0000feh ; uPD72020で確認… - mov [LINE_WIDTH+8], eax - +.storewidth: mov ecx, esi + and eax, 0000feh ; uPD72020で確認… + shr ecx, 4+16 and esi, 3fffh - add esi, esi - shr ecx, 4 + mov [LINE_WIDTH+8], eax and ecx, 03ffh jne short .grphlineputst mov ecx, 0400h -.grphlineputst: push rcx +.grphlineputst: add esi, esi + push rcx .grphlineput_lp: mov ecx, [GRP_LR+16] .grphline1_lp: mov ebp, 79*2 @@ -167,21 +163,21 @@ makegrph: sub rsp, byte 40 cmp dh, 0 ; ALL_DRAWFLAG je short .putlineskip - jmp near .linedirtyon + jmp short .linedirtyon .putline: push rsi .linelp: test [vramupdate + rsi], dl je short .nodirty movzx eax, byte [r8 + rsi + VRAM0_B] - movq mm0, [grph_table + rax*8 + 0*0x800] - movzx eax, byte [r8 + rsi + VRAM0_R] - por mm0, [grph_table + rax*8 + 1*0x800] + movzx r9d, byte [r8 + rsi + VRAM0_R] + mov r10, [grph_table + rax*8 + 0*0x800] movzx eax, byte [r8 + rsi + VRAM0_G] - por mm0, [grph_table + rax*8 + 2*0x800] - movzx eax, byte [r8 + rsi + VRAM0_E] - por mm0, [grph_table + rax*8 + 3*0x800] + or r10, [grph_table + r9*8 + 1*0x800] + movzx r9d, byte [r8 + rsi + VRAM0_E] + or r10, [grph_table + rax*8 + 2*0x800] + or r10, [grph_table + r9*8 + 3*0x800] or ebp, byte 1 - movq [rdi], mm0 + mov [rdi], r10 .nodirty: inc esi and esi, 07fffh add rdi, byte 8 @@ -189,7 +185,7 @@ makegrph: sub rsp, byte 40 jns short .linelp pop rsi - test ebp, 1 + test bpl, 1 je short .putlineskip .linedirtyon: or [renewal_line + rbx], dl @@ -216,8 +212,8 @@ makegrph: sub rsp, byte 40 jae short .deldirty .bottomfill0: or [renewal_line + rbx], dl mov ecx, 640/32 -.bottomfill1: movapd [rdi], xmm0 - movapd [rdi+16], xmm0 +.bottomfill1: movdqa [rdi], xmm0 + movdqa [rdi+16], xmm0 add rdi, byte 32 loop .bottomfill1 inc ebx @@ -228,12 +224,12 @@ makegrph: sub rsp, byte 40 lea rbx, [vramupdate] pandn xmm1, xmm2 mov ecx, 8000h/32 -.deldirtylp: movapd xmm2, [rbx] - movapd xmm3, [rbx+16] +.deldirtylp: movdqa xmm2, [rbx] + movdqa xmm3, [rbx+16] pand xmm2, xmm1 pand xmm3, xmm1 - movapd [rbx], xmm2 - movapd [rbx+16], xmm3 + movdqa [rbx], xmm2 + movdqa [rbx+16], xmm3 add rbx, byte 32 loop .deldirtylp @@ -242,7 +238,6 @@ makegrph: sub rsp, byte 40 mov rdi, [rsp+24] mov rbp, [rsp+32] add rsp, byte 40 - emms ret ends