hq3x32.asm
来自「linux下的任天堂模拟器代码。供大家参考。」· 汇编 代码 · 共 2,812 行 · 第 1/4 页
ASM
2,812 行
PIXEL02_1R PIXEL11 PIXEL12_1 jmp .loopx_end..@flag190 DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL22_1D,PIXEL01_1,PIXEL02_5,PIXEL12_6,PIXEL22_2 PIXEL00_1M PIXEL10_C PIXEL11 PIXEL20_1D PIXEL21_1 jmp .loopx_end..@flag187 DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL20_1D,PIXEL00_5,PIXEL01_1,PIXEL10_6,PIXEL20_2 PIXEL02_1M PIXEL11 PIXEL12_C PIXEL21_1 PIXEL22_1D jmp .loopx_end..@flag243 DiffOrNot w6,w8,PIXEL12_C,PIXEL20_1L,PIXEL21_C,PIXEL22_C,PIXEL12_1,PIXEL20_2,PIXEL21_6,PIXEL22_5 PIXEL00_1L PIXEL01_C PIXEL02_1M PIXEL10_1 PIXEL11 jmp .loopx_end..@flag119 DiffOrNot w2,w6,PIXEL00_1L,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL00_2,PIXEL01_6,PIXEL02_5,PIXEL12_1 PIXEL10_1 PIXEL11 PIXEL20_1L PIXEL21_C PIXEL22_1M jmp .loopx_end..@flag237..@flag233 PIXEL00_1U PIXEL01_1 PIXEL02_2 PIXEL10_C PIXEL11 PIXEL12_1 DiffOrNot w8,w4,PIXEL20_C,PIXEL20_2 PIXEL21_C PIXEL22_1R jmp .loopx_end..@flag175..@flag47 DiffOrNot w4,w2,PIXEL00_C,PIXEL00_2 PIXEL01_C PIXEL02_1R PIXEL10_C PIXEL11 PIXEL12_1 PIXEL20_1D PIXEL21_1 PIXEL22_2 jmp .loopx_end..@flag183..@flag151 PIXEL00_1L PIXEL01_C DiffOrNot w2,w6,PIXEL02_C,PIXEL02_2 PIXEL10_1 PIXEL11 PIXEL12_C PIXEL20_2 PIXEL21_1 PIXEL22_1D jmp .loopx_end..@flag245..@flag244 PIXEL00_2 PIXEL01_1 PIXEL02_1U PIXEL10_1 PIXEL11 PIXEL12_C PIXEL20_1L PIXEL21_C DiffOrNot w6,w8,PIXEL22_C,PIXEL22_2 jmp .loopx_end..@flag250 PIXEL00_1M PIXEL01_C PIXEL02_1M PIXEL11 DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL10_3,PIXEL20_4 PIXEL21_C DiffOrNot w6,w8,PIXEL12_C,PIXEL22_C,PIXEL12_3,PIXEL22_4 jmp .loopx_end..@flag123 DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL00_4,PIXEL01_3 PIXEL02_1M PIXEL10_C PIXEL11 PIXEL12_C DiffOrNot w8,w4,PIXEL20_C,PIXEL21_C,PIXEL20_4,PIXEL21_3 PIXEL22_1M jmp .loopx_end..@flag95 DiffOrNot w4,w2,PIXEL00_C,PIXEL10_C,PIXEL00_4,PIXEL10_3 PIXEL01_C DiffOrNot w2,w6,PIXEL02_C,PIXEL12_C,PIXEL02_4,PIXEL12_3 PIXEL11 PIXEL20_1M PIXEL21_C PIXEL22_1M jmp .loopx_end..@flag222 PIXEL00_1M DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL01_3,PIXEL02_4 PIXEL10_C PIXEL11 PIXEL12_C PIXEL20_1M DiffOrNot w6,w8,PIXEL21_C,PIXEL22_C,PIXEL21_3,PIXEL22_4 jmp .loopx_end..@flag252 PIXEL00_1M PIXEL01_1 PIXEL02_1U PIXEL11 PIXEL12_C DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL10_3,PIXEL20_4 PIXEL21_C DiffOrNot w6,w8,PIXEL22_C,PIXEL22_2 jmp .loopx_end..@flag249 PIXEL00_1U PIXEL01_1 PIXEL02_1M PIXEL10_C PIXEL11 DiffOrNot w8,w4,PIXEL20_C,PIXEL20_2 PIXEL21_C DiffOrNot w6,w8,PIXEL12_C,PIXEL22_C,PIXEL12_3,PIXEL22_4 jmp .loopx_end..@flag235 DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL00_4,PIXEL01_3 PIXEL02_1M PIXEL10_C PIXEL11 PIXEL12_1 DiffOrNot w8,w4,PIXEL20_C,PIXEL20_2 PIXEL21_C PIXEL22_1R jmp .loopx_end..@flag111 DiffOrNot w4,w2,PIXEL00_C,PIXEL00_2 PIXEL01_C PIXEL02_1R PIXEL10_C PIXEL11 PIXEL12_1 DiffOrNot w8,w4,PIXEL20_C,PIXEL21_C,PIXEL20_4,PIXEL21_3 PIXEL22_1M jmp .loopx_end..@flag63 DiffOrNot w4,w2,PIXEL00_C,PIXEL00_2 PIXEL01_C DiffOrNot w2,w6,PIXEL02_C,PIXEL12_C,PIXEL02_4,PIXEL12_3 PIXEL10_C PIXEL11 PIXEL20_1D PIXEL21_1 PIXEL22_1M jmp .loopx_end..@flag159 DiffOrNot w4,w2,PIXEL00_C,PIXEL10_C,PIXEL00_4,PIXEL10_3 PIXEL01_C DiffOrNot w2,w6,PIXEL02_C,PIXEL02_2 PIXEL11 PIXEL12_C PIXEL20_1M PIXEL21_1 PIXEL22_1D jmp .loopx_end..@flag215 PIXEL00_1L PIXEL01_C DiffOrNot w2,w6,PIXEL02_C,PIXEL02_2 PIXEL10_1 PIXEL11 PIXEL12_C PIXEL20_1M DiffOrNot w6,w8,PIXEL21_C,PIXEL22_C,PIXEL21_3,PIXEL22_4 jmp .loopx_end..@flag246 PIXEL00_1M DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL01_3,PIXEL02_4 PIXEL10_1 PIXEL11 PIXEL12_C PIXEL20_1L PIXEL21_C DiffOrNot w6,w8,PIXEL22_C,PIXEL22_2 jmp .loopx_end..@flag254 PIXEL00_1M DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL01_3,PIXEL02_4 PIXEL11 DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL10_3,PIXEL20_4 DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_2 jmp .loopx_end..@flag253 PIXEL00_1U PIXEL01_1 PIXEL02_1U PIXEL10_C PIXEL11 PIXEL12_C DiffOrNot w8,w4,PIXEL20_C,PIXEL20_2 PIXEL21_C DiffOrNot w6,w8,PIXEL22_C,PIXEL22_2 jmp .loopx_end..@flag251 DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL00_4,PIXEL01_3 PIXEL02_1M PIXEL11 DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_2,PIXEL21_3 DiffOrNot w6,w8,PIXEL12_C,PIXEL22_C,PIXEL12_3,PIXEL22_4 jmp .loopx_end..@flag239 DiffOrNot w4,w2,PIXEL00_C,PIXEL00_2 PIXEL01_C PIXEL02_1R PIXEL10_C PIXEL11 PIXEL12_1 DiffOrNot w8,w4,PIXEL20_C,PIXEL20_2 PIXEL21_C PIXEL22_1R jmp .loopx_end..@flag127 DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_2,PIXEL01_3,PIXEL10_3 DiffOrNot w2,w6,PIXEL02_C,PIXEL12_C,PIXEL02_4,PIXEL12_3 PIXEL11 DiffOrNot w8,w4,PIXEL20_C,PIXEL21_C,PIXEL20_4,PIXEL21_3 PIXEL22_1M jmp .loopx_end..@flag191 DiffOrNot w4,w2,PIXEL00_C,PIXEL00_2 PIXEL01_C DiffOrNot w2,w6,PIXEL02_C,PIXEL02_2 PIXEL10_C PIXEL11 PIXEL12_C PIXEL20_1D PIXEL21_1 PIXEL22_1D jmp .loopx_end..@flag223 DiffOrNot w4,w2,PIXEL00_C,PIXEL10_C,PIXEL00_4,PIXEL10_3 DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_2,PIXEL12_3 PIXEL11 PIXEL20_1M DiffOrNot w6,w8,PIXEL21_C,PIXEL22_C,PIXEL21_3,PIXEL22_4 jmp .loopx_end..@flag247 PIXEL00_1L PIXEL01_C DiffOrNot w2,w6,PIXEL02_C,PIXEL02_2 PIXEL10_1 PIXEL11 PIXEL12_C PIXEL20_1L PIXEL21_C DiffOrNot w6,w8,PIXEL22_C,PIXEL22_2 jmp .loopx_end..@flag255 DiffOrNot w4,w2,PIXEL00_C,PIXEL00_2 PIXEL01_C DiffOrNot w2,w6,PIXEL02_C,PIXEL02_2 PIXEL10_C PIXEL11 PIXEL12_C DiffOrNot w8,w4,PIXEL20_C,PIXEL20_2 PIXEL21_C DiffOrNot w6,w8,PIXEL22_C,PIXEL22_2 jmp .loopx_end..@cross0 mov ebx,[NumBytesPerLine] mov [edi],eax mov [edi+4],eax mov [edi+8],eax mov [edi+ebx],eax mov [edi+ebx+4],eax mov [edi+ebx+8],eax mov [edi+ebx*2],eax mov [edi+ebx*2+4],eax mov [edi+ebx*2+8],eax jmp .loopx_end..@cross1 mov ecx,[w2] mov edx,eax shl edx,2 add edx,[ebx+ecx*4] sub edx,eax shr edx,2 mov ebx,[NumBytesPerLine] mov [edi],edx mov [edi+4],edx mov [edi+8],edx mov [edi+ebx],eax mov [edi+ebx+4],eax mov [edi+ebx+8],eax mov [edi+ebx*2],eax mov [edi+ebx*2+4],eax mov [edi+ebx*2+8],eax jmp .loopx_end..@cross2 mov ecx,[w4] mov edx,eax shl edx,2 add edx,[ebx+ecx*4] sub edx,eax shr edx,2 mov ebx,[NumBytesPerLine] mov [edi],edx mov [edi+4],eax mov [edi+8],eax mov [edi+ebx],edx mov [edi+ebx+4],eax mov [edi+ebx+8],eax mov [edi+ebx*2],edx mov [edi+ebx*2+4],eax mov [edi+ebx*2+8],eax jmp .loopx_end..@cross4 mov ecx,[w6] mov edx,eax shl edx,2 add edx,[ebx+ecx*4] sub edx,eax shr edx,2 mov ebx,[NumBytesPerLine] mov [edi],eax mov [edi+4],eax mov [edi+8],edx mov [edi+ebx],eax mov [edi+ebx+4],eax mov [edi+ebx+8],edx mov [edi+ebx*2],eax mov [edi+ebx*2+4],eax mov [edi+ebx*2+8],edx jmp .loopx_end..@cross8 mov ecx,[w8] mov edx,eax shl edx,2 add edx,[ebx+ecx*4] sub edx,eax shr edx,2 mov ebx,[NumBytesPerLine] mov [edi],eax mov [edi+4],eax mov [edi+8],eax mov [edi+ebx],eax mov [edi+ebx+4],eax mov [edi+ebx+8],eax mov [edi+ebx*2],edx mov [edi+ebx*2+4],edx mov [edi+ebx*2+8],edx jmp .loopx_end..@crossN mov edx,[w2] mov ecx,[ebx+edx*4] mov [c2],ecx mov edx,[w4] mov ecx,[ebx+edx*4] mov [c4],ecx mov edx,[w6] mov ecx,[ebx+edx*4] mov [c6],ecx mov edx,[w8] mov ecx,[ebx+edx*4] mov [c8],ecx mov ebx,[NumBytesPerLine] jmp ..@flag0.loopx_end add esi,2 add dword[deltaptr],2 add edi,12 dec dword[xcounter] jle .xres_2 jmp .loopx.xres_2 ; x=Xres-2 - special case jl near .xres_1 mov edx,[deltaptr] mov ecx,[prevline] mov eax,[nextline] movq mm2,[esi+ecx-4] movq mm3,[esi-4] movq mm4,[esi+eax-4] movq mm5,mm2 movq mm6,mm3 movq mm7,mm4 pcmpeqw mm2,[edx+ecx-4] pcmpeqw mm3,[edx-4] pcmpeqw mm4,[edx+eax-4] pand mm2,mm3 pand mm2,mm4 psrlq mm2,16 movd ebx,mm2 psrlq mm2,32 movd eax,mm2 cwde and eax,ebx inc eax jz .loopx_end psrlq mm5,16 psrlq mm6,16 psrlq mm7,16 movd eax,mm5 mov [edx+ecx-2],ax movzx edx,ax mov [w1],edx shr eax,16 mov [w2],eax psrlq mm5,32 movd eax,mm5 mov [w3],eax movd eax,mm6 movzx edx,ax mov [w4],edx shr eax,16 mov [w5],eax psrlq mm6,32 movd eax,mm6 mov [w6],eax movd eax,mm7 movzx edx,ax mov [w7],edx shr eax,16 mov [w8],eax psrlq mm7,32 movd eax,mm7 mov [w9],eax jmp .flags.xres_1 cmp dword[xcounter],-1 jl near .endofline ; x=Xres-1 - special case mov edx,[deltaptr] mov ecx,[prevline] mov eax,[nextline] movq mm2,[esi+ecx-6] movq mm3,[esi-6] movq mm4,[esi+eax-6] movq mm5,mm2 movq mm6,mm3 movq mm7,mm4 pcmpeqw mm2,[edx+ecx-6] pcmpeqw mm3,[edx-6] pcmpeqw mm4,[edx+eax-6] pand mm2,mm3 pand mm2,mm4 psrlq mm2,32 movd eax,mm2 inc eax jz .loopx_end psrlq mm5,32 psrlq mm6,32 psrlq mm7,32 movd eax,mm5 mov [edx+ecx-2],eax movzx edx,ax mov [w1],edx shr eax,16 mov [w2],eax mov [w3],eax movd eax,mm6 movzx edx,ax mov [w4],edx shr eax,16 mov [w5],eax mov [w6],eax movd eax,mm7 movzx edx,ax mov [w7],edx shr eax,16 mov [w8],eax mov [w9],eax jmp .flags.endofline mov ebx,[NumBytesPerLine].nexty add esi,64 add dword[deltaptr],64 add edi,[AddEndBytes] add edi,ebx add edi,ebx mov ebx,[InterPtr] inc ebx dec byte[lineleft] jz .fin cmp byte[lineleft],1 je .lastline mov dword[nextline],576 mov dword[prevline],-576 jmp .loopy.lastline mov dword[nextline],0 mov dword[prevline],-576 jmp .loopy.fin emms popad retHighResProc: mov ecx,256 cmp byte[ebx],3 je near .hiresmode7 cmp byte[ebx],7 je near .hiresmode7 test byte[ebx],3 jnz near .hires mov ebx,[NumBytesPerLine] test byte[cfield],1 jnz .cfield1.cfield0 movzx eax,word[esi] shl eax,2 add eax,[BitConv32Ptr] mov eax,[eax] mov [edi],eax mov [edi+4],eax mov [edi+8],eax mov [edi+ebx],eax mov [edi+ebx+4],eax mov [edi+ebx+8],eax add esi,2 add edi,12 dec ecx jnz .cfield0 ret.cfield1 movzx eax,word[esi] shl eax,2 add eax,[BitConv32Ptr] mov eax,[eax] mov [edi+ebx*2],eax mov [edi+ebx*2+4],eax mov [edi+ebx*2+8],eax add esi,2 add edi,12 dec ecx jnz .cfield1 ret.hiresmode7 mov ebx,[NumBytesPerLine].a movzx eax,word[esi] shl eax,2 add eax,[BitConv32Ptr] mov eax,[eax] mov [edi],eax mov [edi+4],eax mov [edi+8],eax movzx edx,word[esi+75036*4] shl edx,2 add edx,[BitConv32Ptr] mov edx,[edx] mov [edi+ebx*2],edx mov [edi+ebx*2+4],edx mov [edi+ebx*2+8],edx add edx,eax shr edx,1 mov [edi+ebx],edx mov [edi+ebx+4],edx mov [edi+ebx+8],edx add esi,2 add edi,12 dec ecx jnz .a ret.hires test byte[ebx],4 jnz .m56 mov ebx,[NumBytesPerLine].bng movzx eax, word[esi+75036*4] shl eax,2 add eax,[BitConv32Ptr] mov eax,[eax] mov [edi+8],eax mov [edi+ebx+8],eax mov [edi+ebx*2+8],eax movzx edx, word[esi] shl edx,2 add edx,[BitConv32Ptr] mov edx,[edx] mov [edi],edx mov [edi+ebx],edx mov [edi+ebx*2],edx add edx,eax shr edx,1 mov [edi+4],edx mov [edi+ebx+4],edx mov [edi+ebx*2+4],edx add esi,2 add edi,12 dec ecx jnz .bng ret.m56 mov ebx,[NumBytesPerLine] test byte[cfield],1 jnz .cfield1hr.cfield0hr movzx eax, word[esi+75036*4] shl eax,2 add eax,[BitConv32Ptr] mov eax,[eax] mov [edi+8],eax mov [edi+ebx+8],eax movzx edx, word[esi] shl edx,2 add edx,[BitConv32Ptr] mov edx,[edx] mov [edi],edx mov [edi+ebx],edx add edx,eax shr edx,1 mov [edi+4],edx mov [edi+ebx+4],edx add esi,2 add edi,12 dec ecx jnz .cfield0hr ret.cfield1hr movzx eax, word[esi+75036*4] shl eax,2 add eax,[BitConv32Ptr] mov eax,[eax] mov [edi+ebx*2+8],eax movzx edx, word[esi] shl edx,2 add edx,[BitConv32Ptr] mov edx,[edx] mov [edi+ebx*2],edx add edx,eax shr edx,1 mov [edi+ebx*2+4],edx add esi,2 add edi,12 dec ecx jnz .cfield1hr retSECTION .dataFuncTable: dd ..@flag0, ..@flag1, ..@flag2, ..@flag3, ..@flag4, ..@flag5, ..@flag6, ..@flag7 dd ..@flag8, ..@flag9, ..@flag10, ..@flag11, ..@flag12, ..@flag13, ..@flag14, ..@flag15 dd ..@flag16, ..@flag17, ..@flag18, ..@flag19, ..@flag20, ..@flag21, ..@flag22, ..@flag23 dd ..@flag24, ..@flag25, ..@flag26, ..@flag27, ..@flag28, ..@flag29, ..@flag30, ..@flag31 dd ..@flag32, ..@flag33, ..@flag34, ..@flag35, ..@flag36, ..@flag37, ..@flag38, ..@flag39 dd ..@flag40, ..@flag41, ..@flag42, ..@flag43, ..@flag44, ..@flag45, ..@flag46, ..@flag47 dd ..@flag48, ..@flag49, ..@flag50, ..@flag51, ..@flag52, ..@flag53, ..@flag54, ..@flag55 dd ..@flag56, ..@flag57, ..@flag58, ..@flag59, ..@flag60, ..@flag61, ..@flag62, ..@flag63 dd ..@flag64, ..@flag65, ..@flag66, ..@flag67, ..@flag68, ..@flag69, ..@flag70, ..@flag71 dd ..@flag72, ..@flag73, ..@flag74, ..@flag75, ..@flag76, ..@flag77, ..@flag78, ..@flag79 dd ..@flag80, ..@flag81, ..@flag82, ..@flag83, ..@flag84, ..@flag85, ..@flag86, ..@flag87 dd ..@flag88, ..@flag89, ..@flag90, ..@flag91, ..@flag92, ..@flag93, ..@flag94, ..@flag95 dd ..@flag96, ..@flag97, ..@flag98, ..@flag99, ..@flag100, ..@flag101, ..@flag102, ..@flag103 dd ..@flag104, ..@flag105, ..@flag106, ..@flag107, ..@flag108, ..@flag109, ..@flag110, ..@flag111 dd ..@flag112, ..@flag113, ..@flag114, ..@flag115, ..@flag116, ..@flag117, ..@flag118, ..@flag119 dd ..@flag120, ..@flag121, ..@flag122, ..@flag123, ..@flag124, ..@flag125, ..@flag126, ..@flag127 dd ..@flag128, ..@flag129, ..@flag130, ..@flag131, ..@flag132, ..@flag133, ..@flag134, ..@flag135 dd ..@flag136, ..@flag137, ..@flag138, ..@flag139, ..@flag140, ..@flag141, ..@flag142, ..@flag143 dd ..@flag144, ..@flag145, ..@flag146, ..@flag147, ..@flag148, ..@flag149, ..@flag150, ..@flag151 dd ..@flag152, ..@flag153, ..@flag154, ..@flag155, ..@flag156, ..@flag157, ..@flag158, ..@flag159 dd ..@flag160, ..@flag161, ..@flag162, ..@flag163, ..@flag164, ..@flag165, ..@flag166, ..@flag167 dd ..@flag168, ..@flag169, ..@flag170, ..@flag171, ..@flag172, ..@flag173, ..@flag174, ..@flag175 dd ..@flag176, ..@flag177, ..@flag178, ..@flag179, ..@flag180, ..@flag181, ..@flag182, ..@flag183 dd ..@flag184, ..@flag185, ..@flag186, ..@flag187, ..@flag188, ..@flag189, ..@flag190, ..@flag191 dd ..@flag192, ..@flag193, ..@flag194, ..@flag195, ..@flag196, ..@flag197, ..@flag198, ..@flag199 dd ..@flag200, ..@flag201, ..@flag202, ..@flag203, ..@flag204, ..@flag205, ..@flag206, ..@flag207 dd ..@flag208, ..@flag209, ..@flag210, ..@flag211, ..@flag212, ..@flag213, ..@flag214, ..@flag215 dd ..@flag216, ..@flag217, ..@flag218, ..@flag219, ..@flag220, ..@flag221, ..@flag222, ..@flag223 dd ..@flag224, ..@flag225, ..@flag226, ..@flag227, ..@flag228, ..@flag229, ..@flag230, ..@flag231 dd ..@flag232, ..@flag233, ..@flag234, ..@flag235, ..@flag236, ..@flag237, ..@flag238, ..@flag239 dd ..@flag240, ..@flag241, ..@flag242, ..@flag243, ..@flag244, ..@flag245, ..@flag246, ..@flag247 dd ..@flag248, ..@flag249, ..@flag250, ..@flag251, ..@flag252, ..@flag253, ..@flag254, ..@flag255FuncTable2: dd ..@cross0, ..@cross1, ..@cross2, ..@crossN, dd ..@cross4, ..@crossN, ..@crossN, ..@crossN, dd ..@cross8, ..@crossN, ..@crossN, ..@crossN, dd ..@crossN, ..@crossN, ..@crossN, ..@crossNSECTION .bssInterPtr resd 1SECTION .text
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?