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

📄 fxinst.cpp

📁 SFC游戏模拟器 snes9x 1.43 的原代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
GSU.bCacheActive = FALSE; fx_cache(); R15--;static void fx_ljmp_r8() { FX_LJMP(8); }static void fx_ljmp_r9() { FX_LJMP(9); }static void fx_ljmp_r10() { FX_LJMP(10); }static void fx_ljmp_r11() { FX_LJMP(11); }static void fx_ljmp_r12() { FX_LJMP(12); }static void fx_ljmp_r13() { FX_LJMP(13); }/* 9e - lob - set upper byte to zero (keep low byte) */static void fx_lob(){    uint32 v = USEX8(SREG);    R15++; DREG = v;    GSU.vSign = v<<8;    GSU.vZero = v<<8;    TESTR14;    CLRFLAGS;}/* 9f - fmult - 16 bit to 32 bit signed multiplication, upper 16 bits only */static void fx_fmult(){    uint32 v;    uint32 c = (uint32) (SEX16(SREG) * SEX16(R6));    v = c >> 16;    R15++; DREG = v;    GSU.vSign = v;    GSU.vZero = v;    GSU.vCarry = (c >> 15) & 1;    TESTR14;    CLRFLAGS;}/* 9f(ALT1) - lmult - 16 bit to 32 bit signed multiplication */static void fx_lmult(){    uint32 v;    uint32 c = (uint32) (SEX16(SREG) * SEX16(R6));    R4 = c;    v = c >> 16;    R15++; DREG = v;    GSU.vSign = v;    GSU.vZero = v;    /* XXX R6 or R4? */    GSU.vCarry = (R4 >> 15) & 1;	/* should it be bit 15 of R4 instead? */    TESTR14;    CLRFLAGS;}/* a0-af - ibt rn,#pp - immediate byte transfer */#define FX_IBT(reg) \uint8 v = PIPE; R15++; \FETCHPIPE; R15++; \GSU.avReg[reg] = SEX8(v); \CLRFLAGS;static void fx_ibt_r0() { FX_IBT(0); }static void fx_ibt_r1() { FX_IBT(1); }static void fx_ibt_r2() { FX_IBT(2); }static void fx_ibt_r3() { FX_IBT(3); }static void fx_ibt_r4() { FX_IBT(4); }static void fx_ibt_r5() { FX_IBT(5); }static void fx_ibt_r6() { FX_IBT(6); }static void fx_ibt_r7() { FX_IBT(7); }static void fx_ibt_r8() { FX_IBT(8); }static void fx_ibt_r9() { FX_IBT(9); }static void fx_ibt_r10() { FX_IBT(10); }static void fx_ibt_r11() { FX_IBT(11); }static void fx_ibt_r12() { FX_IBT(12); }static void fx_ibt_r13() { FX_IBT(13); }static void fx_ibt_r14() { FX_IBT(14); READR14; }static void fx_ibt_r15() { FX_IBT(15); }/* a0-af(ALT1) - lms rn,(yy) - load word from RAM (short address) */#define FX_LMS(reg) \GSU.vLastRamAdr = ((uint32)PIPE) << 1; \R15++; FETCHPIPE; R15++; \GSU.avReg[reg] = (uint32)RAM(GSU.vLastRamAdr); \GSU.avReg[reg] |= ((uint32)RAM(GSU.vLastRamAdr+1))<<8; \CLRFLAGS;static void fx_lms_r0() { FX_LMS(0); }static void fx_lms_r1() { FX_LMS(1); }static void fx_lms_r2() { FX_LMS(2); }static void fx_lms_r3() { FX_LMS(3); }static void fx_lms_r4() { FX_LMS(4); }static void fx_lms_r5() { FX_LMS(5); }static void fx_lms_r6() { FX_LMS(6); }static void fx_lms_r7() { FX_LMS(7); }static void fx_lms_r8() { FX_LMS(8); }static void fx_lms_r9() { FX_LMS(9); }static void fx_lms_r10() { FX_LMS(10); }static void fx_lms_r11() { FX_LMS(11); }static void fx_lms_r12() { FX_LMS(12); }static void fx_lms_r13() { FX_LMS(13); }static void fx_lms_r14() { FX_LMS(14); READR14; }static void fx_lms_r15() { FX_LMS(15); }/* a0-af(ALT2) - sms (yy),rn - store word in RAM (short address) *//* If rn == r15, is the value of r15 before or after the extra byte is read? */#define FX_SMS(reg) \uint32 v = GSU.avReg[reg]; \GSU.vLastRamAdr = ((uint32)PIPE) << 1; \R15++; FETCHPIPE; \RAM(GSU.vLastRamAdr) = (uint8)v; \RAM(GSU.vLastRamAdr+1) = (uint8)(v>>8); \CLRFLAGS; R15++;static void fx_sms_r0() { FX_SMS(0); }static void fx_sms_r1() { FX_SMS(1); }static void fx_sms_r2() { FX_SMS(2); }static void fx_sms_r3() { FX_SMS(3); }static void fx_sms_r4() { FX_SMS(4); }static void fx_sms_r5() { FX_SMS(5); }static void fx_sms_r6() { FX_SMS(6); }static void fx_sms_r7() { FX_SMS(7); }static void fx_sms_r8() { FX_SMS(8); }static void fx_sms_r9() { FX_SMS(9); }static void fx_sms_r10() { FX_SMS(10); }static void fx_sms_r11() { FX_SMS(11); }static void fx_sms_r12() { FX_SMS(12); }static void fx_sms_r13() { FX_SMS(13); }static void fx_sms_r14() { FX_SMS(14); }static void fx_sms_r15() { FX_SMS(15); }/* b0-bf - from rn - set source register *//* b0-bf(B) - moves rn - move register to register, and set flags, (if B flag is set) */#define FX_FROM(reg) \if(TF(B)) { uint32 v = GSU.avReg[reg]; R15++; DREG = v; \GSU.vOverflow = (v&0x80) << 16; GSU.vSign = v; GSU.vZero = v; TESTR14; CLRFLAGS; } \else { GSU.pvSreg = &GSU.avReg[reg]; R15++; }static void fx_from_r0() { FX_FROM(0); }static void fx_from_r1() { FX_FROM(1); }static void fx_from_r2() { FX_FROM(2); }static void fx_from_r3() { FX_FROM(3); }static void fx_from_r4() { FX_FROM(4); }static void fx_from_r5() { FX_FROM(5); }static void fx_from_r6() { FX_FROM(6); }static void fx_from_r7() { FX_FROM(7); }static void fx_from_r8() { FX_FROM(8); }static void fx_from_r9() { FX_FROM(9); }static void fx_from_r10() { FX_FROM(10); }static void fx_from_r11() { FX_FROM(11); }static void fx_from_r12() { FX_FROM(12); }static void fx_from_r13() { FX_FROM(13); }static void fx_from_r14() { FX_FROM(14); }static void fx_from_r15() { FX_FROM(15); }/* c0 - hib - move high-byte to low-byte */static void fx_hib(){    uint32 v = USEX8(SREG>>8);    R15++; DREG = v;    GSU.vSign = v<<8;    GSU.vZero = v<<8;    TESTR14;    CLRFLAGS;}/* c1-cf - or rn */#define FX_OR(reg) \uint32 v = SREG | GSU.avReg[reg]; R15++; DREG = v; \GSU.vSign = v; \GSU.vZero = v; \TESTR14; \CLRFLAGS;static void fx_or_r1() { FX_OR(1); }static void fx_or_r2() { FX_OR(2); }static void fx_or_r3() { FX_OR(3); }static void fx_or_r4() { FX_OR(4); }static void fx_or_r5() { FX_OR(5); }static void fx_or_r6() { FX_OR(6); }static void fx_or_r7() { FX_OR(7); }static void fx_or_r8() { FX_OR(8); }static void fx_or_r9() { FX_OR(9); }static void fx_or_r10() { FX_OR(10); }static void fx_or_r11() { FX_OR(11); }static void fx_or_r12() { FX_OR(12); }static void fx_or_r13() { FX_OR(13); }static void fx_or_r14() { FX_OR(14); }static void fx_or_r15() { FX_OR(15); }/* c1-cf(ALT1) - xor rn */#define FX_XOR(reg) \uint32 v = SREG ^ GSU.avReg[reg]; R15++; DREG = v; \GSU.vSign = v; \GSU.vZero = v; \TESTR14; \CLRFLAGS;static void fx_xor_r1() { FX_XOR(1); }static void fx_xor_r2() { FX_XOR(2); }static void fx_xor_r3() { FX_XOR(3); }static void fx_xor_r4() { FX_XOR(4); }static void fx_xor_r5() { FX_XOR(5); }static void fx_xor_r6() { FX_XOR(6); }static void fx_xor_r7() { FX_XOR(7); }static void fx_xor_r8() { FX_XOR(8); }static void fx_xor_r9() { FX_XOR(9); }static void fx_xor_r10() { FX_XOR(10); }static void fx_xor_r11() { FX_XOR(11); }static void fx_xor_r12() { FX_XOR(12); }static void fx_xor_r13() { FX_XOR(13); }static void fx_xor_r14() { FX_XOR(14); }static void fx_xor_r15() { FX_XOR(15); }/* c1-cf(ALT2) - or #n */#define FX_OR_I(imm) \uint32 v = SREG | imm; R15++; DREG = v; \GSU.vSign = v; \GSU.vZero = v; \TESTR14; \CLRFLAGS;static void fx_or_i1() { FX_OR_I(1); }static void fx_or_i2() { FX_OR_I(2); }static void fx_or_i3() { FX_OR_I(3); }static void fx_or_i4() { FX_OR_I(4); }static void fx_or_i5() { FX_OR_I(5); }static void fx_or_i6() { FX_OR_I(6); }static void fx_or_i7() { FX_OR_I(7); }static void fx_or_i8() { FX_OR_I(8); }static void fx_or_i9() { FX_OR_I(9); }static void fx_or_i10() { FX_OR_I(10); }static void fx_or_i11() { FX_OR_I(11); }static void fx_or_i12() { FX_OR_I(12); }static void fx_or_i13() { FX_OR_I(13); }static void fx_or_i14() { FX_OR_I(14); }static void fx_or_i15() { FX_OR_I(15); }/* c1-cf(ALT3) - xor #n */#define FX_XOR_I(imm) \uint32 v = SREG ^ imm; R15++; DREG = v; \GSU.vSign = v; \GSU.vZero = v; \TESTR14; \CLRFLAGS;static void fx_xor_i1() { FX_XOR_I(1); }static void fx_xor_i2() { FX_XOR_I(2); }static void fx_xor_i3() { FX_XOR_I(3); }static void fx_xor_i4() { FX_XOR_I(4); }static void fx_xor_i5() { FX_XOR_I(5); }static void fx_xor_i6() { FX_XOR_I(6); }static void fx_xor_i7() { FX_XOR_I(7); }static void fx_xor_i8() { FX_XOR_I(8); }static void fx_xor_i9() { FX_XOR_I(9); }static void fx_xor_i10() { FX_XOR_I(10); }static void fx_xor_i11() { FX_XOR_I(11); }static void fx_xor_i12() { FX_XOR_I(12); }static void fx_xor_i13() { FX_XOR_I(13); }static void fx_xor_i14() { FX_XOR_I(14); }static void fx_xor_i15() { FX_XOR_I(15); }/* d0-de - inc rn - increase by one */#define FX_INC(reg) \GSU.avReg[reg] += 1; \GSU.vSign = GSU.avReg[reg]; \GSU.vZero = GSU.avReg[reg]; \CLRFLAGS; R15++;static void fx_inc_r0() { FX_INC(0); }static void fx_inc_r1() { FX_INC(1); }static void fx_inc_r2() { FX_INC(2); }static void fx_inc_r3() { FX_INC(3); }static void fx_inc_r4() { FX_INC(4); }static void fx_inc_r5() { FX_INC(5); }static void fx_inc_r6() { FX_INC(6); }static void fx_inc_r7() { FX_INC(7); }static void fx_inc_r8() { FX_INC(8); }static void fx_inc_r9() { FX_INC(9); }static void fx_inc_r10() { FX_INC(10); }static void fx_inc_r11() { FX_INC(11); }static void fx_inc_r12() { FX_INC(12); }static void fx_inc_r13() { FX_INC(13); }static void fx_inc_r14() { FX_INC(14); READR14; }/* df - getc - transfer ROM buffer to color register */static void fx_getc(){#ifndef FX_DO_ROMBUFFER    uint8 c;    c = ROM(R14);#else    uint8 c = GSU.vRomBuffer;#endif    if(GSU.vPlotOptionReg & 0x04)	c = (c&0xf0) | (c>>4);    if(GSU.vPlotOptionReg & 0x08)    {	GSU.vColorReg &= 0xf0;	GSU.vColorReg |= c & 0x0f;    }    else	GSU.vColorReg = USEX8(c);    CLRFLAGS;    R15++;}/* df(ALT2) - ramb - set current RAM bank */static void fx_ramb(){    GSU.vRamBankReg = SREG & (FX_RAM_BANKS-1);    GSU.pvRamBank = GSU.apvRamBank[GSU.vRamBankReg & 0x3];    CLRFLAGS;    R15++;}/* df(ALT3) - romb - set current ROM bank */static void fx_romb(){    GSU.vRomBankReg = USEX8(SREG) & 0x7f;    GSU.pvRomBank = GSU.apvRomBank[GSU.vRomBankReg];    CLRFLAGS;    R15++;}/* e0-ee - dec rn - decrement by one */#define FX_DEC(reg) \GSU.avReg[reg] -= 1; \GSU.vSign = GSU.avReg[reg]; \GSU.vZero = GSU.avReg[reg]; \CLRFLAGS; R15++;static void fx_dec_r0() { FX_DEC(0); }static void fx_dec_r1() { FX_DEC(1); }static void fx_dec_r2() { FX_DEC(2); }static void fx_dec_r3() { FX_DEC(3); }static void fx_dec_r4() { FX_DEC(4); }static void fx_dec_r5() { FX_DEC(5); }static void fx_dec_r6() { FX_DEC(6); }static void fx_dec_r7() { FX_DEC(7); }static void fx_dec_r8() { FX_DEC(8); }static void fx_dec_r9() { FX_DEC(9); }static void fx_dec_r10() { FX_DEC(10); }static void fx_dec_r11() { FX_DEC(11); }static void fx_dec_r12() { FX_DEC(12); }static void fx_dec_r13() { FX_DEC(13); }static void fx_dec_r14() { FX_DEC(14); READR14; }/* ef - getb - get byte from ROM at address R14 */static void fx_getb(){    uint32 v;#ifndef FX_DO_ROMBUFFER    v = (uint32)ROM(R14);#else    v = (uint32)GSU.vRomBuffer;#endif    R15++; DREG = v;    TESTR14;    CLRFLAGS;}/* ef(ALT1) - getbh - get high-byte from ROM at address R14 */static void fx_getbh(){    uint32 v;#ifndef FX_DO_ROMBUFFER    uint32 c;    c = (uint32)ROM(R14);#else    uint32 c = USEX8(GSU.vRomBuffer);#endif    v = USEX8(SREG) | (c<<8);    R15++; DREG = v;    TESTR14;    CLRFLAGS;}/* ef(ALT2) - getbl - get low-byte from ROM at address R14 */static void fx_getbl(){    uint32 v;#ifndef FX_DO_ROMBUFFER    uint32 c;    c = (uint32)ROM(R14);#else    uint32 c = USEX8(GSU.vRomBuffer);#endif    v = (SREG & 0xff00) | c;    R15++; DREG = v;    TESTR14;    CLRFLAGS;}/* ef(ALT3) - getbs - get sign extended byte from ROM at address R14 */static void fx_getbs(){    uint32 v;

⌨️ 快捷键说明

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