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

📄 fxemu2c.asm

📁 SFC游戏模拟器 snes9x 1.43 的原代码
💻 ASM
📖 第 1 页 / 共 5 页
字号:
   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   FXReturn.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   FXReturnNEWSYM FxOpd4EA1    ; 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   FXReturnNEWSYM FxOpd4F      ; 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   FXReturnNEWSYM FxOpd50      ; ADD RN add, register + register   ADDRNc 0NEWSYM FxOpd51      ; ADD RN add, register + register   ADDRNc 1NEWSYM FxOpd52      ; ADD RN add, register + register   ADDRNc 2NEWSYM FxOpd53      ; ADD RN add, register + register   ADDRNc 3NEWSYM FxOpd54      ; ADD RN add, register + register   ADDRNc 4NEWSYM FxOpd55      ; ADD RN add, register + register   ADDRNc 5NEWSYM FxOpd56      ; ADD RN add, register + register   ADDRNc 6NEWSYM FxOpd57      ; ADD RN add, register + register   ADDRNc 7NEWSYM FxOpd58      ; ADD RN add, register + register   ADDRNc 8NEWSYM FxOpd59      ; ADD RN add, register + register   ADDRNc 9NEWSYM FxOpd5A      ; ADD RN add, register + register   ADDRNc 10NEWSYM FxOpd5B      ; ADD RN add, register + register   ADDRNc 11NEWSYM FxOpd5C      ; ADD RN add, register + register   ADDRNc 12NEWSYM FxOpd5D      ; ADD RN add, register + register   ADDRNc 13NEWSYM FxOpd5E      ; ADD RN add, register + register   ADDRNc 14NEWSYM FxOpd5F      ; 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   FXReturnNEWSYM FxOpd50A1    ; ADC RN add with carry, register + register   ADCRNc 0NEWSYM FxOpd51A1    ; ADC RN add with carry, register + register   ADCRNc 1NEWSYM FxOpd52A1    ; ADC RN add with carry, register + register   ADCRNc 2NEWSYM FxOpd53A1    ; ADC RN add with carry, register + register   ADCRNc 3NEWSYM FxOpd54A1    ; ADC RN add with carry, register + register   ADCRNc 4NEWSYM FxOpd55A1    ; ADC RN add with carry, register + register   ADCRNc 5NEWSYM FxOpd56A1    ; ADC RN add with carry, register + register   ADCRNc 6NEWSYM FxOpd57A1    ; ADC RN add with carry, register + register   ADCRNc 7NEWSYM FxOpd58A1    ; ADC RN add with carry, register + register   ADCRNc 8NEWSYM FxOpd59A1    ; ADC RN add with carry, register + register   ADCRNc 9NEWSYM FxOpd5AA1    ; ADC RN add with carry, register + register   ADCRNc 10NEWSYM FxOpd5BA1    ; ADC RN add with carry, register + register   ADCRNc 11NEWSYM FxOpd5CA1    ; ADC RN add with carry, register + register   ADCRNc 12NEWSYM FxOpd5DA1    ; ADC RN add with carry, register + register   ADCRNc 13NEWSYM FxOpd5EA1    ; ADC RN add with carry, register + register   ADCRNc 14NEWSYM FxOpd5FA1    ; 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   FXReturn; Weird Opdode (FxOpd50A2, add 0, wow!)NEWSYM FxOpd50A2    ; ADI RN add, register + immediate   ADIRNc 0NEWSYM FxOpd51A2    ; ADI RN add, register + immediate   ADIRNc 1NEWSYM FxOpd52A2    ; ADI RN add, register + immediate   ADIRNc 2NEWSYM FxOpd53A2    ; ADI RN add, register + immediate   ADIRNc 3NEWSYM FxOpd54A2    ; ADI RN add, register + immediate   ADIRNc 4NEWSYM FxOpd55A2    ; ADI RN add, register + immediate   ADIRNc 5NEWSYM FxOpd56A2    ; ADI RN add, register + immediate   ADIRNc 6NEWSYM FxOpd57A2    ; ADI RN add, register + immediate   ADIRNc 7NEWSYM FxOpd58A2    ; ADI RN add, register + immediate   ADIRNc 8NEWSYM FxOpd59A2    ; ADI RN add, register + immediate   ADIRNc 9NEWSYM FxOpd5AA2    ; ADI RN add, register + immediate   ADIRNc 10NEWSYM FxOpd5BA2    ; ADI RN add, register + immediate   ADIRNc 11NEWSYM FxOpd5CA2    ; ADI RN add, register + immediate   ADIRNc 12NEWSYM FxOpd5DA2    ; ADI RN add, register + immediate   ADIRNc 13NEWSYM FxOpd5EA2    ; ADI RN add, register + immediate   ADIRNc 14NEWSYM FxOpd5FA2    ; ADI RN add, register + immediate   ADIRNc 15; Another very useful OpdodeNEWSYM FxOpd50A3    ; ADCIRN add with carry, register + immediate   ADCIRNc 0NEWSYM FxOpd51A3    ; ADCIRN add with carry, register + immediate   ADCIRNc 1NEWSYM FxOpd52A3    ; ADCIRN add with carry, register + immediate   ADCIRNc 2NEWSYM FxOpd53A3    ; ADCIRN add with carry, register + immediate   ADCIRNc 3NEWSYM FxOpd54A3    ; ADCIRN add with carry, register + immediate   ADCIRNc 4NEWSYM FxOpd55A3    ; ADCIRN add with carry, register + immediate   ADCIRNc 5NEWSYM FxOpd56A3    ; ADCIRN add with carry, register + immediate   ADCIRNc 6NEWSYM FxOpd57A3    ; ADCIRN add with carry, register + immediate   ADCIRNc 7NEWSYM FxOpd58A3    ; ADCIRN add with carry, register + immediate   ADCIRNc 8NEWSYM FxOpd59A3    ; ADCIRN add with carry, register + immediate   ADCIRNc 9NEWSYM FxOpd5AA3    ; ADCIRN add with carry, register + immediate   ADCIRNc 10NEWSYM FxOpd5BA3    ; ADCIRN add with carry, register + immediate   ADCIRNc 11NEWSYM FxOpd5CA3    ; ADCIRN add with carry, register + immediate   ADCIRNc 12NEWSYM FxOpd5DA3    ; ADCIRN add with carry, register + immediate   ADCIRNc 13NEWSYM FxOpd5EA3    ; ADCIRN add with carry, register + immediate   ADCIRNc 14NEWSYM FxOpd5FA3    ; ADCIRN add with carry, register + immediate   ADCIRNc 15NEWSYM FxOpd60      ; SUBRN  subtract, register - register   SUBRNc 0NEWSYM FxOpd61      ; SUBRN  subtract, register - register   SUBRNc 1NEWSYM FxOpd62      ; SUBRN  subtract, register - register   SUBRNc 2NEWSYM FxOpd63      ; SUBRN  subtract, register - register   SUBRNc 3NEWSYM FxOpd64      ; SUBRN  subtract, register - register   SUBRNc 4NEWSYM FxOpd65      ; SUBRN  subtract, register - register   SUBRNc 5NEWSYM FxOpd66      ; SUBRN  subtract, register - register   SUBRNc 6NEWSYM FxOpd67      ; SUBRN  subtract, register - register   SUBRNc 7NEWSYM FxOpd68      ; SUBRN  subtract, register - register   SUBRNc 8NEWSYM FxOpd69      ; SUBRN  subtract, register - register   SUBRNc 9NEWSYM FxOpd6A      ; SUBRN  subtract, register - register   SUBRNc 10NEWSYM FxOpd6B      ; SUBRN  subtract, register - register   SUBRNc 11NEWSYM FxOpd6C      ; SUBRN  subtract, register - register   SUBRNc 12NEWSYM FxOpd6D      ; SUBRN  subtract, register - register   SUBRNc 13NEWSYM FxOpd6E      ; SUBRN  subtract, register - register   SUBRNc 14NEWSYM FxOpd6F      ; 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   FXReturnNEWSYM FxOpd60A1    ; SBCRN  subtract with carry, register - register   SBCRNc 0NEWSYM FxOpd61A1    ; SBCRN  subtract with carry, register - register   SBCRNc 1NEWSYM FxOpd62A1    ; SBCRN  subtract with carry, register - register   SBCRNc 2NEWSYM FxOpd63A1    ; SBCRN  subtract with carry, register - register   SBCRNc 3NEWSYM FxOpd64A1    ; SBCRN  subtract with carry, register - register   SBCRNc 4NEWSYM FxOpd65A1    ; SBCRN  subtract with carry, register - register   SBCRNc 5NEWSYM FxOpd66A1    ; SBCRN  subtract with carry, register - register   SBCRNc 6NEWSYM FxOpd67A1    ; SBCRN  subtract with carry, register - register   SBCRNc 7NEWSYM FxOpd68A1    ; SBCRN  subtract with carry, register - register   SBCRNc 8NEWSYM FxOpd69A1    ; SBCRN  subtract with carry, register - register   SBCRNc 9NEWSYM FxOpd6AA1    ; SBCRN  subtract with carry, register - register   SBCRNc 10NEWSYM FxOpd6BA1    ; SBCRN  subtract with carry, register - register   SBCRNc 11NEWSYM FxOpd6CA1    ; SBCRN  subtract with carry, register - register   SBCRNc 12NEWSYM FxOpd6DA1    ; SBCRN  subtract with carry, register - register   SBCRNc 13NEWSYM FxOpd6EA1    ; SBCRN  subtract with carry, register - register   SBCRNc 14NEWSYM FxOpd6FA1    ; 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   FXReturnNEWSYM FxOpd60A2    ; SUBIRN subtract, register - immediate   SUBIRNc 0NEWSYM FxOpd61A2    ; SUBIRN subtract, register - immediate   SUBIRNc 1NEWSYM FxOpd62A2    ; SUBIRN subtract, register - immediate   SUBIRNc 2NEWSYM FxOpd63A2    ; SUBIRN subtract, register - immediate   SUBIRNc 3NEWSYM FxOpd64A2    ; SUBIRN subtract, register - immediate   SUBIRNc 4NEWSYM FxOpd65A2    ; SUBIRN subtract, register - immediate   SUBIRNc 5NEWSYM FxOpd66A2    ; SUBIRN subtract, register - immediate   SUBIRNc 6NEWSYM FxOpd67A2    ; SUBIRN subtract, register - immediate   SUBIRNc 7NEWSYM FxOpd68A2    ; SUBIRN subtract, register - immediate   SUBIRNc 8NEWSYM FxOpd69A2    ; SUBIRN subtract, register - immediate   SUBIRNc 9NEWSYM FxOpd6AA2    ; SUBIRN subtract, register - immediate   SUBIRNc 10NEWSYM FxOpd6BA2    ; SUBIRN subtract, register - immediate   SUBIRNc 11NEWSYM FxOpd6CA2    ; SUBIRN subtract, register - immediate   SUBIRNc 12NEWSYM FxOpd6DA2    ; SUBIRN subtract, register - immediate   SUBIRNc 13NEWSYM FxOpd6EA2    ; SUBIRN subtract, register - immediate   SUBIRNc 14NEWSYM FxOpd6FA2    ; SUBIRN subtract, register - immediate   SUBIRNc 15NEWSYM FxOpd60A3    ; CMPRN  compare, register, register   CMPRNc 0NEWSYM FxOpd61A3    ; CMPRN  compare, register, register   CMPRNc 1NEWSYM FxOpd62A3    ; CMPRN  compare, register, register   CMPRNc 2NEWSYM FxOpd63A3    ; CMPRN  compare, register, register   CMPRNc 3NEWSYM FxOpd64A3    ; CMPRN  compare, register, register   CMPRNc 4NEWSYM FxOpd65A3    ; CMPRN  compare, register, register   CMPRNc 5NEWSYM FxOpd66A3    ; CMPRN  compare, register, register   CMPRNc 6NEWSYM FxOpd67A3    ; CMPRN  compare, register, register   CMPRNc 7NEWSYM FxOpd68A3    ; CMPRN  compare, register, register   CMPRNc 8NEWSYM FxOpd69A3    ; CMPRN  compare, register, register   CMPRNc 9NEWSYM FxOpd6AA3    ; CMPRN  compare, register, register   CMPRNc 10NEWSYM FxOpd6BA3    ; CMPRN  compare, register, register   CMPRNc 11NEWSYM FxOpd6CA3    ; CMPRN  compare, register, register   CMPRNc 12NEWSYM FxOpd6DA3    ; CMPRN  compare, register, register   CMPRNc 13NEWSYM FxOpd6EA3    ; CMPRN  compare, register, register   CMPRNc 14NEWSYM FxOpd6FA3    ; CMPRN  compare, 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   mov [SfxSignZero],eax   CLRFLAGS   inc ebp                ; Increase program counter   FXReturnNEWSYM FxOpd70      ; MERGE  R7 as upper byte, R8 as lower byte (used for texture-mapping) */            ; V   xor eax,eax   FETCHPIPE   mov ah,byte [SfxR7+1]   mov al,byte [SfxR8+1]   inc ebp   mov [edi],eax            ; Write Destination   mov dword[SfxSignZero],0001h   test eax,0F0F0h   jz .nozero   mov dword[SfxSignZero],0000h.nozero   test eax,08080h   jz .nosign   or dword [SfxSignZero],80000h.nosign   mov dword [SfxOverflow],1   test ax,0c0c0h   jnz .Overflow   mov dword [SfxOverflow],0.Overflow   mov dword [SfxCarry],1   test ax,0e0e0h   jnz .Carry   mov dword [SfxCarry],0.Carry   CLRFLAGS   FXReturnNEWSYM FxOpd71      ; AND RN register & register   ANDRNc 1NEWSYM FxOpd72      ; AND RN register & register   ANDRNc 2NEWSYM FxOpd73      ; AND RN register & register   ANDRNc 3NEWSYM FxOpd74      ; AND RN register & register   ANDRNc 4NEWSYM FxOpd75      ; AND RN register & register   ANDRNc 5NEWSYM FxOpd76      ; AND RN register & register   ANDRNc 6NEWSYM FxOpd77      ; AND RN register & register   ANDRNc 7NEWSYM FxOpd78      ; AND RN register & register   ANDRNc 8NEWSYM FxOpd79      ; AND RN register & register   ANDRNc 9NEWSYM FxOpd7A      ; AND RN register & register

⌨️ 快捷键说明

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