⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fxemu2.asm

📁 SFC游戏模拟器 snes9x 1.43 的原代码
💻 ASM
📖 第 1 页 / 共 5 页
字号:
   test byte[eax+1],bl   jz .nodraw2_4   or bh,02h.nodraw2_4   mov bl,bh   and ebx,0FFh   inc ebp;   UpdateR14   CLRFLAGS   mov [edi],ebx            ; Write Destination   mov [flagnz],ebx   ret.colors256   shl ebx,6    ; x64 (256 colors)   mov al,[SfxSCBR]   shl eax,10   ; Get SFX address   add eax,ebx   add eax,[sfxramdata]   mov ebx,[SfxR2]   and ebx,07h   shl ebx,1   add eax,ebx   mov cl,[SfxR1]   and cl,07h   xor cl,07h   mov bl,1   shl bl,cl   mov bh,bl   xor bh,0FFh   pop ecx   xor bh,bh   test byte[eax],bl   jz .nodraw_256   or bh,01h.nodraw_256   test byte[eax+1],bl   jz .nodraw2_256   or bh,02h.nodraw2_256   test byte[eax+16],bl   jz .nodraw3_256   or bh,04h.nodraw3_256   test byte[eax+17],bl   jz .nodraw4_256   or bh,08h.nodraw4_256   test byte[eax+32],bl   jz .nodraw5_256   or bh,10h.nodraw5_256   test byte[eax+33],bl   jz .nodraw6_256   or bh,20h.nodraw6_256   test byte[eax+48],bl   jz .nodraw7_256   or bh,40h.nodraw7_256   test byte[eax+49],bl   jz .nodraw8_256   or bh,80h.nodraw8_256   mov bl,bh   and ebx,0FFh   inc ebp;   UpdateR14   CLRFLAGS   mov [edi],ebx            ; Write Destination   mov [flagnz],ebx   retNEWSYM FxOp4D      ; SWAP   swap upper and lower byte of a register    ; V   mov eax,[esi]            ; Read Source   FETCHPIPE   ror ax,8      inc ebp                ; Increase program counter   mov [SfxSignZero],eax   mov [edi],eax            ; Write Destination   CLRFLAGS   retNEWSYM FxOp4E      ; COLOR  copy source register to color register     ; V   FETCHPIPE   mov eax,[esi]            ; Read Source   ; if bit 3 of SfxPOR is set, then don't modify the upper 4 bits   test byte[SfxPOR],04h   jz .nohighnibble   mov bl,al   shr bl,4   and al,0F0h   or al,bl.nohighnibble   test byte[SfxPOR],08h   jnz .preserveupper   cmp [SfxCOLR],al   je .nocolchange   mov [SfxCOLR],al   and eax,0FFh   mov ebx,[fxbit01+eax*4]   mov [fxbit01pcal],ebx   mov ebx,[fxbit23+eax*4]   mov [fxbit23pcal],ebx   mov ebx,[fxbit45+eax*4]   mov [fxbit45pcal],ebx   mov ebx,[fxbit67+eax*4]   mov [fxbit67pcal],ebx.nocolchange   CLRFLAGS   inc ebp                ; Increase program counter   ret.preserveupper   mov bl,[SfxCOLR]   and al,0Fh   and bl,0F0h   or al,bl   cmp [SfxCOLR],al   je .nocolchange   mov [SfxCOLR],al   and eax,0FFh   mov ebx,[fxbit01+eax*4]   mov [fxbit01pcal],ebx   mov ebx,[fxbit23+eax*4]   mov [fxbit23pcal],ebx   mov ebx,[fxbit45+eax*4]   mov [fxbit45pcal],ebx   mov ebx,[fxbit67+eax*4]   mov [fxbit67pcal],ebx   CLRFLAGS   inc ebp                ; Increase program counter   retNEWSYM FxOp4EA1    ; CMODE  set plot option register ; V   FETCHPIPE   mov eax,[esi]            ; Read Source   inc ebp                ; Increase program counter   mov dword [SfxPOR],eax   test byte[SfxPOR],10h   jnz .objmode   mov al,[SfxSCMR]   and al,00100100b     ; 4 + 32   cmp al,4   je .lines160   cmp al,32   je .lines192   cmp al,36   je .objmode   mov eax,[sfx128lineloc]   jmp .donelines.lines160   mov eax,[sfx160lineloc]   jmp .donelines.lines192   mov eax,[sfx192lineloc]   jmp .donelines.objmode   mov eax,[sfxobjlineloc].donelines   mov [sfxclineloc],eax   push ebx   mov al,[SfxSCMR]   and eax,00000011b   mov bl,[SfxPOR]   and bl,0Fh   shl bl,2   or al,bl   mov ebx,[PLOTJmpb+eax*4]   mov eax,[PLOTJmpa+eax*4]   mov dword [FxTable+4Ch*4],eax   mov dword [FxTableb+4Ch*4],eax   mov dword [FxTablec+4Ch*4],eax   mov dword [FxTabled+4Ch*4],ebx   pop ebx   CLRFLAGS   retNEWSYM FxOp4F      ; NOT    perform exclusive exor with 1 on all bits  ; V   mov eax,[esi]            ; Read Source   FETCHPIPE   xor eax,0FFFFh   inc ebp                ; Increase program counter   mov [SfxSignZero],eax   mov [edi],eax            ; Write Destination   CLRFLAGS   retNEWSYM FxOp50      ; ADD RN add, register + register   ADDRN 0NEWSYM FxOp51      ; ADD RN add, register + register   ADDRN 1NEWSYM FxOp52      ; ADD RN add, register + register   ADDRN 2NEWSYM FxOp53      ; ADD RN add, register + register   ADDRN 3NEWSYM FxOp54      ; ADD RN add, register + register   ADDRN 4NEWSYM FxOp55      ; ADD RN add, register + register   ADDRN 5NEWSYM FxOp56      ; ADD RN add, register + register   ADDRN 6NEWSYM FxOp57      ; ADD RN add, register + register   ADDRN 7NEWSYM FxOp58      ; ADD RN add, register + register   ADDRN 8NEWSYM FxOp59      ; ADD RN add, register + register   ADDRN 9NEWSYM FxOp5A      ; ADD RN add, register + register   ADDRN 10NEWSYM FxOp5B      ; ADD RN add, register + register   ADDRN 11NEWSYM FxOp5C      ; ADD RN add, register + register   ADDRN 12NEWSYM FxOp5D      ; ADD RN add, register + register   ADDRN 13NEWSYM FxOp5E      ; ADD RN add, register + register   ADDRN 14NEWSYM FxOp5F      ; ADD RN add, register + register   FETCHPIPE   mov eax, [esi]    ; Read Source   mov ebx,ebp   sub ebx,[SfxCPB]   add ax,bx   seto byte[SfxOverflow]   setc byte[SfxCarry]   mov [SfxSignZero],eax   inc ebp                ; Increase program counter   mov [edi],eax      ; Write Destination   CLRFLAGS   retNEWSYM FxOp50A1    ; ADC RN add with carry, register + register   ADCRN 0NEWSYM FxOp51A1    ; ADC RN add with carry, register + register   ADCRN 1NEWSYM FxOp52A1    ; ADC RN add with carry, register + register   ADCRN 2NEWSYM FxOp53A1    ; ADC RN add with carry, register + register   ADCRN 3NEWSYM FxOp54A1    ; ADC RN add with carry, register + register   ADCRN 4NEWSYM FxOp55A1    ; ADC RN add with carry, register + register   ADCRN 5NEWSYM FxOp56A1    ; ADC RN add with carry, register + register   ADCRN 6NEWSYM FxOp57A1    ; ADC RN add with carry, register + register   ADCRN 7NEWSYM FxOp58A1    ; ADC RN add with carry, register + register   ADCRN 8NEWSYM FxOp59A1    ; ADC RN add with carry, register + register   ADCRN 9NEWSYM FxOp5AA1    ; ADC RN add with carry, register + register   ADCRN 10NEWSYM FxOp5BA1    ; ADC RN add with carry, register + register   ADCRN 11NEWSYM FxOp5CA1    ; ADC RN add with carry, register + register   ADCRN 12NEWSYM FxOp5DA1    ; ADC RN add with carry, register + register   ADCRN 13NEWSYM FxOp5EA1    ; ADC RN add with carry, register + register   ADCRN 14NEWSYM FxOp5FA1    ; ADC RN add with carry, register + register   FETCHPIPE   mov eax, [esi]    ; Read Source   mov ebx,ebp   sub ebx,[SfxCPB]   shr byte[SfxCarry],1   adc ax,bx   seto byte[SfxOverflow]   setc byte[SfxCarry]   mov [SfxSignZero],eax   inc ebp                ; Increase program counter   mov [edi],eax      ; Write Destination   CLRFLAGS   ret; Weird opcode (FxOp50A2, add 0, wow!)NEWSYM FxOp50A2    ; ADI RN add, register + immediate   ADIRN 0NEWSYM FxOp51A2    ; ADI RN add, register + immediate   ADIRN 1NEWSYM FxOp52A2    ; ADI RN add, register + immediate   ADIRN 2NEWSYM FxOp53A2    ; ADI RN add, register + immediate   ADIRN 3NEWSYM FxOp54A2    ; ADI RN add, register + immediate   ADIRN 4NEWSYM FxOp55A2    ; ADI RN add, register + immediate   ADIRN 5NEWSYM FxOp56A2    ; ADI RN add, register + immediate   ADIRN 6NEWSYM FxOp57A2    ; ADI RN add, register + immediate   ADIRN 7NEWSYM FxOp58A2    ; ADI RN add, register + immediate   ADIRN 8NEWSYM FxOp59A2    ; ADI RN add, register + immediate   ADIRN 9NEWSYM FxOp5AA2    ; ADI RN add, register + immediate   ADIRN 10NEWSYM FxOp5BA2    ; ADI RN add, register + immediate   ADIRN 11NEWSYM FxOp5CA2    ; ADI RN add, register + immediate   ADIRN 12NEWSYM FxOp5DA2    ; ADI RN add, register + immediate   ADIRN 13NEWSYM FxOp5EA2    ; ADI RN add, register + immediate   ADIRN 14NEWSYM FxOp5FA2    ; ADI RN add, register + immediate   ADIRN 15; Another very useful opcodeNEWSYM FxOp50A3    ; ADCIRN add with carry, register + immediate   ADCIRN 0NEWSYM FxOp51A3    ; ADCIRN add with carry, register + immediate   ADCIRN 1NEWSYM FxOp52A3    ; ADCIRN add with carry, register + immediate   ADCIRN 2NEWSYM FxOp53A3    ; ADCIRN add with carry, register + immediate   ADCIRN 3NEWSYM FxOp54A3    ; ADCIRN add with carry, register + immediate   ADCIRN 4NEWSYM FxOp55A3    ; ADCIRN add with carry, register + immediate   ADCIRN 5NEWSYM FxOp56A3    ; ADCIRN add with carry, register + immediate   ADCIRN 6NEWSYM FxOp57A3    ; ADCIRN add with carry, register + immediate   ADCIRN 7NEWSYM FxOp58A3    ; ADCIRN add with carry, register + immediate   ADCIRN 8NEWSYM FxOp59A3    ; ADCIRN add with carry, register + immediate   ADCIRN 9NEWSYM FxOp5AA3    ; ADCIRN add with carry, register + immediate   ADCIRN 10NEWSYM FxOp5BA3    ; ADCIRN add with carry, register + immediate   ADCIRN 11NEWSYM FxOp5CA3    ; ADCIRN add with carry, register + immediate   ADCIRN 12NEWSYM FxOp5DA3    ; ADCIRN add with carry, register + immediate   ADCIRN 13NEWSYM FxOp5EA3    ; ADCIRN add with carry, register + immediate   ADCIRN 14NEWSYM FxOp5FA3    ; ADCIRN add with carry, register + immediate   ADCIRN 15NEWSYM FxOp60      ; SUBRN  subtract, register - register   SUBRN 0NEWSYM FxOp61      ; SUBRN  subtract, register - register   SUBRN 1NEWSYM FxOp62      ; SUBRN  subtract, register - register   SUBRN 2NEWSYM FxOp63      ; SUBRN  subtract, register - register   SUBRN 3NEWSYM FxOp64      ; SUBRN  subtract, register - register   SUBRN 4NEWSYM FxOp65      ; SUBRN  subtract, register - register   SUBRN 5NEWSYM FxOp66      ; SUBRN  subtract, register - register   SUBRN 6NEWSYM FxOp67      ; SUBRN  subtract, register - register   SUBRN 7NEWSYM FxOp68      ; SUBRN  subtract, register - register   SUBRN 8NEWSYM FxOp69      ; SUBRN  subtract, register - register   SUBRN 9NEWSYM FxOp6A      ; SUBRN  subtract, register - register   SUBRN 10NEWSYM FxOp6B      ; SUBRN  subtract, register - register   SUBRN 11NEWSYM FxOp6C      ; SUBRN  subtract, register - register   SUBRN 12NEWSYM FxOp6D      ; SUBRN  subtract, register - register   SUBRN 13NEWSYM FxOp6E      ; SUBRN  subtract, register - register   SUBRN 14NEWSYM FxOp6F      ; SUBRN  subtract, register - register   FETCHPIPE   mov eax,[esi]    ; Read Source   mov ebx,ebp   sub ebx,[SfxCPB]   sub ax,bx   seto byte[SfxOverflow]   setc byte[SfxCarry]   xor byte[SfxCarry],1   inc ebp                   ; Increase program counter   mov [edi],eax                        ; Write Destination   mov [SfxSignZero],eax   CLRFLAGS   retNEWSYM FxOp60A1    ; SBCRN  subtract with carry, register - register   SBCRN 0NEWSYM FxOp61A1    ; SBCRN  subtract with carry, register - register   SBCRN 1NEWSYM FxOp62A1    ; SBCRN  subtract with carry, register - register   SBCRN 2NEWSYM FxOp63A1    ; SBCRN  subtract with carry, register - register   SBCRN 3NEWSYM FxOp64A1    ; SBCRN  subtract with carry, register - register   SBCRN 4NEWSYM FxOp65A1    ; SBCRN  subtract with carry, register - register   SBCRN 5NEWSYM FxOp66A1    ; SBCRN  subtract with carry, register - register   SBCRN 6NEWSYM FxOp67A1    ; SBCRN  subtract with carry, register - register   SBCRN 7NEWSYM FxOp68A1    ; SBCRN  subtract with carry, register - register   SBCRN 8NEWSYM FxOp69A1    ; SBCRN  subtract with carry, register - register   SBCRN 9NEWSYM FxOp6AA1    ; SBCRN  subtract with carry, register - register   SBCRN 10NEWSYM FxOp6BA1    ; SBCRN  subtract with carry, register - register   SBCRN 11NEWSYM FxOp6CA1    ; SBCRN  subtract with carry, register - register   SBCRN 12NEWSYM FxOp6DA1    ; SBCRN  subtract with carry, register - register   SBCRN 13NEWSYM FxOp6EA1    ; SBCRN  subtract with carry, register - register   SBCRN 14NEWSYM FxOp6FA1    ; SBCRN  subtract with carry, register - register   mov eax,[esi]    ; Read Source   mov ebx,ebp   FETCHPIPE   sub ebx,[SfxCPB]   cmp byte[SfxCarry],1   sbb ax,bx   seto byte[SfxOverflow]   setc byte[SfxCarry]   xor byte[SfxCarry],1   inc ebp                ; Increase program counter   mov [edi],eax      ; Write Destination   mov [SfxSignZero],eax   CLRFLAGS   retNEWSYM FxOp60A2    ; SUBIRN subtract, register - immediate   SUBIRN 0NEWSYM FxOp61A2    ; SUBIRN subtract, register - immediate   SUBIRN 1NEWSYM FxOp62A2    ; SUBIRN subtract, register - immediate   SUBIRN 2NEWSYM FxOp63A2    ; SUBIRN subtract, register - immediate   SUBIRN 3NEWSYM FxOp64A2    ; SUBIRN subtract, register - immediate   SUBIRN 4NEWSYM FxOp65A2    ; SUBIRN subtract, register - immediate   SUBIRN 5NEWSYM FxOp66A2    ; SUBIRN subtract, register - immediate   SUBIRN 6NEWSYM FxOp67A2    ; SUBIRN subtract, register - immediate   SUBIRN 7NEWSYM FxOp68A2    ; SUBIRN subtract, register - immediate   SUBIRN 8NEWSYM FxOp69A2    ; SUBIRN subtract, register - immediate   SUBIRN 9NEWSYM FxOp6AA2    ; SUBIRN subtract, register - immediate   SUBIRN 10NEWSYM FxOp6BA2    ; SUBIRN subtract, register - immediate   SUBIRN 11NEWSYM FxOp6CA2    ; SUBIRN subtract, register - immediate   SUBIRN 12NEWSYM FxOp6DA2    ; SUBIRN subtract, register - immediate   SUBIRN 13NEWSYM FxOp6EA2    ; SUBIRN subtract, register - immediate   SUBIRN 14NEWSYM FxOp6FA2    ; SUBIRN subtract, register - immediate   SUBIRN 15NEWSYM FxOp60A3    ; CMPRN  compare, register, register   CMPRN 0NEWSYM FxOp61A3    ; CMPRN  compare, register, register   CMPRN 1NEWSYM FxOp62A3    ; CMPRN  compare, register, register   CMPRN 2NEWSYM FxOp63A3    ; CMPRN  compare, register, register   CMPRN 3

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -